[RFC][PATCH 3/3] OMAP PM: Add Board specific parameters for OMAP Volatge layer

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This patch adds board specific parameters for ZOOM3 and OMAP4430 SDP Boards.
The same needs to be done for other OMAP3 and OMAP4 boards once the approach
is accepted.

Signed-off-by: Vishwanath BS <vishwanath.bs@xxxxxx>
---
 arch/arm/mach-omap2/board-4430sdp.c |   52 +++++++++++++++++++++++
 arch/arm/mach-omap2/board-zoom.c    |   79 +++++++++++++++++++++++++++++++++++
 2 files changed, 131 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
index 670cbd5..6dda89c 100644
--- a/arch/arm/mach-omap2/board-4430sdp.c
+++ b/arch/arm/mach-omap2/board-4430sdp.c
@@ -41,6 +41,7 @@
 #include "hsmmc.h"
 #include "timer-gp.h"
 #include "control.h"
+#include "voltage.h"
 
 #define ETH_KS8851_IRQ			34
 #define ETH_KS8851_POWER_ON		48
@@ -248,6 +249,46 @@ static struct spi_board_info sdp4430_spi_board_info[] __initdata = {
 	},
 };
 
+/* TODO: replace these dummy values with characterized latencies */
+static union omap_volt_board_data omap4430sdp_mpu_volt_data = {
+	.omap4_board_data = {
+		.vdd_setup_ret = {
+			.voltsetup_ramp_up	= 0xff,
+			.voltsetup_ramp_down = 0xff,
+		},
+		.vdd_setup_off = {
+			.voltsetup_ramp_up	= 0xff,
+			.voltsetup_ramp_down = 0xff,
+		},
+	}
+};
+
+static union omap_volt_board_data omap4430sdp_iva_volt_data = {
+	.omap4_board_data = {
+		.vdd_setup_ret = {
+			.voltsetup_ramp_up	= 0xff,
+			.voltsetup_ramp_down = 0xff,
+		},
+		.vdd_setup_off = {
+			.voltsetup_ramp_up	= 0xff,
+			.voltsetup_ramp_down = 0xff,
+		},
+	}
+};
+
+static union omap_volt_board_data omap4430sdp_core_volt_data = {
+	.omap4_board_data = {
+		.vdd_setup_ret = {
+			.voltsetup_ramp_up	= 0xff,
+			.voltsetup_ramp_down = 0xff,
+		},
+		.vdd_setup_off = {
+			.voltsetup_ramp_up	= 0xff,
+			.voltsetup_ramp_down = 0xff,
+		},
+	}
+};
+
 static int omap_ethernet_init(void)
 {
 	int status;
@@ -700,6 +741,7 @@ static void __init omap_4430sdp_init(void)
 {
 	int status;
 	int package = OMAP_PACKAGE_CBS;
+	struct voltagedomain *voltdm;
 
 	if (omap_rev() == OMAP4430_REV_ES1_0)
 		package = OMAP_PACKAGE_CBL;
@@ -728,6 +770,15 @@ static void __init omap_4430sdp_init(void)
 	status = omap4_keyboard_init(&sdp4430_keypad_data);
 	if (status)
 		pr_err("Keypad initialization failed: %d\n", status);
+
+	voltdm = omap_voltage_domain_lookup("mpu");
+	omap_voltage_register_board_params(voltdm, &omap4430sdp_mpu_volt_data);
+
+	voltdm = omap_voltage_domain_lookup("iva");
+	omap_voltage_register_board_params(voltdm, &omap4430sdp_iva_volt_data);
+
+	voltdm = omap_voltage_domain_lookup("core");
+	omap_voltage_register_board_params(voltdm, &omap4430sdp_core_volt_data);
 }
 
 static void __init omap_4430sdp_map_io(void)
@@ -746,3 +797,4 @@ MACHINE_START(OMAP_4430SDP, "OMAP4430 4430SDP board")
 	.init_machine	= omap_4430sdp_init,
 	.timer		= &omap_timer,
 MACHINE_END
+
diff --git a/arch/arm/mach-omap2/board-zoom.c b/arch/arm/mach-omap2/board-zoom.c
index 7e895ff..d921a2e 100644
--- a/arch/arm/mach-omap2/board-zoom.c
+++ b/arch/arm/mach-omap2/board-zoom.c
@@ -27,12 +27,45 @@
 
 #include <mach/board-zoom.h>
 
+#include "voltage.h"
 #include "board-flash.h"
 #include "mux.h"
 #include "sdram-micron-mt46h32m32lf-6.h"
 #include "sdram-hynix-h8mbx00u0mer-0em.h"
 
 #define ZOOM3_EHCI_RESET_GPIO		64
+/*
+ * VOLTSETUP1 for RET & OFF
+ * Setup time (in us) of the VDD1 and VDD2 regulators.
+ * Number of sys_clk cycles required for VDD regulator to stabilize is
+ * devided by 8 and programmed in the register field for VDD1/VDD2.
+ */
+#define OMAP3_VOLTSETUP_VDD1_RET		28
+#define OMAP3_VOLTSETUP_VDD2_RET		26
+
+#define OMAP3_VOLTSETUP_VDD1_OFF		55
+#define OMAP3_VOLTSETUP_VDD2_OFF		49
+
+/*
+ * VOLTOFFSET for RET & OFF
+ * Offset-time to de-assert sys_offmode signal while exiting the OFF mode
+ * and when the OFF sequence is supervised by the Power IC.
+ */
+#define OMAP3_VOLTOFFSET_OFF	516
+
+#define OMAP3_SYSREQ_CKEN_TIME	31
+#define OMAP3_S2A_TIME			10041
+#define OMAP3_VDD_RAMP_TIME		1250
+
+#define OMAP3_VOLTSETUP2	(OMAP3_SYSREQ_CKEN_TIME + OMAP3_S2A_TIME + OMAP3_VDD_RAMP_TIME - OMAP3_VOLTOFFSET_OFF)
+
+/*
+ * OMAP3 CLKSETUP TIME for RET & OFF
+ * Setup time of the oscillator (sys_clk), based on number of
+ * 32 kHz clock cycles.
+ */
+#define OMAP3_CLKSETUP_RET		31
+#define OMAP3_CLKSETUP_OFF		(OMAP3_VOLTOFFSET_OFF + OMAP3_VOLTSETUP2)
 
 static void __init omap_zoom_init_early(void)
 {
@@ -115,8 +148,46 @@ static const struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
 	.reset_gpio_port[2]	= -EINVAL,
 };
 
+union omap_volt_board_data zoom_mpu_volt_data = {
+	.omap3_board_data = {
+		.vdd_setup_ret = {
+			.voltsetup	= OMAP3_VOLTSETUP_VDD1_RET,
+			.clksetup	= OMAP3_CLKSETUP_RET,
+			.voltsetup2		= 0,
+			},
+
+		.vdd_setup_off = {
+			.voltsetup	= OMAP3_VOLTSETUP_VDD1_OFF,
+			.clksetup	= OMAP3_CLKSETUP_OFF,
+			.voltsetup2	= OMAP3_VOLTSETUP2,
+		},
+		.voltoffset		= OMAP3_VOLTOFFSET_OFF
+	}
+};
+
+union omap_volt_board_data zoom_core_volt_data = {
+	.omap3_board_data = {
+		.vdd_setup_ret = {
+			.voltsetup	= OMAP3_VOLTSETUP_VDD2_RET,
+			.clksetup	= OMAP3_CLKSETUP_RET,
+			.voltsetup2		= 0,
+		},
+
+		.vdd_setup_off = {
+			.voltsetup	= OMAP3_VOLTSETUP_VDD2_OFF,
+			.clksetup	= OMAP3_CLKSETUP_OFF,
+			.voltsetup2	= OMAP3_VOLTSETUP2,
+		},
+
+		.voltoffset		= OMAP3_VOLTOFFSET_OFF
+	}
+};
+
+
 static void __init omap_zoom_init(void)
 {
+	struct voltagedomain *voltdm;
+
 	if (machine_is_omap_zoom2()) {
 		omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
 	} else if (machine_is_omap_zoom3()) {
@@ -130,6 +201,13 @@ static void __init omap_zoom_init(void)
 	zoom_debugboard_init();
 	zoom_peripherals_init();
 	zoom_display_init();
+
+	voltdm = omap_voltage_domain_lookup("mpu");
+	omap_voltage_register_board_params(voltdm, &zoom_mpu_volt_data);
+
+	voltdm = omap_voltage_domain_lookup("core");
+	omap_voltage_register_board_params(voltdm, &zoom_core_volt_data);
+
 }
 
 MACHINE_START(OMAP_ZOOM2, "OMAP Zoom2 board")
@@ -151,3 +229,4 @@ MACHINE_START(OMAP_ZOOM3, "OMAP Zoom3 board")
 	.init_machine	= omap_zoom_init,
 	.timer		= &omap_timer,
 MACHINE_END
+
-- 
1.7.0.4

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


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux