Skip to content
Permalink
Browse files

Merge Y300-J1 release (19/11/2013)

  • Loading branch information...
Dazzozo committed Nov 24, 2013
1 parent c25d029 commit 9a4809f04365c8a119d92d1a0103d8363569e29f
Showing with 2,960 additions and 1,275 deletions.
  1. +3 −4 arch/arm/configs/hw_msm7x27a_defconfig
  2. +44 −42 arch/arm/configs/hw_msm8x25_defconfig
  3. +7 −1 arch/arm/mach-msm/Kconfig
  4. +16 −8 arch/arm/mach-msm/audio-7627a-devices.c
  5. +61 −22 arch/arm/mach-msm/board-msm7627a-io.c
  6. +18 −4 arch/arm/mach-msm/board-msm7x27a.c
  7. +1 −0 arch/arm/mach-msm/board-qrd7627a.c
  8. +26 −10 arch/arm/mach-msm/devices-msm7x27a.c
  9. +22 −6 arch/arm/mach-msm/hardware_self_adapt.c
  10. +4 −9 arch/arm/mach-msm/include/mach/camera.h
  11. +1 −1 arch/arm/mach-msm/include/mach/msm_iomap.h
  12. +108 −0 arch/arm/mach-msm/keypad-huawei.c
  13. +1 −0 arch/arm/mach-msm/msm-keypad-devices.h
  14. +42 −6 arch/arm/mach-msm/msm_cpr.c
  15. +1 −0 arch/arm/mach-msm/msm_cpr.h
  16. +1 −0 arch/arm/mach-msm/msm_smem_iface.c
  17. +2 −2 arch/arm/mach-msm/msm_smem_iface.h
  18. +1 −1 arch/arm/mach-msm/msm_vibrator.c
  19. +1 −1 arch/arm/mach-msm/qdsp5/audio_acdb.c
  20. +16 −0 arch/arm/mm/fault.c
  21. +1 −0 arch/arm/tools/mach-types
  22. +28 −42 drivers/i2c/chips/akm8963.c
  23. +28 −23 drivers/i2c/gyroscope/l3g4200d.c
  24. +68 −101 drivers/input/accelerometer/gs_adi346.c
  25. +64 −87 drivers/input/accelerometer/gs_kxtik1004.c
  26. +82 −106 drivers/input/accelerometer/gs_mma8452.c
  27. +129 −160 drivers/input/accelerometer/gs_st_lis3xh.c
  28. +17 −1 drivers/input/ate.c
  29. +64 −46 drivers/input/misc/aps-9900.c
  30. +7 −0 drivers/input/misc/aps-9900.h
  31. +10 −0 drivers/input/misc/gpio_input.c
  32. +147 −15 drivers/input/touchscreen/hw_tp_config.c
  33. +73 −55 drivers/input/touchscreen/melfas_i2c_ts.c
  34. +93 −90 drivers/input/touchscreen/synaptics_i2c_rmi_1564.c
  35. +21 −9 drivers/media/radio/radio-tavarua.c
  36. +6 −0 drivers/media/video/msm/Kconfig
  37. +1 −0 drivers/media/video/msm/Makefile
  38. +43 −1 drivers/media/video/msm/flash.c
  39. +290 −0 drivers/media/video/msm/lm3642.c
  40. +14 −3 drivers/media/video/msm/sensors/hi542_v4l2.c
  41. +58 −57 drivers/media/video/msm/sensors/s5k5ca_v4l2.c
  42. +2 −1 drivers/media/video/msm/torch.c
  43. +1 −0 drivers/media/video/msm/tps61310.c
  44. +4 −0 drivers/mfd/marimba-core.c
  45. +57 −0 drivers/power/huawei_battery.c
  46. +21 −4 drivers/power/msm_battery.c
  47. +25 −0 drivers/tty/serial/msm_serial_hs.c
  48. +0 −3 drivers/usb/gadget/f_rmnet_smd.c
  49. +6 −0 drivers/usb/gadget/f_rndis.c
  50. +34 −4 drivers/usb/gadget/msm72k_udc.c
  51. +10 −7 drivers/video/msm/mipi_dsi_host.c
  52. +6 −2 drivers/video/msm/mipi_nt35510_cmd_fwvga.c
  53. +326 −326 drivers/video/msm/mipi_nt35510_cmd_wvga.c
  54. +15 −2 drivers/video/msm/mipi_nt35512_video_wvga.c
  55. +797 −2 drivers/video/msm/mipi_otm8009a_cmd_fwvga.c
  56. +11 −1 drivers/video/msm/mipi_otm8018b_video_wvga.c
  57. +1 −0 fs/proc/app_info.c
  58. +1 −0 include/asm-arm/huawei/usb_switch_huawei.h
  59. +3 −0 include/linux/gpio_event.h
  60. +1 −1 include/linux/gs_kxtik1004.h
  61. +2 −1 include/linux/hardware_self_adapt.h
  62. +1 −2 include/linux/hw_tp_config.h
  63. +1 −0 include/linux/input.h
  64. +10 −5 include/linux/touch_platform_config.h
  65. +1 −0 include/media/tavarua.h
  66. +1 −1 include/net/tcp.h
  67. +3 −0 kernel/signal.c
@@ -79,7 +79,7 @@ CONFIG_PREEMPT_RCU=y
# CONFIG_RCU_BOOST is not set
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_LOG_BUF_SHIFT=17
CONFIG_LOG_BUF_SHIFT=21
CONFIG_CGROUPS=y
# CONFIG_CGROUP_DEBUG is not set
CONFIG_CGROUP_FREEZER=y
@@ -500,7 +500,7 @@ CONFIG_HUAWEI_SETTING_TIMER_FOR_VIBRATOR_OFF=y
CONFIG_HUAWEI_FEATURE_OEMINFO=y
CONFIG_HUAWEI_MTK6252_MODEM=y
CONFIG_HUAWEI_POWER_DOWN_CHARGE=y
# CONFIG_HUAWEI_RPC_CRASH_DEBUG is not set
CONFIG_HUAWEI_RPC_CRASH_DEBUG=y
CONFIG_HUAWEI_KEY_TEST=y
CONFIG_HUAWEI_SMEM_SLEEP_LOG=y
# CONFIG_HUAWEI_KERNEL_DEBUG is not set
@@ -3165,8 +3165,7 @@ CONFIG_HAVE_ARCH_KGDB=y
# CONFIG_KGDB is not set
# CONFIG_TEST_KSTRTOX is not set
CONFIG_SUPPORT_SYSTEMTAP=y
# CONFIG_SRECORDER_MSM is not set
# CONFIG_SRECORDER_POWERCOLLAPS is not set
CONFIG_SRECORDER_MSM=y
CONFIG_DEVICE_CHECK=y
# CONFIG_STRICT_DEVMEM is not set
CONFIG_ARM_UNWIND=y
@@ -370,6 +370,7 @@ CONFIG_MACH_MSM8X25_U8950D=y
CONFIG_MACH_MSM8X25_U8950=y
CONFIG_MACH_MSM8X25_C8812P=y
CONFIG_MACH_MSM8X25_C8833D=y
CONFIG_MACH_MSM8X25_Y300_J1=y
CONFIG_MACH_MSM8X25_C8813=y
CONFIG_MACH_MSM8X25_H881C=y
CONFIG_MACH_MSM8X25_Y301_A1=y
@@ -2173,6 +2174,7 @@ CONFIG_HUAWEI_CAMERA_SENSOR_HI542=y
# CONFIG_OV8825 is not set
CONFIG_MSM_CAMERA_FLASH=y
CONFIG_HUAWEI_FEATURE_TPS61310=y
CONFIG_HUAWEI_FEATURE_LM3642=y
CONFIG_HW_TORCH=y
CONFIG_MSM_CAMERA_SENSOR=y
CONFIG_MSM_ACTUATOR=y
@@ -2488,53 +2490,53 @@ CONFIG_USB_HID=y
#
# Special HID drivers
#
# CONFIG_HID_A4TECH is not set
# CONFIG_HID_ACRUX is not set
CONFIG_HID_A4TECH=y
CONFIG_HID_ACRUX=y
CONFIG_HID_APPLE=y
# CONFIG_HID_BELKIN is not set
# CONFIG_HID_CHERRY is not set
# CONFIG_HID_CHICONY is not set
# CONFIG_HID_PRODIKEYS is not set
# CONFIG_HID_CYPRESS is not set
# CONFIG_HID_DRAGONRISE is not set
# CONFIG_HID_EMS_FF is not set
# CONFIG_HID_ELECOM is not set
# CONFIG_HID_EZKEY is not set
# CONFIG_HID_HOLTEK is not set
# CONFIG_HID_KEYTOUCH is not set
# CONFIG_HID_KYE is not set
# CONFIG_HID_UCLOGIC is not set
# CONFIG_HID_WALTOP is not set
# CONFIG_HID_GYRATION is not set
# CONFIG_HID_TWINHAN is not set
# CONFIG_HID_KENSINGTON is not set
# CONFIG_HID_LCPOWER is not set
CONFIG_HID_BELKIN=y
CONFIG_HID_CHERRY=y
CONFIG_HID_CHICONY=y
CONFIG_HID_PRODIKEYS=y
CONFIG_HID_CYPRESS=y
CONFIG_HID_DRAGONRISE=y
CONFIG_HID_EMS_FF=y
CONFIG_HID_ELECOM=y
CONFIG_HID_EZKEY=y
CONFIG_HID_HOLTEK=y
CONFIG_HID_KEYTOUCH=y
CONFIG_HID_KYE=y
CONFIG_HID_UCLOGIC=y
CONFIG_HID_WALTOP=y
CONFIG_HID_GYRATION=y
CONFIG_HID_TWINHAN=y
CONFIG_HID_KENSINGTON=y
CONFIG_HID_LCPOWER=y
# CONFIG_HID_LOGITECH is not set
CONFIG_HID_MAGICMOUSE=y
CONFIG_HID_MICROSOFT=y
# CONFIG_HID_MONTEREY is not set
# CONFIG_HID_MULTITOUCH is not set
# CONFIG_HID_NTRIG is not set
# CONFIG_HID_ORTEK is not set
# CONFIG_HID_PANTHERLORD is not set
# CONFIG_HID_PETALYNX is not set
# CONFIG_HID_PICOLCD is not set
# CONFIG_HID_PRIMAX is not set
# CONFIG_HID_ROCCAT is not set
# CONFIG_HID_SAITEK is not set
# CONFIG_HID_SAMSUNG is not set
# CONFIG_HID_SONY is not set
# CONFIG_HID_SPEEDLINK is not set
# CONFIG_HID_SUNPLUS is not set
# CONFIG_HID_GREENASIA is not set
# CONFIG_HID_SMARTJOYPLUS is not set
# CONFIG_HID_TIVO is not set
# CONFIG_HID_TOPSEED is not set
# CONFIG_HID_THRUSTMASTER is not set
# CONFIG_HID_WACOM is not set
CONFIG_HID_MONTEREY=y
CONFIG_HID_MULTITOUCH=y
CONFIG_HID_NTRIG=y
CONFIG_HID_ORTEK=y
CONFIG_HID_PANTHERLORD=y
CONFIG_HID_PETALYNX=y
CONFIG_HID_PICOLCD=y
CONFIG_HID_PRIMAX=y
CONFIG_HID_ROCCAT=y
CONFIG_HID_SAITEK=y
CONFIG_HID_SAMSUNG=y
CONFIG_HID_SONY=y
CONFIG_HID_SPEEDLINK=y
CONFIG_HID_SUNPLUS=y
CONFIG_HID_GREENASIA=y
CONFIG_HID_SMARTJOYPLUS=y
CONFIG_HID_TIVO=y
CONFIG_HID_TOPSEED=y
CONFIG_HID_THRUSTMASTER=y
CONFIG_HID_WACOM=y
# CONFIG_HID_WIIMOTE is not set
# CONFIG_HID_ZEROPLUS is not set
# CONFIG_HID_ZYDACRON is not set
CONFIG_HID_ZEROPLUS=y
CONFIG_HID_ZYDACRON=y
# CONFIG_USB_ARCH_HAS_OHCI is not set
CONFIG_USB_ARCH_HAS_EHCI=y
# CONFIG_USB_ARCH_HAS_XHCI is not set
@@ -1036,7 +1036,13 @@ config MACH_MSM8X25_C8833D
bool "MSM8X25_C8833D SURF"
help
Support for the HUAWEI 8x25 C8833D board.

config MACH_MSM8X25_Y300_J1
depends on ARCH_MSM8625
depends on !MSM_STACKED_MEMORY
default n
bool "MSM8X25_Y300_J1 SURF"
help
Support for the HUAWEI 8x25 Y300_J1 board.
config MACH_MSM8X25_C8813
depends on ARCH_MSM8625
depends on !MSM_STACKED_MEMORY
@@ -238,14 +238,22 @@ static struct cad_endpoint cad_endpoints_list[] = {
CAD(MTK_HANDSET_MUSIC_TX, 38, (SNDDEV_CAP_TX | SNDDEV_CAP_VOICE)),
CAD(MTK_HEADSET_MUSIC_TX, 39, (SNDDEV_CAP_TX | SNDDEV_CAP_VOICE)),
CAD(MTK_SPEAKER_MUSIC_TX, 40, (SNDDEV_CAP_TX | SNDDEV_CAP_VOICE)),
CAD(WIFI_CALL_HANDSET_RX, 41, (SNDDEV_CAP_RX | SNDDEV_CAP_VOICE)),
CAD(WIFI_CALL_HEADSET_RX, 42, (SNDDEV_CAP_RX | SNDDEV_CAP_VOICE)),
CAD(WIFI_CALL_SPEAKER_RX, 43, (SNDDEV_CAP_RX | SNDDEV_CAP_VOICE)),
CAD(WIFI_CALL_HANDSET_TX, 44, (SNDDEV_CAP_TX | SNDDEV_CAP_VOICE)),
CAD(WIFI_CALL_HEADSET_TX, 45, (SNDDEV_CAP_TX | SNDDEV_CAP_VOICE)),
CAD(WIFI_CALL_SPEAKER_TX, 46, (SNDDEV_CAP_TX | SNDDEV_CAP_VOICE)),
CAD(WIFI_CALL_BT_SCO_RX, 47, (SNDDEV_CAP_RX | SNDDEV_CAP_VOICE)),
CAD(WIFI_CALL_BT_SCO_TX, 48, (SNDDEV_CAP_TX | SNDDEV_CAP_VOICE)),
/*
* NOTE: based on SBA 20301C patch, modify the index of audio path.
*/
CAD(SPEAKER_RINGTONE_RX, 41, (SNDDEV_CAP_RX | SNDDEV_CAP_VOICE)),

CAD(HANDSET_SLOWTALK_RX, 42, (SNDDEV_CAP_RX | SNDDEV_CAP_VOICE)),
CAD(HANDSET_SLOWTALK_TX, 43, (SNDDEV_CAP_RX | SNDDEV_CAP_VOICE)),
CAD(HANDSET_RVE_RX, 44, (SNDDEV_CAP_RX | SNDDEV_CAP_VOICE)),
CAD(HANDSET_RVE_TX, 45, (SNDDEV_CAP_RX | SNDDEV_CAP_VOICE)),
CAD(HANDSET_SLOWTALK_AND_RVE_RX, 46, (SNDDEV_CAP_RX | SNDDEV_CAP_VOICE)),
CAD(HANDSET_SLOWTALK_AND_RVE_TX, 47, (SNDDEV_CAP_RX | SNDDEV_CAP_VOICE)),
CAD(HEADSET_SLOWTALK_RX, 48, (SNDDEV_CAP_RX | SNDDEV_CAP_VOICE)),
CAD(HEADSET_SLOWTALK_TX, 49, (SNDDEV_CAP_RX | SNDDEV_CAP_VOICE)),
CAD(SPEAKER_SLOWTALK_RX, 50, (SNDDEV_CAP_RX | SNDDEV_CAP_VOICE)),
CAD(SPEAKER_SLOWTALK_TX, 51, (SNDDEV_CAP_RX | SNDDEV_CAP_VOICE)),

CAD(MAX, 80, SNDDEV_CAP_NONE),
};
#undef CAD
@@ -426,36 +426,40 @@ static int power_switch(int pm)
/* use gpio free to release */
static int set_touch_interrupt_gpio(void)
{
int gpio_config = 0;
int ret = 0;
int gpio_config = 0;
int ret = 0;

gpio_config = GPIO_CFG(MSM_7X27A_TOUCH_INT_PIN,0, GPIO_CFG_INPUT, GPIO_CFG_PULL_UP,GPIO_CFG_2MA);
ret = gpio_tlmm_config(gpio_config, GPIO_CFG_ENABLE);
ret = gpio_request(MSM_7X27A_TOUCH_INT_PIN, "TOUCH_INT");
if (ret)
{
pr_err("%s:touch int gpio config failed\n", __func__);
pr_err("%s:touch int gpio %d request failed\n", __func__, MSM_7X27A_TOUCH_INT_PIN);
return ret;
}
ret = gpio_request(MSM_7X27A_TOUCH_INT_PIN, "TOUCH_INT");

gpio_config = GPIO_CFG(MSM_7X27A_TOUCH_INT_PIN,0, GPIO_CFG_INPUT, GPIO_CFG_PULL_UP,GPIO_CFG_2MA);
ret = gpio_tlmm_config(gpio_config, GPIO_CFG_ENABLE);
if (ret)
{
pr_err("%s:touch int gpio request failed\n", __func__);
pr_err("%s:touch int gpio %d config failed\n", __func__, MSM_7X27A_TOUCH_INT_PIN);
gpio_free(MSM_7X27A_TOUCH_INT_PIN);
return ret;
}

ret = gpio_direction_input(MSM_7X27A_TOUCH_INT_PIN);
if (ret)
{
pr_err("%s:touch int gpio input failed\n", __func__);
pr_err("%s:touch int gpio %d input failed\n", __func__, MSM_7X27A_TOUCH_INT_PIN);
gpio_free(MSM_7X27A_TOUCH_INT_PIN);
return ret;
}

gpio_free(MSM_7X27A_TOUCH_INT_PIN);
gpio_free(MSM_7X27A_TOUCH_INT_PIN);
return ret;
}
/*we use this to detect the probe is detected*/
static void set_touch_probe_flag(int detected)
{
if(detected >= 0)
if(detected > 0)
{
atomic_set(&touch_detected_yet, 1);
}
@@ -478,27 +482,48 @@ static int read_touch_probe_flag(void)
static int touch_reset(void)
{
int ret = 0;
int gpio_config = 0;
gpio_config = GPIO_CFG(MSM_7x27A_TOUCH_RESET_PIN,0, GPIO_CFG_OUTPUT, GPIO_CFG_PULL_UP,GPIO_CFG_2MA);
ret = gpio_tlmm_config(gpio_config, GPIO_CFG_ENABLE);
int gpio_config = 0;

ret = gpio_request(MSM_7x27A_TOUCH_RESET_PIN, "TOUCH_RESET");
if (ret)
{
pr_err("%s:touch int gpio config failed\n", __func__);
pr_err("%s:touch reset gpio %d request failed\n", __func__, MSM_7x27A_TOUCH_RESET_PIN);
return ret;
}
ret = gpio_request(MSM_7x27A_TOUCH_RESET_PIN, "TOUCH_RESET");

gpio_config = GPIO_CFG(MSM_7x27A_TOUCH_RESET_PIN,0, GPIO_CFG_OUTPUT, GPIO_CFG_PULL_UP,GPIO_CFG_2MA);
ret = gpio_tlmm_config(gpio_config, GPIO_CFG_ENABLE);
if (ret)
{
pr_err("%s:touch int gpio request failed\n", __func__);
pr_err("%s:touch reset gpio %d config failed\n", __func__, MSM_7x27A_TOUCH_RESET_PIN);
gpio_free(MSM_7x27A_TOUCH_RESET_PIN);
return ret;
}

ret = gpio_direction_output(MSM_7x27A_TOUCH_RESET_PIN, 1);
if (ret)
{
pr_err("%s:touch reset gpio %d output failed\n", __func__, MSM_7x27A_TOUCH_RESET_PIN);
gpio_free(MSM_7x27A_TOUCH_RESET_PIN);
return ret;
}
mdelay(5);
ret = gpio_direction_output(MSM_7x27A_TOUCH_RESET_PIN, 0);
if (ret)
{
pr_err("%s:touch reset gpio %d output failed\n", __func__, MSM_7x27A_TOUCH_RESET_PIN);
gpio_free(MSM_7x27A_TOUCH_RESET_PIN);
return ret;
}
mdelay(10);
ret = gpio_direction_output(MSM_7x27A_TOUCH_RESET_PIN, 1);
mdelay(50);//must more than 10ms.
if (ret)
{
pr_err("%s:touch reset gpio %d output failed\n", __func__, MSM_7x27A_TOUCH_RESET_PIN);
gpio_free(MSM_7x27A_TOUCH_RESET_PIN);
return ret;
}
msleep(50);//must more than 10ms.

gpio_free(MSM_7x27A_TOUCH_RESET_PIN);
return ret;
@@ -522,7 +547,8 @@ static int get_touch_resolution(struct tp_resolution_conversion *tp_resolution_t
|| machine_is_msm8x25_U8833()
|| machine_is_msm8x25_H881C()
|| machine_is_msm8x25_C8812P()
|| machine_is_msm8x25_Y301_A1())
|| machine_is_msm8x25_Y301_A1()
|| machine_is_msm8x25_Y300_J1())
{
tp_resolution_type->lcd_x = LCD_X_WVGA;
tp_resolution_type->lcd_y = LCD_Y_WVGA;
@@ -563,15 +589,19 @@ static int get_touch_resolution(struct tp_resolution_conversion *tp_resolution_t
}

/*If product has independent button ,return 1*/
static int read_button_flag(void)
static buttonflag read_button_flag(void)
{
if(machine_is_msm8x25_Y301_A1())
{
return 1 ;
return TOUCH_INDEPENDENT_BUTTON;
}
else if(machine_is_msm8x25_Y300_J1())
{
return TOUCH_NO_BUTTON;
}
else
{
return 0 ;
return TOUCH_VIRTUAL_KEY;
}
}

@@ -894,6 +924,12 @@ static struct i2c_board_info huawei_i2c_board_info[] __initdata =
},
#endif

/*Add new i2c information for flash lm3642*/
#ifdef CONFIG_HUAWEI_FEATURE_LM3642
{
I2C_BOARD_INFO("lm3642" , 0x63),
},
#endif
/* -------------------- huawei nfc -------------------- */
#ifdef CONFIG_HUAWEI_NFC_PN544
{
@@ -1358,7 +1394,10 @@ void __init msm7627a_add_io_devices(void)
/* keypad */
platform_device_register(&kp_pdev);
#else
platform_device_register(&keypad_device_default);
if(machine_is_msm8x25_Y300_J1())
platform_device_register(&keypad_device_y300j1);
else
platform_device_register(&keypad_device_default);
#endif
/* headset */
platform_device_register(&hs_pdev);

2 comments on commit 9a4809f

@Dazzozo

This comment has been minimized.

Copy link
Owner Author

replied Nov 24, 2013

There's also an A1 and A2 release. The A2 release seems to be based on a different CAF tag and the device itself seems to be MSM8930 based.

Unsure if we can move to that release, but it's significantly different. Unsure if we can move to this tbh.

@Fagulhas

This comment has been minimized.

Copy link
Contributor

replied Nov 24, 2013

Compiled and merged the kernel just fine last couple of days. The Y301-A2 has no support for u8815 or even u8833. They completely rewrote the kernel for newer models. It does have a few share of similar drivers that maybe we can use. Y301-A1 and Y300-J1 are 100% identical.

Please sign in to comment.
You can’t perform that action at this time.