devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Colin Cross <ccross-z5hGa2qSFaRBDgjK7y7TUQ@public.gmane.org>
To: Peter De Schrijver
	<pdeschrijver-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Cc: Russell King <linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org>,
	Gary King <gking-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>,
	linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Rob Herring <rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.org>,
	linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Randy Dunlap <rdunlap-/UHa2rfvQTnk1uMJSBkQmQ@public.gmane.org>,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Subject: Re: [PATCH v6 03/10] arm/tegra: prepare clock code for multiple tegra variants
Date: Thu, 8 Dec 2011 10:25:53 -0800	[thread overview]
Message-ID: <CAMbhsRT97Oq-=8f9++f6Jgg=YVaimKSz68xcDDNbDbvL+V5fJg@mail.gmail.com> (raw)
In-Reply-To: <1323348254-29072-4-git-send-email-pdeschrijver-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>


[-- Attachment #1.1: Type: text/plain, Size: 5520 bytes --]

On Thu, Dec 8, 2011 at 4:43 AM, Peter De Schrijver
<pdeschrijver-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>wrote:

> Rework the tegra20 clock code to support multiple tegra variants :
>
>  * remove tegra2_periph_reset_assert/tegra2_periph_reset_deassert. This
>   functionality should be in clock.c.
>  * compile tegra_sdmmc_tap_delay only on tegra20 as this feature will not
>   be available in future variants.
>  * don't export clk_measure_input_freq as its functionality is also
> available
>   using clk_get_rate().
>
> Signed-off-by: Peter De Schrijver <pdeschrijver-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
> ---
>  arch/arm/mach-tegra/clock.c         |   12 +++++++-----
>  arch/arm/mach-tegra/clock.h         |    8 ++++----
>  arch/arm/mach-tegra/tegra2_clocks.c |   14 +-------------
>  arch/arm/mach-tegra/timer.c         |   12 ++++++++----
>  4 files changed, 20 insertions(+), 26 deletions(-)
>
> diff --git a/arch/arm/mach-tegra/clock.c b/arch/arm/mach-tegra/clock.c
> index f8d41ff..f27bdcc 100644
> --- a/arch/arm/mach-tegra/clock.c
> +++ b/arch/arm/mach-tegra/clock.c
> @@ -387,13 +387,15 @@ EXPORT_SYMBOL(tegra_clk_init_from_table);
>
>  void tegra_periph_reset_deassert(struct clk *c)
>  {
> -       tegra2_periph_reset_deassert(c);
> +       BUG_ON(!c->ops->reset);
>
+       c->ops->reset(c, false);
>  }
>  EXPORT_SYMBOL(tegra_periph_reset_deassert);
>
>  void tegra_periph_reset_assert(struct clk *c)
>  {
> -       tegra2_periph_reset_assert(c);
> +       BUG_ON(!c->ops->reset);
> +       c->ops->reset(c, true);
>  }
>  EXPORT_SYMBOL(tegra_periph_reset_assert);
>
> @@ -403,9 +405,9 @@ void __init tegra_init_clock(void)
>  }
>
>  /*
> - * The SDMMC controllers have extra bits in the clock source register that
> - * adjust the delay between the clock and data to compenstate for delays
> - * on the PCB.
> + * The SDMMC controllers on tegra20 have extra bits in the clock source
> + * register that adjust the delay between the clock and data to
> compenstate
> + * for delays on the PCB.
>  */
>  void tegra_sdmmc_tap_delay(struct clk *c, int delay)
>  {
>

I created this wrapper around tegra2_sdmmc_tap_delay because I guessed the
same requirement would be present in tegra3.  If you don't expect this to
be required on anything but tegra2, you could drop the wrapper and just
have callers use tegra2_sdmmc_tap_delay.


> diff --git a/arch/arm/mach-tegra/clock.h b/arch/arm/mach-tegra/clock.h
> index 688316a..135bb5f 100644
> --- a/arch/arm/mach-tegra/clock.h
> +++ b/arch/arm/mach-tegra/clock.h
> @@ -146,15 +146,15 @@ struct tegra_clk_init_table {
>  };
>
>  void tegra2_init_clocks(void);
> -void tegra2_periph_reset_deassert(struct clk *c);
> -void tegra2_periph_reset_assert(struct clk *c);
>  void clk_init(struct clk *clk);
>  struct clk *tegra_get_clock_by_name(const char *name);
> -unsigned long clk_measure_input_freq(void);
>  int clk_reparent(struct clk *c, struct clk *parent);
>  void tegra_clk_init_from_table(struct tegra_clk_init_table *table);
>  unsigned long clk_get_rate_locked(struct clk *c);
>  int clk_set_rate_locked(struct clk *c, unsigned long rate);
> +#ifdef CONFIG_ARCH_TEGRA_2x_SOC
>  void tegra2_sdmmc_tap_delay(struct clk *c, int delay);
> -
> +#else
> +#define tegra2_sdmmc_tap_delay(c, d) do {} while(0);
>

It's more standard to use an empty static inline function here.

+#endif
>  #endif
> diff --git a/arch/arm/mach-tegra/tegra2_clocks.c
> b/arch/arm/mach-tegra/tegra2_clocks.c
> index 371869d..2ab18f6 100644
> --- a/arch/arm/mach-tegra/tegra2_clocks.c
> +++ b/arch/arm/mach-tegra/tegra2_clocks.c
> @@ -174,7 +174,7 @@ static int tegra_periph_clk_enable_refcount[3 * 32];
>  #define pmc_readl(reg) \
>        __raw_readl(reg_pmc_base + (reg))
>
> -unsigned long clk_measure_input_freq(void)
> +static unsigned long clk_measure_input_freq(void)
>  {
>        u32 clock_autodetect;
>        clk_writel(OSC_FREQ_DET_TRIG | 1, OSC_FREQ_DET);
> @@ -278,18 +278,6 @@ static struct clk_ops tegra_clk_m_ops = {
>        .disable        = tegra2_clk_m_disable,
>  };
>
> -void tegra2_periph_reset_assert(struct clk *c)
> -{
> -       BUG_ON(!c->ops->reset);
> -       c->ops->reset(c, true);
> -}
> -
> -void tegra2_periph_reset_deassert(struct clk *c)
> -{
> -       BUG_ON(!c->ops->reset);
> -       c->ops->reset(c, false);
> -}
> -
>  /* super clock functions */
>  /* "super clocks" on tegra have two-stage muxes and a clock skipping
>  * super divider.  We will ignore the clock skipping divider, since we
> diff --git a/arch/arm/mach-tegra/timer.c b/arch/arm/mach-tegra/timer.c
> index 2f1df47..6366654 100644
> --- a/arch/arm/mach-tegra/timer.c
> +++ b/arch/arm/mach-tegra/timer.c
> @@ -182,14 +182,18 @@ static struct irqaction tegra_timer_irq = {
>  static void __init tegra_init_timer(void)
>  {
>        struct clk *clk;
> -       unsigned long rate = clk_measure_input_freq();
> +       unsigned long rate;
>        int ret;
>
>        clk = clk_get_sys("timer", NULL);
> -       if (IS_ERR(clk))
> -               pr_warn("Unable to get timer clock\n");
> -       else
> +       if (IS_ERR(clk)) {
> +               pr_warn("Unable to get timer clock."
> +                       " Assuming 12Mhz input clock.\n");
> +               rate = 12000000;
> +       } else {
>                clk_enable(clk);
> +               rate = clk_get_rate(clk);
> +       }
>
>        /*
>         * rtc registers are used by read_persistent_clock, keep the rtc
> clock
>

This timer change should be a separate patch.


> --
> 1.7.7.rc0.72.g4b5ea.dirty
>
>

[-- Attachment #1.2: Type: text/html, Size: 7052 bytes --]

[-- Attachment #2: Type: text/plain, Size: 192 bytes --]

_______________________________________________
devicetree-discuss mailing list
devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org
https://lists.ozlabs.org/listinfo/devicetree-discuss

  parent reply	other threads:[~2011-12-08 18:25 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-08 12:43 [PATCH v6 00/10] Add support for tegra30 and cardhu Peter De Schrijver
2011-12-08 12:43 ` [PATCH v6 01/10] arm/tegra: initial device tree for tegra30 Peter De Schrijver
2011-12-09 14:22   ` Rob Herring
2011-12-08 12:43 ` [PATCH v6 03/10] arm/tegra: prepare clock code for multiple tegra variants Peter De Schrijver
     [not found]   ` <1323348254-29072-4-git-send-email-pdeschrijver-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2011-12-08 18:25     ` Colin Cross [this message]
2011-12-09  9:13       ` Peter De Schrijver
2011-12-09 18:32         ` Colin Cross
2011-12-13 11:21         ` Peter De Schrijver
2011-12-08 12:43 ` [PATCH v6 04/10] arm/tegra: prepare early init " Peter De Schrijver
     [not found]   ` <1323348254-29072-5-git-send-email-pdeschrijver-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2011-12-08 17:57     ` Stephen Warren
     [not found]       ` <74CDBE0F657A3D45AFBB94109FB122FF1750B77A7E-C7FfzLzN0UxDw2glCA4ptUEOCMrvLtNR@public.gmane.org>
2011-12-08 18:29         ` Colin Cross
2011-12-09 11:19           ` Peter De Schrijver
2011-12-09 18:35             ` Colin Cross
2011-12-13 11:18               ` Peter De Schrijver
2011-12-12  0:17     ` Olof Johansson
2011-12-08 12:43 ` [PATCH v6 05/10] arm/tegra: rename tegra20 pinmux files Peter De Schrijver
2011-12-08 12:43 ` [PATCH v6 06/10] arm/tegra: prepare pinmux code for multiple tegra variants Peter De Schrijver
2011-12-08 12:43 ` [PATCH v6 07/10] arm/tegra: add new fields to struct tegra_pingroup_desc Peter De Schrijver
2011-12-08 12:43 ` [PATCH v6 08/10] arm/tegra: pinmux tables and definitions for tegra30 Peter De Schrijver
     [not found] ` <1323348254-29072-1-git-send-email-pdeschrijver-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2011-12-08 12:43   ` [PATCH v6 02/10] arm/tegra: cleanup tegra20 support Peter De Schrijver
2011-12-08 12:43   ` [PATCH v6 09/10] arm/tegra: implement support for tegra30 Peter De Schrijver
2011-12-08 12:43 ` [PATCH v6 10/10] arm/tegra: add support for tegra30 based board cardhu Peter De Schrijver
     [not found]   ` <1323348254-29072-11-git-send-email-pdeschrijver-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2011-12-08 18:03     ` Stephen Warren
2011-12-09 14:29     ` Rob Herring
     [not found]       ` <4EE21B67.5040006-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2011-12-09 15:52         ` Peter De Schrijver
2011-12-12  0:26         ` Olof Johansson
2011-12-08 18:08 ` [PATCH v6 00/10] Add support for tegra30 and cardhu 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='CAMbhsRT97Oq-=8f9++f6Jgg=YVaimKSz68xcDDNbDbvL+V5fJg@mail.gmail.com' \
    --to=ccross-z5hga2qsfarbdgjk7y7tuq@public.gmane.org \
    --cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \
    --cc=gking-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-doc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org \
    --cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=pdeschrijver-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
    --cc=rdunlap-/UHa2rfvQTnk1uMJSBkQmQ@public.gmane.org \
    --cc=rob.herring-bsGFqQB8/DxBDgjK7y7TUQ@public.gmane.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).