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 git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6:
serial: add support for various Titan PCI cards
vt_ioctl: return -EFAULT on copy_from_user errors
serial: altera_uart: Proper section for altera_uart_remove
tty: fix a little bug in scrup, vt.c
altera_uart: Simplify altera_uart_console_putc
altera_uart: Don't take spinlock in already protected functions
TTY/n_gsm: potential double lock
serial: bfin_5xx: fix typo in IER check
serial: bfin_5xx: IRDA is not affected by anomaly 05000230
serial_cs: add and sort IDs for serial and modem cards
msm_serial: fix serial on trout

+175 -59
+5 -4
drivers/char/n_gsm.c
··· 904 904 int len; 905 905 /* Priority ordering: We should do priority with RR of the groups */ 906 906 int i = 1; 907 - unsigned long flags; 908 907 909 - spin_lock_irqsave(&gsm->tx_lock, flags); 910 908 while (i < NUM_DLCI) { 911 909 struct gsm_dlci *dlci; 912 910 ··· 925 927 if (len == 0) 926 928 i++; 927 929 } 928 - spin_unlock_irqrestore(&gsm->tx_lock, flags); 929 930 } 930 931 931 932 /** ··· 2227 2230 static void gsmld_write_wakeup(struct tty_struct *tty) 2228 2231 { 2229 2232 struct gsm_mux *gsm = tty->disc_data; 2233 + unsigned long flags; 2230 2234 2231 2235 /* Queue poll */ 2232 2236 clear_bit(TTY_DO_WRITE_WAKEUP, &tty->flags); 2233 2237 gsm_data_kick(gsm); 2234 - if (gsm->tx_bytes < TX_THRESH_LO) 2238 + if (gsm->tx_bytes < TX_THRESH_LO) { 2239 + spin_lock_irqsave(&gsm->tx_lock, flags); 2235 2240 gsm_dlci_data_sweep(gsm); 2241 + spin_unlock_irqrestore(&gsm->tx_lock, flags); 2242 + } 2236 2243 } 2237 2244 2238 2245 /**
+1 -1
drivers/char/vt.c
··· 304 304 d = (unsigned short *)(vc->vc_origin + vc->vc_size_row * t); 305 305 s = (unsigned short *)(vc->vc_origin + vc->vc_size_row * (t + nr)); 306 306 scr_memmovew(d, s, (b - t - nr) * vc->vc_size_row); 307 - scr_memsetw(d + (b - t - nr) * vc->vc_cols, vc->vc_video_erase_char, 307 + scr_memsetw(d + (b - t - nr) * vc->vc_size_row, vc->vc_video_erase_char, 308 308 vc->vc_size_row * nr); 309 309 } 310 310
+3 -1
drivers/char/vt_ioctl.c
··· 1303 1303 if (!perm) 1304 1304 goto eperm; 1305 1305 ret = copy_from_user(&ui, up, sizeof(struct unimapinit)); 1306 - if (!ret) 1306 + if (ret) 1307 + ret = -EFAULT; 1308 + else 1307 1309 con_clear_unimap(vc, &ui); 1308 1310 break; 1309 1311 }
+71
drivers/serial/8250_pci.c
··· 982 982 #define PCI_SUBDEVICE_ID_POCTAL422 0x0408 983 983 #define PCI_VENDOR_ID_ADVANTECH 0x13fe 984 984 #define PCI_DEVICE_ID_ADVANTECH_PCI3620 0x3620 985 + #define PCI_DEVICE_ID_TITAN_200I 0x8028 986 + #define PCI_DEVICE_ID_TITAN_400I 0x8048 987 + #define PCI_DEVICE_ID_TITAN_800I 0x8088 988 + #define PCI_DEVICE_ID_TITAN_800EH 0xA007 989 + #define PCI_DEVICE_ID_TITAN_800EHB 0xA008 990 + #define PCI_DEVICE_ID_TITAN_400EH 0xA009 991 + #define PCI_DEVICE_ID_TITAN_100E 0xA010 992 + #define PCI_DEVICE_ID_TITAN_200E 0xA012 993 + #define PCI_DEVICE_ID_TITAN_400E 0xA013 994 + #define PCI_DEVICE_ID_TITAN_800E 0xA014 995 + #define PCI_DEVICE_ID_TITAN_200EI 0xA016 996 + #define PCI_DEVICE_ID_TITAN_200EISI 0xA017 985 997 986 998 /* Unknown vendors/cards - this should not be in linux/pci_ids.h */ 987 999 #define PCI_SUBDEVICE_ID_UNKNOWN_0x1584 0x1584 ··· 1553 1541 pbn_b3_4_115200, 1554 1542 pbn_b3_8_115200, 1555 1543 1544 + pbn_b4_bt_2_921600, 1545 + pbn_b4_bt_4_921600, 1546 + pbn_b4_bt_8_921600, 1547 + 1556 1548 /* 1557 1549 * Board-specific versions. 1558 1550 */ ··· 2008 1992 .flags = FL_BASE3, 2009 1993 .num_ports = 8, 2010 1994 .base_baud = 115200, 1995 + .uart_offset = 8, 1996 + }, 1997 + 1998 + [pbn_b4_bt_2_921600] = { 1999 + .flags = FL_BASE4, 2000 + .num_ports = 2, 2001 + .base_baud = 921600, 2002 + .uart_offset = 8, 2003 + }, 2004 + [pbn_b4_bt_4_921600] = { 2005 + .flags = FL_BASE4, 2006 + .num_ports = 4, 2007 + .base_baud = 921600, 2008 + .uart_offset = 8, 2009 + }, 2010 + [pbn_b4_bt_8_921600] = { 2011 + .flags = FL_BASE4, 2012 + .num_ports = 8, 2013 + .base_baud = 921600, 2011 2014 .uart_offset = 8, 2012 2015 }, 2013 2016 ··· 3078 3043 { PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_800L, 3079 3044 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 3080 3045 pbn_b0_bt_8_921600 }, 3046 + { PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_200I, 3047 + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 3048 + pbn_b4_bt_2_921600 }, 3049 + { PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_400I, 3050 + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 3051 + pbn_b4_bt_4_921600 }, 3052 + { PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_800I, 3053 + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 3054 + pbn_b4_bt_8_921600 }, 3055 + { PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_400EH, 3056 + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 3057 + pbn_b0_4_921600 }, 3058 + { PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_800EH, 3059 + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 3060 + pbn_b0_4_921600 }, 3061 + { PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_800EHB, 3062 + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 3063 + pbn_b0_4_921600 }, 3064 + { PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_100E, 3065 + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 3066 + pbn_oxsemi_1_4000000 }, 3067 + { PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_200E, 3068 + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 3069 + pbn_oxsemi_2_4000000 }, 3070 + { PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_400E, 3071 + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 3072 + pbn_oxsemi_4_4000000 }, 3073 + { PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_800E, 3074 + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 3075 + pbn_oxsemi_8_4000000 }, 3076 + { PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_200EI, 3077 + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 3078 + pbn_oxsemi_2_4000000 }, 3079 + { PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_200EISI, 3080 + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 3081 + pbn_oxsemi_2_4000000 }, 3081 3082 3082 3083 { PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_1S_10x_550, 3083 3084 PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+13 -31
drivers/serial/altera_uart.c
··· 89 89 static unsigned int altera_uart_get_mctrl(struct uart_port *port) 90 90 { 91 91 struct altera_uart *pp = container_of(port, struct altera_uart, port); 92 - unsigned long flags; 93 92 unsigned int sigs; 94 93 95 - spin_lock_irqsave(&port->lock, flags); 96 94 sigs = 97 95 (readl(port->membase + ALTERA_UART_STATUS_REG) & 98 96 ALTERA_UART_STATUS_CTS_MSK) ? TIOCM_CTS : 0; 99 97 sigs |= (pp->sigs & TIOCM_RTS); 100 - spin_unlock_irqrestore(&port->lock, flags); 101 98 102 99 return sigs; 103 100 } ··· 102 105 static void altera_uart_set_mctrl(struct uart_port *port, unsigned int sigs) 103 106 { 104 107 struct altera_uart *pp = container_of(port, struct altera_uart, port); 105 - unsigned long flags; 106 108 107 - spin_lock_irqsave(&port->lock, flags); 108 109 pp->sigs = sigs; 109 110 if (sigs & TIOCM_RTS) 110 111 pp->imr |= ALTERA_UART_CONTROL_RTS_MSK; 111 112 else 112 113 pp->imr &= ~ALTERA_UART_CONTROL_RTS_MSK; 113 114 writel(pp->imr, port->membase + ALTERA_UART_CONTROL_REG); 114 - spin_unlock_irqrestore(&port->lock, flags); 115 115 } 116 116 117 117 static void altera_uart_start_tx(struct uart_port *port) 118 118 { 119 119 struct altera_uart *pp = container_of(port, struct altera_uart, port); 120 - unsigned long flags; 121 120 122 - spin_lock_irqsave(&port->lock, flags); 123 121 pp->imr |= ALTERA_UART_CONTROL_TRDY_MSK; 124 122 writel(pp->imr, port->membase + ALTERA_UART_CONTROL_REG); 125 - spin_unlock_irqrestore(&port->lock, flags); 126 123 } 127 124 128 125 static void altera_uart_stop_tx(struct uart_port *port) 129 126 { 130 127 struct altera_uart *pp = container_of(port, struct altera_uart, port); 131 - unsigned long flags; 132 128 133 - spin_lock_irqsave(&port->lock, flags); 134 129 pp->imr &= ~ALTERA_UART_CONTROL_TRDY_MSK; 135 130 writel(pp->imr, port->membase + ALTERA_UART_CONTROL_REG); 136 - spin_unlock_irqrestore(&port->lock, flags); 137 131 } 138 132 139 133 static void altera_uart_stop_rx(struct uart_port *port) 140 134 { 141 135 struct altera_uart *pp = container_of(port, struct altera_uart, port); 142 - unsigned long flags; 143 136 144 - spin_lock_irqsave(&port->lock, flags); 145 137 pp->imr &= ~ALTERA_UART_CONTROL_RRDY_MSK; 146 138 writel(pp->imr, port->membase + ALTERA_UART_CONTROL_REG); 147 - spin_unlock_irqrestore(&port->lock, flags); 148 139 } 149 140 150 141 static void altera_uart_break_ctl(struct uart_port *port, int break_state) ··· 257 272 unsigned int isr; 258 273 259 274 isr = readl(port->membase + ALTERA_UART_STATUS_REG) & pp->imr; 275 + 276 + spin_lock(&port->lock); 260 277 if (isr & ALTERA_UART_STATUS_RRDY_MSK) 261 278 altera_uart_rx_chars(pp); 262 279 if (isr & ALTERA_UART_STATUS_TRDY_MSK) 263 280 altera_uart_tx_chars(pp); 281 + spin_unlock(&port->lock); 282 + 264 283 return IRQ_RETVAL(isr); 265 284 } 266 285 ··· 391 402 return 0; 392 403 } 393 404 394 - static void altera_uart_console_putc(struct console *co, const char c) 405 + static void altera_uart_console_putc(struct uart_port *port, const char c) 395 406 { 396 - struct uart_port *port = &(altera_uart_ports + co->index)->port; 397 - int i; 407 + while (!(readl(port->membase + ALTERA_UART_STATUS_REG) & 408 + ALTERA_UART_STATUS_TRDY_MSK)) 409 + cpu_relax(); 398 410 399 - for (i = 0; i < 0x10000; i++) { 400 - if (readl(port->membase + ALTERA_UART_STATUS_REG) & 401 - ALTERA_UART_STATUS_TRDY_MSK) 402 - break; 403 - } 404 411 writel(c, port->membase + ALTERA_UART_TXDATA_REG); 405 - for (i = 0; i < 0x10000; i++) { 406 - if (readl(port->membase + ALTERA_UART_STATUS_REG) & 407 - ALTERA_UART_STATUS_TRDY_MSK) 408 - break; 409 - } 410 412 } 411 413 412 414 static void altera_uart_console_write(struct console *co, const char *s, 413 415 unsigned int count) 414 416 { 417 + struct uart_port *port = &(altera_uart_ports + co->index)->port; 418 + 415 419 for (; count; count--, s++) { 416 - altera_uart_console_putc(co, *s); 420 + altera_uart_console_putc(port, *s); 417 421 if (*s == '\n') 418 - altera_uart_console_putc(co, '\r'); 422 + altera_uart_console_putc(port, '\r'); 419 423 } 420 424 } 421 425 ··· 498 516 return 0; 499 517 } 500 518 501 - static int altera_uart_remove(struct platform_device *pdev) 519 + static int __devexit altera_uart_remove(struct platform_device *pdev) 502 520 { 503 521 struct uart_port *port; 504 522 int i;
+7 -2
drivers/serial/bfin_5xx.c
··· 797 797 gpio_free(uart->rts_pin); 798 798 #endif 799 799 #ifdef CONFIG_SERIAL_BFIN_HARD_CTSRTS 800 - if (UART_GET_IER(uart) && EDSSI) 800 + if (UART_GET_IER(uart) & EDSSI) 801 801 free_irq(uart->status_irq, uart); 802 802 #endif 803 803 } ··· 869 869 } 870 870 871 871 baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/16); 872 - quot = uart_get_divisor(port, baud) - ANOMALY_05000230; 872 + quot = uart_get_divisor(port, baud); 873 + 874 + /* If discipline is not IRDA, apply ANOMALY_05000230 */ 875 + if (termios->c_line != N_IRDA) 876 + quot -= ANOMALY_05000230; 877 + 873 878 spin_lock_irqsave(&uart->port.lock, flags); 874 879 875 880 UART_SET_ANOMALY_THRESHOLD(uart, USEC_PER_SEC / baud * 15);
+3 -18
drivers/serial/msm_serial.c
··· 41 41 unsigned int imr; 42 42 }; 43 43 44 - #define UART_TO_MSM(uart_port) ((struct msm_port *) uart_port) 45 - 46 - static inline void msm_write(struct uart_port *port, unsigned int val, 47 - unsigned int off) 48 - { 49 - __raw_writel(val, port->membase + off); 50 - } 51 - 52 - static inline unsigned int msm_read(struct uart_port *port, unsigned int off) 53 - { 54 - return __raw_readl(port->membase + off); 55 - } 56 - 57 44 static void msm_stop_tx(struct uart_port *port) 58 45 { 59 46 struct msm_port *msm_port = UART_TO_MSM(port); ··· 307 320 struct msm_port *msm_port = UART_TO_MSM(port); 308 321 309 322 clk_enable(msm_port->clk); 310 - 311 - msm_write(port, 0xC0, UART_MREG); 312 - msm_write(port, 0xB2, UART_NREG); 313 - msm_write(port, 0x7D, UART_DREG); 314 - msm_write(port, 0x1C, UART_MNDREG); 323 + msm_serial_set_mnd_regs(port); 315 324 } 316 325 317 326 static int msm_startup(struct uart_port *port) ··· 689 706 if (unlikely(IS_ERR(msm_port->clk))) 690 707 return PTR_ERR(msm_port->clk); 691 708 port->uartclk = clk_get_rate(msm_port->clk); 709 + printk(KERN_INFO "uartclk = %d\n", port->uartclk); 710 + 692 711 693 712 resource = platform_get_resource(pdev, IORESOURCE_MEM, 0); 694 713 if (unlikely(!resource))
+56
drivers/serial/msm_serial.h
··· 114 114 #define UART_MISR 0x0010 115 115 #define UART_ISR 0x0014 116 116 117 + #define UART_TO_MSM(uart_port) ((struct msm_port *) uart_port) 118 + 119 + static inline 120 + void msm_write(struct uart_port *port, unsigned int val, unsigned int off) 121 + { 122 + __raw_writel(val, port->membase + off); 123 + } 124 + 125 + static inline 126 + unsigned int msm_read(struct uart_port *port, unsigned int off) 127 + { 128 + return __raw_readl(port->membase + off); 129 + } 130 + 131 + /* 132 + * Setup the MND registers to use the TCXO clock. 133 + */ 134 + static inline void msm_serial_set_mnd_regs_tcxo(struct uart_port *port) 135 + { 136 + msm_write(port, 0x06, UART_MREG); 137 + msm_write(port, 0xF1, UART_NREG); 138 + msm_write(port, 0x0F, UART_DREG); 139 + msm_write(port, 0x1A, UART_MNDREG); 140 + } 141 + 142 + /* 143 + * Setup the MND registers to use the TCXO clock divided by 4. 144 + */ 145 + static inline void msm_serial_set_mnd_regs_tcxoby4(struct uart_port *port) 146 + { 147 + msm_write(port, 0x18, UART_MREG); 148 + msm_write(port, 0xF6, UART_NREG); 149 + msm_write(port, 0x0F, UART_DREG); 150 + msm_write(port, 0x0A, UART_MNDREG); 151 + } 152 + 153 + static inline 154 + void msm_serial_set_mnd_regs_from_uartclk(struct uart_port *port) 155 + { 156 + if (port->uartclk == 19200000) 157 + msm_serial_set_mnd_regs_tcxo(port); 158 + else 159 + msm_serial_set_mnd_regs_tcxoby4(port); 160 + } 161 + 162 + /* 163 + * TROUT has a specific defect that makes it report it's uartclk 164 + * as 19.2Mhz (TCXO) when it's actually 4.8Mhz (TCXO/4). This special 165 + * cases TROUT to use the right clock. 166 + */ 167 + #ifdef CONFIG_MACH_TROUT 168 + #define msm_serial_set_mnd_regs msm_serial_set_mnd_regs_tcxoby4 169 + #else 170 + #define msm_serial_set_mnd_regs msm_serial_set_mnd_regs_from_uartclk 171 + #endif 172 + 117 173 #endif /* __DRIVERS_SERIAL_MSM_SERIAL_H */
+16 -2
drivers/serial/serial_cs.c
··· 715 715 PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0057, 0x0021), 716 716 PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0089, 0x110a), 717 717 PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0104, 0x000a), 718 + PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0105, 0x0d0a), 719 + PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0105, 0x0e0a), 718 720 PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0105, 0xea15), 719 721 PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0109, 0x0501), 720 722 PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0138, 0x110a), ··· 726 724 PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x016c, 0x0081), 727 725 PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x021b, 0x0101), 728 726 PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x08a1, 0xc0ab), 729 - PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0105, 0x0d0a), 730 - PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0105, 0x0e0a), 731 727 PCMCIA_PFC_DEVICE_PROD_ID123(1, "MEGAHERTZ", "CC/XJEM3288", "DATA/FAX/CELL ETHERNET MODEM", 0xf510db04, 0x04cd2988, 0x46a52d63), 732 728 PCMCIA_PFC_DEVICE_PROD_ID123(1, "MEGAHERTZ", "CC/XJEM3336", "DATA/FAX/CELL ETHERNET MODEM", 0xf510db04, 0x0143b773, 0x46a52d63), 733 729 PCMCIA_PFC_DEVICE_PROD_ID123(1, "MEGAHERTZ", "EM1144T", "PCMCIA MODEM", 0xf510db04, 0x856d66c8, 0xbd6c43ef), ··· 768 768 PCMCIA_DEVICE_MANF_CARD(0x00a4, 0x0276), 769 769 PCMCIA_DEVICE_MANF_CARD(0x0101, 0x0039), 770 770 PCMCIA_DEVICE_MANF_CARD(0x0104, 0x0006), 771 + PCMCIA_DEVICE_MANF_CARD(0x0105, 0x0101), /* TDK DF2814 */ 772 + PCMCIA_DEVICE_MANF_CARD(0x0105, 0x100a), /* Xircom CM-56G */ 773 + PCMCIA_DEVICE_MANF_CARD(0x0105, 0x3e0a), /* TDK DF5660 */ 771 774 PCMCIA_DEVICE_MANF_CARD(0x0105, 0x410a), 775 + PCMCIA_DEVICE_MANF_CARD(0x0107, 0x0002), /* USRobotics 14,400 */ 772 776 PCMCIA_DEVICE_MANF_CARD(0x010b, 0x0d50), 773 777 PCMCIA_DEVICE_MANF_CARD(0x010b, 0x0d51), 774 778 PCMCIA_DEVICE_MANF_CARD(0x010b, 0x0d52), 775 779 PCMCIA_DEVICE_MANF_CARD(0x010b, 0x0d53), 776 780 PCMCIA_DEVICE_MANF_CARD(0x010b, 0xd180), 781 + PCMCIA_DEVICE_MANF_CARD(0x0115, 0x3330), /* USRobotics/SUN 14,400 */ 782 + PCMCIA_DEVICE_MANF_CARD(0x0124, 0x0100), /* Nokia DTP-2 ver II */ 783 + PCMCIA_DEVICE_MANF_CARD(0x0134, 0x5600), /* LASAT COMMUNICATIONS A/S */ 777 784 PCMCIA_DEVICE_MANF_CARD(0x0137, 0x000e), 778 785 PCMCIA_DEVICE_MANF_CARD(0x0137, 0x001b), 779 786 PCMCIA_DEVICE_MANF_CARD(0x0137, 0x0025), 780 787 PCMCIA_DEVICE_MANF_CARD(0x0137, 0x0045), 781 788 PCMCIA_DEVICE_MANF_CARD(0x0137, 0x0052), 789 + PCMCIA_DEVICE_MANF_CARD(0x016c, 0x0006), /* Psion 56K+Fax */ 790 + PCMCIA_DEVICE_MANF_CARD(0x0200, 0x0001), /* MultiMobile */ 782 791 PCMCIA_DEVICE_PROD_ID134("ADV", "TECH", "COMpad-32/85", 0x67459937, 0x916d02ba, 0x8fbe92ae), 783 792 PCMCIA_DEVICE_PROD_ID124("GATEWAY2000", "CC3144", "PCMCIA MODEM", 0x506bccae, 0xcb3685f1, 0xbd6c43ef), 784 793 PCMCIA_DEVICE_PROD_ID14("MEGAHERTZ", "PCMCIA MODEM", 0xf510db04, 0xbd6c43ef), ··· 801 792 PCMCIA_DEVICE_PROD_ID12("COMPAQ", "PCMCIA 33600 FAX/DATA MODEM", 0xa3a3062c, 0x5a00ce95), 802 793 PCMCIA_DEVICE_PROD_ID12("Computerboards, Inc.", "PCM-COM422", 0xd0b78f51, 0x7e2d49ed), 803 794 PCMCIA_DEVICE_PROD_ID12("Dr. Neuhaus", "FURY CARD 14K4", 0x76942813, 0x8b96ce65), 795 + PCMCIA_DEVICE_PROD_ID12("IBM", "ISDN/56K/GSM", 0xb569a6e5, 0xfee5297b), 804 796 PCMCIA_DEVICE_PROD_ID12("Intelligent", "ANGIA FAX/MODEM", 0xb496e65e, 0xf31602a6), 805 797 PCMCIA_DEVICE_PROD_ID12("Intel", "MODEM 2400+", 0x816cc815, 0x412729fb), 798 + PCMCIA_DEVICE_PROD_ID12("Intertex", "IX34-PCMCIA", 0xf8a097e3, 0x97880447), 806 799 PCMCIA_DEVICE_PROD_ID12("IOTech Inc ", "PCMCIA Dual RS-232 Serial Port Card", 0x3bd2d898, 0x92abc92f), 807 800 PCMCIA_DEVICE_PROD_ID12("MACRONIX", "FAX/MODEM", 0x668388b3, 0x3f9bdf2f), 808 801 PCMCIA_DEVICE_PROD_ID12("Multi-Tech", "MT1432LT", 0x5f73be51, 0x0b3e2383), 809 802 PCMCIA_DEVICE_PROD_ID12("Multi-Tech", "MT2834LT", 0x5f73be51, 0x4cd7c09e), 810 803 PCMCIA_DEVICE_PROD_ID12("OEM ", "C288MX ", 0xb572d360, 0xd2385b7a), 804 + PCMCIA_DEVICE_PROD_ID12("Option International", "V34bis GSM/PSTN Data/Fax Modem", 0x9d7cd6f5, 0x5cb8bf41), 811 805 PCMCIA_DEVICE_PROD_ID12("PCMCIA ", "C336MX ", 0x99bcafe9, 0xaa25bcab), 812 806 PCMCIA_DEVICE_PROD_ID12("Quatech Inc", "PCMCIA Dual RS-232 Serial Port Card", 0xc4420b35, 0x92abc92f), 813 807 PCMCIA_DEVICE_PROD_ID12("Quatech Inc", "Dual RS-232 Serial Port PC Card", 0xc4420b35, 0x031a380d), 808 + PCMCIA_DEVICE_PROD_ID12("Telia", "SurfinBird 560P/A+", 0xe2cdd5e, 0xc9314b38), 809 + PCMCIA_DEVICE_PROD_ID1("Smart Serial Port", 0x2d8ce292), 814 810 PCMCIA_PFC_DEVICE_CIS_PROD_ID12(1, "PCMCIA", "EN2218-LAN/MODEM", 0x281f1c5d, 0x570f348e, "cis/PCMLM28.cis"), 815 811 PCMCIA_PFC_DEVICE_CIS_PROD_ID12(1, "PCMCIA", "UE2218-LAN/MODEM", 0x281f1c5d, 0x6fdcacee, "cis/PCMLM28.cis"), 816 812 PCMCIA_PFC_DEVICE_CIS_PROD_ID12(1, "Psion Dacom", "Gold Card V34 Ethernet", 0xf5f025c2, 0x338e8155, "cis/PCMLM28.cis"),