[kernel/f18: 1/6] arm-exynos4: add regulator fix patches for SMDK310 and Origen boards

Peter Robinson pbrobinson at fedoraproject.org
Mon Oct 22 08:45:51 UTC 2012


commit d4d4cfe7bf3aef4b4db88b6eb8160fa93c4400a9
Author: Mauro Carvalho Chehab <mchehab at redhat.com>
Date:   Wed Oct 10 20:46:28 2012 -0300

    arm-exynos4: add regulator fix patches for SMDK310 and Origen boards
    
    Without those patches, both drivers oopses, due to a bug at the
    dummy regulator on Kernel 3.6.
    
    Also, some board components don't work without it.
    
    Those patches could not be 100% correct, but all components that
    are known to work with the upstream Kernel are available with it.
    
    Signed-off-by: Mauro Carvalho Chehab <mchehab at redhat.com>

 arm-origen-regulator-fix.patch  |   12 ++++++++++++
 arm-smdk310-regulator-fix.patch |   36 ++++++++++++++++++++++++++++++++++++
 kernel.spec                     |    7 +++++++
 3 files changed, 55 insertions(+), 0 deletions(-)
---
diff --git a/arm-origen-regulator-fix.patch b/arm-origen-regulator-fix.patch
new file mode 100644
index 0000000..c91bfb8
--- /dev/null
+++ b/arm-origen-regulator-fix.patch
@@ -0,0 +1,12 @@
+diff --git a/arch/arm/mach-exynos/mach-origen.c b/arch/arm/mach-exynos/mach-origen.c
+index 4e574c2..5028fee 100644
+--- a/arch/arm/mach-exynos/mach-origen.c
++++ b/arch/arm/mach-exynos/mach-origen.c
+@@ -121,6 +121,7 @@ static struct regulator_consumer_supply __initdata ldo14_consumer[] = {
+ };
+ static struct regulator_consumer_supply __initdata ldo17_consumer[] = {
+ 	REGULATOR_SUPPLY("vdd33", "swb-a31"), /* AR6003 WLAN & CSR 8810 BT */
++	REGULATOR_SUPPLY("vmmc", NULL),
+ };
+ static struct regulator_consumer_supply __initdata buck1_consumer[] = {
+ 	REGULATOR_SUPPLY("vdd_arm", NULL), /* CPUFREQ */
diff --git a/arm-smdk310-regulator-fix.patch b/arm-smdk310-regulator-fix.patch
new file mode 100644
index 0000000..0e0be1e
--- /dev/null
+++ b/arm-smdk310-regulator-fix.patch
@@ -0,0 +1,36 @@
+--- linus.orig/arch/arm/mach-exynos/mach-smdkv310.c
++++ linus/arch/arm/mach-exynos/mach-smdkv310.c
+@@ -14,6 +14,8 @@
+ #include <linux/lcd.h>
+ #include <linux/mmc/host.h>
+ #include <linux/platform_device.h>
++#include <linux/regulator/fixed.h>
++#include <linux/regulator/machine.h>
+ #include <linux/smsc911x.h>
+ #include <linux/io.h>
+ #include <linux/i2c.h>
+@@ -380,6 +382,14 @@ static void __init smdkv310_reserve(void
+ 	s5p_mfc_reserve_mem(0x43000000, 8 << 20, 0x51000000, 8 << 20);
+ }
+ 
++static struct regulator_consumer_supply vddmmc_consumers[] __devinitdata = {
++	REGULATOR_SUPPLY("vmmc", "s3c-sdhci.0"),
++	REGULATOR_SUPPLY("vmmc", "s3c-sdhci.1"),
++	REGULATOR_SUPPLY("vmmc", "s3c-sdhci.2"),
++	REGULATOR_SUPPLY("vdd33a", "smsc911x"),
++	REGULATOR_SUPPLY("vddvario", "smsc911x"),
++};
++
+ static void __init smdkv310_machine_init(void)
+ {
+ 	s3c_i2c1_set_platdata(NULL);
+@@ -387,6 +397,9 @@ static void __init smdkv310_machine_init
+ 
+ 	smdkv310_smsc911x_init();
+ 
++	regulator_register_always_on(0, "fixed-3.3V", vddmmc_consumers,
++				     ARRAY_SIZE(vddmmc_consumers), 3300000);
++
+ 	s3c_sdhci0_set_platdata(&smdkv310_hsmmc0_pdata);
+ 	s3c_sdhci1_set_platdata(&smdkv310_hsmmc1_pdata);
+ 	s3c_sdhci2_set_platdata(&smdkv310_hsmmc2_pdata);
diff --git a/kernel.spec b/kernel.spec
index fe6bef9..7e526d6 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -741,6 +741,10 @@ Patch21006: arm-tegra-sdhci-module-fix.patch
 # ARM highbank patches
 Patch21010: arm-highbank-sata-fix.patch
 
+# ARM exynos4
+Patch21020: arm-smdk310-regulator-fix.patch
+Patch21021: arm-origen-regulator-fix.patch
+
 Patch21094: power-x86-destdir.patch
 
 #rhbz 754518
@@ -1341,6 +1345,9 @@ ApplyPatch arm-tegra-nvec-kconfig.patch
 ApplyPatch arm-tegra-usb-no-reset-linux33.patch
 ApplyPatch arm-tegra-sdhci-module-fix.patch
 
+ApplyPatch arm-smdk310-regulator-fix.patch
+ApplyPatch arm-origen-regulator-fix.patch
+
 #
 # bugfixes to drivers and filesystems
 #


More information about the scm-commits mailing list