Messages in this thread | | | From | H Hartley Sweeten <> | Date | Tue, 1 Feb 2011 10:27:23 -0600 | Subject | RE: [leds-pca9532] Add gpio capability |
| |
On Tuesday, February 01, 2011 1:02 AM, Wolfram Sang wrote: >> From the datasheet: >>[...] >> So, you should provide both a direction_input and direction_output. > > He did in V2 of this patch (what made me also download the datasheet ;)).
Ok. Just looked at the v2 patch.
> +static int pca9532_gpio_direction_input(struct gpio_chip *gc, unsigned offset) > +{ > + struct pca9532_data *data = container_of(gc, struct pca9532_data, gpio); > + struct pca9532_led *led = &data->leds[offset]; > + > + /* To use as input ensure pin is not driven */ > + led->state = PCA9532_OFF; > + pca9532_setled(led); > + > + return 0; > +} > +
This looks good. When configured as an input the pin needs to be set high-impedance, 00 which is PCA9532_OFF).
> +static int pca9532_gpio_direction_output(struct gpio_chip *gc, > unsigned offset, int val) > +{ > + return 0; > +} > +
Not good. When the pin is configured as an output, the direction_output method also requests that the pin be set to a desired level. For this driver that means that the pca9532_gpio_direction_output function just needs to call pca9532_gpio_set_value.
Regards, Hartley
| |