Description: PCI UART Linux 2.6 driver patches ================================================== The Oxford Semiconductor serial device driver patches support the Oxford Semiconductor family of PCI to Serial bridge devices and Local Bus to Serial bridge devices. This includes the: OX16PCI952 OX16PCI954 OX16PCI958 OXmPCI952 OXmPCI954 OXuPCI952 OXuPCI954 OX16C954B OX16C950B This set of patches includes the following: oxford_pci_linux2.6_uart_8250 oxford_pci_linux2.6_uart_8250_pci This README includes instructions for applying the patches, along with some useful prerequisites and considerations for the user. At the bottom of this README the user can also find details on how to use the Oxford Semiconductor Card Bus to Serial and Compact Flash to Serial devices: OXCF950 OXCB950 See section "Other Oxford Semiconductor Devices" Prerequisites:- =============== Before getting started with the Linux 2.6 serial device driver patches for the Oxford Semiconductor family of devices there are a few prerequisites for users to consider on their Linux 2.6 system. Please note that the following README for the serial patches makes the assumption that the user is working on a PC distribution of Linux such as Red Hat, Suse or Fedora etc... The patch will be the same or similar for any Linux 2.6 based system, however the following steps may change depending on the users system. The serial device driver patch will be applied to the source code for the Linux OS. Hence the user will need the source code for their particular version of the Linux kernel. There are two general options for acquiring the Linux kernel source code, the user can either download the source for their particular distributions kernel or the user can download the Linux communities "vanilla" kernel from www.kernel.org. To rebuild the patched serial driver the user will also need the kernel build tools relative to their Linux distribution. For more information on the source code and the build tools for the users system one should consult the documentation for their particular distribution. In general, the kernel source code is copied to /usr/src/. As some distributions may do this slightly differently, we will make the assumption in this document that the root directory of the kernel source code is located at /usr/src/linux-2.6 General Tips:- ============== In general the Linux kernel pre-built with each Linux distribution will have the serial driver built into the kernel, and not built as a kernel loadable module. This means that regardless of whether the user would like to have the serial driver for the Oxford UART device built into the kernel, or available as a kernel loadable module the user will have to rebuild the full kernel. To rebuild the kernel with the serial driver as a kernel loadable module, the user should use a tool such as menuconfig to configure the kernels .config file. - From the command line navigate to the root directory of the linux kernel source: ~> cd /usr/src/linux-2.6 - Start "menuconfig" to configure the .config file: ~> make menuconfig - Within the "menuconfig" utility: - The first page is the "Linux Kernel Configuration" page. On this page select the Device Drivers menu. - From the "Device Drivers" menu one should select the "Character Devices" menu. - From the "Character Devices" menu, select "Serial Drivers". - To build the serial drivers as part of the kernel confirm that the entry for "8250/16550 and compatible serial support" is selected as {*}. - To build the serial drivers as a kernel loadable module confirm that the entry for "8250/16550 and compatible serial support" is selected as {M}. - Once all changes have been made, exit back through the menus and select "Yes" to save the new .config file. Now proceed to build your kernel and modules. Also, in general the Linux kernel pre-built with each Linux distribution will be set to only enumerate 4 serial ports at runtime. As many of the Oxford devices contain 4 and 8 UARTs this can prove to be a problem. As the user will need to rebuild the kernel already, this is easily resolved. - From the command line navigate to the root directory of the linux kernel source: ~> cd /usr/src/linux-2.6 - Start "menuconfig" to configure the .config file: ~> make menuconfig - Within the "menuconfig" utility: - The first page is the "Linux Kernel Configuration" page. On this page select the Device Drivers menu. - From the "Device Drivers" menu one should select the "Character Devices" menu. - From the "Character Devices" menu, select "Serial Drivers". - To adjust the number of serial ports enumerated at runtime, select "Number of 8250/16550 serial ports to register at runtime" and enter a suitable number (e.g. 20). - Once all changes have been made, exit back through the menus and select "Yes" to save the new .config file. Now proceed to build your kernel and modules. Building the Linux kernel from source code:- ============================================ Depending of the Linux distribution that the user has, and the build tools provided, building the kernel can be done in different ways. For most systems, including Red Hat, Suse and Fedora, the following steps are used to build the Linux kernel from source code. - Navigate to the root directory of the Linux kernel source code: ~> cd /usr/src/linux-2.6 - Build the kernel image: ~> make bzImage - Build the modules specified in the .config file: ~> make modules - Run the install scripts for the kernel loadable modules: ~> make modules_install - Run the install scripts for the kernel ~> make install For more information on building the Linux kernel from source code, the user should refer to the documentation for their chosen distribution. Note that the steps above will not work for a debian based system such as Ubuntu, and the user should look to their distribution's documentation for guidance. How to apply the serial device driver patch:- ============================================= If the user plans on building the serial driver as part of the Linux kernel (i.e. not as a kernel loadable module) then you will have to apply the patch to the serial driver code within the Linux source code directory. If the user would like to build the serial driver as a kernel loadable module then the user can take a copy of the serial device driver source code from within the Linux kernel source code, copy this driver source to a working directory such as one's home directory, and then patch this copy of the driver. The advantage of working on a copy is that the user will still have a clean copy of the kernel source just in case. The Linux serial device driver is located at: ~> /usr/src/linux-2.6/drivers/serial To apply the patch: - Paste the oxford_pci_linux2.6_uart_8250 and oxford_pci_linux2.6_uart_8250_pci patch files into the serial folder. - Open a terminal and navigate to the serial folder. - To apply the patches, enter the following commands: ~> patch -p0 < oxford_pci_linux2.6_uart_8250 ~> patch -p0 < oxford_pci_linux2.6_uart_8250_pci The oxford_pci_linux2.6_uart_8250 patch will modify the file "8250.c". It adds the enhanced features capabilities flag for the C950/C954 UART. The oxford_pci_linux2.6_uart_8250_pci patch will add code to the file "8250_pci.c". It is a simple patch that basically adds baud_base and base address information for the Oxford devices that are not already supported by the generic Linux kernel. Because the "8250_pci.c" and "8250.c" files can be updated at any time by the Linux community, the patch may fail. If this happens the user is encouraged to take a look at the contents of the patch and try adding this manually. To build the patched serial device driver into the kernel the user will now simply have to follow the usual build steps as described above. To build the patched serial driver as a kernel loadable module:- ================================================================ Kernel loadable modules can be dynamically loaded and unloaded from the running Linux kernel. This can be very advantageous depending on the user needs. To build the patched serial driver as a kernel loadable module, the user must have first satisfied the above prerequisite of configuring the kernel's .config file to build the serial driver as a kernel loadable module. To then build the module: - Navigate to the serial device driver directory. I.e. if a copy of the serial device driver has been copied to /home/user/ and then patched as above: ~> cd /home/user/serial/ - To build the patched serial device driver enter the following command: ~> make -C /usr/src/linux-2.6 M=$PWD modules This will generate the serial driver kernel loadable modules (.ko files) in /home/user/serial. The serial driver for the Oxford devices will be "8250.ko", and the module "8250_pci.ko" performs the binding of the driver to the Oxford device. To load the kernel loadable modules: - Insert the serial device driver module (from /home/usr/serial): ~> insmod 8250.ko - Insert the serial PCI module: ~> insmod 8250_pci.ko Note that often the serial device driver module will already be loaded at startup, in which case the vanilla 8250.ko and 8250_pci.ko modules will need to be removed (see below) before the above insmod commands will work. To see the debug output from the Linux kernel, the user can open another terminal and enter: ~> tail -f /var/log/messages To see a list of the kernel loadable modules currently loaded on the system: ~> lsmod To unload the modules: ~> rmmod 8250_pci.ko ~> rmmod 8250.ko Other Oxford Semiconductor Devices:- ==================================== The OXCF950 does not require any patches to the Linux serial device driver. To see full details on how to enable the OXCF950 on a Linux system see the following web page: http://www.tldp.org/HOWTO/PCMCIA-HOWTO.html From this document, chapter "PCMCIA serial and modem devices": "If you configure your kernel to load the basic Linux serial port driver as a module, you must edit /etc/pcmcia/config to indicate that this module must be loaded. Edit the serial device entry to read: device "serial_cs" class "serial" module "misc/serial", "serial_cs" " Also, the user should edit /etc/pcmcia/serial.opts (more details on the above web page): #Symbolic link to dialout device LINK = "/dev/ttyS1" #Options for "setserial" SERIAL_OPTS = "baud_base XXXX" where XXXX = {115200 x 1.8432/crystal_frequency} The OXCB950 can be driven by the generic Linux serial device driver, however the user will first need to enable PCI hotplug in their kernel configuration.Download Driver Pack
After your driver has been downloaded, follow these simple steps to install it.
Expand the archive file (if the download file is in zip or rar format).
If the expanded file has an .exe extension, double click it and follow the installation instructions.
Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.
Find the device and model you want to update in the device list.
Double-click on it to open the Properties dialog box.
From the Properties dialog box, select the Driver tab.
Click the Update Driver button, then follow the instructions.
Very important: You must reboot your system to ensure that any driver updates have taken effect.
For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.