diff options
author | Niels de Vos <niels.devos@wincor-nixdorf.com> | 2007-07-16 02:41:35 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-16 12:05:50 -0400 |
commit | e7c310c36e5fdf1b83a459e5db167bfbd86137db (patch) | |
tree | e8e5de754a90d2cae9a61cea8d85b063dbaecf0e | |
parent | f84d5a76c50d9752cdec64a6e536ee3901b267f6 (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.c | 5 |
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]); |