aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/s3c24xx/patches/0228-fix-allow-full-sd-voltage-range-selection.patch.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/s3c24xx/patches/0228-fix-allow-full-sd-voltage-range-selection.patch.patch')
-rwxr-xr-xtarget/linux/s3c24xx/patches/0228-fix-allow-full-sd-voltage-range-selection.patch.patch74
1 files changed, 74 insertions, 0 deletions
diff --git a/target/linux/s3c24xx/patches/0228-fix-allow-full-sd-voltage-range-selection.patch.patch b/target/linux/s3c24xx/patches/0228-fix-allow-full-sd-voltage-range-selection.patch.patch
new file mode 100755
index 0000000000..c10da6ab99
--- /dev/null
+++ b/target/linux/s3c24xx/patches/0228-fix-allow-full-sd-voltage-range-selection.patch.patch
@@ -0,0 +1,74 @@
+From 0dd4b9a534db9bef8f2901c00ee58b00e14a49df Mon Sep 17 00:00:00 2001
+From: Andy Green <andy@openmoko.com>
+Date: Wed, 30 Jul 2008 14:36:42 +0100
+Subject: [PATCH] fix-allow-full-sd-voltage-range-selection.patch
+
+Until now we just drove the SD Card at 3.3V all the time. But in
+fact we can do better, and use a voltage negotiated with the
+SD Card itself.
+
+With the shipping 512MB Sandisk SD Card, 2.7V is negotiated which
+gives 1.7dBm reduction in power on all the SD Card lines and should
+further reduce GPS perturbation during SD Card usage.
+
+Signed-off-by: Andy Green <andy@openmoko.com>
+---
+ arch/arm/mach-s3c2440/mach-gta02.c | 10 ++++------
+ drivers/mfd/glamo/glamo-core.c | 13 ++++++++++++-
+ 2 files changed, 16 insertions(+), 7 deletions(-)
+
+diff --git a/arch/arm/mach-s3c2440/mach-gta02.c b/arch/arm/mach-s3c2440/mach-gta02.c
+index 1fcd3fd..382837d 100644
+--- a/arch/arm/mach-s3c2440/mach-gta02.c
++++ b/arch/arm/mach-s3c2440/mach-gta02.c
+@@ -604,7 +604,7 @@ static struct pcf50633_platform_data gta02_pcf_pdata = {
+ [PCF50633_REGULATOR_HCLDO] = {
+ .name = "sd_3v3",
+ .voltage = {
+- .init = 3300,
++ .init = 2000,
+ .max = 3300,
+ },
+ },
+@@ -1378,11 +1378,9 @@ gta02_glamo_mmc_set_power(unsigned char power_mode, unsigned short vdd)
+ return;
+ }
+ /* select and set the voltage */
+- if (vdd > 7) {
+- mv += 300 + 100 * (vdd - 8);
+- if (mv > 3500)
+- mv = 3500;
+- }
++ if (vdd > 7)
++ mv += 350 + 100 * (vdd - 8);
++ printk(KERN_INFO "SD power -> %dmV\n", mv);
+ pcf50633_voltage_set(pcf50633_global,
+ PCF50633_REGULATOR_HCLDO, mv);
+ pcf50633_onoff_set(pcf50633_global,
+diff --git a/drivers/mfd/glamo/glamo-core.c b/drivers/mfd/glamo/glamo-core.c
+index ee33901..cb9b056 100644
+--- a/drivers/mfd/glamo/glamo-core.c
++++ b/drivers/mfd/glamo/glamo-core.c
+@@ -270,7 +270,18 @@ static struct platform_device glamo_mmc_dev = {
+ struct glamo_mci_pdata glamo_mci_def_pdata = {
+ .gpio_detect = 0,
+ .glamo_set_mci_power = NULL, /* filled in from MFD platform data */
+- .ocr_avail = MMC_VDD_32_33,
++ .ocr_avail = MMC_VDD_20_21 |
++ MMC_VDD_21_22 |
++ MMC_VDD_22_23 |
++ MMC_VDD_23_24 |
++ MMC_VDD_24_25 |
++ MMC_VDD_25_26 |
++ MMC_VDD_26_27 |
++ MMC_VDD_27_28 |
++ MMC_VDD_28_29 |
++ MMC_VDD_29_30 |
++ MMC_VDD_30_31 |
++ MMC_VDD_32_33,
+ .glamo_irq_is_wired = NULL, /* filled in from MFD platform data */
+ .mci_suspending = NULL, /* filled in from MFD platform data */
+ .mci_all_dependencies_resumed = NULL, /* filled in from MFD platform data */
+--
+1.5.6.3
+