From: Otto M. <ot...@dr...> - 2002-04-30 06:42:29
|
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi, I've been experimenting with getting my SkyLine 11Mbs with PCI adapter working with the wireless driver in my B&W PowerMac. So far, I've been able to get the card recognized by the kernel using the standard 10.1.4 IOPCCardFamiliy driver. So that is good news. But starting the card either results in a mapping error, or in a kernel panic... These are the steps I've done: I've put an entry into the the Info.plist file of the IOPCCardFamily driver: <key>PowerMac1,1</key> <dict> <key>I/O Port Ranges</key> <array> <data> AAAAAAAAj/8= </data> <data> AACgAAAA//8= </data> </array> <key>Memory Ranges</key> <array> <data> hAAAAJ////8= </data> </array> </dict> (These values are based on an educated guess, see below) Using this condfig, my SkyLine card gets recognized (there seems to be a type in the Info.plist of the WirelessDriver, it lists the/a Skyline card as having number HFA3843x, while my card report number HFA384x), see below for the ioreg listings. The problem is that initializing the card fails. Here are the system.log entries: Apr 28 13:49:54 power-eth mach_kernel: org_noncontiguous_WirelessDriver::probe(pccard156,2) Apr 28 13:49:54 power-eth mach_kernel: org_noncontiguous_WirelessDriver::probe(pccard156,2) Apr 28 13:49:54 power-eth mach_kernel: org_noncontiguous_WirelessDriver::start(pccard156,2) <1> Apr 28 13:49:54 power-eth mach_kernel: Ethernet(BMac): Link up at 10 Mbps - Half Duplex Apr 28 13:49:54 power-eth mach_kernel: IOKernelDebugger: Debugger attached Apr 28 13:49:54 power-eth mach_kernel: IOPCCard info: IOPCCard16Enabler::configure using index 0x01: Vcc 3. 3, irq 255, io 0x0000-0x003f Apr 28 13:49:54 power-eth mach_kernel: Didn't make map 00000000 : 00000040 Apr 28 13:49:54 power-eth mach_kernel: org_noncontiguous_WirelessDriver: Map Failed Apr 28 13:49:54 power-eth mach_kernel: org_noncontiguous_WirelessDriver::start(provider=0x11da400, this=0x11d e000) ** ABORTING! ** Apr 28 13:49:54 power-eth mach_kernel: org_noncontiguous_WirelessDriver::start(pccard156,2) <2> failed Apr 28 13:49:54 power-eth mach_kernel: org_noncontiguous_WirelessDriver::start(pccard156,2) <1> Apr 28 13:49:54 power-eth mach_kernel: IOPCCard info: IOPCCard16Enabler::configure using index 0x01: Vcc 3. 3, irq 255, io 0x0000-0x003f Apr 28 13:49:54 power-eth mach_kernel: Didn't make map 00000000 : 00000040 Apr 28 13:49:54 power-eth mach_kernel: org_noncontiguous_WirelessDriver: Map Failed Apr 28 13:49:54 power-eth mach_kernel: org_noncontiguous_WirelessDriver::start(provider=0x11da400, this=0x11f 6000) ** ABORTING! ** Apr 28 13:49:54 power-eth mach_kernel: org_noncontiguous_WirelessDriver::start(pccard156,2) <2> failed So it looks like the card cannot be mapped into memory. Since tha card is matched both by the edited HFA entry and the pccard156,2 entry, it gets two attempts, I guess. The irq (255) also looks suspicious to me. Using LinuxPPC lspci -vv on the same machine (which works fine, after having edited the /etc/pcmcia/config.opts to extend the memory range to start from 0x80000000, instead of 0x90000000), I can see that the card gets mapped to address 0x80885000: 01:04.0 CardBus bridge: Texas Instruments PCI1410 PC card Cardbus Controller (rev 01) Subsystem: SCM Microsystems: Unknown device 3000 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- Latency: 16, cache line size 08 Interrupt: pin A routed to IRQ 25 Region 0: Memory at 80885000 (32-bit, non-prefetchable) [size=4K] Bus: primary=80, secondary=1c, subordinate=00, sec-latency=176 I/O window 0: 00000000-00000003 I/O window 1: 00000000-00000003 BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset+ 16bInt- PostWrite+ 16-bit legacy interface ports at 0001 And here's the cardtl ident output: Socket 0: product info: "INTERSIL", "HFA384x/IEEE", "Version 01.02", "" manfid: 0x0156, 0x0002 function: 6 (network) If I adapt the memory region in Info.plist of the IOPCCardFamily driver to start with address 0x80000000 (value gAAAAJ////8=), I get a kernel panic in the IOPCCardFamily driver. With different values for the mem range (copied from other entries in the sme file) I also saw panics in the WirelessDriver, being called from the IOPCCardFamily driver. Do you have any suggestions or hints? Like anwers to the questions: - - What should be the memory range of the in the Info.plist of the PowerMac1,1 entry in the IOPCCardFamily driver? - - What should be the Info.plist values of the SkyLine 11mbs card? Has the HFA entry a typo or not? - - Is the interrupt value of 255 indeed wrong? - - What debugging strategy should I use? Thanks in advance, Otto Below are the ioreg -l listings: | | | +-o IOPCCardBridge <class IOPCCardBridge> | | | | { | | | | "Bridge IO Ranges" = (0,36863,40960,65535) | | | | "IOPersonalityName" = "IOPCCardFamily" | | | | "Configuration Settings" = {"PowerBook"={"Memory Ranges"=(<90000000afffffff>),"I/O Port Ranges"=(<fe000000fe00ffff>)},"PowerBook1,1"={"Memory Ranges"=(<900000009fffffff>),"I/O Port Ranges"=(<fe000000fe00ffff>)},"PowerBook3,4"={"Memory Ranges"=(<900000009fffffff>),"I/O Port Ranges"=(<f2000000f2008fff>,<f200a000f200ffff>)},"PowerBook3,1"={"Memory Ranges"=(<900000009fffffff>),"I/O Port Ranges"=(<f2000000f2000fff>,<f2002000f200ffff>)},"PowerBook3,2"={" Memory Ranges"=(<900000009fffffff>),"I/O Port Ranges"=(<f2000000f2008fff>,<f200a000f200ffff>)},"PowerBook3,3"={"Memory Ranges"=(<900000009fffffff>),"I/O Port Ranges"=(<f2000000f2008fff>,<f200a000f200ffff>)},"PowerMac1,1"={"Memory Ranges"=(<840000009fffffff>),"I/O Port Ranges"=(<0000000000008fff>,<0000a0000000ffff>) },"X86PC"={"Memory Ranges"=(<000c0000000fffff>,<a0000000a0ffffff>,<6000000060ffffff>),"I/O Port Ranges"=(<00000100000004ff>,<00000800000008ff>,<00000c0000000cff>)}} | | | | "Debug Settings" = {"Card Services"=3,"Card Bus"=3,"Driver Services"=4,"i82365"=2} | | | | "Bridge Memory Ranges" = (-2080374784,-1610612737) | | | | "IOProviderClass" = "IOPCIDevice" | | | | "CFBundleIdentifier" = "com.apple.iokit.IOPCCardFamily" | | | | "Power Management private data" = "{ this object = 01127600, interested driver = 01127600, driverDesire = 2, deviceDesire = 0, ourDesire dPowerState = 2, previousRequest = 2 }" | | | | "IOKitDebug" = 0 | | | | "IOMatchCategory" = "IODefaultMatchCategory" | | | | "IOPCIClassMatch" = "0x06070000" | | | | "Power Management protected data" = " { theNumberOfPowerStates = 3, version 1, power state 0 = { capabilityFlags 00000000, outputPowerCha racter 00000000, inputPowerRequirement 00000000, staticPower 0, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownT ime 0, powerDomainBudget 0 }, power state 1 = { capabilityFlags 00000000, outputPowerCharacter 00000400, inputPowerRequirement 00000400, staticPower 0, unbudg etedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, power state 2 = { capabilityFlags 000000 02, outputPowerCharacter 00000002, inputPowerRequirement 00000002, staticPower 0, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLo wer 0, settleDownTime 0, powerDomainBudget 0 }, aggressiveness = 0, myCurrentState = 2, parentsCurrentPowerFlags = 00000002, maxCapability = 2 }" | | | | "IOClass" = "IOPCCardBridge" | | | | "IOProbeScore" = -100 | | | | "ParentKey" = "KEXTBundle?com.apple.iokit.IOPCCardFamily" | | | | } | | | | | | | +-o pccard156,2@0,0 <class IOPCCard16Device> | | | { | | | "VersionOneInfo" = ("INTERSIL","HFA384x/IEEE","Version 01.02","") | | | "VendorID" = 342 | | | "DeviceID" = 2 | | | "IOInterruptSpecifiers" = (<00000000>) | | | "Power Management private data" = "{ this object = 011ebf00, interested driver = 011ebf00, driverDesire = 0, deviceDesire = 0, ourDesi redPowerState = 2, previousRequest = 2 }" | | | "IODeviceMemory" = ("IOGeneralMemoryDescriptor is not serializable") | | | "FunctionExtension" = (<0107>,<0240420f00>,<0280841e00>,<0260ec5300>,<02c0d8a700>,<0307>,<04060000c5099172> ,<0501>) | | | "Power Management protected data" = " { theNumberOfPowerStates = 3, version 1, power state 0 = { capabilityFlags 00000000, outputPowerC haracter 00000000, inputPowerRequirement 00000000, staticPower 0, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDow nTime 0, powerDomainBudget 0 }, power state 1 = { capabilityFlags 00000000, outputPowerCharacter 00000400, inputPowerRequirement 00000400, staticPower 0, unbu dgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeToLower 0, settleDownTime 0, powerDomainBudget 0 }, power state 2 = { capabilityFlags 0000 0000, outputPowerCharacter 00000002, inputPowerRequirement 00000002, staticPower 0, unbudgetedPower 0, powerToAttain 0, timeToAttain 0, settleUpTime 0, timeTo Lower 0, settleDownTime 0, powerDomainBudget 0 }, aggressiveness = 0, myCurrentState = 2, parentsCurrentPowerFlags = 00000002, maxCapability = 2 }" | | | "FunctionName" = "Network Adapter" | | | "FunctionNumber" = 0 | | | "IOInterruptControllers" = ("IOPCCardInterruptController00010400") | | | "FunctionID" = 6 | | | "SocketNumber" = 0 | | | "IOName" = "pccard156,2" | | | } - -- Otto Moerbeek ot...@dr... Public Key fingerprint: 13F7 EB00 14D7 7810 88DA CDDE DBF1 B5AB 2FB7 A5A3 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (Darwin) Comment: For info see http://www.gnupg.org iD8DBQE8zjzI2/G1qy+3paMRAiwFAKCKYkImt+aXlDxPRVk0AQFEi6AD+wCgsGAm Q1a6y3DZ95LG4EqqHHy+r8I= =MoEo -----END PGP SIGNATURE----- |