I have an IOCREST SI-PEX50103 which is a PCI-Express Multi I/O Controller Card with 2 serial ports and 1 parallel port. It uses the vendor supplied AX99100 driver. I am running openSUSE Leap 15.2 with Kernel 5.3.18-lp152.84-default.
I have not been able to install the AX99100 driver on this Linux installation. When running the make command from the installation source directory, I get the following error message:
CC [M] /home/programming/iocrest/AX99100_LINUX_Driver_v1.0.0_Source/ax99100.o /home/programming/iocrest/AX99100_LINUX_Driver_v1.0.0_Source/ax99100.c: In function ‘receive_chars_dma_done’: /home/programming/iocrest/AX99100_LINUX_Driver_v1.0.0_Source/ax99100.c:1027:43: error: ‘ch’ undeclared (first use in this function) if (uart_handle_sysrq_char(&up->port, ch)) ^~ /home/programming/iocrest/AX99100_LINUX_Driver_v1.0.0_Source/ax99100.c:1027:43: note: each undeclared identifier is reported only once for each function it appears in
Before upgrading to Leap 15.2, I had openSUSE Leap 15.1 installed on this computer and I had no trouble installing the driver and using this card. Right now, I also have CentOS Linux 7 installed on this computer and I can install the driver and use the card on that installation.
I'm guessing there is some sort of a problem with the Kernel sources for the 5.3.18-lp152.84 kernel I am running. Any ideas you might have for locating the problem would be appreciated.
ch
var is declared locally incheck_modem_status
,u8 ch,lsr = *status;
. It is not declared in the functionreceive_chars_dma_done
, is not decalred globally either in the.c or .h files, and is not bounded by a kernel version check. Unless I am missing something, it's broken software that was never going to compile without making changes.