Re: [PATCH] USB: serial: ftdi_sio: implement GPIO support for FT230X

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

 



Hi Karoly,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on usb-serial/usb-next]
[also build test ERROR on v4.19-rc1 next-20180827]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Karoly-Pados/USB-serial-ftdi_sio-implement-GPIO-support-for-FT230X/20180827-005902
base:   https://git.kernel.org/pub/scm/linux/kernel/git/johan/usb-serial.git usb-next
config: mips-rm200_defconfig (attached as .config)
compiler: mipsel-linux-gnu-gcc (Debian 7.2.0-11) 7.2.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=7.2.0 make.cross ARCH=mips 

All errors (new ones prefixed by >>):

   drivers/usb/serial/ftdi_sio.c: In function 'ftdi_sio_port_probe':
>> drivers/usb/serial/ftdi_sio.c:2090:30: error: passing argument 1 of 'ftdi_sio_gpio_init' from incompatible pointer type [-Werror=incompatible-pointer-types]
     result = ftdi_sio_gpio_init(port);
                                 ^~~~
   drivers/usb/serial/ftdi_sio.c:2030:12: note: expected 'struct usb_serial *' but argument is of type 'struct usb_serial_port *'
    static int ftdi_sio_gpio_init(struct usb_serial *serial)
               ^~~~~~~~~~~~~~~~~~
   drivers/usb/serial/ftdi_sio.c: In function 'ftdi_sio_port_remove':
>> drivers/usb/serial/ftdi_sio.c:2213:23: error: passing argument 1 of 'ftdi_sio_gpio_remove' from incompatible pointer type [-Werror=incompatible-pointer-types]
     ftdi_sio_gpio_remove(port);
                          ^~~~
   drivers/usb/serial/ftdi_sio.c:2035:13: note: expected 'struct usb_serial *' but argument is of type 'struct usb_serial_port *'
    static void ftdi_sio_gpio_remove(struct usb_serial *serial)
                ^~~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors

vim +/ftdi_sio_gpio_init +2090 drivers/usb/serial/ftdi_sio.c

  2065	
  2066	static int ftdi_sio_port_probe(struct usb_serial_port *port)
  2067	{
  2068		struct ftdi_private *priv;
  2069		const struct ftdi_sio_quirk *quirk = usb_get_serial_data(port->serial);
  2070		int result;
  2071	
  2072		priv = kzalloc(sizeof(struct ftdi_private), GFP_KERNEL);
  2073		if (!priv)
  2074			return -ENOMEM;
  2075	
  2076		mutex_init(&priv->cfg_lock);
  2077	
  2078		if (quirk && quirk->port_probe)
  2079			quirk->port_probe(priv);
  2080	
  2081		usb_set_serial_port_data(port, priv);
  2082	
  2083		ftdi_determine_type(port);
  2084		ftdi_set_max_packet_size(port);
  2085		if (read_latency_timer(port) < 0)
  2086			priv->latency = 16;
  2087		write_latency_timer(port);
  2088		create_sysfs_attrs(port);
  2089	
> 2090		result = ftdi_sio_gpio_init(port);
  2091		if (result < 0)
  2092			dev_err(&port->serial->interface->dev,
  2093				"GPIO initialisation failed: %d\n",
  2094				result);
  2095	
  2096		return 0;
  2097	}
  2098	
  2099	/* Setup for the USB-UIRT device, which requires hardwired
  2100	 * baudrate (38400 gets mapped to 312500) */
  2101	/* Called from usbserial:serial_probe */
  2102	static void ftdi_USB_UIRT_setup(struct ftdi_private *priv)
  2103	{
  2104		priv->flags |= ASYNC_SPD_CUST;
  2105		priv->custom_divisor = 77;
  2106		priv->force_baud = 38400;
  2107	}
  2108	
  2109	/* Setup for the HE-TIRA1 device, which requires hardwired
  2110	 * baudrate (38400 gets mapped to 100000) and RTS-CTS enabled.  */
  2111	
  2112	static void ftdi_HE_TIRA1_setup(struct ftdi_private *priv)
  2113	{
  2114		priv->flags |= ASYNC_SPD_CUST;
  2115		priv->custom_divisor = 240;
  2116		priv->force_baud = 38400;
  2117		priv->force_rtscts = 1;
  2118	}
  2119	
  2120	/*
  2121	 * Module parameter to control latency timer for NDI FTDI-based USB devices.
  2122	 * If this value is not set in /etc/modprobe.d/ its value will be set
  2123	 * to 1ms.
  2124	 */
  2125	static int ndi_latency_timer = 1;
  2126	
  2127	/* Setup for the NDI FTDI-based USB devices, which requires hardwired
  2128	 * baudrate (19200 gets mapped to 1200000).
  2129	 *
  2130	 * Called from usbserial:serial_probe.
  2131	 */
  2132	static int ftdi_NDI_device_setup(struct usb_serial *serial)
  2133	{
  2134		struct usb_device *udev = serial->dev;
  2135		int latency = ndi_latency_timer;
  2136	
  2137		if (latency == 0)
  2138			latency = 1;
  2139		if (latency > 99)
  2140			latency = 99;
  2141	
  2142		dev_dbg(&udev->dev, "%s setting NDI device latency to %d\n", __func__, latency);
  2143		dev_info(&udev->dev, "NDI device with a latency value of %d\n", latency);
  2144	
  2145		/* FIXME: errors are not returned */
  2146		usb_control_msg(udev, usb_sndctrlpipe(udev, 0),
  2147					FTDI_SIO_SET_LATENCY_TIMER_REQUEST,
  2148					FTDI_SIO_SET_LATENCY_TIMER_REQUEST_TYPE,
  2149					latency, 0, NULL, 0, WDR_TIMEOUT);
  2150		return 0;
  2151	}
  2152	
  2153	/*
  2154	 * First port on JTAG adaptors such as Olimex arm-usb-ocd or the FIC/OpenMoko
  2155	 * Neo1973 Debug Board is reserved for JTAG interface and can be accessed from
  2156	 * userspace using openocd.
  2157	 */
  2158	static int ftdi_jtag_probe(struct usb_serial *serial)
  2159	{
  2160		struct usb_device *udev = serial->dev;
  2161		struct usb_interface *interface = serial->interface;
  2162	
  2163		if (interface == udev->actconfig->interface[0]) {
  2164			dev_info(&udev->dev,
  2165				 "Ignoring serial port reserved for JTAG\n");
  2166			return -ENODEV;
  2167		}
  2168	
  2169		return 0;
  2170	}
  2171	
  2172	static int ftdi_8u2232c_probe(struct usb_serial *serial)
  2173	{
  2174		struct usb_device *udev = serial->dev;
  2175	
  2176		if (udev->manufacturer && !strcmp(udev->manufacturer, "CALAO Systems"))
  2177			return ftdi_jtag_probe(serial);
  2178	
  2179		if (udev->product &&
  2180			(!strcmp(udev->product, "Arrow USB Blaster") ||
  2181			 !strcmp(udev->product, "BeagleBone/XDS100V2") ||
  2182			 !strcmp(udev->product, "SNAP Connect E10")))
  2183			return ftdi_jtag_probe(serial);
  2184	
  2185		return 0;
  2186	}
  2187	
  2188	/*
  2189	 * First two ports on JTAG adaptors using an FT4232 such as STMicroelectronics's
  2190	 * ST Micro Connect Lite are reserved for JTAG or other non-UART interfaces and
  2191	 * can be accessed from userspace.
  2192	 * The next two ports are enabled as UARTs by default, where port 2 is
  2193	 * a conventional RS-232 UART.
  2194	 */
  2195	static int ftdi_stmclite_probe(struct usb_serial *serial)
  2196	{
  2197		struct usb_device *udev = serial->dev;
  2198		struct usb_interface *interface = serial->interface;
  2199	
  2200		if (interface == udev->actconfig->interface[0] ||
  2201		    interface == udev->actconfig->interface[1]) {
  2202			dev_info(&udev->dev, "Ignoring serial port reserved for JTAG\n");
  2203			return -ENODEV;
  2204		}
  2205	
  2206		return 0;
  2207	}
  2208	
  2209	static int ftdi_sio_port_remove(struct usb_serial_port *port)
  2210	{
  2211		struct ftdi_private *priv = usb_get_serial_port_data(port);
  2212	
> 2213		ftdi_sio_gpio_remove(port);
  2214	
  2215		remove_sysfs_attrs(port);
  2216	
  2217		kfree(priv);
  2218	
  2219		return 0;
  2220	}
  2221	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux