rk30_phonepad: update board file and defconfig file from c8003

fix bug that sdcard wakeup system;
	reduce power while suspend;
	improve battery parameter;
	c8003 defconfig use ts-auto, bp-auto, lcd-auto;
	enable 1608MHZ frequency for phonepad;
This commit is contained in:
luowei 2012-11-18 13:08:05 +08:00
parent 48ff38b665
commit ba449c9b77
2 changed files with 128 additions and 17 deletions

View File

@ -199,8 +199,9 @@ CONFIG_BLK_DEV_LOOP=y
CONFIG_MISC_DEVICES=y
CONFIG_UID_STAT=y
CONFIG_APANIC=y
CONFIG_3G_MODULE=y
CONFIG_MT6229=y
CONFIG_BP_AUTO=y
CONFIG_BP_AUTO_MT6229=y
CONFIG_BP_AUTO_MU509=y
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_SCSI_MULTI_LUN=y
@ -209,6 +210,7 @@ CONFIG_BLK_DEV_DM=y
CONFIG_DM_CRYPT=y
CONFIG_DM_UEVENT=y
CONFIG_NETDEVICES=y
CONFIG_TUN=y
CONFIG_PHYLIB=y
# CONFIG_NETDEV_1000 is not set
# CONFIG_NETDEV_10000 is not set
@ -242,14 +244,18 @@ CONFIG_TABLET_USB_GTCO=y
CONFIG_TABLET_USB_HANWANG=y
CONFIG_TABLET_USB_KBTAB=y
CONFIG_TABLET_USB_WACOM=y
CONFIG_INPUT_TOUCHSCREEN=y
CONFIG_TOUCHSCREEN_WACOM_W8001=y
CONFIG_TS_AUTO=y
CONFIG_TS_AUTO_I2C=y
CONFIG_TS_FT5306=y
CONFIG_TS_GT8110=y
CONFIG_TS_GT828=y
CONFIG_TS_CT360=y
CONFIG_INPUT_MISC=y
CONFIG_INPUT_KEYCHORD=y
CONFIG_INPUT_UINPUT=y
CONFIG_RK_BOARD_ID=y
CONFIG_COMPASS_AK8975=y
CONFIG_GS_MMA7660=y
CONFIG_GS_MMA8452=y
@ -262,13 +268,13 @@ CONFIG_COMPASS_DEVICE=y
CONFIG_GYROSCOPE_DEVICE=y
CONFIG_LIGHT_DEVICE=y
CONFIG_LS_ISL29023=y
# CONFIG_SERIO is not set
# CONFIG_CONSOLE_TRANSLATIONS is not set
# CONFIG_LEGACY_PTYS is not set
CONFIG_SERIAL_RK29=y
CONFIG_UART0_RK29=y
CONFIG_UART0_CTS_RTS_RK29=y
CONFIG_UART1_RK29=y
CONFIG_UART1_CTS_RTS_RK29=y
CONFIG_UART3_RK29=y
CONFIG_UART3_CTS_RTS_RK29=y
# CONFIG_HW_RANDOM is not set
@ -288,7 +294,7 @@ CONFIG_SPI_FPGA_GPIO_NUM=0
CONFIG_SPI_FPGA_GPIO_IRQ_NUM=0
CONFIG_POWER_SUPPLY=y
CONFIG_WM831X_BACKUP=y
CONFIG_BATTERY_RK30_ADC=y
CONFIG_BATTERY_RK30_ADC_FAC=y
CONFIG_BATTERY_RK30_AC_CHARGE=y
CONFIG_BATTERY_RK30_VOL3V8=y
CONFIG_POWER_ON_CHARGER_DISPLAY=y
@ -309,6 +315,7 @@ CONFIG_SOC_CAMERA_GT2005=y
CONFIG_GT2005_USER_DEFINED_SERIES=y
CONFIG_SOC_CAMERA_GC0308=y
CONFIG_GC0308_USER_DEFINED_SERIES=y
CONFIG_SOC_CAMERA_GC2035=y
CONFIG_SOC_CAMERA_HI253=y
CONFIG_SOC_CAMERA_HI704=y
CONFIG_VIDEO_RK29=y
@ -327,6 +334,7 @@ CONFIG_DUAL_LCDC_DUAL_DISP_IN_KERNEL=y
CONFIG_LCDC_RK30=y
CONFIG_RK_HDMI=y
CONFIG_HDMI_RK30=y
CONFIG_RK_HDMI_CTL_CODEC=y
CONFIG_RGA_RK30=y
CONFIG_LOGO=y
# CONFIG_LOGO_LINUX_MONO is not set
@ -407,6 +415,8 @@ CONFIG_USB_ACM=y
CONFIG_USB_STORAGE=y
CONFIG_USB_SERIAL=y
CONFIG_USB_SERIAL_GENERIC=y
CONFIG_USB_SERIAL_QUALCOMM=y
CONFIG_USB_SERIAL_OPTION=y
CONFIG_USB_SERIAL_USI=y
CONFIG_USB_GADGET=y
CONFIG_USB20_HOST=y
@ -417,6 +427,7 @@ CONFIG_MMC_UNSAFE_RESUME=y
CONFIG_MMC_EMBEDDED_SDIO=y
CONFIG_MMC_PARANOID_SD_INIT=y
CONFIG_SDMMC_RK29=y
CONFIG_SDMMC0_RK29_SDCARD_DET_FROM_GPIO=y
CONFIG_NEW_LEDS=y
CONFIG_LEDS_CLASS=y
CONFIG_LEDS_GPIO=y

View File

@ -46,6 +46,7 @@
#include <linux/sensor-dev.h>
#include <linux/mfd/tps65910.h>
#include <linux/regulator/rk29-pwm-regulator.h>
#include <plat/rk_fiq_debugger.h>
#include "../../../drivers/headset_observe/rk_headset.h"
#if defined(CONFIG_HDMI_RK30)
@ -1470,7 +1471,7 @@ static struct sensor_platform_data lis3dh_info = {
.irq_enable = 1,
.poll_delay_ms = 30,
.init_platform_hw = lis3dh_init_platform_hw,
.orientation = {-1, 0, 0, 0, 0, -1, 0, 1, 0},
.orientation = {0, -1, 0, 0, 0, -1, -1, 0, 0},
};
#endif
#if defined (CONFIG_GS_KXTIK)
@ -1509,7 +1510,7 @@ static struct sensor_platform_data mma7660_info = {
.irq_enable = 1,
.poll_delay_ms = 30,
.init_platform_hw = mma7660_init_platform_hw,
.orientation = {1, 0, 0, 0, 0, -1, 0, -1, 0},
.orientation = {0, 1, 0, 0, 0, -1, 1, 0, 0},
};
#endif
@ -1982,6 +1983,8 @@ static struct platform_device device_ion = {
#define RK29SDK_WIFI_SDIO_CARD_DETECT_N RK30_PIN6_PB2
#define RK29SDK_WIFI_SDIO_CARD_INT RK30_PIN3_PD2
#define RK29SDK_SD_CARD_DETECT_N RK30_PIN3_PB6 //According to your own project to set the value of card-detect-pin.
#define RK29SDK_SD_CARD_INSERT_LEVEL GPIO_LOW // set the voltage of insert-card. Please pay attention to the default setting.
#endif //endif ---#ifdef CONFIG_SDMMC_RK29
#ifdef CONFIG_SDMMC0_RK29
@ -2004,7 +2007,11 @@ static int rk29_sdmmc0_cfg_gpio(void)
#else
rk29_sdmmc_set_iomux(0, 0xFFFF);
#if defined(CONFIG_SDMMC0_RK29_SDCARD_DET_FROM_GPIO)
rk30_mux_api_set(GPIO3B6_SDMMC0DETECTN_NAME, GPIO3B_GPIO3B6);
#else
rk30_mux_api_set(GPIO3B6_SDMMC0DETECTN_NAME, GPIO3B_SDMMC0_DETECT_N);
#endif
#if defined(CONFIG_SDMMC0_RK29_WRITE_PROTECT)
gpio_request(SDMMC0_WRITE_PROTECT_PIN, "sdmmc-wp");
@ -2041,8 +2048,12 @@ struct rk29_sdmmc_platform_data default_sdmmc0_data = {
.status = rk29sdk_wifi_mmc0_status,
.register_status_notify = rk29sdk_wifi_mmc0_status_register,
#endif
#if defined(CONFIG_SDMMC0_RK29_SDCARD_DET_FROM_GPIO)
.detect_irq = RK29SDK_SD_CARD_DETECT_N,
.insert_card_level = RK29SDK_SD_CARD_INSERT_LEVEL,
#else
.detect_irq = RK30_PIN3_PB6, // INVALID_GPIO
#endif
.enable_sd_wakeup = 0,
#if defined(CONFIG_SDMMC0_RK29_WRITE_PROTECT)
@ -2110,8 +2121,10 @@ struct rk29_sdmmc_platform_data default_sdmmc1_data = {
.status = rk29sdk_wifi_status,
.register_status_notify = rk29sdk_wifi_status_register,
#endif
#if 0
.detect_irq = RK29SDK_WIFI_SDIO_CARD_DETECT_N,
#if defined(CONFIG_SDMMC0_RK29_SDCARD_DET_FROM_GPIO)
.detect_irq = INVALID_GPIO,//RK29SDK_WIFI_SDIO_CARD_DETECT_N,
#else
//.detect_irq = RK29SDK_WIFI_SDIO_CARD_DETECT_N,
#endif
#if defined(CONFIG_SDMMC1_RK29_WRITE_PROTECT)
@ -2136,15 +2149,48 @@ struct rk29_sdmmc_platform_data default_sdmmc1_data = {
* the end of setting for SDMMC devices
**************************************************************************************************/
#ifdef CONFIG_BATTERY_RK30_ADC
#if (defined(CONFIG_BATTERY_RK30_ADC)||defined(CONFIG_BATTERY_RK30_ADC_FAC))
static int batt_table[2*11+6] =
{
0x4B434F52,0x7461625F,0x79726574,0,200,200,
3617,3630,3650,3670,3709,3749,3783,3828,3881,3930,4089,
3692,3906,3944,3978,4028,4091,4110,4125,4132,4140,4141
};
void charge_current_set(int on)
{
int ret = 0, value = 0;
int charge_current_pin = RK30_PIN0_PC6;
ret = gpio_request(charge_current_pin, NULL);
if (ret) {
printk("failed to request charge_current_pin gpio%d\n", charge_current_pin);
return;
}
value = gpio_get_value(charge_current_pin);
if(value != on){
gpio_direction_output(charge_current_pin, on);
// printk("charge_current_set %s\n", on ? "2000mA" : "500mA");
}
gpio_free(charge_current_pin);
}
static struct rk30_adc_battery_platform_data rk30_adc_battery_platdata = {
.dc_det_pin = RK30_PIN6_PA5,
.batt_low_pin = RK30_PIN6_PA0,
.charge_set_pin = INVALID_GPIO,
.charge_ok_pin = RK30_PIN6_PA6,
// .usb_det_pin = RK30_PIN6_PA3,
.dc_det_level = GPIO_LOW,
.charge_ok_level = GPIO_HIGH,
// .usb_det_level = GPIO_LOW,
.save_capacity = 1,
.spport_usb_charging = 1,
.is_reboot_charging = 1,
.use_board_table = 1,
.board_batt_table = batt_table,
.control_usb_charging = charge_current_set,
};
static struct platform_device rk30_device_adc_battery = {
@ -2304,14 +2350,29 @@ static int init_paramter_according_id(int id)
signed char orientation[4][9] = {
{0, -1, 0, 0, 0, 1, 1, 0, 0},
{1, 0, 0, 0, 0, -1, 0, -1, 0},
{1, 0, 0, 0, 0, -1, 0, -1, 0},
{0, 1, 0, 0, 0, -1, 1, 0, 0},
{0, -1, 0, 0, 0, -1, -1, 0, 0},
};
u32 bl_ref[4] = {1, 0, 0, 0};
int bp_id[4]={BP_ID_MT6229,BP_ID_MU509,BP_ID_MT6229,BP_ID_MT6229};
#if defined (CONFIG_GS_MMA7660)
memcpy(mma7660_info.orientation, orientation[id], 9);
#endif
#ifdef LCD_DISP_ON_PIN
rk29_bl_info.bl_ref = bl_ref[id];
#endif
#if defined(CONFIG_BP_AUTO)
bp_auto_info.bp_id=bp_id[id];
#endif
if(id == BOARD_ID_C8003)
{
//enable vccio_wl
gpio_request(RK30_PIN0_PA6, "codec_en");
rk30_mux_api_set(GPIO0A6_HOSTDRVVBUS_NAME, GPIO0A_GPIO0A6);
gpio_direction_output(RK30_PIN0_PA6, GPIO_HIGH);
}
#else
@ -2320,7 +2381,7 @@ static int init_paramter_according_id(int id)
}
static struct board_id_platform_data rk_board_id = {
static struct board_id_platform_data rk30_board_id = {
.gpio_pin = {RK30_PIN0_PD2,RK30_PIN0_PD3,RK30_PIN0_PD4,RK30_PIN0_PD5},
.num_gpio = 4,
.init_platform_hw = board_id_init_platform_hw,
@ -2333,7 +2394,7 @@ static struct platform_device device_board_id = {
.name = "rk-board-id",
.id = -1,
.dev = {
.platform_data = &rk_board_id,
.platform_data = &rk30_board_id,
},
};
@ -2400,7 +2461,7 @@ static struct platform_device *devices[] __initdata = {
&device_bp_auto,
#endif
#ifdef CONFIG_BATTERY_RK30_ADC
#if (defined(CONFIG_BATTERY_RK30_ADC)||defined(CONFIG_BATTERY_RK30_ADC_FAC))
&rk30_device_adc_battery,
#endif
#ifdef CONFIG_RFKILL_RK
@ -2694,6 +2755,45 @@ void rk30_pwm_resume_voltage_set(void)
#endif
}
u32 gpio1a_iomux,gpio2c_iomux, gpio1b_pull,gpio2d_pull, gpio1b_dir,gpio2d_dir,gpio1b_en, gpio2d_en;
void board_gpio_suspend(void) {
gpio1a_iomux = readl_relaxed(GRF_GPIO1A_IOMUX);
gpio2c_iomux = readl_relaxed(GRF_GPIO2C_IOMUX);
writel_relaxed((0xf<< 26), GRF_GPIO1A_IOMUX);
writel_relaxed((0x3 <<18), GRF_GPIO2C_IOMUX);
gpio1b_pull = grf_readl(GRF_GPIO1L_PULL);
gpio2d_pull = grf_readl(GRF_GPIO2H_PULL);
grf_writel(gpio1b_pull |(0x3<<21)|(0x3<<5),GRF_GPIO1L_PULL);
grf_writel( gpio2d_pull | (0x1<<17) |(0x1<<1),GRF_GPIO2H_PULL);
gpio1b_dir = grf_readl(GRF_GPIO1L_DIR);
gpio2d_dir = grf_readl(GRF_GPIO2H_DIR);
grf_writel(gpio1b_dir |(0x1<<21),GRF_GPIO1L_DIR);
grf_writel(gpio2d_dir | (0x1<<17) ,GRF_GPIO2H_DIR);
gpio1b_en = grf_readl(GRF_GPIO1L_EN);
gpio2d_en = grf_readl(GRF_GPIO2H_EN);
grf_writel( gpio1b_en |(0x3<<21)|(0x3<<5),GRF_GPIO1L_EN);
grf_writel( gpio2d_en | (0x1<<17) |(0x1<<1),GRF_GPIO2H_EN);
}
void board_gpio_resume(void) {
writel_relaxed(0xffff0000|gpio1a_iomux, GRF_GPIO1A_IOMUX);
writel_relaxed(0xffff0000|gpio2c_iomux, GRF_GPIO2C_IOMUX);
grf_writel( 0xffff0000|gpio1b_pull,GRF_GPIO1L_PULL);
grf_writel( 0xffff0000|gpio2d_pull,GRF_GPIO2H_PULL);
grf_writel( 0xffff0000|gpio1b_dir,GRF_GPIO1L_DIR);
grf_writel( 0xffff0000|gpio2d_dir,GRF_GPIO2H_DIR);
grf_writel( 0xffff0000|gpio1b_en,GRF_GPIO1L_EN);
grf_writel( 0xffff0000|gpio2d_en,GRF_GPIO2H_EN);
}
#ifdef CONFIG_I2C2_RK30
static struct i2c_board_info __initdata i2c2_info[] = {
@ -2768,7 +2868,7 @@ static struct i2c_board_info __initdata i2c2_info[] = {
#if defined (CONFIG_TS_AUTO_I2C)
{
.type = "auto_ts_i2c",
.addr = 0x3e,
.addr = 0x01,
.flags = 0,
.irq = TOUCH_INT_PIN,
.platform_data = &auto_ts_info,
@ -2965,8 +3065,8 @@ static struct dvfs_arm_table dvfs_cpu_logic_table[] = {
{.frequency = 1200 * 1000, .cpu_volt = 1175 * 1000, .logic_volt = 1200 * 1000},//1.100V/1.050V
{.frequency = 1272 * 1000, .cpu_volt = 1225 * 1000, .logic_volt = 1200 * 1000},//1.150V/1.100V
{.frequency = 1416 * 1000, .cpu_volt = 1300 * 1000, .logic_volt = 1200 * 1000},//1.225V/1.100V
//{.frequency = 1512 * 1000, .cpu_volt = 1350 * 1000, .logic_volt = 1250 * 1000},//1.300V/1.150V
//{.frequency = 1608 * 1000, .cpu_volt = 1425 * 1000, .logic_volt = 1300 * 1000},//1.325V/1.175V
{.frequency = 1512 * 1000, .cpu_volt = 1350 * 1000, .logic_volt = 1250 * 1000},//1.300V/1.150V
{.frequency = 1608 * 1000, .cpu_volt = 1425 * 1000, .logic_volt = 1300 * 1000},//1.325V/1.175V
{.frequency = CPUFREQ_TABLE_END},
};