> On 10/24/18 3:11 AM, Arnd Bergmann wrote: > > On Wed, Oct 17, 2018 at 11:30 PM Al Cooper wrote: > > Add support for Broadcom STB SoC's to the ohci platform driver. > > Signed-off-by: Al Cooper > --- > 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 > #include > #include > +#include > #include > #include > #include > @@ -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? The problem is that the const pdata from of_device_get_match() needs to be saved in device->platform_data which is not a const pointer (and can't be changed). How can I propagate the "const" to solve the problem? > > + } 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