Merge "Added jactive support" into cm-11.0

This commit is contained in:
Dan Pasanen 2014-09-16 23:30:59 +00:00 committed by Gerrit Code Review
commit 0d2f847d93
30 changed files with 16535 additions and 8052 deletions

File diff suppressed because it is too large Load Diff

View File

@ -81,7 +81,11 @@ static struct gpiomux_setting cam_settings[] = {
{
.func = GPIOMUX_FUNC_1, /*active 1*/
#if defined(CONFIG_MACH_JACTIVE_EUR)
.drv = GPIOMUX_DRV_4MA,
#else
.drv = GPIOMUX_DRV_2MA,
#endif
.pull = GPIOMUX_PULL_NONE,
.dir = GPIOMUX_OUT_LOW,
},
@ -89,7 +93,11 @@ static struct gpiomux_setting cam_settings[] = {
{
.func = GPIOMUX_FUNC_GPIO, /*active 2*/
.drv = GPIOMUX_DRV_2MA,
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
.pull = GPIOMUX_PULL_DOWN,
#else
.pull = GPIOMUX_PULL_NONE,
#endif
},
{
@ -145,7 +153,11 @@ static struct gpiomux_setting cam_settings[] = {
},
{
.func = GPIOMUX_FUNC_4, /*active 12*/
#if defined(CONFIG_MACH_JACTIVE_EUR)
.drv = GPIOMUX_DRV_4MA,
#else
.drv = GPIOMUX_DRV_2MA,
#endif
.pull = GPIOMUX_PULL_NONE,
.dir = GPIOMUX_OUT_LOW,
},

View File

@ -387,6 +387,9 @@ static bool oled_power_on;
/* [junesok] Power on for samsung oled */
#if defined(CONFIG_MACH_JACTIVE_EUR)
#define LCD_22V_EN 33
#if defined(CONFIG_FB_MSM_ENABLE_LCD_EN2)
#define LCD_22V_EN_2 20
#endif
#define PMIC_GPIO_LED_DRIVER 31
#elif defined(CONFIG_MACH_JACTIVE_ATT)
#define LCD_22V_EN 33
@ -556,6 +559,21 @@ static int mipi_dsi_power_tft_request(void)
pr_info("[lcd] configure LCD_22V_EN\n");
gpio_tlmm_config(GPIO_CFG(LCD_22V_EN, 0, GPIO_CFG_OUTPUT,
GPIO_CFG_NO_PULL, GPIO_CFG_2MA), GPIO_CFG_ENABLE);
#if defined(CONFIG_FB_MSM_ENABLE_LCD_EN2)
if( system_rev >= 16 ) // rev0.6 + 10
{
pr_info("[lcd] request gpio lcd_22v_en_2\n");
rc = gpio_request(LCD_22V_EN_2, "lcd_22v_en_2");
if (rc) {
pr_err("request gpio lcd_22v_en_2 failed, rc=%d\n", rc);
return -ENODEV;
}
pr_info("[lcd] configure LCD_22V_EN_2\n");
gpio_tlmm_config(GPIO_CFG(LCD_22V_EN_2, 0, GPIO_CFG_OUTPUT,
GPIO_CFG_NO_PULL, GPIO_CFG_2MA), GPIO_CFG_ENABLE);
}
#endif
#endif
if (system_rev == 0) {
@ -595,6 +613,7 @@ static int mipi_dsi_power_tft_request(void)
pr_err("gpio_config led_dirver failed (3), rc=%d\n", rc);
return -EINVAL;
}
#if !defined(CONFIG_MACH_JACTIVE_ATT) && !defined(CONFIG_MACH_JACTIVE_EUR)
#if defined(CONFIG_MACH_JACTIVE_ATT)
if(system_rev < 10)
gpio_direction_output(gpio33, 0);
@ -611,15 +630,26 @@ static int mipi_dsi_power_tft_request(void)
&MLCD_RESET_LOW_CONFIG);
msleep(1000);
#endif
gpio_direction_output(gpio27, 0);
return rc;
}
#if defined(CONFIG_MACH_JACTIVE_ATT)
static int first_boot = 0;
#endif
static int mipi_panel_power_tft(int enable)
{
int rc = 0;
#if defined(CONFIG_MACH_JACTIVE_ATT)
if(first_boot < 2) {
first_boot++;
printk("<0> First init Occurred ..... Finished Successfully \n");
return 0;
}
#endif
pr_info("%s %d", __func__, enable);
if (enable) {
@ -667,8 +697,16 @@ static int mipi_panel_power_tft(int enable)
gpio_direction_output(LCD_22V_EN, 1);
#else
gpio_direction_output(LCD_22V_EN, 1);
#if defined(CONFIG_FB_MSM_ENABLE_LCD_EN2)
if( system_rev >= 16 ) // rev0.6 + 10
{
mdelay(10);
gpio_direction_output(LCD_22V_EN_2, 1);
}
#endif
#endif
#if !defined(CONFIG_MACH_JACTIVE_ATT) && !defined(CONFIG_MACH_JACTIVE_EUR)
/*active_reset_ldi(gpio43);*/
if (system_rev == 0)
gpio_direction_output(gpio43, 1);
@ -677,8 +715,9 @@ static int mipi_panel_power_tft(int enable)
PM8921_MPP_PM_TO_SYS(MLCD_RST_MPP2),
&MLCD_RESET_HIGH_CONFIG);
msleep(20);
msleep(20);
#endif
#if defined(CONFIG_MACH_JACTIVE_EUR)
if( system_rev >= 15 ) // rev0.5 + 10
{
@ -726,6 +765,13 @@ static int mipi_panel_power_tft(int enable)
else
gpio_direction_output(LCD_22V_EN, 0);
#else
#if defined(CONFIG_FB_MSM_ENABLE_LCD_EN2)
if( system_rev >= 16 ) // rev0.6 + 10
{
gpio_direction_output(LCD_22V_EN_2, 0);
mdelay(10);
}
#endif
gpio_direction_output(LCD_22V_EN, 0);
#endif
usleep(2000); /*1ms delay(minimum) required between VDD off and AVDD off*/

View File

@ -735,6 +735,21 @@ sec_battery_platform_data_t sec_battery_pdata = {
.temp_high_recovery_lpm = 430,
.temp_low_threshold_lpm = -30,
.temp_low_recovery_lpm = 0,
#elif defined(CONFIG_MACH_JACTIVE_EUR)
.temp_high_threshold_event = 600,
.temp_high_recovery_event = 400,
.temp_low_threshold_event = -50,
.temp_low_recovery_event = 0,
.temp_high_threshold_normal = 600,
.temp_high_recovery_normal = 400,
.temp_low_threshold_normal = -50,
.temp_low_recovery_normal = 0,
.temp_high_threshold_lpm = 600,
.temp_high_recovery_lpm = 400,
.temp_low_threshold_lpm = -50,
.temp_low_recovery_lpm = 0,
#elif defined(CONFIG_MACH_JF_CRI)
.temp_high_threshold_event = 600,
.temp_high_recovery_event = 450,

126
arch/arm/mach-msm/board-jactive_att-gpiomux.c Normal file → Executable file
View File

@ -27,14 +27,12 @@
#include "board-8064.h"
#include <mach/apq8064-gpio.h>
#if 0
/* The SPI configurations apply to GSBI 5*/
static struct gpiomux_setting gpio_spi_config = {
.func = GPIOMUX_FUNC_2,
.drv = GPIOMUX_DRV_12MA,
.pull = GPIOMUX_PULL_DOWN,
};
#endif
#if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE)
static struct gpiomux_setting gpio_eth_config = {
@ -336,6 +334,13 @@ struct msm_gpiomux_config vcap_configs[] = {
};
#endif
static struct gpiomux_setting gpio_nc_config = {
.func = GPIOMUX_FUNC_GPIO,
.drv = GPIOMUX_DRV_2MA,
.pull = GPIOMUX_PULL_DOWN,
};
/*
static struct gpiomux_setting gpio_i2c_config = {
.func = GPIOMUX_FUNC_1,
.drv = GPIOMUX_DRV_8MA,
@ -347,6 +352,7 @@ static struct gpiomux_setting gpio_i2c_config_sus = {
.drv = GPIOMUX_DRV_2MA,
.pull = GPIOMUX_PULL_KEEPER,
};
*/
static struct gpiomux_setting mbhc_hs_detect = {
.func = GPIOMUX_FUNC_1,
@ -517,13 +523,6 @@ static struct msm_gpiomux_config cyts_gpio_configs[] __initdata = {
[GPIOMUX_SUSPENDED] = &cyts_int_sus_cfg,
},
},
{ /* TS SLEEP */
.gpio = 33,
.settings = {
[GPIOMUX_ACTIVE] = &cyts_sleep_act_cfg,
[GPIOMUX_SUSPENDED] = &cyts_sleep_sus_cfg,
},
},
};
static struct msm_gpiomux_config cyts_gpio_alt_config[] __initdata = {
{ /* TS INTERRUPT */
@ -741,20 +740,6 @@ static struct msm_gpiomux_config apq8064_gsbi_configs[] __initdata = {
[GPIOMUX_SUSPENDED] = &gsbi1_uart_config,
},
},
{
.gpio = 21, /* GSBI1 QUP I2C_CLK */
.settings = {
[GPIOMUX_SUSPENDED] = &gpio_i2c_config_sus,
[GPIOMUX_ACTIVE] = &gpio_i2c_config,
},
},
{
.gpio = 20, /* GSBI1 QUP I2C_DATA */
.settings = {
[GPIOMUX_SUSPENDED] = &gpio_i2c_config_sus,
[GPIOMUX_ACTIVE] = &gpio_i2c_config,
},
},
{
.gpio = 24, /* GSBI2 I2C QUP SDA */
.settings = {
@ -772,29 +757,29 @@ static struct msm_gpiomux_config apq8064_gsbi_configs[] __initdata = {
{
.gpio = 51, /* GSBI5 QUP SPI_DATA_MOSI */
.settings = {
[GPIOMUX_SUSPENDED] = &gsbi5_suspended_cfg,
[GPIOMUX_ACTIVE] = &gsbi5_active_cfg,
[GPIOMUX_SUSPENDED] = &gpio_spi_config,
[GPIOMUX_ACTIVE] = &gpio_spi_config,
},
},
{
.gpio = 52, /* GSBI5 QUP SPI_DATA_MISO */
.settings = {
[GPIOMUX_SUSPENDED] = &gsbi5_suspended_cfg,
[GPIOMUX_ACTIVE] = &gsbi5_active_cfg,
[GPIOMUX_SUSPENDED] = &gpio_spi_config,
[GPIOMUX_ACTIVE] = &gpio_spi_config,
},
},
{
.gpio = 53, /* Funny CS0 */
.settings = {
[GPIOMUX_SUSPENDED] = &gsbi5_suspended_cfg,
[GPIOMUX_ACTIVE] = &gsbi5_active_cfg,
[GPIOMUX_SUSPENDED] = &gpio_spi_config,
[GPIOMUX_ACTIVE] = &gpio_spi_config,
},
},
{
.gpio = 54, /* GSBI5 QUP SPI_CLK */
.settings = {
[GPIOMUX_SUSPENDED] = &gsbi5_suspended_cfg,
[GPIOMUX_ACTIVE] = &gsbi5_active_cfg,
[GPIOMUX_SUSPENDED] = &gpio_spi_config,
[GPIOMUX_ACTIVE] = &gpio_spi_config,
},
},
#if !defined(CONFIG_USB_EHCI_MSM_HSIC)
@ -819,6 +804,50 @@ static struct msm_gpiomux_config apq8064_gsbi_configs[] __initdata = {
},
};
static struct msm_gpiomux_config apq8064_nc_configs[] __initdata = {
{
.gpio = 20,
.settings = {
[GPIOMUX_SUSPENDED] = &gpio_nc_config,
},
},
{
.gpio = 21,
.settings = {
[GPIOMUX_SUSPENDED] = &gpio_nc_config,
},
},
{
.gpio = 29,
.settings = {
[GPIOMUX_SUSPENDED] = &gpio_nc_config,
},
},
};
static struct msm_gpiomux_config apq8064_nc_configs_rev05[] __initdata = {
#if !defined(CONFIG_FB_MSM_ENABLE_LCD_EN2)
{
.gpio = 20,
.settings = {
[GPIOMUX_SUSPENDED] = &gpio_nc_config,
},
},
#endif
{
.gpio = 21,
.settings = {
[GPIOMUX_SUSPENDED] = &gpio_nc_config,
},
},
{
.gpio = 29,
.settings = {
[GPIOMUX_SUSPENDED] = &gpio_nc_config,
},
},
};
static struct msm_gpiomux_config apq8064_slimbus_config[] __initdata = {
{
.gpio = 40, /* slimbus clk */
@ -1478,7 +1507,7 @@ static struct msm_gpiomux_config sx150x_int_configs[] __initdata = {
static struct gpiomux_setting sd_det_line = {
.func = GPIOMUX_FUNC_GPIO,
.drv = GPIOMUX_DRV_2MA,
.pull = GPIOMUX_PULL_UP,
.pull = GPIOMUX_PULL_NONE,
.dir = GPIOMUX_IN,
};
@ -1492,6 +1521,25 @@ static struct msm_gpiomux_config msm8064_sd_det_config[] = {
},
};
#ifdef CONFIG_MMC_MSM_SDC4_SUPPORT
static struct gpiomux_setting ls_en_suspended_cfg = {
.func = GPIOMUX_FUNC_GPIO,
.pull = GPIOMUX_PULL_NONE,
.dir = GPIOMUX_OUT_LOW,
};
static struct msm_gpiomux_config msm8064_ls_en_config[] = {
{
.gpio = 64, /* Level Shifter Enable */
.settings = {
[GPIOMUX_SUSPENDED] = &ls_en_suspended_cfg,
},
},
};
#endif
#if defined(CONFIG_LEDS_AN30259A)
static struct gpiomux_setting leds_active_cfg = {
.func = GPIOMUX_FUNC_GPIO,
@ -1745,6 +1793,9 @@ void __init apq8064_init_gpiomux(void)
else
msm_gpiomux_install(sdc2_interface,
ARRAY_SIZE(sdc2_interface));
msm_gpiomux_install(msm8064_ls_en_config,
ARRAY_SIZE(msm8064_ls_en_config));
#else
msm_gpiomux_install(wcnss_5wire_interface,
ARRAY_SIZE(wcnss_5wire_interface));
@ -1769,6 +1820,17 @@ void __init apq8064_init_gpiomux(void)
msm_gpiomux_install(apq8064_gsbi_configs,
ARRAY_SIZE(apq8064_gsbi_configs));
}
if( system_rev >= 13 ) // rev0.5 + 8
{
msm_gpiomux_install(apq8064_nc_configs_rev05,
ARRAY_SIZE(apq8064_nc_configs_rev05));
}
else
{
msm_gpiomux_install(apq8064_nc_configs,
ARRAY_SIZE(apq8064_nc_configs));
}
msm_gpiomux_install(sensorhub_configs,
ARRAY_SIZE(sensorhub_configs));

54
arch/arm/mach-msm/board-jactive_att.c Normal file → Executable file
View File

@ -1009,23 +1009,8 @@ static void __init reserve_ion_memory(void)
}
#ifdef CONFIG_ANDROID_RAM_CONSOLE
static char bootreason[128] = {0,};
int __init device_boot_reason(char *s)
{
int n;
if (*s == '=')
s++;
n = snprintf(bootreason, sizeof(bootreason),
"Boot info:\n"
"Last boot reason: %s\n", s);
bootreason[n] = '\0';
return 1;
}
__setup("bootreason", device_boot_reason);
static struct ram_console_platform_data ram_console_pdata = {
.bootinfo = bootreason,
.bootinfo = NULL,
};
static struct platform_device ram_console_device = {
@ -1239,6 +1224,7 @@ static void __init apq8064_reserve(void)
static void __init apq8064_early_reserve(void)
{
reserve_info = &apq8064_reserve_info;
}
#ifdef CONFIG_USB_EHCI_MSM_HSIC
/* Bandwidth requests (zero) if no vote placed */
@ -3460,6 +3446,7 @@ static uint8_t spm_power_collapse_with_rpm_krait_v3[] __initdata = {
0x24, 0x30, 0x0f,
};
static struct msm_spm_seq_entry msm_spm_boot_cpu_seq_list[] __initdata = {
[0] = {
.mode = MSM_SPM_MODE_CLOCK_GATING,
@ -4009,8 +3996,9 @@ static struct platform_device *common_devices[] __initdata = {
&apq8064_device_hsusb_host,
&android_usb_device,
&msm_device_wcnss_wlan,
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
&apq8064_device_qup_spi_gsbi5,
&apq8064_device_qup_spi_gsbi5, // Fortius AF
#if 0
&msm8930_device_qup_spi_gsbi1,
#endif
&msm_device_iris_fm,
&apq8064_fmem_device,
@ -4164,6 +4152,7 @@ static struct platform_device *cdp_devices[] __initdata = {
#ifdef CONFIG_MSM_ROTATOR
&msm_rotator_device,
#endif
&msm8064_pc_cntr,
&msm8064_cpu_slp_status,
&sec_device_jack,
#ifdef CONFIG_SENSORS_SSP_C12SD
@ -5066,7 +5055,6 @@ static void __init register_i2c_devices(void)
apq8064_camera_board_info.board_info,
apq8064_camera_board_info.num_i2c_board_info,
};
struct i2c_registry apq8064_front_camera_i2c_devices = {
I2C_SURF | I2C_FFA | I2C_LIQUID | I2C_RUMI,
APQ_8064_GSBI7_QUP_I2C_BUS_ID,
@ -5114,6 +5102,7 @@ static void __init register_i2c_devices(void)
}
}
static void enable_avc_i2c_bus(void)
{
int avc_i2c_en_mpp = PM8921_MPP_PM_TO_SYS(8);
@ -5318,12 +5307,11 @@ static void __init apq8064_common_init(void)
if (cpu_is_apq8064ab())
apq8064ab_update_krait_spm();
if (cpu_is_krait_v3()) {
struct msm_pm_init_data_type *pdata =
msm8064_pm_8x60.dev.platform_data;
pdata->retention_calls_tz = false;
msm_pm_set_tz_retention_flag(0);
apq8064ab_update_retention_spm();
} else {
msm_pm_set_tz_retention_flag(1);
}
platform_device_register(&msm8064_pm_8x60);
msm_spm_init(msm_spm_data, ARRAY_SIZE(msm_spm_data));
msm_spm_l2_init(msm_spm_l2_data);
msm_tsens_early_init(&apq_tsens_pdata);
@ -5381,13 +5369,8 @@ static void __init apq8064_common_init(void)
}
}
rpmrs_level =
msm_rpmrs_levels[MSM_PM_SLEEP_MODE_WAIT_FOR_INTERRUPT];
msm_hsic_pdata.swfi_latency = rpmrs_level.latency_us;
rpmrs_level =
msm_rpmrs_levels[MSM_PM_SLEEP_MODE_POWER_COLLAPSE_STANDALONE];
msm_hsic_pdata.standalone_latency = rpmrs_level.latency_us;
msm_hsic_pdata.swfi_latency =
msm_rpmrs_levels[0].latency_us;
if (machine_is_apq8064_mtp() || machine_is_JF()) {
msm_hsic_pdata.log2_irq_thresh = 5,
apq8064_device_hsic_host.dev.platform_data = &msm_hsic_pdata;
@ -5573,17 +5556,6 @@ static void __init samsung_jf_init(void)
#if defined(CONFIG_BATTERY_SAMSUNG)
msm8960_init_battery();
#endif
if (machine_is_mpq8064_hrd() || machine_is_mpq8064_dtv()) {
#ifdef CONFIG_SERIAL_MSM_HS
/* GSBI6(2) - UARTDM_RX */
mpq8064_gsbi6_uartdm_pdata.wakeup_irq = gpio_to_irq(15);
mpq8064_device_uartdm_gsbi6.dev.platform_data =
&mpq8064_gsbi6_uartdm_pdata;
#endif
platform_device_register(&mpq8064_device_uartdm_gsbi6);
}
#ifdef CONFIG_SENSORS_SSP
clear_ssp_gpio();
sensor_power_on_vdd(SNS_PWR_ON, SNS_PWR_ON);

199
arch/arm/mach-msm/board-jactive_eur-gpiomux.c Normal file → Executable file
View File

@ -27,14 +27,76 @@
#include "board-8064.h"
#include <mach/apq8064-gpio.h>
#if 0
/* The SPI configurations apply to GSBI 5*/
static struct gpiomux_setting gpio_spi_config = {
.func = GPIOMUX_FUNC_2,
.drv = GPIOMUX_DRV_12MA,
.pull = GPIOMUX_PULL_DOWN,
};
static struct gpiomux_setting nc_init_cfg = {
.func = GPIOMUX_FUNC_GPIO,
.drv = GPIOMUX_DRV_2MA,
.pull = GPIOMUX_PULL_DOWN,
.dir = GPIOMUX_IN,
};
static struct gpiomux_setting nc_sleep_cfg = {
.func = GPIOMUX_FUNC_GPIO,
.drv = GPIOMUX_DRV_2MA,
.pull = GPIOMUX_PULL_DOWN,
.dir = GPIOMUX_IN,
};
static struct msm_gpiomux_config apq8064_nc_config[] __initdata = {
{
.gpio = 20,
.settings = {
[GPIOMUX_ACTIVE] = &nc_init_cfg,
[GPIOMUX_SUSPENDED] = &nc_sleep_cfg,
},
},
{
.gpio = 21,
.settings = {
[GPIOMUX_ACTIVE] = &nc_init_cfg,
[GPIOMUX_SUSPENDED] = &nc_sleep_cfg,
},
},
{
.gpio = 29,
.settings = {
[GPIOMUX_ACTIVE] = &nc_init_cfg,
[GPIOMUX_SUSPENDED] = &nc_sleep_cfg,
},
},
};
static struct msm_gpiomux_config apq8064_nc_config_rev06[] __initdata = {
#if !defined(CONFIG_FB_MSM_ENABLE_LCD_EN2)
{
.gpio = 20,
.settings = {
[GPIOMUX_ACTIVE] = &nc_init_cfg,
[GPIOMUX_SUSPENDED] = &nc_sleep_cfg,
},
},
#endif
{
.gpio = 21,
.settings = {
[GPIOMUX_ACTIVE] = &nc_init_cfg,
[GPIOMUX_SUSPENDED] = &nc_sleep_cfg,
},
},
{
.gpio = 29,
.settings = {
[GPIOMUX_ACTIVE] = &nc_init_cfg,
[GPIOMUX_SUSPENDED] = &nc_sleep_cfg,
},
},
};
#if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE)
static struct gpiomux_setting gpio_eth_config = {
@ -144,13 +206,7 @@ static struct gpiomux_setting gpio_vcap_config[] = {
};
struct msm_gpiomux_config vcap_configs[] = {
{
.gpio = 20,
.settings = {
[GPIOMUX_SUSPENDED] = &gpio_vcap_config[7],
[GPIOMUX_ACTIVE] = &gpio_vcap_config[7],
}
},
{
.gpio = 25,
.settings = {
@ -418,9 +474,9 @@ static struct gpiomux_setting gsbi7_func2_cfg = {
};
static struct gpiomux_setting gsbi3_suspended_cfg = {
.func = GPIOMUX_FUNC_1,
.func = GPIOMUX_FUNC_GPIO,
.drv = GPIOMUX_DRV_2MA,
.pull = GPIOMUX_PULL_KEEPER,
.pull = GPIOMUX_PULL_DOWN,
};
static struct gpiomux_setting gsbi3_active_cfg = {
@ -697,13 +753,7 @@ static struct msm_gpiomux_config apq8064_gsbi_configs[] __initdata = {
[GPIOMUX_ACTIVE] = &gpio_i2c_config,
},
},
{
.gpio = 20, /* GSBI1 QUP I2C_DATA */
.settings = {
[GPIOMUX_SUSPENDED] = &gpio_i2c_config_sus,
[GPIOMUX_ACTIVE] = &gpio_i2c_config,
},
},
{
.gpio = 24, /* GSBI2 I2C QUP SDA */
.settings = {
@ -721,29 +771,29 @@ static struct msm_gpiomux_config apq8064_gsbi_configs[] __initdata = {
{
.gpio = 51, /* GSBI5 QUP SPI_DATA_MOSI */
.settings = {
[GPIOMUX_SUSPENDED] = &gsbi5_suspended_cfg,
[GPIOMUX_ACTIVE] = &gsbi5_active_cfg,
[GPIOMUX_SUSPENDED] = &gpio_spi_config,
[GPIOMUX_ACTIVE] = &gpio_spi_config,
},
},
{
.gpio = 52, /* GSBI5 QUP SPI_DATA_MISO */
.settings = {
[GPIOMUX_SUSPENDED] = &gsbi5_suspended_cfg,
[GPIOMUX_ACTIVE] = &gsbi5_active_cfg,
[GPIOMUX_SUSPENDED] = &gpio_spi_config,
[GPIOMUX_ACTIVE] = &gpio_spi_config,
},
},
{
.gpio = 53, /* Funny CS0 */
.settings = {
[GPIOMUX_SUSPENDED] = &gsbi5_suspended_cfg,
[GPIOMUX_ACTIVE] = &gsbi5_active_cfg,
[GPIOMUX_SUSPENDED] = &gpio_spi_config,
[GPIOMUX_ACTIVE] = &gpio_spi_config,
},
},
{
.gpio = 54, /* GSBI5 QUP SPI_CLK */
.settings = {
[GPIOMUX_SUSPENDED] = &gsbi5_suspended_cfg,
[GPIOMUX_ACTIVE] = &gsbi5_active_cfg,
[GPIOMUX_SUSPENDED] = &gpio_spi_config,
[GPIOMUX_ACTIVE] = &gpio_spi_config,
},
},
#if !defined(CONFIG_USB_EHCI_MSM_HSIC)
@ -1301,7 +1351,7 @@ static struct msm_gpiomux_config sx150x_int_configs[] __initdata = {
static struct gpiomux_setting sd_det_line = {
.func = GPIOMUX_FUNC_GPIO,
.drv = GPIOMUX_DRV_2MA,
.pull = GPIOMUX_PULL_UP,
.pull = GPIOMUX_PULL_NONE,
.dir = GPIOMUX_IN,
};
@ -1345,6 +1395,29 @@ static struct msm_gpiomux_config apq8064_leds_configs[] __initdata = {
};
#endif
#ifdef CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI
static struct gpiomux_setting touch_irq_init_state = {
.func = GPIOMUX_FUNC_GPIO,
.drv = GPIOMUX_DRV_2MA,
.pull = GPIOMUX_PULL_DOWN,
};
static struct gpiomux_setting touch_irq_sleep_state = {
.func = GPIOMUX_FUNC_GPIO,
.drv = GPIOMUX_DRV_2MA,
.pull = GPIOMUX_PULL_DOWN,
};
static struct msm_gpiomux_config apq8064_touch_irq_config[] = {
{
.gpio = 67, /* touch_irq__config */
.settings = {
[GPIOMUX_SUSPENDED] = &touch_irq_sleep_state,
[GPIOMUX_ACTIVE] = &touch_irq_init_state,
},
},
};
#endif
#ifdef CONFIG_MFD_MAX77693
static struct gpiomux_setting muic_init_cfg = {
.func = GPIOMUX_FUNC_GPIO,
@ -1370,6 +1443,56 @@ static struct msm_gpiomux_config apq8064_muic_config[] __initdata = {
},
};
#endif
#ifdef CONFIG_SAMSUNG_JACK
static struct gpiomux_setting apq8064_sec_jack_cfg = {
.func = GPIOMUX_FUNC_GPIO,
.drv = GPIOMUX_DRV_2MA,
.pull = GPIOMUX_PULL_NONE,
};
static struct msm_gpiomux_config apq8064_sec_jack_configs[] __initdata = {
{
.gpio = 81,
.settings = {
[GPIOMUX_SUSPENDED] = &apq8064_sec_jack_cfg,
[GPIOMUX_ACTIVE] = &apq8064_sec_jack_cfg,
},
},
};
#endif
static struct gpiomux_setting auxpcm_sleep_cfg = {
.func = GPIOMUX_FUNC_GPIO,
.drv = GPIOMUX_DRV_2MA,
.pull = GPIOMUX_PULL_DOWN,
.dir = GPIOMUX_IN,
};
static struct msm_gpiomux_config apq8064_auxpcm_configs[] __initdata = {
{
.gpio = 43, /* AUX_PCM_DOUT */
.settings = {
[GPIOMUX_SUSPENDED] = &auxpcm_sleep_cfg,
}
},
{
.gpio = 44, /* AUX_PCM_DIN */
.settings = {
[GPIOMUX_SUSPENDED] = &auxpcm_sleep_cfg,
}
},
{
.gpio = 45, /* AUX_PCM_SYNC */
.settings = {
[GPIOMUX_SUSPENDED] = &auxpcm_sleep_cfg,
}
},
{
.gpio = 46, /* AUX_PCM_CLK */
.settings = {
[GPIOMUX_SUSPENDED] = &auxpcm_sleep_cfg,
}
},
};
void __init apq8064_init_gpiomux(void)
{
int rc;
@ -1430,6 +1553,9 @@ void __init apq8064_init_gpiomux(void)
pr_debug("%s(): audio-auxpcm: Include GPIO configs"
" as audio is not the primary user"
" for these GPIO Pins\n", __func__);
msm_gpiomux_install(apq8064_auxpcm_configs,
ARRAY_SIZE(apq8064_auxpcm_configs));
if (machine_is_mpq8064_cdp() || machine_is_mpq8064_hrd() ||
machine_is_mpq8064_dtv())
@ -1474,8 +1600,29 @@ void __init apq8064_init_gpiomux(void)
msm_gpiomux_install(apq8064_leds_configs,
ARRAY_SIZE(apq8064_leds_configs));
#endif
#ifdef CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI
printk(KERN_INFO "%s: config touch_irq config.\n",__func__);
msm_gpiomux_install(apq8064_touch_irq_config,
ARRAY_SIZE(apq8064_touch_irq_config));
#endif
#ifdef CONFIG_MFD_MAX77693
msm_gpiomux_install(apq8064_muic_config,
ARRAY_SIZE(apq8064_muic_config));
#endif
#if defined (CONFIG_MACH_JACTIVE_EUR)
if( system_rev >= 16 ) // rev0.6 + 10
{
msm_gpiomux_install(apq8064_nc_config_rev06,
ARRAY_SIZE(apq8064_nc_config_rev06));
}
else
{
msm_gpiomux_install(apq8064_nc_config,
ARRAY_SIZE(apq8064_nc_config));
}
#ifdef CONFIG_SAMSUNG_JACK
msm_gpiomux_install(apq8064_sec_jack_configs,
ARRAY_SIZE(apq8064_sec_jack_configs));
#endif
#endif
}

View File

@ -3312,6 +3312,11 @@ static uint8_t spm_power_collapse_without_rpm[] __initdata = {
0x24, 0x30, 0x0f,
};
static uint8_t spm_retention_cmd_sequence[] __initdata = {
0x00, 0x05, 0x03, 0x0D,
0x0B, 0x00, 0x0f,
};
static uint8_t spm_retention_with_krait_v3_cmd_sequence[] __initdata = {
0x42, 0x1B, 0x00,
0x05, 0x03, 0x0D, 0x0B,

View File

@ -195,6 +195,9 @@ static struct synaptics_rmi4_platform_data rmi4_platformdata = {
#ifdef CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_VIDEO_FULL_HD_PT_PANEL
.tout1_on = touch_tout1_on,
#endif
#if defined(CONFIG_TOUCHSCREEN_SYNAPTICS_PREVENT_HSYNC_LEAKAGE)
.hsync_onoff = lcd_hsync_onoff,
#endif
};
static struct i2c_board_info bus2_i2c_devices[] = {

View File

@ -509,6 +509,13 @@ config TOUCHSCREEN_SYNAPTICS_RMI4_I2C
help
This enables support for Synaptics RMI over I2C based touchscreens(ClearPad 3000).
config TOUCHSCREEN_SYNAPTICS_PREVENT_HSYNC_LEAKAGE
bool "Synaptics prevent leakage i2c due to hsync"
default n
help
There is leakage current on TSP I2C by HW defect. TSP I2C Failed.
So To prevent leakage, hsync off, tsp on, hsync on.
config SYNA_MULTI_TOUCH
tristate "Synaptics i2c touchscreen(ClearPad 3000) MutilTouch support"
depends on TOUCHSCREEN_SYNAPTICS_RMI4_I2C

View File

@ -81,8 +81,9 @@
#define STATUS_POLLING_PERIOD_US 3000
#if defined(CONFIG_MACH_JACTIVE_EUR) || defined(CONFIG_MACH_JACTIVE_ATT)
#define FW_SUPPORT_HYNC(x) ((strncmp(x->product_id, "SY 03", 5))
#define FW_NOT_SUPPORT_HYNC(x) ((strncmp(x->product_id, "SY 01", 5) == 0) || (strncmp(x->product_id, "S5000B", 6) == 0) || (strncmp(x->product_id, "SY 02", 5) == 0))
#define FW_SUPPORT_HSYNC03(x) (strncmp(x->product_id, "SY 03", 5) == 0)
#define FW_SUPPORT_HSYNC04(x) ((strncmp(x->product_id, "SY 04", 5) == 0)|| (strncmp(x->product_id, "S5000B", 6) == 0))
#define FW_NOT_SUPPORT_HSYNC(x) ((strncmp(x->product_id, "SY 01", 5) == 0) || (strncmp(x->product_id, "SY 02", 5) == 0))
#endif
static ssize_t fwu_sysfs_show_image(struct file *data_file,
@ -967,24 +968,31 @@ static int fwu_start_reflash(bool mode, bool factory_fw)
dev_info(&fwu->rmi4_data->i2c_client->dev,
"%s: run fw update for FACTORY FIRMWARE\n",
__func__);
if (FW_NOT_SUPPORT_HYNC(fwu))
if (FW_NOT_SUPPORT_HSYNC(fwu))
snprintf(fw_path, SYNAPTICS_MAX_FW_PATH,
"%s", FW_IMAGE_NAME_B0_NON_HSYNC_FAC);
else
else if (FW_SUPPORT_HSYNC03(fwu))
snprintf(fw_path, SYNAPTICS_MAX_FW_PATH,
"%s", FW_IMAGE_NAME_B0_HSYNC_FAC);
else // FW_SUPPORT_HSYNC04(fwu)
snprintf(fw_path, SYNAPTICS_MAX_FW_PATH,
"%s", FW_IMAGE_NAME_B0_HSYNC04_FAC);
} else {
/* Read firmware according to ic revision */
if ((fwu->rmi4_data->ic_revision_of_ic >> 4) == 0xB) {
/* Read firmware according to panel ID */
switch (fwu->rmi4_data->panel_revision) {
case OCTA_PANEL_REVISION_34:
if (FW_NOT_SUPPORT_HYNC(fwu))
if (FW_NOT_SUPPORT_HSYNC(fwu))
snprintf(fw_path, SYNAPTICS_MAX_FW_PATH,
"%s", FW_IMAGE_NAME_B0_NON_HSYNC);
else
else if (FW_SUPPORT_HSYNC03(fwu)){
snprintf(fw_path, SYNAPTICS_MAX_FW_PATH,
"%s", FW_IMAGE_NAME_B0_HSYNC);
}
else // FW_SUPPORT_HSYNC04(fwu)
snprintf(fw_path, SYNAPTICS_MAX_FW_PATH,
"%s", FW_IMAGE_NAME_B0_HSYNC04);
break;
default:
dev_info(&fwu->rmi4_data->i2c_client->dev,

View File

@ -3492,6 +3492,9 @@ int synaptics_rmi4_reset_device(struct synaptics_rmi4_data *rmi4_data)
msleep(SYNAPTICS_HW_RESET_TIME);
} else {
#if defined(CONFIG_TOUCHSCREEN_SYNAPTICS_PREVENT_HSYNC_LEAKAGE)
rmi4_data->board->hsync_onoff(false);
#endif
rmi4_data->board->power(false);
msleep(30);
rmi4_data->board->power(true);
@ -3503,6 +3506,9 @@ int synaptics_rmi4_reset_device(struct synaptics_rmi4_data *rmi4_data)
else
msleep(SYNAPTICS_HW_RESET_TIME);
#if defined(CONFIG_TOUCHSCREEN_SYNAPTICS_PREVENT_HSYNC_LEAKAGE)
rmi4_data->board->hsync_onoff(true);
#endif
retval = synaptics_rmi4_f54_set_control(rmi4_data);
if (retval < 0)
dev_err(&rmi4_data->i2c_client->dev,
@ -3822,8 +3828,14 @@ static int __devinit synaptics_rmi4_probe(struct i2c_client *client,
/* define panel version : M4 / M4+ */
rmi4_data->panel_revision = rmi4_data->board->panel_revision;
#if defined(CONFIG_TOUCHSCREEN_SYNAPTICS_PREVENT_HSYNC_LEAKAGE)
rmi4_data->board->hsync_onoff(false);
#endif
rmi4_data->board->power(true);
#if defined(CONFIG_TOUCHSCREEN_SYNAPTICS_PREVENT_HSYNC_LEAKAGE)
rmi4_data->board->hsync_onoff(true);
#endif
rmi4_data->i2c_read = synaptics_rmi4_i2c_read;
rmi4_data->i2c_write = synaptics_rmi4_i2c_write;
rmi4_data->irq_enable = synaptics_rmi4_irq_enable;
@ -4126,9 +4138,15 @@ static int synaptics_rmi4_input_open(struct input_dev *dev)
if (rmi4_data->touch_stopped) {
#if defined(CONFIG_TOUCHSCREEN_SYNAPTICS_PREVENT_HSYNC_LEAKAGE)
rmi4_data->board->hsync_onoff(false);
#endif
rmi4_data->board->power(true);
rmi4_data->touch_stopped = false;
#if defined(CONFIG_TOUCHSCREEN_SYNAPTICS_PREVENT_HSYNC_LEAKAGE)
rmi4_data->board->hsync_onoff(true);
#endif
ret = synaptics_rmi4_reinit_device(rmi4_data);
if (ret < 0) {
dev_err(&rmi4_data->i2c_client->dev,
@ -4230,10 +4248,16 @@ static void synaptics_rmi4_late_resume(struct early_suspend *h)
if (rmi4_data->touch_stopped) {
dev_info(&rmi4_data->i2c_client->dev, "%s\n", __func__);
#if defined(CONFIG_TOUCHSCREEN_SYNAPTICS_PREVENT_HSYNC_LEAKAGE)
rmi4_data->board->hsync_onoff(false);
#endif
rmi4_data->board->power(true);
rmi4_data->touch_stopped = false;
rmi4_data->current_page = MASK_8BIT;
#if defined(CONFIG_TOUCHSCREEN_SYNAPTICS_PREVENT_HSYNC_LEAKAGE)
rmi4_data->board->hsync_onoff(true);
#endif
retval = gpio_request(rmi4_data->board->gpio, "tsp_int");
if (retval != 0) {
dev_info(&rmi4_data->i2c_client->dev, "%s: tsp int request failed, ret=%d", __func__, retval);

View File

@ -52,6 +52,8 @@
#if defined(CONFIG_MACH_JACTIVE_EUR) || defined(CONFIG_MACH_JACTIVE_ATT)
#define FW_IMAGE_NAME_B0_HSYNC "tsp_synaptics/jactive/synaptics_b0_hsync.fw"
#define FW_IMAGE_NAME_B0_HSYNC_FAC "tsp_synaptics/jactive/synaptics_b0_hsync_fac.fw"
#define FW_IMAGE_NAME_B0_HSYNC04 "tsp_synaptics/jactive/synaptics_b0_hsync04.fw"
#define FW_IMAGE_NAME_B0_HSYNC04_FAC "tsp_synaptics/jactive/synaptics_b0_hsync04_fac.fw"
/* NON HYNC F/W will be removed */
/* PRODUCT ID : SY 01, SY 02, S5000B */

View File

@ -527,6 +527,7 @@ static int32_t msm_actuator_init(struct msm_actuator_ctrl_t *a_ctrl,
a_ctrl->reg_tbl_size *
sizeof(struct msm_actuator_reg_params_t))) {
kfree(a_ctrl->i2c_reg_tbl);
a_ctrl->i2c_reg_tbl = NULL;
return -EFAULT;
}
@ -537,6 +538,7 @@ static int32_t msm_actuator_init(struct msm_actuator_ctrl_t *a_ctrl,
GFP_KERNEL);
if (init_settings == NULL) {
kfree(a_ctrl->i2c_reg_tbl);
a_ctrl->i2c_reg_tbl = NULL;
pr_err("%s Error allocating memory for init_settings\n",
__func__);
return -EFAULT;
@ -547,6 +549,7 @@ static int32_t msm_actuator_init(struct msm_actuator_ctrl_t *a_ctrl,
sizeof(struct reg_settings_t))) {
kfree(init_settings);
kfree(a_ctrl->i2c_reg_tbl);
a_ctrl->i2c_reg_tbl = NULL;
pr_err("%s Error copying init_settings\n",
__func__);
return -EFAULT;
@ -558,6 +561,7 @@ static int32_t msm_actuator_init(struct msm_actuator_ctrl_t *a_ctrl,
kfree(init_settings);
if (rc < 0) {
kfree(a_ctrl->i2c_reg_tbl);
a_ctrl->i2c_reg_tbl = NULL;
pr_err("%s Error actuator_init_focus\n",
__func__);
return -EFAULT;

View File

@ -522,6 +522,12 @@ config FB_MSM_OVERLAY0_WRITEBACK
---help---
Support for MDP4 OVERLAY0 write back mode
config FB_MSM_ENABLE_LCD_EN2
bool "LCD_EN2 Enable for J Active project"
default n
---help---
Enable LCD EN2 pin to control AVDD
config FB_MSM_MIPI_RENESAS_TFT_VIDEO_FULL_HD_PT
bool
select FB_MSM_MIPI_DSI_RENESAS_TFT

View File

@ -71,7 +71,12 @@
int play_speed_1_5;
#if defined(CONFIG_FB_MSM_MIPI_RENESAS_TFT_VIDEO_FULL_HD_PT_PANEL)
#if defined (CONFIG_MACH_JACTIVE_EUR) || defined (CONFIG_MACH_JACTIVE_ATT)
static int cabc = -1;
#else
static int cabc = 0;
#endif
extern int mipi_samsung_cabc_onoff ( int enable );
#endif
@ -1032,7 +1037,12 @@ static ssize_t cabc_store(struct device *dev,
return size;
}
#if defined(CONFIG_FB_MSM_MIPI_RENESAS_TFT_VIDEO_FULL_HD_PT_PANEL)
int is_cabc_on ( void )
{
return cabc;
}
#endif
static DEVICE_ATTR(cabc, 0664,
cabc_show,
cabc_store);

View File

@ -133,6 +133,9 @@ struct mdnie_lite_tun_type {
void mdnie_lite_tuning_init(void);
void init_mdnie_class(void);
void is_negative_on(void);
#if defined(CONFIG_FB_MSM_MIPI_RENESAS_TFT_VIDEO_FULL_HD_PT_PANEL)
int is_cabc_on ( void );
#endif
void coordinate_tunning(int x, int y);

1098
drivers/video/msm/mdnie_lite_tuning_data_jactiveltexx.h Normal file → Executable file

File diff suppressed because it is too large Load Diff

View File

@ -170,6 +170,9 @@ static int mipi_dsi_on(struct platform_device *pdev)
u32 dummy_xres, dummy_yres;
int target_type = 0;
u32 tmp;
#if defined(CONFIG_FB_MSM_MIPI_RENESAS_TFT_VIDEO_FULL_HD_PT_PANEL)
static int is_booting = 1;
#endif
pr_debug("%s+:\n", __func__);
@ -185,6 +188,23 @@ static int mipi_dsi_on(struct platform_device *pdev)
mipi_dsi_pdata->power_common();
#if defined(CONFIG_SUPPORT_SECOND_POWER)
#if defined(CONFIG_FB_MSM_MIPI_RENESAS_TFT_VIDEO_FULL_HD_PT_PANEL)
if( is_booting == 1 )
{
is_booting = 0;
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
usleep(5000);
if (mipi_dsi_pdata && mipi_dsi_pdata->active_reset)
mipi_dsi_pdata->active_reset(0); /* low */
usleep(2000);
if (mipi_dsi_pdata && mipi_dsi_pdata->panel_power_save)
mipi_dsi_pdata->panel_power_save(0);
msleep(10);
#endif
}
#endif
if (mipi_dsi_pdata && mipi_dsi_pdata->panel_power_save)
mipi_dsi_pdata->panel_power_save(1);
#endif

View File

@ -22,7 +22,11 @@ static struct mipi_panel_data mipi_pd;
enum {
GAMMA_0CD = 1,
GAMMA_5CD = 2,
#if defined (CONFIG_MACH_JACTIVE_EUR) || defined (CONFIG_MACH_JACTIVE_ATT)
GAMMA_10CD = 3, // MIN 10 from platform
#else
GAMMA_10CD = 4, // MIN 10 from platform
#endif
GAMMA_15CD = 7,
GAMMA_20CD = 10,
GAMMA_25CD = 13,
@ -121,16 +125,23 @@ static char renesas_backlight_control[] = {
0x2C,
};
#if defined(CONFIG_TOUCHSCREEN_SYNAPTICS_PREVENT_HSYNC_LEAKAGE)
static char renesas_teon_control[] = {
0x35,
0x01,
};
static char renesas_teoff_control[] = {
0x35,
0x00,
};
#endif
static char renesas_memory_access_control[] = {
0x36,
0xC0,
};
#if !defined(CONFIG_MACH_JACTIVE_ATT) && !defined(CONFIG_MACH_JACTIVE_EUR)
static char renesas_F0_control[] = {
0xF0,
0x5A,0x5A,
@ -157,12 +168,25 @@ static char renesas_FB_control[] = {
0x19,0x1D,0x20,0x22,0x24,0x23,0x22,0x1C,0x14,0x10,
0x12,0x15,0x1B,0x1A,0x18,0x15,0x10,0x05,0x06,
};
#endif
static char renesas_display_on[] = { 0x29, /* no param */ };
static char renesas_display_off[] = { 0x28, /* no param */ };
static char renesas_sleep_in[] = { 0x10, /* no param */ };
static char renesas_sleep_out[] = { 0x11, /* no param */ };
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
static char renesas_cabc_off_test[] = {
0xCE,
0x80, 0x19, 0x19, 0x19, 0x19,
0x19, 0x19, 0x19, 0x19, 0x19,
0x19, 0x19, 0x19, 0x19,
};
static char renesas_cabc_on_test[] = {
0xCE,
0x00,
};
#endif
static struct dsi_cmd_desc renesas_ready_to_on_cmds[] = {
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
sizeof(renesas_brightness_setting), renesas_brightness_setting},
@ -173,24 +197,34 @@ static struct dsi_cmd_desc renesas_ready_to_on_cmds[] = {
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
sizeof(renesas_backlight_control), renesas_backlight_control},
#if defined(CONFIG_TOUCHSCREEN_SYNAPTICS_PREVENT_HSYNC_LEAKAGE)
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
sizeof(renesas_teon_control), renesas_teon_control},
#endif
{DTYPE_DCS_LWRITE, 1, 0, 0, 120,
sizeof(renesas_sleep_out), renesas_sleep_out},
#if !defined(CONFIG_MACH_JACTIVE_ATT) && !defined(CONFIG_MACH_JACTIVE_EUR)
{DTYPE_DCS_LWRITE, 1, 0, 0, 0, sizeof(renesas_F0_control), renesas_F0_control},
{DTYPE_DCS_LWRITE, 1, 0, 0, 0, sizeof(renesas_FA_control), renesas_FA_control},
{DTYPE_DCS_LWRITE, 1, 0, 0, 0, sizeof(renesas_FB_control), renesas_FB_control},
#endif
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
sizeof(renesas_display_on), renesas_display_on},
};
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
static struct dsi_cmd_desc panel_off_cmds[] = {
{DTYPE_DCS_LWRITE, 1, 0, 0, 40, sizeof(renesas_display_off), renesas_display_off},
{DTYPE_DCS_LWRITE, 1, 0, 0, 120, sizeof(renesas_sleep_in), renesas_sleep_in},
};
#else
static struct dsi_cmd_desc panel_off_cmds[] = {
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
sizeof(renesas_display_off), renesas_display_off},
};
#endif
static struct dsi_cmd_desc panel_late_on_cmds[] = {
{DTYPE_DCS_LWRITE, 1, 0, 0, 5,
@ -231,16 +265,35 @@ static struct dsi_cmd_desc brightness_packet[] = {
#if defined(AUTO_BRIGHTNESS_CABC_FUNCTION)
static struct dsi_cmd_desc panel_cabc_enable_cmds[] = {
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
{DTYPE_GEN_LWRITE, 1, 0, 0, 0,
sizeof(renesas_cabc_on_test), renesas_cabc_on_test},
#endif
{DTYPE_GEN_LWRITE, 1, 0, 0, 0,
sizeof(renesas_cabc_enable_control), renesas_cabc_enable_control},
};
static struct dsi_cmd_desc panel_cabc_disable_cmds[] = {
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
{DTYPE_GEN_LWRITE, 1, 0, 0, 0,
sizeof(renesas_cabc_off_test), renesas_cabc_off_test},
#endif
{DTYPE_GEN_LWRITE, 1, 0, 0, 0,
sizeof(renesas_cabc_disable_control), renesas_cabc_disable_control},
};
#endif
#if defined(CONFIG_TOUCHSCREEN_SYNAPTICS_PREVENT_HSYNC_LEAKAGE)
static struct dsi_cmd_desc panel_hsync_on_cmds[] = {
{DTYPE_GEN_LWRITE, 1, 0, 0, 0,
sizeof(renesas_teon_control), renesas_teon_control},
};
static struct dsi_cmd_desc panel_hsync_off_cmds[] = {
{DTYPE_GEN_LWRITE, 1, 0, 0, 0,
sizeof(renesas_teoff_control), renesas_teoff_control},
};
#endif
static int get_candela_index(int bl_level)
{
int backlightlevel;
@ -462,6 +515,12 @@ static struct mipi_panel_data mipi_pd = {
.cabc_disable = {panel_cabc_disable_cmds
, ARRAY_SIZE(panel_cabc_disable_cmds)},
#endif
#if defined(CONFIG_TOUCHSCREEN_SYNAPTICS_PREVENT_HSYNC_LEAKAGE)
.hsync_on = {panel_hsync_on_cmds
, ARRAY_SIZE(panel_hsync_on_cmds)},
.hsync_off = {panel_hsync_off_cmds
, ARRAY_SIZE(panel_hsync_off_cmds)},
#endif
};
static struct mipi_dsi_phy_ctrl dsi_video_mode_phy_db = {
@ -469,8 +528,13 @@ static struct mipi_dsi_phy_ctrl dsi_video_mode_phy_db = {
/* regulator */
.regulator = {0x03, 0x0a, 0x04, 0x00, 0x20},
/* timing */
#if defined (CONFIG_MACH_JACTIVE_EUR) || defined (CONFIG_MACH_JACTIVE_ATT)
.timing = {0x5C, 0x37, 0x39, 0x00, 0x62, 0x57, 0x3B, 0x3B,
0x44, 0x03, 0x04, 0xa0},
#else
.timing = {0xD9, 0x40, 0x3C, 0x00, 0x52, 0x5E, 0x32, 0x40,
0x3C, 0x03, 0x04, 0xa0},
#endif
/* phy ctrl */
.ctrl = {0x5f, 0x00, 0x00, 0x10},
/* strength */
@ -526,9 +590,11 @@ static int __init mipi_cmd_samsung_tft_full_hd_pt_init(void)
pinfo.bl_max = 255;
pinfo.bl_min = 1;
pinfo.fb_num = 2;
#if defined (CONFIG_MACH_JACTIVE_EUR) || defined (CONFIG_MACH_JACTIVE_ATT)
pinfo.clk_rate = 906000000;
#else
pinfo.clk_rate = 898000000;
#endif
pinfo.mipi.mode = DSI_VIDEO_MODE;
pinfo.mipi.pulse_mode_hsa_he = FALSE;
pinfo.mipi.hfp_power_stop = TRUE;

View File

@ -132,6 +132,16 @@ static int mipi_samsung_disp_send_cmd(struct msm_fb_data_type *mfd,
cmd_desc = msd.mpd->cabc_disable.cmd;
cmd_size = msd.mpd->cabc_disable.size;
break;
#endif
#if defined(CONFIG_TOUCHSCREEN_SYNAPTICS_PREVENT_HSYNC_LEAKAGE)
case PANEL_HSYNC_ON:
cmd_desc = msd.mpd->hsync_on.cmd;
cmd_size = msd.mpd->hsync_on.size;
break;
case PANEL_HSYNC_OFF:
cmd_desc = msd.mpd->hsync_off.cmd;
cmd_size = msd.mpd->hsync_off.size;
break;
#endif
default:
goto unknown_command;
@ -168,6 +178,43 @@ unknown_command:
return 0;
}
#if defined(CONFIG_TOUCHSCREEN_SYNAPTICS_PREVENT_HSYNC_LEAKAGE)
void lcd_hsync_onoff(bool onoff)
{
struct msm_fb_data_type *mfd;
mfd = platform_get_drvdata(msd.msm_pdev);
if (unlikely(!mfd)) { pr_err("%s : panel no mfd",__func__); return;}
// return -ENODEV;
if (unlikely(mfd->key != MFD_KEY)) { pr_err("%s : panel mfd invlaid",__func__); return;}
// return -EINVAL;
#if defined(CONFIG_MACH_JACTIVE_EUR) /* HW DEFECT under REV 0.5 */
if( system_rev > 16 )
return;
#endif
if (mfd->panel_power_on == TRUE)
{
if( onoff )
{
msleep(30);
mipi_samsung_disp_send_cmd(mfd, PANEL_HSYNC_ON, true);
pr_info("%s : HSYNC On\n",__func__);
}
else
{
mipi_samsung_disp_send_cmd(mfd, PANEL_HSYNC_OFF, true);
msleep(10); /* Need time to discharging by capacitance*/
pr_info("%s : HSYNC Off\n",__func__);
}
}
else
pr_err("%s : panel power off\n",__func__);
return;
}
#endif
static char manufacture_id1[2] = {0xDA, 0x00}; /* DTYPE_DCS_READ */
static char manufacture_id2[2] = {0xDB, 0x00}; /* DTYPE_DCS_READ */
static char manufacture_id3[2] = {0xDC, 0x00}; /* DTYPE_DCS_READ */
@ -241,8 +288,52 @@ static void execute_panel_init(struct msm_fb_data_type *mfd)
mipi_samsung_disp_send_cmd(mfd, PANEL_MTP_DISABLE, false);
}
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
static int mipi_samsung_disp_on_in_video_engine(struct platform_device *pdev)
{
struct msm_fb_data_type *mfd;
printk(KERN_INFO "[lcd] mipi_samsung_disp_on_in_video_engine start\n" );
mfd = platform_get_drvdata(pdev);
if (unlikely(!mfd))
return -ENODEV;
if (unlikely(mfd->key != MFD_KEY))
return -EINVAL;
mipi_samsung_disp_send_cmd(mfd, PANEL_ON, false);
mfd->resume_state = MIPI_RESUME_STATE;
#if defined(RUMTIME_MIPI_CLK_CHANGE)
current_fps = mfd->panel_info.mipi.frame_rate;
#endif
#if defined(AUTO_BRIGHTNESS_CABC_FUNCTION)
is_disp_on = 1;
if( is_cabc_on() == true )
{
mipi_samsung_disp_send_cmd(mfd, PANEL_CABC_ENABLE, false);
is_cabc_delayed = 0;
printk ( KERN_ERR "%s-PANEL_CABC_ENABLE(keystring)\n", __func__ );
}
else if( (is_cabc_on() != false) && ((is_cabc_delayed == 1) || (msd.mpd->siop_status == true)) )
{
mipi_samsung_disp_send_cmd(mfd, PANEL_CABC_ENABLE, false);
is_cabc_delayed = 0;
printk ( KERN_ERR "%s-PANEL_CABC_ENABLE(delayed)\n", __func__ );
}
#endif
printk(KERN_INFO "[lcd] mipi_samsung_disp_on_in_video_engine end %d\n", gpio_get_value(err_fg_gpio));
#if defined(CONFIG_ESD_ERR_FG_RECOVERY)
enable_irq(PM8921_GPIO_IRQ(PM8921_IRQ_BASE, PMIC_GPIO_ERR_FG));
#endif
return 0;
}
#endif
static int mipi_samsung_disp_on(struct platform_device *pdev)
{
struct msm_fb_data_type *mfd = NULL;
@ -270,7 +361,7 @@ static int mipi_samsung_disp_on(struct platform_device *pdev)
mipi_samsung_disp_send_cmd(mfd,
PANEL_NEED_FLIP, false);
}
#if !defined(CONFIG_MACH_JACTIVE_ATT) && !defined(CONFIG_MACH_JACTIVE_EUR)
mipi_samsung_disp_send_cmd(mfd, PANEL_ON, false);
mfd->resume_state = MIPI_RESUME_STATE;
@ -301,6 +392,7 @@ static int mipi_samsung_disp_on(struct platform_device *pdev)
#if defined(CONFIG_ESD_ERR_FG_RECOVERY)
enable_irq(PM8921_GPIO_IRQ(PM8921_IRQ_BASE, PMIC_GPIO_ERR_FG));
#endif
#endif
return 0;
}
@ -340,22 +432,34 @@ static int mipi_samsung_disp_off(struct platform_device *pdev)
static void __devinit mipi_samsung_disp_shutdown(struct platform_device *pdev)
{
static struct mipi_dsi_platform_data *mipi_dsi_pdata = NULL;
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
struct msm_fb_data_type *mfd = NULL;
#endif
if (pdev->id != 0)
return;
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
mfd = platform_get_drvdata(msd.msm_pdev);
if (unlikely(!mfd))
return;
#endif
mipi_dsi_pdata = pdev->dev.platform_data;
if (mipi_dsi_pdata == NULL) {
pr_err("LCD Power off failure: No Platform Data\n");
return;
}
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
mfd->resume_state = MIPI_SUSPEND_STATE;
mipi_samsung_disp_send_cmd(mfd, PANEL_OFF, false);
#endif
if (mipi_dsi_pdata && mipi_dsi_pdata->active_reset)
mipi_dsi_pdata->active_reset(0); /* low */
usleep(2000); /*1ms delay(minimum) required between reset low and AVDD off*/
#if defined(CONFIG_MACH_JACTIVE_EUR)
msleep ( 10 ); // need more delay for POWER OFF SIGNAL
#endif
if (mipi_dsi_pdata && mipi_dsi_pdata->panel_power_save)
mipi_dsi_pdata->panel_power_save(0);
@ -472,14 +576,30 @@ int mipi_samsung_cabc_onoff ( int enable )
{
if( enable )
{
#if defined(CONFIG_MACH_JACTIVE_EUR) || defined (CONFIG_MACH_JACTIVE_ATT)
if( is_cabc_on() != false )
{
#endif
mipi_samsung_disp_send_cmd(mfd, PANEL_CABC_ENABLE, false);
printk ( KERN_ERR "@@@@@%s-PANEL_CABC_ENABLE\n", __func__ );
}
else
#if defined(CONFIG_MACH_JACTIVE_EUR) || defined (CONFIG_MACH_JACTIVE_ATT)
printk ( KERN_ERR "@@@@@%s-CABC KEYSTRING is OFF, so skip ENABLE\n", __func__ );
}
else
{
if( is_cabc_on() != true )
#endif
{
mipi_samsung_disp_send_cmd(mfd, PANEL_CABC_DISABLE, false);
printk ( KERN_ERR "@@@@@%s-PANEL_CABC_DISABLE\n", __func__ );
}
#if defined(CONFIG_MACH_JACTIVE_EUR) || defined (CONFIG_MACH_JACTIVE_ATT)
else
printk ( KERN_ERR "@@@@@%s-CABC KEYSTRING is ON, so skip DISABLE\n", __func__ );
}
#endif
}
return 0;
@ -734,7 +854,31 @@ static char tuning_file[MAX_FILE_NAME];
static char mdni_tuning1[TUNE_FIRST_SIZE];
static char mdni_tuning2[TUNE_SECOND_SIZE];
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
static char level1_key_enable[] = {
0xF0,
0x5A, 0x5A,
};
static char level1_key_disable[] = {
0xF0,
0xA5, 0xA5,
};
static struct dsi_cmd_desc mdni_tune_cmd[] = {
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
sizeof(level1_key_enable), level1_key_enable},
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
sizeof(mdni_tuning1), mdni_tuning1},
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
sizeof(mdni_tuning2), mdni_tuning2},
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
sizeof(level1_key_disable), level1_key_disable},
};
#else
static char level1_key[] = {
0xF0,
0x5A, 0x5A,
@ -756,7 +900,7 @@ static struct dsi_cmd_desc mdni_tune_cmd[] = {
{DTYPE_DCS_LWRITE, 1, 0, 0, 0,
sizeof(mdni_tuning2), mdni_tuning2},
};
#endif
static char char_to_dec(char data1, char data2)
{
char dec;
@ -1125,6 +1269,9 @@ static struct platform_driver this_driver = {
};
static struct msm_fb_panel_data samsung_panel_data = {
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
.late_init = mipi_samsung_disp_on_in_video_engine,
#endif
.on = mipi_samsung_disp_on,
.off = mipi_samsung_disp_off,
.set_backlight = mipi_samsung_disp_backlight,

View File

@ -50,6 +50,10 @@ enum mipi_samsung_cmd_list {
PANEL_CABC_ENABLE,
PANEL_CABC_DISABLE,
#endif
#if defined(CONFIG_TOUCHSCREEN_SYNAPTICS_PREVENT_HSYNC_LEAKAGE)
PANEL_HSYNC_ON,
PANEL_HSYNC_OFF,
#endif
};
enum {
@ -95,6 +99,10 @@ struct mipi_panel_data {
struct cmd_set cabc_enable;
struct cmd_set cabc_disable;
#endif
#if defined(CONFIG_TOUCHSCREEN_SYNAPTICS_PREVENT_HSYNC_LEAKAGE)
struct cmd_set hsync_on;
struct cmd_set hsync_off;
#endif
unsigned int manufacture_id;
struct mipi_samsung_driver_data *msd;

View File

@ -158,6 +158,8 @@ fw-shipped-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI) += tsp_synaptics/synaptics_b0
ifdef CONFIG_MACH_JACTIVE_EUR
fw-shipped-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI) += tsp_synaptics/jactive/synaptics_b0_hsync.fw
fw-shipped-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI) += tsp_synaptics/jactive/synaptics_b0_hsync_fac.fw
fw-shipped-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI) += tsp_synaptics/jactive/synaptics_b0_hsync04.fw
fw-shipped-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI) += tsp_synaptics/jactive/synaptics_b0_hsync04_fac.fw
fw-shipped-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI) += tsp_synaptics/jactive/synaptics_b0_non_hsync.fw
fw-shipped-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI) += tsp_synaptics/jactive/synaptics_b0_non_hsync_fac.fw
fw-shipped-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI) += tsp_synaptics/synaptics_d0.fw

BIN
firmware/audience-es325-fw-jactive-eur.bin Normal file → Executable file

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -70,9 +70,15 @@ struct synaptics_rmi4_platform_data {
#ifdef CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_VIDEO_FULL_HD_PT_PANEL
int (*tout1_on)(void);
#endif
#if defined(CONFIG_TOUCHSCREEN_SYNAPTICS_PREVENT_HSYNC_LEAKAGE)
void (*hsync_onoff)(bool onoff);
#endif
};
#ifdef CONFIG_FB_MSM_MIPI_SAMSUNG_OCTA_VIDEO_FULL_HD_PT_PANEL
extern int touch_tout1_on(void);
#endif
#if defined(CONFIG_TOUCHSCREEN_SYNAPTICS_PREVENT_HSYNC_LEAKAGE)
extern void lcd_hsync_onoff(bool onoff);
#endif
#endif

View File

@ -253,6 +253,11 @@
#define MSM_CAM_IOCTL_INTF_MCTL_MAPPING_CFG \
_IOR(MSM_CAM_IOCTL_MAGIC, 71, struct intf_mctl_mapping_cfg *)
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
#define MSM_CAM_IOCTL_VFE_STATS_VERSION\
_IOWR(MSM_CAM_IOCTL_MAGIC, 72, uint32_t *)
#endif
struct ioctl_native_cmd {
unsigned short mode;
unsigned short address;
@ -320,7 +325,11 @@ struct msm_mctl_post_proc_cmd {
#define PP_PREV BIT(2)
#define PP_THUMB BIT(3)
#define PP_RDI BIT(4)
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
#define PP_MASK (PP_SNAP|PP_RAW_SNAP|PP_PREV|PP_THUMB|PP_RDI_PREV)
#else
#define PP_MASK (PP_SNAP|PP_RAW_SNAP|PP_PREV|PP_THUMB)
#endif
#define MSM_CAM_CTRL_CMD_DONE 0
#define MSM_CAM_SENSOR_VFE_CMD 1
@ -915,8 +924,13 @@ struct msm_stats_buf {
#define MSM_V4L2_PID_INST_HANDLE (V4L2_CID_PRIVATE_BASE+16)
#define MSM_V4L2_PID_MMAP_INST (V4L2_CID_PRIVATE_BASE+17)
#define MSM_V4L2_PID_PP_PLANE_INFO (V4L2_CID_PRIVATE_BASE+18)
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
#define MSM_V4L2_PID_PREVIEW_SIZE (V4L2_CID_PRIVATE_BASE+19)
#define MSM_V4L2_PID_MAX MSM_V4L2_PID_PREVIEW_SIZE
#else
#define MSM_V4L2_PID_AVTIMER (V4L2_CID_PRIVATE_BASE+19)
#define MSM_V4L2_PID_MAX MSM_V4L2_PID_AVTIMER
#endif
/* camera operation mode for video recording - two frame output queues */
#define MSM_V4L2_CAM_OP_DEFAULT 0
@ -1024,28 +1038,136 @@ struct msm_snapshot_pp_status {
#define CFG_CONFIG_VREG_ARRAY 52
#define CFG_CONFIG_CLK_ARRAY 53
#define CFG_GPIO_OP 54
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
#define CFG_EEPROM_DIRECT_DATA_READ 55
#define CFG_EEPROM_DIRECT_DATA_WRITE 56
#define CFG_EEPROM_DIRECT_DATA_ERASE 57
#define CFG_SET_STREAMING_MODE 58
#define CFG_SET_VISION_AE 59
#define CFG_FINAL_AF 60 //SEMCO Request by Lizk
#define CFG_MAX 61
#else
#define CFG_SET_VISION_MODE 55
#define CFG_SET_VISION_AE 56
#define CFG_HDR_UPDATE 57
#define CFG_ACTUAOTOR_REG_INIT 58
#define CFG_MAX 59
#endif
#define MOVE_NEAR 0
#define MOVE_FAR 1
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
#define CAMERA_MODE_INIT 0
#define CAMERA_MODE_PREVIEW 1
#define CAMERA_MODE_CAPTURE 2
#define CAMERA_MODE_RECORDING 3
#define SENSOR_SNAPSHOT_MODE 0
#define SENSOR_RAW_SNAPSHOT_MODE 1
#define SENSOR_PREVIEW_MODE 2
#define SENSOR_VIDEO_MODE 3
#define SENSOR_HFR_60FPS_MODE 4
#define SENSOR_HFR_90FPS_MODE 5
#define SENSOR_HFR_120FPS_MODE 6
#define SENSOR_INVALID_MODE 7
#else
#define SENSOR_PREVIEW_MODE 0
#define SENSOR_SNAPSHOT_MODE 1
#define SENSOR_RAW_SNAPSHOT_MODE 2
#define SENSOR_HFR_60FPS_MODE 3
#define SENSOR_HFR_90FPS_MODE 4
#define SENSOR_HFR_120FPS_MODE 5
#endif
#define SENSOR_QTR_SIZE 0
#define SENSOR_FULL_SIZE 1
#define SENSOR_QVGA_SIZE 2
#define SENSOR_INVALID_SIZE 3
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
#define CAMERA_EFFECT_OFF 0
#define CAMERA_EFFECT_MONO 1
#define CAMERA_EFFECT_NEGATIVE 2
#define CAMERA_EFFECT_SOLARIZE 3
#define CAMERA_EFFECT_SEPIA 4
#define CAMERA_EFFECT_POSTERIZE 5
#define CAMERA_EFFECT_WHITEBOARD 6
#define CAMERA_EFFECT_BLACKBOARD 7
#define CAMERA_EFFECT_AQUA 8
#define CAMERA_EFFECT_EMBOSS 9
#define CAMERA_EFFECT_SKETCH 10
#define CAMERA_EFFECT_NEON 11
#define CAMERA_EFFECT_WARM 12
#define CAMERA_EFFECT_COLD 13
#define CAMERA_EFFECT_WASHED 14
#define CAMERA_EFFECT_VINTAGE_WARM 15 //13
#define CAMERA_EFFECT_VINTAGE_COLD 16 //14
#define CAMERA_EFFECT_POINT_COLOR_1 17 //15
#define CAMERA_EFFECT_POINT_COLOR_2 18 //16
#define CAMERA_EFFECT_POINT_COLOR_3 19 //17
#define CAMERA_EFFECT_POINT_COLOR_4 20 //18
#define CAMERA_EFFECT_USER_DEFINED1 21 //19
#define CAMERA_EFFECT_USER_DEFINED2 22 //20
#define CAMERA_EFFECT_USER_DEFINED3 23 //21
#define CAMERA_EFFECT_USER_DEFINED4 24 //22
#define CAMERA_EFFECT_USER_DEFINED5 25 //23
#define CAMERA_EFFECT_USER_DEFINED6 26 //24
#define CAMERA_EFFECT_MAX 27 //25
#define CAMERA_WHITE_BALANCE_AUTO 1
#define CAMERA_WHITE_BALANCE_INCANDESCENT 3
#define CAMERA_WHITE_BALANCE_FLUORESCENT 4
#define CAMERA_WHITE_BALANCE_DAYLIGHT 5
#define CAMERA_WHITE_BALANCE_CLOUDY_DAYLIGHT 6
#define CAMERA_FLASH_OFF 0
#define CAMERA_FLASH_ON 2
#define CAMERA_FLASH_AUTO 1
#define CAMERA_FLASH_TORCH 3
#define CAMERA_EV_M4 0
#define CAMERA_EV_M3 1
#define CAMERA_EV_M2 2
#define CAMERA_EV_M1 3
#define CAMERA_EV_DEFAULT 4
#define CAMERA_EV_P1 5
#define CAMERA_EV_P2 6
#define CAMERA_EV_P3 7
#define CAMERA_EV_P4 8
#define CAMERA_ISO_MODE_AUTO 0
#define CAMERA_ISO_MODE_50 1
#define CAMERA_ISO_MODE_100 2
#define CAMERA_ISO_MODE_200 3
#define CAMERA_ISO_MODE_400 4
#define CAMERA_ISO_MODE_800 5
#define CAMERA_AVERAGE 0
#define CAMERA_CENTER_WEIGHT 1
#define CAMERA_SPOT 2
#define CAMERA_SCENE_AUTO 1
#define CAMERA_SCENE_LANDSCAPE 2
#define CAMERA_SCENE_BEACH 4
#define CAMERA_SCENE_SUNSET 5
#define CAMERA_SCENE_NIGHT 6
#define CAMERA_SCENE_PORTRAIT 7
#define CAMERA_SCENE_AGAINST_LIGHT 8
#define CAMERA_SCENE_SPORT 9
#define CAMERA_SCENE_CANDLE 12
#define CAMERA_SCENE_FIRE 13
#define CAMERA_SCENE_PARTY 14
#define CAMERA_SCENE_TEXT 19
#define CAMERA_SCENE_FALL 20
#define CAMERA_SCENE_DAWN 21
#define CAMERA_AF_MACRO 1
#define CAMERA_AF_AUTO 2
#endif
/* QRD */
#define CAMERA_EFFECT_BW 10
#define CAMERA_EFFECT_BLUISH 12
@ -1216,6 +1338,16 @@ enum msm_v4l2_power_line_frequency {
MSM_V4L2_POWER_LINE_AUTO,
};
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
enum msm_v4l2_fw_control_mode {
CAM_FW_MODE_NONE = 0,
CAM_FW_MODE_VERSION,
CAM_FW_MODE_UPDATE,
CAM_FW_MODE_DUMP,
CAM_FW_MODE_MAX,
};
#endif
#define CAMERA_ISO_TYPE_AUTO 0
#define CAMEAR_ISO_TYPE_HJR 1
#define CAMEAR_ISO_TYPE_100 2
@ -1229,12 +1361,20 @@ struct sensor_pict_fps {
uint16_t pictfps;
};
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
struct exp_gain_cfg {
/* uint16_t gain;*/
uint32_t gain;
uint32_t line;
};
#else
struct exp_gain_cfg {
uint16_t gain;
uint32_t line;
int32_t luma_avg;
uint16_t fgain;
};
#endif
struct focus_cfg {
int32_t steps;
@ -1344,6 +1484,7 @@ struct msm_sensor_output_reg_addr_t {
uint16_t frame_length_lines;
};
#if !defined(CONFIG_MACH_JACTIVE_ATT) && !defined(CONFIG_MACH_JACTIVE_EUR)
enum sensor_hdr_update_t {
SENSOR_HDR_UPDATE_AWB,
SENSOR_HDR_UPDATE_LSC,
@ -1354,6 +1495,7 @@ struct sensor_hdr_update_parm_t {
uint16_t awb_gain_r, awb_gain_b;
uint8_t lsc_table[504];
};
#endif
struct sensor_driver_params_type {
struct msm_camera_i2c_reg_setting *init_settings;
@ -1671,7 +1813,9 @@ struct sensor_cfg_data {
struct sensor_output_info_t output_info;
struct msm_eeprom_data_t eeprom_data;
struct csi_lane_params_t csi_lane_params;
#if !defined(CONFIG_MACH_JACTIVE_ATT) && !defined(CONFIG_MACH_JACTIVE_EUR)
struct sensor_hdr_update_parm_t hdr_update_parm;
#endif
/* QRD */
uint16_t antibanding;
uint8_t contrast;
@ -1717,6 +1861,9 @@ enum actuator_type {
ACTUATOR_VCM,
ACTUATOR_PIEZO,
ACTUATOR_HALL_EFFECT,
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
ACTUATOR_HVCA,
#endif
};
enum msm_actuator_data_type {
@ -1843,6 +1990,14 @@ struct msm_calib_af {
uint16_t macro_dac;
uint16_t inf_dac;
uint16_t start_dac;
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
uint16_t macro_dac1; /*Mechanical MACRO*/
uint16_t macro_dac2; /*10cm*/
uint16_t inf_dac1; /*Mechanical INFINITY*/
uint16_t inf_dac2; /*1.05M*/
uint16_t pid_dac; /* Randy PID */
uint16_t cal_offset_dac ; /* SEMCO by Liz 05112013 */
#endif
};
struct msm_calib_lsc {
@ -1868,13 +2023,23 @@ struct msm_calib_raw {
uint8_t *data;
uint32_t size;
};
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
struct eeprom_data_access_t {
uint8_t *data;
uint32_t addr;
uint32_t num_bytes;
};
#endif
struct msm_camera_eeprom_info_t {
struct msm_eeprom_support af;
struct msm_eeprom_support wb;
struct msm_eeprom_support lsc;
struct msm_eeprom_support dpc;
struct msm_eeprom_support raw;
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
struct msm_eeprom_support gld_wb;
struct msm_eeprom_support gld_lsc;
#endif
};
struct msm_eeprom_cfg_data {
@ -1883,6 +2048,9 @@ struct msm_eeprom_cfg_data {
union {
struct msm_eeprom_data_t get_data;
struct msm_camera_eeprom_info_t get_info;
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
struct eeprom_data_access_t direct_access;
#endif
} cfg;
};
@ -2086,6 +2254,10 @@ struct msm_mctl_set_sdev_data {
#define VIDIOC_MSM_AXI_LOW_POWER_MODE \
_IO('V', BASE_VIDIOC_PRIVATE + 26)
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
#define VIDIOC_MSM_VFE_STATS_VERSION \
_IOWR('V', BASE_VIDIOC_PRIVATE + 27, uint32_t *)
#endif
struct msm_camera_v4l2_ioctl_t {
uint32_t id;
@ -2303,5 +2475,54 @@ struct intf_mctl_mapping_cfg {
#define SET_VIDEO_INST_IDX(handle, data) \
(handle |= (0x1 << 7) | (data & 0x7F))
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
/* Samsung native cmd code */
#define EXT_CAM_SNAPSHOT_MODE 1
#define EXT_CAM_AF 2
#define EXT_CAM_PREVIEW_SIZE 3
#define EXT_CAM_CAPTURE_SIZE 4
#define EXT_CAM_METERING 5
#define EXT_CAM_WB 6
#define EXT_CAM_EFFECT 7
#define EXT_CAM_QUALITY 8
#define EXT_CAM_ISO 9
#define EXT_CAM_EV 10
#define EXT_CAM_HJ_REDUCTION 11
#define EXT_CAM_LED 12
#define EXT_CAM_SCENEMODE 13
#define EXT_CAM_SET_PREVIEW_SIZE 14
#define EXT_CAM_SET_CAPTURE_SIZE 15
#define EXT_CAM_FOCUS_MODE 16
#define EXT_CAM_SET_WDR 17
#define EXT_CAM_SET_MOVIE_MODE 18
#define EXT_CAM_SET_ZOOM 19
#define EXT_CAM_FD_MODE 20
#define EXT_CAM_SET_TOUCHAF_POS 21
#define EXT_CAM_MOVIE_MODE 22
#define EXT_CAM_SET_FPS 23
#define EXT_CAM_START_AE_AWB_LOCK 24
#define EXT_CAM_SET_ANTIBANDING 25
#define EXT_CAM_SET_ANTI_STREAMOFF 26
#define EXT_CAM_SET_OCR_FOCUS_MODE 27
#if defined(CONFIG_MACH_JACTIVE_ATT) || defined(CONFIG_MACH_JACTIVE_EUR)
#define EXT_CAM_SET_ORIENTATION 28
#endif
#define EXT_CAM_SET_AF_WINDOW 29
#define EXT_CAM_SET_HDR 33
#define EXT_CAM_START_HDR 34
#define EXT_CAM_RESET_HDR 35
#define EXT_CAM_SET_LLS 36
#define EXT_CAM_SET_BEST 37
#define EXT_CAM_SET_HW_VDIS 38
#define EXT_CAM_SET_SHOT_MODE 39
#define EXT_CAM_UPDATE_FW 42
#define EXT_CAM_GET_ISP_DBG_LOG 43
#define EXT_CAM_SET_RAW 44
#define EXT_CAM_RESUME_PREVIEW 45
#define EXT_CAM_SET_FACTORY_BIN 46
#define EXT_CAM_START_GOLF_SHOT 47
#define EXT_CAM_STOP_GOLF_SHOT 48
#endif
#endif /* __LINUX_MSM_CAMERA_H */
#endif