Thread (3 messages) read the whole thread 3 messages, 2 authors, 2021-11-26

CP2105 gives kernel error -22 when in modem mode

From: Maarten Brock <hidden>
Date: 2021-11-25 16:15:24

Hello all,

When a uart of the CP2105 USB-serial chip is programmed to be in modem 
mode, all its gpio pins are in alternate use and none are available for 
gpio. Still the cp210x driver tries to add a gpiochip unconditionally, 
which results in an error.
cp210x 1-1.4.4:1.0: cp210x converter detected
usb 1-1.4.4: cp210x converter now attached to ttyUSB0
cp210x 1-1.4.4:1.1: cp210x converter detected
gpio gpiochip2: (cp210x): tried to insert a GPIO chip with zero lines
gpiochip_add_data_with_key: GPIOs 0..-1 (cp210x) failed to register, 
-22
cp210x 1-1.4.4:1.1: GPIO initialisation failed: -22
usb 1-1.4.4: cp210x converter now attached to ttyUSB1
I propose to add something like the following to cp210x_gpio_init

+	unsigned long valid_mask, altfunc_mask;
...
+	altfunc_mask = priv->gpio_altfunc;
+	bitmap_complement(&valid_mask, &altfunc_mask, priv->gc.ngpio);
+	if (bitmap_empty(&valid_mask, priv->gc.ngpio))
+		return 0;
+
  	priv->gc.label = "cp210x";
  	priv->gc.request = cp210x_gpio_request;
  	priv->gc.get_direction = cp210x_gpio_direction_get;

I can write a proper patch, but am unsure if and what the Fixes tag 
should be.

Maarten
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help