summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/tegra124
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-tegra/tegra124')
-rw-r--r--arch/arm/mach-tegra/tegra124/clock.c40
-rw-r--r--arch/arm/mach-tegra/tegra124/cpu.c4
2 files changed, 43 insertions, 1 deletions
diff --git a/arch/arm/mach-tegra/tegra124/clock.c b/arch/arm/mach-tegra/tegra124/clock.c
index da38b26c27..ca9549a318 100644
--- a/arch/arm/mach-tegra/tegra124/clock.c
+++ b/arch/arm/mach-tegra/tegra124/clock.c
@@ -19,6 +19,9 @@
#include <fdtdec.h>
#include <linux/delay.h>
+#include <dt-bindings/clock/tegra124-car.h>
+#include <dt-bindings/clock/tegra124-car-common.h>
+
/*
* Clock types that we can use as a source. The Tegra124 has muxes for the
* peripheral clocks, and in most cases there are four options for the clock
@@ -826,6 +829,41 @@ enum periph_id clk_id_to_periph_id(int clk_id)
return clk_id;
}
}
+
+/*
+ * Convert a device tree clock ID to our PLL ID.
+ *
+ * @param clk_id Clock ID according to tegra124 device tree binding
+ * Return: clock ID, or CLOCK_ID_NONE if the clock ID is invalid
+ */
+enum clock_id clk_id_to_pll_id(int clk_id)
+{
+ switch (clk_id) {
+ case TEGRA124_CLK_PLL_C:
+ return CLOCK_ID_CGENERAL;
+ case TEGRA124_CLK_PLL_M:
+ return CLOCK_ID_MEMORY;
+ case TEGRA124_CLK_PLL_P:
+ return CLOCK_ID_PERIPH;
+ case TEGRA124_CLK_PLL_A:
+ return CLOCK_ID_AUDIO;
+ case TEGRA124_CLK_PLL_U:
+ return CLOCK_ID_USB;
+ case TEGRA124_CLK_PLL_D:
+ case TEGRA124_CLK_PLL_D_OUT0:
+ return CLOCK_ID_DISPLAY;
+ case TEGRA124_CLK_PLL_X:
+ return CLOCK_ID_XCPU;
+ case TEGRA124_CLK_PLL_E:
+ return CLOCK_ID_EPCI;
+ case TEGRA124_CLK_CLK_32K:
+ return CLOCK_ID_32KHZ;
+ case TEGRA124_CLK_CLK_M:
+ return CLOCK_ID_CLK_M;
+ default:
+ return CLOCK_ID_NONE;
+ }
+}
#endif /* CONFIG_IS_ENABLED(OF_CONTROL) */
void clock_early_init(void)
@@ -1170,7 +1208,7 @@ struct periph_clk_init periph_clk_init_table[] = {
{ PERIPH_ID_SDMMC2, CLOCK_ID_PERIPH },
{ PERIPH_ID_SDMMC3, CLOCK_ID_PERIPH },
{ PERIPH_ID_SDMMC4, CLOCK_ID_PERIPH },
- { PERIPH_ID_PWM, CLOCK_ID_SFROM32KHZ },
+ { PERIPH_ID_PWM, CLOCK_ID_PERIPH },
{ PERIPH_ID_I2C1, CLOCK_ID_PERIPH },
{ PERIPH_ID_I2C2, CLOCK_ID_PERIPH },
{ PERIPH_ID_I2C3, CLOCK_ID_PERIPH },
diff --git a/arch/arm/mach-tegra/tegra124/cpu.c b/arch/arm/mach-tegra/tegra124/cpu.c
index d5f2683b26..b1bfe8fb5e 100644
--- a/arch/arm/mach-tegra/tegra124/cpu.c
+++ b/arch/arm/mach-tegra/tegra124/cpu.c
@@ -14,10 +14,14 @@
#include <asm/arch/tegra.h>
#include <asm/arch-tegra/clk_rst.h>
#include <asm/arch-tegra/pmc.h>
+#include <asm/arch-tegra/tegra_i2c.h>
#include <asm/arch-tegra/ap.h>
#include <linux/delay.h>
#include "../cpu.h"
+/* In case this function is not defined */
+__weak void pmic_enable_cpu_vdd(void) {}
+
/* Tegra124-specific CPU init code */
static void enable_cpu_power_rail(void)