Thread (33 messages) 33 messages, 3 authors, 2017-12-20

[PATCH v5 7/8] pwm: pwm-omap-dmtimer: Adapt driver to utilize dmtimer pdata ops

From: j-keerthy@ti.com (Keerthy)
Date: 2017-12-19 08:26:44
Also in: linux-omap, linux-pwm, lkml
Subsystem: clocksource, clockevent drivers, the rest · Maintainers: Daniel Lezcano, Thomas Gleixner, Linus Torvalds


On Tuesday 19 December 2017 10:28 AM, Keerthy wrote:

On Monday 18 December 2017 06:25 PM, Keerthy wrote:
quoted

On Monday 18 December 2017 03:01 PM, Ladislav Michl wrote:
quoted
Keerthy,

On Tue, Dec 12, 2017 at 11:42:16AM +0530, Keerthy wrote:
quoted
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.
quoted
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?
quoted
quoted
 
 	irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
 	if (unlikely(!irq)) {
quoted
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 at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help