From: hdegoede@redhat.com (Hans de Goede)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 1/8] of: Add NVIDIA Tegra SATA controller binding
Date: Thu, 17 Jul 2014 08:51:15 +0200 [thread overview]
Message-ID: <53C77263.7050903@redhat.com> (raw)
In-Reply-To: <20140716195136.GB5212@mithrandir>
Hi,
On 07/16/2014 09:51 PM, Thierry Reding wrote:
> On Wed, Jul 16, 2014 at 04:47:38PM +0200, Hans de Goede wrote:
>> Hi,
>>
>> On 07/16/2014 03:13 PM, Thierry Reding wrote:
>>> On Wed, Jul 16, 2014 at 01:49:57PM +0200, Hans de Goede wrote:
>>>> Hi,
>>>>
>>>> On 07/16/2014 01:40 PM, Mikko Perttunen wrote:
>>>>> This patch adds device tree binding documentation for the SATA
>>>>> controller found on NVIDIA Tegra SoCs.
>>>>>
>>>>> Signed-off-by: Mikko Perttunen <mperttunen@nvidia.com>
>>>>> ---
>>>>> v4: clarify mandatory clock order
>>>>
>>>> Thanks this and the new v4 of "ata: Add support for the Tegra124 SATA controller"
>>>> both look good to me. So these 2 + v3 for the rest of the series are:
>>>>
>>>> Acked-by: Hans de Goede <hdegoede@redhat.com>
>>>
>>> Like I said in my reply to PATCH v3 7/8, I think this mandatory clock
>>> order is a mistake.
>>
>> We've plenty of other dt bindings where things need to be specified in
>> a certain order, e.g. registers. So I don't really see what the problem
>> is here.
>
> Like I said, the clock-names exists so that drivers can request a clock
> by name. Therefore the order in which they are listed doesn't matter.
> The only thing that matters is that the entries in clocks and
> clock-names match up.
Ok so I've been think about this, and about the unbalance I've noticed
between tegra_ahci_power_on which does everything DIY and tegra_ahci_power_off
which uses ahci_platform_disable_resources() in v3 and later.
Really only the "sata" clock needs special handling, so I think the following
solution is best:
1) Drop the clock ordering requirement and the clk enum
2) Make ahci_tegra.c do a devm_clk_get(dev, "sata"), so that it gets its
own handle to the sata-clk (store this in tegra_ahci_priv). no need to
get all the other clks which need no special handling
3) Start using ahci_platform_enable_resources() in tegra_ahci_power_on,
so it would look something like this:
static int tegra_ahci_power_on(struct ahci_host_priv *hpriv)
{
struct tegra_ahci_priv *tegra = hpriv->plat_data;
int ret;
ret = regulator_bulk_enable(ARRAY_SIZE(tegra->supplies),
tegra->supplies);
if (ret)
return ret;
ret = tegra_powergate_sequence_power_up(TEGRA_POWERGATE_SATA,
tegra->sata_clk,
tegra->sata_rst);
if (ret)
goto disable_regulators;
reset_control_deassert(tegra->sata_cold_rst);
reset_control_deassert(tegra->sata_oob_rst);
ret = ahci_platform_enable_resources(hpriv);
if (ret)
goto powergate_sequence_power_off;
return 0;
...
This will make tegra_ahci_power_on and tegra_ahci_power_off symmetrical
which is something I always like to see in functions like this.
I realize that this changes the reset-deassert vs clock enabling ordering,
if this is an issue please add reset support to libahci-platform.c I believe
that is something which we will need to do soonish anyways (reset controllers
are popping up everywhere in newer SoCs).
This will nicely reduce the amount of code and also greatly simplify the error
return path of tegra_ahci_power_on.
This means that the sata_clk will get enabled twice, but that is harmless
as long as we disable it twice too. This means that we need to add an
extra disable to tegra_ahci_power_off because tegra_powergate_power_off
seems to not do this (unlike power-on, which is rather unsymmetrical
it would be nice to fix this).
Regards,
Hans
next prev parent reply other threads:[~2014-07-17 6:51 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 [this message]
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
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=53C77263.7050903@redhat.com \
--to=hdegoede@redhat.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 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).