Pull serial driver fixes from Greg KH: "Here are some small serial driver fixes for 4.8-rc5. One fixes an oft-reported build issue with the fintek driver, another reverts a patch that was causing problems, one fixes a crash, and some new device ids were added. All of these have been in linux-next for a while" * tag 'tty-4.8-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty: serial: 8250: added acces i/o products quad and octal serial cards serial: 8250_mid: fix divide error bug if baud rate is 0 Revert "tty/serial/8250: use mctrl_gpio helpers" 8250/fintek: rename IRQ_MODE macro
Unified · Split
| @@ -42,9 +42,6 @@ Optional properties: · 41 unmodified lines | |||
| 42 | - auto-flow-control: one way to enable automatic flow control support. The | 42 | - auto-flow-control: one way to enable automatic flow control support. The |
| 43 | driver is allowed to detect support for the capability even without this | 43 | driver is allowed to detect support for the capability even without this |
| 44 | property. | 44 | property. |
| 45 | - {rts,cts,dtr,dsr,rng,dcd}-gpios: specify a GPIO for RTS/CTS/DTR/DSR/RI/DCD | ||
| 46 | line respectively. It will use specified GPIO instead of the peripheral | ||
| 47 | function pin for the UART feature. If unsure, don't specify this property. | ||
| 48 | 45 | ||
| 49 | Note: | 46 | Note: |
| 50 | * fsl,ns16550: | 47 | * fsl,ns16550: |
| @@ -66,19 +63,3 @@ Example: · 15 unmodified lines | |||
| 66 | interrupts = <10>; | 63 | interrupts = <10>; |
| 67 | reg-shift = <2>; | 64 | reg-shift = <2>; |
| 68 | }; | 65 | }; |
| 69 | |||
| 70 | Example for OMAP UART using GPIO-based modem control signals: | ||
| 71 | |||
| 72 | uart4: serial@49042000 { | ||
| 73 | compatible = "ti,omap3-uart"; | ||
| 74 | reg = <0x49042000 0x400>; | ||
| 75 | interrupts = <80>; | ||
| 76 | ti,hwmods = "uart4"; | ||
| 77 | clock-frequency = <48000000>; | ||
| 78 | cts-gpios = <&gpio3 5 GPIO_ACTIVE_LOW>; | ||
| 79 | rts-gpios = <&gpio3 6 GPIO_ACTIVE_LOW>; | ||
| 80 | dtr-gpios = <&gpio1 12 GPIO_ACTIVE_LOW>; | ||
| 81 | dsr-gpios = <&gpio1 13 GPIO_ACTIVE_LOW>; | ||
| 82 | dcd-gpios = <&gpio1 14 GPIO_ACTIVE_LOW>; | ||
| 83 | rng-gpios = <&gpio1 15 GPIO_ACTIVE_LOW>; | ||
| 84 | }; | ||
| @@ -15,8 +15,6 @@ · 14 unmodified lines | |||
| 15 | #include <linux/serial_reg.h> | 15 | #include <linux/serial_reg.h> |
| 16 | #include <linux/dmaengine.h> | 16 | #include <linux/dmaengine.h> |
| 17 | 17 | ||
| 18 | #include "../serial_mctrl_gpio.h" | ||
| 19 | |||
| 20 | struct uart_8250_dma { | 18 | struct uart_8250_dma { |
| 21 | int (*tx_dma)(struct uart_8250_port *p); | 19 | int (*tx_dma)(struct uart_8250_port *p); |
| 22 | int (*rx_dma)(struct uart_8250_port *p); | 20 | int (*rx_dma)(struct uart_8250_port *p); |
| @@ -133,43 +131,12 @@ void serial8250_em485_destroy(struct uart_8250_port *p); · 110 unmodified lines | |||
| 133 | 131 | ||
| 134 | static inline void serial8250_out_MCR(struct uart_8250_port *up, int value) | 132 | static inline void serial8250_out_MCR(struct uart_8250_port *up, int value) |
| 135 | { | 133 | { |
| 136 | int mctrl_gpio = 0; | ||
| 137 | |||
| 138 | serial_out(up, UART_MCR, value); | 134 | serial_out(up, UART_MCR, value); |
| 139 | |||
| 140 | if (value & UART_MCR_RTS) | ||
| 141 | mctrl_gpio |= TIOCM_RTS; | ||
| 142 | if (value & UART_MCR_DTR) | ||
| 143 | mctrl_gpio |= TIOCM_DTR; | ||
| 144 | |||
| 145 | mctrl_gpio_set(up->gpios, mctrl_gpio); | ||
| 146 | } | 135 | } |
| 147 | 136 | ||
| 148 | static inline int serial8250_in_MCR(struct uart_8250_port *up) | 137 | static inline int serial8250_in_MCR(struct uart_8250_port *up) |
| 149 | { | 138 | { |
| 150 | int mctrl, mctrl_gpio = 0; | 139 | return serial_in(up, UART_MCR); |
| 151 | |||
| 152 | mctrl = serial_in(up, UART_MCR); | ||
| 153 | |||
| 154 | /* save current MCR values */ | ||
| 155 | if (mctrl & UART_MCR_RTS) | ||
| 156 | mctrl_gpio |= TIOCM_RTS; | ||
| 157 | if (mctrl & UART_MCR_DTR) | ||
| 158 | mctrl_gpio |= TIOCM_DTR; | ||
| 159 | |||
| 160 | mctrl_gpio = mctrl_gpio_get_outputs(up->gpios, &mctrl_gpio); | ||
| 161 | |||
| 162 | if (mctrl_gpio & TIOCM_RTS) | ||
| 163 | mctrl |= UART_MCR_RTS; | ||
| 164 | else | ||
| 165 | mctrl &= ~UART_MCR_RTS; | ||
| 166 | |||
| 167 | if (mctrl_gpio & TIOCM_DTR) | ||
| 168 | mctrl |= UART_MCR_DTR; | ||
| 169 | else | ||
| 170 | mctrl &= ~UART_MCR_DTR; | ||
| 171 | |||
| 172 | return mctrl; | ||
| 173 | } | 140 | } |
| 174 | 141 | ||
| 175 | #if defined(__alpha__) && !defined(CONFIG_PCI) | 142 | #if defined(__alpha__) && !defined(CONFIG_PCI) |
| @@ -974,8 +974,6 @@ int serial8250_register_8250_port(struct uart_8250_port *up) · 973 unmodified lines | |||
| 974 | 974 | ||
| 975 | uart = serial8250_find_match_or_unused(&up->port); | 975 | uart = serial8250_find_match_or_unused(&up->port); |
| 976 | if (uart && uart->port.type != PORT_8250_CIR) { | 976 | if (uart && uart->port.type != PORT_8250_CIR) { |
| 977 | struct mctrl_gpios *gpios; | ||
| 978 | |||
| 979 | if (uart->port.dev) | 977 | if (uart->port.dev) |
| 980 | uart_remove_one_port(&serial8250_reg, &uart->port); | 978 | uart_remove_one_port(&serial8250_reg, &uart->port); |
| 981 | 979 | ||
| @@ -1013,13 +1011,6 @@ int serial8250_register_8250_port(struct uart_8250_port *up) · 31 unmodified lines | |||
| 1013 | if (up->port.flags & UPF_FIXED_TYPE) | 1011 | if (up->port.flags & UPF_FIXED_TYPE) |
| 1014 | uart->port.type = up->port.type; | 1012 | uart->port.type = up->port.type; |
| 1015 | 1013 | ||
| 1016 | gpios = mctrl_gpio_init(&uart->port, 0); | ||
| 1017 | if (IS_ERR(gpios)) { | ||
| 1018 | if (PTR_ERR(gpios) != -ENOSYS) | ||
| 1019 | return PTR_ERR(gpios); | ||
| 1020 | } else | ||
| 1021 | uart->gpios = gpios; | ||
| 1022 | |||
| 1023 | serial8250_set_defaults(uart); | 1014 | serial8250_set_defaults(uart); |
| 1024 | 1015 | ||
| 1025 | /* Possibly override default I/O functions. */ | 1016 | /* Possibly override default I/O functions. */ |
| @@ -31,7 +31,7 @@ · 30 unmodified lines | |||
| 31 | #define IO_ADDR2 0x60 | 31 | #define IO_ADDR2 0x60 |
| 32 | #define LDN 0x7 | 32 | #define LDN 0x7 |
| 33 | 33 | ||
| 34 | #define IRQ_MODE 0x70 | 34 | #define FINTEK_IRQ_MODE 0x70 |
| 35 | #define IRQ_SHARE BIT(4) | 35 | #define IRQ_SHARE BIT(4) |
| 36 | #define IRQ_MODE_MASK (BIT(6) | BIT(5)) | 36 | #define IRQ_MODE_MASK (BIT(6) | BIT(5)) |
| 37 | #define IRQ_LEVEL_LOW 0 | 37 | #define IRQ_LEVEL_LOW 0 |
| @@ -195,7 +195,7 @@ static int fintek_8250_set_irq_mode(struct fintek_8250 *pdata, bool level_mode) · 157 unmodified lines | |||
| 195 | outb(LDN, pdata->base_port + ADDR_PORT); | 195 | outb(LDN, pdata->base_port + ADDR_PORT); |
| 196 | outb(pdata->index, pdata->base_port + DATA_PORT); | 196 | outb(pdata->index, pdata->base_port + DATA_PORT); |
| 197 | 197 | ||
| 198 | outb(IRQ_MODE, pdata->base_port + ADDR_PORT); | 198 | outb(FINTEK_IRQ_MODE, pdata->base_port + ADDR_PORT); |
| 199 | tmp = inb(pdata->base_port + DATA_PORT); | 199 | tmp = inb(pdata->base_port + DATA_PORT); |
| 200 | 200 | ||
| 201 | tmp &= ~IRQ_MODE_MASK; | 201 | tmp &= ~IRQ_MODE_MASK; |
| @@ -168,6 +168,9 @@ static void mid8250_set_termios(struct uart_port *p, · 167 unmodified lines | |||
| 168 | unsigned long w = BIT(24) - 1; | 168 | unsigned long w = BIT(24) - 1; |
| 169 | unsigned long mul, div; | 169 | unsigned long mul, div; |
| 170 | 170 | ||
| 171 | /* Gracefully handle the B0 case: fall back to B9600 */ | ||
| 172 | fuart = fuart ? fuart : 9600 * 16; | ||
| 173 | |||
| 171 | if (mid->board->freq < fuart) { | 174 | if (mid->board->freq < fuart) { |
| 172 | /* Find prescaler value that satisfies Fuart < Fref */ | 175 | /* Find prescaler value that satisfies Fuart < Fref */ |
| 173 | if (mid->board->freq > baud) | 176 | if (mid->board->freq > baud) |
| @@ -134,21 +134,18 @@ static void omap8250_set_mctrl(struct uart_port *port, unsigned int mctrl) · 133 unmodified lines | |||
| 134 | 134 | ||
| 135 | serial8250_do_set_mctrl(port, mctrl); | 135 | serial8250_do_set_mctrl(port, mctrl); |
| 136 | 136 | ||
| 137 | if (IS_ERR_OR_NULL(mctrl_gpio_to_gpiod(up->gpios, | 137 | /* |
| 138 | UART_GPIO_RTS))) { | 138 | * Turn off autoRTS if RTS is lowered and restore autoRTS setting |
| 139 | /* | 139 | * if RTS is raised |
| 140 | * Turn off autoRTS if RTS is lowered and restore autoRTS | 140 | */ |
| 141 | * setting if RTS is raised | 141 | lcr = serial_in(up, UART_LCR); |
| 142 | */ | 142 | serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B); |
| 143 | lcr = serial_in(up, UART_LCR); | 143 | if ((mctrl & TIOCM_RTS) && (port->status & UPSTAT_AUTORTS)) |
| 144 | serial_out(up, UART_LCR, UART_LCR_CONF_MODE_B); | 144 | priv->efr |= UART_EFR_RTS; |
| 145 | if ((mctrl & TIOCM_RTS) && (port->status & UPSTAT_AUTORTS)) | 145 | else |
| 146 | priv->efr |= UART_EFR_RTS; | 146 | priv->efr &= ~UART_EFR_RTS; |
| 147 | else | 147 | serial_out(up, UART_EFR, priv->efr); |
| 148 | priv->efr &= ~UART_EFR_RTS; | 148 | serial_out(up, UART_LCR, lcr); |
| 149 | serial_out(up, UART_EFR, priv->efr); | ||
| 150 | serial_out(up, UART_LCR, lcr); | ||
| 151 | } | ||
| 152 | } | 149 | } |
| 153 | 150 | ||
| 154 | /* | 151 | /* |
| @@ -449,9 +446,7 @@ static void omap_8250_set_termios(struct uart_port *port, · 294 unmodified lines | |||
| 449 | priv->efr = 0; | 446 | priv->efr = 0; |
| 450 | up->port.status &= ~(UPSTAT_AUTOCTS | UPSTAT_AUTORTS | UPSTAT_AUTOXOFF); | 447 | up->port.status &= ~(UPSTAT_AUTOCTS | UPSTAT_AUTORTS | UPSTAT_AUTOXOFF); |
| 451 | 448 | ||
| 452 | if (termios->c_cflag & CRTSCTS && up->port.flags & UPF_HARD_FLOW | 449 | if (termios->c_cflag & CRTSCTS && up->port.flags & UPF_HARD_FLOW) { |
| 453 | && IS_ERR_OR_NULL(mctrl_gpio_to_gpiod(up->gpios, | ||
| 454 | UART_GPIO_RTS))) { | ||
| 455 | /* Enable AUTOCTS (autoRTS is enabled when RTS is raised) */ | 450 | /* Enable AUTOCTS (autoRTS is enabled when RTS is raised) */ |
| 456 | up->port.status |= UPSTAT_AUTOCTS | UPSTAT_AUTORTS; | 451 | up->port.status |= UPSTAT_AUTOCTS | UPSTAT_AUTORTS; |
| 457 | priv->efr |= UART_EFR_CTS; | 452 | priv->efr |= UART_EFR_CTS; |
| @@ -1950,6 +1950,43 @@ pci_wch_ch38x_setup(struct serial_private *priv, · 1949 unmodified lines | |||
| 1950 | #define PCI_DEVICE_ID_PERICOM_PI7C9X7954 0x7954 | 1950 | #define PCI_DEVICE_ID_PERICOM_PI7C9X7954 0x7954 |
| 1951 | #define PCI_DEVICE_ID_PERICOM_PI7C9X7958 0x7958 | 1951 | #define PCI_DEVICE_ID_PERICOM_PI7C9X7958 0x7958 |
| 1952 | 1952 | ||
| 1953 | #define PCI_VENDOR_ID_ACCESIO 0x494f | ||
| 1954 | #define PCI_DEVICE_ID_ACCESIO_PCIE_COM_2SDB 0x1051 | ||
| 1955 | #define PCI_DEVICE_ID_ACCESIO_MPCIE_COM_2S 0x1053 | ||
| 1956 | #define PCI_DEVICE_ID_ACCESIO_PCIE_COM_4SDB 0x105C | ||
| 1957 | #define PCI_DEVICE_ID_ACCESIO_MPCIE_COM_4S 0x105E | ||
| 1958 | #define PCI_DEVICE_ID_ACCESIO_PCIE_COM232_2DB 0x1091 | ||
| 1959 | #define PCI_DEVICE_ID_ACCESIO_MPCIE_COM232_2 0x1093 | ||
| 1960 | #define PCI_DEVICE_ID_ACCESIO_PCIE_COM232_4DB 0x1099 | ||
| 1961 | #define PCI_DEVICE_ID_ACCESIO_MPCIE_COM232_4 0x109B | ||
| 1962 | #define PCI_DEVICE_ID_ACCESIO_PCIE_COM_2SMDB 0x10D1 | ||
| 1963 | #define PCI_DEVICE_ID_ACCESIO_MPCIE_COM_2SM 0x10D3 | ||
| 1964 | #define PCI_DEVICE_ID_ACCESIO_PCIE_COM_4SMDB 0x10DA | ||
| 1965 | #define PCI_DEVICE_ID_ACCESIO_MPCIE_COM_4SM 0x10DC | ||
| 1966 | #define PCI_DEVICE_ID_ACCESIO_MPCIE_ICM485_1 0x1108 | ||
| 1967 | #define PCI_DEVICE_ID_ACCESIO_MPCIE_ICM422_2 0x1110 | ||
| 1968 | #define PCI_DEVICE_ID_ACCESIO_MPCIE_ICM485_2 0x1111 | ||
| 1969 | #define PCI_DEVICE_ID_ACCESIO_MPCIE_ICM422_4 0x1118 | ||
| 1970 | #define PCI_DEVICE_ID_ACCESIO_MPCIE_ICM485_4 0x1119 | ||
| 1971 | #define PCI_DEVICE_ID_ACCESIO_PCIE_ICM_2S 0x1152 | ||
| 1972 | #define PCI_DEVICE_ID_ACCESIO_PCIE_ICM_4S 0x115A | ||
| 1973 | #define PCI_DEVICE_ID_ACCESIO_PCIE_ICM232_2 0x1190 | ||
| 1974 | #define PCI_DEVICE_ID_ACCESIO_MPCIE_ICM232_2 0x1191 | ||
| 1975 | #define PCI_DEVICE_ID_ACCESIO_PCIE_ICM232_4 0x1198 | ||
| 1976 | #define PCI_DEVICE_ID_ACCESIO_MPCIE_ICM232_4 0x1199 | ||
| 1977 | #define PCI_DEVICE_ID_ACCESIO_PCIE_ICM_2SM 0x11D0 | ||
| 1978 | #define PCI_DEVICE_ID_ACCESIO_PCIE_COM422_4 0x105A | ||
| 1979 | #define PCI_DEVICE_ID_ACCESIO_PCIE_COM485_4 0x105B | ||
| 1980 | #define PCI_DEVICE_ID_ACCESIO_PCIE_COM422_8 0x106A | ||
| 1981 | #define PCI_DEVICE_ID_ACCESIO_PCIE_COM485_8 0x106B | ||
| 1982 | #define PCI_DEVICE_ID_ACCESIO_PCIE_COM232_4 0x1098 | ||
| 1983 | #define PCI_DEVICE_ID_ACCESIO_PCIE_COM232_8 0x10A9 | ||
| 1984 | #define PCI_DEVICE_ID_ACCESIO_PCIE_COM_4SM 0x10D9 | ||
| 1985 | #define PCI_DEVICE_ID_ACCESIO_PCIE_COM_8SM 0x10E9 | ||
| 1986 | #define PCI_DEVICE_ID_ACCESIO_PCIE_ICM_4SM 0x11D8 | ||
| 1987 | |||
| 1988 | |||
| 1989 | |||
| 1953 | /* Unknown vendors/cards - this should not be in linux/pci_ids.h */ | 1990 | /* Unknown vendors/cards - this should not be in linux/pci_ids.h */ |
| 1954 | #define PCI_SUBDEVICE_ID_UNKNOWN_0x1584 0x1584 | 1991 | #define PCI_SUBDEVICE_ID_UNKNOWN_0x1584 0x1584 |
| 1955 | #define PCI_SUBDEVICE_ID_UNKNOWN_0x1588 0x1588 | 1992 | #define PCI_SUBDEVICE_ID_UNKNOWN_0x1588 0x1588 |
| @@ -5112,6 +5149,108 @@ static struct pci_device_id serial_pci_tbl[] = { · 3156 unmodified lines | |||
| 5112 | PCI_ANY_ID, PCI_ANY_ID, | 5149 | PCI_ANY_ID, PCI_ANY_ID, |
| 5113 | 0, | 5150 | 0, |
| 5114 | 0, pbn_pericom_PI7C9X7958 }, | 5151 | 0, pbn_pericom_PI7C9X7958 }, |
| 5152 | /* | ||
| 5153 | * ACCES I/O Products quad | ||
| 5154 | */ | ||
| 5155 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM_2SDB, | ||
| 5156 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5157 | pbn_pericom_PI7C9X7954 }, | ||
| 5158 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_COM_2S, | ||
| 5159 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5160 | pbn_pericom_PI7C9X7954 }, | ||
| 5161 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM_4SDB, | ||
| 5162 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5163 | pbn_pericom_PI7C9X7954 }, | ||
| 5164 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_COM_4S, | ||
| 5165 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5166 | pbn_pericom_PI7C9X7954 }, | ||
| 5167 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM232_2DB, | ||
| 5168 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5169 | pbn_pericom_PI7C9X7954 }, | ||
| 5170 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_COM232_2, | ||
| 5171 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5172 | pbn_pericom_PI7C9X7954 }, | ||
| 5173 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM232_4DB, | ||
| 5174 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5175 | pbn_pericom_PI7C9X7954 }, | ||
| 5176 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_COM232_4, | ||
| 5177 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5178 | pbn_pericom_PI7C9X7954 }, | ||
| 5179 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM_2SMDB, | ||
| 5180 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5181 | pbn_pericom_PI7C9X7954 }, | ||
| 5182 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_COM_2SM, | ||
| 5183 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5184 | pbn_pericom_PI7C9X7954 }, | ||
| 5185 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM_4SMDB, | ||
| 5186 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5187 | pbn_pericom_PI7C9X7954 }, | ||
| 5188 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_COM_4SM, | ||
| 5189 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5190 | pbn_pericom_PI7C9X7954 }, | ||
| 5191 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_ICM485_1, | ||
| 5192 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5193 | pbn_pericom_PI7C9X7954 }, | ||
| 5194 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_ICM422_2, | ||
| 5195 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5196 | pbn_pericom_PI7C9X7954 }, | ||
| 5197 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_ICM485_2, | ||
| 5198 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5199 | pbn_pericom_PI7C9X7954 }, | ||
| 5200 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_ICM422_4, | ||
| 5201 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5202 | pbn_pericom_PI7C9X7954 }, | ||
| 5203 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_ICM485_4, | ||
| 5204 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5205 | pbn_pericom_PI7C9X7954 }, | ||
| 5206 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_ICM_2S, | ||
| 5207 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5208 | pbn_pericom_PI7C9X7954 }, | ||
| 5209 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_ICM_4S, | ||
| 5210 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5211 | pbn_pericom_PI7C9X7954 }, | ||
| 5212 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_ICM232_2, | ||
| 5213 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5214 | pbn_pericom_PI7C9X7954 }, | ||
| 5215 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_ICM232_2, | ||
| 5216 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5217 | pbn_pericom_PI7C9X7954 }, | ||
| 5218 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_ICM232_4, | ||
| 5219 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5220 | pbn_pericom_PI7C9X7954 }, | ||
| 5221 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_ICM232_4, | ||
| 5222 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5223 | pbn_pericom_PI7C9X7954 }, | ||
| 5224 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_ICM_2SM, | ||
| 5225 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5226 | pbn_pericom_PI7C9X7954 }, | ||
| 5227 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM422_4, | ||
| 5228 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5229 | pbn_pericom_PI7C9X7958 }, | ||
| 5230 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM485_4, | ||
| 5231 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5232 | pbn_pericom_PI7C9X7958 }, | ||
| 5233 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM422_8, | ||
| 5234 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5235 | pbn_pericom_PI7C9X7958 }, | ||
| 5236 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM485_8, | ||
| 5237 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5238 | pbn_pericom_PI7C9X7958 }, | ||
| 5239 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM232_4, | ||
| 5240 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5241 | pbn_pericom_PI7C9X7958 }, | ||
| 5242 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM232_8, | ||
| 5243 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5244 | pbn_pericom_PI7C9X7958 }, | ||
| 5245 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM_4SM, | ||
| 5246 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5247 | pbn_pericom_PI7C9X7958 }, | ||
| 5248 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM_8SM, | ||
| 5249 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5250 | pbn_pericom_PI7C9X7958 }, | ||
| 5251 | { PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_ICM_4SM, | ||
| 5252 | PCI_ANY_ID, PCI_ANY_ID, 0, 0, | ||
| 5253 | pbn_pericom_PI7C9X7958 }, | ||
| 5115 | /* | 5254 | /* |
| 5116 | * Topic TP560 Data/Fax/Voice 56k modem (reported by Evan Clarke) | 5255 | * Topic TP560 Data/Fax/Voice 56k modem (reported by Evan Clarke) |
| 5117 | */ | 5256 | */ |
| @@ -1618,8 +1618,6 @@ static void serial8250_disable_ms(struct uart_port *port) · 1617 unmodified lines | |||
| 1618 | if (up->bugs & UART_BUG_NOMSR) | 1618 | if (up->bugs & UART_BUG_NOMSR) |
| 1619 | return; | 1619 | return; |
| 1620 | 1620 | ||
| 1621 | mctrl_gpio_disable_ms(up->gpios); | ||
| 1622 | |||
| 1623 | up->ier &= ~UART_IER_MSI; | 1621 | up->ier &= ~UART_IER_MSI; |
| 1624 | serial_port_out(port, UART_IER, up->ier); | 1622 | serial_port_out(port, UART_IER, up->ier); |
| 1625 | } | 1623 | } |
| @@ -1632,8 +1630,6 @@ static void serial8250_enable_ms(struct uart_port *port) · 6 unmodified lines | |||
| 1632 | if (up->bugs & UART_BUG_NOMSR) | 1630 | if (up->bugs & UART_BUG_NOMSR) |
| 1633 | return; | 1631 | return; |
| 1634 | 1632 | ||
| 1635 | mctrl_gpio_enable_ms(up->gpios); | ||
| 1636 | |||
| 1637 | up->ier |= UART_IER_MSI; | 1633 | up->ier |= UART_IER_MSI; |
| 1638 | 1634 | ||
| 1639 | serial8250_rpm_get(up); | 1635 | serial8250_rpm_get(up); |
| @@ -1917,8 +1913,7 @@ unsigned int serial8250_do_get_mctrl(struct uart_port *port) · 277 unmodified lines | |||
| 1917 | ret |= TIOCM_DSR; | 1913 | ret |= TIOCM_DSR; |
| 1918 | if (status & UART_MSR_CTS) | 1914 | if (status & UART_MSR_CTS) |
| 1919 | ret |= TIOCM_CTS; | 1915 | ret |= TIOCM_CTS; |
| 1920 | 1916 | return ret; | |
| 1921 | return mctrl_gpio_get(up->gpios, &ret); | ||
| 1922 | } | 1917 | } |
| 1923 | EXPORT_SYMBOL_GPL(serial8250_do_get_mctrl); | 1918 | EXPORT_SYMBOL_GPL(serial8250_do_get_mctrl); |
| 1924 | 1919 | ||
| @@ -6,7 +6,6 @@ · 5 unmodified lines | |||
| 6 | config SERIAL_8250 | 6 | config SERIAL_8250 |
| 7 | tristate "8250/16550 and compatible serial support" | 7 | tristate "8250/16550 and compatible serial support" |
| 8 | select SERIAL_CORE | 8 | select SERIAL_CORE |
| 9 | select SERIAL_MCTRL_GPIO if GPIOLIB | ||
| 10 | ---help--- | 9 | ---help--- |
| 11 | This selects whether you want to include the driver for the standard | 10 | This selects whether you want to include the driver for the standard |
| 12 | serial ports. The standard answer is Y. People who might say N | 11 | serial ports. The standard answer is Y. People who might say N |
| @@ -111,7 +111,6 @@ struct uart_8250_port { · 110 unmodified lines | |||
| 111 | * if no_console_suspend | 111 | * if no_console_suspend |
| 112 | */ | 112 | */ |
| 113 | unsigned char probe; | 113 | unsigned char probe; |
| 114 | struct mctrl_gpios *gpios; | ||
| 115 | #define UART_PROBE_RSA (1 << 0) | 114 | #define UART_PROBE_RSA (1 << 0) |
| 116 | 115 | ||
| 117 | /* | 116 | /* |