From: s.nawrocki@samsung.com (Sylwester Nawrocki)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH RFC v4 2/2] clk: Add handling of clk parent and rate assigned from DT
Date: Wed, 02 Apr 2014 12:24:26 +0200 [thread overview]
Message-ID: <533BE55A.80408@samsung.com> (raw)
In-Reply-To: <20140402053715.GV17250@pengutronix.de>
On 02/04/14 07:37, Sascha Hauer wrote:
> On Tue, Apr 01, 2014 at 09:37:44AM -0700, Greg KH wrote:
>> On Tue, Apr 01, 2014 at 04:23:12PM +0200, Sylwester Nawrocki wrote:
>>> On 01/04/14 15:19, Ben Dooks wrote:
>>>> On 31/03/14 21:06, Greg KH wrote:
>>>>>> On Mon, Mar 31, 2014 at 06:41:56PM +0200, Sylwester Nawrocki wrote:
>>> [...]
>>>>>> I don't understand why you need the driver core to initialize this one
>>>>>> type of thing? That should be in a driver, or in a class, or at worse
>>>>>> case, the platform code.
>>>>>>
>>>>>> What makes clocks so "unique" here?
>>>
>>> The reason I put it in the driver core was mainly to avoid having many
>>> drivers doing same call to this initialization function.
>>> I was considering moving it to the bus code, still there are several
>>> buses for which it would need to be repeated.
>>
>> "several" is how many? 2? 3? 10?
>>
>> Please fix it "correctly" and don't put it in the driver core just
>> because it seems easier that way.
>>
>>> Maybe really_probe() is not a best place to put this, nonetheless
>>> the requirements I could list were:
>>>
>>> 1. not involving individual drivers,
>>
>> Why not?
>>
>>> 2. have such an initialization call done for all devices, irrespective
>>> of Linux bus or class type,
>>
>> Why? Do _all_ devices that Linux supports have this issue to be
>> resolved?
>>
>>> 3. Handle errors properly, e.g. defer driver probing if a clock for
>>> a device is not yet available.
>>
>> Then do it in the bus that controls that device, as it knows to defer
>> probing at that point in time.
>
> The issue this patch tries to solve is not about single devices, but
> about the way these devices are connected with each other.
>
> Clocks for different (sometimes completely unrelated) devices influence
> each other. You can't control the clock from one device without
> influencing other devices. Knowledge about these constraints can't be
> encoded in the drivers, because the constraints differ per SoC,
> sometimes even per board. Many SoCs share the same devices, but the
> clock topology they are surrounded with is always different. With this I
> don't mean the direct clock inputs, these are well abstracted with the
> current clk_* API. What I mean is situations like: "On this board use
> the clock controller to output this particular clock on that pin,
> because it happens to be the master clock of some audio codec connected
> externally; also make the same clock input to the internal Audio system
> to make sure both are in sync". These situations can be completely
> different on the next board or on the next SoC which has the same
> devices, but a different clock routing.
>
> That said, I also think the driver core doesn't have to be bothered with
> the clock setup. Putting the clock setup into the devicenode providing
> the clocks (and thus parsing it from the clock controller driver) should
> be sufficient.
It would work but I don't really like such a DT binding. Rather than
only having a long list of clocks in one node I would prefer to also
have a possibility to list clock data specific to a device in its
corresponding DT node. Similarly as it's done, e.g. with interrupts.
--
Thanks,
Sylwester
WARNING: multiple messages have this Message-ID (diff)
From: Sylwester Nawrocki <s.nawrocki@samsung.com>
To: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Greg KH <gregkh@linuxfoundation.org>,
Ben Dooks <ben.dooks@codethink.co.uk>,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org, mturquette@linaro.org,
linux@arm.linux.org.uk, robh+dt@kernel.org,
grant.likely@linaro.org, mark.rutland@arm.com,
galak@codeaurora.org, kyungmin.park@samsung.com,
sw0312.kim@samsung.com, m.szyprowski@samsung.com,
t.figa@samsung.com, laurent.pinchart@ideasonboard.com
Subject: Re: [PATCH RFC v4 2/2] clk: Add handling of clk parent and rate assigned from DT
Date: Wed, 02 Apr 2014 12:24:26 +0200 [thread overview]
Message-ID: <533BE55A.80408@samsung.com> (raw)
In-Reply-To: <20140402053715.GV17250@pengutronix.de>
On 02/04/14 07:37, Sascha Hauer wrote:
> On Tue, Apr 01, 2014 at 09:37:44AM -0700, Greg KH wrote:
>> On Tue, Apr 01, 2014 at 04:23:12PM +0200, Sylwester Nawrocki wrote:
>>> On 01/04/14 15:19, Ben Dooks wrote:
>>>> On 31/03/14 21:06, Greg KH wrote:
>>>>>> On Mon, Mar 31, 2014 at 06:41:56PM +0200, Sylwester Nawrocki wrote:
>>> [...]
>>>>>> I don't understand why you need the driver core to initialize this one
>>>>>> type of thing? That should be in a driver, or in a class, or at worse
>>>>>> case, the platform code.
>>>>>>
>>>>>> What makes clocks so "unique" here?
>>>
>>> The reason I put it in the driver core was mainly to avoid having many
>>> drivers doing same call to this initialization function.
>>> I was considering moving it to the bus code, still there are several
>>> buses for which it would need to be repeated.
>>
>> "several" is how many? 2? 3? 10?
>>
>> Please fix it "correctly" and don't put it in the driver core just
>> because it seems easier that way.
>>
>>> Maybe really_probe() is not a best place to put this, nonetheless
>>> the requirements I could list were:
>>>
>>> 1. not involving individual drivers,
>>
>> Why not?
>>
>>> 2. have such an initialization call done for all devices, irrespective
>>> of Linux bus or class type,
>>
>> Why? Do _all_ devices that Linux supports have this issue to be
>> resolved?
>>
>>> 3. Handle errors properly, e.g. defer driver probing if a clock for
>>> a device is not yet available.
>>
>> Then do it in the bus that controls that device, as it knows to defer
>> probing at that point in time.
>
> The issue this patch tries to solve is not about single devices, but
> about the way these devices are connected with each other.
>
> Clocks for different (sometimes completely unrelated) devices influence
> each other. You can't control the clock from one device without
> influencing other devices. Knowledge about these constraints can't be
> encoded in the drivers, because the constraints differ per SoC,
> sometimes even per board. Many SoCs share the same devices, but the
> clock topology they are surrounded with is always different. With this I
> don't mean the direct clock inputs, these are well abstracted with the
> current clk_* API. What I mean is situations like: "On this board use
> the clock controller to output this particular clock on that pin,
> because it happens to be the master clock of some audio codec connected
> externally; also make the same clock input to the internal Audio system
> to make sure both are in sync". These situations can be completely
> different on the next board or on the next SoC which has the same
> devices, but a different clock routing.
>
> That said, I also think the driver core doesn't have to be bothered with
> the clock setup. Putting the clock setup into the devicenode providing
> the clocks (and thus parsing it from the clock controller driver) should
> be sufficient.
It would work but I don't really like such a DT binding. Rather than
only having a long list of clocks in one node I would prefer to also
have a possibility to list clock data specific to a device in its
corresponding DT node. Similarly as it's done, e.g. with interrupts.
--
Thanks,
Sylwester
next prev parent reply other threads:[~2014-04-02 10:24 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-31 16:41 [PATCH RFC v4 0/2] clk: Support for DT assigned clock parents and rates Sylwester Nawrocki
2014-03-31 16:41 ` Sylwester Nawrocki
2014-03-31 16:41 ` Sylwester Nawrocki
2014-03-31 16:41 ` [PATCH RFC v4 1/2] clk: Add function parsing arbitrary clock list DT property Sylwester Nawrocki
2014-03-31 16:41 ` Sylwester Nawrocki
2014-03-31 16:41 ` Sylwester Nawrocki
2014-03-31 16:41 ` [PATCH RFC v4 2/2] clk: Add handling of clk parent and rate assigned from DT Sylwester Nawrocki
2014-03-31 16:41 ` Sylwester Nawrocki
2014-03-31 17:04 ` Ben Dooks
2014-03-31 17:04 ` Ben Dooks
2014-03-31 17:04 ` Ben Dooks
2014-04-01 6:23 ` Sascha Hauer
2014-04-01 6:23 ` Sascha Hauer
2014-04-01 6:23 ` Sascha Hauer
2014-04-01 9:31 ` Sylwester Nawrocki
2014-04-01 9:31 ` Sylwester Nawrocki
2014-04-01 9:31 ` Sylwester Nawrocki
2014-03-31 20:06 ` Greg KH
2014-03-31 20:06 ` Greg KH
2014-03-31 20:06 ` Greg KH
2014-04-01 13:19 ` Ben Dooks
2014-04-01 13:19 ` Ben Dooks
2014-04-01 13:19 ` Ben Dooks
2014-04-01 14:23 ` Sylwester Nawrocki
2014-04-01 14:23 ` Sylwester Nawrocki
2014-04-01 14:23 ` Sylwester Nawrocki
2014-04-01 16:37 ` Greg KH
2014-04-01 16:37 ` Greg KH
2014-04-02 5:37 ` Sascha Hauer
2014-04-02 5:37 ` Sascha Hauer
2014-04-02 5:37 ` Sascha Hauer
2014-04-02 10:24 ` Sylwester Nawrocki [this message]
2014-04-02 10:24 ` Sylwester Nawrocki
2014-04-02 10:18 ` Sylwester Nawrocki
2014-04-02 10:18 ` Sylwester Nawrocki
2014-04-01 16:35 ` Greg KH
2014-04-01 16:35 ` Greg KH
2014-04-02 8:01 ` Peter De Schrijver
2014-04-02 8:01 ` Peter De Schrijver
2014-04-02 8:01 ` Peter De Schrijver
2014-04-02 13:02 ` Sylwester Nawrocki
2014-04-02 13:02 ` Sylwester Nawrocki
2014-04-02 13:02 ` Sylwester Nawrocki
2014-04-01 13:15 ` Laurent Pinchart
2014-04-01 13:15 ` Laurent Pinchart
2014-04-01 14:52 ` Sylwester Nawrocki
2014-04-01 14:52 ` Sylwester Nawrocki
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=533BE55A.80408@samsung.com \
--to=s.nawrocki@samsung.com \
--cc=linux-arm-kernel@lists.infradead.org \
/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.