On Wed, Apr 8, 2020 at 9:56 AM Marek Vasut <ma...@denx.de> wrote: > > On 4/8/20 5:35 AM, Rayagonda Kokatanur wrote: > [...] > > +struct brcm_xhci_platdata { > > + unsigned int arcache; > > + unsigned int awcache; > > + uintptr_t hc_base; > > This could be struct xhci_hccr * instead , and then you can remove the > cast ...
If we make it struct xhci_hccr * then I think we need to type cast in readl and writel function. Please let me know ? > > > +}; > > + > > +static int xhci_brcm_probe(struct udevice *dev) > > +{ > > + struct brcm_xhci_platdata *plat = dev_get_platdata(dev); > > + struct xhci_hcor *hcor; > > + struct xhci_hccr *hcd; > > + int len, ret = 0; > > + > > + if (!plat) { > > + dev_err(dev, "Can't get xHCI Plat data\n"); > > + return -ENOMEM; > > + } > > + > > + hcd = dev_read_addr_ptr(dev); > > + if (!hcd) { > > + dev_err(dev, "Can't get the xHCI register base address\n"); > > + return -ENXIO; > > + } > > + > > + plat->hc_base = (uintptr_t)hcd; > > ... here. > > > + len = HC_LENGTH(xhci_readl(&hcd->cr_capbase)); > > + hcor = (struct xhci_hcor *)(plat->hc_base + len); > [...]