Building the Driver and application: -------------------- Run the following command in the driver source folder: $ make Once the driver is compliled, the loadable module ax99100.ko will be created in the same folder. ** '$' --this symbol represents the shell prompt on linux Loading the Driver: ------------------- To load the driver use the following command: $ insmod ax99100.ko ** '$' --this symbol represent the shell prompt on linux Unloading the Driver: --------------------- To unload the driver use the following command: $rmmod ax99100 ** '$' --this symbol represent the shell prompt on linux Installing the Serial Port Driver: ---------------------- To install the driver use the following command: make install Uninstalling the Serial Port Driver: ------------------------ To un-install the driver use the following command: make uninstall Features Supported: ------------------- The driver supports all the features supported by the AX99100 serial device and the AX99100 SPI device. Note: only baud rates upto 3.0Mbps are implemented in the current driver. Feature Configuration: ---------------------- AX99100 serial port: -------------------- This driver comes with a static array uart_99100_contxts[ ] for all the 16 ports features in the ax99100_sp.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 = AX99100_RS232_MODE, .en_flow_control= 0, .flow_ctrl_type = AX99100_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, AX99100_RS422_MODE (422 mode) AX99100_RS485_HALF_DUPLEX (485 half duplex) AX99100_RS485_HALF_DUPLEX_ECHO (485 half duplex echo) AX99100_RS485_FULL_DUPLEX (485 full duplex) AX99100_RS485_FULL_DUPLEX_TXEN (485 full duplex DxEN) If you are use AX99100 chip with multi-protocol mode, the uart_99100_contxts[ ] array features need to setup. { ... .ltc2872_te485 = 0, .ltc2872_dz = 0, .ltc2872_lb = 0, .ltc2872_fen = 0, .pci_config_l0s = 0, .pci_config_l1 = 0, } Kernels: -------- This driver is currently developed and tested on 2.6.13 linux kernel and above Limitations: ------------ This ax99100 driver supports a maximum of 4 serial devices or spi device. This can be modified as required Steps for setting parallel port : --------------------------------- 1. rmmod lp 2. rmmod parport_pc 2. insmod parport_pc.ko io=bar0 io_hi=bar1 irq=number. Note: Here, the io, io_hi and irq should be noted from lspci -v. Steps for setting gpio[7:0] : ----------------------------- Execute the "gpio_99100" application and the application will show: Please input the port of AX99100. (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 SPI Test Tool Flow: ------------------- This spi_test tool is used for the AX99100 SPI Demo Board non decoder. The test case according to the following steps: #Open AX99100 SPI device: Open char device with AX99100 SPI(ex./dev/spi0) $./spi_test /dev/spi0 #Step 1: Set the SPI Control Master Register. Input 457 to set SPIMEN, ASS and SSOE bit. /-----------------------------------------------------------------/ SPICMR Setting Number: 0 1 2 3 4 5 6 7 Name: SSP CPHA CPOL LSB SPIMEN ASS SWE SSOE Example: Need to set SPIMEN ASS SSOE bits, and the value is 457 Input the value of SPICMR: 457 /-----------------------------------------------------------------/ #Step 2: Select SPI Source Clocks. Input 0 to select the source clock, 125MHz. /-----------------------------------------------------------------/ SPICSS SPICKS Setting Valus: 0:125MHz 1:100MHz 2,3:EXT_CLK Input the value of SPICKS: 0 /-----------------------------------------------------------------/ #Step 3: Select whether to enable the clock divide. Input 1 to enable the clock divider. /-----------------------------------------------------------------/ SPICSS SPIDIVEN Setting Valus: 0:Disable 1:Enable Input the value of SPIDIVEN: 1 /-----------------------------------------------------------------/ #Step 4: Set the SPI Divider. Input 3 to set the SPI Divider. /-----------------------------------------------------------------/ SPIDIVIDER Setting Valus: 0 - 255 Input the value of SPIDIVIDER: 3 /-----------------------------------------------------------------/ #Step 5: Select whether to enable the external decoder. Input 0 to disable the externel decoder. /-----------------------------------------------------------------/ Externel Decoder Setting Valus: 0:Disable 1:Enable Input the value of EDE: 0 /-----------------------------------------------------------------/ #Step 6: Select the desired slave device. Input 0 to select Device 0. /-----------------------------------------------------------------/ Divice Setting Valus: 0 - 2 (Device 0 - Device 2) Input the value of device: 0 /-----------------------------------------------------------------/ #Step 7: Set the test count. Input 10 to perform ten times for test. /-----------------------------------------------------------------/ Data Test Count Setting Input the value of test count: 10 /-----------------------------------------------------------------/ #Step 8: Select Tx, Rx or TXRX(Compare). Input 2 to select TX & RX (Compare data). /-----------------------------------------------------------------/ Data Tx/Rx Direction Setting Valus: 0:TX 1:RX 2:TX & RX Input the value of direction: 2 /-----------------------------------------------------------------/ #Step 9: Set the data pattern type. Input 255 to set the data pattern type. (255 -> 0xff) /-----------------------------------------------------------------/ Data Pattern Type Setting Valus: 0 - 255 (0x00 - 0xff) Input the value of pattern: 255 /-----------------------------------------------------------------/ #Step 10: Select Interrupt or Polling. Input 1 to select the Polling mode. /-----------------------------------------------------------------/ Data Interrupt Setting Method: 0:Interrupt 1:Polling Select the mode: 1 /-----------------------------------------------------------------/ #Step 11: If you want to modify one data setting, select the data item. Run test to select number 9. /-----------------------------------------------------------------/ ************************************************* * Test SPI Setting * ************************************************* **Initial Information: SPICMR: 0xb0 ( SPIMEN ASS SSOE ) SPICKS: 0x00 ( 125MHz ) SPIDIVEN: 0x1 ( Enable ) SPIDIVIDER: 3 **Test Setting: Test Direction: TX & RX Device Num.: 0x6 Test Count: 10 Externel Decoder: 0x0 ( Disable ) Pattern Type: 0xff Data Length: 256 Interrupt Mode: Polling ***Initial data*** 0: Modify SPICMR 1: Modify SPICKS 2: Modify SPIDIVIDER ***Test setting*** 3: Select Device 4: Modify Data Pattern(for tx) 5: Modify Test Count 6: Select Tx or Rx 7: Modify Data Length 8: Select Interrupt Mode 9: Test performace. 99: Exit the test tool. Please choose: 9 /-----------------------------------------------------------------/ #Result: If you want to run test with the same setting, input Y or y. Otherwise, input N or n. /-----------------------------------------------------------------/ ************************************************* * Test SPI Setting * ************************************************* **Initial Information: SPICMR: 0xb0 ( SPIMEN ASS SSOE ) SPICKS: 0x00 ( 125MHz ) SPIDIVEN: 0x1 ( Enable ) SPIDIVIDER: 3 **Test Setting: Test Direction: TX & RX Device Num.: 0x6 Test Count: 10 Externel Decoder: 0x0 ( Disable ) Pattern Type: 0xff Data Length: 256 Interrupt Mode: Polling ************************************************* * Throughput * ************************************************* Test Counter: 10 TX Throughput: 0.385650 MB/s RX Throughput: 4.569484 MB/s Test again?(Y/N):n /-----------------------------------------------------------------/ Serial Port 9-bit mode test flow: --------------------------------- Execute the "9bit_test" application and the application will show: Usage:9bit_test [dev] [option] Example: (9-bit mode: Master, ID: 20) ./9bit_test /dev/ttyF0 -m 1 -i 20 -m [Mode] 1:Master 2:Slave SW 3:Slave HW 4:Data mode -i [Address ID] range 0-255