On Mon, 10 Jul 2017 14:34:27 +0200 Johan Hovold jo...@kernel.org wrote: >On Fri, Jul 07, 2017 at 11:53:29AM +0200, Anatolij Gustschin wrote: >> On Fri, 07 Jul 2017 09:48:48 +0200 >> Bjørn Mork bj...@mork.no wrote: >> >> >[adding Johan on the CC list] >> > >> >Anatolij Gustschin <ag...@denx.de> writes: >> > >> >> +static struct usb_device_id ftdi_mfd_table[] = { >> >> + { USB_DEVICE(0x0403, 0x6014) }, >> >> + {} >> >> +}; >> >> +MODULE_DEVICE_TABLE(usb, ftdi_mfd_table); >> > >> >This device ID is currently handled by the ftdi_sio driver, so I believe >> >you at least have to explain how you intend these two drivers to >> >cooperate... >> >> these drivers cannot cooperate, the different ftdi function modes >> use same device pins as in UART mode. So, you either can use the >> device in UART interface mode or in some different mode. I do not >> load the ftdi_sio module or do unbind the USB device from the >> ftdio_sio driver and bind it to the mfd driver, e.g.: >> >> sh -c "echo -n "3-2:1.0" > /sys/bus/usb/drivers/ftdi_sio/unbind" >> sh -c "echo -n "3-2:1.0" > /sys/bus/usb/drivers/ftdi-mfd/bind" > >I'm afraid that's not good enough. If we're going to support a non-UART >mode through a separate driver, we need to have all drivers for these >devices be able to retrieve the current mode during probe and only bind >when the mode matches.
Can we reliably retrieve the current mode? For devices with connected EEPROM some modes (including UART) are configurable in the EEPROM. For devices without EEPROM the default mode is always UART, but FIFO-, Bitbang- and MPSSE-mode can be switched via commands to the the chip. Anatolij