Next-in-Thread Next Message

Ok Success: PCMCIA working on Lombard/Pismo 

Forum: Non-x86 PCMCIA Issues
Re: Question No PCMCIA success on Apple PowerBook PISMO (long, sorry) (Albrecht Dress)
Date: 2000, Aug 02
From: Albrecht Dress Albrecht.Dress

I finally got a working PCMCIA subsystem on a Lombard and Pismo PowerBook with both yaboot and BootX. Here is a short description of the necessary installation steps:

* get BenH's latest kernel sources 2.2.17pre13-ben1 form If you boot with yaboot, apply the small patch below. It fixes the values of three registers in the CardBus bridge (secondary and subordinate bus, interrupt line to device pin routing) which are not set correctly by OpenFirmware. If you boot with BootX, the very early stages of MacOS seem to do this, so it is not necessary to apply the patch in this case (it does not do any harm, though).

* get the PCMCIA package pcmcia-cs.25-Jul-00.tar.gz or later from and install it as usual. Due to a small bug, the latest stable release 3.1.19 does NOT work with the Pismo (but it does with the Lombard), as interrupts above 31 are not recognised. I think this will be fixed in (stable) 3.1.20.

* edit /etc/pcmcia/config.opts and leave only these two lines uncommented:

	include port 0x1000-0x1fff
	include memory 0x90000000-0x90ffffff

With this configuration, I use an Adaptec SlimSCSI 1480A scsi CardBus card. I do not know if all other cards ard supported, YMMV.

Have fun, Albrecht.

~~~~~~Patch follows here~~~~~~
--- linux-2.2.17pre13-ben1-orig/arch/ppc/kernel/pmac_pci.c      Wed Jul 26 12:12:15 2000
+++ linux-2.2.17pre13-ben1-pcmcia/arch/ppc/kernel/pmac_pci.c    Wed Jul 26 12:12:54 2000
@@ -741,6 +741,32 @@
                } else
                        fix_intr(bp->node->child, dev);
+#define PCI_DEVICE_ID_TI_PCI1211        0xac1e
+/* Multifunction Routing Register */
+#define TI1211_MF_ROUTING               0x008c  /* 32 bit */
+#define  TI1211_EN_PCI_INTA             0x02    /* route PCI interrupts */
+       {
+         struct pci_dev *dev;
+         for(dev = pci_devices; dev; dev = dev->next)
+           {
+            if (((dev->class >> 8) == PCI_CLASS_BRIDGE_CARDBUS) &&
+                    (dev->vendor == PCI_VENDOR_ID_TI) &&
+                    (dev->device == PCI_DEVICE_ID_TI_PCI1211))
+              {
+                /* Lombard, Pismo */
+                printk("pcibios_fixup: fixing TI PCI1211 CardBus bridge.\n");
+                pcibios_write_config_dword (dev->bus->number, dev->devfn,
+                                            TI1211_MF_ROUTING, TI1211_EN_PCI_INTA);
+                pcibios_write_config_byte (dev->bus->number, dev->devfn, 
+                                           PCI_SECONDARY_BUS, 1);
+                pcibios_write_config_byte (dev->bus->number, dev->devfn, 
+                                           PCI_SUBORDINATE_BUS, 4);
+              }
+           }
+       }


Next-in-Thread Next Message

Add Message to: "Success: PCMCIA working on Lombard/Pismo"

Members Subscribe Admin Mode Show Frames Help for HyperNews at 1.10