aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNiels de Vos <niels.devos@wincor-nixdorf.com>2007-07-16 02:41:35 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-07-16 12:05:50 -0400
commite7c310c36e5fdf1b83a459e5db167bfbd86137db (patch)
treee8e5de754a90d2cae9a61cea8d85b063dbaecf0e
parentf84d5a76c50d9752cdec64a6e536ee3901b267f6 (diff)
parport_pc: it887x fix
The IO port range requested by parport_pc.c:sio_ite_8872_probe is too small. The IO-ports of ttyS1 (0x2f8) will be missconfigured by the ITE-chip. The ITE starts looking for the chip a 0x2a0. An IO-portrange of 32 will not overwrite the ports of ttyS1. Therefore register 0x60 should be written with 0xe5000000, enabling the ITE and setting IO-portsize to 32 bytes. Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--drivers/parport/parport_pc.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/parport/parport_pc.c b/drivers/parport/parport_pc.c
index 7bfbad57879d..5d58ad55d85c 100644
--- a/drivers/parport/parport_pc.c
+++ b/drivers/parport/parport_pc.c
@@ -2424,7 +2424,6 @@ static int __devinit sio_ite_8872_probe (struct pci_dev *pdev, int autoirq,
2424 u32 ite8872set; 2424 u32 ite8872set;
2425 u32 ite8872_lpt, ite8872_lpthi; 2425 u32 ite8872_lpt, ite8872_lpthi;
2426 u8 ite8872_irq, type; 2426 u8 ite8872_irq, type;
2427 char *fake_name = "parport probe";
2428 int irq; 2427 int irq;
2429 int i; 2428 int i;
2430 2429
@@ -2432,11 +2431,11 @@ static int __devinit sio_ite_8872_probe (struct pci_dev *pdev, int autoirq,
2432 2431
2433 // make sure which one chip 2432 // make sure which one chip
2434 for(i = 0; i < 5; i++) { 2433 for(i = 0; i < 5; i++) {
2435 base_res = request_region(inta_addr[i], 0x8, fake_name); 2434 base_res = request_region(inta_addr[i], 32, "it887x");
2436 if (base_res) { 2435 if (base_res) {
2437 int test; 2436 int test;
2438 pci_write_config_dword (pdev, 0x60, 2437 pci_write_config_dword (pdev, 0x60,
2439 0xe7000000 | inta_addr[i]); 2438 0xe5000000 | inta_addr[i]);
2440 pci_write_config_dword (pdev, 0x78, 2439 pci_write_config_dword (pdev, 0x78,
2441 0x00000000 | inta_addr[i]); 2440 0x00000000 | inta_addr[i]);
2442 test = inb (inta_addr[i]); 2441 test = inb (inta_addr[i]);