On 06/25/2012 05:02 AM, Andreas Färber wrote:
Hi Peter,

Am 25.06.2012 11:34, schrieb Peter Crosthwaite:
I have a platform (Xilinx Zynq) that has a USB EHCI controller that
attaches directly to the system bus and not through PCI. We are
looking for a way to disentangle EHCI from PCI - currently it inherits
from TYPE_PCI_DEVICE:

static TypeInfo ehci_info = {
     .name          = "usb-ehci",
     .parent        = TYPE_PCI_DEVICE,
     .instance_size = sizeof(EHCIState),
     .class_init    = ehci_class_init,
};

How would we go about edit EHCI to inherit from TYPE_SYSBUS_DEVICE as well?

Gerd,

Does it make sense to have an EHCI bus type that inherits from USBBus?

That way we could change USBPortOps into methods of the USBBus that the subclass overrides.

That would strongly decouple the EHCI code from the PCI device. Then the ehci-pci device just needs to setup the EHCI bus and forward MMIO requests appropriately.

Regards,

Anthony Liguori


As mentioned recently, I need that for the Tegra platform as well,
please keep me in the loop.

Basically it means adding a second TypeInfo with its own class_init.
We'd need to have PCIEHCIState with PCIDevice as parent and a
SysBusEHCIState with SysBusDevice as parent, sharing a common EHCIState.
The m48t59 comes to mind as example with both ISADevice and
SysBusDevice. Maintaining VMState compatibility is likely going to be
tricky.

Following David's DMA refactoring this also means that the PCI DMA
helpers used in EHCI need to be replaced by the generic ones now
suggested by Ben, as done for OHCI.

Regards,
Andreas



Reply via email to