Re: usb: thoughts of adding more support for FT232H

From: Anatolij Gustschin
Date: Wed Dec 05 2018 - 10:17:35 EST


Hi,

On Wed, 5 Dec 2018 22:10:40 +0800
Song Qiang songqiang1304521@xxxxxxxxx wrote:
...
>I've been developing some iio device drivers and found that some people
>would like to test their devices with a qemu system which requires an
>i2c or spi port on our development hosts. Usually this is achieved with
>a DLN-2 adapter, while this is a bit difficult for me because it costs
>~175$ in my country. Then I found that FTDI's FT232H supports both these
>two modes and costs only less than 5$ but without full support in kernel.
>The ftdi-sio driver supports FT232H only as a serial converter.
>So I'm planning to write a mfd driver for it supports both these three
>modes, here are my thoughts:

There already has been a discussion [1] about adding an MFD driver for
FT232H, since the operating modes are mutually exclusive (and bus pins
shared between different modes), the MFD approach doesn't seem to be
a good fit.

> Â- This device cannot support these three modes together because they
> ÂÂ share some common pins, so I'm planning to add a sysfs entry
> ÂÂ 'current_mode' for selecting which mode the device should be working
> ÂÂ on.
> Â- This device is in uart mode on reset, so default mode would be reset,
> ÂÂ too. This also helps for people only want to use this as a serial
> ÂÂ converter feels nothing has happened (compatible).
> Â- I was trying to reuse the ftdi-sio driver but it seems like mfd can
> ÂÂ only register platform devices, while this is a usb driver. I may
> ÂÂ have to copy some functions from this driver.
>
>Would you share any ideas? I'd appreciate it.

There is a patch series [2] adding an interface driver for FT232H-
based adapter devices, it already supports adding custom MPSSE based
SPI busses with SPI slaves for a custom USB PID. It already supports
adding custom CBUS-/MPSSE-GPIO adapters for user-defined USB PID.
Adding I2C driver/adapter support should be easy, too. Maybe you can
re-use it.

Thanks,
Anatolij

[1] https://patchwork.kernel.org/patch/9828985
[2] https://patchwork.kernel.org/project/linux-usb/list/?series=48255