All of lore.kernel.org
 help / color / mirror / Atom feed
From: Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com>
To: Arnd Bergmann <arnd@arndb.de>, Guenter Roeck <linux@roeck-us.net>
Cc: <wim@iguana.be>, <devicetree@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-watchdog@vger.kernel.org>,
	<paul@crapouillou.net>
Subject: Re: [PATCH 1/2] dt: watchdog: Add DT binding documentation for jz47xx watchdog timer
Date: Wed, 28 Jan 2015 10:27:00 +0000	[thread overview]
Message-ID: <54C8B974.8030703@imgtec.com> (raw)
In-Reply-To: <9081741.fTg5kD1W54@wuerfel>



On 27/01/15 22:42, Arnd Bergmann wrote:
> On Tuesday 27 January 2015 23:36:36 Arnd Bergmann wrote:
>> On Tuesday 27 January 2015 14:19:09 Guenter Roeck wrote:
>>> On Tue, Jan 27, 2015 at 10:29:49PM +0100, Arnd Bergmann wrote:
>>>> On Tuesday 27 January 2015 12:52:29 Guenter Roeck wrote:
>>>>> Driver does this (today):
>>>>>
>>>>>          drvdata->rtc_clk = clk_get(&pdev->dev, "rtc");
>>>>>
>>>>> Isn't that the name to use ? Just wondering.
>>>>
>>>> Just because the driver uses it at the moment does not mean it's the name
>>>> that the IP block uses.
>>>>
>>>> clk_get() has the unpleasant property of doing fuzzy matching
>>>> on the name that is passed. It first tries to use the string
>>>> as the name of the clock input of the device, but if that is
>>>> not there, it falls back to looking for a global clk with a con_id.
>>>>
>>>> In DT, we only support the first kind, but if a driver currently
>>>> uses the second, you get the wrong name.
>>>>
>>>> Looking at arch/mips/jz4740/clock.c now, this seems to be exactly
>>>> what is going on here: there is no clkdev_add call to associate
>>>> the device clocks, so it can only match a global clock entry. 
>>>>
>>> Me confused :-(.
>>>
>>> Does that mean the driver needs to be fixed, that the DT property
>>> needs to change (to what ?), or both ?
>>
>> Both.
>>
>> The jz47xx clock driver should register a clkdev lookup table with
>> proper clock input names for each clock that is referenced by a
>> device, and then the drivers can use the right names.
>>
>> In a lot of cases, the best name for a clock is no name so you
>> just use an anonymous clock like
>>
>>         clk = clk_get(dev, NULL);
>>
>> but this still requires a clock lookup table.
> 
> To illustrate why the current approach is wrong, think of a driver
> that handles a device that can be used on two different SoCs.
> 
> The name used by the clock provider is SoC specific, so the driver
> would need to know which SoC it's being used on in order to pass
> the right clock signal name. clkdev is meant to solve this by providing
> a lookup between the device/clock-input pair and the actual clock.
> 
> Apparently jz4740 does not share any devices with another SoC at
> the moment, so this has not been a problem, but if jz4780 has
> a slightly different clock tree, it's already broken.
> 
> 	Arnd
> 

There is on-going work to fix jz4740, add jz4780 and shake the entire clock tree as well.

Patch 14 onwards in this series
http://patchwork.linux-mips.org/bundle/paulburton/ci20-v3.20/

Instead of lumping things out in huge changesets, I intended to push out the minor patches that are disjoint.

That was the purpose of sending these two patches.

Current binding requires the clock-name to be "rtc". Hence the name at the moment.

Regards,
ZubairLK

WARNING: multiple messages have this Message-ID (diff)
From: Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com>
To: Arnd Bergmann <arnd@arndb.de>, Guenter Roeck <linux@roeck-us.net>
Cc: wim@iguana.be, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-watchdog@vger.kernel.org,
	paul@crapouillou.net
Subject: Re: [PATCH 1/2] dt: watchdog: Add DT binding documentation for jz47xx watchdog timer
Date: Wed, 28 Jan 2015 10:27:00 +0000	[thread overview]
Message-ID: <54C8B974.8030703@imgtec.com> (raw)
In-Reply-To: <9081741.fTg5kD1W54@wuerfel>



On 27/01/15 22:42, Arnd Bergmann wrote:
> On Tuesday 27 January 2015 23:36:36 Arnd Bergmann wrote:
>> On Tuesday 27 January 2015 14:19:09 Guenter Roeck wrote:
>>> On Tue, Jan 27, 2015 at 10:29:49PM +0100, Arnd Bergmann wrote:
>>>> On Tuesday 27 January 2015 12:52:29 Guenter Roeck wrote:
>>>>> Driver does this (today):
>>>>>
>>>>>          drvdata->rtc_clk = clk_get(&pdev->dev, "rtc");
>>>>>
>>>>> Isn't that the name to use ? Just wondering.
>>>>
>>>> Just because the driver uses it at the moment does not mean it's the name
>>>> that the IP block uses.
>>>>
>>>> clk_get() has the unpleasant property of doing fuzzy matching
>>>> on the name that is passed. It first tries to use the string
>>>> as the name of the clock input of the device, but if that is
>>>> not there, it falls back to looking for a global clk with a con_id.
>>>>
>>>> In DT, we only support the first kind, but if a driver currently
>>>> uses the second, you get the wrong name.
>>>>
>>>> Looking at arch/mips/jz4740/clock.c now, this seems to be exactly
>>>> what is going on here: there is no clkdev_add call to associate
>>>> the device clocks, so it can only match a global clock entry. 
>>>>
>>> Me confused :-(.
>>>
>>> Does that mean the driver needs to be fixed, that the DT property
>>> needs to change (to what ?), or both ?
>>
>> Both.
>>
>> The jz47xx clock driver should register a clkdev lookup table with
>> proper clock input names for each clock that is referenced by a
>> device, and then the drivers can use the right names.
>>
>> In a lot of cases, the best name for a clock is no name so you
>> just use an anonymous clock like
>>
>>         clk = clk_get(dev, NULL);
>>
>> but this still requires a clock lookup table.
> 
> To illustrate why the current approach is wrong, think of a driver
> that handles a device that can be used on two different SoCs.
> 
> The name used by the clock provider is SoC specific, so the driver
> would need to know which SoC it's being used on in order to pass
> the right clock signal name. clkdev is meant to solve this by providing
> a lookup between the device/clock-input pair and the actual clock.
> 
> Apparently jz4740 does not share any devices with another SoC at
> the moment, so this has not been a problem, but if jz4780 has
> a slightly different clock tree, it's already broken.
> 
> 	Arnd
> 

There is on-going work to fix jz4740, add jz4780 and shake the entire clock tree as well.

Patch 14 onwards in this series
http://patchwork.linux-mips.org/bundle/paulburton/ci20-v3.20/

Instead of lumping things out in huge changesets, I intended to push out the minor patches that are disjoint.

That was the purpose of sending these two patches.

Current binding requires the clock-name to be "rtc". Hence the name at the moment.

Regards,
ZubairLK

  reply	other threads:[~2015-01-29  2:14 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-27 15:11 [PATCH 0/2] watchdog: jz4740: Add DT support Zubair Lutfullah Kakakhel
2015-01-27 15:11 ` Zubair Lutfullah Kakakhel
2015-01-27 15:11 ` [PATCH 1/2] dt: watchdog: Add DT binding documentation for jz47xx watchdog timer Zubair Lutfullah Kakakhel
2015-01-27 15:11   ` Zubair Lutfullah Kakakhel
2015-01-27 16:30   ` Guenter Roeck
2015-01-27 16:30     ` Guenter Roeck
2015-01-27 20:16   ` Arnd Bergmann
2015-01-27 20:16     ` Arnd Bergmann
2015-01-27 20:52     ` Guenter Roeck
2015-01-27 20:52       ` Guenter Roeck
2015-01-27 21:29       ` Arnd Bergmann
2015-01-27 22:19         ` Guenter Roeck
2015-01-27 22:36           ` Arnd Bergmann
2015-01-27 22:36             ` Arnd Bergmann
2015-01-27 22:42             ` Arnd Bergmann
2015-01-27 22:42               ` Arnd Bergmann
2015-01-28 10:27               ` Zubair Lutfullah Kakakhel [this message]
2015-01-28 10:27                 ` Zubair Lutfullah Kakakhel
2015-01-28 11:23                 ` Arnd Bergmann
2015-01-27 15:11 ` [PATCH 2/2] watchdog: jz4740: Add DT support Zubair Lutfullah Kakakhel
2015-01-27 15:11   ` Zubair Lutfullah Kakakhel
2015-01-27 16:31   ` Guenter Roeck
2015-01-27 16:31     ` Guenter Roeck
2015-01-27 20:15   ` Arnd Bergmann
2015-01-27 20:15     ` Arnd Bergmann
2015-01-27 20:54     ` Guenter Roeck
2015-01-27 20:54       ` Guenter Roeck
2015-01-27 21:23       ` Arnd Bergmann
2015-01-27 21:23         ` Arnd Bergmann

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=54C8B974.8030703@imgtec.com \
    --to=zubair.kakakhel@imgtec.com \
    --cc=arnd@arndb.de \
    --cc=devicetree@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-watchdog@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=paul@crapouillou.net \
    --cc=wim@iguana.be \
    /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.