Hi Johan,

On 4 September 2018 at 14:47, Johan Hovold <jo...@kernel.org> wrote:
> On Sat, Aug 04, 2018 at 12:17:15PM +0200, Loic Poulain wrote:
>> Some FTDI devices like FTX or FT232R support CBUS Bit Bang mode on CBUS
>> pins, allowing host to control them via simple USB control transfers.
>> To make use of a CBUS pin in Bit Bang mode, the pin must be configured
>> to I/O mode in the FTDI EEPROM. This mode perfectly coexists with regular
>> USB to Serial function.
>>
>> In this implementation, a GPIO controller is registered on FTDI probe
>> if at least one CBUS pin is configured for I/O mode. For now, only
>> FTX devices are supported.
>>
>> This patch is based on previous Stefan Agner implementation tentative
>> on LKML [1].
>>
>> [1] Message-Id: 1434838377-8042-1-git-send-email-ste...@agner.ch
>>
>> Signed-off-by: Loic Poulain <loic.poul...@linaro.org>
>> ---
>> v2: Use message-id for LKML reference
>>     Rework read_eeprom according to Andy's comment and return read count
>>     Remove noisy messages
>>     Comment style alignment
>>     Add defines for magic values
>>     Cannot use devm, because gpiochip is linked to the port not to the udev
>> v3:
>>    Fix typo in CBUS mask description comment
>
> First, thanks for looking into this; seems like we're finally about to
> get support for the CBUS gpios.
>
> But now I get not one, but two, competing implementations for this
> posted in one month:
>
>         https://lkml.kernel.org/r/20180825204744.2307-1-pa...@pados.hu
>
> And it looks like you both have been considering at least some of the
> earlier attempts, which is great.
>
> I've reviewed both patches and it seems to me that Karoly's version is
> closer to what I'd like to see as the end-result. Specifically this
> means having:
>
>  - fixed offsets for the physical pins rather than having the offsets
>    depend on eeprom configuration
>
>  - better type abstraction (we want to add support for ft232r and ft232h
>    eventually as well)
>
> The other patch is also more complete in that it:
>
>  - considers the initial pin state
>  - implements a request() callback
>  - implements a get_direction() callback
>
> In contrast, with this implementation as it stands, we could end up with
> a driven pin being reported as an input (corner case, but still).
>
> Implementation-wise, the other patch is also closer to what I'd like to
> see (e.g. not using atomic bit ops, and getting the error handling right
> from the start).
>
> There are some issues that needs to be addressed in the other patch as
> well, and in doing so it would be wise to look at your patch for
> inspiration (e.g. naming issues and adding an eeprom helper to only read
> the couple of configuration words needed).
>
> In the end, going with the other patch means less work for me, even if
> you both (by unfortunate timing) have forced me to do more than twice
> the amount of review work already.

Thanks for review, I'm fine with that and I'll review the other patch.
Karoly can use chunks of my patch if useful.

Regards,
Loic

Reply via email to