either contribute their code back to the kernel, after which whoever breaks compatibility has to fix the driver;

or make their driver evolve to keep up with incompatible interface changes.

The xr21v1410 driver was written for Linux 3.5. The message referring to line 1104 in vizzini.c indicates that a variable of a structure type is being used. Looking at the source, this is tty->termios where tty is of type tty_struct. Around Linux 3.6, the pointer changed to become a struct inside another struct.

You can try fixing this by changing tty->termios to tty.termios throughout the code. However this is unlikely to be the only problem. You should contact the manufacturer and request an updated driver.