rk2928_defconfig: support 'rk2928 sdk'

This commit is contained in:
kfx
2012-10-23 15:53:13 +08:00
parent 2ae8a8c95e
commit 3e41137abe
6 changed files with 172 additions and 58 deletions

View File

@@ -9,12 +9,16 @@
#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);
@@ -86,11 +90,14 @@ static int act8931_set_init(struct act8931 *act8931)
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
printk("%s,line=%d END\n", __func__,__LINE__);
@@ -296,12 +303,20 @@ static struct act8931_platform_data act8931_data={
#ifdef CONFIG_HAS_EARLYSUSPEND
void act8931_early_suspend(struct early_suspend *h)
{
#if CONFIG_RK_CONFIG
port_output_off(chg_sel);
#else
gpio_direction_output(ACT8931_CHGSEL_PIN, !ACT8931_CHGSEL_VALUE);
#endif
}
void act8931_late_resume(struct early_suspend *h)
{
#if CONFIG_RK_CONFIG
port_output_on(chg_sel);
#else
gpio_direction_output(ACT8931_CHGSEL_PIN, ACT8931_CHGSEL_VALUE);
#endif
}
#endif

View File

@@ -9,6 +9,8 @@
#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)
@@ -17,6 +19,8 @@
#define PMU_POWER_SLEEP RK2928_PIN1_PA1
#endif
#endif
#define GPIO_SWPORTA_DR 0x0000
#define GPIO_SWPORTA_DDR 0x0004
struct sram_gpio_data {
@@ -65,15 +69,22 @@ int tps65910_pre_init(struct tps65910 *tps65910){
printk("%s,line=%d\n", __func__,__LINE__);
#ifdef CONFIG_RK_CONFIG
if(sram_gpio_init(get_port_config(pmic_slp).gpio, &pmic_sleep) < 0){
printk(KERN_ERR "sram_gpio_init failed\n");
return -EINVAL;
}
if(port_output_init(pmic_slp, 1, "pmic_slp") < 0){
printk(KERN_ERR "port_output_init failed\n");
return -EINVAL;
}
#else
if(sram_gpio_init(PMU_POWER_SLEEP, &pmic_sleep) < 0){
#endif
printk(KERN_ERR "PMU_POWER_SLEEP is invalid gpio\n");
printk(KERN_ERR "sram_gpio_init failed\n");
return -EINVAL;
}
gpio_request(PMU_POWER_SLEEP, "NULL");
gpio_direction_output(PMU_POWER_SLEEP, GPIO_LOW);
#endif
val = tps65910_reg_read(tps65910, TPS65910_DEVCTRL2);
if (val<0) {

View File

@@ -582,11 +582,13 @@ int rk30_battery_adc_io_init(void){
return 0;
}
int rk30_battery_adc_is_dc_charging( ){
return act8931_charge_det ;
int rk30_battery_adc_is_dc_charging(void)
{
return act8931_charge_det;
}
int rk30_battery_adc_charging_ok( ){
return act8931_charge_ok ;
int rk30_battery_adc_charging_ok(void)
{
return act8931_charge_ok;
}
#endif
@@ -797,6 +799,7 @@ static void __init rk30_i2c_register_board_info(void)
/**************** gsensor ****************/
// kxtik
#if defined (CONFIG_GS_KXTIK)
static int kxtik_init_platform_hw(void)
{
return 0;
@@ -813,6 +816,7 @@ struct i2c_board_info __initdata kxtik_info = {
.flags = 0,
.platform_data = &kxtik_data,
};
#endif
#if defined (CONFIG_GS_MMA8452)
static int mma8452_init_platform_hw(void)
{
@@ -859,11 +863,15 @@ static int __init gs_board_init(void)
return ret;
port = get_port_config(gs_irq);
//kxtik
kxtik_info.irq = port.gpio;
kxtik_info.addr = gs_addr;
for(i = 0; i < 9; i++)
kxtik_data.orientation[i] = gs_orig[i];
i2c_register_board_info(gs_i2c, &kxtik_info, 1);
#if defined (CONFIG_GS_KXTIK)
if(gs_type == GS_TYPE_KXTIK){
kxtik_info.irq = port.gpio;
kxtik_info.addr = gs_addr;
for(i = 0; i < 9; i++)
kxtik_data.orientation[i] = gs_orig[i];
i2c_register_board_info(gs_i2c, &kxtik_info, 1);
}
#endif
//mma7660
#if defined (CONFIG_GS_MMA7660)
if(gs_type == GS_TYPE_MMA7660){

View File

@@ -2,11 +2,18 @@
#define __MACH_CONFIG_H
#include <mach/board.h>
#define RK2926_TB_DEFAULT_CONFIG
//#define RK2926_TB_DEFAULT_CONFIG
//#define RK2928_TB_DEFAULT_CONFIG
//#define RK2926_SDK_DEFAULT_CONFIG
#define RK2926_SDK_DEFAULT_CONFIG
//#define RK2928_SDK_DEFAULT_CONFIG
enum {
GS_TYPE_NONE = 0,
GS_TYPE_MMA8452,
GS_TYPE_MMA7660,
GS_TYPE_KXTIK,
GS_TYPE_MAX,
};
enum {
WIFI_NONE = 0,
WIFI_USB_NONE = 1<<4,
@@ -58,12 +65,6 @@ enum {
202, 102, \
1, 0 }
/* gsensor */
enum {
GS_TYPE_NONE = 0,
GS_TYPE_MMA8452,
GS_TYPE_MMA7660,
GS_TYPE_MAX,
};
enum {
DEF_GS_TYPE = GS_TYPE_MMA8452,
@@ -158,13 +159,6 @@ enum {
202, 102, \
1, 0 }
/* gsensor */
enum {
GS_TYPE_NONE = 0,
GS_TYPE_MMA8452,
GS_TYPE_MMA7660,
GS_TYPE_MAX,
};
enum {
DEF_GS_TYPE = GS_TYPE_MMA8452,
DEF_GS_I2C = 0,
@@ -243,7 +237,7 @@ enum{
DEF_BL_PWM = 0,
DEF_BL_REF = 0,
DEF_BL_MIN = 80,
DEF_BL_EN = 0x000001b0,
DEF_BL_EN = -1,
};
/* lcd */
enum {
@@ -259,13 +253,6 @@ enum {
154, 85, \
1, 0 }
/* gsensor */
enum {
GS_TYPE_NONE = 0,
GS_TYPE_MMA8452,
GS_TYPE_MMA7660,
GS_TYPE_MAX,
};
enum {
DEF_GS_TYPE = GS_TYPE_MMA7660,
DEF_GS_I2C = 1,
@@ -318,13 +305,107 @@ enum {
DEF_BAT_LOW = -1,
DEF_CHG_OK = -1,
DEF_CHG_SET = -1,
DEF_CHG_SEL = -1,
DEF_CHG_SEL = 0x000001a1,
};
/* global */
enum {
DEF_PWR_ON = 0x000001a2,
};
/**************************** rk2928 sdk ******************************/
#elif defined(RK2928_SDK_DEFAULT_CONFIG)
/* keyboard */
enum{
DEF_KEY_ADC = 1,
DEF_PLAY_KEY = 0x000100d1,
DEF_VOLDN_KEY = 512 | (1<<31),
DEF_VOLUP_KEY = 1 | (1<<31),
DEF_MENU_KEY = 0 | (1<<31),
DEF_ESC_KEY = 0 | (1<<31),
DEF_HOME_KEY = 0 | (1<<31),
DEF_CAM_KEY = 0 | (1<<31),
};
/* backlight */
enum{
DEF_BL_PWM = 0,
DEF_BL_REF = 0,
DEF_BL_MIN = 80,
DEF_BL_EN = 0x000003c5,
};
/* lcd */
enum {
DEF_LCD_CABC = -1,
DEF_LCD_EN = 0x000103b3,
DEF_LCD_STD = -1,
};
#define DEF_LCD_PARAM {SCREEN_RGB, OUT_P666, \
33000000, 15000000, \
30, 10, 800, 210, \
13, 10, 480, 22, \
154, 85, \
1, 0 }
/* gsensor */
enum {
DEF_GS_TYPE = GS_TYPE_MMA7660,
DEF_GS_I2C = 1,
DEF_GS_ADDR = 0x4c,
DEF_GS_IRQ = 0x008003d1,
DEF_GS_PWR = -1,
};
#define DEF_GS_ORIG {-1, 0, 0, 0, 0, 1, 0, -1, 0}
/* pwm regulator */
enum {
DEF_REG_PWM = 2,
};
/* pmic */
enum {
DEF_PMIC_TYPE = PMIC_TYPE_ACT8931,
DEF_PMIC_SLP = 0x000000d0,
DEF_PMIC_IRQ = 0x000003c6,
DEF_PMIC_I2C = 0,
DEF_PMIC_ADDR = 0x5b,
};
/* ion */
enum {
DEF_ION_SIZE = 80 * 1024 * 1024,
};
/* codec */
enum {
DEF_SPK_CTL = 0x000003d4,
DEF_HP_DET = -1,
};
/* sdmmc */
enum {
DEF_SD_DET = 0x000101c1,
};
/* wifi */
enum {
DEF_WIFI_RST = -1,
DEF_WIFI_PWR = -1,
DEF_WIFI_TYPE = WIFI_NONE,
};
/* rtc */
enum {
DEF_RTC_I2C = 0,
DEF_RTC_ADDR = 0x51,
DEF_RTC_IRQ = 0x008001a5,
};
/* charge */
enum {
DEF_CHG_ADC = 0,
DEF_DC_DET = 0x000101b4,
DEF_BAT_LOW = -1,
DEF_CHG_OK = 0x000001a0,
DEF_CHG_SET = -1,
DEF_CHG_SEL = 0x000000d0,
};
/* global */
enum {
DEF_PWR_ON = 0x000001a1,
};
/**************************** other ******************************/
#else
/* keyboard */
@@ -359,13 +440,6 @@ enum {
0, 0, \
0, 0 }
/* gsensor */
enum {
GS_TYPE_NONE = 0,
GS_TYPE_MMA8452,
GS_TYPE_MMA7660,
GS_TYPE_MAX,
};
enum {
DEF_GS_TYPE = GS_TYPE_NONE,
DEF_GS_I2C = -1,

View File

@@ -64,6 +64,9 @@ enum {
#elif defined(RK2928_TB_DEFAULT_CONFIG)
DEF_IRQ = 0x008003c7,
DEF_RST = 0X000003c3,
#else
DEF_IRQ = -1,
DEF_RST = -1,
#endif
DEF_I2C = 2,
DEF_ADDR = 0x04,

View File

@@ -43,7 +43,7 @@
#ifdef CONFIG_RK_CONFIG
enum {
#ifdef RK2926_SDK_DEFAULT_CONFIG
#if defined(RK2926_SDK_DEFAULT_CONFIG)
DEF_EN = 1,
#else
DEF_EN = 0,
@@ -170,6 +170,7 @@ struct sitronix_ts_data {
uint8_t touch_protocol_type;
uint8_t pixel_length;
int suspend_state;
int irq;
};
static unsigned char initkey_code[] =
@@ -303,7 +304,7 @@ long sitronix_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
UpgradeMsg("IOCTL_SMT_ENABLE_IRQ\n");
if(!sitronix_ts_irq_on){
sitronix_ts_irq_on = 1;
enable_irq(sitronix_ts_gpts->client->irq);
enable_irq(sitronix_ts_gpts->irq);
#ifdef SITRONIX_MONITOR_THREAD
atomic_set(&iMonitorThreadPostpone,1);
SitronixMonitorThread = kthread_run(sitronix_ts_monitor_thread,"Sitronix","Monitorthread");
@@ -316,7 +317,7 @@ long sitronix_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
UpgradeMsg("IOCTL_SMT_DISABLE_IRQ\n");
if(sitronix_ts_irq_on){
sitronix_ts_irq_on = 0;
disable_irq_nosync(sitronix_ts_gpts->client->irq);
disable_irq_nosync(sitronix_ts_gpts->irq);
#ifdef SITRONIX_MONITOR_THREAD
if(SitronixMonitorThread){
kthread_stop(SitronixMonitorThread);
@@ -862,7 +863,7 @@ static void sitronix_ts_work_func(struct work_struct *work)
#ifdef SITRONIX_INT_POLLING_MODE
if (ts->use_irq){
sitronix_ts_irq_on = 1;
enable_irq(ts->client->irq);
enable_irq(ts->irq);
}
#endif // SITRONIX_INT_POLLING_MODE
}
@@ -872,7 +873,7 @@ exit_invalid_data:
#if defined(SITRONIX_LEVEL_TRIGGERED)
if (ts->use_irq){
sitronix_ts_irq_on = 1;
enable_irq(ts->client->irq);
enable_irq(ts->irq);
}
#endif // defined(SITRONIX_LEVEL_TRIGGERED)
if ((2 <= i2cErrorCount)){
@@ -895,7 +896,7 @@ static irqreturn_t sitronix_ts_irq_handler(int irq, void *dev_id)
// printk("lr:%s\n", __FUNCTION__);
#if defined(SITRONIX_LEVEL_TRIGGERED) || defined(SITRONIX_INT_POLLING_MODE)
sitronix_ts_irq_on = 0;
disable_irq_nosync(ts->client->irq);
disable_irq_nosync(ts->irq);
#endif // defined(SITRONIX_LEVEL_TRIGGERED) || defined(SITRONIX_INT_POLLING_MODE)
#ifdef SITRONIX_MONITOR_THREAD
atomic_set(&iMonitorThreadPostpone,1);
@@ -945,6 +946,8 @@ static int sitronix_ts_probe(struct i2c_client *client, const struct i2c_device_
INIT_DELAYED_WORK(&ts->work, sitronix_ts_work_func);
#endif // SITRONIX_INT_POLLING_MODE
ts->client = client;
if(client->irq != INVALID_GPIO)
ts->irq = gpio_to_irq(client->irq);
i2c_set_clientdata(client, ts);
pdata = client->dev.platform_data;
#if 0
@@ -1066,14 +1069,14 @@ static int sitronix_ts_probe(struct i2c_client *client, const struct i2c_device_
}
ts->suspend_state = 0;
if (client->irq){
if (ts->irq){
#ifdef CONFIG_RK_CONFIG
ret = request_irq(client->irq, sitronix_ts_irq_handler, irq_cfg.irq.irq_flags | IRQF_DISABLED, client->name, ts);
ret = request_irq(ts->irq, sitronix_ts_irq_handler, irq_cfg.irq.irq_flags | IRQF_DISABLED, client->name, ts);
#else
#ifdef SITRONIX_LEVEL_TRIGGERED
ret = request_irq(client->irq, sitronix_ts_irq_handler, IRQF_TRIGGER_LOW | IRQF_DISABLED, client->name, ts);
ret = request_irq(ts->irq, sitronix_ts_irq_handler, IRQF_TRIGGER_LOW | IRQF_DISABLED, client->name, ts);
#else
ret = request_irq(client->irq, sitronix_ts_irq_handler, IRQF_TRIGGER_FALLING | IRQF_DISABLED, client->name, ts);
ret = request_irq(ts->irq, sitronix_ts_irq_handler, IRQF_TRIGGER_FALLING | IRQF_DISABLED, client->name, ts);
#endif // SITRONIX_LEVEL_TRIGGERED
#endif // CONFIG_RK_CONFIG
if (ret == 0){
@@ -1128,7 +1131,7 @@ static int sitronix_ts_remove(struct i2c_client *client)
}
#endif // SITRONIX_MONITOR_THREAD
if (ts->use_irq)
free_irq(client->irq, ts);
free_irq(ts->irq, ts);
else
hrtimer_cancel(&ts->timer);
input_unregister_device(ts->input_dev);
@@ -1154,13 +1157,13 @@ static int sitronix_ts_suspend(struct i2c_client *client, pm_message_t mesg)
#endif // SITRONIX_MONITOR_THREAD
if(ts->use_irq){
sitronix_ts_irq_on = 0;
disable_irq_nosync(ts->client->irq);
disable_irq_nosync(ts->irq);
}
ts->suspend_state = 1;
ret = sitronix_ts_set_powerdown_bit(ts, 1);
#ifdef SITRONIX_WAKE_UP_TOUCH_BY_INT
gpio_direction_output(irq_to_gpio(client->irq), 1);
gpio_direction_output(client->irq, 1);
#endif // SITRONIX_WAKE_UP_TOUCH_BY_INT
DbgMsg("%s return\n", __FUNCTION__);
@@ -1186,7 +1189,7 @@ static int sitronix_ts_resume(struct i2c_client *client)
DbgMsg("%s\n", __FUNCTION__);
#ifdef SITRONIX_WAKE_UP_TOUCH_BY_INT
gpio = irq_to_gpio(client->irq);
gpio = client->irq;
gpio_set_value(gpio, 0);
gpio_direction_input(gpio);
#else
@@ -1196,7 +1199,7 @@ static int sitronix_ts_resume(struct i2c_client *client)
ts->suspend_state = 0;
if(ts->use_irq){
sitronix_ts_irq_on = 1;
enable_irq(ts->client->irq);
enable_irq(ts->irq);
}
#ifdef SITRONIX_MONITOR_THREAD
atomic_set(&iMonitorThreadPostpone,1);