Skip to content

Commit

Permalink
Merge tag 'tegra-for-3.13-deps-for-arm-init-time-cleanup' of git://gi…
Browse files Browse the repository at this point in the history
…t.kernel.org/pub/scm/linux/kernel/git/swarren/linux-tegra into clk-of-init-v2_for-3.13

ARM: tegra: dependencies for ARM .init_time cleanup

This patch is a dependency for Sebastian Hesselbarth's series that
cleans up the ARM machine descriptor's .init_time hook. It may also end
up being a dependency for cleanup/development in the Tegra tree, and
hence is contained in its own topic branch, to allow conflicts to be
easily resolved.
  • Loading branch information
Sebastian Hesselbarth committed Sep 22, 2013
2 parents 272b98c + d220707 commit 615c924
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 23 deletions.
4 changes: 1 addition & 3 deletions arch/arm/mach-tegra/common.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
#include <linux/delay.h>
#include <linux/reboot.h>
#include <linux/irqchip.h>
#include <linux/clk-provider.h>

#include <asm/hardware/cache-l2x0.h>

Expand Down Expand Up @@ -61,8 +60,7 @@ u32 tegra_uart_config[4] = {
#ifdef CONFIG_OF
void __init tegra_dt_init_irq(void)
{
of_clk_init(NULL);
tegra_pmc_init();
tegra_pmc_init_irq();
tegra_init_irq();
irqchip_init();
tegra_legacy_irq_syscore_init();
Expand Down
41 changes: 22 additions & 19 deletions arch/arm/mach-tegra/pmc.c
Original file line number Diff line number Diff line change
Expand Up @@ -285,13 +285,10 @@ static const struct of_device_id matches[] __initconst = {
{ }
};

static void __init tegra_pmc_parse_dt(void)
void __init tegra_pmc_init_irq(void)
{
struct device_node *np;
u32 prop;
enum tegra_suspend_mode suspend_mode;
u32 core_good_time[2] = {0, 0};
u32 lp0_vec[2] = {0, 0};
u32 val;

np = of_find_matching_node(NULL, matches);
BUG_ON(!np);
Expand All @@ -300,6 +297,26 @@ static void __init tegra_pmc_parse_dt(void)

tegra_pmc_invert_interrupt = of_property_read_bool(np,
"nvidia,invert-interrupt");

val = tegra_pmc_readl(PMC_CTRL);
if (tegra_pmc_invert_interrupt)
val |= PMC_CTRL_INTR_LOW;
else
val &= ~PMC_CTRL_INTR_LOW;
tegra_pmc_writel(val, PMC_CTRL);
}

void __init tegra_pmc_init(void)
{
struct device_node *np;
u32 prop;
enum tegra_suspend_mode suspend_mode;
u32 core_good_time[2] = {0, 0};
u32 lp0_vec[2] = {0, 0};

np = of_find_matching_node(NULL, matches);
BUG_ON(!np);

tegra_pclk = of_clk_get_by_name(np, "pclk");
WARN_ON(IS_ERR(tegra_pclk));

Expand Down Expand Up @@ -365,17 +382,3 @@ static void __init tegra_pmc_parse_dt(void)

pmc_pm_data.suspend_mode = suspend_mode;
}

void __init tegra_pmc_init(void)
{
u32 val;

tegra_pmc_parse_dt();

val = tegra_pmc_readl(PMC_CTRL);
if (tegra_pmc_invert_interrupt)
val |= PMC_CTRL_INTR_LOW;
else
val &= ~PMC_CTRL_INTR_LOW;
tegra_pmc_writel(val, PMC_CTRL);
}
1 change: 1 addition & 0 deletions arch/arm/mach-tegra/pmc.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ bool tegra_pmc_cpu_is_powered(int cpuid);
int tegra_pmc_cpu_power_on(int cpuid);
int tegra_pmc_cpu_remove_clamping(int cpuid);

void tegra_pmc_init_irq(void);
void tegra_pmc_init(void);

#endif
12 changes: 11 additions & 1 deletion arch/arm/mach-tegra/tegra.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
#include <linux/slab.h>
#include <linux/sys_soc.h>
#include <linux/usb/tegra_usb_phy.h>
#include <linux/clk-provider.h>
#include <linux/clk/tegra.h>

#include <asm/mach-types.h>
Expand All @@ -44,13 +45,16 @@
#include "common.h"
#include "fuse.h"
#include "iomap.h"
#include "pmc.h"

static void __init tegra_dt_init(void)
{
struct soc_device_attribute *soc_dev_attr;
struct soc_device *soc_dev;
struct device *parent = NULL;

tegra_pmc_init();

tegra_clocks_apply_init_table();

soc_dev_attr = kzalloc(sizeof(*soc_dev_attr), GFP_KERNEL);
Expand Down Expand Up @@ -80,6 +84,12 @@ static void __init tegra_dt_init(void)
of_platform_populate(NULL, of_default_bus_match_table, NULL, parent);
}

static void __init tegra_dt_init_time(void)
{
of_clk_init(NULL);
clocksource_of_init();
}

static void __init paz00_init(void)
{
if (IS_ENABLED(CONFIG_ARCH_TEGRA_2x_SOC))
Expand Down Expand Up @@ -119,7 +129,7 @@ DT_MACHINE_START(TEGRA_DT, "NVIDIA Tegra SoC (Flattened Device Tree)")
.smp = smp_ops(tegra_smp_ops),
.init_early = tegra_init_early,
.init_irq = tegra_dt_init_irq,
.init_time = clocksource_of_init,
.init_time = tegra_dt_init_time,
.init_machine = tegra_dt_init,
.init_late = tegra_dt_init_late,
.restart = tegra_assert_system_reset,
Expand Down

0 comments on commit 615c924

Please sign in to comment.