mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 20:32:04 +09:00
Merge branch 'develop' of 10.10.10.29:/home/rockchip/kernel into develop
This commit is contained in:
@@ -831,8 +831,10 @@ CONFIG_MU509=y
|
||||
# CONFIG_EEPROM_LEGACY is not set
|
||||
# CONFIG_EEPROM_MAX6875 is not set
|
||||
# CONFIG_EEPROM_93CX6 is not set
|
||||
CONFIG_RK29_SUPPORT_MODEM=y
|
||||
CONFIG_MODEM_ROCKCHIP_DEMO=y
|
||||
# CONFIG_RK29_SUPPORT_MODEM is not set
|
||||
# CONFIG_MODEM_ROCKCHIP_DEMO is not set
|
||||
# CONFIG_MODEM_LONGCHEER_U6300V is not set
|
||||
# CONFIG_MODEM_THINKWILL_MW100G is not set
|
||||
# CONFIG_RK29_GPS is not set
|
||||
|
||||
#
|
||||
@@ -1083,16 +1085,9 @@ CONFIG_TOUCHSCREEN_NAS=y
|
||||
CONFIG_INPUT_MISC=y
|
||||
CONFIG_INPUT_UINPUT=y
|
||||
# CONFIG_INPUT_GPIO is not set
|
||||
|
||||
#
|
||||
# Magnetometer sensors
|
||||
#
|
||||
# CONFIG_COMPASS_AK8975 is not set
|
||||
# CONFIG_COMPASS_AK8973 is not set
|
||||
CONFIG_G_SENSOR_DEVICE=y
|
||||
# CONFIG_GS_MMA7660 is not set
|
||||
CONFIG_GS_MMA8452=y
|
||||
CONFIG_GS_L3G4200D=y
|
||||
# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
|
||||
# CONFIG_MAG_SENSORS is not set
|
||||
# CONFIG_G_SENSOR_DEVICE is not set
|
||||
# CONFIG_INPUT_JOGBALL is not set
|
||||
# CONFIG_LIGHT_SENSOR_DEVICE is not set
|
||||
|
||||
@@ -1229,10 +1224,9 @@ CONFIG_POWER_SUPPLY=y
|
||||
# CONFIG_BATTERY_BQ27x00 is not set
|
||||
# CONFIG_BATTERY_MAX17040 is not set
|
||||
# CONFIG_BATTERY_STC3100 is not set
|
||||
CONFIG_BATTERY_BQ27510=y
|
||||
# CONFIG_BATTERY_BQ27510 is not set
|
||||
CONFIG_BATTERY_BQ27541=y
|
||||
# CONFIG_BATTERY_BQ3060 is not set
|
||||
# CONFIG_CHECK_BATT_CAPACITY is not set
|
||||
CONFIG_NO_BATTERY_IC=y
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_THERMAL is not set
|
||||
# CONFIG_WATCHDOG is not set
|
||||
@@ -1776,7 +1770,8 @@ CONFIG_USB_ANDROID_MASS_STORAGE=y
|
||||
#
|
||||
# CONFIG_USB_GPIO_VBUS is not set
|
||||
# CONFIG_NOP_USB_XCEIV is not set
|
||||
# CONFIG_USB11_HOST is not set
|
||||
CONFIG_USB11_HOST=y
|
||||
CONFIG_USB11_HOST_EN=y
|
||||
CONFIG_USB20_HOST=y
|
||||
CONFIG_USB20_HOST_EN=y
|
||||
CONFIG_USB20_OTG=y
|
||||
|
||||
@@ -428,6 +428,7 @@ int p1003_init_platform_hw(void)
|
||||
|
||||
if(gpio_request(TOUCH_INT_PIN,NULL) != 0){
|
||||
gpio_free(TOUCH_INT_PIN);
|
||||
gpio_free(TOUCH_RESET_PIN);
|
||||
printk("p1003_init_platform_hw gpio_request error\n");
|
||||
return -EIO;
|
||||
}
|
||||
@@ -463,6 +464,7 @@ static int EETI_EGALAX_init_platform_hw(void)
|
||||
|
||||
if(gpio_request(TOUCH_INT_PIN,NULL) != 0){
|
||||
gpio_free(TOUCH_INT_PIN);
|
||||
gpio_free(TOUCH_RESET_PIN);
|
||||
printk("p1003_init_platform_hw gpio_request error\n");
|
||||
return -EIO;
|
||||
}
|
||||
@@ -515,13 +517,14 @@ void nas_request_io(void)
|
||||
if(gpio_request(TOUCH_RESET_PIN,NULL) != 0){
|
||||
gpio_free(TOUCH_RESET_PIN);
|
||||
printk("nas_init_platform_hw gpio_request error\n");
|
||||
return -EIO;
|
||||
return ;
|
||||
}
|
||||
|
||||
if(gpio_request(TOUCH_INT_PIN,NULL) != 0){
|
||||
gpio_free(TOUCH_INT_PIN);
|
||||
gpio_free(TOUCH_RESET_PIN);
|
||||
printk("nas_init_platform_hw gpio_request error\n");
|
||||
return -EIO;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -567,13 +570,14 @@ void laibao_request_io(void)
|
||||
if(gpio_request(TOUCH_RESET_PIN,NULL) != 0){
|
||||
gpio_free(TOUCH_RESET_PIN);
|
||||
printk("nas_init_platform_hw gpio_request error\n");
|
||||
return -EIO;
|
||||
return ;
|
||||
}
|
||||
|
||||
if(gpio_request(TOUCH_INT_PIN,NULL) != 0){
|
||||
gpio_free(TOUCH_INT_PIN);
|
||||
gpio_free(TOUCH_RESET_PIN);
|
||||
printk("nas_init_platform_hw gpio_request error\n");
|
||||
return -EIO;
|
||||
return ;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -662,7 +666,7 @@ static struct mpu3050_platform_data mpu3050_data = {
|
||||
//.orientation = { 0, -1, 0,-1, 0, 0,0, 0, -1 },
|
||||
//.orientation = { 0, 1, 0,1, 0, 0,0, 0, -1 },
|
||||
|
||||
.orientation = { 1, 0, 0, 0, -1, 0, 0, 0, -1 },
|
||||
.orientation = { -1, 0, 0, 0, -1, 0, 0, 0, 1 },
|
||||
//.orientation = { 0, 1, 0, -1, 0, 0, 0, 0, -1 },
|
||||
},
|
||||
#endif
|
||||
@@ -830,6 +834,26 @@ struct wm8994_pdata wm8994_platdata = {
|
||||
.recorder_vol = 50,
|
||||
|
||||
};
|
||||
#if defined (CONFIG_BATTERY_BQ27541)
|
||||
#define DC_CHECK_PIN RK29_PIN4_PA1
|
||||
#define LI_LION_BAT_NUM 2
|
||||
static int bq27541_init_dc_check_pin(void){
|
||||
if(gpio_request(DC_CHECK_PIN,"dc_check") != 0){
|
||||
gpio_free(DC_CHECK_PIN);
|
||||
printk("bq27541 init dc check pin request error\n");
|
||||
return -EIO;
|
||||
}
|
||||
gpio_direction_input(DC_CHECK_PIN);
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct bq27541_platform_data bq27541_info = {
|
||||
.init_dc_check_pin = bq27541_init_dc_check_pin,
|
||||
.dc_check_pin = DC_CHECK_PIN,
|
||||
.bat_num = LI_LION_BAT_NUM,
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
/*****************************************************************************************
|
||||
* i2c devices
|
||||
@@ -1069,6 +1093,16 @@ static struct i2c_board_info __initdata board_i2c0_devices[] = {
|
||||
.platform_data = &mpu3050_data,
|
||||
},
|
||||
#endif
|
||||
|
||||
#if defined (CONFIG_BATTERY_BQ27541)
|
||||
{
|
||||
.type = "bq27541",
|
||||
.addr = 0x55,
|
||||
.flags = 0,
|
||||
.platform_data = &bq27541_info,
|
||||
},
|
||||
#endif
|
||||
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
@@ -13,12 +13,9 @@
|
||||
#include <linux/miscdevice.h>
|
||||
#include <mach/iomux.h>
|
||||
#include <mach/gpio.h>
|
||||
//#include <mach/spi_fpga.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/poll.h>
|
||||
#include <linux/wait.h>
|
||||
//#include <linux/android_power.h>
|
||||
//#include <asm/arch/gpio_extend.h>
|
||||
#include <linux/wakelock.h>
|
||||
#include <linux/workqueue.h>
|
||||
#include <linux/mu509.h>
|
||||
@@ -34,18 +31,6 @@ MODULE_LICENSE("GPL");
|
||||
#define SLEEP 1
|
||||
#define READY 0
|
||||
#define MU509_RESET 0x01
|
||||
/*
|
||||
struct rk29_mu509_data rk29_mu509_info = {
|
||||
.io_init = mu509_io_init,
|
||||
.io_deinit = mu509_io_deinit,
|
||||
.bp_power = RK29_PIN6_PB1,//RK29_PIN0_PB4,
|
||||
.bp_power_active_low = 1,
|
||||
.bp_reset = RK29_PIN6_PC7,//RK29_PIN0_PB3,
|
||||
.bp_reset_active_low = 1,
|
||||
.bp_wakeup_ap = RK29_PIN0_PA4,//RK29_PIN0_PC2,
|
||||
.ap_wakeup_bp = RK29_PIN2_PB3,//RK29_PIN0_PB0,
|
||||
};
|
||||
*/
|
||||
static struct wake_lock modem_wakelock;
|
||||
#define IRQ_BB_WAKEUP_AP_TRIGGER IRQF_TRIGGER_FALLING
|
||||
//#define IRQ_BB_WAKEUP_AP_TRIGGER IRQF_TRIGGER_RISING
|
||||
@@ -61,27 +46,6 @@ static void ap_wakeup_bp(struct platform_device *pdev, int wake)
|
||||
gpio_set_value(pdata->ap_wakeup_bp, wake);
|
||||
|
||||
}
|
||||
/*
|
||||
static void bpwakeup_work_func_work(struct work_struct *work)
|
||||
{
|
||||
struct modem_dev *bdata = container_of(work, struct modem_dev, work);
|
||||
wake_lock_timeout(&modem_wakelock, 10 * HZ);
|
||||
MODEMDBG("%s\n", __FUNCTION__);
|
||||
|
||||
}*/
|
||||
/*static irqreturn_t bpwakeup_work_func(int irq, void *data)
|
||||
{
|
||||
struct modem_dev *mu509_data = (struct modem_dev *)data;
|
||||
|
||||
MODEMDBG("bpwakeup_work_func\n");
|
||||
wake_lock_timeout(&modem_wakelock, 10 * HZ);
|
||||
return IRQ_HANDLED;
|
||||
}*/
|
||||
/*static irqreturn_t bp_apwakeup_work_func(int irq, void *data)
|
||||
{
|
||||
MODEMDBG("bp_apwakeup_work_func\n");
|
||||
return IRQ_HANDLED;
|
||||
}*/
|
||||
extern void rk28_send_wakeup_key(void);
|
||||
|
||||
static void do_wakeup(struct work_struct *work)
|
||||
@@ -104,75 +68,60 @@ static irqreturn_t detect_irq_handler(int irq, void *dev_id)
|
||||
}
|
||||
int modem_poweron_off(int on_off)
|
||||
{
|
||||
struct rk29_mu509_data *pdata = gpdata;
|
||||
//gpio_set_value(pdata->bp_power,0);
|
||||
|
||||
struct rk29_mu509_data *pdata = gpdata;
|
||||
if(on_off)
|
||||
{
|
||||
printk("modem_poweron\n");
|
||||
gpio_set_value(pdata->bp_power, pdata->bp_power_active_low? GPIO_LOW:GPIO_HIGH);
|
||||
mdelay(300);
|
||||
gpio_set_value(pdata->bp_reset, pdata->bp_reset_active_low? GPIO_HIGH:GPIO_LOW);
|
||||
msleep(4000);
|
||||
gpio_set_value(pdata->bp_power, pdata->bp_power_active_low? GPIO_HIGH:GPIO_LOW);
|
||||
printk("------------modem_poweron\n");
|
||||
// gpio_set_value(pdata->bp_power, pdata->bp_power_active_low? GPIO_LOW:GPIO_HIGH);
|
||||
// mdelay(300);
|
||||
// gpio_set_value(pdata->bp_reset, pdata->bp_reset_active_low? GPIO_HIGH:GPIO_LOW);
|
||||
// msleep(4000);
|
||||
// gpio_set_value(pdata->bp_power, pdata->bp_power_active_low? GPIO_HIGH:GPIO_LOW);
|
||||
gpio_set_value(pdata->bp_power, GPIO_LOW);
|
||||
msleep(1000);
|
||||
gpio_set_value(pdata->bp_power, GPIO_HIGH);
|
||||
msleep(700);
|
||||
gpio_set_value(pdata->ap_wakeup_bp, GPIO_LOW);
|
||||
}
|
||||
else
|
||||
{
|
||||
printk("modem_poweroff\n");
|
||||
gpio_set_value(pdata->bp_power, pdata->bp_power_active_low? GPIO_LOW:GPIO_HIGH);
|
||||
mdelay(100);
|
||||
gpio_set_value(pdata->bp_power, pdata->bp_power_active_low? GPIO_HIGH:GPIO_LOW);
|
||||
printk("------------modem_poweroff\n");
|
||||
gpio_set_value(pdata->bp_power, GPIO_LOW);
|
||||
mdelay(2500);
|
||||
gpio_set_value(pdata->bp_power, GPIO_HIGH);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
static int power_on =1;
|
||||
static int mu509_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
//struct rk29_mu509_data *pdata = gpdata;
|
||||
//struct platform_data *pdev = container_of(pdata, struct device, platform_data);
|
||||
|
||||
MODEMDBG("modem_open\n");
|
||||
printk("-------------%s\n",__FUNCTION__);
|
||||
modem_poweron_off(1);
|
||||
//int ret = 0;
|
||||
/* if(power_on)
|
||||
{
|
||||
power_on = 0;
|
||||
modem_poweron_off(1);
|
||||
#if 1
|
||||
rk29_mux_api_set(GPIO1B7_UART0SOUT_NAME, GPIO1L_UART0_SOUT);
|
||||
rk29_mux_api_set(GPIO1B6_UART0SIN_NAME, GPIO1L_UART0_SIN);
|
||||
rk29_mux_api_set(GPIO1C1_UART0RTSN_SDMMC1WRITEPRT_NAME, GPIO1H_UART0_RTS_N);
|
||||
rk29_mux_api_set(GPIO1C0_UART0CTSN_SDMMC1DETECTN_NAME, GPIO1H_UART0_CTS_N);
|
||||
#endif
|
||||
}
|
||||
device_init_wakeup(&pdev, 1);
|
||||
*/
|
||||
printk("%s\n",__FUNCTION__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mu509_release(struct inode *inode, struct file *file)
|
||||
{
|
||||
MODEMDBG("mu509_release\n");
|
||||
printk("-------------%s\n",__FUNCTION__);
|
||||
//modem_poweron_off(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int mu509_ioctl(struct inode *inode,struct file *file, unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
struct rk29_mu509_data *pdata = gpdata;
|
||||
//int i;
|
||||
//void __user *argp = (void __user *)arg;
|
||||
printk("mu509_ioctl\n");
|
||||
printk("-------------%s\n",__FUNCTION__);
|
||||
switch(cmd)
|
||||
{
|
||||
case MU509_RESET:
|
||||
gpio_set_value(pdata->bp_reset, pdata->bp_reset_active_low? GPIO_LOW:GPIO_HIGH);
|
||||
case MU509_RESET:
|
||||
gpio_set_value(pdata->bp_reset, GPIO_HIGH);
|
||||
mdelay(100);
|
||||
gpio_set_value(pdata->bp_power, pdata->bp_power_active_low? GPIO_LOW:GPIO_HIGH);
|
||||
mdelay(300);
|
||||
gpio_set_value(pdata->bp_reset, pdata->bp_reset_active_low? GPIO_HIGH:GPIO_LOW);
|
||||
msleep(4000);
|
||||
gpio_set_value(pdata->bp_power, pdata->bp_power_active_low? GPIO_HIGH:GPIO_LOW);
|
||||
gpio_set_value(pdata->bp_reset, GPIO_LOW);
|
||||
mdelay(100);
|
||||
gpio_set_value(pdata->bp_power, GPIO_LOW);
|
||||
msleep(1000);
|
||||
gpio_set_value(pdata->bp_power, GPIO_HIGH);
|
||||
msleep(700);
|
||||
gpio_set_value(pdata->ap_wakeup_bp, GPIO_LOW);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -198,9 +147,7 @@ static int mu509_probe(struct platform_device *pdev)
|
||||
struct rk29_mu509_data *pdata = gpdata = pdev->dev.platform_data;
|
||||
struct modem_dev *mu509_data = NULL;
|
||||
int result, irq = 0;
|
||||
|
||||
MODEMDBG("mu509_probe\n");
|
||||
power_on =1;
|
||||
printk("-------------%s\n",__FUNCTION__);
|
||||
modem_poweron_off(1);
|
||||
mu509_data = kzalloc(sizeof(struct modem_dev), GFP_KERNEL);
|
||||
if(mu509_data == NULL)
|
||||
@@ -208,8 +155,7 @@ static int mu509_probe(struct platform_device *pdev)
|
||||
printk("failed to request mu509_data\n");
|
||||
goto err2;
|
||||
}
|
||||
platform_set_drvdata(pdev, mu509_data);
|
||||
|
||||
platform_set_drvdata(pdev, mu509_data);
|
||||
result = gpio_request(pdata->ap_wakeup_bp, "mu509");
|
||||
if (result) {
|
||||
printk("failed to request AP_BP_WAKEUP gpio\n");
|
||||
@@ -227,9 +173,8 @@ static int mu509_probe(struct platform_device *pdev)
|
||||
printk("%s: gpio_request(%d) failed\n", __func__, pdata->bp_wakeup_ap);
|
||||
}
|
||||
wake_lock_init(&modem_wakelock, WAKE_LOCK_SUSPEND, "bp_wakeup_ap");
|
||||
gpio_direction_output(pdata->ap_wakeup_bp, 1);
|
||||
gpio_direction_input(pdata->bp_wakeup_ap);
|
||||
gpio_pull_updown(pdata->bp_wakeup_ap, 1);
|
||||
gpio_pull_updown(pdata->bp_wakeup_ap, 1);
|
||||
result = request_irq(irq, detect_irq_handler, IRQ_BB_WAKEUP_AP_TRIGGER, "bp_wakeup_ap", NULL);
|
||||
if (result < 0) {
|
||||
printk("%s: request_irq(%d) failed\n", __func__, irq);
|
||||
@@ -258,18 +203,16 @@ int mu509_suspend(struct platform_device *pdev)
|
||||
{
|
||||
do_wakeup_irq = 1;
|
||||
//struct rk29_mu509_data *pdata = pdev->dev.platform_data;
|
||||
printk("------------mu509_suspend");
|
||||
MODEMDBG("%s \n", __FUNCTION__);
|
||||
ap_wakeup_bp(pdev, 0);
|
||||
printk("-------------%s\n",__FUNCTION__);
|
||||
ap_wakeup_bp(pdev, 1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mu509_resume(struct platform_device *pdev)
|
||||
{
|
||||
//struct rk29_mu509_data *pdata = pdev->dev.platform_data;
|
||||
printk("-------------mu509_resume");
|
||||
MODEMDBG("%s \n", __FUNCTION__);
|
||||
ap_wakeup_bp(pdev, 1);
|
||||
printk("-------------%s\n",__FUNCTION__);
|
||||
ap_wakeup_bp(pdev, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -278,8 +221,8 @@ void mu509_shutdown(struct platform_device *pdev, pm_message_t state)
|
||||
struct rk29_mu509_data *pdata = pdev->dev.platform_data;
|
||||
struct modem_dev *mu509_data = platform_get_drvdata(pdev);
|
||||
|
||||
MODEMDBG("%s \n", __FUNCTION__);
|
||||
|
||||
printk("-------------%s\n",__FUNCTION__);
|
||||
modem_poweron_off(0);
|
||||
cancel_work_sync(&mu509_data->work);
|
||||
gpio_free(pdata->bp_power);
|
||||
gpio_free(pdata->bp_reset);
|
||||
@@ -301,13 +244,13 @@ static struct platform_driver mu509_driver = {
|
||||
|
||||
static int __init mu509_init(void)
|
||||
{
|
||||
printk("-----%s----------zzc\n",__FUNCTION__);
|
||||
printk("-------------%s\n",__FUNCTION__);
|
||||
return platform_driver_register(&mu509_driver);
|
||||
}
|
||||
|
||||
static void __exit mu509_exit(void)
|
||||
{
|
||||
MODEMDBG("mu509_exit\n");
|
||||
printk("-------------%s\n",__FUNCTION__);
|
||||
platform_driver_unregister(&mu509_driver);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user