Comstackción de controlleres USB Linux

Estoy usando Linux Mint 15. Cuando bash comstackr la versión del file del controller EXAR UART para kernel v3.5.0 y posterior, la proporciono aquí: http://www.exar.com/connectivity/uart-and-bridging-solutions/usb -uarts / xr21v1410

Obtuve el siguiente error:

v@lenovo-linux ~/Downloads/xr21v141x-lnx-3.5-pak $ sudo make make -C /lib/modules/3.8.0-19-generic/build M=/home/v/Downloads/xr21v141x-lnx-3.5-pak make[1]: Entering directory `/usr/src/linux-headers-3.8.0-19-generic' LD /home/v/Downloads/xr21v141x-lnx-3.5-pak/built-in.o CC [M] /home/v/Downloads/xr21v141x-lnx-3.5-pak/vizzini.o /home/v/Downloads/xr21v141x-lnx-3.5-pak/vizzini.c: In function 'xr21v141x_tty_set_termios': /home/v/Downloads/xr21v141x-lnx-3.5-pak/vizzini.c:1104:22: error: invalid type argument of '->' (have 'struct ktermios') make[2]: *** [/home/v/Downloads/xr21v141x-lnx-3.5-pak/vizzini.o] Error 1 make[1]: *** [_module_/home/v/Downloads/xr21v141x-lnx-3.5-pak] Error 2 make[1]: Leaving directory `/usr/src/linux-headers-3.8.0-19-generic' make: *** [all] Error 2 

¿Cómo puedo resolver este error?

Normalmente, primero trato de encontrar algún foro en su website y preguntar allí. Si esto no funciona, trato de solucionarlo yo mismo, pero generalmente hay más errores como este y me rindo después de varios de ellos.

Para arreglar esto:

  1. vaya a /home/v/Downloads/xr21v141x-lnx-3.5-pak/
  2. abrir vizzini.c
  3. ir a la línea 1104
  4. debería haber algo como whatever->whatever que whatever->whatever
  5. si no, publica la línea aquí
  6. en caso afirmativo, cámbielo a whatever.whatever que whatever.whatever que whatever.whatever y vuelva a intentar

Por cierto, ¿por qué construyes como raíz?

Las interfaces del kernel de Linux cambian a menudo. Depende de los escritores de controlleres

  • o bien contribuyen con su código al kernel, después de lo cual quien rompe la compatibilidad tiene que reparar el controller;
  • o hacer que su controller evolucione para mantenerse al día con los cambios de interfaz incompatibles.

El controller xr21v1410 fue escrito para Linux 3.5. El post que hace reference a la línea 1104 en vizzini.c indica que se está utilizando una variable de un tipo de estructura. Mirando la fuente, esto es tty->termios donde tty es de tipo tty_struct . Alnetworkingedor de Linux 3.6, el puntero cambió para convertirse en una estructura dentro de otra estructura.

Puede intentar solucionar esto cambiando tty->termios por tty.termios todo el código. Sin embargo, es poco probable que sea el único problema. Debe contactar al fabricante y solicitar un controller actualizado.

He probado sus respuestas y, de hecho, reescribir esta línea soluciona el problema:

 // cflag = tty->termios->c_cflag; cflag = tty->termios.c_cflag; 

El controller vizzini.ko comstack bien y puede cargarse con insmod.