浏览代码

Merge master.kernel.org:/home/rmk/linux-2.6-serial

Linus Torvalds 19 年之前
父节点
当前提交
2149bcabc5
共有 3 个文件被更改,包括 16 次插入8 次删除
  1. 5 8
      drivers/serial/8250.c
  2. 10 0
      drivers/serial/8250_pci.c
  3. 1 0
      include/linux/pci_ids.h

+ 5 - 8
drivers/serial/8250.c

@@ -2595,15 +2595,11 @@ static int __init serial8250_init(void)
 	if (ret)
 	if (ret)
 		goto out;
 		goto out;
 
 
-	ret = platform_driver_register(&serial8250_isa_driver);
-	if (ret)
-		goto unreg_uart_drv;
-
 	serial8250_isa_devs = platform_device_alloc("serial8250",
 	serial8250_isa_devs = platform_device_alloc("serial8250",
 						    PLAT8250_DEV_LEGACY);
 						    PLAT8250_DEV_LEGACY);
 	if (!serial8250_isa_devs) {
 	if (!serial8250_isa_devs) {
 		ret = -ENOMEM;
 		ret = -ENOMEM;
-		goto unreg_plat_drv;
+		goto unreg_uart_drv;
 	}
 	}
 
 
 	ret = platform_device_add(serial8250_isa_devs);
 	ret = platform_device_add(serial8250_isa_devs);
@@ -2612,12 +2608,13 @@ static int __init serial8250_init(void)
 
 
 	serial8250_register_ports(&serial8250_reg, &serial8250_isa_devs->dev);
 	serial8250_register_ports(&serial8250_reg, &serial8250_isa_devs->dev);
 
 
-	goto out;
+	ret = platform_driver_register(&serial8250_isa_driver);
+	if (ret == 0)
+		goto out;
 
 
+	platform_device_del(serial8250_isa_devs);
  put_dev:
  put_dev:
 	platform_device_put(serial8250_isa_devs);
 	platform_device_put(serial8250_isa_devs);
- unreg_plat_drv:
-	platform_driver_unregister(&serial8250_isa_driver);
  unreg_uart_drv:
  unreg_uart_drv:
 	uart_unregister_driver(&serial8250_reg);
 	uart_unregister_driver(&serial8250_reg);
  out:
  out:

+ 10 - 0
drivers/serial/8250_pci.c

@@ -940,6 +940,7 @@ enum pci_board_num_t {
 	pbn_b2_bt_2_921600,
 	pbn_b2_bt_2_921600,
 	pbn_b2_bt_4_921600,
 	pbn_b2_bt_4_921600,
 
 
+	pbn_b3_2_115200,
 	pbn_b3_4_115200,
 	pbn_b3_4_115200,
 	pbn_b3_8_115200,
 	pbn_b3_8_115200,
 
 
@@ -1311,6 +1312,12 @@ static struct pciserial_board pci_boards[] __devinitdata = {
 		.uart_offset	= 8,
 		.uart_offset	= 8,
 	},
 	},
 
 
+	[pbn_b3_2_115200] = {
+		.flags		= FL_BASE3,
+		.num_ports	= 2,
+		.base_baud	= 115200,
+		.uart_offset	= 8,
+	},
 	[pbn_b3_4_115200] = {
 	[pbn_b3_4_115200] = {
 		.flags		= FL_BASE3,
 		.flags		= FL_BASE3,
 		.num_ports	= 4,
 		.num_ports	= 4,
@@ -2272,6 +2279,9 @@ static struct pci_device_id serial_pci_tbl[] = {
 		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
 		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
 		pbn_nec_nile4 },
 		pbn_nec_nile4 },
 
 
+	{	PCI_VENDOR_ID_DCI, PCI_DEVICE_ID_DCI_PCCOM2,
+		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
+		pbn_b3_2_115200 },
 	{	PCI_VENDOR_ID_DCI, PCI_DEVICE_ID_DCI_PCCOM4,
 	{	PCI_VENDOR_ID_DCI, PCI_DEVICE_ID_DCI_PCCOM4,
 		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
 		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
 		pbn_b3_4_115200 },
 		pbn_b3_4_115200 },

+ 1 - 0
include/linux/pci_ids.h

@@ -1992,6 +1992,7 @@
 #define PCI_VENDOR_ID_DCI		0x6666
 #define PCI_VENDOR_ID_DCI		0x6666
 #define PCI_DEVICE_ID_DCI_PCCOM4	0x0001
 #define PCI_DEVICE_ID_DCI_PCCOM4	0x0001
 #define PCI_DEVICE_ID_DCI_PCCOM8	0x0002
 #define PCI_DEVICE_ID_DCI_PCCOM8	0x0002
+#define PCI_DEVICE_ID_DCI_PCCOM2	0x0004
 
 
 #define PCI_VENDOR_ID_INTEL		0x8086
 #define PCI_VENDOR_ID_INTEL		0x8086
 #define PCI_DEVICE_ID_INTEL_EESSC	0x0008
 #define PCI_DEVICE_ID_INTEL_EESSC	0x0008