mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 03:40:35 +09:00
Merge branch 'develop-3.0' of ssh://10.10.10.29/rk/kernel into new
This commit is contained in:
@@ -189,6 +189,8 @@ CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_MISC_DEVICES=y
|
||||
CONFIG_UID_STAT=y
|
||||
CONFIG_APANIC=y
|
||||
CONFIG_RK29_SC8800=y
|
||||
CONFIG_TDSC8800=y
|
||||
CONFIG_MPU_SENSORS_TIMERIRQ=y
|
||||
CONFIG_INV_SENSORS=y
|
||||
CONFIG_MPU_SENSORS_MMA845X=y
|
||||
@@ -277,6 +279,7 @@ CONFIG_SOC_CAMERA=y
|
||||
CONFIG_SOC_CAMERA_OV2659=y
|
||||
CONFIG_SOC_CAMERA_OV5642=y
|
||||
CONFIG_VIDEO_RK29=y
|
||||
CONFIG_SMS_SIANO_MDTV=y
|
||||
CONFIG_ION=y
|
||||
CONFIG_ION_ROCKCHIP=y
|
||||
CONFIG_FB=y
|
||||
|
||||
@@ -3596,12 +3596,27 @@ static struct xpt2046_platform_data xpt2046_info = {
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_RK29_SC8800)
|
||||
static int sc8800_io_init(void)
|
||||
{
|
||||
rk29_mux_api_set(GPIO1C1_UART0RTSN_SDMMC1WRITEPRT_NAME, GPIO1H_GPIO1C1);
|
||||
rk29_mux_api_set(GPIO1C0_UART0CTSN_SDMMC1DETECTN_NAME, GPIO1H_GPIO1C0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sc8800_io_deinit(void)
|
||||
{
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct plat_sc8800 sc8800_plat_data = {
|
||||
.slav_rts_pin = RK29_PIN1_PC1,
|
||||
.slav_rdy_pin = RK29_PIN0_PA3,
|
||||
.master_rts_pin = RK29_PIN1_PC0,
|
||||
.master_rdy_pin = RK29_PIN0_PA2,
|
||||
//.poll_time = 100,
|
||||
.io_init = sc8800_io_init,
|
||||
.io_deinit = sc8800_io_deinit,
|
||||
};
|
||||
#endif
|
||||
/*
|
||||
|
||||
@@ -49,6 +49,15 @@
|
||||
#if defined(CONFIG_BACKLIGHT_AW9364)
|
||||
#include "../../../drivers/video/backlight/aw9364_bl.h"
|
||||
#endif
|
||||
#if defined(CONFIG_RK29_SC8800)
|
||||
#include "../../../drivers/tty/serial/sc8800.h"
|
||||
#endif
|
||||
#if defined(CONFIG_TDSC8800)
|
||||
#include <linux/mtk23d.h>
|
||||
#endif
|
||||
#if defined(CONFIG_SMS_SPI_ROCKCHIP)
|
||||
#include "../../../drivers/cmmb/siano/smsspiphy.h"
|
||||
#endif
|
||||
|
||||
|
||||
#define RK30_FB0_MEM_SIZE 8*SZ_1M
|
||||
@@ -379,7 +388,148 @@ struct goodix_platform_data goodix_info = {
|
||||
};
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_RK29_SC8800)
|
||||
static int sc8800_io_init(void)
|
||||
{
|
||||
rk30_mux_api_set(GPIO2B5_LCDC1DATA13_SMCADDR17_HSADCDATA8_NAME, GPIO2B_GPIO2B5);
|
||||
rk30_mux_api_set(GPIO2A2_LCDCDATA2_SMCADDR6_NAME, GPIO2A_GPIO2A2);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int sc8800_io_deinit(void)
|
||||
{
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static struct plat_sc8800 sc8800_plat_data = {
|
||||
.slav_rts_pin = RK30_PIN6_PA0,
|
||||
.slav_rdy_pin = RK30_PIN2_PB5,
|
||||
.master_rts_pin = RK30_PIN6_PA1,
|
||||
.master_rdy_pin = RK30_PIN2_PA2,
|
||||
//.poll_time = 100,
|
||||
.io_init = sc8800_io_init,
|
||||
.io_deinit = sc8800_io_deinit,
|
||||
};
|
||||
|
||||
static struct rk29xx_spi_chip sc8800_spi_chip = {
|
||||
//.poll_mode = 1,
|
||||
.enable_dma = 1,
|
||||
};
|
||||
|
||||
#endif
|
||||
#if defined(CONFIG_SMS_SPI_ROCKCHIP)
|
||||
#define CMMB_1186_SPIIRQ RK30_PIN4_PB7
|
||||
#define CMMB_1186_RESET RK30_PIN0_PD5
|
||||
|
||||
void cmmb_io_init_mux(void)
|
||||
{
|
||||
// rk30_mux_api_set(GPIO1A4_UART1SIN_SPI0CSN0_NAME,GPIO1A_GPIO1A4);
|
||||
|
||||
}
|
||||
void cmmb_io_set_for_pm(void)
|
||||
{
|
||||
printk("entering cmmb_io_set_for_pm\n");
|
||||
rk30_mux_api_set(GPIO0D5_I2S22CHSDO_SMCADDR1_NAME,GPIO0D_GPIO0D5);
|
||||
gpio_request(CMMB_1186_RESET, NULL);//cmmb reset pin
|
||||
gpio_direction_output(CMMB_1186_RESET,0);
|
||||
rk30_mux_api_set(GPIO1A4_UART1SIN_SPI0CSN0_NAME,GPIO1A_GPIO1A4);
|
||||
gpio_request(RK30_PIN1_PA4, NULL);//cmmb cs pin
|
||||
gpio_direction_input(RK30_PIN1_PA4);
|
||||
gpio_pull_updown(RK30_PIN1_PA4, 0);
|
||||
}
|
||||
|
||||
void cmmb_power_on_by_wm831x(void)
|
||||
{
|
||||
struct regulator *ldo;
|
||||
#if 0
|
||||
printk("entering cmmb_power_on_by_wm831x\n");
|
||||
|
||||
rk29_mux_api_set(GPIO1A3_EMMCDETECTN_SPI1CS1_NAME,GPIO1L_SPI0_CSN1);
|
||||
gpio_request(RK29_PIN6_PD2, NULL);
|
||||
gpio_direction_output(RK29_PIN6_PD2,0);
|
||||
mdelay(200);
|
||||
|
||||
ldo = regulator_get(NULL, "ldo8"); //cmmb
|
||||
regulator_set_voltage(ldo,1200000,1200000);
|
||||
regulator_set_suspend_voltage(ldo,1200000);
|
||||
regulator_enable(ldo);
|
||||
printk("%s set ldo8=%dmV end\n", __FUNCTION__, regulator_get_voltage(ldo));
|
||||
regulator_put(ldo);
|
||||
|
||||
ldo = regulator_get(NULL, "ldo9"); //cmmb
|
||||
regulator_set_voltage(ldo,3000000,3000000);
|
||||
regulator_set_suspend_voltage(ldo,3000000);
|
||||
regulator_enable(ldo);
|
||||
printk("%s set ldo9=%dmV end\n", __FUNCTION__, regulator_get_voltage(ldo));
|
||||
regulator_put(ldo);
|
||||
|
||||
mdelay(200);
|
||||
gpio_direction_output(RK29_PIN6_PD2,1);
|
||||
#endif
|
||||
}
|
||||
|
||||
void cmmb_power_down_by_wm831x(void)
|
||||
{
|
||||
struct regulator* ldo;
|
||||
#if 0
|
||||
printk("entering cmmb_power_down_by_wm831x\n");
|
||||
|
||||
ldo = regulator_get(NULL, "ldo8");
|
||||
regulator_set_voltage(ldo,0,0);
|
||||
regulator_disable(ldo);
|
||||
regulator_put(ldo);
|
||||
|
||||
ldo = regulator_get(NULL, "ldo9");
|
||||
regulator_set_voltage(ldo,0,0);
|
||||
regulator_disable(ldo);
|
||||
regulator_put(ldo);
|
||||
#endif
|
||||
}
|
||||
|
||||
static struct cmmb_io_def_s cmmb_io = {
|
||||
.cmmb_pw_en = INVALID_GPIO,
|
||||
.cmmb_pw_dwn = INVALID_GPIO,
|
||||
.cmmb_pw_rst = CMMB_1186_RESET,
|
||||
.cmmb_irq = CMMB_1186_SPIIRQ,
|
||||
.io_init_mux = cmmb_io_init_mux,
|
||||
.cmmb_io_pm = cmmb_io_set_for_pm,
|
||||
.cmmb_power_on = cmmb_power_on_by_wm831x,
|
||||
.cmmb_power_down = cmmb_power_down_by_wm831x
|
||||
};
|
||||
|
||||
static struct rk29xx_spi_chip cmb_spi_chip = {
|
||||
//.poll_mode = 1,
|
||||
.enable_dma = 1,
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
static struct spi_board_info board_spi_devices[] = {
|
||||
#if defined(CONFIG_RK29_SC8800)
|
||||
{
|
||||
.modalias = "sc8800",
|
||||
.bus_num = 1,
|
||||
.platform_data = &sc8800_plat_data,
|
||||
.max_speed_hz = 12*1000*1000,
|
||||
.chip_select = 0,
|
||||
.controller_data = &sc8800_spi_chip,
|
||||
},
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_SMS_SPI_ROCKCHIP)
|
||||
{
|
||||
.modalias = "siano1186",
|
||||
.chip_select = 0,
|
||||
.max_speed_hz = 12*1000*1000,
|
||||
.bus_num = 0,
|
||||
.irq =CMMB_1186_SPIIRQ,
|
||||
.platform_data = &cmmb_io,
|
||||
.controller_data = &cmb_spi_chip,
|
||||
},
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
/***********************************************************
|
||||
@@ -1121,6 +1271,39 @@ static struct platform_device rk29sdk_rfkill = {
|
||||
* the end of setting for SDMMC devices
|
||||
**************************************************************************************************/
|
||||
|
||||
/*************td modem sc8800 power control*************/
|
||||
|
||||
#if defined(CONFIG_TDSC8800)
|
||||
#define BP_VOL_PIN RK30_PIN6_PB2
|
||||
|
||||
static int tdsc8800_io_init(void)
|
||||
{
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int tdsc8800_io_deinit(void)
|
||||
{
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct rk2818_23d_data rk29_tdsc8800_info = {
|
||||
.io_init = tdsc8800_io_init,
|
||||
.io_deinit = tdsc8800_io_deinit,
|
||||
.bp_power = BP_VOL_PIN,
|
||||
.bp_power_active_low = 1,
|
||||
};
|
||||
struct platform_device rk29_device_tdsc8800 = {
|
||||
.name = "tdsc8800",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = &rk29_tdsc8800_info,
|
||||
}
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
static struct platform_device *devices[] __initdata = {
|
||||
#ifdef CONFIG_BACKLIGHT_RK29_BL
|
||||
&rk29_device_backlight,
|
||||
@@ -1149,6 +1332,10 @@ static struct platform_device *devices[] __initdata = {
|
||||
#ifdef CONFIG_BT
|
||||
&rk29sdk_rfkill,
|
||||
#endif
|
||||
#ifdef CONFIG_TDSC8800
|
||||
&rk29_device_tdsc8800
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
// i2c
|
||||
|
||||
@@ -41,6 +41,8 @@ struct plat_sc8800 {
|
||||
int master_rts_pin;
|
||||
int master_rdy_pin;
|
||||
int poll_time;
|
||||
int (*io_init)(void);
|
||||
int (*io_deinit)(void);
|
||||
};
|
||||
struct bp_head{
|
||||
u16 tag; //0x7e7f
|
||||
@@ -571,15 +573,16 @@ static int __devinit sc8800_probe(struct spi_device *spi)
|
||||
dev_err(sc8800->dev, "ERR: fail to setup spi\n");
|
||||
goto err_spi_setup;
|
||||
}
|
||||
|
||||
if(pdata && pdata->io_init)
|
||||
pdata->io_init();
|
||||
|
||||
sc8800->irq = gpio_to_irq(pdata->slav_rts_pin);
|
||||
sc8800->slav_rts = pdata->slav_rts_pin;
|
||||
sc8800->slav_rdy = pdata->slav_rdy_pin;
|
||||
sc8800->master_rts = pdata->master_rts_pin;
|
||||
sc8800->master_rdy = pdata->master_rdy_pin;
|
||||
|
||||
rk29_mux_api_set(GPIO1C1_UART0RTSN_SDMMC1WRITEPRT_NAME, GPIO1H_GPIO1C1);
|
||||
rk29_mux_api_set(GPIO1C0_UART0CTSN_SDMMC1DETECTN_NAME, GPIO1H_GPIO1C0);
|
||||
|
||||
ret = gpio_request(sc8800->slav_rts, "salv_rts");
|
||||
if(ret < 0){
|
||||
dev_err(sc8800->dev, "ERR: gpio request slav_rts[%d]\n", sc8800->slav_rts);
|
||||
|
||||
@@ -17,6 +17,8 @@ struct plat_sc8800 {
|
||||
int master_rts_pin;
|
||||
int master_rdy_pin;
|
||||
int poll_time;
|
||||
int (*io_init)(void);
|
||||
int (*io_deinit)(void);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user