Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 313454
b: refs/heads/master
c: a12c0ef
h: refs/heads/master
v: v3
  • Loading branch information
Stephen Warren committed Jun 20, 2012
1 parent 8e9f5e2 commit 5159108
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 7 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c554dee35c3e6b0c19db5fb75193d4cd99736c6b
refs/heads/master: a12c0efc7a3f433377add0fa1fd0ed4836cc595e
20 changes: 20 additions & 0 deletions trunk/arch/arm/mach-tegra/board-dt-tegra20.c
Original file line number Diff line number Diff line change
Expand Up @@ -109,13 +109,33 @@ static void __init trimslice_init(void)
}
#endif

#ifdef CONFIG_MACH_HARMONY
static void __init harmony_init(void)
{
int ret;

ret = harmony_regulator_init();
if (ret) {
pr_err("harmony_regulator_init() failed: %d\n", ret);
return;
}

ret = harmony_pcie_init();
if (ret)
pr_err("harmony_pcie_init() failed: %d\n", ret);
}
#endif

static struct {
char *machine;
void (*init)(void);
} board_init_funcs[] = {
#ifdef CONFIG_MACH_TRIMSLICE
{ "compulab,trimslice", trimslice_init },
#endif
#ifdef CONFIG_MACH_HARMONY
{ "nvidia,harmony", harmony_init },
#endif
};

static void __init tegra_dt_init_late(void)
Expand Down
15 changes: 10 additions & 5 deletions trunk/arch/arm/mach-tegra/board-harmony-pcie.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,11 @@

#ifdef CONFIG_TEGRA_PCI

static int __init harmony_pcie_init(void)
int __init harmony_pcie_init(void)
{
struct regulator *regulator = NULL;
int err;

if (!machine_is_harmony())
return 0;

err = gpio_request(TEGRA_GPIO_EN_VDD_1V05_GPIO, "EN_VDD_1V05");
if (err)
return err;
Expand Down Expand Up @@ -62,7 +59,15 @@ static int __init harmony_pcie_init(void)
return err;
}

static int __init harmony_pcie_initcall(void)
{
if (!machine_is_harmony())
return 0;

return harmony_pcie_init();
}

/* PCI should be initialized after I2C, mfd and regulators */
subsys_initcall_sync(harmony_pcie_init);
subsys_initcall_sync(harmony_pcie_initcall);

#endif
25 changes: 24 additions & 1 deletion trunk/arch/arm/mach-tegra/board-harmony-power.c
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@
#include <linux/gpio.h>
#include <linux/regulator/machine.h>
#include <linux/mfd/tps6586x.h>
#include <linux/of.h>
#include <linux/of_i2c.h>

#include <asm/mach-types.h>

#include <mach/irqs.h>

Expand Down Expand Up @@ -110,7 +114,26 @@ static struct i2c_board_info __initdata harmony_regulators[] = {

int __init harmony_regulator_init(void)
{
i2c_register_board_info(3, harmony_regulators, 1);
if (machine_is_harmony()) {
i2c_register_board_info(3, harmony_regulators, 1);
} else { /* Harmony, booted using device tree */
struct device_node *np;
struct i2c_adapter *adapter;

np = of_find_node_by_path("/i2c@7000d000");
if (np == NULL) {
pr_err("Could not find device_node for DVC I2C\n");
return -ENODEV;
}

adapter = of_find_i2c_adapter_by_node(np);
if (!adapter) {
pr_err("Could not find i2c_adapter for DVC I2C\n");
return -ENODEV;
}

i2c_new_device(adapter, harmony_regulators);
}

return 0;
}
7 changes: 7 additions & 0 deletions trunk/arch/arm/mach-tegra/board.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,5 +46,12 @@ int __init tegra_powergate_debugfs_init(void);
static inline int tegra_powergate_debugfs_init(void) { return 0; }
#endif

int __init harmony_regulator_init(void);
#ifdef CONFIG_TEGRA_PCI
int __init harmony_pcie_init(void);
#else
static inline int harmony_pcie_init(void) { return 0; }
#endif

extern struct sys_timer tegra_timer;
#endif

0 comments on commit 5159108

Please sign in to comment.