rk2928:sdk and a720:support pmu sleep
author张晴 <zhangqing@rock-chips.com>
Tue, 21 Aug 2012 04:04:40 +0000 (12:04 +0800)
committer张晴 <zhangqing@rock-chips.com>
Tue, 21 Aug 2012 04:04:40 +0000 (12:04 +0800)
arch/arm/mach-rk2928/board-rk2928-a720-tps65910.c
arch/arm/mach-rk2928/board-rk2928-sdk-tps65910.c

index 7f6eec3828553c512bc776e5e78fb98284314791..3193edb5e40e28df096b13b6cf3def1d7353fc4d 100755 (executable)
@@ -7,23 +7,15 @@
 #include <mach/gpio.h>
 #include <mach/iomux.h>
 
-#define grf_readl(offset)      readl_relaxed(RK30_GRF_BASE + offset)
-#define grf_writel(v, offset)  do { writel_relaxed(v, RK30_GRF_BASE + offset); dsb(); } while (0)
-
-#define CRU_CLKGATE5_CON_ADDR 0x00e4
-#define GRF_GPIO6L_DIR_ADDR 0x0030
-#define GRF_GPIO6L_DO_ADDR 0x0068
-#define GRF_GPIO6L_EN_ADDR 0x00a0
-#define GPIO6_PB3_DIR_OUT  0x08000800
-#define GPIO6_PB3_DO_LOW  0x08000000
-#define GPIO6_PB3_DO_HIGH  0x08000800
-#define GPIO6_PB3_EN_MASK  0x08000800
-#define GPIO6_PB3_UNEN_MASK  0x08000000
-#define GPIO6_PB1_DIR_OUT  0x02000200
-#define GPIO6_PB1_DO_LOW  0x02000000
-#define GPIO6_PB1_DO_HIGH  0x02000200
-#define GPIO6_PB1_EN_MASK  0x02000200
-#define GPIO6_PB1_UNEN_MASK  0x02000000
+#define gpio_readl(offset)     readl_relaxed(RK2928_GPIO1_BASE + offset)
+#define gpio_writel(v, offset) do { writel_relaxed(v, RK2928_GPIO1_BASE + offset); dsb(); } while (0)
+
+#define GPIO_SWPORTA_DR  0x0000
+#define GPIO_SWPORTA_DDR 0x0004
+
+#define GPIO1_A1_OUTPUT  (1<<1)
+#define GPIO1_A1_OUTPUT_HIGH  (1<<1)
+#define GPIO1_A1_OUTPUT_LOW  (~(1<<1))
 
 #ifdef CONFIG_MFD_TPS65910
 #define PMU_POWER_SLEEP RK2928_PIN1_PA1        
@@ -578,25 +570,23 @@ static struct regulator_init_data tps65910_ldo8 = {
        .num_consumer_supplies = ARRAY_SIZE(tps65910_ldo8_supply),
        .consumer_supplies =  tps65910_ldo8_supply,
 };
-/*
-void __sramfunc board_pmu_tps65910_suspend(void)
+void __sramfunc board_pmu_suspend(void)
 {      
-       grf_writel(GPIO6_PB1_DIR_OUT, GRF_GPIO6L_DIR_ADDR);
-       grf_writel(GPIO6_PB1_DO_HIGH, GRF_GPIO6L_DO_ADDR);  //set gpio6_b1 output low
-       grf_writel(GPIO6_PB1_EN_MASK, GRF_GPIO6L_EN_ADDR);
+       int ret;
+       ret = gpio_readl(GPIO_SWPORTA_DDR);
+       gpio_writel(ret | GPIO1_A1_OUTPUT, GPIO_SWPORTA_DDR);
+       ret = gpio_readl(GPIO_SWPORTA_DR);
+       gpio_writel(ret | GPIO1_A1_OUTPUT_HIGH, GPIO_SWPORTA_DR);  //set pmu_sleep output high
 }
-void __sramfunc board_pmu_tps65910_resume(void)
+void __sramfunc board_pmu_resume(void)
 {
-       grf_writel(GPIO6_PB1_DIR_OUT, GRF_GPIO6L_DIR_ADDR);
-       grf_writel(GPIO6_PB1_DO_LOW, GRF_GPIO6L_DO_ADDR);  //set gpio6_b1 output low
-       grf_writel(GPIO6_PB1_EN_MASK, GRF_GPIO6L_EN_ADDR);
-       #ifdef CONFIG_CLK_SWITCH_TO_32K                 //switch clk to 24M
-       sram_32k_udelay(10000);
-       #else
+       int ret;
+       ret = gpio_readl(GPIO_SWPORTA_DDR);
+       gpio_writel(ret | GPIO1_A1_OUTPUT, GPIO_SWPORTA_DDR);
+       ret = gpio_readl(GPIO_SWPORTA_DR);
+       gpio_writel(ret & GPIO1_A1_OUTPUT_LOW, GPIO_SWPORTA_DR);   //set pmu_sleep output low
        sram_udelay(2000);
-       #endif
 }
-*/
 static struct tps65910_board tps65910_data = {
        .irq    = (unsigned)TPS65910_HOST_IRQ,          
        .irq_base = NR_GIC_IRQS + NR_GPIO_IRQS,
index 4b8d6058d3eed5061580a4c3bc28ccb1e36fb0b2..1a8773b6d1bb819c0693b25019d99c443b5aeaee 100755 (executable)
@@ -7,23 +7,15 @@
 #include <mach/gpio.h>
 #include <mach/iomux.h>
 
-#define grf_readl(offset)      readl_relaxed(RK30_GRF_BASE + offset)
-#define grf_writel(v, offset)  do { writel_relaxed(v, RK30_GRF_BASE + offset); dsb(); } while (0)
-
-#define CRU_CLKGATE5_CON_ADDR 0x00e4
-#define GRF_GPIO6L_DIR_ADDR 0x0030
-#define GRF_GPIO6L_DO_ADDR 0x0068
-#define GRF_GPIO6L_EN_ADDR 0x00a0
-#define GPIO6_PB3_DIR_OUT  0x08000800
-#define GPIO6_PB3_DO_LOW  0x08000000
-#define GPIO6_PB3_DO_HIGH  0x08000800
-#define GPIO6_PB3_EN_MASK  0x08000800
-#define GPIO6_PB3_UNEN_MASK  0x08000000
-#define GPIO6_PB1_DIR_OUT  0x02000200
-#define GPIO6_PB1_DO_LOW  0x02000000
-#define GPIO6_PB1_DO_HIGH  0x02000200
-#define GPIO6_PB1_EN_MASK  0x02000200
-#define GPIO6_PB1_UNEN_MASK  0x02000000
+#define gpio_readl(offset)     readl_relaxed(RK2928_GPIO3_BASE + offset)
+#define gpio_writel(v, offset) do { writel_relaxed(v, RK2928_GPIO3_BASE + offset); dsb(); } while (0)
+
+#define GPIO_SWPORTA_DR  0x0000
+#define GPIO_SWPORTA_DDR 0x0004
+
+#define GPIO3_D2_OUTPUT  (1<<26)
+#define GPIO3_D2_OUTPUT_HIGH  (1<<26)
+#define GPIO3_D2_OUTPUT_LOW  (~(1<<26))
 
 #ifdef CONFIG_MFD_TPS65910
 #define PMU_POWER_SLEEP RK2928_PIN3_PD2        
@@ -256,10 +248,10 @@ int tps65910_post_init(struct tps65910 *tps65910)
        regulator_put(ldo);
        udelay(100);
 
-       ldo = regulator_get(NULL, "vdig2");     // vdd11
+       ldo = regulator_get(NULL, "vdig2");     // vdd12
        regulator_set_voltage(ldo, 1200000, 1200000);
        regulator_enable(ldo);
-       printk("%s set vdig2 vdd11=%dmV end\n", __func__, regulator_get_voltage(ldo));
+       printk("%s set vdig2 vdd12=%dmV end\n", __func__, regulator_get_voltage(ldo));
        regulator_put(ldo);
        udelay(100);
 
@@ -291,10 +283,10 @@ int tps65910_post_init(struct tps65910 *tps65910)
        regulator_put(ldo);
        udelay(100);
        
-       dcdc = regulator_get(NULL, "vaux1"); //vcc25_hdmi
-       regulator_set_voltage(dcdc,2500000,2500000);
+       dcdc = regulator_get(NULL, "vaux1"); //vcc28_cif
+       regulator_set_voltage(dcdc,2800000,2800000);
        regulator_enable(dcdc); 
-       printk("%s set vaux1 vcc25_hdmi=%dmV end\n", __func__, regulator_get_voltage(dcdc));
+       printk("%s set vaux1 vcc28_cif=%dmV end\n", __func__, regulator_get_voltage(dcdc));
        regulator_put(dcdc);
        udelay(100);
 
@@ -305,17 +297,17 @@ int tps65910_post_init(struct tps65910 *tps65910)
        regulator_put(ldo);
        udelay(100);
 
-       ldo = regulator_get(NULL, "vdac"); // vccio_wl
+       ldo = regulator_get(NULL, "vdac"); // 
        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 set vdac =%dmV end\n", __func__, regulator_get_voltage(ldo));
        regulator_put(ldo);
        udelay(100);
 
-       ldo = regulator_get(NULL, "vmmc");  //vcc28_cif
-       regulator_set_voltage(ldo,2800000,2800000);
+       ldo = regulator_get(NULL, "vmmc");  //vccio_wl
+       regulator_set_voltage(ldo,3300000,3300000);
        regulator_enable(ldo); 
-       printk("%s set vmmc vcc28_cif=%dmV end\n", __func__, regulator_get_voltage(ldo));
+       printk("%s set vmmc vccio_wl=%dmV end\n", __func__, regulator_get_voltage(ldo));
        regulator_put(ldo);
        udelay(100);
 
@@ -578,25 +570,25 @@ static struct regulator_init_data tps65910_ldo8 = {
        .num_consumer_supplies = ARRAY_SIZE(tps65910_ldo8_supply),
        .consumer_supplies =  tps65910_ldo8_supply,
 };
-/*
-void __sramfunc board_pmu_tps65910_suspend(void)
+
+void __sramfunc board_pmu_suspend(void)
 {      
-       grf_writel(GPIO6_PB1_DIR_OUT, GRF_GPIO6L_DIR_ADDR);
-       grf_writel(GPIO6_PB1_DO_HIGH, GRF_GPIO6L_DO_ADDR);  //set gpio6_b1 output low
-       grf_writel(GPIO6_PB1_EN_MASK, GRF_GPIO6L_EN_ADDR);
+       int ret;
+       ret = gpio_readl(GPIO_SWPORTA_DDR);
+       gpio_writel(ret | GPIO3_D2_OUTPUT, GPIO_SWPORTA_DDR);
+       ret = gpio_readl(GPIO_SWPORTA_DR);
+       gpio_writel(ret | GPIO3_D2_OUTPUT_HIGH, GPIO_SWPORTA_DR);  //set pmu_sleep output high
 }
-void __sramfunc board_pmu_tps65910_resume(void)
+void __sramfunc board_pmu_resume(void)
 {
-       grf_writel(GPIO6_PB1_DIR_OUT, GRF_GPIO6L_DIR_ADDR);
-       grf_writel(GPIO6_PB1_DO_LOW, GRF_GPIO6L_DO_ADDR);  //set gpio6_b1 output low
-       grf_writel(GPIO6_PB1_EN_MASK, GRF_GPIO6L_EN_ADDR);
-       #ifdef CONFIG_CLK_SWITCH_TO_32K                 //switch clk to 24M
-       sram_32k_udelay(10000);
-       #else
+       int ret;
+       ret = gpio_readl(GPIO_SWPORTA_DDR);
+       gpio_writel(ret | GPIO3_D2_OUTPUT, GPIO_SWPORTA_DDR);
+       ret = gpio_readl(GPIO_SWPORTA_DR);
+       gpio_writel(ret & GPIO3_D2_OUTPUT_LOW, GPIO_SWPORTA_DR);   //set pmu_sleep output low
        sram_udelay(2000);
-       #endif
 }
-*/
+
 static struct tps65910_board tps65910_data = {
        .irq    = (unsigned)TPS65910_HOST_IRQ,          
        .irq_base = NR_GIC_IRQS + NR_GPIO_IRQS,