Skip to content
  • Sylvain Lemieux's avatar
    gpio: lpc32xx: fix issues with port3 gpio · 89983478
    Sylvain Lemieux authored
    
    
    The current simplify lpc32xx gpio driver implementation assume a
    maximum of 32 GPIO per port; there are a total of 22 GPI, 24 GPO
    and 6 GPIO to managed on port 3.
    
    Update the driver to fix the following:
    1) When requesting GPI_xx and GPO_xx on port 3 (xx is the same number)
       the second call to "gpio_request" will return -EBUSY.
    
    2) The status of GPO_xx pin report the status of the
       corresponding GPI_xx pin when using the "gpio status" command.
    
    3) The gpio driver may setup the direction register for the wrong
       gpio when calling "gpio_direction_input" (GPI_xx) or
       "gpio_direction_output" (GPO_xx) on port 3; the call to the
       direction is require to use the "gpio status" command.
    
    The following change were done in the driver:
    1) port3 GPI are cache in a separate 32 bits in the array.
    2) port3 direction register written only for GPIO pins.
    3) port3 GPO & GPIO (as output) are read using "p3_outp_state".
    4) LPC32XX_GPI_P3_GRP updated to match the change.
    
    Signed-off-by: default avatarSylvain Lemieux <slemieux@tycoint.com>
    89983478