Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'tty-3.15-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty

Pull tty/serial driver fixes from Greg KH:
"Here are a number of small tty/serial driver fixes for 3.15-rc2. Also
in here are some Documentation file removals for drivers that we
removed a long time ago, no need to keep it around any longer.

All of these have been in linux-next for a bit"

* tag 'tty-3.15-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
Revert "serial: 8250, disable "too much work" messages"
serial: amba-pl011: fix regression, causing an Oops on rmmod
tty: Fix help text of SYNCLINK_CS
tty: fix memleak in alloc_pid
ttyprintk: Allow built as a module
ttyprintk: Fix wrong tty_unregister_driver() call in the error path
serial: 8250, disable "too much work" messages
Documentation/serial: Delete obsolete driver documentation
serial: omap: Fix missing pm_runtime_resume handling by simplifying code
serial_core: Fix pm imbalance on unbind
serial: pl011: change Rx burst size to half of trigger level
serial: timberdale: Depend on X86_32
serial: st-asc: Fix SysRq char handling
Revert "serial: clps711x: Give a chance to perform useful tasks during wait loop"
serial_core: Fix conditional start_tx on ring buffer not empty
serial: efm32: use $vendor,$device scheme for compatible string
serial: omap: free the wakeup settings in remove

+57 -907
+2 -2
Documentation/devicetree/bindings/serial/efm32-uart.txt
··· 1 1 * Energymicro efm32 UART 2 2 3 3 Required properties: 4 - - compatible : Should be "efm32,uart" 4 + - compatible : Should be "energymicro,efm32-uart" 5 5 - reg : Address and length of the register set 6 6 - interrupts : Should contain uart interrupt 7 7 ··· 13 13 Example: 14 14 15 15 uart@0x4000c400 { 16 - compatible = "efm32,uart"; 16 + compatible = "energymicro,efm32-uart"; 17 17 reg = <0x4000c400 0x400>; 18 18 interrupts = <15>; 19 19 efm32,location = <0>;
-13
Documentation/kernel-parameters.txt
··· 804 804 dhash_entries= [KNL] 805 805 Set number of hash buckets for dentry cache. 806 806 807 - digi= [HW,SERIAL] 808 - IO parameters + enable/disable command. 809 - 810 - digiepca= [HW,SERIAL] 811 - See drivers/char/README.epca and 812 - Documentation/serial/digiepca.txt. 813 - 814 807 disable= [IPV6] 815 808 See Documentation/networking/ipv6.txt. 816 809 ··· 2932 2939 rhash_entries= [KNL,NET] 2933 2940 Set number of hash buckets for route cache 2934 2941 2935 - riscom8= [HW,SERIAL] 2936 - Format: <io_board1>[,<io_board2>[,...<io_boardN>]] 2937 - 2938 2942 ro [KNL] Mount root device read-only on boot 2939 2943 2940 2944 root= [KNL] Root filesystem ··· 3072 3082 3073 3083 sonypi.*= [HW] Sony Programmable I/O Control Device driver 3074 3084 See Documentation/laptops/sonypi.txt 3075 - 3076 - specialix= [HW,SERIAL] Specialix multi-serial port adapter 3077 - See Documentation/serial/specialix.txt. 3078 3085 3079 3086 spia_io_base= [HW,MTD] 3080 3087 spia_fio_base=
-12
Documentation/magic-number.txt
··· 63 63 PG_MAGIC 'P' pg_{read,write}_hdr include/linux/pg.h 64 64 CMAGIC 0x0111 user include/linux/a.out.h 65 65 MKISS_DRIVER_MAGIC 0x04bf mkiss_channel drivers/net/mkiss.h 66 - RISCOM8_MAGIC 0x0907 riscom_port drivers/char/riscom8.h 67 - SPECIALIX_MAGIC 0x0907 specialix_port drivers/char/specialix_io8.h 68 66 HDLC_MAGIC 0x239e n_hdlc drivers/char/n_hdlc.c 69 67 APM_BIOS_MAGIC 0x4101 apm_user arch/x86/kernel/apm_32.c 70 68 CYCLADES_MAGIC 0x4359 cyclades_port include/linux/cyclades.h ··· 80 82 X25_ASY_MAGIC 0x5303 x25_asy drivers/net/x25_asy.h 81 83 SIXPACK_MAGIC 0x5304 sixpack drivers/net/hamradio/6pack.h 82 84 AX25_MAGIC 0x5316 ax_disp drivers/net/mkiss.h 83 - ESP_MAGIC 0x53ee esp_struct drivers/char/esp.h 84 85 TTY_MAGIC 0x5401 tty_struct include/linux/tty.h 85 86 MGSL_MAGIC 0x5401 mgsl_info drivers/char/synclink.c 86 87 TTY_DRIVER_MAGIC 0x5402 tty_driver include/linux/tty_driver.h ··· 91 94 RFCOMM_TTY_MAGIC 0x6d02 net/bluetooth/rfcomm/tty.c 92 95 USB_SERIAL_PORT_MAGIC 0x7301 usb_serial_port drivers/usb/serial/usb-serial.h 93 96 CG_MAGIC 0x00090255 ufs_cylinder_group include/linux/ufs_fs.h 94 - A2232_MAGIC 0x000a2232 gs_port drivers/char/ser_a2232.h 95 97 RPORT_MAGIC 0x00525001 r_port drivers/char/rocket_int.h 96 98 LSEMAGIC 0x05091998 lse drivers/fc4/fc.c 97 99 GDTIOCTL_MAGIC 0x06030f07 gdth_iowr_str drivers/scsi/gdth_ioctl.h 98 100 RIEBL_MAGIC 0x09051990 drivers/net/atarilance.c 99 - RIO_MAGIC 0x12345678 gs_port drivers/char/rio/rio_linux.c 100 - SX_MAGIC 0x12345678 gs_port drivers/char/sx.h 101 101 NBD_REQUEST_MAGIC 0x12560953 nbd_request include/linux/nbd.h 102 102 RED_MAGIC2 0x170fc2a5 (any) mm/slab.c 103 103 BAYCOM_MAGIC 0x19730510 baycom_state drivers/net/baycom_epp.c ··· 110 116 CTC_ASYNC_MAGIC 0x49344C01 ctc_tty_info drivers/s390/net/ctctty.c 111 117 ISDN_NET_MAGIC 0x49344C02 isdn_net_local_s drivers/isdn/i4l/isdn_net_lib.h 112 118 SAVEKMSG_MAGIC2 0x4B4D5347 savekmsg arch/*/amiga/config.c 113 - STLI_BOARDMAGIC 0x4bc6c825 stlibrd include/linux/istallion.h 114 119 CS_STATE_MAGIC 0x4c4f4749 cs_state sound/oss/cs46xx.c 115 120 SLAB_C_MAGIC 0x4f17a36d kmem_cache mm/slab.c 116 121 COW_MAGIC 0x4f4f4f4d cow_header_v1 arch/um/drivers/ubd_user.c ··· 120 127 SAVEKMSG_MAGIC1 0x53415645 savekmsg arch/*/amiga/config.c 121 128 GDA_MAGIC 0x58464552 gda arch/mips/include/asm/sn/gda.h 122 129 RED_MAGIC1 0x5a2cf071 (any) mm/slab.c 123 - STL_PORTMAGIC 0x5a7182c9 stlport include/linux/stallion.h 124 130 EEPROM_MAGIC_VALUE 0x5ab478d2 lanai_dev drivers/atm/lanai.c 125 131 HDLCDRV_MAGIC 0x5ac6e778 hdlcdrv_state include/linux/hdlcdrv.h 126 - EPCA_MAGIC 0x5c6df104 channel include/linux/epca.h 127 132 PCXX_MAGIC 0x5c6df104 channel drivers/char/pcxx.h 128 133 KV_MAGIC 0x5f4b565f kernel_vars_s arch/mips/include/asm/sn/klkernvars.h 129 134 I810_STATE_MAGIC 0x63657373 i810_state sound/oss/i810_audio.c ··· 133 142 LO_MAGIC 0x68797548 nbd_device include/linux/nbd.h 134 143 OPROFILE_MAGIC 0x6f70726f super_block drivers/oprofile/oprofilefs.h 135 144 M3_STATE_MAGIC 0x734d724d m3_state sound/oss/maestro3.c 136 - STL_PANELMAGIC 0x7ef621a1 stlpanel include/linux/stallion.h 137 145 VMALLOC_MAGIC 0x87654320 snd_alloc_track sound/core/memory.c 138 146 KMALLOC_MAGIC 0x87654321 snd_alloc_track sound/core/memory.c 139 147 PWC_MAGIC 0x89DC10AB pwc_device drivers/usb/media/pwc.h 140 148 NBD_REPLY_MAGIC 0x96744668 nbd_reply include/linux/nbd.h 141 - STL_BOARDMAGIC 0xa2267f52 stlbrd include/linux/stallion.h 142 149 ENI155_MAGIC 0xa54b872d midway_eprom drivers/atm/eni.h 143 150 SCI_MAGIC 0xbabeface gs_port drivers/char/sh-sci.h 144 151 CODA_MAGIC 0xC0DAC0DA coda_file_info fs/coda/coda_fs_i.h 145 152 DPMEM_MAGIC 0xc0ffee11 gdt_pci_sram drivers/scsi/gdth.h 146 - STLI_PORTMAGIC 0xe671c7a1 stliport include/linux/istallion.h 147 153 YAM_MAGIC 0xF10A7654 yam_port drivers/net/hamradio/yam.c 148 154 CCB_MAGIC 0xf2691ad2 ccb drivers/scsi/ncr53c8xx.c 149 155 QUEUE_MAGIC_FREE 0xf7e1c9a3 queue_entry drivers/scsi/arm/queue.c
-8
Documentation/serial/00-INDEX
··· 2 2 - this file. 3 3 README.cycladesZ 4 4 - info on Cyclades-Z firmware loading. 5 - digiepca.txt 6 - - info on Digi Intl. {PC,PCI,EISA}Xx and Xem series cards. 7 5 driver 8 6 - intro to the low level serial driver. 9 7 moxa-smartio 10 8 - file with info on installing/using Moxa multiport serial driver. 11 9 n_gsm.txt 12 10 - GSM 0710 tty multiplexer howto. 13 - riscom8.txt 14 - - notes on using the RISCom/8 multi-port serial driver. 15 11 rocket.txt 16 12 - info on the Comtrol RocketPort multiport serial driver. 17 13 serial-rs485.txt 18 14 - info about RS485 structures and support in the kernel. 19 - specialix.txt 20 - - info on hardware/driver for specialix IO8+ multiport serial card. 21 - sx.txt 22 - - info on the Specialix SX/SI multiport serial driver. 23 15 tty.txt 24 16 - guide to the locking policies of the tty layer.
-98
Documentation/serial/digiepca.txt
··· 1 - NOTE: This driver is obsolete. Digi provides a 2.6 driver (dgdm) at 2 - http://www.digi.com for PCI cards. They no longer maintain this driver, 3 - and have no 2.6 driver for ISA cards. 4 - 5 - This driver requires a number of user-space tools. They can be acquired from 6 - http://www.digi.com, but only works with 2.4 kernels. 7 - 8 - 9 - The Digi Intl. epca driver. 10 - ---------------------------- 11 - The Digi Intl. epca driver for Linux supports the following boards: 12 - 13 - Digi PC/Xem, PC/Xr, PC/Xe, PC/Xi, PC/Xeve 14 - Digi EISA/Xem, PCI/Xem, PCI/Xr 15 - 16 - Limitations: 17 - ------------ 18 - Currently the driver only autoprobes for supported PCI boards. 19 - 20 - The Linux MAKEDEV command does not support generating the Digiboard 21 - Devices. Users executing digiConfig to setup EISA and PC series cards 22 - will have their device nodes automatically constructed (cud?? for ~CLOCAL, 23 - and ttyD?? for CLOCAL). Users wishing to boot their board from the LILO 24 - prompt, or those users booting PCI cards may use buildDIGI to construct 25 - the necessary nodes. 26 - 27 - Notes: 28 - ------ 29 - This driver may be configured via LILO. For users who have already configured 30 - their driver using digiConfig, configuring from LILO will override previous 31 - settings. Multiple boards may be configured by issuing multiple LILO command 32 - lines. For examples see the bottom of this document. 33 - 34 - Device names start at 0 and continue up. Beware of this as previous Digi 35 - drivers started device names with 1. 36 - 37 - PCI boards are auto-detected and configured by the driver. PCI boards will 38 - be allocated device numbers (internally) beginning with the lowest PCI slot 39 - first. In other words a PCI card in slot 3 will always have higher device 40 - nodes than a PCI card in slot 1. 41 - 42 - LILO config examples: 43 - --------------------- 44 - Using LILO's APPEND command, a string of comma separated identifiers or 45 - integers can be used to configure supported boards. The six values in order 46 - are: 47 - 48 - Enable/Disable this card or Override, 49 - Type of card: PC/Xe (AccelePort) (0), PC/Xeve (1), PC/Xem or PC/Xr (2), 50 - EISA/Xem (3), PC/64Xe (4), PC/Xi (5), 51 - Enable/Disable alternate pin arrangement, 52 - Number of ports on this card, 53 - I/O Port where card is configured (in HEX if using string identifiers), 54 - Base of memory window (in HEX if using string identifiers), 55 - 56 - NOTE : PCI boards are auto-detected and configured. Do not attempt to 57 - configure PCI boards with the LILO append command. If you wish to override 58 - previous configuration data (As set by digiConfig), but you do not wish to 59 - configure any specific card (Example if there are PCI cards in the system) 60 - the following override command will accomplish this: 61 - -> append="digi=2" 62 - 63 - Samples: 64 - append="digiepca=E,PC/Xe,D,16,200,D0000" 65 - or 66 - append="digi=1,0,0,16,512,851968" 67 - 68 - Supporting Tools: 69 - ----------------- 70 - Supporting tools include digiDload, digiConfig, buildPCI, and ditty. See 71 - drivers/char/README.epca for more details. Note, 72 - this driver REQUIRES that digiDload be executed prior to it being used. 73 - Failure to do this will result in an ENODEV error. 74 - 75 - Documentation: 76 - -------------- 77 - Complete documentation for this product may be found in the tool package. 78 - 79 - Sources of information and support: 80 - ----------------------------------- 81 - Digi Intl. support site for this product: 82 - 83 - -> http://www.digi.com 84 - 85 - Acknowledgments: 86 - ---------------- 87 - Much of this work (And even text) was derived from a similar document 88 - supporting the original public domain DigiBoard driver Copyright (C) 89 - 1994,1995 Troy De Jongh. Many thanks to Christoph Lameter 90 - (christoph@lameter.com) and Mike McLagan (mike.mclagan@linux.org) who authored 91 - and contributed to the original document. 92 - 93 - Changelog: 94 - ---------- 95 - 10-29-04: Update status of driver, remove dead links in document 96 - James Nelson <james4765@gmail.com> 97 - 98 - 2000 (?) Original Document
-36
Documentation/serial/riscom8.txt
··· 1 - * NOTE - this is an unmaintained driver. The original author cannot be located. 2 - 3 - SDL Communications is now SBS Technologies, and does not have any 4 - information on these ancient ISA cards on their website. 5 - 6 - James Nelson <james4765@gmail.com> - 12-12-2004 7 - 8 - This is the README for RISCom/8 multi-port serial driver 9 - (C) 1994-1996 D.Gorodchanin 10 - See file LICENSE for terms and conditions. 11 - 12 - NOTE: English is not my native language. 13 - I'm sorry for any mistakes in this text. 14 - 15 - Misc. notes for RISCom/8 serial driver, in no particular order :) 16 - 17 - 1) This driver can support up to 4 boards at time. 18 - Use string "riscom8=0xXXX,0xXXX,0xXXX,0xXXX" at LILO prompt, for 19 - setting I/O base addresses for boards. If you compile driver 20 - as module use modprobe options "iobase=0xXXX iobase1=0xXXX iobase2=..." 21 - 22 - 2) The driver partially supports famous 'setserial' program, you can use almost 23 - any of its options, excluding port & irq settings. 24 - 25 - 3) There are some misc. defines at the beginning of riscom8.c, please read the 26 - comments and try to change some of them in case of problems. 27 - 28 - 4) I consider the current state of the driver as BETA. 29 - 30 - 5) SDL Communications WWW page is http://www.sdlcomm.com. 31 - 32 - 6) You can use the MAKEDEV program to create RISCom/8 /dev/ttyL* entries. 33 - 34 - 7) Minor numbers for first board are 0-7, for second 8-15, etc. 35 - 36 - 22 Apr 1996.
-383
Documentation/serial/specialix.txt
··· 1 - 2 - specialix.txt -- specialix IO8+ multiport serial driver readme. 3 - 4 - 5 - 6 - Copyright (C) 1997 Roger Wolff (R.E.Wolff@BitWizard.nl) 7 - 8 - Specialix pays for the development and support of this driver. 9 - Please DO contact io8-linux@specialix.co.uk if you require 10 - support. 11 - 12 - This driver was developed in the BitWizard linux device 13 - driver service. If you require a linux device driver for your 14 - product, please contact devices@BitWizard.nl for a quote. 15 - 16 - This code is firmly based on the riscom/8 serial driver, 17 - written by Dmitry Gorodchanin. The specialix IO8+ card 18 - programming information was obtained from the CL-CD1865 Data 19 - Book, and Specialix document number 6200059: IO8+ Hardware 20 - Functional Specification, augmented by document number 6200088: 21 - Merak Hardware Functional Specification. (IO8+/PCI is also 22 - called Merak) 23 - 24 - 25 - This program is free software; you can redistribute it and/or 26 - modify it under the terms of the GNU General Public License as 27 - published by the Free Software Foundation; either version 2 of 28 - the License, or (at your option) any later version. 29 - 30 - This program is distributed in the hope that it will be 31 - useful, but WITHOUT ANY WARRANTY; without even the implied 32 - warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 33 - PURPOSE. See the GNU General Public License for more details. 34 - 35 - You should have received a copy of the GNU General Public 36 - License along with this program; if not, write to the Free 37 - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, 38 - USA. 39 - 40 - 41 - Intro 42 - ===== 43 - 44 - 45 - This file contains some random information, that I like to have online 46 - instead of in a manual that can get lost. Ever misplace your Linux 47 - kernel sources? And the manual of one of the boards in your computer? 48 - 49 - 50 - Addresses and interrupts 51 - ======================== 52 - 53 - Address dip switch settings: 54 - The dip switch sets bits 2-9 of the IO address. 55 - 56 - 9 8 7 6 5 4 3 2 57 - +-----------------+ 58 - 0 | X X X X X X X | 59 - | | = IoBase = 0x100 60 - 1 | X | 61 - +-----------------+ ------ RS232 connectors ----> 62 - 63 - | | | 64 - edge connector 65 - | | | 66 - V V V 67 - 68 - Base address 0x100 caused a conflict in one of my computers once. I 69 - haven't the foggiest why. My Specialix card is now at 0x180. My 70 - other computer runs just fine with the Specialix card at 0x100.... 71 - The card occupies 4 addresses, but actually only two are really used. 72 - 73 - The PCI version doesn't have any dip switches. The BIOS assigns 74 - an IO address. 75 - 76 - The driver now still autoprobes at 0x100, 0x180, 0x250 and 0x260. If 77 - that causes trouble for you, please report that. I'll remove 78 - autoprobing then. 79 - 80 - The driver will tell the card what IRQ to use, so you don't have to 81 - change any jumpers to change the IRQ. Just use a command line 82 - argument (irq=xx) to the insmod program to set the interrupt. 83 - 84 - The BIOS assigns the IRQ on the PCI version. You have no say in what 85 - IRQ to use in that case. 86 - 87 - If your specialix cards are not at the default locations, you can use 88 - the kernel command line argument "specialix=io0,irq0,io1,irq1...". 89 - Here "io0" is the io address for the first card, and "irq0" is the 90 - irq line that the first card should use. And so on. 91 - 92 - Examples. 93 - 94 - You use the driver as a module and have three cards at 0x100, 0x250 95 - and 0x180. And some way or another you want them detected in that 96 - order. Moreover irq 12 is taken (e.g. by your PS/2 mouse). 97 - 98 - insmod specialix.o iobase=0x100,0x250,0x180 irq=9,11,15 99 - 100 - The same three cards, but now in the kernel would require you to 101 - add 102 - 103 - specialix=0x100,9,0x250,11,0x180,15 104 - 105 - to the command line. This would become 106 - 107 - append="specialix=0x100,9,0x250,11,0x180,15" 108 - 109 - in your /etc/lilo.conf file if you use lilo. 110 - 111 - The Specialix driver is slightly odd: It allows you to have the second 112 - or third card detected without having a first card. This has 113 - advantages and disadvantages. A slot that isn't filled by an ISA card, 114 - might be filled if a PCI card is detected. Thus if you have an ISA 115 - card at 0x250 and a PCI card, you would get: 116 - 117 - sx0: specialix IO8+ Board at 0x100 not found. 118 - sx1: specialix IO8+ Board at 0x180 not found. 119 - sx2: specialix IO8+ board detected at 0x250, IRQ 12, CD1865 Rev. B. 120 - sx3: specialix IO8+ Board at 0x260 not found. 121 - sx0: specialix IO8+ board detected at 0xd800, IRQ 9, CD1865 Rev. B. 122 - 123 - This would happen if you don't give any probe hints to the driver. 124 - If you would specify: 125 - 126 - specialix=0x250,11 127 - 128 - you'd get the following messages: 129 - 130 - sx0: specialix IO8+ board detected at 0x250, IRQ 11, CD1865 Rev. B. 131 - sx1: specialix IO8+ board detected at 0xd800, IRQ 9, CD1865 Rev. B. 132 - 133 - ISA probing is aborted after the IO address you gave is exhausted, and 134 - the PCI card is now detected as the second card. The ISA card is now 135 - also forced to IRQ11.... 136 - 137 - 138 - Baud rates 139 - ========== 140 - 141 - The rev 1.2 and below boards use a CL-CD1864. These chips can only 142 - do 64kbit. The rev 1.3 and newer boards use a CL-CD1865. These chips 143 - are officially capable of 115k2. 144 - 145 - The Specialix card uses a 25MHz crystal (in times two mode, which in 146 - fact is a divided by two mode). This is not enough to reach the rated 147 - 115k2 on all ports at the same time. With this clock rate you can only 148 - do 37% of this rate. This means that at 115k2 on all ports you are 149 - going to lose characters (The chip cannot handle that many incoming 150 - bits at this clock rate.) (Yes, you read that correctly: there is a 151 - limit to the number of -=bits=- per second that the chip can handle.) 152 - 153 - If you near the "limit" you will first start to see a graceful 154 - degradation in that the chip cannot keep the transmitter busy at all 155 - times. However with a central clock this slow, you can also get it to 156 - miss incoming characters. The driver will print a warning message when 157 - you are outside the official specs. The messages usually show up in 158 - the file /var/log/messages . 159 - 160 - The specialix card cannot reliably do 115k2. If you use it, you have 161 - to do "extensive testing" (*) to verify if it actually works. 162 - 163 - When "mgetty" communicates with my modem at 115k2 it reports: 164 - got: +++[0d]ATQ0V1H0[0d][0d][8a]O[cb][0d][8a] 165 - ^^^^ ^^^^ ^^^^ 166 - 167 - The three characters that have the "^^^" under them have suffered a 168 - bit error in the highest bit. In conclusion: I've tested it, and found 169 - that it simply DOESN'T work for me. I also suspect that this is also 170 - caused by the baud rate being just a little bit out of tune. 171 - 172 - I upgraded the crystal to 66Mhz on one of my Specialix cards. Works 173 - great! Contact me for details. (Voids warranty, requires a steady hand 174 - and more such restrictions....) 175 - 176 - 177 - (*) Cirrus logic CD1864 databook, page 40. 178 - 179 - 180 - Cables for the Specialix IO8+ 181 - ============================= 182 - 183 - The pinout of the connectors on the IO8+ is: 184 - 185 - pin short direction long name 186 - name 187 - Pin 1 DCD input Data Carrier Detect 188 - Pin 2 RXD input Receive 189 - Pin 3 DTR/RTS output Data Terminal Ready/Ready To Send 190 - Pin 4 GND - Ground 191 - Pin 5 TXD output Transmit 192 - Pin 6 CTS input Clear To Send 193 - 194 - 195 - -- 6 5 4 3 2 1 -- 196 - | | 197 - | | 198 - | | 199 - | | 200 - +----- -----+ 201 - |__________| 202 - clip 203 - 204 - Front view of an RJ12 connector. Cable moves "into" the paper. 205 - (the plug is ready to plug into your mouth this way...) 206 - 207 - 208 - NULL cable. I don't know who is going to use these except for 209 - testing purposes, but I tested the cards with this cable. (It 210 - took quite a while to figure out, so I'm not going to delete 211 - it. So there! :-) 212 - 213 - 214 - This end goes This end needs 215 - straight into the some twists in 216 - RJ12 plug. the wiring. 217 - IO8+ RJ12 IO8+ RJ12 218 - 1 DCD white - 219 - - - 1 DCD 220 - 2 RXD black 5 TXD 221 - 3 DTR/RTS red 6 CTS 222 - 4 GND green 4 GND 223 - 5 TXD yellow 2 RXD 224 - 6 CTS blue 3 DTR/RTS 225 - 226 - 227 - Same NULL cable, but now sorted on the second column. 228 - 229 - 1 DCD white - 230 - - - 1 DCD 231 - 5 TXD yellow 2 RXD 232 - 6 CTS blue 3 DTR/RTS 233 - 4 GND green 4 GND 234 - 2 RXD black 5 TXD 235 - 3 DTR/RTS red 6 CTS 236 - 237 - 238 - 239 - This is a modem cable usable for hardware handshaking: 240 - RJ12 DB25 DB9 241 - 1 DCD white 8 DCD 1 DCD 242 - 2 RXD black 3 RXD 2 RXD 243 - 3 DTR/RTS red 4 RTS 7 RTS 244 - 4 GND green 7 GND 5 GND 245 - 5 TXD yellow 2 TXD 3 TXD 246 - 6 CTS blue 5 CTS 8 CTS 247 - +---- 6 DSR 6 DSR 248 - +---- 20 DTR 4 DTR 249 - 250 - This is a modem cable usable for software handshaking: 251 - It allows you to reset the modem using the DTR ioctls. 252 - I (REW) have never tested this, "but xxxxxxxxxxxxx 253 - says that it works." If you test this, please 254 - tell me and I'll fill in your name on the xxx's. 255 - 256 - RJ12 DB25 DB9 257 - 1 DCD white 8 DCD 1 DCD 258 - 2 RXD black 3 RXD 2 RXD 259 - 3 DTR/RTS red 20 DTR 4 DTR 260 - 4 GND green 7 GND 5 GND 261 - 5 TXD yellow 2 TXD 3 TXD 262 - 6 CTS blue 5 CTS 8 CTS 263 - +---- 6 DSR 6 DSR 264 - +---- 4 RTS 7 RTS 265 - 266 - I bought a 6 wire flat cable. It was colored as indicated. 267 - Check that yours is the same before you trust me on this. 268 - 269 - 270 - Hardware handshaking issues. 271 - ============================ 272 - 273 - The driver can be told to operate in two different ways. The default 274 - behaviour is specialix.sx_rtscts = 0 where the pin behaves as DTR when 275 - hardware handshaking is off. It behaves as the RTS hardware 276 - handshaking signal when hardware handshaking is selected. 277 - 278 - When you use this, you have to use the appropriate cable. The 279 - cable will either be compatible with hardware handshaking or with 280 - software handshaking. So switching on the fly is not really an 281 - option. 282 - 283 - I actually prefer to use the "specialix.sx_rtscts=1" option. 284 - This makes the DTR/RTS pin always an RTS pin, and ioctls to 285 - change DTR are always ignored. I have a cable that is configured 286 - for this. 287 - 288 - 289 - Ports and devices 290 - ================= 291 - 292 - Port 0 is the one furthest from the card-edge connector. 293 - 294 - Devices: 295 - 296 - You should make the devices as follows: 297 - 298 - bash 299 - cd /dev 300 - for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 \ 301 - 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 302 - do 303 - echo -n "$i " 304 - mknod /dev/ttyW$i c 75 $i 305 - mknod /dev/cuw$i c 76 $i 306 - done 307 - echo "" 308 - 309 - If your system doesn't come with these devices preinstalled, bug your 310 - linux-vendor about this. They have had ample time to get this 311 - implemented by now. 312 - 313 - You cannot have more than 4 boards in one computer. The card only 314 - supports 4 different interrupts. If you really want this, contact me 315 - about this and I'll give you a few tips (requires soldering iron).... 316 - 317 - If you have enough PCI slots, you can probably use more than 4 PCI 318 - versions of the card though.... 319 - 320 - The PCI version of the card cannot adhere to the mechanical part of 321 - the PCI spec because the 8 serial connectors are simply too large. If 322 - it doesn't fit in your computer, bring back the card. 323 - 324 - 325 - ------------------------------------------------------------------------ 326 - 327 - 328 - Fixed bugs and restrictions: 329 - - During initialization, interrupts are blindly turned on. 330 - Having a shadow variable would cause an extra memory 331 - access on every IO instruction. 332 - - The interrupt (on the card) should be disabled when we 333 - don't allocate the Linux end of the interrupt. This allows 334 - a different driver/card to use it while all ports are not in 335 - use..... (a la standard serial port) 336 - == An extra _off variant of the sx_in and sx_out macros are 337 - now available. They don't set the interrupt enable bit. 338 - These are used during initialization. Normal operation uses 339 - the old variant which enables the interrupt line. 340 - - RTS/DTR issue needs to be implemented according to 341 - specialix' spec. 342 - I kind of like the "determinism" of the current 343 - implementation. Compile time flag? 344 - == Ok. Compile time flag! Default is how Specialix likes it. 345 - == Now a config time flag! Gets saved in your config file. Neat! 346 - - Can you set the IO address from the lilo command line? 347 - If you need this, bug me about it, I'll make it. 348 - == Hah! No bugging needed. Fixed! :-) 349 - - Cirrus logic hasn't gotten back to me yet why the CD1865 can 350 - and the CD1864 can't do 115k2. I suspect that this is 351 - because the CD1864 is not rated for 33MHz operation. 352 - Therefore the CD1864 versions of the card can't do 115k2 on 353 - all ports just like the CD1865 versions. The driver does 354 - not block 115k2 on CD1864 cards. 355 - == I called the Cirrus Logic representative here in Holland. 356 - The CD1864 databook is identical to the CD1865 databook, 357 - except for an extra warning at the end. Similar Bit errors 358 - have been observed in testing at 115k2 on both an 1865 and 359 - a 1864 chip. I see no reason why I would prohibit 115k2 on 360 - 1864 chips and not do it on 1865 chips. Actually there is 361 - reason to prohibit it on BOTH chips. I print a warning. 362 - If you use 115k2, you're on your own. 363 - - A spiky CD may send spurious HUPs. Also in CLOCAL??? 364 - -- A fix for this turned out to be counter productive. 365 - Different fix? Current behaviour is acceptable? 366 - -- Maybe the current implementation is correct. If anybody 367 - gets bitten by this, please report, and it will get fixed. 368 - 369 - -- Testing revealed that when in CLOCAL, the problem doesn't 370 - occur. As warned for in the CD1865 manual, the chip may 371 - send modem intr's on a spike. We could filter those out, 372 - but that would be a cludge anyway (You'd still risk getting 373 - a spurious HUP when two spikes occur.)..... 374 - 375 - 376 - 377 - Bugs & restrictions: 378 - - This is a difficult card to autoprobe. 379 - You have to WRITE to the address register to even 380 - read-probe a CD186x register. Disable autodetection? 381 - -- Specialix: any suggestions? 382 - 383 -
-294
Documentation/serial/sx.txt
··· 1 - 2 - sx.txt -- specialix SX/SI multiport serial driver readme. 3 - 4 - 5 - 6 - Copyright (C) 1997 Roger Wolff (R.E.Wolff@BitWizard.nl) 7 - 8 - Specialix pays for the development and support of this driver. 9 - Please DO contact support@specialix.co.uk if you require 10 - support. 11 - 12 - This driver was developed in the BitWizard linux device 13 - driver service. If you require a linux device driver for your 14 - product, please contact devices@BitWizard.nl for a quote. 15 - 16 - (History) 17 - There used to be an SI driver by Simon Allan. This is a complete 18 - rewrite from scratch. Just a few lines-of-code have been snatched. 19 - 20 - (Sources) 21 - Specialix document number 6210028: SX Host Card and Download Code 22 - Software Functional Specification. 23 - 24 - (Copying) 25 - This program is free software; you can redistribute it and/or 26 - modify it under the terms of the GNU General Public License as 27 - published by the Free Software Foundation; either version 2 of 28 - the License, or (at your option) any later version. 29 - 30 - This program is distributed in the hope that it will be 31 - useful, but WITHOUT ANY WARRANTY; without even the implied 32 - warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 33 - PURPOSE. See the GNU General Public License for more details. 34 - 35 - You should have received a copy of the GNU General Public 36 - License along with this program; if not, write to the Free 37 - Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, 38 - USA. 39 - 40 - (Addendum) 41 - I'd appreciate it that if you have fixes, that you send them 42 - to me first. 43 - 44 - 45 - Introduction 46 - ============ 47 - 48 - This file contains some random information, that I like to have online 49 - instead of in a manual that can get lost. Ever misplace your Linux 50 - kernel sources? And the manual of one of the boards in your computer? 51 - 52 - 53 - Theory of operation 54 - =================== 55 - 56 - An important thing to know is that the driver itself doesn't have the 57 - firmware for the card. This means that you need the separate package 58 - "sx_firmware". For now you can get the source at 59 - 60 - ftp://ftp.bitwizard.nl/specialix/sx_firmware_<version>.tgz 61 - 62 - The firmware load needs a "misc" device, so you'll need to enable the 63 - "Support for user misc device modules" in your kernel configuration. 64 - The misc device needs to be called "/dev/specialix_sxctl". It needs 65 - misc major 10, and minor number 167 (assigned by HPA). The section 66 - on creating device files below also creates this device. 67 - 68 - After loading the sx.o module into your kernel, the driver will report 69 - the number of cards detected, but because it doesn't have any 70 - firmware, it will not be able to determine the number of ports. Only 71 - when you then run "sx_firmware" will the firmware be downloaded and 72 - the rest of the driver initialized. At that time the sx_firmware 73 - program will report the number of ports installed. 74 - 75 - In contrast with many other multi port serial cards, some of the data 76 - structures are only allocated when the card knows the number of ports 77 - that are connected. This means we won't waste memory for 120 port 78 - descriptor structures when you only have 8 ports. If you experience 79 - problems due to this, please report them: I haven't seen any. 80 - 81 - 82 - Interrupts 83 - ========== 84 - 85 - A multi port serial card, would generate a horrendous amount of 86 - interrupts if it would interrupt the CPU for every received 87 - character. Even more than 10 years ago, the trick not to use 88 - interrupts but to poll the serial cards was invented. 89 - 90 - The SX card allow us to do this two ways. First the card limits its 91 - own interrupt rate to a rate that won't overwhelm the CPU. Secondly, 92 - we could forget about the cards interrupt completely and use the 93 - internal timer for this purpose. 94 - 95 - Polling the card can take up to a few percent of your CPU. Using the 96 - interrupts would be better if you have most of the ports idle. Using 97 - timer-based polling is better if your card almost always has work to 98 - do. You save the separate interrupt in that case. 99 - 100 - In any case, it doesn't really matter all that much. 101 - 102 - The most common problem with interrupts is that for ISA cards in a PCI 103 - system the BIOS has to be told to configure that interrupt as "legacy 104 - ISA". Otherwise the card can pull on the interrupt line all it wants 105 - but the CPU won't see this. 106 - 107 - If you can't get the interrupt to work, remember that polling mode is 108 - more efficient (provided you actually use the card intensively). 109 - 110 - 111 - Allowed Configurations 112 - ====================== 113 - 114 - Some configurations are disallowed. Even though at a glance they might 115 - seem to work, they are known to lockup the bus between the host card 116 - and the device concentrators. You should respect the drivers decision 117 - not to support certain configurations. It's there for a reason. 118 - 119 - Warning: Seriously technical stuff ahead. Executive summary: Don't use 120 - SX cards except configured at a 64k boundary. Skip the next paragraph. 121 - 122 - The SX cards can theoretically be placed at a 32k boundary. So for 123 - instance you can put an SX card at 0xc8000-0xd7fff. This is not a 124 - "recommended configuration". ISA cards have to tell the bus controller 125 - how they like their timing. Due to timing issues they have to do this 126 - based on which 64k window the address falls into. This means that the 127 - 32k window below and above the SX card have to use exactly the same 128 - timing as the SX card. That reportedly works for other SX cards. But 129 - you're still left with two useless 32k windows that should not be used 130 - by anybody else. 131 - 132 - 133 - Configuring the driver 134 - ====================== 135 - 136 - PCI cards are always detected. The driver auto-probes for ISA cards at 137 - some sensible addresses. Please report if the auto-probe causes trouble 138 - in your system, or when a card isn't detected. 139 - 140 - I'm afraid I haven't implemented "kernel command line parameters" yet. 141 - This means that if the default doesn't work for you, you shouldn't use 142 - the compiled-into-the-kernel version of the driver. Use a module 143 - instead. If you convince me that you need this, I'll make it for 144 - you. Deal? 145 - 146 - I'm afraid that the module parameters are a bit clumsy. If you have a 147 - better idea, please tell me. 148 - 149 - You can specify several parameters: 150 - 151 - sx_poll: number of jiffies between timer-based polls. 152 - 153 - Set this to "0" to disable timer based polls. 154 - Initialization of cards without a working interrupt 155 - will fail. 156 - 157 - Set this to "1" if you want a polling driver. 158 - (on Intel: 100 polls per second). If you don't use 159 - fast baud rates, you might consider a value like "5". 160 - (If you don't know how to do the math, use 1). 161 - 162 - sx_slowpoll: Number of jiffies between timer-based polls. 163 - Set this to "100" to poll once a second. 164 - This should get the card out of a stall if the driver 165 - ever misses an interrupt. I've never seen this happen, 166 - and if it does, that's a bug. Tell me. 167 - 168 - sx_maxints: Number of interrupts to request from the card. 169 - The card normally limits interrupts to about 100 per 170 - second to offload the host CPU. You can increase this 171 - number to reduce latency on the card a little. 172 - Note that if you give a very high number you can overload 173 - your CPU as well as the CPU on the host card. This setting 174 - is inaccurate and not recommended for SI cards (But it 175 - works). 176 - 177 - sx_irqmask: The mask of allowable IRQs to use. I suggest you set 178 - this to 0 (disable IRQs all together) and use polling if 179 - the assignment of IRQs becomes problematic. This is defined 180 - as the sum of (1 << irq) 's that you want to allow. So 181 - sx_irqmask of 8 (1 << 3) specifies that only irq 3 may 182 - be used by the SX driver. If you want to specify to the 183 - driver: "Either irq 11 or 12 is ok for you to use", then 184 - specify (1 << 11) | (1 << 12) = 0x1800 . 185 - 186 - sx_debug: You can enable different sorts of debug traces with this. 187 - At "-1" all debugging traces are active. You'll get several 188 - times more debugging output than you'll get characters 189 - transmitted. 190 - 191 - 192 - Baud rates 193 - ========== 194 - 195 - Theoretically new SXDCs should be capable of more than 460k 196 - baud. However the line drivers usually give up before that. Also the 197 - CPU on the card may not be able to handle 8 channels going at full 198 - blast at that speed. Moreover, the buffers are not large enough to 199 - allow operation with 100 interrupts per second. You'll have to realize 200 - that the card has a 256 byte buffer, so you'll have to increase the 201 - number of interrupts per second if you have more than 256*100 bytes 202 - per second to transmit. If you do any performance testing in this 203 - area, I'd be glad to hear from you... 204 - 205 - (Psst Linux users..... I think the Linux driver is more efficient than 206 - the driver for other OSes. If you can and want to benchmark them 207 - against each other, be my guest, and report your findings...... :-) 208 - 209 - 210 - Ports and devices 211 - ================= 212 - 213 - Port 0 is the top connector on the module closest to the host 214 - card. Oh, the ports on the SXDCs and TAs are labelled from 1 to 8 215 - instead of from 0 to 7, as they are numbered by linux. I'm stubborn in 216 - this: I know for sure that I wouldn't be able to calculate which port 217 - is which anymore if I would change that.... 218 - 219 - 220 - Devices: 221 - 222 - You should make the device files as follows: 223 - 224 - #!/bin/sh 225 - # (I recommend that you cut-and-paste this into a file and run that) 226 - cd /dev 227 - t=0 228 - mknod specialix_sxctl c 10 167 229 - while [ $t -lt 64 ] 230 - do 231 - echo -n "$t " 232 - mknod ttyX$t c 32 $t 233 - mknod cux$t c 33 $t 234 - t=`expr $t + 1` 235 - done 236 - echo "" 237 - rm /etc/psdevtab 238 - ps > /dev/null 239 - 240 - 241 - This creates 64 devices. If you have more, increase the constant on 242 - the line with "while". The devices start at 0, as is customary on 243 - Linux. Specialix seems to like starting the numbering at 1. 244 - 245 - If your system doesn't come with these devices pre-installed, bug your 246 - linux-vendor about this. They should have these devices 247 - "pre-installed" before the new millennium. The "ps" stuff at the end 248 - is to "tell" ps that the new devices exist. 249 - 250 - Officially the maximum number of cards per computer is 4. This driver 251 - however supports as many cards in one machine as you want. You'll run 252 - out of interrupts after a few, but you can switch to polled operation 253 - then. At about 256 ports (More than 8 cards), we run out of minor 254 - device numbers. Sorry. I suggest you buy a second computer.... (Or 255 - switch to RIO). 256 - 257 - ------------------------------------------------------------------------ 258 - 259 - 260 - Fixed bugs and restrictions: 261 - - Hangup processing. 262 - -- Done. 263 - 264 - - the write path in generic_serial (lockup / oops). 265 - -- Done (Ugly: not the way I want it. Copied from serial.c). 266 - 267 - - write buffer isn't flushed at close. 268 - -- Done. I still seem to lose a few chars at close. 269 - Sorry. I think that this is a firmware issue. (-> Specialix) 270 - 271 - - drain hardware before changing termios 272 - - Change debug on the fly. 273 - - ISA free irq -1. (no firmware loaded). 274 - - adding c8000 as a probe address. Added warning. 275 - - Add a RAMtest for the RAM on the card.c 276 - - Crash when opening a port "way" of the number of allowed ports. 277 - (for example opening port 60 when there are only 24 ports attached) 278 - - Sometimes the use-count strays a bit. After a few hours of 279 - testing the use count is sometimes "3". If you are not like 280 - me and can remember what you did to get it that way, I'd 281 - appreciate an Email. Possibly fixed. Tell me if anyone still 282 - sees this. 283 - - TAs don't work right if you don't connect all the modem control 284 - signals. SXDCs do. T225 firmware problem -> Specialix. 285 - (Mostly fixed now, I think. Tell me if you encounter this!) 286 - 287 - Bugs & restrictions: 288 - 289 - - Arbitrary baud rates. Requires firmware update. (-> Specialix) 290 - 291 - - Low latency (mostly firmware, -> Specialix) 292 - 293 - 294 -
-12
Documentation/zh_CN/magic-number.txt
··· 63 63 PG_MAGIC 'P' pg_{read,write}_hdr include/linux/pg.h 64 64 CMAGIC 0x0111 user include/linux/a.out.h 65 65 MKISS_DRIVER_MAGIC 0x04bf mkiss_channel drivers/net/mkiss.h 66 - RISCOM8_MAGIC 0x0907 riscom_port drivers/char/riscom8.h 67 - SPECIALIX_MAGIC 0x0907 specialix_port drivers/char/specialix_io8.h 68 66 HDLC_MAGIC 0x239e n_hdlc drivers/char/n_hdlc.c 69 67 APM_BIOS_MAGIC 0x4101 apm_user arch/x86/kernel/apm_32.c 70 68 CYCLADES_MAGIC 0x4359 cyclades_port include/linux/cyclades.h ··· 80 82 X25_ASY_MAGIC 0x5303 x25_asy drivers/net/x25_asy.h 81 83 SIXPACK_MAGIC 0x5304 sixpack drivers/net/hamradio/6pack.h 82 84 AX25_MAGIC 0x5316 ax_disp drivers/net/mkiss.h 83 - ESP_MAGIC 0x53ee esp_struct drivers/char/esp.h 84 85 TTY_MAGIC 0x5401 tty_struct include/linux/tty.h 85 86 MGSL_MAGIC 0x5401 mgsl_info drivers/char/synclink.c 86 87 TTY_DRIVER_MAGIC 0x5402 tty_driver include/linux/tty_driver.h ··· 91 94 RFCOMM_TTY_MAGIC 0x6d02 net/bluetooth/rfcomm/tty.c 92 95 USB_SERIAL_PORT_MAGIC 0x7301 usb_serial_port drivers/usb/serial/usb-serial.h 93 96 CG_MAGIC 0x00090255 ufs_cylinder_group include/linux/ufs_fs.h 94 - A2232_MAGIC 0x000a2232 gs_port drivers/char/ser_a2232.h 95 97 RPORT_MAGIC 0x00525001 r_port drivers/char/rocket_int.h 96 98 LSEMAGIC 0x05091998 lse drivers/fc4/fc.c 97 99 GDTIOCTL_MAGIC 0x06030f07 gdth_iowr_str drivers/scsi/gdth_ioctl.h 98 100 RIEBL_MAGIC 0x09051990 drivers/net/atarilance.c 99 - RIO_MAGIC 0x12345678 gs_port drivers/char/rio/rio_linux.c 100 - SX_MAGIC 0x12345678 gs_port drivers/char/sx.h 101 101 NBD_REQUEST_MAGIC 0x12560953 nbd_request include/linux/nbd.h 102 102 RED_MAGIC2 0x170fc2a5 (any) mm/slab.c 103 103 BAYCOM_MAGIC 0x19730510 baycom_state drivers/net/baycom_epp.c ··· 110 116 CTC_ASYNC_MAGIC 0x49344C01 ctc_tty_info drivers/s390/net/ctctty.c 111 117 ISDN_NET_MAGIC 0x49344C02 isdn_net_local_s drivers/isdn/i4l/isdn_net_lib.h 112 118 SAVEKMSG_MAGIC2 0x4B4D5347 savekmsg arch/*/amiga/config.c 113 - STLI_BOARDMAGIC 0x4bc6c825 stlibrd include/linux/istallion.h 114 119 CS_STATE_MAGIC 0x4c4f4749 cs_state sound/oss/cs46xx.c 115 120 SLAB_C_MAGIC 0x4f17a36d kmem_cache mm/slab.c 116 121 COW_MAGIC 0x4f4f4f4d cow_header_v1 arch/um/drivers/ubd_user.c ··· 120 127 SAVEKMSG_MAGIC1 0x53415645 savekmsg arch/*/amiga/config.c 121 128 GDA_MAGIC 0x58464552 gda arch/mips/include/asm/sn/gda.h 122 129 RED_MAGIC1 0x5a2cf071 (any) mm/slab.c 123 - STL_PORTMAGIC 0x5a7182c9 stlport include/linux/stallion.h 124 130 EEPROM_MAGIC_VALUE 0x5ab478d2 lanai_dev drivers/atm/lanai.c 125 131 HDLCDRV_MAGIC 0x5ac6e778 hdlcdrv_state include/linux/hdlcdrv.h 126 - EPCA_MAGIC 0x5c6df104 channel include/linux/epca.h 127 132 PCXX_MAGIC 0x5c6df104 channel drivers/char/pcxx.h 128 133 KV_MAGIC 0x5f4b565f kernel_vars_s arch/mips/include/asm/sn/klkernvars.h 129 134 I810_STATE_MAGIC 0x63657373 i810_state sound/oss/i810_audio.c ··· 133 142 LO_MAGIC 0x68797548 nbd_device include/linux/nbd.h 134 143 OPROFILE_MAGIC 0x6f70726f super_block drivers/oprofile/oprofilefs.h 135 144 M3_STATE_MAGIC 0x734d724d m3_state sound/oss/maestro3.c 136 - STL_PANELMAGIC 0x7ef621a1 stlpanel include/linux/stallion.h 137 145 VMALLOC_MAGIC 0x87654320 snd_alloc_track sound/core/memory.c 138 146 KMALLOC_MAGIC 0x87654321 snd_alloc_track sound/core/memory.c 139 147 PWC_MAGIC 0x89DC10AB pwc_device drivers/usb/media/pwc.h 140 148 NBD_REPLY_MAGIC 0x96744668 nbd_reply include/linux/nbd.h 141 - STL_BOARDMAGIC 0xa2267f52 stlbrd include/linux/stallion.h 142 149 ENI155_MAGIC 0xa54b872d midway_eprom drivers/atm/eni.h 143 150 SCI_MAGIC 0xbabeface gs_port drivers/char/sh-sci.h 144 151 CODA_MAGIC 0xC0DAC0DA coda_file_info include/linux/coda_fs_i.h 145 152 DPMEM_MAGIC 0xc0ffee11 gdt_pci_sram drivers/scsi/gdth.h 146 - STLI_PORTMAGIC 0xe671c7a1 stliport include/linux/istallion.h 147 153 YAM_MAGIC 0xF10A7654 yam_port drivers/net/hamradio/yam.c 148 154 CCB_MAGIC 0xf2691ad2 ccb drivers/scsi/ncr53c8xx.c 149 155 QUEUE_MAGIC_FREE 0xf7e1c9a3 queue_entry drivers/scsi/arm/queue.c
+1 -1
drivers/char/Kconfig
··· 40 40 source "drivers/tty/serial/Kconfig" 41 41 42 42 config TTY_PRINTK 43 - bool "TTY driver to output user messages via printk" 43 + tristate "TTY driver to output user messages via printk" 44 44 depends on EXPERT && TTY 45 45 default n 46 46 ---help---
+1 -1
drivers/char/pcmcia/Kconfig
··· 15 15 16 16 This driver may be built as a module ( = code which can be 17 17 inserted in and removed from the running kernel whenever you want). 18 - The module will be called synclinkmp. If you want to do that, say M 18 + The module will be called synclink_cs. If you want to do that, say M 19 19 here. 20 20 21 21 config CARDMAN_4000
+12 -3
drivers/char/ttyprintk.c
··· 17 17 #include <linux/device.h> 18 18 #include <linux/serial.h> 19 19 #include <linux/tty.h> 20 - #include <linux/export.h> 20 + #include <linux/module.h> 21 21 22 22 struct ttyprintk_port { 23 23 struct tty_port port; ··· 210 210 return 0; 211 211 212 212 error: 213 + put_tty_driver(ttyprintk_driver); 214 + tty_port_destroy(&tpk_port.port); 215 + return ret; 216 + } 217 + 218 + static void __exit ttyprintk_exit(void) 219 + { 213 220 tty_unregister_driver(ttyprintk_driver); 214 221 put_tty_driver(ttyprintk_driver); 215 222 tty_port_destroy(&tpk_port.port); 216 - ttyprintk_driver = NULL; 217 - return ret; 218 223 } 224 + 219 225 device_initcall(ttyprintk_init); 226 + module_exit(ttyprintk_exit); 227 + 228 + MODULE_LICENSE("GPL");
+1
drivers/tty/serial/Kconfig
··· 1226 1226 config SERIAL_TIMBERDALE 1227 1227 tristate "Support for timberdale UART" 1228 1228 select SERIAL_CORE 1229 + depends on X86_32 || COMPILE_TEST 1229 1230 ---help--- 1230 1231 Add support for UART controller on timberdale. 1231 1232
+6 -2
drivers/tty/serial/amba-pl011.c
··· 318 318 .src_addr = uap->port.mapbase + UART01x_DR, 319 319 .src_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE, 320 320 .direction = DMA_DEV_TO_MEM, 321 - .src_maxburst = uap->fifosize >> 1, 321 + .src_maxburst = uap->fifosize >> 2, 322 322 .device_fc = false, 323 323 }; 324 324 ··· 2176 2176 static int pl011_remove(struct amba_device *dev) 2177 2177 { 2178 2178 struct uart_amba_port *uap = amba_get_drvdata(dev); 2179 + bool busy = false; 2179 2180 int i; 2180 2181 2181 2182 uart_remove_one_port(&amba_reg, &uap->port); ··· 2184 2183 for (i = 0; i < ARRAY_SIZE(amba_ports); i++) 2185 2184 if (amba_ports[i] == uap) 2186 2185 amba_ports[i] = NULL; 2186 + else if (amba_ports[i]) 2187 + busy = true; 2187 2188 2188 2189 pl011_dma_remove(uap); 2189 - uart_unregister_driver(&amba_reg); 2190 + if (!busy) 2191 + uart_unregister_driver(&amba_reg); 2190 2192 return 0; 2191 2193 } 2192 2194
+6 -14
drivers/tty/serial/clps711x.c
··· 368 368 static void uart_clps711x_console_putchar(struct uart_port *port, int ch) 369 369 { 370 370 struct clps711x_port *s = dev_get_drvdata(port->dev); 371 + u32 sysflg = 0; 371 372 372 373 /* Wait for FIFO is not full */ 373 - while (1) { 374 - u32 sysflg = 0; 375 - 374 + do { 376 375 regmap_read(s->syscon, SYSFLG_OFFSET, &sysflg); 377 - if (!(sysflg & SYSFLG_UTXFF)) 378 - break; 379 - cond_resched(); 380 - } 376 + } while (sysflg & SYSFLG_UTXFF); 381 377 382 378 writew(ch, port->membase + UARTDR_OFFSET); 383 379 } ··· 383 387 { 384 388 struct uart_port *port = clps711x_uart.state[co->index].uart_port; 385 389 struct clps711x_port *s = dev_get_drvdata(port->dev); 390 + u32 sysflg = 0; 386 391 387 392 uart_console_write(port, c, n, uart_clps711x_console_putchar); 388 393 389 394 /* Wait for transmitter to become empty */ 390 - while (1) { 391 - u32 sysflg = 0; 392 - 395 + do { 393 396 regmap_read(s->syscon, SYSFLG_OFFSET, &sysflg); 394 - if (!(sysflg & SYSFLG_UBUSY)) 395 - break; 396 - cond_resched(); 397 - } 397 + } while (sysflg & SYSFLG_UBUSY); 398 398 } 399 399 400 400 static int uart_clps711x_console_setup(struct console *co, char *options)
+3
drivers/tty/serial/efm32-uart.c
··· 798 798 799 799 static const struct of_device_id efm32_uart_dt_ids[] = { 800 800 { 801 + .compatible = "energymicro,efm32-uart", 802 + }, { 803 + /* doesn't follow the "vendor,device" scheme, don't use */ 801 804 .compatible = "efm32,uart", 802 805 }, { 803 806 /* sentinel */
+18 -12
drivers/tty/serial/omap-serial.c
··· 225 225 if (enable) 226 226 enable_irq(up->wakeirq); 227 227 else 228 - disable_irq(up->wakeirq); 228 + disable_irq_nosync(up->wakeirq); 229 229 } 230 230 231 231 static void serial_omap_enable_wakeup(struct uart_omap_port *up, bool enable) 232 232 { 233 233 struct omap_uart_port_info *pdata = dev_get_platdata(up->dev); 234 234 235 + if (enable == up->wakeups_enabled) 236 + return; 237 + 235 238 serial_omap_enable_wakeirq(up, enable); 239 + up->wakeups_enabled = enable; 240 + 236 241 if (!pdata || !pdata->enable_wakeup) 237 242 return; 238 243 ··· 1500 1495 uart_suspend_port(&serial_omap_reg, &up->port); 1501 1496 flush_work(&up->qos_work); 1502 1497 1498 + if (device_may_wakeup(dev)) 1499 + serial_omap_enable_wakeup(up, true); 1500 + else 1501 + serial_omap_enable_wakeup(up, false); 1502 + 1503 1503 return 0; 1504 1504 } 1505 1505 1506 1506 static int serial_omap_resume(struct device *dev) 1507 1507 { 1508 1508 struct uart_omap_port *up = dev_get_drvdata(dev); 1509 + 1510 + if (device_may_wakeup(dev)) 1511 + serial_omap_enable_wakeup(up, false); 1509 1512 1510 1513 uart_resume_port(&serial_omap_reg, &up->port); 1511 1514 ··· 1802 1789 pm_runtime_disable(up->dev); 1803 1790 uart_remove_one_port(&serial_omap_reg, &up->port); 1804 1791 pm_qos_remove_request(&up->pm_qos_request); 1792 + device_init_wakeup(&dev->dev, false); 1805 1793 1806 1794 return 0; 1807 1795 } ··· 1891 1877 1892 1878 up->context_loss_cnt = serial_omap_get_context_loss_count(up); 1893 1879 1894 - if (device_may_wakeup(dev)) { 1895 - if (!up->wakeups_enabled) { 1896 - serial_omap_enable_wakeup(up, true); 1897 - up->wakeups_enabled = true; 1898 - } 1899 - } else { 1900 - if (up->wakeups_enabled) { 1901 - serial_omap_enable_wakeup(up, false); 1902 - up->wakeups_enabled = false; 1903 - } 1904 - } 1880 + serial_omap_enable_wakeup(up, true); 1905 1881 1906 1882 up->latency = PM_QOS_CPU_DMA_LAT_DEFAULT_VALUE; 1907 1883 schedule_work(&up->qos_work); ··· 1904 1900 struct uart_omap_port *up = dev_get_drvdata(dev); 1905 1901 1906 1902 int loss_cnt = serial_omap_get_context_loss_count(up); 1903 + 1904 + serial_omap_enable_wakeup(up, false); 1907 1905 1908 1906 if (loss_cnt < 0) { 1909 1907 dev_dbg(dev, "serial_omap_get_context_loss_count failed : %d\n",
+3 -2
drivers/tty/serial/serial_core.c
··· 89 89 struct uart_state *state = tty->driver_data; 90 90 struct uart_port *port = state->uart_port; 91 91 92 - if (!uart_circ_empty(&state->xmit) && state->xmit.buf && 93 - !tty->stopped && !tty->hw_stopped) 92 + if (!tty->stopped && !tty->hw_stopped) 94 93 port->ops->start_tx(port); 95 94 } 96 95 ··· 1451 1452 clear_bit(ASYNCB_NORMAL_ACTIVE, &port->flags); 1452 1453 spin_unlock_irqrestore(&port->lock, flags); 1453 1454 tty_port_tty_set(port, NULL); 1455 + if (!uart_console(state->uart_port)) 1456 + uart_change_pm(state, UART_PM_STATE_OFF); 1454 1457 wake_up_interruptible(&port->open_wait); 1455 1458 wake_up_interruptible(&port->delta_msr_wait); 1456 1459 }
+2 -2
drivers/tty/serial/st-asc.c
··· 295 295 status & ASC_STA_OE) { 296 296 297 297 if (c & ASC_RXBUF_FE) { 298 - if (c == ASC_RXBUF_FE) { 298 + if (c == (ASC_RXBUF_FE | ASC_RXBUF_DUMMY_RX)) { 299 299 port->icount.brk++; 300 300 if (uart_handle_break(port)) 301 301 continue; ··· 325 325 flag = TTY_FRAME; 326 326 } 327 327 328 - if (uart_handle_sysrq_char(port, c)) 328 + if (uart_handle_sysrq_char(port, c & 0xff)) 329 329 continue; 330 330 331 331 uart_insert_char(port, c, ASC_RXBUF_DUMMY_OE, c & 0xff, flag);
+2 -2
drivers/tty/tty_io.c
··· 878 878 spin_lock_irq(&current->sighand->siglock); 879 879 put_pid(current->signal->tty_old_pgrp); 880 880 current->signal->tty_old_pgrp = NULL; 881 - spin_unlock_irq(&current->sighand->siglock); 882 881 883 - tty = get_current_tty(); 882 + tty = tty_kref_get(current->signal->tty); 884 883 if (tty) { 885 884 unsigned long flags; 886 885 spin_lock_irqsave(&tty->ctrl_lock, flags); ··· 896 897 #endif 897 898 } 898 899 900 + spin_unlock_irq(&current->sighand->siglock); 899 901 /* Now clear signal->tty under the lock */ 900 902 read_lock(&tasklist_lock); 901 903 session_clear_tty(task_session(current));
-10
firmware/WHENCE
··· 273 273 274 274 -------------------------------------------------------------------------- 275 275 276 - Driver: ip2 -- Computone IntelliPort Plus serial device 277 - 278 - File: intelliport2.bin 279 - 280 - Licence: Unknown 281 - 282 - Found in hex form in kernel source. 283 - 284 - -------------------------------------------------------------------------- 285 - 286 276 Driver: CPiA2 -- cameras based on Vision's CPiA2 287 277 288 278 File: cpia2/stv0672_vp4.bin