Message ID | 20200629021350.21262-5-peng.fan@nxp.com |
---|---|
State | New |
Headers | show |
Series | [1/7] usb: ehci-mx6: Add powerup_fixup implementation | expand |
On 6/29/20 4:13 AM, Peng Fan wrote: [...] > diff --git a/drivers/usb/host/ehci-mx6.c b/drivers/usb/host/ehci-mx6.c > index 046c6ab283..8090cb27fe 100644 > --- a/drivers/usb/host/ehci-mx6.c > +++ b/drivers/usb/host/ehci-mx6.c > @@ -687,7 +687,11 @@ static int ehci_usb_bind(struct udevice *dev) > * With these changes in place, the ad-hoc indexing goes away and > * the driver is fully converted to DT probing. > */ > - u32 controller_spacing = is_mx7() ? 0x10000 : 0x200; > + u32 controller_spacing; > + if (IS_ENABLED(CONFIG_MX6)) > + controller_spacing = 0x200; > + else > + controller_spacing = 0x10000; This looks related to this problem: 501547cec1 ("usb: ehci-mx6: Fix bus enumeration for DM case") Maybe instead of adding to the problem, it would make sense to convert the driver to DM fully and then this problem with figuring out offsets would go away ?
diff --git a/drivers/usb/host/ehci-mx6.c b/drivers/usb/host/ehci-mx6.c index 046c6ab283..8090cb27fe 100644 --- a/drivers/usb/host/ehci-mx6.c +++ b/drivers/usb/host/ehci-mx6.c @@ -687,7 +687,11 @@ static int ehci_usb_bind(struct udevice *dev) * With these changes in place, the ad-hoc indexing goes away and * the driver is fully converted to DT probing. */ - u32 controller_spacing = is_mx7() ? 0x10000 : 0x200; + u32 controller_spacing; + if (IS_ENABLED(CONFIG_MX6)) + controller_spacing = 0x200; + else + controller_spacing = 0x10000; fdt_addr_t addr = devfdt_get_addr_index(dev, 0); dev->req_seq = (addr - USB_BASE_ADDR) / controller_spacing; @@ -714,7 +718,7 @@ static int ehci_usb_probe(struct udevice *dev) } priv->ehci = ehci; - priv->portnr = dev->seq; + priv->portnr = dev->req_seq; priv->init_type = type; ret = board_usb_init(priv->portnr, priv->init_type); @@ -766,7 +770,7 @@ int ehci_usb_remove(struct udevice *dev) ehci_deregister(dev); - return board_usb_cleanup(dev->seq, priv->init_type); + return board_usb_cleanup(dev->req_seq, priv->init_type); } static const struct udevice_id mx6_usb_ids[] = {