From: Hans de Goede <hdegoede@redhat.com>
To: Thierry Reding <thierry.reding@gmail.com>
Cc: Mikko Perttunen <mperttunen@nvidia.com>,
swarren@wwwdotorg.org, tj@kernel.org,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-tegra@vger.kernel.org, linux-ide@vger.kernel.org
Subject: Re: [PATCH v4 1/8] of: Add NVIDIA Tegra SATA controller binding
Date: Thu, 17 Jul 2014 13:48:59 +0200 [thread overview]
Message-ID: <53C7B82B.5090403@redhat.com> (raw)
In-Reply-To: <53C7B6B5.4050602@redhat.com>
Hi,
On 07/17/2014 01:42 PM, Hans de Goede wrote:
> Hi,
>
> On 07/17/2014 12:52 PM, Thierry Reding wrote:
>> On Thu, Jul 17, 2014 at 12:23:47PM +0200, Hans de Goede wrote:
>
> <snip>
>
>>> The libahci_platform.c code / ahci_platform.c code is also used for
>>> devices going way back who may not yet be using the new clk framework,
>>> so where we need to use clk_get(dev, NULL); quoting from libahci_platform.c :
>>>
>>> for (i = 0; i < AHCI_MAX_CLKS; i++) {
>>> /*
>>> * For now we must use clk_get(dev, NULL) for the first clock,
>>> * because some platforms (da850, spear13xx) are not yet
>>> * converted to use devicetree for clocks. For new platforms
>>> * this is equivalent to of_clk_get(dev->of_node, 0).
>>> */
>>> if (i == 0)
>>> clk = clk_get(dev, NULL);
>>> else
>>> clk = of_clk_get(dev->of_node, i);
>>>
>>> if (IS_ERR(clk)) {
>>> rc = PTR_ERR(clk);
>>> if (rc == -EPROBE_DEFER)
>>> goto err_out;
>>> break;
>>> }
>>> hpriv->clks[i] = clk;
>>> }
>>>
>>> And there is no devm variant of that, nor is there one to get clocks by index.
>>> Note that we also need ahci_platform_put_resources for runtime pm support, so
>>> that one is going to stay around anyways and thus there is not that much value
>>> in fixing this.
>>>
>>> So although I like Thierry's idea, if we go this way (which sounds good), we
>>> should add support for taking a NULL ahci_platform_resources argument and in
>>> that case behave as before, esp. because of the platforms needing the old
>>> style clock handling. An advantage of doing this, is that we can simply patch
>>> all existing users to pass NULL.
>>
>> Isn't the "legacy" case really just this:
>>
>> static const char *const legacy_ahci_clocks[] = {
>> NULL
>> };
>>
>> static const struct ahci_platform_resources legacy_ahci_resources = {
>> .num_clocks = ARRAY_SIZE(legacy_ahci_clocks),
>> .clocks = legacy_ahci_clocks,
>> };
>>
>> ?
>
> Ah yes that would work for the really legacy ones, as well as less legacy
> (full dts) ones with only one clk, we need to check if there are current
> users which use more then one clk (yes there are which is why MAX_CLKS
> was 3) and fixup those to pass in a correct ahci_platform_resources struct
> then.
>
> The checking + fixing up will be a bit of extra work, but I think the end result
> will be quite nice. so I'm all in favor of this.
Correction, this is not going to work I'm afraid, as not all current dts files
set clock-names. So we need a fallback to get clks by index for compatibility
with old dts files.
At least: arch/arm/boot/dts/sun4i-a10.dtsi and arch/arm/boot/dts/sun7i-a20.dtsi
are affected. Note in this case the dts file is typically not burned into
a ROM or some such, so IMHO we could get away with requiring a new dts file.
So it might be worthwhile to still do a full check if all affected SoCs and
see if we can move over to using clock-names for all platforms with
more then 1 ahci/sata clk.
FWIW I've also just checked imx6q.dts which is the one which has 3 clocks, and
that one does define clk names.
Regards,
Hans
next prev parent reply other threads:[~2014-07-17 11:49 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-16 8:54 [PATCH v3 0/8] Serial ATA support for NVIDIA Tegra124 Mikko Perttunen
2014-07-16 8:54 ` [PATCH v3 1/8] of: Add NVIDIA Tegra SATA controller binding Mikko Perttunen
2014-07-16 9:26 ` Varka Bhadram
2014-07-16 11:42 ` Mikko Perttunen
2014-07-16 11:40 ` [PATCH v4 " Mikko Perttunen
2014-07-16 11:49 ` Hans de Goede
2014-07-16 13:13 ` Thierry Reding
2014-07-16 14:47 ` Hans de Goede
2014-07-16 19:51 ` Thierry Reding
2014-07-17 6:51 ` Hans de Goede
2014-07-17 7:39 ` Thierry Reding
2014-07-17 7:56 ` Mikko Perttunen
2014-07-17 10:23 ` Hans de Goede
2014-07-17 10:52 ` Thierry Reding
2014-07-17 11:42 ` Hans de Goede
2014-07-17 11:48 ` Hans de Goede [this message]
2014-07-17 11:35 ` Mikko Perttunen
2014-07-18 7:11 ` [PATCH v5 " Mikko Perttunen
2014-07-18 7:16 ` Mikko Perttunen
2014-07-18 10:28 ` Hans de Goede
2014-07-18 11:32 ` Mikko Perttunen
2014-07-18 15:06 ` Thierry Reding
2014-07-18 21:54 ` Tejun Heo
2014-07-22 21:03 ` Stephen Warren
2014-07-18 10:26 ` Hans de Goede
2014-07-16 8:54 ` [PATCH v3 2/8] ARM: tegra: Add SATA controller to Tegra124 device tree Mikko Perttunen
2014-08-25 17:23 ` Stephen Warren
2014-08-26 7:14 ` Mikko Perttunen
2014-07-16 8:54 ` [PATCH v3 3/8] ARM: tegra: Add SATA and SATA power to Jetson TK1 " Mikko Perttunen
2014-07-16 8:54 ` [PATCH v3 4/8] clk: tegra: Enable hardware control of SATA PLL Mikko Perttunen
2014-07-16 8:54 ` [PATCH v3 5/8] clk: tegra: Add SATA clocks to Tegra124 initialization table Mikko Perttunen
2014-07-16 8:54 ` [PATCH v3 6/8] ata: ahci_platform: Increase AHCI_MAX_CLKS to 4 Mikko Perttunen
2014-07-16 8:54 ` [PATCH v3 7/8] ata: Add support for the Tegra124 SATA controller Mikko Perttunen
2014-07-16 11:14 ` Hans de Goede
2014-07-16 11:42 ` Thierry Reding
2014-07-16 11:40 ` [PATCH v4 " Mikko Perttunen
2014-07-18 7:12 ` [PATCH v5 " Mikko Perttunen
2014-07-18 10:26 ` Hans de Goede
2014-07-18 10:49 ` Mikko Perttunen
2014-07-16 8:54 ` [PATCH v3 8/8] ARM: tegra: Add options for Tegra AHCI support to tegra_defconfig Mikko Perttunen
2014-08-26 17:46 ` Stephen Warren
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=53C7B82B.5090403@redhat.com \
--to=hdegoede@redhat.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=mperttunen@nvidia.com \
--cc=swarren@wwwdotorg.org \
--cc=thierry.reding@gmail.com \
--cc=tj@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).