On Wed, Oct 17, 2018 at 11:30 PM Al Cooper <alcooperx@xxxxxxxxx> wrote: > > Add support for Broadcom STB SoC's to the ohci platform driver. > > Signed-off-by: Al Cooper <alcooperx@xxxxxxxxx> > --- > drivers/usb/host/ohci-platform.c | 35 +++++++++++++++++++++++++++++------ > include/linux/usb/ohci_pdriver.h | 1 + > 2 files changed, 30 insertions(+), 6 deletions(-) > > diff --git a/drivers/usb/host/ohci-platform.c b/drivers/usb/host/ohci-platform.c > index 65a1c3fdc88c..363d6fa676a5 100644 > --- a/drivers/usb/host/ohci-platform.c > +++ b/drivers/usb/host/ohci-platform.c > @@ -22,6 +22,7 @@ > #include <linux/module.h> > #include <linux/err.h> > #include <linux/of.h> > +#include <linux/of_device.h> > #include <linux/platform_device.h> > #include <linux/pm_runtime.h> > #include <linux/reset.h> > @@ -99,12 +100,24 @@ static int ohci_platform_probe(struct platform_device *dev) > if (usb_disabled()) > return -ENODEV; > > - /* > - * Use reasonable defaults so platforms don't have to provide these > - * with DT probing on ARM. > - */ > - if (!pdata) > - pdata = &ohci_platform_defaults; > + if (!pdata) { > + const struct usb_ohci_pdata *match_pdata; > + > + match_pdata = of_device_get_match_data(&dev->dev); > + if (match_pdata) { > + pdata = devm_kzalloc(&dev->dev, sizeof(*pdata), > + GFP_KERNEL); > + if (!pdata) > + return -ENOMEM; > + *pdata = *match_pdata; It looks like you copy the const pdata to get a non-const version. Have you tried propagating the 'const' modifier so that users can rely on that here? > + } else { > + /* > + * Use reasonable defaults so platforms don't have > + * to provide these with DT probing on ARM. > + */ > + pdata = &ohci_platform_defaults; > + } > + } That would also allow you to unify it with the else path by listing the ohci_platform_defaults in the id table for all other compatible strings. Arnd