From 3cb6b77143d9a17f5d412f33de6cd98db11ba3b4 Mon Sep 17 00:00:00 2001 From: Nishanth Menon Date: Fri, 26 Apr 2013 02:21:55 -0500 Subject: [PATCH] TESTING HACKHACK: add dummy virt-consumer for OMAP3/4/5 Set CONFIG_REGULATOR_VIRTUAL_CONSUMER=y to use OMAP3630(beagle-XM): MPU : REG=/sys/class/regulator/regulator.9 CONS=/sys/devices/platform/reg-virt-consumer.0 for V in 1012500 1200000 1325000 1375000 do echo -n "$V">$CONS/min_microvolts echo -n "$V">$CONS/max_microvolts echo "Tried $V, Voltage =" `cat $REG/microvolts` done OMAP4460(Panda-ES): MPU: http://pastebin.com/TKPPZDQ1 REG=/sys/class/regulator/regulator.1 CONS=/sys/devices/platform/reg-virt-consumer.0 for V in 1025000 1200000 1313000 1375000 1389000 do echo -n "$V">$CONS/min_microvolts echo -n "$V">$CONS/max_microvolts echo "Tried $V, Voltage =" `cat $REG/microvolts` done IVA: REG=/sys/class/regulator/regulator.2 CONS=/sys/devices/platform/reg-virt-consumer.1 for V in 950000 1140000 1291000 1375000 1376000 do echo -n "$V">$CONS/min_microvolts echo -n "$V">$CONS/max_microvolts echo "Tried $V, Voltage =" `cat $REG/microvolts` done OMAP5: Similarly Signed-off-by: Nishanth Menon --- arch/arm/mach-omap2/pm.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/arch/arm/mach-omap2/pm.c b/arch/arm/mach-omap2/pm.c index 6cf95160..635f40b 100644 --- a/arch/arm/mach-omap2/pm.c +++ b/arch/arm/mach-omap2/pm.c @@ -265,6 +265,57 @@ static void __init omap4_init_voltages(void) omap2_set_init_voltage("iva", "dpll_iva_m5x2_ck", "iva"); } +static inline void dummy_consumers_for_abb_test(void) +{ + if (cpu_is_omap34xx()) { + char name1[] = "abb_mpu_iva"; + struct platform_device_info devinfo1 = { + .name = "reg-virt-consumer", + .data = name1, + .size_data = sizeof(name1), + }; + platform_device_register_full(&devinfo1); + } + + if (cpu_is_omap44xx()) { + char name1[] = "abb_mpu"; + char name2[] = "abb_iva"; + struct platform_device_info devinfo1 = { + .name = "reg-virt-consumer", + .id = 0, + .data = name1, + .size_data = sizeof(name1), + }; + struct platform_device_info devinfo2 = { + .name = "reg-virt-consumer", + .id = 1, + .data = name2, + .size_data = sizeof(name2), + }; + platform_device_register_full(&devinfo1); + platform_device_register_full(&devinfo2); + } + + if (soc_is_omap54xx()) { + char name1[] = "abb_mpu"; + char name2[] = "abb_mm"; + struct platform_device_info devinfo1 = { + .name = "reg-virt-consumer", + .id = 0, + .data = name1, + .size_data = sizeof(name1), + }; + struct platform_device_info devinfo2 = { + .name = "reg-virt-consumer", + .id = 1, + .data = name2, + .size_data = sizeof(name2), + }; + platform_device_register_full(&devinfo1); + platform_device_register_full(&devinfo2); + } +} + static inline void omap_init_cpufreq(void) { struct platform_device_info devinfo = { }; @@ -310,6 +361,8 @@ int __init omap2_common_pm_late_init(void) /* cpufreq dummy device instantiation */ omap_init_cpufreq(); + dummy_consumers_for_abb_test(); + #ifdef CONFIG_SUSPEND suspend_set_ops(&omap_pm_ops); #endif -- 1.7.9.5