Re: [PATCH] gpio: sn54hc595: new driver for GPIO shift registers chipsets

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 8 December 2014 at 16:41, Arnd Bergmann <arnd@xxxxxxxx> wrote:
> On Monday 08 December 2014 16:23:01 Rafał Miłecki wrote:
>> On 8 December 2014 at 16:03, Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> wrote:
>> > Hi Rafał,
>> >
>> > On Mon, Dec 8, 2014 at 3:47 PM, Rafał Miłecki <zajec5@xxxxxxxxx> wrote:
>> >> On 8 December 2014 at 15:41, Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> wrote:
>> >>> On Mon, Dec 8, 2014 at 3:27 PM, Rafał Miłecki <zajec5@xxxxxxxxx> wrote:
>> >>>> SN54HC595 and SN74HC595 are devices based on shift registers controlled
>> >>>> with 5 input signals (serial-in) and providing 8 outputs (parallel-out).
>> >>>>
>> >>>> They are present on some Broadcom home router boards where manufacturer
>> >>>> needed few extra GPIOs.
>> >>>>
>> >>>> This driver simply uses specified GPIOs to control shift registers and
>> >>>> registers another GPIO chip. So you can call it a GPIO extender.
>> >>>>
>> >>>> Due to the hardware design only output direction is supported. Reading
>> >>>> values is handled using tiny internal cache.
>> >>>>
>> >>>> Signed-off-by: Rafał Miłecki <zajec5@xxxxxxxxx>
>> >>>> ---
>> >>>>  .../devicetree/bindings/gpio/gpio-sn54hc595.txt    |  35 ++++
>> >>>>  drivers/gpio/Kconfig                               |  11 ++
>> >>>>  drivers/gpio/Makefile                              |   1 +
>> >>>>  drivers/gpio/gpio-sn54hc595.c                      | 219 +++++++++++++++++++++
>> >>>
>> >>> The '595 is already handled by drivers/gpio/gpio-74x164.c.
>> >>
>> >> gpio-74x164.c seems to be tight closely to the SPI. In my case it's
>> >> GPIO-controller '595.
>> >
>> > Right. gpio-74x164.c uses the SPI framework, so it will work with any SPI
>> > master controller, while your driver contains a very simple variant (without any
>> > timing constraints) of spi-gpio.c, and is limited to connecting to GPIO pins.
>> >
>> >> Do you have any other idea how we could handle this?
>> >
>> > Your driver does provide OE support, which gpio-74x164 doesn't support.
>> > Perhaps that can be added to gpio-74x164 instead?
>>
>> It's not the missing OE support in gpio-74x164 that worries me, but
>> the whole rest.
>>
>> I would need to modify gpio-74x164 to:
>> 1) Use another OF table with different entry
>> 2) Use different probe function that doesn't take spi_device parameter
>> and doesn't do spi setup
>> 3) Extend struct gen_74x164_chip to include GPIOs
>> 4) Use totally different __gen_74x164_write_config
>
> I think the suggestion was to use the spi-gpio driver in combination
> with gpio-74x164.

Oh, OK, I've obviously missed that.

I don't know... I'm somehow not really convinced to that, because
AFAIK there isn't any SPI master device between GPIOs and 'HC595. I
don't know if pretending there is some extra hardware (just to use
another Linux driver/layer) is a good idea. This would:
1) Not match hardware design
2) Involve some extra code.

I'm not even sure if this would work out-of-the box (without some
extra changes) at all. From early look at spi-gpio.c I can't see it
implementing everything I need for GPIO-connected 'HC595.
I think that implementing support for this extra SPI layer will
actually require more code/tricks than a separated driver.

-- 
Rafał
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]
  Powered by Linux