Help - Search - Members - Calendar
Full Version: Devices Missing In Acpi (and The Difference Between Ioserivce & Ioacpiplane)
Project OS X Forums > Snow Leopard Guides & Tutorials > DSDT Patching
ArKay
On my Acer Aspire 5742g the DSDT doesn't contain all the devices from the PCI Express ports. One contains a Broadcom BCM57780 LAN card, the other an Atheros 9280 I have installed myself. The atheros driver doesn't seem to have any problems with that, the device is working out of the box.

The (patched) BCM driver however was complaining about the missing ACPI information. In my DSDT I have 4 RPx sections which don't contain any devices.

I have added the card at the appropriate RP01 like this:

CODE
            Device (RP01)
            {
                Name (_ADR, 0x001C0000)
                ...
                Device (PXS3)
                {
                    Name (_ADR, 0x00)
                    Name (_SUN, 0x00)
                                        
                    Method (_DSM, 4, NotSerialized) {
                        Store (Package (0x06) {
                            "AAPL,slot-name",
                            Buffer (0x09)
                            {
                                "Built In"
                            },
                            "model",
                            Buffer (0x26)
                            {
                                "Broadcom Corporation NetLink BCM57780"
                            },
                            "built-in",
                            Buffer (0x01)
                            {
                                0x01
                            }
                        }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)                                
                    }
                }
                ...
            }
        }


This information is now visible in the IOACPIPlane

CODE
      | +-o RP01@1c0000  <class IOACPIPlatformDevice, id 0x100000186, !registered, !matched, active, busy 0, retain 8>
      | | | {
      | | |   "acpi-wake-gpe" = 9
      | | |   "acpi-pci-pm" = Yes
      | | |   "device-properties" = {"acpi-device"="IOACPIPlatformDevice is not serializable","acpi-path"="IOACPIPlane:/_SB/PCI0@0/RP01@1c0000"}
      | | |   "acpi-wake-system-state" = 4
      | | |   "acpi-pci-routing-table" = <1800000000000000ffff00000000000010000000000000001800000001000000ffff00000000
000011000000000000001800000002000000ffff00000000000012000000000000001800000003000
000ffff00000000000013000000000000000000000000000000000000000000000000000000000000
00>
      | | |   "_STA" = 15
      | | |   "_ADR" = 1835008
      | | | }
      | | |
      | | +-o PXS3@0  <class IOACPIPlatformDevice, id 0x100000187, !registered, !matched, active, busy 0, retain 6>
      | |     {
      | |       "_STA" = 15
      | |       "_ADR" = 0
      | |       "acpi-pci-pm" = Yes
      | |       "acpi-wake-type" = 2
      | |       "device-properties" = {"acpi-path"="IOACPIPlane:/_SB/PCI0@0/RP01@1c0000/PXS3@0","acpi-device"="IOACPIPlatformDevice is not serializable","model"=<"Broadcom Corporation NetLink BCM57780">,"AAPL,slot-name"=<"Built In">,"built-in"=<01>}
      | |     }
      | |


In IOService however I see this:

QUOTE
| | | +-o PXS3@0 <class IOPCIDevice, id 0x1000001e0, registered, matched, active, busy 0 (5285 ms), retain 26>
| | | | {
| | | | "assigned-addresses" = <1000028200000000000010b60000000000000100>
| | | | "IOInterruptSpecifiers" = (<1000000007000000>,<0700000000000100>)
| | | | "class-code" = <00000200>
| | | | "IODeviceMemory" = (({"address"=18446744072469086208,"length"=65536})) | | | | "built-in" = <01> | | | | "subsystem-vendor-id" = <25100000> | | | | "IOPowerManagement" = {"ChildrenPowerState"=2,"CurrentPowerState"=2} | | | | "acpi-device" = "IOACPIPlatformDevice is not serializable" | | | | "IOPCIMSIMode" = Yes
| | | | "IOInterruptControllers" = ("io-apic-0","IOPCIMessagedInterruptController")
| | | | "name" = "ethernet"
| | | | "IOChildIndex" = 1
| | | | "device-id" = <92160000>
| | | | "vendor-id" = <e4140000>
| | | | "IOPCIExpressASPMDefault" = 3
| | | | "acpi-pmcap-offset" = 72
| | | | "compatible" = <"pci1025,36d","pci14e4,1692","pciclass,020000">
| | | | "IOPCIResourced" = Yes
| | | | "IOPCIExpressLinkCapabilities" = 445457
| | | | "acpi-path" = "IOACPIPlane:/_SB/PCI0@0/RP01@1c0000/PXS3@0"
| | | | "model" = "Unknown 5764"
| | | | "subsystem-id" = <6d030000> | | | | "revision-id" = <01000000>
| | | | "IOPCIExpressLinkStatus" = 4113
| | | | "AAPL,slot-name" = <"J5C1">
| | | | "IOName" = "ethernet"
| | | | "acpi-wake-type" = 2
| | | | "reg" = <00000200000000000000000000000000000000001000020200000000000000000000000000000
100>
| | | | }


model = "Unknown 5764", AAPL,slot-name = "J5C1"? Where does this information come from? It's not what I have set in the DSDT. Does the driver modify this information?
Slice
QUOTE (ArKay @ Jan 15 2011, 04:59 PM) *
model = "Unknown 5764", AAPL,slot-name = "J5C1"? Where does this information come from? It's not what I have set in the DSDT. Does the driver modify this information?

This information cames from SMBIOS <- Bootloader. This is PC BIOS type information, Hackintosh.
ArKay
I'm using Chameleon, why doesn't it use my DSDT information in this case?

Without my DSDT mod LAN wouldn't even be properly recognized, now it's at least working but showing incorrectly in System Profiler thanks to the wrong IOService information. And I still have to fix this:

AppleBCM5701Ethernet: 0 0 start - failed to find Ethernet Low Power ACPI methods

Am I doing anything wrong?
bdrako
if you want a custom name via "AAPL,Slot-name" dont use _SUN.... delete it, and try again
ArKay
Removed _SUN and additionally renamed the device to GIGE. At least now it shows AAPL,slot-name as "Built In", yet the other changes are still ignored (built-in=00 in IOService, 01 in ACPI, model still "Unknown 5764"),
bdrako
try this

CODE
Method (_DSM, 4, NotSerialized)
                    {
                        Store (Package ()
                            {
                                "AAPL,slot-name",
                                "built-in",
                                "built-in",
                                Buffer ()
                                {
                                    0x00
                                },

                                "model",
                                Buffer ()
                                {
                                    "Broadcom Corporation NetLink BCM57780"
                                },

                                "location",
                                Buffer ()
                                {
                                    "1"
                                }
                            }, Local0)
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }
ArKay
Tried that, but no go. I realized that the information does get modified by AppleBCM5701Ethernet.kext though. If I boot without it the info under PCI Cards (and in IOService) is as expected:

CODE
Broadcom Corporation NetLink BCM57780:

  Name:    ethernet
  Type:    Ethernet Controller
  Driver Installed:    No
  Bus:    PCI
  Slot:    built-in
  Vendor ID:    0x14e4
  Device ID:    0x1692
  Subsystem Vendor ID:    0x1025
  Subsystem ID:    0x036d
  Revision ID:    0x0001
  Link Width:    x1
  Link Speed:    2.5 GT/s


The problems is just cosmetic and the card is working so I'll just leave it at that.

Thanks for taking the time smile.gif
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2012 Invision Power Services, Inc.