From: Ladislav Michl <ladis@linux-mips.org>
To: Keerthy <j-keerthy@ti.com>
Cc: daniel.lezcano@linaro.org, tony@atomide.com,
aaro.koskinen@iki.fi, thierry.reding@gmail.com,
grygorii.strashko@ti.com, linux-omap@vger.kernel.org,
robh+dt@kernel.org, linux-arm-kernel@lists.infradead.org,
linux-pwm@vger.kernel.org, sebastian.reichel@collabora.co.uk,
linux-kernel@vger.kernel.org, t-kristo@ti.com,
linux@armlinux.org.uk
Subject: Re: [PATCH v5 7/8] pwm: pwm-omap-dmtimer: Adapt driver to utilize dmtimer pdata ops
Date: Tue, 19 Dec 2017 16:21:40 +0100 [thread overview]
Message-ID: <20171219152140.GA22971@lenoch> (raw)
In-Reply-To: <a62814d7-f2d4-8740-92f5-114992ef5db1@ti.com>
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;
}
WARNING: multiple messages have this Message-ID (diff)
From: ladis@linux-mips.org (Ladislav Michl)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v5 7/8] pwm: pwm-omap-dmtimer: Adapt driver to utilize dmtimer pdata ops
Date: Tue, 19 Dec 2017 16:21:40 +0100 [thread overview]
Message-ID: <20171219152140.GA22971@lenoch> (raw)
In-Reply-To: <a62814d7-f2d4-8740-92f5-114992ef5db1@ti.com>
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;
}
next prev parent reply other threads:[~2017-12-19 15:21 UTC|newest]
Thread overview: 85+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-12 6:12 [PATCH v5 0/8] omap: dmtimer: Move driver out of plat-omap Keerthy
2017-12-12 6:12 ` Keerthy
2017-12-12 6:12 ` Keerthy
2017-12-12 6:12 ` [PATCH v5 1/8] clocksource: dmtimer: Remove all the exports Keerthy
2017-12-12 6:12 ` Keerthy
2017-12-12 6:12 ` Keerthy
2017-12-12 7:16 ` Ladislav Michl
2017-12-12 7:16 ` Ladislav Michl
2017-12-12 7:31 ` Keerthy
2017-12-12 7:31 ` Keerthy
2017-12-12 7:31 ` Keerthy
2017-12-12 8:01 ` Ladislav Michl
2017-12-12 8:01 ` Ladislav Michl
2017-12-12 8:08 ` Keerthy
2017-12-12 8:08 ` Keerthy
2017-12-12 8:08 ` Keerthy
2017-12-12 8:19 ` Ladislav Michl
2017-12-12 8:19 ` Ladislav Michl
2017-12-12 8:22 ` Keerthy
2017-12-12 8:22 ` Keerthy
2017-12-12 8:22 ` Keerthy
2017-12-12 17:00 ` Tony Lindgren
2017-12-12 17:00 ` Tony Lindgren
2017-12-12 18:03 ` Ladislav Michl
2017-12-12 18:03 ` Ladislav Michl
2017-12-12 18:21 ` Tony Lindgren
2017-12-12 18:21 ` Tony Lindgren
2017-12-13 9:15 ` Ladislav Michl
2017-12-13 9:15 ` Ladislav Michl
2017-12-13 16:51 ` Tony Lindgren
2017-12-13 16:51 ` Tony Lindgren
2017-12-12 6:12 ` [PATCH v5 2/8] arm: omap: timer: Wrap the inline functions under OMAP2PLUS define Keerthy
2017-12-12 6:12 ` Keerthy
2017-12-12 6:12 ` Keerthy
2017-12-12 6:12 ` [PATCH v5 3/8] arm: omap: Move dmtimer.h out of plat-omap Keerthy
2017-12-12 6:12 ` Keerthy
2017-12-12 6:12 ` Keerthy
2017-12-12 6:12 ` [PATCH v5 4/8] arm: OMAP: Move dmtimer driver out of plat-omap to drivers under clocksource Keerthy
2017-12-12 6:12 ` Keerthy
2017-12-12 6:12 ` Keerthy
2017-12-12 6:12 ` [PATCH v5 5/8] dmtimer: Add timer ops to the platform data structure Keerthy
2017-12-12 6:12 ` Keerthy
2017-12-12 6:12 ` Keerthy
2017-12-12 6:12 ` [PATCH v5 6/8] clocksource: dmtimer: Populate the timer ops to the pdata Keerthy
2017-12-12 6:12 ` Keerthy
2017-12-12 6:12 ` Keerthy
2017-12-12 6:12 ` [PATCH v5 7/8] pwm: pwm-omap-dmtimer: Adapt driver to utilize dmtimer pdata ops Keerthy
2017-12-12 6:12 ` Keerthy
2017-12-12 6:12 ` Keerthy
2017-12-18 9:31 ` Ladislav Michl
2017-12-18 9:31 ` Ladislav Michl
2017-12-18 12:55 ` Keerthy
2017-12-18 12:55 ` Keerthy
2017-12-18 12:55 ` Keerthy
2017-12-19 4:58 ` Keerthy
2017-12-19 4:58 ` Keerthy
2017-12-19 4:58 ` Keerthy
2017-12-19 8:25 ` Keerthy
2017-12-19 8:25 ` Keerthy
2017-12-19 8:25 ` Keerthy
2017-12-19 15:21 ` Ladislav Michl [this message]
2017-12-19 15:21 ` Ladislav Michl
2017-12-20 4:42 ` Keerthy
2017-12-20 4:42 ` Keerthy
2017-12-20 4:42 ` Keerthy
2017-12-12 6:12 ` [PATCH v5 8/8] arm: omap: pdata-quirks: Remove unused timer pdata Keerthy
2017-12-12 6:12 ` Keerthy
2017-12-12 6:12 ` Keerthy
2017-12-18 11:16 ` [PATCH v5 0/8] omap: dmtimer: Move driver out of plat-omap Ladislav Michl
2017-12-18 11:16 ` Ladislav Michl
2017-12-18 11:30 ` [PATCH 1/2] clocksource: timer-dm: Make unexported functions static Ladislav Michl
2017-12-18 11:30 ` Ladislav Michl
2017-12-19 8:33 ` Keerthy
2017-12-19 8:33 ` Keerthy
2017-12-19 8:33 ` Keerthy
2017-12-18 11:31 ` [PATCH 2/2] clocksource: timer-dm: Check prescaler value Ladislav Michl
2017-12-18 11:31 ` Ladislav Michl
2017-12-19 8:30 ` Keerthy
2017-12-19 8:30 ` Keerthy
2017-12-19 8:30 ` Keerthy
2017-12-18 12:54 ` [PATCH v5 0/8] omap: dmtimer: Move driver out of plat-omap Keerthy
2017-12-18 12:54 ` Keerthy
2017-12-18 12:54 ` Keerthy
2017-12-18 13:14 ` Ladislav Michl
2017-12-18 13:14 ` Ladislav Michl
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171219152140.GA22971@lenoch \
--to=ladis@linux-mips.org \
--cc=aaro.koskinen@iki.fi \
--cc=daniel.lezcano@linaro.org \
--cc=grygorii.strashko@ti.com \
--cc=j-keerthy@ti.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-pwm@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=robh+dt@kernel.org \
--cc=sebastian.reichel@collabora.co.uk \
--cc=t-kristo@ti.com \
--cc=thierry.reding@gmail.com \
--cc=tony@atomide.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.