On 10/25/12 11:47, Peter Crosthwaite wrote: > The capabilities register and operational register offsets can vary from one > EHCI implementation to the next. Parameterise accordingly.
> static Property ehci_properties[] = { > DEFINE_PROP_UINT32("maxframes", EHCIState, maxframes, 128), > + DEFINE_PROP_UINT16("capabase", EHCIState, capabase, 0), > + DEFINE_PROP_UINT16("opregbase", EHCIState, opregbase, 0x20), > DEFINE_PROP_END_OF_LIST(), > }; I don't think we want have this as properties. Just set them in initfn(). > @@ -2718,8 +2719,10 @@ static int usb_ehci_initfn(PCIDevice *dev) > pci_conf[0x6e] = 0x00; > pci_conf[0x6f] = 0xc0; // USBLEFCTLSTS > > + s->caps = g_malloc0(s->opregbase); I don't think we need to make that dynamic. opregbase just happened equal caps_size for pci-ehci due to packing these regions without space inbetween. > memory_region_init_io(&s->mem_caps, &ehci_mmio_caps_ops, s, > - "capabilities", OPREGBASE); > + "capabilities", s->opregbase); caps_size cheers, Gerd