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
This commit is contained in:
commit
bf4282cbcf
|
@ -904,9 +904,7 @@ static void gsm_dlci_data_sweep(struct gsm_mux *gsm)
|
|||
int len;
|
||||
/* Priority ordering: We should do priority with RR of the groups */
|
||||
int i = 1;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&gsm->tx_lock, flags);
|
||||
while (i < NUM_DLCI) {
|
||||
struct gsm_dlci *dlci;
|
||||
|
||||
|
@ -927,7 +925,6 @@ static void gsm_dlci_data_sweep(struct gsm_mux *gsm)
|
|||
if (len == 0)
|
||||
i++;
|
||||
}
|
||||
spin_unlock_irqrestore(&gsm->tx_lock, flags);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2230,12 +2227,16 @@ static int gsmld_open(struct tty_struct *tty)
|
|||
static void gsmld_write_wakeup(struct tty_struct *tty)
|
||||
{
|
||||
struct gsm_mux *gsm = tty->disc_data;
|
||||
unsigned long flags;
|
||||
|
||||
/* Queue poll */
|
||||
clear_bit(TTY_DO_WRITE_WAKEUP, &tty->flags);
|
||||
gsm_data_kick(gsm);
|
||||
if (gsm->tx_bytes < TX_THRESH_LO)
|
||||
if (gsm->tx_bytes < TX_THRESH_LO) {
|
||||
spin_lock_irqsave(&gsm->tx_lock, flags);
|
||||
gsm_dlci_data_sweep(gsm);
|
||||
spin_unlock_irqrestore(&gsm->tx_lock, flags);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -304,7 +304,7 @@ static void scrup(struct vc_data *vc, unsigned int t, unsigned int b, int nr)
|
|||
d = (unsigned short *)(vc->vc_origin + vc->vc_size_row * t);
|
||||
s = (unsigned short *)(vc->vc_origin + vc->vc_size_row * (t + nr));
|
||||
scr_memmovew(d, s, (b - t - nr) * vc->vc_size_row);
|
||||
scr_memsetw(d + (b - t - nr) * vc->vc_cols, vc->vc_video_erase_char,
|
||||
scr_memsetw(d + (b - t - nr) * vc->vc_size_row, vc->vc_video_erase_char,
|
||||
vc->vc_size_row * nr);
|
||||
}
|
||||
|
||||
|
|
|
@ -1303,7 +1303,9 @@ int vt_ioctl(struct tty_struct *tty, struct file * file,
|
|||
if (!perm)
|
||||
goto eperm;
|
||||
ret = copy_from_user(&ui, up, sizeof(struct unimapinit));
|
||||
if (!ret)
|
||||
if (ret)
|
||||
ret = -EFAULT;
|
||||
else
|
||||
con_clear_unimap(vc, &ui);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -982,6 +982,18 @@ static int skip_tx_en_setup(struct serial_private *priv,
|
|||
#define PCI_SUBDEVICE_ID_POCTAL422 0x0408
|
||||
#define PCI_VENDOR_ID_ADVANTECH 0x13fe
|
||||
#define PCI_DEVICE_ID_ADVANTECH_PCI3620 0x3620
|
||||
#define PCI_DEVICE_ID_TITAN_200I 0x8028
|
||||
#define PCI_DEVICE_ID_TITAN_400I 0x8048
|
||||
#define PCI_DEVICE_ID_TITAN_800I 0x8088
|
||||
#define PCI_DEVICE_ID_TITAN_800EH 0xA007
|
||||
#define PCI_DEVICE_ID_TITAN_800EHB 0xA008
|
||||
#define PCI_DEVICE_ID_TITAN_400EH 0xA009
|
||||
#define PCI_DEVICE_ID_TITAN_100E 0xA010
|
||||
#define PCI_DEVICE_ID_TITAN_200E 0xA012
|
||||
#define PCI_DEVICE_ID_TITAN_400E 0xA013
|
||||
#define PCI_DEVICE_ID_TITAN_800E 0xA014
|
||||
#define PCI_DEVICE_ID_TITAN_200EI 0xA016
|
||||
#define PCI_DEVICE_ID_TITAN_200EISI 0xA017
|
||||
|
||||
/* Unknown vendors/cards - this should not be in linux/pci_ids.h */
|
||||
#define PCI_SUBDEVICE_ID_UNKNOWN_0x1584 0x1584
|
||||
|
@ -1541,6 +1553,10 @@ enum pci_board_num_t {
|
|||
pbn_b3_4_115200,
|
||||
pbn_b3_8_115200,
|
||||
|
||||
pbn_b4_bt_2_921600,
|
||||
pbn_b4_bt_4_921600,
|
||||
pbn_b4_bt_8_921600,
|
||||
|
||||
/*
|
||||
* Board-specific versions.
|
||||
*/
|
||||
|
@ -1995,6 +2011,25 @@ static struct pciserial_board pci_boards[] __devinitdata = {
|
|||
.uart_offset = 8,
|
||||
},
|
||||
|
||||
[pbn_b4_bt_2_921600] = {
|
||||
.flags = FL_BASE4,
|
||||
.num_ports = 2,
|
||||
.base_baud = 921600,
|
||||
.uart_offset = 8,
|
||||
},
|
||||
[pbn_b4_bt_4_921600] = {
|
||||
.flags = FL_BASE4,
|
||||
.num_ports = 4,
|
||||
.base_baud = 921600,
|
||||
.uart_offset = 8,
|
||||
},
|
||||
[pbn_b4_bt_8_921600] = {
|
||||
.flags = FL_BASE4,
|
||||
.num_ports = 8,
|
||||
.base_baud = 921600,
|
||||
.uart_offset = 8,
|
||||
},
|
||||
|
||||
/*
|
||||
* Entries following this are board-specific.
|
||||
*/
|
||||
|
@ -3043,6 +3078,42 @@ static struct pci_device_id serial_pci_tbl[] = {
|
|||
{ PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_800L,
|
||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0,
|
||||
pbn_b0_bt_8_921600 },
|
||||
{ PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_200I,
|
||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0,
|
||||
pbn_b4_bt_2_921600 },
|
||||
{ PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_400I,
|
||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0,
|
||||
pbn_b4_bt_4_921600 },
|
||||
{ PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_800I,
|
||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0,
|
||||
pbn_b4_bt_8_921600 },
|
||||
{ PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_400EH,
|
||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0,
|
||||
pbn_b0_4_921600 },
|
||||
{ PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_800EH,
|
||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0,
|
||||
pbn_b0_4_921600 },
|
||||
{ PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_800EHB,
|
||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0,
|
||||
pbn_b0_4_921600 },
|
||||
{ PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_100E,
|
||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0,
|
||||
pbn_oxsemi_1_4000000 },
|
||||
{ PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_200E,
|
||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0,
|
||||
pbn_oxsemi_2_4000000 },
|
||||
{ PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_400E,
|
||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0,
|
||||
pbn_oxsemi_4_4000000 },
|
||||
{ PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_800E,
|
||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0,
|
||||
pbn_oxsemi_8_4000000 },
|
||||
{ PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_200EI,
|
||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0,
|
||||
pbn_oxsemi_2_4000000 },
|
||||
{ PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_200EISI,
|
||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0,
|
||||
pbn_oxsemi_2_4000000 },
|
||||
|
||||
{ PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_1S_10x_550,
|
||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0,
|
||||
|
|
|
@ -89,15 +89,12 @@ static unsigned int altera_uart_tx_empty(struct uart_port *port)
|
|||
static unsigned int altera_uart_get_mctrl(struct uart_port *port)
|
||||
{
|
||||
struct altera_uart *pp = container_of(port, struct altera_uart, port);
|
||||
unsigned long flags;
|
||||
unsigned int sigs;
|
||||
|
||||
spin_lock_irqsave(&port->lock, flags);
|
||||
sigs =
|
||||
(readl(port->membase + ALTERA_UART_STATUS_REG) &
|
||||
ALTERA_UART_STATUS_CTS_MSK) ? TIOCM_CTS : 0;
|
||||
sigs |= (pp->sigs & TIOCM_RTS);
|
||||
spin_unlock_irqrestore(&port->lock, flags);
|
||||
|
||||
return sigs;
|
||||
}
|
||||
|
@ -105,49 +102,37 @@ static unsigned int altera_uart_get_mctrl(struct uart_port *port)
|
|||
static void altera_uart_set_mctrl(struct uart_port *port, unsigned int sigs)
|
||||
{
|
||||
struct altera_uart *pp = container_of(port, struct altera_uart, port);
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&port->lock, flags);
|
||||
pp->sigs = sigs;
|
||||
if (sigs & TIOCM_RTS)
|
||||
pp->imr |= ALTERA_UART_CONTROL_RTS_MSK;
|
||||
else
|
||||
pp->imr &= ~ALTERA_UART_CONTROL_RTS_MSK;
|
||||
writel(pp->imr, port->membase + ALTERA_UART_CONTROL_REG);
|
||||
spin_unlock_irqrestore(&port->lock, flags);
|
||||
}
|
||||
|
||||
static void altera_uart_start_tx(struct uart_port *port)
|
||||
{
|
||||
struct altera_uart *pp = container_of(port, struct altera_uart, port);
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&port->lock, flags);
|
||||
pp->imr |= ALTERA_UART_CONTROL_TRDY_MSK;
|
||||
writel(pp->imr, port->membase + ALTERA_UART_CONTROL_REG);
|
||||
spin_unlock_irqrestore(&port->lock, flags);
|
||||
}
|
||||
|
||||
static void altera_uart_stop_tx(struct uart_port *port)
|
||||
{
|
||||
struct altera_uart *pp = container_of(port, struct altera_uart, port);
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&port->lock, flags);
|
||||
pp->imr &= ~ALTERA_UART_CONTROL_TRDY_MSK;
|
||||
writel(pp->imr, port->membase + ALTERA_UART_CONTROL_REG);
|
||||
spin_unlock_irqrestore(&port->lock, flags);
|
||||
}
|
||||
|
||||
static void altera_uart_stop_rx(struct uart_port *port)
|
||||
{
|
||||
struct altera_uart *pp = container_of(port, struct altera_uart, port);
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&port->lock, flags);
|
||||
pp->imr &= ~ALTERA_UART_CONTROL_RRDY_MSK;
|
||||
writel(pp->imr, port->membase + ALTERA_UART_CONTROL_REG);
|
||||
spin_unlock_irqrestore(&port->lock, flags);
|
||||
}
|
||||
|
||||
static void altera_uart_break_ctl(struct uart_port *port, int break_state)
|
||||
|
@ -272,10 +257,14 @@ static irqreturn_t altera_uart_interrupt(int irq, void *data)
|
|||
unsigned int isr;
|
||||
|
||||
isr = readl(port->membase + ALTERA_UART_STATUS_REG) & pp->imr;
|
||||
|
||||
spin_lock(&port->lock);
|
||||
if (isr & ALTERA_UART_STATUS_RRDY_MSK)
|
||||
altera_uart_rx_chars(pp);
|
||||
if (isr & ALTERA_UART_STATUS_TRDY_MSK)
|
||||
altera_uart_tx_chars(pp);
|
||||
spin_unlock(&port->lock);
|
||||
|
||||
return IRQ_RETVAL(isr);
|
||||
}
|
||||
|
||||
|
@ -402,31 +391,24 @@ int __init early_altera_uart_setup(struct altera_uart_platform_uart *platp)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void altera_uart_console_putc(struct console *co, const char c)
|
||||
static void altera_uart_console_putc(struct uart_port *port, const char c)
|
||||
{
|
||||
struct uart_port *port = &(altera_uart_ports + co->index)->port;
|
||||
int i;
|
||||
while (!(readl(port->membase + ALTERA_UART_STATUS_REG) &
|
||||
ALTERA_UART_STATUS_TRDY_MSK))
|
||||
cpu_relax();
|
||||
|
||||
for (i = 0; i < 0x10000; i++) {
|
||||
if (readl(port->membase + ALTERA_UART_STATUS_REG) &
|
||||
ALTERA_UART_STATUS_TRDY_MSK)
|
||||
break;
|
||||
}
|
||||
writel(c, port->membase + ALTERA_UART_TXDATA_REG);
|
||||
for (i = 0; i < 0x10000; i++) {
|
||||
if (readl(port->membase + ALTERA_UART_STATUS_REG) &
|
||||
ALTERA_UART_STATUS_TRDY_MSK)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void altera_uart_console_write(struct console *co, const char *s,
|
||||
unsigned int count)
|
||||
{
|
||||
struct uart_port *port = &(altera_uart_ports + co->index)->port;
|
||||
|
||||
for (; count; count--, s++) {
|
||||
altera_uart_console_putc(co, *s);
|
||||
altera_uart_console_putc(port, *s);
|
||||
if (*s == '\n')
|
||||
altera_uart_console_putc(co, '\r');
|
||||
altera_uart_console_putc(port, '\r');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -516,7 +498,7 @@ static int __devinit altera_uart_probe(struct platform_device *pdev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int altera_uart_remove(struct platform_device *pdev)
|
||||
static int __devexit altera_uart_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct uart_port *port;
|
||||
int i;
|
||||
|
|
|
@ -797,7 +797,7 @@ static void bfin_serial_shutdown(struct uart_port *port)
|
|||
gpio_free(uart->rts_pin);
|
||||
#endif
|
||||
#ifdef CONFIG_SERIAL_BFIN_HARD_CTSRTS
|
||||
if (UART_GET_IER(uart) && EDSSI)
|
||||
if (UART_GET_IER(uart) & EDSSI)
|
||||
free_irq(uart->status_irq, uart);
|
||||
#endif
|
||||
}
|
||||
|
@ -869,7 +869,12 @@ bfin_serial_set_termios(struct uart_port *port, struct ktermios *termios,
|
|||
}
|
||||
|
||||
baud = uart_get_baud_rate(port, termios, old, 0, port->uartclk/16);
|
||||
quot = uart_get_divisor(port, baud) - ANOMALY_05000230;
|
||||
quot = uart_get_divisor(port, baud);
|
||||
|
||||
/* If discipline is not IRDA, apply ANOMALY_05000230 */
|
||||
if (termios->c_line != N_IRDA)
|
||||
quot -= ANOMALY_05000230;
|
||||
|
||||
spin_lock_irqsave(&uart->port.lock, flags);
|
||||
|
||||
UART_SET_ANOMALY_THRESHOLD(uart, USEC_PER_SEC / baud * 15);
|
||||
|
|
|
@ -41,19 +41,6 @@ struct msm_port {
|
|||
unsigned int imr;
|
||||
};
|
||||
|
||||
#define UART_TO_MSM(uart_port) ((struct msm_port *) uart_port)
|
||||
|
||||
static inline void msm_write(struct uart_port *port, unsigned int val,
|
||||
unsigned int off)
|
||||
{
|
||||
__raw_writel(val, port->membase + off);
|
||||
}
|
||||
|
||||
static inline unsigned int msm_read(struct uart_port *port, unsigned int off)
|
||||
{
|
||||
return __raw_readl(port->membase + off);
|
||||
}
|
||||
|
||||
static void msm_stop_tx(struct uart_port *port)
|
||||
{
|
||||
struct msm_port *msm_port = UART_TO_MSM(port);
|
||||
|
@ -320,11 +307,7 @@ static void msm_init_clock(struct uart_port *port)
|
|||
struct msm_port *msm_port = UART_TO_MSM(port);
|
||||
|
||||
clk_enable(msm_port->clk);
|
||||
|
||||
msm_write(port, 0xC0, UART_MREG);
|
||||
msm_write(port, 0xB2, UART_NREG);
|
||||
msm_write(port, 0x7D, UART_DREG);
|
||||
msm_write(port, 0x1C, UART_MNDREG);
|
||||
msm_serial_set_mnd_regs(port);
|
||||
}
|
||||
|
||||
static int msm_startup(struct uart_port *port)
|
||||
|
@ -706,6 +689,8 @@ static int __init msm_serial_probe(struct platform_device *pdev)
|
|||
if (unlikely(IS_ERR(msm_port->clk)))
|
||||
return PTR_ERR(msm_port->clk);
|
||||
port->uartclk = clk_get_rate(msm_port->clk);
|
||||
printk(KERN_INFO "uartclk = %d\n", port->uartclk);
|
||||
|
||||
|
||||
resource = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
if (unlikely(!resource))
|
||||
|
|
|
@ -114,4 +114,60 @@
|
|||
#define UART_MISR 0x0010
|
||||
#define UART_ISR 0x0014
|
||||
|
||||
#define UART_TO_MSM(uart_port) ((struct msm_port *) uart_port)
|
||||
|
||||
static inline
|
||||
void msm_write(struct uart_port *port, unsigned int val, unsigned int off)
|
||||
{
|
||||
__raw_writel(val, port->membase + off);
|
||||
}
|
||||
|
||||
static inline
|
||||
unsigned int msm_read(struct uart_port *port, unsigned int off)
|
||||
{
|
||||
return __raw_readl(port->membase + off);
|
||||
}
|
||||
|
||||
/*
|
||||
* Setup the MND registers to use the TCXO clock.
|
||||
*/
|
||||
static inline void msm_serial_set_mnd_regs_tcxo(struct uart_port *port)
|
||||
{
|
||||
msm_write(port, 0x06, UART_MREG);
|
||||
msm_write(port, 0xF1, UART_NREG);
|
||||
msm_write(port, 0x0F, UART_DREG);
|
||||
msm_write(port, 0x1A, UART_MNDREG);
|
||||
}
|
||||
|
||||
/*
|
||||
* Setup the MND registers to use the TCXO clock divided by 4.
|
||||
*/
|
||||
static inline void msm_serial_set_mnd_regs_tcxoby4(struct uart_port *port)
|
||||
{
|
||||
msm_write(port, 0x18, UART_MREG);
|
||||
msm_write(port, 0xF6, UART_NREG);
|
||||
msm_write(port, 0x0F, UART_DREG);
|
||||
msm_write(port, 0x0A, UART_MNDREG);
|
||||
}
|
||||
|
||||
static inline
|
||||
void msm_serial_set_mnd_regs_from_uartclk(struct uart_port *port)
|
||||
{
|
||||
if (port->uartclk == 19200000)
|
||||
msm_serial_set_mnd_regs_tcxo(port);
|
||||
else
|
||||
msm_serial_set_mnd_regs_tcxoby4(port);
|
||||
}
|
||||
|
||||
/*
|
||||
* TROUT has a specific defect that makes it report it's uartclk
|
||||
* as 19.2Mhz (TCXO) when it's actually 4.8Mhz (TCXO/4). This special
|
||||
* cases TROUT to use the right clock.
|
||||
*/
|
||||
#ifdef CONFIG_MACH_TROUT
|
||||
#define msm_serial_set_mnd_regs msm_serial_set_mnd_regs_tcxoby4
|
||||
#else
|
||||
#define msm_serial_set_mnd_regs msm_serial_set_mnd_regs_from_uartclk
|
||||
#endif
|
||||
|
||||
#endif /* __DRIVERS_SERIAL_MSM_SERIAL_H */
|
||||
|
|
|
@ -715,6 +715,8 @@ static struct pcmcia_device_id serial_ids[] = {
|
|||
PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0057, 0x0021),
|
||||
PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0089, 0x110a),
|
||||
PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0104, 0x000a),
|
||||
PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0105, 0x0d0a),
|
||||
PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0105, 0x0e0a),
|
||||
PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0105, 0xea15),
|
||||
PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0109, 0x0501),
|
||||
PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0138, 0x110a),
|
||||
|
@ -724,8 +726,6 @@ static struct pcmcia_device_id serial_ids[] = {
|
|||
PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x016c, 0x0081),
|
||||
PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x021b, 0x0101),
|
||||
PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x08a1, 0xc0ab),
|
||||
PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0105, 0x0d0a),
|
||||
PCMCIA_PFC_DEVICE_MANF_CARD(1, 0x0105, 0x0e0a),
|
||||
PCMCIA_PFC_DEVICE_PROD_ID123(1, "MEGAHERTZ", "CC/XJEM3288", "DATA/FAX/CELL ETHERNET MODEM", 0xf510db04, 0x04cd2988, 0x46a52d63),
|
||||
PCMCIA_PFC_DEVICE_PROD_ID123(1, "MEGAHERTZ", "CC/XJEM3336", "DATA/FAX/CELL ETHERNET MODEM", 0xf510db04, 0x0143b773, 0x46a52d63),
|
||||
PCMCIA_PFC_DEVICE_PROD_ID123(1, "MEGAHERTZ", "EM1144T", "PCMCIA MODEM", 0xf510db04, 0x856d66c8, 0xbd6c43ef),
|
||||
|
@ -768,17 +768,26 @@ static struct pcmcia_device_id serial_ids[] = {
|
|||
PCMCIA_DEVICE_MANF_CARD(0x00a4, 0x0276),
|
||||
PCMCIA_DEVICE_MANF_CARD(0x0101, 0x0039),
|
||||
PCMCIA_DEVICE_MANF_CARD(0x0104, 0x0006),
|
||||
PCMCIA_DEVICE_MANF_CARD(0x0105, 0x0101), /* TDK DF2814 */
|
||||
PCMCIA_DEVICE_MANF_CARD(0x0105, 0x100a), /* Xircom CM-56G */
|
||||
PCMCIA_DEVICE_MANF_CARD(0x0105, 0x3e0a), /* TDK DF5660 */
|
||||
PCMCIA_DEVICE_MANF_CARD(0x0105, 0x410a),
|
||||
PCMCIA_DEVICE_MANF_CARD(0x0107, 0x0002), /* USRobotics 14,400 */
|
||||
PCMCIA_DEVICE_MANF_CARD(0x010b, 0x0d50),
|
||||
PCMCIA_DEVICE_MANF_CARD(0x010b, 0x0d51),
|
||||
PCMCIA_DEVICE_MANF_CARD(0x010b, 0x0d52),
|
||||
PCMCIA_DEVICE_MANF_CARD(0x010b, 0x0d53),
|
||||
PCMCIA_DEVICE_MANF_CARD(0x010b, 0xd180),
|
||||
PCMCIA_DEVICE_MANF_CARD(0x0115, 0x3330), /* USRobotics/SUN 14,400 */
|
||||
PCMCIA_DEVICE_MANF_CARD(0x0124, 0x0100), /* Nokia DTP-2 ver II */
|
||||
PCMCIA_DEVICE_MANF_CARD(0x0134, 0x5600), /* LASAT COMMUNICATIONS A/S */
|
||||
PCMCIA_DEVICE_MANF_CARD(0x0137, 0x000e),
|
||||
PCMCIA_DEVICE_MANF_CARD(0x0137, 0x001b),
|
||||
PCMCIA_DEVICE_MANF_CARD(0x0137, 0x0025),
|
||||
PCMCIA_DEVICE_MANF_CARD(0x0137, 0x0045),
|
||||
PCMCIA_DEVICE_MANF_CARD(0x0137, 0x0052),
|
||||
PCMCIA_DEVICE_MANF_CARD(0x016c, 0x0006), /* Psion 56K+Fax */
|
||||
PCMCIA_DEVICE_MANF_CARD(0x0200, 0x0001), /* MultiMobile */
|
||||
PCMCIA_DEVICE_PROD_ID134("ADV", "TECH", "COMpad-32/85", 0x67459937, 0x916d02ba, 0x8fbe92ae),
|
||||
PCMCIA_DEVICE_PROD_ID124("GATEWAY2000", "CC3144", "PCMCIA MODEM", 0x506bccae, 0xcb3685f1, 0xbd6c43ef),
|
||||
PCMCIA_DEVICE_PROD_ID14("MEGAHERTZ", "PCMCIA MODEM", 0xf510db04, 0xbd6c43ef),
|
||||
|
@ -792,16 +801,21 @@ static struct pcmcia_device_id serial_ids[] = {
|
|||
PCMCIA_DEVICE_PROD_ID12("COMPAQ", "PCMCIA 33600 FAX/DATA MODEM", 0xa3a3062c, 0x5a00ce95),
|
||||
PCMCIA_DEVICE_PROD_ID12("Computerboards, Inc.", "PCM-COM422", 0xd0b78f51, 0x7e2d49ed),
|
||||
PCMCIA_DEVICE_PROD_ID12("Dr. Neuhaus", "FURY CARD 14K4", 0x76942813, 0x8b96ce65),
|
||||
PCMCIA_DEVICE_PROD_ID12("IBM", "ISDN/56K/GSM", 0xb569a6e5, 0xfee5297b),
|
||||
PCMCIA_DEVICE_PROD_ID12("Intelligent", "ANGIA FAX/MODEM", 0xb496e65e, 0xf31602a6),
|
||||
PCMCIA_DEVICE_PROD_ID12("Intel", "MODEM 2400+", 0x816cc815, 0x412729fb),
|
||||
PCMCIA_DEVICE_PROD_ID12("Intertex", "IX34-PCMCIA", 0xf8a097e3, 0x97880447),
|
||||
PCMCIA_DEVICE_PROD_ID12("IOTech Inc ", "PCMCIA Dual RS-232 Serial Port Card", 0x3bd2d898, 0x92abc92f),
|
||||
PCMCIA_DEVICE_PROD_ID12("MACRONIX", "FAX/MODEM", 0x668388b3, 0x3f9bdf2f),
|
||||
PCMCIA_DEVICE_PROD_ID12("Multi-Tech", "MT1432LT", 0x5f73be51, 0x0b3e2383),
|
||||
PCMCIA_DEVICE_PROD_ID12("Multi-Tech", "MT2834LT", 0x5f73be51, 0x4cd7c09e),
|
||||
PCMCIA_DEVICE_PROD_ID12("OEM ", "C288MX ", 0xb572d360, 0xd2385b7a),
|
||||
PCMCIA_DEVICE_PROD_ID12("Option International", "V34bis GSM/PSTN Data/Fax Modem", 0x9d7cd6f5, 0x5cb8bf41),
|
||||
PCMCIA_DEVICE_PROD_ID12("PCMCIA ", "C336MX ", 0x99bcafe9, 0xaa25bcab),
|
||||
PCMCIA_DEVICE_PROD_ID12("Quatech Inc", "PCMCIA Dual RS-232 Serial Port Card", 0xc4420b35, 0x92abc92f),
|
||||
PCMCIA_DEVICE_PROD_ID12("Quatech Inc", "Dual RS-232 Serial Port PC Card", 0xc4420b35, 0x031a380d),
|
||||
PCMCIA_DEVICE_PROD_ID12("Telia", "SurfinBird 560P/A+", 0xe2cdd5e, 0xc9314b38),
|
||||
PCMCIA_DEVICE_PROD_ID1("Smart Serial Port", 0x2d8ce292),
|
||||
PCMCIA_PFC_DEVICE_CIS_PROD_ID12(1, "PCMCIA", "EN2218-LAN/MODEM", 0x281f1c5d, 0x570f348e, "cis/PCMLM28.cis"),
|
||||
PCMCIA_PFC_DEVICE_CIS_PROD_ID12(1, "PCMCIA", "UE2218-LAN/MODEM", 0x281f1c5d, 0x6fdcacee, "cis/PCMLM28.cis"),
|
||||
PCMCIA_PFC_DEVICE_CIS_PROD_ID12(1, "Psion Dacom", "Gold Card V34 Ethernet", 0xf5f025c2, 0x338e8155, "cis/PCMLM28.cis"),
|
||||
|
|
Loading…
Reference in New Issue