Message ID | 14a09900bf4642495ebe4072b9eb02769dbc4c5e.1521301345.git.vilhelm.gray@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Sat, 17 Mar 2018 11:49:56 -0400 William Breathitt Gray <vilhelm.gray@gmail.com> wrote: > The Apex Embedded Systems STX104 series of devices provides 4 TTL > compatible lines of inputs accessed via a single 4-bit port. Since four > input lines are acquired on a single port input read, the STX104 GPIO > driver may improve multiple input reads by utilizing a get_multiple > callback. This patch implements the stx104_gpio_get_multiple function > which serves as the respective get_multiple callback. > > Cc: Jonathan Cameron <jic23@kernel.org> > Cc: Hartmut Knaack <knaack.h@gmx.de> > Cc: Lars-Peter Clausen <lars@metafoo.de> > Cc: Peter Meerwald-Stadler <pmeerw@pmeerw.net> > Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com> This one is simple so applied to the togreg branch of iio.git and pushed out as testing for the autobuilders to play with it. Thanks, Jonathan > --- > drivers/iio/adc/stx104.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/drivers/iio/adc/stx104.c b/drivers/iio/adc/stx104.c > index 17b021f33180..0662ca199eb0 100644 > --- a/drivers/iio/adc/stx104.c > +++ b/drivers/iio/adc/stx104.c > @@ -233,6 +233,16 @@ static int stx104_gpio_get(struct gpio_chip *chip, unsigned int offset) > return !!(inb(stx104gpio->base) & BIT(offset)); > } > > +static int stx104_gpio_get_multiple(struct gpio_chip *chip, unsigned long *mask, > + unsigned long *bits) > +{ > + struct stx104_gpio *const stx104gpio = gpiochip_get_data(chip); > + > + *bits = inb(stx104gpio->base); > + > + return 0; > +} > + > static void stx104_gpio_set(struct gpio_chip *chip, unsigned int offset, > int value) > { > @@ -342,6 +352,7 @@ static int stx104_probe(struct device *dev, unsigned int id) > stx104gpio->chip.direction_input = stx104_gpio_direction_input; > stx104gpio->chip.direction_output = stx104_gpio_direction_output; > stx104gpio->chip.get = stx104_gpio_get; > + stx104gpio->chip.get_multiple = stx104_gpio_get_multiple; > stx104gpio->chip.set = stx104_gpio_set; > stx104gpio->chip.set_multiple = stx104_gpio_set_multiple; > stx104gpio->base = base[id] + 3; -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Sat, Mar 17, 2018 at 5:49 PM, William Breathitt Gray <vilhelm.gray@gmail.com> wrote: > The Apex Embedded Systems STX104 series of devices provides 4 TTL > compatible lines of inputs accessed via a single 4-bit port. Since four > input lines are acquired on a single port input read, the STX104 GPIO > driver may improve multiple input reads by utilizing a get_multiple > callback. This patch implements the stx104_gpio_get_multiple function > which serves as the respective get_multiple callback. > +static int stx104_gpio_get_multiple(struct gpio_chip *chip, unsigned long *mask, > + unsigned long *bits) > +{ > + struct stx104_gpio *const stx104gpio = gpiochip_get_data(chip); > + > + *bits = inb(stx104gpio->base); I think on LE and BE if will give you different results. > + > + return 0; > +}
On Sat, Mar 17, 2018 at 08:51:07PM +0200, Andy Shevchenko wrote: >On Sat, Mar 17, 2018 at 5:49 PM, William Breathitt Gray ><vilhelm.gray@gmail.com> wrote: >> The Apex Embedded Systems STX104 series of devices provides 4 TTL >> compatible lines of inputs accessed via a single 4-bit port. Since four >> input lines are acquired on a single port input read, the STX104 GPIO >> driver may improve multiple input reads by utilizing a get_multiple >> callback. This patch implements the stx104_gpio_get_multiple function >> which serves as the respective get_multiple callback. > >> +static int stx104_gpio_get_multiple(struct gpio_chip *chip, unsigned long *mask, >> + unsigned long *bits) >> +{ >> + struct stx104_gpio *const stx104gpio = gpiochip_get_data(chip); >> + > >> + *bits = inb(stx104gpio->base); > >I think on LE and BE if will give you different results. That may be true for a memcpy operation, but in this case I'm relying on the standard C evaluation rules. I expect we should be fine with the returned byte assigned to an unsigned long, since it'll be evaluated by its value rather than memory representation. William Breathitt Gray > >> + >> + return 0; >> +} > > > >-- >With Best Regards, >Andy Shevchenko -- To unsubscribe from this list: send the line "unsubscribe linux-iio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/iio/adc/stx104.c b/drivers/iio/adc/stx104.c index 17b021f33180..0662ca199eb0 100644 --- a/drivers/iio/adc/stx104.c +++ b/drivers/iio/adc/stx104.c @@ -233,6 +233,16 @@ static int stx104_gpio_get(struct gpio_chip *chip, unsigned int offset) return !!(inb(stx104gpio->base) & BIT(offset)); } +static int stx104_gpio_get_multiple(struct gpio_chip *chip, unsigned long *mask, + unsigned long *bits) +{ + struct stx104_gpio *const stx104gpio = gpiochip_get_data(chip); + + *bits = inb(stx104gpio->base); + + return 0; +} + static void stx104_gpio_set(struct gpio_chip *chip, unsigned int offset, int value) { @@ -342,6 +352,7 @@ static int stx104_probe(struct device *dev, unsigned int id) stx104gpio->chip.direction_input = stx104_gpio_direction_input; stx104gpio->chip.direction_output = stx104_gpio_direction_output; stx104gpio->chip.get = stx104_gpio_get; + stx104gpio->chip.get_multiple = stx104_gpio_get_multiple; stx104gpio->chip.set = stx104_gpio_set; stx104gpio->chip.set_multiple = stx104_gpio_set_multiple; stx104gpio->base = base[id] + 3;
The Apex Embedded Systems STX104 series of devices provides 4 TTL compatible lines of inputs accessed via a single 4-bit port. Since four input lines are acquired on a single port input read, the STX104 GPIO driver may improve multiple input reads by utilizing a get_multiple callback. This patch implements the stx104_gpio_get_multiple function which serves as the respective get_multiple callback. Cc: Jonathan Cameron <jic23@kernel.org> Cc: Hartmut Knaack <knaack.h@gmx.de> Cc: Lars-Peter Clausen <lars@metafoo.de> Cc: Peter Meerwald-Stadler <pmeerw@pmeerw.net> Signed-off-by: William Breathitt Gray <vilhelm.gray@gmail.com> --- drivers/iio/adc/stx104.c | 11 +++++++++++ 1 file changed, 11 insertions(+)