mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Lucas Stach <dev@lynxeye.de>
To: Vince Hsu <vinceh@nvidia.com>
Cc: thierry.reding@gmail.com, swarren@wwwdotorg.org,
	gnurou@gmail.com, bskeggs@redhat.com, martin.peres@free.fr,
	seven@nimrod-online.com, samuel.pitoiset@gmail.com,
	nouveau@lists.freedesktop.org, linux-tegra@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/11] ARM: tegra: add function to control the GPU rail clamp
Date: Wed, 24 Dec 2014 14:16:30 +0100	[thread overview]
Message-ID: <1419426990.2179.7.camel@lynxeye.de> (raw)
In-Reply-To: <1419331204-26679-2-git-send-email-vinceh@nvidia.com>

Am Dienstag, den 23.12.2014, 18:39 +0800 schrieb Vince Hsu:
> The Tegra124 and later Tegra SoCs have a sepatate rail gating register
> to enable/disable the clamp. The original function
> tegra_powergate_remove_clamping() is not sufficient for the enable
> function. So add a new function which is dedicated to the GPU rail
> gating. Also don't refer to the powergate ID since the GPU ID makes no
> sense here.
> 
> Signed-off-by: Vince Hsu <vinceh@nvidia.com>

To be honest I don't see the point of this patch.
You are bloating the PMC interface by introducing another exported
function that does nothing different than what the current function
already does.

If you need a way to assert the clamp I would have expected you to
introduce a common function to do this for all power partitions.

Other comments inline.

Regards,
Lucas

> ---
>  drivers/soc/tegra/pmc.c | 34 +++++++++++++++++++++++-----------
>  include/soc/tegra/pmc.h |  2 ++
>  2 files changed, 25 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/soc/tegra/pmc.c b/drivers/soc/tegra/pmc.c
> index a2c0ceb95f8f..7798c530ead1 100644
> --- a/drivers/soc/tegra/pmc.c
> +++ b/drivers/soc/tegra/pmc.c
> @@ -225,17 +225,6 @@ int tegra_powergate_remove_clamping(int id)
>  		return -EINVAL;
>  
>  	/*
> -	 * The Tegra124 GPU has a separate register (with different semantics)
> -	 * to remove clamps.
> -	 */
> -	if (tegra_get_chip_id() == TEGRA124) {
> -		if (id == TEGRA_POWERGATE_3D) {
> -			tegra_pmc_writel(0, GPU_RG_CNTRL);
> -			return 0;
> -		}
> -	}
> -
> -	/*
>  	 * Tegra 2 has a bug where PCIE and VDE clamping masks are
>  	 * swapped relatively to the partition ids
>  	 */
> @@ -253,6 +242,29 @@ int tegra_powergate_remove_clamping(int id)
>  EXPORT_SYMBOL(tegra_powergate_remove_clamping);
>  
>  /**
> + * tegra_powergate_gpu_set_clamping - control GPU-SOC clamps
> + *
> + * The post-Tegra114 chips have a separate rail gating register to configure
> + * clamps.
> + *
> + * @assert: true to assert clamp, and false to remove
> + */
> +int tegra_powergate_gpu_set_clamping(bool assert)

Those functions with a bool parameter to set/unset something are really
annoying. Please avoid this pattern. The naming of the original function
is much more intuitive.

> +{
> +	if (!pmc->soc)
> +		return -EINVAL;
> +
> +	if (tegra_get_chip_id() == TEGRA124) {
> +		tegra_pmc_writel(assert ? 1 : 0, GPU_RG_CNTRL);
> +		tegra_pmc_readl(GPU_RG_CNTRL);

You are reading the register back here, which to me seems like you are
trying to make sure that the write is flushed. Why is this needed?
I also observed the need to do this while working on Tegra124 PCIe in
Barebox, otherwise the partition wouldn't power up. I didn't have time
to follow up on this yet, so it would be nice if you could explain why
this is needed, or if you don't know ask HW about it.

> +		return 0;
> +	}
> +
> +	return -EINVAL;
> +}
> +EXPORT_SYMBOL(tegra_powergate_gpu_set_clamping);
> +
> +/**
>   * tegra_powergate_sequence_power_up() - power up partition
>   * @id: partition ID
>   * @clk: clock for partition
> diff --git a/include/soc/tegra/pmc.h b/include/soc/tegra/pmc.h
> index 65a93273e72f..53d620525a9e 100644
> --- a/include/soc/tegra/pmc.h
> +++ b/include/soc/tegra/pmc.h
> @@ -109,6 +109,8 @@ int tegra_powergate_is_powered(int id);
>  int tegra_powergate_power_on(int id);
>  int tegra_powergate_power_off(int id);
>  int tegra_powergate_remove_clamping(int id);
> +/* Only for Tegra124 and later */
> +int tegra_powergate_gpu_set_clamping(bool assert);
>  
>  /* Must be called with clk disabled, and returns with clk enabled */
>  int tegra_powergate_sequence_power_up(int id, struct clk *clk,



  reply	other threads:[~2014-12-24 13:26 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-23 10:39 [PATCH 0/11] Add suspend/resume support for GK20A Vince Hsu
2014-12-23 10:39 ` [PATCH 1/11] ARM: tegra: add function to control the GPU rail clamp Vince Hsu
2014-12-24 13:16   ` Lucas Stach [this message]
2014-12-25  2:28     ` Vince Hsu
2014-12-25 20:34       ` Lucas Stach
2014-12-29  2:49         ` Vince Hsu
2014-12-30 16:42           ` Lucas Stach
2015-01-05  6:55             ` Vince Hsu
2015-01-05 15:09       ` Thierry Reding
2015-01-06  2:11         ` Vince Hsu
2015-01-06 11:15           ` Thierry Reding
2015-01-06 12:03             ` Vince Hsu
2015-01-06 13:29               ` Thierry Reding
2015-01-06 13:51                 ` Vince Hsu
2015-01-06 14:23                   ` Thierry Reding
2015-01-07 10:19         ` Peter De Schrijver
2015-01-07 10:49           ` Vince Hsu
2015-01-07 13:27             ` Thierry Reding
2015-01-07 14:08               ` Peter De Schrijver
2015-01-07 14:28                 ` Vince Hsu
2015-01-07 14:48                   ` Thierry Reding
2015-01-08  4:25                     ` Vince Hsu
2015-01-08  8:03                       ` Thierry Reding
2015-01-07 14:12             ` Peter De Schrijver
2015-01-07 14:19               ` Vince Hsu
2015-01-07 15:12                 ` Thierry Reding
2015-01-08  4:23                   ` Vince Hsu
2015-01-08  9:32                   ` Peter De Schrijver
2015-01-08 11:41                     ` Thierry Reding
2015-01-08 12:41                       ` Peter De Schrijver
2015-01-08  9:39                   ` Peter De Schrijver
2015-01-08 11:44                     ` Thierry Reding
2014-12-24 13:52   ` Dmitry Osipenko
2014-12-25  2:05     ` Vince Hsu
2014-12-23 10:39 ` [PATCH 2/11] memory: tegra: add mc flush support Vince Hsu
2015-01-06 14:18   ` Thierry Reding
2015-01-07 10:08     ` Peter De Schrijver
2015-01-07 13:34       ` Thierry Reding
2014-12-23 10:39 ` [PATCH 3/11] memory: tegra: add flush operation for Tegra124 memory clients Vince Hsu
2015-01-06 14:30   ` Thierry Reding
2015-01-06 15:07     ` Vince Hsu
2015-01-06 15:27       ` Thierry Reding
2015-01-06 15:53         ` Vince Hsu
2014-12-23 10:39 ` [PATCH 4/11] ARM: tegra: add mc node for Tegra124 GPU Vince Hsu
2014-12-23 10:39 ` [PATCH nouveau 05/11] platform: switch to the new gpu rail clamping function Vince Hsu
2014-12-23 10:39 ` [PATCH nouveau 06/11] platform: complete the power up/down sequence Vince Hsu
2014-12-24 13:23   ` Lucas Stach
2014-12-25  2:42     ` Vince Hsu
2015-01-05 15:25       ` Thierry Reding
2015-01-06  9:34         ` Vince Hsu
2015-01-06 11:36           ` Thierry Reding
2015-01-06 12:13             ` Vince Hsu
2015-01-06 13:55               ` Thierry Reding
2015-01-06 14:19                 ` Vince Hsu
2015-01-06 14:24                   ` Thierry Reding
2014-12-23 10:40 ` [PATCH nouveau 07/11] instmem: make nv50_instmem_priv public Vince Hsu
2014-12-23 10:40 ` [PATCH nouveau 08/11] instmem: add dummy support for GK20A Vince Hsu
2014-12-23 16:39   ` [Nouveau] " Ilia Mirkin
2014-12-24  2:44     ` Vince Hsu
2014-12-23 10:40 ` [PATCH nouveau 09/11] drm: export some variable and functions to resue the PM functions Vince Hsu
2014-12-30  2:34   ` [Nouveau] " Emil Velikov
2014-12-30  3:18     ` Vince Hsu
2015-01-05 15:32       ` Thierry Reding
2015-01-05 19:50         ` Alexandre Courbot
2015-01-06  9:36           ` Vince Hsu
2015-01-06 11:49           ` Thierry Reding
2015-01-06 12:27             ` Vince Hsu
2015-01-06 14:37               ` Thierry Reding
2015-01-06 14:44                 ` Ilia Mirkin
2015-01-06 14:50                   ` Thierry Reding
2015-01-06 15:03                     ` Ilia Mirkin
2015-01-06 15:35                       ` Thierry Reding
2014-12-23 10:40 ` [PATCH nouveau 10/11] platform: add suspend/resume support Vince Hsu
2014-12-23 10:40 ` [PATCH nouveau 11/11] platform: add PM runtime " Vince Hsu

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=1419426990.2179.7.camel@lynxeye.de \
    --to=dev@lynxeye.de \
    --cc=bskeggs@redhat.com \
    --cc=gnurou@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=martin.peres@free.fr \
    --cc=nouveau@lists.freedesktop.org \
    --cc=samuel.pitoiset@gmail.com \
    --cc=seven@nimrod-online.com \
    --cc=swarren@wwwdotorg.org \
    --cc=thierry.reding@gmail.com \
    --cc=vinceh@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

Powered by JetHome