Message ID | 1513059137-21593-8-git-send-email-j-keerthy@ti.com |
---|---|
State | Superseded |
Headers | show |
Series | omap: dmtimer: Move driver out of plat-omap | expand |
Keerthy, On Tue, Dec 12, 2017 at 11:42:16AM +0530, Keerthy wrote: > Adapt driver to utilize dmtimer pdata ops instead of pdata-quirks. > > Signed-off-by: Keerthy <j-keerthy@ti.com> > --- > > Changes in v4: > > * Switched to dev_get_platdata. Where do you expect dev.platform_data to be set? PWM driver is failing with: omap-dmtimer-pwm dmtimer-pwm: dmtimer pdata structure NULL omap-dmtimer-pwm: probe of dmtimer-pwm failed with error -22 Which I fixed with patch bellow, to be able to test your patchset. Also I'm running a bit out of time, so I'll send few clean up patches and event capture code to get some feedback early. Regards, ladis diff --git a/drivers/clocksource/timer-dm.c b/drivers/clocksource/timer-dm.c index 39be39e6a8dd..d3d8a49cae0d 100644 --- a/drivers/clocksource/timer-dm.c +++ b/drivers/clocksource/timer-dm.c @@ -773,6 +773,7 @@ static int omap_dm_timer_probe(struct platform_device *pdev) dev_err(dev, "%s: no platform data.\n", __func__); return -ENODEV; } + dev->platform_data = pdata; irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); if (unlikely(!irq)) { > > Changes in v3: > > * Used of_find_platdata_by_node function to fetch platform > data for timer node. > > drivers/pwm/pwm-omap-dmtimer.c | 39 ++++++++++++++++++++++----------------- > 1 file changed, 22 insertions(+), 17 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-pwm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Monday 18 December 2017 03:01 PM, Ladislav Michl wrote: > Keerthy, > > On Tue, Dec 12, 2017 at 11:42:16AM +0530, Keerthy wrote: >> Adapt driver to utilize dmtimer pdata ops instead of pdata-quirks. >> >> Signed-off-by: Keerthy <j-keerthy@ti.com> >> --- >> >> Changes in v4: >> >> * Switched to dev_get_platdata. > > Where do you expect dev.platform_data to be set? PWM driver is failing > with: > omap-dmtimer-pwm dmtimer-pwm: dmtimer pdata structure NULL > omap-dmtimer-pwm: probe of dmtimer-pwm failed with error -22 > > Which I fixed with patch bellow, to be able to test your patchset. Thanks! I will make the below patch part of my series. > > Also I'm running a bit out of time, so I'll send few clean up > patches and event capture code to get some feedback early. > > Regards, > ladis > > diff --git a/drivers/clocksource/timer-dm.c b/drivers/clocksource/timer-dm.c > index 39be39e6a8dd..d3d8a49cae0d 100644 > --- a/drivers/clocksource/timer-dm.c > +++ b/drivers/clocksource/timer-dm.c > @@ -773,6 +773,7 @@ static int omap_dm_timer_probe(struct platform_device *pdev) > dev_err(dev, "%s: no platform data.\n", __func__); > return -ENODEV; > } > + dev->platform_data = pdata; > > irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); > if (unlikely(!irq)) { > >> >> Changes in v3: >> >> * Used of_find_platdata_by_node function to fetch platform >> data for timer node. >> >> drivers/pwm/pwm-omap-dmtimer.c | 39 ++++++++++++++++++++++----------------- >> 1 file changed, 22 insertions(+), 17 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-pwm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Monday 18 December 2017 06:25 PM, Keerthy wrote: > > > On Monday 18 December 2017 03:01 PM, Ladislav Michl wrote: >> Keerthy, >> >> On Tue, Dec 12, 2017 at 11:42:16AM +0530, Keerthy wrote: >>> Adapt driver to utilize dmtimer pdata ops instead of pdata-quirks. >>> >>> Signed-off-by: Keerthy <j-keerthy@ti.com> >>> --- >>> >>> Changes in v4: >>> >>> * Switched to dev_get_platdata. >> >> Where do you expect dev.platform_data to be set? PWM driver is failing >> with: >> omap-dmtimer-pwm dmtimer-pwm: dmtimer pdata structure NULL >> omap-dmtimer-pwm: probe of dmtimer-pwm failed with error -22 >> >> Which I fixed with patch bellow, to be able to test your patchset. > > Thanks! I will make the below patch part of my series. > >> >> Also I'm running a bit out of time, so I'll send few clean up >> patches and event capture code to get some feedback early. >> >> Regards, >> ladis >> >> diff --git a/drivers/clocksource/timer-dm.c b/drivers/clocksource/timer-dm.c >> index 39be39e6a8dd..d3d8a49cae0d 100644 >> --- a/drivers/clocksource/timer-dm.c >> +++ b/drivers/clocksource/timer-dm.c >> @@ -773,6 +773,7 @@ static int omap_dm_timer_probe(struct platform_device *pdev) >> dev_err(dev, "%s: no platform data.\n", __func__); >> return -ENODEV; >> } >> + dev->platform_data = pdata; drivers/clocksource/timer-dm.c: In function 'omap_dm_timer_probe': drivers/clocksource/timer-dm.c:744:21: warning: assignment discards 'const' qualifier from pointer target type This cannot be done as we are assigning a const pointer to a non-const pointer. I will figure out a different way for this fix. >> >> irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); >> if (unlikely(!irq)) { >> >>> >>> Changes in v3: >>> >>> * Used of_find_platdata_by_node function to fetch platform >>> data for timer node. >>> >>> drivers/pwm/pwm-omap-dmtimer.c | 39 ++++++++++++++++++++++----------------- >>> 1 file changed, 22 insertions(+), 17 deletions(-) > -- > To unsubscribe from this list: send the line "unsubscribe linux-omap" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-pwm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tuesday 19 December 2017 10:28 AM, Keerthy wrote: > > > On Monday 18 December 2017 06:25 PM, Keerthy wrote: >> >> >> On Monday 18 December 2017 03:01 PM, Ladislav Michl wrote: >>> Keerthy, >>> >>> On Tue, Dec 12, 2017 at 11:42:16AM +0530, Keerthy wrote: >>>> Adapt driver to utilize dmtimer pdata ops instead of pdata-quirks. >>>> >>>> Signed-off-by: Keerthy <j-keerthy@ti.com> >>>> --- >>>> >>>> Changes in v4: >>>> >>>> * Switched to dev_get_platdata. >>> >>> Where do you expect dev.platform_data to be set? PWM driver is failing >>> with: >>> omap-dmtimer-pwm dmtimer-pwm: dmtimer pdata structure NULL >>> omap-dmtimer-pwm: probe of dmtimer-pwm failed with error -22 >>> >>> Which I fixed with patch bellow, to be able to test your patchset. >> >> Thanks! I will make the below patch part of my series. >> >>> >>> Also I'm running a bit out of time, so I'll send few clean up >>> patches and event capture code to get some feedback early. >>> >>> Regards, >>> ladis >>> >>> diff --git a/drivers/clocksource/timer-dm.c b/drivers/clocksource/timer-dm.c >>> index 39be39e6a8dd..d3d8a49cae0d 100644 >>> --- a/drivers/clocksource/timer-dm.c >>> +++ b/drivers/clocksource/timer-dm.c >>> @@ -773,6 +773,7 @@ static int omap_dm_timer_probe(struct platform_device *pdev) >>> dev_err(dev, "%s: no platform data.\n", __func__); >>> return -ENODEV; >>> } >>> + dev->platform_data = pdata; > > drivers/clocksource/timer-dm.c: In function 'omap_dm_timer_probe': > drivers/clocksource/timer-dm.c:744:21: warning: assignment discards > 'const' qualifier from pointer target type > > This cannot be done as we are assigning a const pointer to a non-const > pointer. > > I will figure out a different way for this fix. Ladis, I fixed that: diff --git a/drivers/clocksource/timer-dm.c b/drivers/clocksource/timer-dm.c index 1cbd954..e58f555 100644 --- a/drivers/clocksource/timer-dm.c +++ b/drivers/clocksource/timer-dm.c @@ -807,17 +807,21 @@ static int omap_dm_timer_probe(struct platform_device *pdev) struct resource *mem, *irq; struct device *dev = &pdev->dev; const struct of_device_id *match; - const struct dmtimer_platform_data *pdata; + struct dmtimer_platform_data *pdata; int ret; match = of_match_device(of_match_ptr(omap_timer_match), dev); - pdata = match ? match->data : dev->platform_data; + pdata = match ? (struct dmtimer_platform_data *)match->data : + dev->platform_data; if (!pdata && !dev->of_node) { dev_err(dev, "%s: no platform data.\n", __func__); return -ENODEV; } + if (!dev->platform_data) + dev->platform_data = pdata; + irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); if (unlikely(!irq)) { dev_err(dev, "%s: no IRQ resource.\n", __func__); @@ -946,7 +950,7 @@ static int omap_dm_timer_remove(struct platform_device *pdev) .write_status = omap_dm_timer_write_status, }; -static const struct dmtimer_platform_data omap3plus_pdata = { +static struct dmtimer_platform_data omap3plus_pdata = { .timer_errata = OMAP_TIMER_ERRATA_I103_I767, .timer_ops = &dmtimer_ops, }; Can you check at your end if this works for you? > >>> >>> irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); >>> if (unlikely(!irq)) { >>> >>>> >>>> Changes in v3: >>>> >>>> * Used of_find_platdata_by_node function to fetch platform >>>> data for timer node. >>>> >>>> drivers/pwm/pwm-omap-dmtimer.c | 39 ++++++++++++++++++++++----------------- >>>> 1 file changed, 22 insertions(+), 17 deletions(-) >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-omap" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html >> -- To unsubscribe from this list: send the line "unsubscribe linux-pwm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, Dec 19, 2017 at 01:55:48PM +0530, Keerthy wrote: > On Tuesday 19 December 2017 10:28 AM, Keerthy wrote: > > On Monday 18 December 2017 06:25 PM, Keerthy wrote: > >> On Monday 18 December 2017 03:01 PM, Ladislav Michl wrote: > >>> Keerthy, > >>> > >>> On Tue, Dec 12, 2017 at 11:42:16AM +0530, Keerthy wrote: > >>>> Adapt driver to utilize dmtimer pdata ops instead of pdata-quirks. > >>>> > >>>> Signed-off-by: Keerthy <j-keerthy@ti.com> > >>>> --- > >>>> > >>>> Changes in v4: > >>>> > >>>> * Switched to dev_get_platdata. > >>> > >>> Where do you expect dev.platform_data to be set? PWM driver is failing > >>> with: > >>> omap-dmtimer-pwm dmtimer-pwm: dmtimer pdata structure NULL > >>> omap-dmtimer-pwm: probe of dmtimer-pwm failed with error -22 > >>> > >>> Which I fixed with patch bellow, to be able to test your patchset. > >> > >> Thanks! I will make the below patch part of my series. > >> > >>> > >>> Also I'm running a bit out of time, so I'll send few clean up > >>> patches and event capture code to get some feedback early. > >>> > >>> Regards, > >>> ladis > >>> > >>> diff --git a/drivers/clocksource/timer-dm.c b/drivers/clocksource/timer-dm.c > >>> index 39be39e6a8dd..d3d8a49cae0d 100644 > >>> --- a/drivers/clocksource/timer-dm.c > >>> +++ b/drivers/clocksource/timer-dm.c > >>> @@ -773,6 +773,7 @@ static int omap_dm_timer_probe(struct platform_device *pdev) > >>> dev_err(dev, "%s: no platform data.\n", __func__); > >>> return -ENODEV; > >>> } > >>> + dev->platform_data = pdata; > > > > drivers/clocksource/timer-dm.c: In function 'omap_dm_timer_probe': > > drivers/clocksource/timer-dm.c:744:21: warning: assignment discards > > 'const' qualifier from pointer target type > > > > This cannot be done as we are assigning a const pointer to a non-const > > pointer. Oh, I didn't even assume it as proper fix, just to show what is missing :) But technically 'struct dmtimer_platform_data *pdata' is a constant which should not be changed. Also look how all that of_populate chain works - at the end const pointer is assigned to void* platform_data by simple (void *) overcast. > > I will figure out a different way for this fix. > > Ladis, > > I fixed that: > > diff --git a/drivers/clocksource/timer-dm.c b/drivers/clocksource/timer-dm.c > index 1cbd954..e58f555 100644 > --- a/drivers/clocksource/timer-dm.c > +++ b/drivers/clocksource/timer-dm.c > @@ -807,17 +807,21 @@ static int omap_dm_timer_probe(struct > platform_device *pdev) > struct resource *mem, *irq; > struct device *dev = &pdev->dev; > const struct of_device_id *match; > - const struct dmtimer_platform_data *pdata; > + struct dmtimer_platform_data *pdata; > int ret; > > match = of_match_device(of_match_ptr(omap_timer_match), dev); > - pdata = match ? match->data : dev->platform_data; > + pdata = match ? (struct dmtimer_platform_data *)match->data : > + dev->platform_data; All that seems needlesly complicated, what about patch bellow? > if (!pdata && !dev->of_node) { > dev_err(dev, "%s: no platform data.\n", __func__); > return -ENODEV; > } > > + if (!dev->platform_data) > + dev->platform_data = pdata; Does the above condition bring us anything? > irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); > if (unlikely(!irq)) { > dev_err(dev, "%s: no IRQ resource.\n", __func__); > @@ -946,7 +950,7 @@ static int omap_dm_timer_remove(struct > platform_device *pdev) > .write_status = omap_dm_timer_write_status, > }; > > -static const struct dmtimer_platform_data omap3plus_pdata = { > +static struct dmtimer_platform_data omap3plus_pdata = { > .timer_errata = OMAP_TIMER_ERRATA_I103_I767, > .timer_ops = &dmtimer_ops, > }; > > Can you check at your end if this works for you? Note, it is untested as I ran out of time and will continue after New Year. diff --git a/drivers/clocksource/timer-dm.c b/drivers/clocksource/timer-dm.c index 1cbd95420914..85024f11773a 100644 --- a/drivers/clocksource/timer-dm.c +++ b/drivers/clocksource/timer-dm.c @@ -806,14 +806,16 @@ static int omap_dm_timer_probe(struct platform_device *pdev) struct omap_dm_timer *timer; struct resource *mem, *irq; struct device *dev = &pdev->dev; - const struct of_device_id *match; const struct dmtimer_platform_data *pdata; int ret; - match = of_match_device(of_match_ptr(omap_timer_match), dev); - pdata = match ? match->data : dev->platform_data; + pdata = of_device_get_match_data(dev); + if (!pdata) + pdata = dev_get_platdata(dev); + else + dev->platform_data = (void *) pdata; - if (!pdata && !dev->of_node) { + if (!pdata) { dev_err(dev, "%s: no platform data.\n", __func__); return -ENODEV; } -- To unsubscribe from this list: send the line "unsubscribe linux-pwm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tuesday 19 December 2017 08:51 PM, Ladislav Michl wrote: > On Tue, Dec 19, 2017 at 01:55:48PM +0530, Keerthy wrote: >> On Tuesday 19 December 2017 10:28 AM, Keerthy wrote: >>> On Monday 18 December 2017 06:25 PM, Keerthy wrote: >>>> On Monday 18 December 2017 03:01 PM, Ladislav Michl wrote: >>>>> Keerthy, >>>>> >>>>> On Tue, Dec 12, 2017 at 11:42:16AM +0530, Keerthy wrote: >>>>>> Adapt driver to utilize dmtimer pdata ops instead of pdata-quirks. >>>>>> >>>>>> Signed-off-by: Keerthy <j-keerthy@ti.com> >>>>>> --- >>>>>> >>>>>> Changes in v4: >>>>>> >>>>>> * Switched to dev_get_platdata. >>>>> >>>>> Where do you expect dev.platform_data to be set? PWM driver is failing >>>>> with: >>>>> omap-dmtimer-pwm dmtimer-pwm: dmtimer pdata structure NULL >>>>> omap-dmtimer-pwm: probe of dmtimer-pwm failed with error -22 >>>>> >>>>> Which I fixed with patch bellow, to be able to test your patchset. >>>> >>>> Thanks! I will make the below patch part of my series. >>>> >>>>> >>>>> Also I'm running a bit out of time, so I'll send few clean up >>>>> patches and event capture code to get some feedback early. >>>>> >>>>> Regards, >>>>> ladis >>>>> >>>>> diff --git a/drivers/clocksource/timer-dm.c b/drivers/clocksource/timer-dm.c >>>>> index 39be39e6a8dd..d3d8a49cae0d 100644 >>>>> --- a/drivers/clocksource/timer-dm.c >>>>> +++ b/drivers/clocksource/timer-dm.c >>>>> @@ -773,6 +773,7 @@ static int omap_dm_timer_probe(struct platform_device *pdev) >>>>> dev_err(dev, "%s: no platform data.\n", __func__); >>>>> return -ENODEV; >>>>> } >>>>> + dev->platform_data = pdata; >>> >>> drivers/clocksource/timer-dm.c: In function 'omap_dm_timer_probe': >>> drivers/clocksource/timer-dm.c:744:21: warning: assignment discards >>> 'const' qualifier from pointer target type >>> >>> This cannot be done as we are assigning a const pointer to a non-const >>> pointer. > > Oh, I didn't even assume it as proper fix, just to show what is missing :) > > But technically 'struct dmtimer_platform_data *pdata' is a constant which > should not be changed. Also look how all that of_populate chain works - > at the end const pointer is assigned to void* platform_data by simple > (void *) overcast. > >>> I will figure out a different way for this fix. >> >> Ladis, >> >> I fixed that: >> >> diff --git a/drivers/clocksource/timer-dm.c b/drivers/clocksource/timer-dm.c >> index 1cbd954..e58f555 100644 >> --- a/drivers/clocksource/timer-dm.c >> +++ b/drivers/clocksource/timer-dm.c >> @@ -807,17 +807,21 @@ static int omap_dm_timer_probe(struct >> platform_device *pdev) >> struct resource *mem, *irq; >> struct device *dev = &pdev->dev; >> const struct of_device_id *match; >> - const struct dmtimer_platform_data *pdata; >> + struct dmtimer_platform_data *pdata; >> int ret; >> >> match = of_match_device(of_match_ptr(omap_timer_match), dev); >> - pdata = match ? match->data : dev->platform_data; >> + pdata = match ? (struct dmtimer_platform_data *)match->data : >> + dev->platform_data; > > All that seems needlesly complicated, what about patch bellow? > >> if (!pdata && !dev->of_node) { >> dev_err(dev, "%s: no platform data.\n", __func__); >> return -ENODEV; >> } >> >> + if (!dev->platform_data) >> + dev->platform_data = pdata; > > Does the above condition bring us anything? That was to avoid assigning the same thing. > >> irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); >> if (unlikely(!irq)) { >> dev_err(dev, "%s: no IRQ resource.\n", __func__); >> @@ -946,7 +950,7 @@ static int omap_dm_timer_remove(struct >> platform_device *pdev) >> .write_status = omap_dm_timer_write_status, >> }; >> >> -static const struct dmtimer_platform_data omap3plus_pdata = { >> +static struct dmtimer_platform_data omap3plus_pdata = { >> .timer_errata = OMAP_TIMER_ERRATA_I103_I767, >> .timer_ops = &dmtimer_ops, >> }; >> >> Can you check at your end if this works for you? > > Note, it is untested as I ran out of time and will continue after New Year. > > diff --git a/drivers/clocksource/timer-dm.c b/drivers/clocksource/timer-dm.c > index 1cbd95420914..85024f11773a 100644 > --- a/drivers/clocksource/timer-dm.c > +++ b/drivers/clocksource/timer-dm.c > @@ -806,14 +806,16 @@ static int omap_dm_timer_probe(struct platform_device *pdev) > struct omap_dm_timer *timer; > struct resource *mem, *irq; > struct device *dev = &pdev->dev; > - const struct of_device_id *match; > const struct dmtimer_platform_data *pdata; > int ret; > > - match = of_match_device(of_match_ptr(omap_timer_match), dev); > - pdata = match ? match->data : dev->platform_data; > + pdata = of_device_get_match_data(dev); > + if (!pdata) > + pdata = dev_get_platdata(dev); > + else > + dev->platform_data = (void *) pdata; > > - if (!pdata && !dev->of_node) { > + if (!pdata) { > dev_err(dev, "%s: no platform data.\n", __func__); > return -ENODEV; > } Ladis, I have tested this on AM437 for dmtimer only. But i have checked that pdata gets neatly assigned to dev->platform_data. So i believe that was what was lacking. I will pick the above patch from you and post v6 with your Tested-by as the pdata hooking was the only missing link for pwm. Thanks for the patch once again. Regards, Keerthy > -- To unsubscribe from this list: send the line "unsubscribe linux-pwm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/pwm/pwm-omap-dmtimer.c b/drivers/pwm/pwm-omap-dmtimer.c index 5ad42f3..3b27aff 100644 --- a/drivers/pwm/pwm-omap-dmtimer.c +++ b/drivers/pwm/pwm-omap-dmtimer.c @@ -23,6 +23,7 @@ #include <linux/mutex.h> #include <linux/of.h> #include <linux/of_platform.h> +#include <linux/platform_data/dmtimer-omap.h> #include <linux/platform_data/pwm_omap_dmtimer.h> #include <linux/platform_device.h> #include <linux/pm_runtime.h> @@ -37,7 +38,7 @@ struct pwm_omap_dmtimer_chip { struct pwm_chip chip; struct mutex mutex; pwm_omap_dmtimer *dm_timer; - struct pwm_omap_dmtimer_pdata *pdata; + struct omap_dm_timer_ops *pdata; struct platform_device *dm_timer_pdev; }; @@ -242,19 +243,33 @@ static int pwm_omap_dmtimer_probe(struct platform_device *pdev) { struct device_node *np = pdev->dev.of_node; struct device_node *timer; + struct platform_device *timer_pdev; struct pwm_omap_dmtimer_chip *omap; - struct pwm_omap_dmtimer_pdata *pdata; + struct dmtimer_platform_data *timer_pdata; + struct omap_dm_timer_ops *pdata; pwm_omap_dmtimer *dm_timer; u32 v; int status; - pdata = dev_get_platdata(&pdev->dev); - if (!pdata) { - dev_err(&pdev->dev, "Missing dmtimer platform data\n"); + timer = of_parse_phandle(np, "ti,timers", 0); + if (!timer) + return -ENODEV; + + timer_pdev = of_find_device_by_node(timer); + if (!timer_pdev) { + dev_err(&pdev->dev, "Unable to find Timer pdev\n"); + return -ENODEV; + } + + timer_pdata = dev_get_platdata(&timer_pdev->dev); + if (!timer_pdata) { + dev_err(&pdev->dev, "dmtimer pdata structure NULL\n"); return -EINVAL; } - if (!pdata->request_by_node || + pdata = timer_pdata->timer_ops; + + if (!pdata || !pdata->request_by_node || !pdata->free || !pdata->enable || !pdata->disable || @@ -270,10 +285,6 @@ static int pwm_omap_dmtimer_probe(struct platform_device *pdev) return -EINVAL; } - timer = of_parse_phandle(np, "ti,timers", 0); - if (!timer) - return -ENODEV; - if (!of_get_property(timer, "ti,timer-pwm", NULL)) { dev_err(&pdev->dev, "Missing ti,timer-pwm capability\n"); return -ENODEV; @@ -291,13 +302,7 @@ static int pwm_omap_dmtimer_probe(struct platform_device *pdev) omap->pdata = pdata; omap->dm_timer = dm_timer; - - omap->dm_timer_pdev = of_find_device_by_node(timer); - if (!omap->dm_timer_pdev) { - dev_err(&pdev->dev, "Unable to find timer pdev\n"); - omap->pdata->free(dm_timer); - return -EINVAL; - } + omap->dm_timer_pdev = timer_pdev; /* * Ensure that the timer is stopped before we allow PWM core to call
Adapt driver to utilize dmtimer pdata ops instead of pdata-quirks. Signed-off-by: Keerthy <j-keerthy@ti.com> --- Changes in v4: * Switched to dev_get_platdata. Changes in v3: * Used of_find_platdata_by_node function to fetch platform data for timer node. drivers/pwm/pwm-omap-dmtimer.c | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-)