diff mbox

ARM: tegra: initialize basic system clocks

Message ID 1326212538-15419-1-git-send-email-pdeschrijver@nvidia.com
State Accepted, archived
Headers show

Commit Message

Peter De Schrijver Jan. 10, 2012, 4:22 p.m. UTC
Initialize basic system clocks and provide a auxdata table to allow some
peripheral drivers to find their clocks.

Signed-off-by: Peter De Schrijver <pdeschrijver@nvidia.com>

---

Stephen,

This should fix the hang you observed when sdhci_add_host() fails.
---
 arch/arm/mach-tegra/board-dt-tegra30.c |   24 +++++++++++++++++++++++-
 1 files changed, 23 insertions(+), 1 deletions(-)

Comments

Stephen Warren Jan. 10, 2012, 5:23 p.m. UTC | #1
Peter De Schrijver wrote at Tuesday, January 10, 2012 9:22 AM:
> Initialize basic system clocks and provide a auxdata table to allow some
> peripheral drivers to find their clocks.
...
> This should fix the hang you observed when sdhci_add_host() fails.

Yes, it does. This plus the Tegra30 clock patch series you posted stops
I2C and SDHCI drivers complaining about a lack of clocks during boot,
which is a great step forwards, even if SDHCI doesn't yet initialize
successfully. Thanks.

This patch and the clock series:

Tested-by: Stephen Warren <swarren@nvidia.com>
Acked-by: Stephen Warren <swarren@nvidia.com>
Olof Johansson Jan. 19, 2012, 4:18 a.m. UTC | #2
On Tue, Jan 10, 2012 at 09:23:52AM -0800, Stephen Warren wrote:
> Peter De Schrijver wrote at Tuesday, January 10, 2012 9:22 AM:
> > Initialize basic system clocks and provide a auxdata table to allow some
> > peripheral drivers to find their clocks.
> ...
> > This should fix the hang you observed when sdhci_add_host() fails.
> 
> Yes, it does. This plus the Tegra30 clock patch series you posted stops
> I2C and SDHCI drivers complaining about a lack of clocks during boot,
> which is a great step forwards, even if SDHCI doesn't yet initialize
> successfully. Thanks.
> 
> This patch and the clock series:
> 
> Tested-by: Stephen Warren <swarren@nvidia.com>
> Acked-by: Stephen Warren <swarren@nvidia.com>

Applied.

Peter, in the future please provide at least a one-sentence description of the
patch in the patch description. "ARM: tegra: enable tegra30 clock framework"
had no actualy patch description body so I added a simple one. It's a trivial
patch but it's a good habit to always have something there.


Thanks!

-Olof
--
To unsubscribe from this list: send the line "unsubscribe linux-tegra" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/arm/mach-tegra/board-dt-tegra30.c b/arch/arm/mach-tegra/board-dt-tegra30.c
index 3c197e2..b4124b1 100644
--- a/arch/arm/mach-tegra/board-dt-tegra30.c
+++ b/arch/arm/mach-tegra/board-dt-tegra30.c
@@ -34,16 +34,38 @@ 
 #include <asm/hardware/gic.h>
 
 #include "board.h"
+#include "clock.h"
 
 static struct of_device_id tegra_dt_match_table[] __initdata = {
 	{ .compatible = "simple-bus", },
 	{}
 };
 
+struct of_dev_auxdata tegra30_auxdata_lookup[] __initdata = {
+	OF_DEV_AUXDATA("nvidia,tegra20-sdhci", 0x78000000, "sdhci-tegra.0", NULL),
+	OF_DEV_AUXDATA("nvidia,tegra20-sdhci", 0x78000200, "sdhci-tegra.1", NULL),
+	OF_DEV_AUXDATA("nvidia,tegra20-sdhci", 0x78000400, "sdhci-tegra.2", NULL),
+	OF_DEV_AUXDATA("nvidia,tegra20-sdhci", 0x78000600, "sdhci-tegra.3", NULL),
+	OF_DEV_AUXDATA("nvidia,tegra20-i2c", 0x7000C000, "tegra-i2c.0", NULL),
+	OF_DEV_AUXDATA("nvidia,tegra20-i2c", 0x7000C400, "tegra-i2c.1", NULL),
+	OF_DEV_AUXDATA("nvidia,tegra20-i2c", 0x7000C500, "tegra-i2c.2", NULL),
+	OF_DEV_AUXDATA("nvidia,tegra20-i2c", 0x7000C700, "tegra-i2c.3", NULL),
+	OF_DEV_AUXDATA("nvidia,tegra20-i2c", 0x7000D000, "tegra-i2c.4", NULL),
+	{}
+};
+
+static __initdata struct tegra_clk_init_table tegra_dt_clk_init_table[] = {
+	/* name		parent		rate		enabled */
+	{ "uartd",	"pll_p",	408000000,	true },
+	{ NULL,		NULL,		0,		0},
+};
+
 static void __init tegra30_dt_init(void)
 {
+	tegra_clk_init_from_table(tegra_dt_clk_init_table);
+
 	of_platform_populate(NULL, tegra_dt_match_table,
-				NULL, NULL);
+				tegra30_auxdata_lookup, NULL);
 }
 
 static const char *tegra30_dt_board_compat[] = {