[PATCH] restore parport_pc probing on powermac
authorOlaf Hering <olaf@aepfle.de>
Tue, 3 Oct 2006 08:13:56 +0000 (01:13 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Tue, 3 Oct 2006 15:03:41 +0000 (08:03 -0700)
The last change for partport_pc did fix the common case for all PowerMacs,
but it broke the case for PCI multiport IO cards.  In fact, the config
option CONFIG_PARPORT_PC_SUPERIO=y lead to a hard crash when cups probed
the parport driver.  It enables the winbond and smsc probing.

Remove the PARPORT_BASE check again, parport_pc_find_nonpci_ports() will
take care of it.  All powerpc configs should have
CONFIG_PARPORT_PC_SUPERIO=n, the code did not find anything on the chrp
boards we tested it on.

Tested on a G4/466 with a PCI card:

0001:10:13.0 Serial controller: Timedia Technology Co Ltd PCI2S550 (Dual 16550 UART) (rev 01) (prog-if 02 [16550])
        Subsystem: Timedia Technology Co Ltd Unknown device 5079
        Control: I/O+ Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping+ SERR- FastB2B-
        Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Interrupt: pin A routed to IRQ 53
        Region 0: I/O ports at f2000800 [size=32]
        Region 2: I/O ports at f2000870 [size=8]
        Region 3: I/O ports at f2000860 [size=8]

Signed-off-by: Olaf Hering <olaf@aepfle.de>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Adam Belay <ambx1@neo.rr.com>
Cc: Dmitry Torokhov <dtor@mail.ru>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
arch/powerpc/platforms/pseries/setup.c
drivers/parport/parport_pc.c
include/asm-powerpc/io.h

index 98189d8efaca8810f63c0c654932a0a4e9d2e44a..4f0097f31bdbe1dc8d0ff3c4d6897cbb44a714a2 100644 (file)
@@ -415,12 +415,6 @@ static int pSeries_check_legacy_ioport(unsigned int baseport)
                        return -ENODEV;
                of_node_put(np);
                break;
-       case PARALLEL_BASE:
-               np = of_find_node_by_type(NULL, "parallel");
-               if (np == NULL)
-                       return -ENODEV;
-               of_node_put(np);
-               break;
        }
        return 0;
 }
index 43894ddec7dcfa9d4c8528703649baef60d9420b..fe800dc0be9f7fedfdf69e92ff262ebe0b51d787 100644 (file)
@@ -3374,10 +3374,6 @@ __setup("parport_init_mode=",parport_init_mode_setup);
 
 static int __init parport_pc_init(void)
 {
-#if defined(CONFIG_PPC_MERGE)
-       if (check_legacy_ioport(PARALLEL_BASE))
-               return -ENODEV;
-#endif
        if (parse_parport_params())
                return -EINVAL;
 
index 19b2ec1ec665c4b016525c5147851f7943c8f2ca..cbbd8c648df1341120e825b29c9d33a9763d234b 100644 (file)
@@ -11,7 +11,6 @@
 
 /* Check of existence of legacy devices */
 extern int check_legacy_ioport(unsigned long base_port);
-#define PARALLEL_BASE  0x378
 #define PNPBIOS_BASE   0xf000  /* only relevant for PReP */
 
 #ifndef CONFIG_PPC64