Building the Driver and application: -------------------- Run the following command in the driver source folder: $ make Once the driver is compliled, the loadable module 99xx.ko will be created in the same folder. ** '$' --this symbol represents the shell prompt on linux To build driver on kernels from v3.1.0 till latest: ---------------------------------------------------- Since the device ID 99XX is included (as built-in) with kernel versions starts from v3.1.0 and above, the following procedure is required to follow to detect MCS99XX devices. a) Go to the path, "/usr/src/linux-x.y.z/drivers/tty/serial" in v3.1.0 $ cd /usr/src/linux-x.y.z/drivers/tty/serial/ "/usr/src/linux-x.y.z/drivers/tty/serial/8250" from v3.3.0 to latest $ cd /usr/src/linux-x.y.z/drivers/tty/serial/8250/ b) Open file "8250_pci.c". - find for the macro PCI_DEVICE_ID_NETMOS_9901, PCI_DEVICE_ID_NETMOS_9912, PCI_DEVICE_ID_NETMOS_9922, PCI_DEVICE_ID_NETMOS_9904, PCI_DEVICE_ID_NETMOS_9900, It will be found in two places, 1) In the struct definition "serial_pci_tbl[]" - Comment the below lines, " { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9912, 0xA000, 0x1000, 0, 0, pbn_b0_1_115200 }, { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9922, 0xA000, 0x1000, 0, 0, pbn_b0_1_115200 }, { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9904, 0xA000, 0x1000, 0, 0, pbn_b0_1_115200 }, { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9900, 0xA000, 0x1000, 0, 0, pbn_b0_1_115200 }, { PCI_VENDOR_ID_NETMOS, PCI_DEVICE_ID_NETMOS_9900, 0xA000, 0x3002, 0, 0, pbn_NETMOS9900_2s_115200 }, " 2) In the routine "pci_netmos_init" - No need do any action, as we already done (a). c) Re-compile the Linux kernel. Loading the Driver: ------------------- To load the driver use the following command: $ insmod 99xx.ko ** '$' --this symbol represent the shell prompt on linux Unloading the Driver: --------------------- To unload the driver use the following command: $rmmod 99xx ** '$' --this symbol represent the shell prompt on linux Installing the Driver: ---------------------- To install the driver use the following command: make install Uninstalling the Driver: ------------------------ To un-install the driver use the following command: make uninstall Features Supported: ------------------- The driver supports all the features supported by the MCS99XX serial device. Note: only baud rates upto 3.0Mbps are implemented in the current driver. Feature Configuration: ---------------------- MCS99xx: -------- This driver comes with a static array uart_99xx_contxts[ ] for all the 16 ports features in the 99xx.c file. Where you can set the features like: -DMA in RX -DMA in TX -enable/disable Flow control -Flow control type -RX fifo trigger level -TX fifo trigger level -x-on character -x-off character An example array setting for PORT 0 which will be recognised as /dev/ttyF0: //Port 0 --**This represents that this setting is for port 0 which will be recognised as /dev/ttyF0 { .rx_dma_en = 0, .tx_dma_en = 0, .uart_mode = MCS99XX_RS232_MODE, .en_flow_control= 0, .flow_ctrl_type = MCS99XX_XON_XOFF_HW_FLOWCONTROL, .rxfifotrigger = 64, .txfifotrigger = 64, .x_on = SERIAL_DEF_XON, .x_off = SERIAL_DEF_XOFF, }, To change the port to different modes for uart_mode settings use the following, MCS99XX_RS422_MODE (422 mode) MCS99XX_RS485_HALF_DUPLEX (485 half duplex) MCS99XX_RS485_FULL_DUPLEX (485 full duplex) Kernels: -------- This driver is currently developed and tested on 2.6.13 linux kernel and above Limitations: ------------ This driver supports a maximum of 16 serial devices. This can be modified as required Steps for setting parallel port : --------------------------------- 1. rmmod lp 2. rmmod parport_pc 2. insmod /usr/lib/modules/2.6.13/kernel/drivers/parport/parport_pc io=0xb000 irq=10. Note: Here, the io and irq should be noted from lspci -v. Steps for setting cascade serial ports: ---------------------------------------- Building the Driver: -------------------- Run the following command in the driver source folder: $ make Once the driver is compliled the loadable module 99xx.ko will be created in the same folder. ** '$' --this symbol represents the shell prompt on linux Installing the Driver: ---------------------- To install the driver use the following command: make install Note: ----- Before installing the driver the following steps need to follow when working with a multifunction board in cascade mode. 1.In the 99xx.c file, variable "mode" indicates the slave chip serial ports enable or not. Choose "CASCADE_MODE" to enable slave chip serial ports. Choose "NORMAL_MODE" to disable slave chip serial ports. 2.In the 99xx.c file, variable "nr_funs" indicates the order of cascade ports. Example in MCS99XX-8S: nr_funs | Serial port | Function | Port number | Chip -------------------------------------------------------- 4 | SP1 | 0 | ttyF0 | Master -------------------------------------------------------- 4 | SP2 | 1 | ttyF1 | Master -------------------------------------------------------- 4 | SP3 | 2 | ttyF2 | Master -------------------------------------------------------- 4 | SP4 | 3 | ttyF3 | Master -------------------------------------------------------- 4 | SP5 | 0 | ttyF4 | Slave -------------------------------------------------------- 4 | SP6 | 1 | ttyF5 | Slave -------------------------------------------------------- 4 | SP7 | 2 | ttyF6 | Slave -------------------------------------------------------- 4 | SP8 | 3 | ttyF7 | Slave nr_funs | Serial port | Function | Port number | Chip -------------------------------------------------------- 2 | SP1 | 0 | ttyF0 | Master -------------------------------------------------------- 2 | SP2 | 1 | ttyF1 | Master -------------------------------------------------------- 2 | SP3 | 2 | ttyF4 | Master -------------------------------------------------------- 2 | SP4 | 3 | ttyF5 | Master -------------------------------------------------------- 2 | SP5 | 0 | ttyF2 | Slave -------------------------------------------------------- 2 | SP6 | 1 | ttyF6 | Slave -------------------------------------------------------- 2 | SP7 | 2 | ttyF3 | Slave -------------------------------------------------------- 2 | SP8 | 3 | ttyF7 | Slave nr_funs | Serial port | Function | Port number | Chip -------------------------------------------------------- 1 | SP1 | 0 | ttyF0 | Master -------------------------------------------------------- 1 | SP2 | 1 | ttyF2 | Master -------------------------------------------------------- 1 | SP3 | 2 | ttyF4 | Master -------------------------------------------------------- 1 | SP4 | 3 | ttyF6 | Master -------------------------------------------------------- 1 | SP5 | 0 | ttyF1 | Slave -------------------------------------------------------- 1 | SP6 | 1 | ttyF3 | Slave -------------------------------------------------------- 1 | SP7 | 2 | ttyF5 | Slave -------------------------------------------------------- 1 | SP8 | 3 | ttyF7 | Slave Uninstalling the Driver: ------------------------ To un-install the driver use the following command: make uninstall Steps for setting gpio[7:0] : ----------------------------- Execute the "gpio_99xx" application and the application will show: Please input the port of MCS99xx. (ex. /dev/ttyF0): After specify the serial port, application will show these selections to access GPIO: 0 : GPIO status 1 : Setup GPIO direction 2 : GPIO write 99 : Exit :