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