From c962bab723d65757c233b2c52487db96a2fbac40 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E5=BC=A0=E6=99=B4?= Date: Thu, 25 Oct 2012 14:19:44 +0800 Subject: [PATCH] rk2928:rk2926:support pmu init voltage reference --- arch/arm/mach-rk2928/board-rk2926-sdk.c | 119 +++++++++++++++++ arch/arm/mach-rk2928/board-rk2928-a720.c | 121 ++++++++++++++++- arch/arm/mach-rk2928/board-rk2928-phonepad.c | 124 +++++++++++++++++- .../mach-rk2928/board-rk2928-sdk-act8931.c | 83 +++--------- .../mach-rk2928/board-rk2928-sdk-tps65910.c | 104 ++------------- arch/arm/mach-rk2928/board-rk2928-sdk.c | 123 ++++++++++++++++- arch/arm/mach-rk2928/board-rk2928-tb.c | 73 +++++++++++ 7 files changed, 585 insertions(+), 162 deletions(-) diff --git a/arch/arm/mach-rk2928/board-rk2926-sdk.c b/arch/arm/mach-rk2928/board-rk2926-sdk.c index d998bb2260b7..f47eb46f472b 100755 --- a/arch/arm/mach-rk2928/board-rk2926-sdk.c +++ b/arch/arm/mach-rk2928/board-rk2926-sdk.c @@ -653,10 +653,129 @@ static struct platform_device *devices[] __initdata = { #ifdef CONFIG_I2C0_RK30 #ifdef CONFIG_MFD_TPS65910 #define TPS65910_HOST_IRQ RK2928_PIN1_PB2 +#define PMU_POWER_SLEEP RK2928_PIN1_PA1 + +static struct pmu_info tps65910_dcdc_info[] = { + { + .name = "vdd_cpu", //arm + .min_uv = 1200000, + .max_uv = 1200000, + }, + { + .name = "vdd2", //ddr + .min_uv = 1200000, + .max_uv = 1200000, + }, + { + .name = "vio", //vcc_io + .min_uv = 3300000, + .max_uv = 3300000, + }, + +}; +static struct pmu_info tps65910_ldo_info[] = { + #if defined(CONFIG_MACH_RK2928_TB) || defined(CONFIG_MACH_RK2926_TB) + { + .name = "vpll", //vcc25 + .min_uv = 2500000, + .max_uv = 2500000, + }, + { + .name = "vdig1", //vcc18_cif + .min_uv = 1800000, + .max_uv = 1800000, + }, + { + .name = "vdac", //vccio_wl + .min_uv = 1800000, + .max_uv = 1800000, + }, + #else + { + .name = "vdig1", //vcc18_cif + .min_uv = 1500000, + .max_uv = 1500000, + }, + + { + .name = "vdig2", //vdd11 + .min_uv = 1200000, + .max_uv = 1200000, + }, + { + .name = "vaux1", //vcc28_cif + .min_uv = 2800000, + .max_uv = 2800000, + }, + { + .name = "vaux2", //vcca33 + .min_uv = 3300000, + .max_uv = 3300000, + }, + { + .name = "vaux33", //vcc_tp + .min_uv = 3300000, + .max_uv = 3300000, + }, + { + .name = "vmmc", // + .min_uv = 3300000, + .max_uv = 3300000, + }, + #endif + }; + #include "board-rk2928-sdk-tps65910.c" #endif + #ifdef CONFIG_REGULATOR_ACT8931 #define ACT8931_HOST_IRQ RK2928_PIN1_PB1 +#if defined(CONFIG_MACH_RK2928_SDK) +#define ACT8931_CHGSEL_PIN RK2928_PIN0_PD0 +#else +#define ACT8931_CHGSEL_PIN RK2928_PIN1_PA1 +#endif + +static struct pmu_info act8931_dcdc_info[] = { + { + .name = "act_dcdc1", //vcc_io + .min_uv = 3300000, + .max_uv = 3300000, + }, + { + .name = "act_dcdc2", //ddr + .min_uv = 1500000, + .max_uv = 1500000, + }, + { + .name = "vdd_cpu", //vdd_arm + .min_uv = 1200000, + .max_uv = 1200000, + }, + +}; +static struct pmu_info act8931_ldo_info[] = { + { + .name = "act_ldo1", //vcc28_cif + .min_uv = 2800000, + .max_uv = 2800000, + }, + { + .name = "act_ldo2", //vcc18_cif + .min_uv = 1800000, + .max_uv = 1800000, + }, + { + .name = "act_ldo3", //vcca30 + .min_uv = 3000000, + .max_uv = 3000000, + }, + { + .name = "act_ldo4", //vcc_wl + .min_uv = 3300000, + .max_uv = 3300000, + }, +}; #include "board-rk2928-sdk-act8931.c" #endif diff --git a/arch/arm/mach-rk2928/board-rk2928-a720.c b/arch/arm/mach-rk2928/board-rk2928-a720.c index 09a8672c3b15..68c1f52edf08 100755 --- a/arch/arm/mach-rk2928/board-rk2928-a720.c +++ b/arch/arm/mach-rk2928/board-rk2928-a720.c @@ -646,14 +646,133 @@ static struct platform_device *devices[] __initdata = { #ifdef CONFIG_I2C0_RK30 #ifdef CONFIG_MFD_TPS65910 #define TPS65910_HOST_IRQ RK2928_PIN1_PB2 -#include "board-rk2928-a720-tps65910.c" +#define PMU_POWER_SLEEP RK2928_PIN1_PA1 + +static struct pmu_info tps65910_dcdc_info[] = { + { + .name = "vdd_cpu", //arm + .min_uv = 1200000, + .max_uv = 1200000, + }, + { + .name = "vdd2", //ddr + .min_uv = 1200000, + .max_uv = 1200000, + }, + { + .name = "vio", //vcc_io + .min_uv = 3300000, + .max_uv = 3300000, + }, + +}; +static struct pmu_info tps65910_ldo_info[] = { + #if defined(CONFIG_MACH_RK2928_TB) || defined(CONFIG_MACH_RK2926_TB) + { + .name = "vpll", //vcc25 + .min_uv = 2500000, + .max_uv = 2500000, + }, + { + .name = "vdig1", //vcc18_cif + .min_uv = 1800000, + .max_uv = 1800000, + }, + { + .name = "vdac", //vccio_wl + .min_uv = 1800000, + .max_uv = 1800000, + }, + #else + { + .name = "vdig1", //vcc18_cif + .min_uv = 1500000, + .max_uv = 1500000, + }, + + { + .name = "vdig2", //vdd11 + .min_uv = 1200000, + .max_uv = 1200000, + }, + { + .name = "vaux1", //vcc28_cif + .min_uv = 2800000, + .max_uv = 2800000, + }, + { + .name = "vaux2", //vcca33 + .min_uv = 3300000, + .max_uv = 3300000, + }, + { + .name = "vaux33", //vcc_tp + .min_uv = 3300000, + .max_uv = 3300000, + }, + { + .name = "vmmc", // + .min_uv = 3300000, + .max_uv = 3300000, + }, + #endif + }; + +#include "board-rk2928-sdk-tps65910.c" #endif + #ifdef CONFIG_REGULATOR_ACT8931 #ifdef CONFIG_MACH_RK2926_M713 #define ACT8931_HOST_IRQ RK2928_PIN1_PB1 #else #define ACT8931_HOST_IRQ RK2928_PIN1_PB2 #endif +#if defined(CONFIG_MACH_RK2928_SDK) +#define ACT8931_CHGSEL_PIN RK2928_PIN0_PD0 +#else +#define ACT8931_CHGSEL_PIN RK2928_PIN1_PA1 +#endif + +static struct pmu_info act8931_dcdc_info[] = { + { + .name = "act_dcdc1", //vcc_io + .min_uv = 3300000, + .max_uv = 3300000, + }, + { + .name = "act_dcdc2", //ddr + .min_uv = 1500000, + .max_uv = 1500000, + }, + { + .name = "vdd_cpu", //vdd_arm + .min_uv = 1200000, + .max_uv = 1200000, + }, + +}; +static struct pmu_info act8931_ldo_info[] = { + { + .name = "act_ldo1", //vcc28_cif + .min_uv = 2800000, + .max_uv = 2800000, + }, + { + .name = "act_ldo2", //vcc18_cif + .min_uv = 1800000, + .max_uv = 1800000, + }, + { + .name = "act_ldo3", //vcca30 + .min_uv = 3000000, + .max_uv = 3000000, + }, + { + .name = "act_ldo4", //vcc_wl + .min_uv = 3300000, + .max_uv = 3300000, + }, +}; #include "board-rk2928-sdk-act8931.c" #endif diff --git a/arch/arm/mach-rk2928/board-rk2928-phonepad.c b/arch/arm/mach-rk2928/board-rk2928-phonepad.c index 3bd82b8b803d..adb57ea35c0e 100755 --- a/arch/arm/mach-rk2928/board-rk2928-phonepad.c +++ b/arch/arm/mach-rk2928/board-rk2928-phonepad.c @@ -847,12 +847,134 @@ static struct platform_device *devices[] __initdata = { #ifdef CONFIG_I2C0_RK30 #ifdef CONFIG_MFD_TPS65910 #define TPS65910_HOST_IRQ RK2928_PIN3_PC6 -#include "board-rk2928-phonepad-tps65910.c" +#define PMU_POWER_SLEEP RK2928_PIN1_PA1 + +static struct pmu_info tps65910_dcdc_info[] = { + { + .name = "vdd_cpu", //arm + .min_uv = 1200000, + .max_uv = 1200000, + }, + { + .name = "vdd2", //ddr + .min_uv = 1200000, + .max_uv = 1200000, + }, + { + .name = "vio", //vcc_io + .min_uv = 3300000, + .max_uv = 3300000, + }, + +}; +static struct pmu_info tps65910_ldo_info[] = { + #if defined(CONFIG_MACH_RK2928_TB) || defined(CONFIG_MACH_RK2926_TB) + { + .name = "vpll", //vcc25 + .min_uv = 2500000, + .max_uv = 2500000, + }, + { + .name = "vdig1", //vcc18_cif + .min_uv = 1800000, + .max_uv = 1800000, + }, + { + .name = "vdac", //vccio_wl + .min_uv = 1800000, + .max_uv = 1800000, + }, + #else + { + .name = "vdig1", //vcc18_cif + .min_uv = 1500000, + .max_uv = 1500000, + }, + + { + .name = "vdig2", //vdd11 + .min_uv = 1200000, + .max_uv = 1200000, + }, + { + .name = "vaux1", //vcc28_cif + .min_uv = 2800000, + .max_uv = 2800000, + }, + { + .name = "vaux2", //vcca33 + .min_uv = 3300000, + .max_uv = 3300000, + }, + { + .name = "vaux33", //vcc_tp + .min_uv = 3300000, + .max_uv = 3300000, + }, + { + .name = "vmmc", // + .min_uv = 3300000, + .max_uv = 3300000, + }, + #endif + }; + +#include "board-rk2928-sdk-tps65910.c" #endif + #ifdef CONFIG_REGULATOR_ACT8931 + +#if defined(CONFIG_MACH_RK2928_SDK) +#define ACT8931_CHGSEL_PIN RK2928_PIN0_PD0 +#else +#define ACT8931_CHGSEL_PIN RK2928_PIN1_PA1 +#endif + +static struct pmu_info act8931_dcdc_info[] = { + { + .name = "act_dcdc1", //vcc_io + .min_uv = 3300000, + .max_uv = 3300000, + }, + { + .name = "act_dcdc2", //ddr + .min_uv = 1500000, + .max_uv = 1500000, + }, + { + .name = "vdd_cpu", //vdd_arm + .min_uv = 1200000, + .max_uv = 1200000, + }, + +}; +static struct pmu_info act8931_ldo_info[] = { + { + .name = "act_ldo1", //vcc28_cif + .min_uv = 2800000, + .max_uv = 2800000, + }, + { + .name = "act_ldo2", //vcc18_cif + .min_uv = 1800000, + .max_uv = 1800000, + }, + { + .name = "act_ldo3", //vcca30 + .min_uv = 3000000, + .max_uv = 3000000, + }, + { + .name = "act_ldo4", //vcc_wl + .min_uv = 3300000, + .max_uv = 3300000, + }, +}; #include "board-rk2928-sdk-act8931.c" #endif +#endif + static struct i2c_board_info __initdata i2c0_info[] = { #if defined (CONFIG_MFD_TPS65910) { diff --git a/arch/arm/mach-rk2928/board-rk2928-sdk-act8931.c b/arch/arm/mach-rk2928/board-rk2928-sdk-act8931.c index 019d677518ca..c644cdda3a46 100755 --- a/arch/arm/mach-rk2928/board-rk2928-sdk-act8931.c +++ b/arch/arm/mach-rk2928/board-rk2928-sdk-act8931.c @@ -9,16 +9,6 @@ #ifdef CONFIG_REGULATOR_ACT8931 -#ifndef CONFIG_RK_CONFIG - -#if defined(CONFIG_MACH_RK2928_SDK) -#define ACT8931_CHGSEL_PIN RK2928_PIN0_PD0 -#else -#define ACT8931_CHGSEL_PIN RK2928_PIN1_PA1 -#endif - -#endif - #define ACT8931_CHGSEL_VALUE GPIO_HIGH /* Declined to 20% current */ extern int platform_device_register(struct platform_device *pdev); @@ -27,7 +17,7 @@ static int act8931_set_init(struct act8931 *act8931) { struct regulator *dcdc; struct regulator *ldo; - int ret; + int i = 0; printk("%s,line=%d\n", __func__,__LINE__); g_pmic_type = PMIC_TYPE_ACT8931; @@ -37,67 +27,24 @@ static int act8931_set_init(struct act8931 *act8931) platform_device_register(&pwm_regulator_device[0]); #endif - ldo = regulator_get(NULL, "act_ldo1"); //vcc28_cif - regulator_set_voltage(ldo, 2800000, 2800000); - regulator_enable(ldo); - printk("%s set ldo1 vcc28_cif=%dmV end\n", __func__, regulator_get_voltage(ldo)); - regulator_put(ldo); - udelay(100); - - ldo = regulator_get(NULL, "act_ldo2"); // vcc18_cif - regulator_set_voltage(ldo, 1800000, 1800000); - regulator_enable(ldo); - printk("%s set ldo2 vcc18_cif=%dmV end\n", __func__, regulator_get_voltage(ldo)); - regulator_put(ldo); - udelay(100); - - ldo = regulator_get(NULL, "act_ldo3"); // vcca_30 - regulator_set_voltage(ldo, 3000000, 3000000); - regulator_enable(ldo); - printk("%s set ldo3 vcca_30=%dmV end\n", __func__, regulator_get_voltage(ldo)); - regulator_put(ldo); - udelay(100); - - ldo = regulator_get(NULL, "act_ldo4"); //vcc_wl - regulator_set_voltage(ldo, 3300000, 3300000); - regulator_enable(ldo); - printk("%s set ldo4 vcc_lcd=%dmV end\n", __func__, regulator_get_voltage(ldo)); -#if defined(CONFIG_MACH_RK2928_TB) || defined(CONFIG_MACH_RK2926_TB) - //do not disable vccio wl -#else - regulator_disable(ldo); -#endif - regulator_put(ldo); - udelay(100); - - dcdc = regulator_get(NULL, "act_dcdc1"); //vcc_io - regulator_set_voltage(dcdc, 3200000, 3200000); - regulator_enable(dcdc); - printk("%s set dcdc1 vcc_io=%dmV end\n", __func__, regulator_get_voltage(dcdc)); - regulator_put(dcdc); - udelay(100); - - dcdc = regulator_get(NULL, "act_dcdc2"); //vcc_ddr - regulator_set_voltage(dcdc, 1500000, 1500000); // 1.5*4/5 = 1.2 and Vout=1.5v + for(i = 0; i < ARRAY_SIZE(act8931_dcdc_info); i++) + { + dcdc =regulator_get(NULL, act8931_dcdc_info[i].name); + regulator_set_voltage(dcdc, act8931_dcdc_info[i].min_uv, act8931_dcdc_info[i].max_uv); regulator_enable(dcdc); - printk("%s set dcdc2 vcc_ddr=%dmV end\n", __func__, regulator_get_voltage(dcdc)); + printk("%s %s =%dmV end\n", __func__,act8931_dcdc_info[i].name, regulator_get_voltage(dcdc)); regulator_put(dcdc); udelay(100); + } - dcdc = regulator_get(NULL, "vdd_cpu"); //vdd_arm - regulator_set_voltage(dcdc, 1200000, 1200000); - regulator_enable(dcdc); - printk("%s set dcdc3 vdd_arm=%dmV end\n", __func__, regulator_get_voltage(dcdc)); - regulator_put(dcdc); - udelay(100); -#ifdef CONFIG_RK_CONFIG - ret = port_output_init(chg_sel, 1, "chg_sel"); -#else - ret = gpio_request(ACT8931_CHGSEL_PIN, "ACT8931_CHGSEL"); - if (ret != 0) - gpio_free(ACT8931_CHGSEL_PIN); - gpio_direction_output(ACT8931_CHGSEL_PIN, ACT8931_CHGSEL_VALUE); -#endif + for(i = 0; i < ARRAY_SIZE(act8931_ldo_info); i++) + { + ldo =regulator_get(NULL, act8931_ldo_info[i].name); + regulator_set_voltage(ldo, act8931_ldo_info[i].min_uv, act8931_ldo_info[i].max_uv); + regulator_enable(ldo); + //printk("%s %s =%dmV end\n", __func__,act8931_ldo_info[i].name, regulator_get_voltage(ldo)); + regulator_put(ldo); + } printk("%s,line=%d END\n", __func__,__LINE__); diff --git a/arch/arm/mach-rk2928/board-rk2928-sdk-tps65910.c b/arch/arm/mach-rk2928/board-rk2928-sdk-tps65910.c index 514a08475c88..b9b0caf420c5 100755 --- a/arch/arm/mach-rk2928/board-rk2928-sdk-tps65910.c +++ b/arch/arm/mach-rk2928/board-rk2928-sdk-tps65910.c @@ -9,18 +9,6 @@ #ifdef CONFIG_MFD_TPS65910 -#ifndef CONFIG_RK_CONFIG - -#if defined(CONFIG_MACH_RK2928_SDK) -#define PMU_POWER_SLEEP RK2928_PIN0_PD0 -#elif defined(CONFIG_MACH_RK2928_TB) -#define PMU_POWER_SLEEP RK2928_PIN3_PD2 -#else -#define PMU_POWER_SLEEP RK2928_PIN1_PA1 -#endif - -#endif - #define GPIO_SWPORTA_DR 0x0000 #define GPIO_SWPORTA_DDR 0x0004 struct sram_gpio_data { @@ -284,6 +272,7 @@ int tps65910_post_init(struct tps65910 *tps65910) { struct regulator *dcdc; struct regulator *ldo; + int i = 0; printk("%s,line=%d\n", __func__,__LINE__); g_pmic_type = PMIC_TYPE_TPS65910; @@ -292,92 +281,25 @@ int tps65910_post_init(struct tps65910 *tps65910) #ifdef CONFIG_RK30_PWM_REGULATOR platform_device_register(&pwm_regulator_device[0]); #endif - - dcdc = regulator_get(NULL, "vio"); //vcc_io - regulator_set_voltage(dcdc, 3300000, 3300000); - regulator_enable(dcdc); - printk("%s set vio vcc_io=%dmV end\n", __func__, regulator_get_voltage(dcdc)); - regulator_put(dcdc); - udelay(100); -#if defined(CONFIG_MACH_RK2928_TB) || defined(CONFIG_MACH_RK2926_TB) - ldo = regulator_get(NULL, "vpll"); // vcc25 - regulator_set_voltage(ldo, 2500000, 2500000); - regulator_enable(ldo); - printk("%s set vpll vcc25=%dmV end\n", __func__, regulator_get_voltage(ldo)); - regulator_put(ldo); - udelay(100); -#endif - ldo = regulator_get(NULL, "vdig2"); // vdd12 - regulator_set_voltage(ldo, 1200000, 1200000); - regulator_enable(ldo); - printk("%s set vdig2 vdd12=%dmV end\n", __func__, regulator_get_voltage(ldo)); - regulator_put(ldo); - udelay(100); - ldo = regulator_get(NULL, "vaux33"); //vcc_tp - regulator_set_voltage(ldo, 3300000, 3300000); - regulator_enable(ldo); - printk("%s set vaux33 vcc_tp=%dmV end\n", __func__, regulator_get_voltage(ldo)); - regulator_put(ldo); - udelay(100); - - dcdc = regulator_get(NULL, "vdd_cpu"); //vdd_cpu - regulator_set_voltage(dcdc, 1200000, 1200000); - regulator_enable(dcdc); - printk("%s set vdd1 vdd_cpu=%dmV end\n", __func__, regulator_get_voltage(dcdc)); - regulator_put(dcdc); - udelay(100); - - dcdc = regulator_get(NULL, "vdd2"); //vcc_ddr - regulator_set_voltage(dcdc, 1200000, 1200000); // 1.5*4/5 = 1.2 and Vout=1.5v + for(i = 0; i < ARRAY_SIZE(tps65910_dcdc_info); i++) + { + dcdc =regulator_get(NULL, tps65910_dcdc_info[i].name); + regulator_set_voltage(dcdc, tps65910_dcdc_info[i].min_uv, tps65910_dcdc_info[i].max_uv); regulator_enable(dcdc); - printk("%s set vdd2 vcc_ddr=%dmV end\n", __func__, regulator_get_voltage(dcdc)); + printk("%s %s =%dmV end\n", __func__,tps65910_dcdc_info[i].name, regulator_get_voltage(dcdc)); regulator_put(dcdc); udelay(100); + } - ldo = regulator_get(NULL, "vdig1"); //vcc18_cif -#if defined(CONFIG_MACH_RK2928_TB) || defined(CONFIG_MACH_RK2926_TB) - regulator_set_voltage(ldo, 1800000, 1800000); -#else - regulator_set_voltage(ldo, 1500000, 1500000); -#endif - regulator_enable(ldo); - printk("%s set vdig1 vcc18_cif=%dmV end\n", __func__, regulator_get_voltage(ldo)); - regulator_put(ldo); - udelay(100); - - dcdc = regulator_get(NULL, "vaux1"); //vcc28_cif - regulator_set_voltage(dcdc,2800000,2800000); - regulator_enable(dcdc); - printk("%s set vaux1 vcc28_cif=%dmV end\n", __func__, regulator_get_voltage(dcdc)); - regulator_put(dcdc); - udelay(100); - - ldo = regulator_get(NULL, "vaux2"); //vcca33 - regulator_set_voltage(ldo, 3300000, 3300000); + for(i = 0; i < ARRAY_SIZE(tps65910_ldo_info); i++) + { + ldo =regulator_get(NULL, tps65910_ldo_info[i].name); + regulator_set_voltage(ldo, tps65910_ldo_info[i].min_uv, tps65910_ldo_info[i].max_uv); regulator_enable(ldo); - printk("%s set vaux2 vcca33=%dmV end\n", __func__, regulator_get_voltage(ldo)); - regulator_put(ldo); - udelay(100); -#if defined(CONFIG_MACH_RK2928_TB) || defined(CONFIG_MACH_RK2926_TB) - ldo = regulator_get(NULL, "vdac"); // vccio_wl - regulator_set_voltage(ldo,1800000,1800000); - regulator_enable(ldo); - printk("%s set vdac vccio_wl=%dmV end\n", __func__, regulator_get_voltage(ldo)); + //printk("%s %s =%dmV end\n", __func__,tps65910_dcdc_info[i].name, regulator_get_voltage(ldo)); regulator_put(ldo); - udelay(100); -#endif - ldo = regulator_get(NULL, "vmmc"); //vccio_wl - regulator_set_voltage(ldo,3300000,3300000); - regulator_enable(ldo); - printk("%s set vmmc vccio_wl=%dmV end\n", __func__, regulator_get_voltage(ldo)); -#if defined(CONFIG_MACH_RK2928_TB) || defined(CONFIG_MACH_RK2926_TB) - //do not disable vccio wl -#else - regulator_disable(ldo); -#endif - regulator_put(ldo); - udelay(100); + } printk("%s,line=%d END\n", __func__,__LINE__); diff --git a/arch/arm/mach-rk2928/board-rk2928-sdk.c b/arch/arm/mach-rk2928/board-rk2928-sdk.c index 2955cb69532c..d50dc483fe5f 100755 --- a/arch/arm/mach-rk2928/board-rk2928-sdk.c +++ b/arch/arm/mach-rk2928/board-rk2928-sdk.c @@ -660,13 +660,134 @@ static struct platform_device *devices[] __initdata = { #ifdef CONFIG_I2C0_RK30 #ifdef CONFIG_MFD_TPS65910 #define TPS65910_HOST_IRQ RK2928_PIN1_PB2 +#define PMU_POWER_SLEEP RK2928_PIN0_PD0 + +static struct pmu_info tps65910_dcdc_info[] = { + { + .name = "vdd_cpu", //arm + .min_uv = 1200000, + .max_uv = 1200000, + }, + { + .name = "vdd2", //ddr + .min_uv = 1200000, + .max_uv = 1200000, + }, + { + .name = "vio", //vcc_io + .min_uv = 3300000, + .max_uv = 3300000, + }, + +}; +static struct pmu_info tps65910_ldo_info[] = { + #if defined(CONFIG_MACH_RK2928_TB) || defined(CONFIG_MACH_RK2926_TB) + { + .name = "vpll", //vcc25 + .min_uv = 2500000, + .max_uv = 2500000, + }, + { + .name = "vdig1", //vcc18_cif + .min_uv = 1800000, + .max_uv = 1800000, + }, + { + .name = "vdac", //vccio_wl + .min_uv = 1800000, + .max_uv = 1800000, + }, + #else + { + .name = "vdig1", //vcc18_cif + .min_uv = 1500000, + .max_uv = 1500000, + }, + + { + .name = "vdig2", //vdd11 + .min_uv = 1200000, + .max_uv = 1200000, + }, + { + .name = "vaux1", //vcc28_cif + .min_uv = 2800000, + .max_uv = 2800000, + }, + { + .name = "vaux2", //vcca33 + .min_uv = 3300000, + .max_uv = 3300000, + }, + { + .name = "vaux33", //vcc_tp + .min_uv = 3300000, + .max_uv = 3300000, + }, + { + .name = "vmmc", // + .min_uv = 3300000, + .max_uv = 3300000, + }, + #endif + }; + #include "board-rk2928-sdk-tps65910.c" #endif + #ifdef CONFIG_REGULATOR_ACT8931 #define ACT8931_HOST_IRQ RK2928_PIN3_PC6 -#include "board-rk2928-sdk-act8931.c" + +#if defined(CONFIG_MACH_RK2928_SDK) +#define ACT8931_CHGSEL_PIN RK2928_PIN0_PD0 +#else +#define ACT8931_CHGSEL_PIN RK2928_PIN1_PA1 #endif +static struct pmu_info act8931_dcdc_info[] = { + { + .name = "act_dcdc1", //vcc_io + .min_uv = 3300000, + .max_uv = 3300000, + }, + { + .name = "act_dcdc2", //ddr + .min_uv = 1500000, + .max_uv = 1500000, + }, + { + .name = "vdd_cpu", //vdd_arm + .min_uv = 1200000, + .max_uv = 1200000, + }, + +}; +static struct pmu_info act8931_ldo_info[] = { + { + .name = "act_ldo1", //vcc28_cif + .min_uv = 2800000, + .max_uv = 2800000, + }, + { + .name = "act_ldo2", //vcc18_cif + .min_uv = 1800000, + .max_uv = 1800000, + }, + { + .name = "act_ldo3", //vcca30 + .min_uv = 3000000, + .max_uv = 3000000, + }, + { + .name = "act_ldo4", //vcc_wl + .min_uv = 3300000, + .max_uv = 3300000, + }, +}; +#include "board-rk2928-sdk-act8931.c" +#endif + + static struct i2c_board_info __initdata i2c0_info[] = { #if defined (CONFIG_MFD_TPS65910) { diff --git a/arch/arm/mach-rk2928/board-rk2928-tb.c b/arch/arm/mach-rk2928/board-rk2928-tb.c index 4ae4a99785fb..6b006928cbb3 100755 --- a/arch/arm/mach-rk2928/board-rk2928-tb.c +++ b/arch/arm/mach-rk2928/board-rk2928-tb.c @@ -843,8 +843,81 @@ static struct i2c_board_info __initdata i2c0_info[] = { #elif defined(CONFIG_MACH_RK2926_TB) #define TPS65910_HOST_IRQ RK2928_PIN1_PB1 #endif +#define PMU_POWER_SLEEP RK2928_PIN3_PD2 + +static struct pmu_info tps65910_dcdc_info[] = { + { + .name = "vdd_cpu", //arm + .min_uv = 1200000, + .max_uv = 1200000, + }, + { + .name = "vdd2", //ddr + .min_uv = 1200000, + .max_uv = 1200000, + }, + { + .name = "vio", //vcc_io + .min_uv = 3300000, + .max_uv = 3300000, + }, + +}; +static struct pmu_info tps65910_ldo_info[] = { + #if defined(CONFIG_MACH_RK2928_TB) || defined(CONFIG_MACH_RK2926_TB) + { + .name = "vpll", //vcc25 + .min_uv = 2500000, + .max_uv = 2500000, + }, + { + .name = "vdig1", //vcc18_cif + .min_uv = 1800000, + .max_uv = 1800000, + }, + { + .name = "vdac", //vccio_wl + .min_uv = 1800000, + .max_uv = 1800000, + }, + #else + { + .name = "vdig1", //vcc18_cif + .min_uv = 1500000, + .max_uv = 1500000, + }, + + { + .name = "vdig2", //vdd11 + .min_uv = 1200000, + .max_uv = 1200000, + }, + { + .name = "vaux1", //vcc28_cif + .min_uv = 2800000, + .max_uv = 2800000, + }, + { + .name = "vaux2", //vcca33 + .min_uv = 3300000, + .max_uv = 3300000, + }, + { + .name = "vaux33", //vcc_tp + .min_uv = 3300000, + .max_uv = 3300000, + }, + { + .name = "vmmc", // + .min_uv = 3300000, + .max_uv = 3300000, + }, + #endif + }; + #include "board-rk2928-sdk-tps65910.c" #endif + static struct i2c_board_info __initdata i2c1_info[] = { #if defined (CONFIG_MFD_TPS65910) -- 2.34.1