| From 1ede7dcca3c4fa15a518ab0473126f9c3e621e4c Mon Sep 17 00:00:00 2001 |
| From: Bryan O'Donoghue <pure.logic@nexus-software.ie> |
| Date: Tue, 23 Sep 2014 01:21:11 +0100 |
| Subject: serial: 8250: Add Quark X1000 to 8250_pci.c |
| |
| From: Bryan O'Donoghue <pure.logic@nexus-software.ie> |
| |
| commit 1ede7dcca3c4fa15a518ab0473126f9c3e621e4c upstream. |
| |
| Quark X1000 contains two designware derived 8250 serial ports. |
| Each port has a unique PCI configuration space consisting of |
| BAR0:UART BAR1:DMA respectively. |
| |
| Unlike the standard 8250 the register width is 32 bits for RHR,IER etc |
| The Quark UART has a fundamental clock @ 44.2368 MHz allowing for a |
| bitrate of up to about 2.76 megabits per second. |
| |
| This patch enables standard 8250 mode |
| |
| Signed-off-by: Bryan O'Donoghue <pure.logic@nexus-software.ie> |
| Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/tty/serial/8250/8250_pci.c | 21 +++++++++++++++++++++ |
| 1 file changed, 21 insertions(+) |
| |
| --- a/drivers/tty/serial/8250/8250_pci.c |
| +++ b/drivers/tty/serial/8250/8250_pci.c |
| @@ -1790,6 +1790,7 @@ pci_wch_ch353_setup(struct serial_privat |
| #define PCI_DEVICE_ID_COMMTECH_4222PCIE 0x0022 |
| #define PCI_DEVICE_ID_BROADCOM_TRUMANAGE 0x160a |
| #define PCI_DEVICE_ID_AMCC_ADDIDATA_APCI7800 0x818e |
| +#define PCI_DEVICE_ID_INTEL_QRK_UART 0x0936 |
| |
| #define PCI_VENDOR_ID_SUNIX 0x1fd4 |
| #define PCI_DEVICE_ID_SUNIX_1999 0x1999 |
| @@ -1900,6 +1901,13 @@ static struct pci_serial_quirk pci_seria |
| .subdevice = PCI_ANY_ID, |
| .setup = byt_serial_setup, |
| }, |
| + { |
| + .vendor = PCI_VENDOR_ID_INTEL, |
| + .device = PCI_DEVICE_ID_INTEL_QRK_UART, |
| + .subvendor = PCI_ANY_ID, |
| + .subdevice = PCI_ANY_ID, |
| + .setup = pci_default_setup, |
| + }, |
| /* |
| * ITE |
| */ |
| @@ -2742,6 +2750,7 @@ enum pci_board_num_t { |
| pbn_ADDIDATA_PCIe_8_3906250, |
| pbn_ce4100_1_115200, |
| pbn_byt, |
| + pbn_qrk, |
| pbn_omegapci, |
| pbn_NETMOS9900_2s_115200, |
| pbn_brcm_trumanage, |
| @@ -3492,6 +3501,12 @@ static struct pciserial_board pci_boards |
| .uart_offset = 0x80, |
| .reg_shift = 2, |
| }, |
| + [pbn_qrk] = { |
| + .flags = FL_BASE0, |
| + .num_ports = 1, |
| + .base_baud = 2764800, |
| + .reg_shift = 2, |
| + }, |
| [pbn_omegapci] = { |
| .flags = FL_BASE0, |
| .num_ports = 8, |
| @@ -5194,6 +5209,12 @@ static struct pci_device_id serial_pci_t |
| pbn_byt }, |
| |
| /* |
| + * Intel Quark x1000 |
| + */ |
| + { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_QRK_UART, |
| + PCI_ANY_ID, PCI_ANY_ID, 0, 0, |
| + pbn_qrk }, |
| + /* |
| * Cronyx Omega PCI |
| */ |
| { PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_CRONYX_OMEGA, |