serial/8250: Add suport for later SUNIX (TIMEDIA) boards.
Add support for later SUNIX (TIMEDIA) Universal PCI Single and Multi-Port Communications Boards. These boards have PCI Vendor ID 1fd4 with device ID 1999 but otherwise appear to be the same as the TIMEDIA boards already supported by 8250_pci and parport_serial. Tested with: a. the two port serial board part number SER5037A, b. the two port serial and one port parallel board part number MIO5079A. Signed-off-by: Stephen Chivers <schivers@csc.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
		
							parent
							
								
									1651d0a9be
								
							
						
					
					
						commit
						abd7bacae6
					
				| @ -63,6 +63,7 @@ enum parport_pc_pci_cards { | ||||
| 	timedia_9079b, | ||||
| 	timedia_9079c, | ||||
| 	wch_ch353_2s1p, | ||||
| 	sunix_2s1p, | ||||
| }; | ||||
| 
 | ||||
| /* each element directly indexed from enum list, above */ | ||||
| @ -148,8 +149,12 @@ static struct parport_pc_pci cards[] = { | ||||
| 	/* timedia_9079b */             { 1, { { 2, 3 }, } }, | ||||
| 	/* timedia_9079c */             { 1, { { 2, 3 }, } }, | ||||
| 	/* wch_ch353_2s1p*/             { 1, { { 2, -1}, } }, | ||||
| 	/* sunix_2s1p */                { 1, { { 3, -1 }, } }, | ||||
| }; | ||||
| 
 | ||||
| #define PCI_VENDOR_ID_SUNIX		0x1fd4 | ||||
| #define PCI_DEVICE_ID_SUNIX_1999	0x1999 | ||||
| 
 | ||||
| static struct pci_device_id parport_serial_pci_tbl[] = { | ||||
| 	/* PCI cards */ | ||||
| 	{ PCI_VENDOR_ID_TITAN, PCI_DEVICE_ID_TITAN_110L, | ||||
| @ -246,8 +251,18 @@ static struct pci_device_id parport_serial_pci_tbl[] = { | ||||
| 	{ 0x1409, 0x7168, 0x1409, 0xb079, 0, 0, timedia_9079a }, | ||||
| 	{ 0x1409, 0x7168, 0x1409, 0xc079, 0, 0, timedia_9079b }, | ||||
| 	{ 0x1409, 0x7168, 0x1409, 0xd079, 0, 0, timedia_9079c }, | ||||
| 
 | ||||
| 	/* WCH CARDS */ | ||||
| 	{ 0x4348, 0x7053, 0x4348, 0x3253, 0, 0, wch_ch353_2s1p}, | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * More SUNIX variations. At least one of these has part number | ||||
| 	 * '5079A but subdevice 0x102. That board reports 0x0708 as | ||||
| 	 * its PCI Class. | ||||
| 	 */ | ||||
| 	{ PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999, PCI_VENDOR_ID_SUNIX, | ||||
| 	  0x0102, 0, 0, sunix_2s1p }, | ||||
| 
 | ||||
| 	{ 0, } /* terminate list */ | ||||
| }; | ||||
| MODULE_DEVICE_TABLE(pci,parport_serial_pci_tbl); | ||||
| @ -470,6 +485,12 @@ static struct pciserial_board pci_parport_serial_boards[] = { | ||||
| 		.base_baud      = 115200, | ||||
| 		.uart_offset    = 8, | ||||
| 	}, | ||||
| 	[sunix_2s1p] = { | ||||
| 		.flags		= FL_BASE0|FL_BASE_BARS, | ||||
| 		.num_ports	= 2, | ||||
| 		.base_baud	= 921600, | ||||
| 		.uart_offset	= 8, | ||||
| 	}, | ||||
| }; | ||||
| 
 | ||||
| struct parport_serial_private { | ||||
|  | ||||
| @ -1565,6 +1565,9 @@ pci_wch_ch353_setup(struct serial_private *priv, | ||||
| #define PCI_DEVICE_ID_COMMTECH_4222PCIE	0x0022 | ||||
| #define PCI_DEVICE_ID_BROADCOM_TRUMANAGE 0x160a | ||||
| 
 | ||||
| #define PCI_VENDOR_ID_SUNIX		0x1fd4 | ||||
| #define PCI_DEVICE_ID_SUNIX_1999	0x1999 | ||||
| 
 | ||||
| 
 | ||||
| /* Unknown vendors/cards - this should not be in linux/pci_ids.h */ | ||||
| #define PCI_SUBDEVICE_ID_UNKNOWN_0x1584	0x1584 | ||||
| @ -1960,6 +1963,23 @@ static struct pci_serial_quirk pci_serial_quirks[] __refdata = { | ||||
| 		.subdevice	= PCI_ANY_ID, | ||||
| 		.setup		= pci_timedia_setup, | ||||
| 	}, | ||||
| 	/*
 | ||||
| 	 * SUNIX (Timedia) cards | ||||
| 	 * Do not "probe" for these cards as there is at least one combination | ||||
| 	 * card that should be handled by parport_pc that doesn't match the | ||||
| 	 * rule in pci_timedia_probe. | ||||
| 	 * It is part number is MIO5079A but its subdevice ID is 0x0102. | ||||
| 	 * There are some boards with part number SER5037AL that report | ||||
| 	 * subdevice ID 0x0002. | ||||
| 	 */ | ||||
| 	{ | ||||
| 		.vendor		= PCI_VENDOR_ID_SUNIX, | ||||
| 		.device		= PCI_DEVICE_ID_SUNIX_1999, | ||||
| 		.subvendor	= PCI_VENDOR_ID_SUNIX, | ||||
| 		.subdevice	= PCI_ANY_ID, | ||||
| 		.init		= pci_timedia_init, | ||||
| 		.setup		= pci_timedia_setup, | ||||
| 	}, | ||||
| 	/*
 | ||||
| 	 * Exar cards | ||||
| 	 */ | ||||
| @ -4210,6 +4230,19 @@ static struct pci_device_id serial_pci_tbl[] = { | ||||
| 		PCI_VENDOR_ID_TIMEDIA, PCI_ANY_ID, 0, 0, | ||||
| 		pbn_b0_bt_1_921600 }, | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * SUNIX (TIMEDIA) | ||||
| 	 */ | ||||
| 	{	PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999, | ||||
| 		PCI_VENDOR_ID_SUNIX, PCI_ANY_ID, | ||||
| 		PCI_CLASS_COMMUNICATION_SERIAL << 8, 0xffff00, | ||||
| 		pbn_b0_bt_1_921600 }, | ||||
| 
 | ||||
| 	{	PCI_VENDOR_ID_SUNIX, PCI_DEVICE_ID_SUNIX_1999, | ||||
| 		PCI_VENDOR_ID_SUNIX, PCI_ANY_ID, | ||||
| 		PCI_CLASS_COMMUNICATION_MULTISERIAL << 8, 0xffff00, | ||||
| 		pbn_b0_bt_1_921600 }, | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * AFAVLAB serial card, from Harald Welte <laforge@gnumonks.org> | ||||
| 	 */ | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user