
10 Oct
2019
10 Oct
'19
1:47 p.m.
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.