SSB bus driver documentation?
Rafał Miłecki
zajec5 at gmail.com
Mon Mar 7 17:37:03 EST 2011
I spent few hours trying to understand/track ssb code and I'm giving
up now. I can not understand basic code flow.
We have some ssb_modinit, but I don't see it performing scanning bus
at all. For some reason this function is aware of b43 bridge and gige
driver. GigE driver doesn't seem to be module, while b43 seems to be.
gige uses pci_device_id, while b43 uses ssb_device_id. I have no idea
what b43 PCI bridge is. Flow seems to be ugly, at ssb_modinit we call
ssb_gige_init which calls out ssb_driver_register. There is some magic
"ssb_attach_queued_buses", which sounds like SSB (which is bus)
attaching... buses.
I wanted to at least understand when scanning of cores is done. I
found "ssb_bus_scan", it is called from "ssb_bus_register". This
function is called from code for every host, for example:
ssb_bus_pcibus_register. This one seems to be called from
ssb_pcihost_probe, however pcihost_wrapper is not module itself, it
does not contains any devices table. This function seems to be
registered with pci_register_driver from ssb_pcihost_register. That
one gets called b43_pci_ssb_bridge_init. But damn, I don't remember
anymore where I was 5 step ago. Not to mention whole code path.
OK, I wrote all that to show you my confusion. I don't think asking
any single questions will help understanding that. Is there any
documentation I could read to get any basic understanding of ssb?
P.S.
Even one more thing: try to guess by function's name what can it be
responsible for: "ssb_bus_ssbbus_register". It is used by some
/arch/mips/bcm47xx/setup.c, but I can not image digging into next
driver to understand whole architecture :|
--
Rafał
More information about the b43-dev
mailing list