From: Wolfgang Grandegger <wg@grandegger.com>
To: Robin Holt <holt@sgi.com>
Cc: netdev@vger.kernel.org, U Bhaskar-B22300 <B22300@freescale.com>,
socketcan-core@lists.berlios.de,
PPC list <linuxppc-dev@lists.ozlabs.org>
Subject: Re: [PATCH v11 4/5] powerpc: Add flexcan device support for p1010rdb.
Date: Thu, 11 Aug 2011 09:35:39 +0200 [thread overview]
Message-ID: <4E43864B.2050302@grandegger.com> (raw)
In-Reply-To: <20110811035620.GB4926@sgi.com>
On 08/11/2011 05:56 AM, Robin Holt wrote:
> On Wed, Aug 10, 2011 at 08:16:33PM +0200, Wolfgang Grandegger wrote:
>> On 08/10/2011 07:01 PM, Kumar Gala wrote:
>>>
>>> On Aug 10, 2011, at 11:27 AM, Robin Holt wrote:
>>>
>>>> I added a simple clock source for the p1010rdb so the flexcan driver
>>>> could determine a clock frequency. The p1010 flexcan device only has
>>>> an oscillator of system bus frequency divided by 2.
>>>>
>>>> Signed-off-by: Robin Holt <holt@sgi.com>
>>>> Acked-by: Marc Kleine-Budde <mkl@pengutronix.de>,
>>>> Acked-by: Wolfgang Grandegger <wg@grandegger.com>,
>>>> Cc: U Bhaskar-B22300 <B22300@freescale.com>
>>>> Cc: socketcan-core@lists.berlios.de,
>>>> Cc: netdev@vger.kernel.org,
>>>> Cc: PPC list <linuxppc-dev@lists.ozlabs.org>
>>>> Cc: Kumar Gala <galak@kernel.crashing.org>
>>>> ---
>>>> arch/powerpc/platforms/85xx/Kconfig | 2 +
>>>> arch/powerpc/platforms/85xx/Makefile | 2 +
>>>> arch/powerpc/platforms/85xx/clock.c | 52 ++++++++++++++++++++++++++++++++
>>>> arch/powerpc/platforms/85xx/p1010rdb.c | 8 +++++
>>>> 4 files changed, 64 insertions(+), 0 deletions(-)
>>>> create mode 100644 arch/powerpc/platforms/85xx/clock.c
>>>
>>> I dont understand how mpc85xx_clk_functions() ends up being associated with the frequency the flexcan is running at.
>>
>> The function mpc85xx_clk_get_rate() returns "fsl_get_sys_freq() / 2" for
>> Flexcan devices.
>>
>>> This either seems to global or I'm missing something.
>>
>> This patch extends the existing Flexcan platform driver for ARM for the
>> PowerPC using the device tree. Due to the nice integration of the device
>> tree (of-platform) into the platform driver and devices, the difference
>> are quite small (see patches 1..3). Apart from the endianess issue, only
>> the clock needs to be handled in a common way. As ARM already uses the
>> clk interface, we found it straight-forward to implement it for the
>> P1010, or more general for the 85xx, as well, instead of using an
>> additional helper function.
>>
>>> I still think the clk / freq info should be in the device tree and handled in the driver and NOT arch/powerpc platform code.
>>
>> If I understand you correctly, you want the boot-loader to provide the
>> relevant information by fixing up the device tree, which then can be
>> handled arch-independently by the driver, right?
>
> Marc and Wolfgang,
>
> This is a very early swag at this which I worked up while driving home from dinner
> this evening. It works with my current config, but that includes at least one
> bogus patch. I will have to do more testing tomorrow. For now, it is something
> to ponder.
Yes, that's what Kumar is proposing. Fine for me with the P1010. It just
needs some proper U-Boot implementation.
> Thanks,
> Robin
> ------------------------------------------------------------------------
>
> flexcan: Prefer device tree clock frequency if available.
>
> If our CAN device's device tree node has a clock-frequency property,
> then use that value for the can devices clock frequency. If not, fall
> back to asking the platform/mach code for the clock frequency associated
> with the flexcan device.
>
> Too-early-to-be-signed-off-by: Robin Holt <holt@sgi.com>
>
> diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
> index 662f832..d6a87c9 100644
> --- a/drivers/net/can/flexcan.c
> +++ b/drivers/net/can/flexcan.c
> @@ -33,6 +33,7 @@
> #include <linux/kernel.h>
> #include <linux/list.h>
> #include <linux/module.h>
> +#include <linux/of.h>
> #include <linux/platform_device.h>
>
> #define DRV_NAME "flexcan"
> @@ -929,12 +930,25 @@ static int __devinit flexcan_probe(struct platform_device *pdev)
> void __iomem *base;
> resource_size_t mem_size;
> int err, irq;
> + u32 clock_freq = 0;
>
> - clk = clk_get(&pdev->dev, NULL);
> - if (IS_ERR(clk)) {
> - dev_err(&pdev->dev, "no clock defined\n");
> - err = PTR_ERR(clk);
> - goto failed_clock;
> + if (pdev->dev.of_node) {
> + u32 *clock_freq_p;
Should be:
const u32 *clock_freq_p;
> +
> + clk = NULL;
> + clock_freq_p = (u32 *)of_get_property(pdev->dev.of_node, "clock-frequency", NULL);
No cast please.
> + if (clock_freq_p)
> + clock_freq = *clock_freq_p;
> + }
Wolfgang.
WARNING: multiple messages have this Message-ID (diff)
From: Wolfgang Grandegger <wg-5Yr1BZd7O62+XT7JhA+gdA@public.gmane.org>
To: Robin Holt <holt-sJ/iWh9BUns@public.gmane.org>
Cc: netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
U Bhaskar-B22300 <B22300-KZfg59tc24xl57MIdRCFDg@public.gmane.org>,
Kumar Gala
<galak-XVmvHMARGAS8U2dJNN8I7kB+6BGkLq7r@public.gmane.org>,
socketcan-core-0fE9KPoRgkgATYTw5x5z8w@public.gmane.org,
Marc Kleine-Budde <mkl-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>,
PPC list <linuxppc-dev-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org>
Subject: Re: [PATCH v11 4/5] powerpc: Add flexcan device support for p1010rdb.
Date: Thu, 11 Aug 2011 09:35:39 +0200 [thread overview]
Message-ID: <4E43864B.2050302@grandegger.com> (raw)
In-Reply-To: <20110811035620.GB4926-sJ/iWh9BUns@public.gmane.org>
On 08/11/2011 05:56 AM, Robin Holt wrote:
> On Wed, Aug 10, 2011 at 08:16:33PM +0200, Wolfgang Grandegger wrote:
>> On 08/10/2011 07:01 PM, Kumar Gala wrote:
>>>
>>> On Aug 10, 2011, at 11:27 AM, Robin Holt wrote:
>>>
>>>> I added a simple clock source for the p1010rdb so the flexcan driver
>>>> could determine a clock frequency. The p1010 flexcan device only has
>>>> an oscillator of system bus frequency divided by 2.
>>>>
>>>> Signed-off-by: Robin Holt <holt-sJ/iWh9BUns@public.gmane.org>
>>>> Acked-by: Marc Kleine-Budde <mkl-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>,
>>>> Acked-by: Wolfgang Grandegger <wg-5Yr1BZd7O62+XT7JhA+gdA@public.gmane.org>,
>>>> Cc: U Bhaskar-B22300 <B22300-KZfg59tc24xl57MIdRCFDg@public.gmane.org>
>>>> Cc: socketcan-core-0fE9KPoRgkgATYTw5x5z8w@public.gmane.org,
>>>> Cc: netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
>>>> Cc: PPC list <linuxppc-dev-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org>
>>>> Cc: Kumar Gala <galak-XVmvHMARGAS8U2dJNN8I7kB+6BGkLq7r@public.gmane.org>
>>>> ---
>>>> arch/powerpc/platforms/85xx/Kconfig | 2 +
>>>> arch/powerpc/platforms/85xx/Makefile | 2 +
>>>> arch/powerpc/platforms/85xx/clock.c | 52 ++++++++++++++++++++++++++++++++
>>>> arch/powerpc/platforms/85xx/p1010rdb.c | 8 +++++
>>>> 4 files changed, 64 insertions(+), 0 deletions(-)
>>>> create mode 100644 arch/powerpc/platforms/85xx/clock.c
>>>
>>> I dont understand how mpc85xx_clk_functions() ends up being associated with the frequency the flexcan is running at.
>>
>> The function mpc85xx_clk_get_rate() returns "fsl_get_sys_freq() / 2" for
>> Flexcan devices.
>>
>>> This either seems to global or I'm missing something.
>>
>> This patch extends the existing Flexcan platform driver for ARM for the
>> PowerPC using the device tree. Due to the nice integration of the device
>> tree (of-platform) into the platform driver and devices, the difference
>> are quite small (see patches 1..3). Apart from the endianess issue, only
>> the clock needs to be handled in a common way. As ARM already uses the
>> clk interface, we found it straight-forward to implement it for the
>> P1010, or more general for the 85xx, as well, instead of using an
>> additional helper function.
>>
>>> I still think the clk / freq info should be in the device tree and handled in the driver and NOT arch/powerpc platform code.
>>
>> If I understand you correctly, you want the boot-loader to provide the
>> relevant information by fixing up the device tree, which then can be
>> handled arch-independently by the driver, right?
>
> Marc and Wolfgang,
>
> This is a very early swag at this which I worked up while driving home from dinner
> this evening. It works with my current config, but that includes at least one
> bogus patch. I will have to do more testing tomorrow. For now, it is something
> to ponder.
Yes, that's what Kumar is proposing. Fine for me with the P1010. It just
needs some proper U-Boot implementation.
> Thanks,
> Robin
> ------------------------------------------------------------------------
>
> flexcan: Prefer device tree clock frequency if available.
>
> If our CAN device's device tree node has a clock-frequency property,
> then use that value for the can devices clock frequency. If not, fall
> back to asking the platform/mach code for the clock frequency associated
> with the flexcan device.
>
> Too-early-to-be-signed-off-by: Robin Holt <holt-sJ/iWh9BUns@public.gmane.org>
>
> diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c
> index 662f832..d6a87c9 100644
> --- a/drivers/net/can/flexcan.c
> +++ b/drivers/net/can/flexcan.c
> @@ -33,6 +33,7 @@
> #include <linux/kernel.h>
> #include <linux/list.h>
> #include <linux/module.h>
> +#include <linux/of.h>
> #include <linux/platform_device.h>
>
> #define DRV_NAME "flexcan"
> @@ -929,12 +930,25 @@ static int __devinit flexcan_probe(struct platform_device *pdev)
> void __iomem *base;
> resource_size_t mem_size;
> int err, irq;
> + u32 clock_freq = 0;
>
> - clk = clk_get(&pdev->dev, NULL);
> - if (IS_ERR(clk)) {
> - dev_err(&pdev->dev, "no clock defined\n");
> - err = PTR_ERR(clk);
> - goto failed_clock;
> + if (pdev->dev.of_node) {
> + u32 *clock_freq_p;
Should be:
const u32 *clock_freq_p;
> +
> + clk = NULL;
> + clock_freq_p = (u32 *)of_get_property(pdev->dev.of_node, "clock-frequency", NULL);
No cast please.
> + if (clock_freq_p)
> + clock_freq = *clock_freq_p;
> + }
Wolfgang.
next prev parent reply other threads:[~2011-08-11 7:35 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-10 16:27 [PATCH v11 0/5] flexcan/powerpc: Add support for powerpc flexcan (freescale p1010) Robin Holt
2011-08-10 16:27 ` Robin Holt
2011-08-10 16:27 ` [PATCH v11 1/5] flexcan: Remove #include <mach/clock.h> Robin Holt
2011-08-10 16:27 ` Robin Holt
2011-08-10 16:27 ` [PATCH v11 2/5] flexcan: Abstract off read/write for big/little endian Robin Holt
2011-08-10 16:27 ` Robin Holt
2011-08-10 16:27 ` [PATCH v11 3/5] flexcan: Add of_match to platform_device definition Robin Holt
2011-08-10 16:27 ` Robin Holt
2011-08-10 16:27 ` Robin Holt
2011-08-10 16:27 ` [PATCH v11 4/5] powerpc: Add flexcan device support for p1010rdb Robin Holt
2011-08-10 16:27 ` Robin Holt
2011-08-10 17:01 ` Kumar Gala
2011-08-10 17:01 ` Kumar Gala
2011-08-10 18:16 ` Wolfgang Grandegger
2011-08-10 18:16 ` Wolfgang Grandegger
2011-08-11 3:56 ` Robin Holt
2011-08-11 3:56 ` Robin Holt
2011-08-11 7:35 ` Wolfgang Grandegger [this message]
2011-08-11 7:35 ` Wolfgang Grandegger
2011-08-11 4:46 ` Kumar Gala
2011-08-11 4:46 ` Kumar Gala
2011-08-11 7:26 ` Wolfgang Grandegger
2011-08-11 7:26 ` Wolfgang Grandegger
2011-08-11 10:42 ` Robin Holt
2011-08-11 10:42 ` Robin Holt
2011-08-11 14:17 ` Kumar Gala
2011-08-11 14:17 ` Kumar Gala
2011-08-10 16:27 ` [PATCH v11 5/5] powerpc: Fix up fsl-flexcan device tree binding Robin Holt
2011-08-10 16:27 ` Robin Holt
2011-08-10 16:27 ` Robin Holt
2011-08-10 16:56 ` Scott Wood
2011-08-10 16:56 ` Scott Wood
2011-08-10 16:56 ` Scott Wood
2011-08-10 17:19 ` Robin Holt
2011-08-10 17:19 ` Robin Holt
2011-08-10 17:36 ` Scott Wood
2011-08-10 17:36 ` Scott Wood
2011-08-10 17:36 ` Scott Wood
2011-08-10 18:30 ` Robin Holt
2011-08-10 18:30 ` Robin Holt
2011-08-10 18:40 ` Scott Wood
2011-08-10 18:40 ` Scott Wood
2011-08-10 18:40 ` Scott Wood
2011-08-10 18:45 ` Robin Holt
2011-08-10 18:45 ` Robin Holt
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=4E43864B.2050302@grandegger.com \
--to=wg@grandegger.com \
--cc=B22300@freescale.com \
--cc=holt@sgi.com \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=netdev@vger.kernel.org \
--cc=socketcan-core@lists.berlios.de \
/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.