linux-clk.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Sowjanya Komatineni <skomatineni@nvidia.com>
To: Dmitry Osipenko <digetx@gmail.com>, <thierry.reding@gmail.com>,
	<jonathanh@nvidia.com>, <mperttunen@nvidia.com>,
	<gregkh@linuxfoundation.org>, <sboyd@kernel.org>,
	<tglx@linutronix.de>, <robh+dt@kernel.org>,
	<mark.rutland@arm.com>
Cc: <allison@lohutok.net>, <pdeschrijver@nvidia.com>,
	<pgaikwad@nvidia.com>, <mturquette@baylibre.com>,
	<horms+renesas@verge.net.au>, <Jisheng.Zhang@synaptics.com>,
	<krzk@kernel.org>, <arnd@arndb.de>, <spujar@nvidia.com>,
	<josephl@nvidia.com>, <vidyas@nvidia.com>,
	<daniel.lezcano@linaro.org>, <mmaddireddy@nvidia.com>,
	<markz@nvidia.com>, <devicetree@vger.kernel.org>,
	<linux-clk@vger.kernel.org>, <linux-tegra@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v1 06/17] soc: pmc: Add blink output clock registration to Tegra PMC
Date: Tue, 19 Nov 2019 14:13:48 -0800	[thread overview]
Message-ID: <87dca259-1f3f-6e74-db45-411ed84afba7@nvidia.com> (raw)
In-Reply-To: <95f3e928-3e08-abbd-5617-d3570a592c06@gmail.com>


On 11/19/19 11:34 AM, Dmitry Osipenko wrote:
> 19.11.2019 09:50, Sowjanya Komatineni пишет:
>> Tegra PMC has blink control to output 32 Khz clock out to Tegra
>> blink pin. Blink pad DPD state and enable controls are part of
>> Tegra PMC register space.
>>
>> Currently Tegra clock driver registers blink control by passing
>> PMC address and register offset to clk_register_gate which performs
>> direct PMC access during clk_ops and with this when PMC is in secure
>> mode, any access from non-secure world does not go through.
>>
>> This patch adds blink control registration to the Tegra PMC driver
>> using PMC specific clock gate operations that use tegra_pmc_readl
>> and tegra_pmc_writel to support both secure mode and non-secure
>> mode PMC register access.
>>
>> Signed-off-by: Sowjanya Komatineni <skomatineni@nvidia.com>
>> ---
>>   drivers/soc/tegra/pmc.c | 42 ++++++++++++++++++++++++++++++++++++++++++
>>   1 file changed, 42 insertions(+)
>>
>> diff --git a/drivers/soc/tegra/pmc.c b/drivers/soc/tegra/pmc.c
>> index 790a6619ba32..095e89c7fa3f 100644
>> --- a/drivers/soc/tegra/pmc.c
>> +++ b/drivers/soc/tegra/pmc.c
>> @@ -61,12 +61,15 @@
>>   #define  PMC_CNTRL_SYSCLK_OE		BIT(11) /* system clock enable */
>>   #define  PMC_CNTRL_SYSCLK_POLARITY	BIT(10) /* sys clk polarity */
>>   #define  PMC_CNTRL_PWRREQ_POLARITY	BIT(8)
>> +#define  PMC_CNTRL_BLINK_EN		BIT(7)
>>   #define  PMC_CNTRL_MAIN_RST		BIT(4)
>>   
>>   #define PMC_WAKE_MASK			0x0c
>>   #define PMC_WAKE_LEVEL			0x10
>>   #define PMC_WAKE_STATUS			0x14
>>   #define PMC_SW_WAKE_STATUS		0x18
>> +#define PMC_DPD_PADS_ORIDE		0x1c
>> +#define  PMC_DPD_PADS_ORIDE_BLINK	BIT(20)
>>   
>>   #define DPD_SAMPLE			0x020
>>   #define  DPD_SAMPLE_ENABLE		BIT(0)
>> @@ -79,6 +82,7 @@
>>   
>>   #define PWRGATE_STATUS			0x38
>>   
>> +#define TEGRA210_PMC_BLINK_TIMER	0x40
>>   #define PMC_IMPL_E_33V_PWR		0x40
>>   
>>   #define PMC_PWR_DET			0x48
>> @@ -247,6 +251,9 @@ static struct pmc_clk_init_data tegra_pmc_clks_data[] = {
>>   	PMC_CLK(3, 22, 18, 0, 0),
>>   };
>>   
>> +static struct pmc_clk_gate blink_override;
>> +static struct pmc_clk_gate blink;
>> +
>>   struct tegra_powergate {
>>   	struct generic_pm_domain genpd;
>>   	struct tegra_pmc *pmc;
>> @@ -359,6 +366,7 @@ struct tegra_pmc_soc {
>>   
>>   	struct pmc_clk_init_data *pmc_clks_data;
>>   	unsigned int num_pmc_clks;
>> +	bool has_blink_output;
>>   };
>>   
>>   static const char * const tegra186_reset_sources[] = {
>> @@ -2530,6 +2538,9 @@ static void tegra_pmc_clock_register(struct tegra_pmc *pmc,
>>   	/* each pmc clock output has a mux and a gate */
>>   	num_clks = pmc->soc->num_pmc_clks * 2;
>>   
>> +	if (pmc->soc->has_blink_output)
>> +		num_clks += 1;
>> +
>>   	if (!num_clks)
>>   		return;
>>   
>> @@ -2604,6 +2615,30 @@ static void tegra_pmc_clock_register(struct tegra_pmc *pmc,
>>   		}
>>   	}
>>   
>> +	if (pmc->soc->has_blink_output) {
>> +		tegra_pmc_writel(pmc, 0x0, TEGRA210_PMC_BLINK_TIMER);
>> +		clkgate = tegra_pmc_clk_gate_register("blink_override",
>> +						      "clk_32k",
>> +						      0, &blink_override,
>> +					      PMC_DPD_PADS_ORIDE,
>> +						      PMC_DPD_PADS_ORIDE_BLINK,
>> +						      NULL);
>> +		if (IS_ERR(clkgate))
>> +			goto free_clks;
>> +
>> +		clkgate = tegra_pmc_clk_gate_register("blink",
>> +						      "blink_override",
>> +						      0, &blink,
>> +						      PMC_CNTRL,
>> +						      PMC_CNTRL_BLINK_EN,
>> +						      NULL);
>> +		if (IS_ERR(clkgate))
>> +			goto free_clks;
>> +
>> +		clk_data->clks[TEGRA_PMC_CLK_BLINK] = clkgate;
>> +		clk_register_clkdev(clkgate, "blink", NULL);
> Tegra20 has pmc->soc->num_pmc_clks = 0 and thus num_clks = 1, while
> TEGRA_PMC_CLK_BLINK = 6.
>
> BTW, Tegra30 doesn't boot. I'll try again v2.
>
> Please fix it all in v2. Compile-test all patches and make at least a
> boot-test where possible.
>
> [snip]

looks like blink output should be enabled during boot for Tegra20 and 
Tegra30 platforms.

Will add init state for blink output in V2. Will compile for old Tegra's 
as well and will try boot-test.


  reply	other threads:[~2019-11-19 22:14 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-19  6:50 [PATCH v1 00/17] Remove direct Tegra PMC access in clock driver Sowjanya Komatineni
2019-11-19  6:50 ` [PATCH v1 01/17] soc: tegra: pmc: Add helper functions for PLLM overrides Sowjanya Komatineni
2019-11-19 19:32   ` Dmitry Osipenko
2019-11-19  6:50 ` [PATCH v1 02/17] soc: tegra: pmc: Add helper function for PLLE IDDQ override Sowjanya Komatineni
2019-11-19  6:50 ` [PATCH v1 03/17] dt-bindings: soc: tegra-pmc: Add Tegra PMC clock ids Sowjanya Komatineni
2019-12-03 22:08   ` Rob Herring
2019-12-03 22:19     ` Sowjanya Komatineni
2019-11-19  6:50 ` [PATCH v1 04/17] soc: tegra: Add Tegra PMC clock registrations into PMC driver Sowjanya Komatineni
2019-11-19 19:33   ` Dmitry Osipenko
2019-11-19 20:08     ` Sowjanya Komatineni
2019-11-19 20:29       ` Sowjanya Komatineni
2019-11-20 17:46       ` Dmitry Osipenko
2019-11-20 19:09         ` Sowjanya Komatineni
2019-11-19  6:50 ` [PATCH v1 05/17] dt-bindings: soc: tegra-pmc: Add id for Tegra PMC blink control Sowjanya Komatineni
2019-11-19  6:50 ` [PATCH v1 06/17] soc: pmc: Add blink output clock registration to Tegra PMC Sowjanya Komatineni
2019-11-19 19:34   ` Dmitry Osipenko
2019-11-19 22:13     ` Sowjanya Komatineni [this message]
2019-11-20  2:09       ` Sowjanya Komatineni
2019-11-20  4:26         ` Sowjanya Komatineni
2019-11-19  6:50 ` [PATCH v1 07/17] clk: tegra: Use Tegra PMC helper functions for PLLM overrides Sowjanya Komatineni
2019-11-19  6:50 ` [PATCH v1 08/17] clk: tegra: Use Tegra PMC helper function for PLLE IDDQ Sowjanya Komatineni
2019-11-19  6:50 ` [PATCH v1 09/17] clk: tegra: Remove PMC base references from clock registration Sowjanya Komatineni
2019-11-19 19:33   ` Dmitry Osipenko
2019-11-19  6:50 ` [PATCH v1 10/17] clk: tegra: Remove tegra_pmc_clk_init along with clk ids Sowjanya Komatineni
2019-11-19 19:33   ` Dmitry Osipenko
2019-11-19  6:50 ` [PATCH v1 11/17] dt-bindings: clock: tegra: Remove pmc clock ids from clock dt-bindings Sowjanya Komatineni
2019-12-03 22:07   ` Rob Herring
2019-12-03 22:11     ` Sowjanya Komatineni
2019-11-19  6:50 ` [PATCH v1 12/17] arm: tegra: Add clock-cells property to Tegra pmc Sowjanya Komatineni
2019-11-19 19:32   ` Dmitry Osipenko
2019-11-19  6:50 ` [PATCH v1 13/17] arm64: " Sowjanya Komatineni
2019-11-19  6:50 ` [PATCH v1 14/17] dt-bindings: Add Tegra PMC clock configuration bindings Sowjanya Komatineni
2019-11-19  6:50 ` [PATCH v1 15/17] dt-bindings: tegra186-pmc: Add Tegra PMC clock bindings Sowjanya Komatineni
2019-12-03 22:11   ` Rob Herring
2019-12-03 23:28     ` Sowjanya Komatineni
2019-11-19  6:50 ` [PATCH v1 16/17] arm64: tegra: smaug: Change clk_out_2 provider from tegra_car to pmc Sowjanya Komatineni
2019-11-19  6:50 ` [PATCH v1 17/17] ASoC: nau8825: change Tegra " Sowjanya Komatineni

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=87dca259-1f3f-6e74-db45-411ed84afba7@nvidia.com \
    --to=skomatineni@nvidia.com \
    --cc=Jisheng.Zhang@synaptics.com \
    --cc=allison@lohutok.net \
    --cc=arnd@arndb.de \
    --cc=daniel.lezcano@linaro.org \
    --cc=devicetree@vger.kernel.org \
    --cc=digetx@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=horms+renesas@verge.net.au \
    --cc=jonathanh@nvidia.com \
    --cc=josephl@nvidia.com \
    --cc=krzk@kernel.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=markz@nvidia.com \
    --cc=mmaddireddy@nvidia.com \
    --cc=mperttunen@nvidia.com \
    --cc=mturquette@baylibre.com \
    --cc=pdeschrijver@nvidia.com \
    --cc=pgaikwad@nvidia.com \
    --cc=robh+dt@kernel.org \
    --cc=sboyd@kernel.org \
    --cc=spujar@nvidia.com \
    --cc=tglx@linutronix.de \
    --cc=thierry.reding@gmail.com \
    --cc=vidyas@nvidia.com \
    /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).