On 10/10/19 1:25 PM, Igor Opaniuk wrote: [...] > * from which it derives offsets in the PHY and ANATOP register sets. > * > * Here we attempt to calculate these indexes from DT information as > - * well as we can. The USB controllers on all existing iMX6/iMX7 SoCs > - * are placed next to each other, at addresses incremented by 0x200. > - * Thus, the index is derived from the multiple of 0x200 offset from > - * the first controller address. > + * well as we can. The USB controllers on all existing iMX6 SoCs > + * are placed next to each other, at addresses incremented by 0x200, > + * and iMX7 their addresses are shifted by 0x1000. > + * Thus, the index is derived from the multiple of 0x200 (0x1000 for > + * iMX7) offset from the first controller address. > * > * However, to complete conversion of this driver to DT probing, the > * following has to be done: > @@ -531,10 +532,14 @@ 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. > */ > - fdt_size_t size; > - fdt_addr_t addr = devfdt_get_addr_size_index(dev, 0, &size); > +#if defined(CONFIG_MX6) > + u32 controller_spacing = 0x200; > +#elif defined(CONFIG_MX7) > + u32 controller_spacing = 0x10000; > +#endif > + fdt_addr_t addr = devfdt_get_addr_size_index(dev, 0, NULL);
This won't work with U-Boot that's compiled for both platforms, so you need some other way to discern those two things. Either something like cpu_is_...() or some DT match. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot