From e9d88751446449641dbb9dcb87059777b70ab4c1 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 17 Jun 2011 01:07:07 +0800 Subject: [PATCH] 1.add soft reset for phonesdk and A22. 2.add charge display config for phonesdk. --- arch/arm/configs/rk29_phonesdk_defconfig | 37 ++++++++++--- arch/arm/mach-rk29/board-rk29-a22.c | 44 ++++++++++++++- arch/arm/mach-rk29/board-rk29-phonesdk.c | 69 ++++++++++++++++++++---- drivers/regulator/wm831x-ldo.c | 4 +- 4 files changed, 134 insertions(+), 20 deletions(-) mode change 100755 => 100644 arch/arm/configs/rk29_phonesdk_defconfig mode change 100644 => 100755 arch/arm/mach-rk29/board-rk29-a22.c diff --git a/arch/arm/configs/rk29_phonesdk_defconfig b/arch/arm/configs/rk29_phonesdk_defconfig old mode 100755 new mode 100644 index 147d7053cdf2..c3abcff7050e --- a/arch/arm/configs/rk29_phonesdk_defconfig +++ b/arch/arm/configs/rk29_phonesdk_defconfig @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.32.27 -# Fri May 6 11:36:42 2011 +# Fri Jun 17 00:55:13 2011 # CONFIG_ARM=y CONFIG_SYS_SUPPORTS_APM_EMULATION=y @@ -52,11 +52,6 @@ CONFIG_RCU_FANOUT=32 # CONFIG_TREE_RCU_TRACE is not set # CONFIG_IKCONFIG is not set CONFIG_LOG_BUF_SHIFT=17 -CONFIG_GROUP_SCHED=y -CONFIG_FAIR_GROUP_SCHED=y -CONFIG_RT_GROUP_SCHED=y -# CONFIG_USER_SCHED is not set -CONFIG_CGROUP_SCHED=y CONFIG_CGROUPS=y CONFIG_CGROUP_DEBUG=y # CONFIG_CGROUP_NS is not set @@ -66,6 +61,9 @@ CONFIG_CGROUP_FREEZER=y CONFIG_CGROUP_CPUACCT=y CONFIG_RESOURCE_COUNTERS=y # CONFIG_CGROUP_MEM_RES_CTLR is not set +CONFIG_CGROUP_SCHED=y +CONFIG_FAIR_GROUP_SCHED=y +CONFIG_RT_GROUP_SCHED=y # CONFIG_SYSFS_DEPRECATED_V2 is not set # CONFIG_RELAY is not set # CONFIG_NAMESPACES is not set @@ -204,6 +202,7 @@ CONFIG_WIFI_CONTROL_FUNC=y # CONFIG_MACH_RK29_MALATA is not set CONFIG_MACH_RK29_PHONESDK=y # CONFIG_MACH_RK29_A22 is not set +# CONFIG_MACH_RK29_PHONEPADSDK is not set # CONFIG_DDR_TYPE_DDRII is not set CONFIG_DDR_TYPE_LPDDR=y # CONFIG_DDR_TYPE_DDR3_800D is not set @@ -237,6 +236,12 @@ CONFIG_DDR_SDRAM_FREQ=192 CONFIG_RK29_VPU=y # CONFIG_RK29_VPU_DEBUG is not set CONFIG_RK29_JTAG=y +CONFIG_RK29_LAST_LOG=y + +# +# The control interface support for RK29 suspend +# +# CONFIG_RK29_SPI_INSRAM is not set # # Processor Type @@ -595,7 +600,6 @@ CONFIG_MTD_NAND_IDS=y # CONFIG_MTD_NAND is not set CONFIG_MTD_RKNAND=y CONFIG_MTD_NAND_RK29XX=y -CONFIG_RKFTL_PAGECACHE_SIZE=64 CONFIG_MTD_RKNAND_BUFFER=y # CONFIG_MTD_NAND_RK29XX_DEBUG is not set # CONFIG_MTD_ONENAND is not set @@ -633,6 +637,7 @@ CONFIG_APANIC_PLABEL="kpanic" # CONFIG_STE is not set CONFIG_MTK23D=y # CONFIG_FM580X is not set +# CONFIG_MU509 is not set # CONFIG_C2PORT is not set # @@ -891,6 +896,7 @@ CONFIG_INPUT_TOUCHSCREEN=y # CONFIG_EETI_EGALAX is not set # CONFIG_TOUCHSCREEN_IT7260 is not set CONFIG_TOUCHSCREEN_GT801_IIC=y +# CONFIG_D70_L3188A is not set CONFIG_INPUT_MISC=y # CONFIG_INPUT_LPSENSOR_ISL29028 is not set # CONFIG_INPUT_LPSENSOR_CM3602 is not set @@ -976,9 +982,17 @@ CONFIG_I2C_RK29=y # Now, there are four I2C interfaces selected by developer. # CONFIG_I2C0_RK29=y +CONFIG_RK29_I2C0_CONTROLLER=y +# CONFIG_RK29_I2C0_GPIO is not set CONFIG_I2C1_RK29=y +CONFIG_RK29_I2C1_CONTROLLER=y +# CONFIG_RK29_I2C1_GPIO is not set CONFIG_I2C2_RK29=y +CONFIG_RK29_I2C2_CONTROLLER=y +# CONFIG_RK29_I2C2_GPIO is not set CONFIG_I2C3_RK29=y +CONFIG_RK29_I2C3_CONTROLLER=y +# CONFIG_RK29_I2C3_GPIO is not set # CONFIG_I2C_DEV_RK29 is not set # @@ -1068,6 +1082,7 @@ CONFIG_POWER_SUPPLY=y # CONFIG_PDA_POWER is not set CONFIG_WM831X_BACKUP=y CONFIG_WM831X_POWER=y +CONFIG_WM831X_CHARGER_DISPLAY=y # CONFIG_BATTERY_DS2760 is not set # CONFIG_BATTERY_DS2782 is not set # CONFIG_BATTERY_BQ27x00 is not set @@ -1172,6 +1187,7 @@ CONFIG_SOC_CAMERA=y # CONFIG_SOC_CAMERA_MT9M111 is not set # CONFIG_SOC_CAMERA_MT9M112 is not set # CONFIG_SOC_CAMERA_MT9T031 is not set +# CONFIG_SOC_CAMERA_MT9T111 is not set # CONFIG_SOC_CAMERA_MT9P111 is not set # CONFIG_SOC_CAMERA_MT9D112 is not set # CONFIG_SOC_CAMERA_MT9D113 is not set @@ -1316,6 +1332,7 @@ CONFIG_BACKLIGHT_WM831X=y # CONFIG_BACKLIGHT_RK29_BL is not set # CONFIG_FIH_TOUCHKEY_LED is not set # CONFIG_BACKLIGHT_AW9364 is not set +# CONFIG_BUTTON_LIGHT is not set # # Display device support @@ -1333,6 +1350,7 @@ CONFIG_DISPLAY_SUPPORT=y # CONFIG_LCD_HSD070IDW1 is not set # CONFIG_LCD_RGB_TFT480800_25_E is not set # CONFIG_LCD_HSD100PXN is not set +# CONFIG_LCD_HSD07PFW1 is not set # CONFIG_LCD_B101AW06 is not set CONFIG_LCD_LS035Y8DX02A=y # CONFIG_LCD_CPTCLAA038LA31XE is not set @@ -1342,6 +1360,7 @@ CONFIG_LCD_LS035Y8DX02A=y # CONFIG_LCD_NT35580 is not set # CONFIG_LCD_IPS1P5680_V1_E is not set # CONFIG_LCD_MCU_TFT480800_25_E is not set +# CONFIG_LCD_NT35510 is not set # CONFIG_LCD_ILI9803_CPT4_3 is not set # CONFIG_DEFAULT_OUT_HDMI is not set # CONFIG_LCD_AT070TNA2 is not set @@ -1361,6 +1380,7 @@ CONFIG_LOGO=y # CONFIG_LOGO_LINUX_MONO is not set # CONFIG_LOGO_LINUX_VGA16 is not set CONFIG_LOGO_LINUX_CLUT224=y +CONFIG_LOGO_CHARGER_CLUT224=y CONFIG_SOUND=y # CONFIG_SOUND_OSS_CORE is not set CONFIG_SND=y @@ -1394,6 +1414,7 @@ CONFIG_SND_RK29_SOC_I2S_8CH=y # CONFIG_SND_RK29_SOC_WM8900 is not set # CONFIG_SND_RK29_SOC_alc5621 is not set # CONFIG_SND_RK29_SOC_alc5631 is not set +# CONFIG_SND_RK29_SOC_RT5625 is not set CONFIG_SND_RK29_SOC_WM8994=y # CONFIG_SND_RK29_CODEC_SOC_MASTER is not set CONFIG_SND_RK29_CODEC_SOC_SLAVE=y @@ -1602,6 +1623,7 @@ CONFIG_USB11_HOST_EN=y CONFIG_USB20_OTG=y # CONFIG_DWC_OTG_HOST_ONLY is not set CONFIG_DWC_OTG_DEVICE_ONLY=y +# CONFIG_DWC_OTG_BOTH_HOST_SLAVE is not set CONFIG_DWC_CONN_EN=y # CONFIG_DWC_OTG_DEBUG is not set CONFIG_DWC_OTG=y @@ -1793,6 +1815,7 @@ CONFIG_RK29_IPP=y # CMMB # # CONFIG_CMMB is not set +# CONFIG_TEST_CODE is not set # # File systems diff --git a/arch/arm/mach-rk29/board-rk29-a22.c b/arch/arm/mach-rk29/board-rk29-a22.c old mode 100644 new mode 100755 index ee0e31944484..d0f4d022f47f --- a/arch/arm/mach-rk29/board-rk29-a22.c +++ b/arch/arm/mach-rk29/board-rk29-a22.c @@ -758,8 +758,50 @@ EXPORT_SYMBOL_GPL(pmu_wm831x_set_resume_voltage); int wm831x_last_deinit(struct wm831x *parm) { + struct regulator* ldo; + printk("%s\n", __FUNCTION__); + ldo = regulator_get(NULL, "ldo1"); + regulator_disable(ldo); + regulator_put(ldo); + + ldo = regulator_get(NULL, "ldo2"); + regulator_disable(ldo); + regulator_put(ldo); + + ldo = regulator_get(NULL, "ldo3"); + regulator_disable(ldo); + regulator_put(ldo); + + ldo = regulator_get(NULL, "ldo4"); + //regulator_disable(ldo); + regulator_put(ldo); + + ldo = regulator_get(NULL, "ldo5"); + regulator_disable(ldo); + regulator_put(ldo); + + ldo = regulator_get(NULL, "ldo6"); + regulator_disable(ldo); + regulator_put(ldo); + + ldo = regulator_get(NULL, "ldo7"); + regulator_disable(ldo); + regulator_put(ldo); + + ldo = regulator_get(NULL, "ldo8"); + //regulator_disable(ldo); + regulator_put(ldo); + + ldo = regulator_get(NULL, "ldo9"); + regulator_disable(ldo); + regulator_put(ldo); + + ldo = regulator_get(NULL, "ldo10"); + regulator_disable(ldo); + regulator_put(ldo); + return 0; } @@ -3026,7 +3068,7 @@ static void __init machine_rk29_board_init(void) gpio_set_value(POWER_ON_PIN, GPIO_HIGH); gpio_direction_output(POWER_ON_PIN, GPIO_HIGH); pm_power_off = rk29_pm_power_off; - arm_pm_restart = rk29_pm_power_restart; + //arm_pm_restart = rk29_pm_power_restart; platform_add_devices(devices, ARRAY_SIZE(devices)); #ifdef CONFIG_I2C0_RK29 diff --git a/arch/arm/mach-rk29/board-rk29-phonesdk.c b/arch/arm/mach-rk29/board-rk29-phonesdk.c index e25a2f68ed44..c02533b34dd2 100755 --- a/arch/arm/mach-rk29/board-rk29-phonesdk.c +++ b/arch/arm/mach-rk29/board-rk29-phonesdk.c @@ -811,8 +811,50 @@ EXPORT_SYMBOL_GPL(pmu_wm831x_set_resume_voltage); int wm831x_last_deinit(struct wm831x *parm) { + struct regulator* ldo; + printk("%s\n", __FUNCTION__); + ldo = regulator_get(NULL, "ldo1"); + regulator_disable(ldo); + regulator_put(ldo); + + ldo = regulator_get(NULL, "ldo2"); + regulator_disable(ldo); + regulator_put(ldo); + + ldo = regulator_get(NULL, "ldo3"); + regulator_disable(ldo); + regulator_put(ldo); + + ldo = regulator_get(NULL, "ldo4"); + //regulator_disable(ldo); + regulator_put(ldo); + + ldo = regulator_get(NULL, "ldo5"); + regulator_disable(ldo); + regulator_put(ldo); + + ldo = regulator_get(NULL, "ldo6"); + regulator_disable(ldo); + regulator_put(ldo); + + ldo = regulator_get(NULL, "ldo7"); + regulator_disable(ldo); + regulator_put(ldo); + + ldo = regulator_get(NULL, "ldo8"); + //regulator_disable(ldo); + regulator_put(ldo); + + ldo = regulator_get(NULL, "ldo9"); + regulator_disable(ldo); + regulator_put(ldo); + + ldo = regulator_get(NULL, "ldo10"); + regulator_disable(ldo); + regulator_put(ldo); + return 0; } @@ -2935,18 +2977,10 @@ static void __init machine_rk29_init_irq(void) } #define POWER_ON_PIN RK29_PIN4_PA4 -static void rk29_pm_power_off(void) -{ - printk(KERN_ERR "rk29_pm_power_off start...\n"); - gpio_direction_output(POWER_ON_PIN, GPIO_LOW); -#if defined(CONFIG_MFD_WM831X) - wm831x_device_shutdown(gWm831x); -#endif - while (1); -} + static void rk29_pm_power_restart(void) { - printk("%s\n",__FUNCTION__); + printk("%s,line=%d\n",__FUNCTION__,__LINE__); mdelay(2); #if defined(CONFIG_MFD_WM831X) wm831x_device_restart(gWm831x); @@ -2954,6 +2988,19 @@ static void rk29_pm_power_restart(void) } +static void rk29_pm_power_off(void) +{ + printk(KERN_ERR "rk29_pm_power_off start...\n"); + gpio_direction_output(POWER_ON_PIN, GPIO_LOW); +#if defined(CONFIG_MFD_WM831X) + if(wm831x_read_usb(gWm831x)) + rk29_pm_power_restart(); //if charging then restart + else + wm831x_device_shutdown(gWm831x);//else shutdown +#endif + while (1); +} + static void __init machine_rk29_board_init(void) { rk29_board_iomux_init(); @@ -2962,7 +3009,7 @@ static void __init machine_rk29_board_init(void) gpio_set_value(POWER_ON_PIN, GPIO_HIGH); gpio_direction_output(POWER_ON_PIN, GPIO_HIGH); pm_power_off = rk29_pm_power_off; - arm_pm_restart = rk29_pm_power_restart; + //arm_pm_restart = rk29_pm_power_restart; platform_add_devices(devices, ARRAY_SIZE(devices)); #ifdef CONFIG_I2C0_RK29 diff --git a/drivers/regulator/wm831x-ldo.c b/drivers/regulator/wm831x-ldo.c index 6ebc65742553..30d5dbec2605 100755 --- a/drivers/regulator/wm831x-ldo.c +++ b/drivers/regulator/wm831x-ldo.c @@ -833,6 +833,8 @@ static __devexit int wm831x_alive_ldo_remove(struct platform_device *pdev) static __devexit int wm831x_alive_ldo_shutdown(struct platform_device *pdev) /*ZMF*/ { //struct wm831x_ldo *ldo = platform_get_drvdata(pdev); +#if 0 + //close ldo in wm831x_last_deinit() struct regulator* ldo; //if (reboot_cmd_get()) @@ -878,7 +880,7 @@ static __devexit int wm831x_alive_ldo_shutdown(struct platform_device *pdev) /*Z ldo = regulator_get(NULL, "ldo10"); regulator_disable(ldo); regulator_put(ldo); - +#endif return 0; } -- 2.34.1