/* *brief: get lcd control backlight type */ hw_lcd_ctrl_bl_type get_hw_lcd_ctrl_bl_type(void) { hw_lcd_ctrl_bl_type ctrl_bl_type = CTRL_BL_BY_UNKNOW; /*control backlight by MSM pwm*/ /* U8661 uses PM pwm. */ /* C8820VC uses PM pwm. */ if (machine_is_msm7x27a_umts() || machine_is_msm7x27a_cdma() || machine_is_msm7x27a_U8815() || machine_is_msm7x27a_U8655_EMMC() || machine_is_msm7x27a_U8185() || machine_is_msm7x27a_U8655() || machine_is_msm7x27a_M660() || machine_is_msm7x27a_U8661() || (machine_is_msm7x27a_C8820() && (HW_VER_SUB_VC <= get_hw_sub_board_id())) ) { ctrl_bl_type = CTRL_BL_BY_MSM; } /*control backlight by LCD output pwm*/ else if(machine_is_msm7x27a_C8655_NAND() || (machine_is_msm7x27a_C8820() && (HW_VER_SUB_VA == get_hw_sub_board_id())) || machine_is_msm7x27a_C8825D()) { ctrl_bl_type = CTRL_BL_BY_LCD; } else { ctrl_bl_type = CTRL_BL_BY_LCD; } return ctrl_bl_type; }
/* get sensors list by product */ static int get_sensors_list(void) { int sensors_list = G_SENSOR + L_SENSOR + P_SENSOR + M_SENSOR; /*version A and version B has compass, since version C don't have compass*/ /*add M866*/ if( machine_is_msm7x27a_U8661() || ( machine_is_msm7x27a_C8820() && (HW_VER_SUB_VC <= get_hw_sub_board_id())) || ( machine_is_msm7x27a_C8655_NAND() && (HW_VER_SUB_VE > get_hw_sub_board_id())) ) { sensors_list = G_SENSOR + L_SENSOR + P_SENSOR; } else if (machine_is_msm7x27a_U8655() || machine_is_msm7x27a_U8655_EMMC()|| machine_is_msm7x27a_C8655_NAND() || machine_is_msm7x27a_M660()|| machine_is_msm7x27a_U8815()|| machine_is_msm7x27a_C8820()|| machine_is_msm7x27a_C8825D()) { sensors_list = G_SENSOR + L_SENSOR + P_SENSOR + M_SENSOR; } /* move this part to up */ else if(machine_is_msm7x27a_U8185()) { sensors_list = G_SENSOR; } else { sensors_list = G_SENSOR + L_SENSOR + P_SENSOR + M_SENSOR; } return sensors_list; }
/*=========================================================================== FUNCTION get_compass_gs_position DESCRIPTION This function probe which G-sensor & Campass status type should be used DEPENDENCIES RETURN VALUE None SIDE EFFECTS None ===========================================================================*/ compass_gs_position_type get_compass_gs_position(void) { compass_gs_position_type compass_gs_position=COMPASS_TOP_GS_TOP; /* modify compass and gs position by board id */ //move C8820\25D define from TOP to BOTTOM if (machine_is_msm7x27a_surf() || machine_is_msm7x27a_ffa() || machine_is_msm7x27a_umts() || machine_is_msm7x27a_cdma() || machine_is_msm7x27a_U8815()) { compass_gs_position=COMPASS_TOP_GS_TOP; } /*< DTS2012022006500 yangbo 20120220 begin */ /*version A and version B has compass, since version C don't have compass*/ else if(machine_is_msm7x27a_C8820() && (HW_VER_SUB_VC <= get_hw_sub_board_id())) { compass_gs_position=COMPASS_NONE_GS_BOTTOM; } /* DTS2012022006500 yangbo 20120220 end > */ /* add U8655_EMMC, use the u8655 configuration */ else if (machine_is_msm7x27a_U8655() || machine_is_msm7x27a_U8655_EMMC() || machine_is_msm7x27a_C8655_NAND() || machine_is_msm7x27a_M660() || machine_is_msm7x27a_U8661() || machine_is_msm7x27a_C8820() || machine_is_msm7x27a_C8825D() || machine_is_msm7x30_u8800() || machine_is_msm7x30_u8820() || machine_is_msm7x30_u8800_51() || machine_is_msm8255_u8800_pro() || machine_is_msm8255_u8860() || machine_is_msm8255_c8860() || machine_is_msm8255_u8860lp() /* < DTS2012022905490 ganfan 20120301 begin */ || machine_is_msm8255_u8860_r() /* DTS2012022905490 ganfan 20120301 end > */ || machine_is_msm8255_u8860_92() || machine_is_msm8255_u8860_51()) { compass_gs_position=COMPASS_BOTTOM_GS_BOTTOM; } else if (machine_is_msm7x27a_U8185()) { compass_gs_position=COMPASS_NONE_GS_TOP; } else if(machine_is_msm8255_u8680() || machine_is_msm8255_u8730()) { compass_gs_position=COMPASS_TOP_GS_TOP; } /*< DTS2012022300887 fengwei 20120224 begin */ else if (machine_is_msm7x27a_C8668D() ) { compass_gs_position = COMPASS_BOTTOM_GS_TOP; } /* DTS2012022300887 fengwei 20120224 end >*/ return compass_gs_position; }
/*=========================================================================== FUNCTION get_compass_gs_position DESCRIPTION This function probe which G-sensor & Campass status type should be used DEPENDENCIES RETURN VALUE None SIDE EFFECTS None ===========================================================================*/ compass_gs_position_type get_compass_gs_position(void) { compass_gs_position_type compass_gs_position=COMPASS_TOP_GS_TOP; /* modify compass and gs position by board id */ //move C8820\25D define from TOP to BOTTOM if (machine_is_msm7x27a_surf() || machine_is_msm7x27a_ffa() || machine_is_msm7x27a_U8815() || machine_is_msm8x25_C8950D() || (machine_is_msm8x25_U8950() && (HW_VER_SUB_VB <= get_hw_sub_board_id())) || machine_is_msm8x25_U8950D() ) { compass_gs_position=COMPASS_TOP_GS_TOP; } /*version A and version B has compass, since version C don't have compass*/ else if(machine_is_msm7x27a_C8820() && (HW_VER_SUB_VC <= get_hw_sub_board_id())) { compass_gs_position=COMPASS_NONE_GS_BOTTOM; } /* add U8655_EMMC, use the u8655 configuration */ else if (machine_is_msm7x27a_U8655() || machine_is_msm7x27a_U8655_EMMC() || machine_is_msm7x27a_C8655_NAND() || machine_is_msm7x27a_M660() || machine_is_msm7x27a_U8661() || machine_is_msm7x27a_C8820() || machine_is_msm8x25_C8825D() || machine_is_msm7x30_u8800() || machine_is_msm7x30_u8820() || machine_is_msm7x30_u8800_51() || machine_is_msm8255_u8800_pro() || machine_is_msm8255_u8860() || machine_is_msm8255_c8860() || machine_is_msm8x25_U8825() || machine_is_msm8x25_U8825D() || (machine_is_msm8x25_U8950() && (HW_VER_SUB_VA == get_hw_sub_board_id())) || machine_is_msm8255_u8860lp() || machine_is_msm8255_u8860_r() || machine_is_msm8255_u8860_92() || machine_is_msm8255_u8860_51()) { compass_gs_position=COMPASS_BOTTOM_GS_BOTTOM; } else if (machine_is_msm7x27a_U8185()) { compass_gs_position=COMPASS_NONE_GS_TOP; } else if(machine_is_msm8255_u8680() || machine_is_msm8255_u8730()) { compass_gs_position=COMPASS_TOP_GS_TOP; } else if (machine_is_msm7x27a_C8668D() ) { compass_gs_position = COMPASS_BOTTOM_GS_TOP; } return compass_gs_position; }
/* C8820VC uses PM pwm. */ hw_lcd_ctrl_bl_type get_hw_lcd_ctrl_bl_type(void) { hw_lcd_ctrl_bl_type ctrl_bl_type = CTRL_BL_BY_UNKNOW; /*< DTS2012021602342 zhongjinrong 20120224 begin */ /*control backlight by MSM pwm*/ /*< DTS2012022300887 fengwei 20120224 begin */ /* C8668D uses PM pwm. */ if (machine_is_msm7x27a_umts() || machine_is_msm7x27a_cdma() || machine_is_msm7x27a_U8815() || machine_is_msm7x27a_U8655_EMMC() || machine_is_msm7x27a_U8185() || machine_is_msm7x27a_U8655() || machine_is_msm7x27a_M660() || machine_is_msm7x30_u8800() || machine_is_msm7x30_u8820() || machine_is_msm7x30_u8800_51() || machine_is_msm8255_u8800_pro() || machine_is_msm8255_u8860() || machine_is_msm8255_c8860() || machine_is_msm8255_u8860_92() || (machine_is_msm7x27a_C8820() && (HW_VER_SUB_VC <= get_hw_sub_board_id())) ||machine_is_msm7x27a_U8661() || machine_is_msm7x27a_C8668D() ) /* DTS2012022300887 fengwei 20120224 end >*/ /* DTS2012021602342 zhongjinrong 20120224 end >*/ { ctrl_bl_type = CTRL_BL_BY_MSM; } /*control backlight by LCD output pwm*/ /*< DTS2012021007223 lijianzhao 20120211 begin */ else if(machine_is_msm7x27a_C8655_NAND() || (machine_is_msm7x27a_C8820() && (HW_VER_SUB_VA == get_hw_sub_board_id())) || machine_is_msm7x27a_C8825D() /* < DTS2012022905490 ganfan 20120301 begin */ || machine_is_msm8255_u8860_r() /* DTS2012022905490 ganfan 20120301 end > */ || machine_is_msm8255_u8860lp() || machine_is_msm8255_u8860_51() /*< DTS2012042605475 zhongjinrong 20120426 begin */ || machine_is_msm8255_u8667() || machine_is_msm8255_u8680() || machine_is_msm8255_u8730()) /* DTS2012042605475 zhongjinrong 20120426 end >*/ /* DTS2012021007223 lijianzhao 20120211 end >*/ { ctrl_bl_type = CTRL_BL_BY_LCD; } else { ctrl_bl_type = CTRL_BL_BY_LCD; } return ctrl_bl_type; }
/* *brief: get lcd panel resolution */ lcd_type get_hw_lcd_resolution_type(void) { lcd_type lcd_resolution = LCD_IS_HVGA; if ( machine_is_msm7x27a_U8815() || machine_is_msm7x27a_C8820() || machine_is_msm7x27a_C8825D() ) { lcd_resolution = LCD_IS_WVGA; } /* U8661 uses HVGA */ else if ( machine_is_msm7x27a_M660() || machine_is_msm7x27a_U8655() || machine_is_msm7x27a_U8655_EMMC()|| machine_is_msm7x27a_C8655_NAND() || machine_is_msm7x27a_U8661()) { lcd_resolution = LCD_IS_HVGA; } else if (machine_is_msm7x27a_U8185()) { lcd_resolution = LCD_IS_QVGA; } else { lcd_resolution = LCD_IS_HVGA; } return lcd_resolution; }
/* C8820VC uses PM pwm. */ hw_lcd_ctrl_bl_type get_hw_lcd_ctrl_bl_type(void) { hw_lcd_ctrl_bl_type ctrl_bl_type = CTRL_BL_BY_UNKNOW; /*control backlight by MSM pwm*/ /* C8668D uses PM pwm. */ if (machine_is_msm7x27a_U8815() || machine_is_msm7x27a_U8655_EMMC() || machine_is_msm7x27a_U8185() || machine_is_msm7x27a_U8655() || machine_is_msm7x27a_M660() || machine_is_msm7x27a_H867G() || machine_is_msm7x27a_H868C() || machine_is_msm7x30_u8800() || machine_is_msm7x30_u8820() || machine_is_msm7x30_u8800_51() || machine_is_msm8255_u8800_pro() || machine_is_msm8255_u8860() || machine_is_msm8255_c8860() || machine_is_msm8255_u8860_92() || (machine_is_msm7x27a_C8820() && (HW_VER_SUB_VC <= get_hw_sub_board_id())) ||machine_is_msm7x27a_U8661() || machine_is_msm7x27a_C8668D() ) { ctrl_bl_type = CTRL_BL_BY_MSM; } /*control backlight by LCD output pwm*/ else { ctrl_bl_type = CTRL_BL_BY_LCD; } return ctrl_bl_type; }
/* enable C8825D and U8825 huawei fir */ audio_property_type get_audio_fir_enabled(void) { /* add the fir enabl for C8833D U8833D U8833 */ /* add the fir for c8812e */ /* add fir enable for G510U */ if(machine_is_msm8x25_C8825D() || machine_is_msm8x25_U8825D() || machine_is_msm8x25_U8825() || machine_is_msm8x25_C8813() || machine_is_msm8x25_U8951() || machine_is_msm8x25_U8951D() || machine_is_msm8x25_H881C() || machine_is_msm8x25_C8812P() || machine_is_msm7x27a_C8820() || machine_is_msm7x27a_H867G() || machine_is_msm7x27a_H868C() || machine_is_msm8x25_C8833D() || machine_is_msm8x25_U8833D() || machine_is_msm8x25_U8833() ) { return FIR_ENABLE; } else { return FIR_DISABLE; } }
/*=========================================================================== FUNCTION audio_property_type get_audio_mic_type DESCRIPTION This function descripe the fluence of dual mic arithmetic is enable or disable DEPENDENCIES RETURN VALUE SINGLE_MIC or DUAL_MIC SIDE EFFECTS None ===========================================================================*/ audio_property_type get_audio_mic_type(void) { if(machine_is_msm7x27a_U8185() || (machine_is_msm7x27a_C8820() && (HW_VER_SUB_VC <= get_hw_sub_board_id())) || machine_is_msm8x25_U8825() || machine_is_msm8x25_U8825D() || machine_is_msm8x25_C8950D() || machine_is_msm8x25_U8950() || machine_is_msm8x25_U8950D() || machine_is_msm8x25_C8825D() || machine_is_msm8x25_C8833D() || machine_is_msm8x25_U8951D() || machine_is_msm8x25_U8951() || machine_is_msm8x25_U8833D() || machine_is_msm8x25_U8833() || machine_is_msm8x25_C8813() || machine_is_msm8x25_C8812P() ) { return SINGLE_MIC; } else { return DUAL_MIC; } }
/* FUNCTION get_hw_sd_trigger_type * DESCRIPTION * get the bt wakeup gpio type * * RETURN VALUE * the gpio number */ hw_bt_wakeup_gpio_type get_hw_bt_wakeup_gpio_type(void) { hw_bt_wakeup_gpio_type bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_NONES; hw_ver_sub_type ver_sub_type = HW_VER_SUB_MAX; ver_sub_type = get_hw_sub_board_id(); /* U8825 use qcom bt, does not need BT_WAKEUP_GPIO */ if (machine_is_msm7x27a_U8815() || machine_is_msm7x27a_U8655() || machine_is_msm7x27a_U8655_EMMC() || machine_is_msm7x27a_C8668D()) { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_83; } else if (machine_is_msm8x25_C8950D() || machine_is_msm8x25_U8950() || machine_is_msm7x27a_H867G() || machine_is_msm7x27a_H868C() || machine_is_msm8x25_H881C() || machine_is_msm8x25_U8950D()) { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_27; } else if (machine_is_msm7x27a_C8655_NAND()) { if (ver_sub_type > HW_VER_SUB_VB) { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_27; } else { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_83; } } else if (machine_is_msm7x27a_M660()) { if (ver_sub_type > HW_VER_SUB_VA) { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_27; } else { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_83; } } else if (machine_is_msm7x27a_C8820()) { if (ver_sub_type > HW_VER_SUB_VB) { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_27; } else { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_83; } } /* C8825D use qcom bt, does not need BT_WAKEUP_GPIO, and move C8668D above */ printk(KERN_INFO "the bt_wakeup_gpio_type is %d\n", bt_wakeup_gpio_type); return bt_wakeup_gpio_type; }
/* FUNCTION get_hw_sd_trigger_type * DESCRIPTION * get the bt wakeup gpio type * * RETURN VALUE * the gpio number */ hw_bt_wakeup_gpio_type get_hw_bt_wakeup_gpio_type(void) { hw_bt_wakeup_gpio_type bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_NONES; hw_ver_sub_type ver_sub_type = HW_VER_SUB_MAX; ver_sub_type = get_hw_sub_board_id(); if (machine_is_msm7x27a_U8815()) { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_83; } else if (machine_is_msm7x27a_U8655()) { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_83; } else if (machine_is_msm7x27a_U8655_EMMC()) { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_83; } else if (machine_is_msm7x27a_C8655_NAND()) { if (ver_sub_type > HW_VER_SUB_VB) { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_27; } else { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_83; } } else if (machine_is_msm7x27a_M660()) { if (ver_sub_type > HW_VER_SUB_VA) { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_27; } else { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_83; } } else if (machine_is_msm7x27a_C8820()) { if (ver_sub_type > HW_VER_SUB_VB) { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_27; } else { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_83; } } else if (machine_is_msm7x27a_C8825D()) { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_83; } printk(KERN_INFO "the bt_wakeup_gpio_type is %d\n", bt_wakeup_gpio_type); return bt_wakeup_gpio_type; }
/* *brief: get lcd panel resolution */ lcd_type get_hw_lcd_resolution_type(void) { lcd_type lcd_resolution = LCD_IS_HVGA; /*< DTS2012020306500 lijianzhao 20120204 begin */ /* add 8x55 paltform products */ if ( machine_is_msm7x27a_U8815() || machine_is_msm7x27a_C8820() || machine_is_msm7x27a_C8825D() || machine_is_msm7x30_u8800() || machine_is_msm7x30_u8820() || machine_is_msm7x30_u8800_51() || machine_is_msm8255_u8800_pro() || machine_is_msm8255_u8680() || machine_is_msm8255_u8730()) { lcd_resolution = LCD_IS_WVGA; } else if (machine_is_msm8255_u8860() || machine_is_msm8255_c8860() || machine_is_msm8255_u8860lp() /* < DTS2012022905490 ganfan 20120301 begin */ || machine_is_msm8255_u8860_r() /* DTS2012022905490 ganfan 20120301 end > */ || machine_is_msm8255_u8860_92() || machine_is_msm8255_u8860_51()) { lcd_resolution = LCD_IS_FWVGA; } /* DTS2012020306500 lijianzhao 20120204 end >*/ /*< DTS2012021602342 zhongjinrong 20120224 begin */ /*< DTS2012021007223 lijianzhao 20120211 begin */ /*< DTS2012022300887 fengwei 20120224 begin */ /* C8668D uses HVGA. */ else if ( machine_is_msm7x27a_M660() || machine_is_msm7x27a_U8655() || machine_is_msm7x27a_U8655_EMMC() || machine_is_msm7x27a_C8655_NAND() || machine_is_msm8255_u8667() || machine_is_msm7x27a_U8661() || machine_is_msm7x27a_C8668D()) /* DTS2012022300887 fengwei 20120224 end >*/ /* DTS2012021007223 lijianzhao 20120211 end >*/ /* DTS2012021602342 zhongjinrong 20120224 end >*/ { lcd_resolution = LCD_IS_HVGA; } else if (machine_is_msm7x27a_U8185()) { lcd_resolution = LCD_IS_QVGA; } else { lcd_resolution = LCD_IS_HVGA; } return lcd_resolution; }
/* *brief: get lcd panel resolution */ lcd_type get_hw_lcd_resolution_type(void) { lcd_type lcd_resolution = LCD_IS_HVGA; /* add 8x55 paltform products */ /*delete some lines for changing the lcd resolution of C8950D/U8950*/ if ( machine_is_msm7x27a_U8815() || machine_is_msm8x25_U8825() || machine_is_msm8x25_U8825D() || machine_is_msm7x27a_C8820() || machine_is_msm8x25_C8825D() || machine_is_msm7x30_u8800() || machine_is_msm7x30_u8820() || machine_is_msm7x30_u8800_51() || machine_is_msm8255_u8800_pro() || machine_is_msm8255_u8680() || machine_is_msm8255_u8730()) { lcd_resolution = LCD_IS_WVGA; } else if (machine_is_msm8x25_C8950D() || machine_is_msm8x25_U8950() || machine_is_msm8x25_U8950D()) { lcd_resolution = LCD_IS_QHD; } else if (machine_is_msm8255_u8860() || machine_is_msm8255_c8860() || machine_is_msm8255_u8860lp() || machine_is_msm8255_u8860_r() || machine_is_msm8255_u8860_92() || machine_is_msm8255_u8860_51()) { lcd_resolution = LCD_IS_FWVGA; } /* C8668D uses HVGA. */ else if ( machine_is_msm7x27a_M660() || machine_is_msm7x27a_U8655() || machine_is_msm7x27a_U8655_EMMC() || machine_is_msm7x27a_C8655_NAND() || machine_is_msm8255_u8667() || machine_is_msm7x27a_U8661() || machine_is_msm7x27a_C8668D()) { lcd_resolution = LCD_IS_HVGA; } else if (machine_is_msm7x27a_U8185()) { lcd_resolution = LCD_IS_QVGA; } else { lcd_resolution = LCD_IS_HVGA; } return lcd_resolution; }
/* FUNCTION get_hw_ds_type * DEPENDENCIES * get single sim card or double sim card, * affect led. * RETURN VALUE * single sim card:sim card type HW_NODS * double sim card:sim card type HW_DS */ hw_ds_type get_hw_ds_type(void) { hw_ds_type ret = HW_NONES; if( machine_is_msm7x27a_C8820() || machine_is_msm7x27a_C8825D() || machine_is_msm7x27a_U8661()) { ret = HW_DS; } else { ret = HW_NODS; } return ret; }
/* add C8820VC for SINGLE_MIC */ audio_property_type get_audio_mic_type(void) { if(machine_is_msm7x27a_U8185() || machine_is_msm7x27a_U8661() || (machine_is_msm7x27a_C8820() && (HW_VER_SUB_VC <= get_hw_sub_board_id())) ) { return SINGLE_MIC; } else { return DUAL_MIC; } }
/* if you want to enable fir function, please return FIR_ENABLE for adapted project */ audio_property_type get_audio_fir_enabled(void) { /* < DTS2012040701964 taohanwen 20120407 begin */ if (machine_is_msm7x27a_C8820()) { return FIR_ENABLE; } else { return FIR_DISABLE; } /* DTS2012040701964 taohanwen 20120407 end > */ }
hw_camera_type get_hw_camera_mirror_type(void) { hw_camera_type ret = HW_CAMERA_NONES; if( machine_is_msm7x27a_C8820() || machine_is_msm7x27a_U8661()) { ret = HW_MIRROR_AND_FLIP; } else { ret = HW_NOT_MIRROR_OR_FLIP; } return ret; }
/*return config array for tp performance*/ unsigned char * get_config_array() { if (machine_is_msm7x27a_C8820() || machine_is_msm7x27a_C8825D() ) { return get_c8820_config_array(); } else if (machine_is_msm7x27a_C8655_NAND()) { return get_c8655_config_array(); } else if (machine_is_msm7x27a_M660()) { return get_m660_config_array(); } return NULL; }
hw_camera_type get_hw_camera_mirror_type(void) { hw_camera_type ret = HW_NOT_MIRROR_OR_FLIP; if( machine_is_msm7x27a_C8820() || machine_is_msm7x27a_U8661() || machine_is_msm7x27a_U8655_EMMC() || machine_is_msm7x27a_H867G() || machine_is_msm7x27a_H868C()) { /*back camera should mirror and flip*/ ret |= HW_MIRROR_AND_FLIP; } if(machine_is_msm8x25_U8951() ||machine_is_msm8x25_U8951D()) { /*front camera should mirror and flip*/ ret |= HW_MIRROR_AND_FLIP << 1; } return ret; }
/* FUNCTION get_hw_ds_type * DEPENDENCIES * get single sim card or double sim card, * affect led. * RETURN VALUE * single sim card:sim card type HW_NODS * double sim card:sim card type HW_DS */ hw_ds_type get_hw_ds_type(void) { hw_ds_type ret = HW_NONES; /*add C8668D type*/ if( machine_is_msm7x27a_C8820() || machine_is_msm8x25_C8825D() || machine_is_msm8x25_U8825() || machine_is_msm8x25_U8825D() || machine_is_msm8x25_U8950D() || (machine_is_msm8x25_U8950() && (HW_VER_SUB_VB <= get_hw_sub_board_id())) || machine_is_msm7x27a_U8661() || machine_is_msm7x27a_C8668D()) { ret = HW_DS; } else { ret = HW_NODS; } return ret; }
/* FUNCTION get_hw_ds_type * DEPENDENCIES * get single sim card or double sim card, * affect led. * RETURN VALUE * single sim card:sim card type HW_NODS * double sim card:sim card type HW_DS */ hw_ds_type get_hw_ds_type(void) { hw_ds_type ret = HW_NONES; /* < DTS2011122105081 niguodong 20111222 begin */ /*< DTS2012022300887 fengwei 20120224 begin */ /*add C8668D type*/ if( machine_is_msm7x27a_C8820() || machine_is_msm7x27a_C8825D() || machine_is_msm7x27a_U8661() || machine_is_msm7x27a_C8668D()) /* DTS2012022300887 fengwei 20120224 end >*/ /* DTS2011122105081 niguodong 20111222 end > */ { ret = HW_DS; } else { ret = HW_NODS; } return ret; }
lcd_panel_type get_lcd_panel_type(void) { lcd_panel_type hw_lcd_panel = LCD_NONE; if ( machine_is_msm7x30_u8800() || machine_is_msm7x30_u8820() || machine_is_msm7x30_u8800_51() || machine_is_msm8255_u8800_pro()) { switch (lcd_id) { case LCD_HW_ID0: hw_lcd_panel = LCD_NT35582_BYD_WVGA; break; case LCD_HW_ID1: hw_lcd_panel = LCD_NT35582_TRULY_WVGA; break; case LCD_HW_ID2: hw_lcd_panel = LCD_NT35510_ALPHA_SI_WVGA; break; case LCD_HW_ID3: hw_lcd_panel = LCD_NT35510_ALPHA_SI_WVGA_TYPE2; break; default : hw_lcd_panel = LCD_NT35510_ALPHA_SI_WVGA; break; } } else if (machine_is_msm8255_u8860() || machine_is_msm8255_c8860() || machine_is_msm8255_u8860lp() || machine_is_msm8255_u8860_r() || machine_is_msm8255_u8860_92() || machine_is_msm8255_u8860_51()) { switch (lcd_id) { case LCD_HW_ID0: hw_lcd_panel = LCD_NT35560_TOSHIBA_FWVGA; break; default : hw_lcd_panel = LCD_NT35560_TOSHIBA_FWVGA; break; } } else if( machine_is_msm8255_u8680() || machine_is_msm8255_u8730()) { switch (lcd_id) { case LCD_HW_ID0: hw_lcd_panel = MDDI_RSP61408_CHIMEI_WVGA; break; case LCD_HW_ID1: hw_lcd_panel = MDDI_HX8369A_TIANMA_WVGA; break; case LCD_HW_ID2: hw_lcd_panel = MDDI_RSP61408_BYD_WVGA; break; default : hw_lcd_panel = MDDI_RSP61408_CHIMEI_WVGA; break; } } else if( machine_is_msm8255_u8667()) { switch (lcd_id) { case LCD_HW_ID0: hw_lcd_panel = MDDI_HX8357C_CHIMEI_HVGA; break; case LCD_HW_ID2: hw_lcd_panel = MDDI_HX8357C_CHIMEI_IPS_HVGA; break; case LCD_HW_ID3: hw_lcd_panel = MDDI_HX8357C_TIANMA_HVGA; break; default: hw_lcd_panel = MDDI_HX8357C_CHIMEI_HVGA; break; } } /*delete some lines for changing the lcd panel type of C8950D/U8950D*/ else if( machine_is_msm7x27a_U8815() || machine_is_msm7x27a_C8820() || machine_is_msm8x25_U8825() || machine_is_msm8x25_U8825D() || machine_is_msm8x25_C8825D() ) { switch (lcd_id) { case LCD_HW_ID0: hw_lcd_panel = MIPI_RSP61408_CHIMEI_WVGA; break; case LCD_HW_ID1: hw_lcd_panel = MIPI_HX8369A_TIANMA_WVGA; break; case LCD_HW_ID2: hw_lcd_panel = MIPI_RSP61408_BYD_WVGA; break; case LCD_HW_ID3: hw_lcd_panel = MIPI_RSP61408_TRULY_WVGA; break; default: /*no mipi LCD lead to block, so default lcd RGB */ hw_lcd_panel = MIPI_RSP61408_CHIMEI_WVGA; break; } } else if (machine_is_msm8x25_C8950D() || machine_is_msm8x25_U8950() || machine_is_msm8x25_U8950D()) { switch (lcd_id) { case LCD_HW_ID3: hw_lcd_panel = MIPI_NT35516_TIANMA_QHD; break; default: hw_lcd_panel = MIPI_NT35516_TIANMA_QHD; break; } } else if( machine_is_msm7x27a_U8655() || machine_is_msm7x27a_U8655_EMMC() || machine_is_msm7x27a_C8655_NAND() || machine_is_msm7x27a_U8661() || machine_is_msm7x27a_C8668D()) { switch (lcd_id) { case LCD_HW_ID0: hw_lcd_panel = MIPI_HX8357C_CHIMEI_HVGA; break; case LCD_HW_ID1: hw_lcd_panel = MIPI_HX8357C_TIANMA_IPS_HVGA; break; case LCD_HW_ID2: hw_lcd_panel = MIPI_HX8357C_CHIMEI_IPS_HVGA; break; case LCD_HW_ID3: hw_lcd_panel = MIPI_HX8357C_TIANMA_HVGA; break; default: /*no mipi LCD lead to block, so default lcd RGB */ hw_lcd_panel = LCD_HX8357B_TIANMA_HVGA; break; } } else if( machine_is_msm7x27a_U8185()) { switch(lcd_id) { case LCD_HW_ID0: hw_lcd_panel = LCD_HX8347D_TRULY_QVGA; break; case LCD_HW_ID2: hw_lcd_panel = LCD_HX8347G_TIANMA_QVGA; break; case LCD_HW_ID3: hw_lcd_panel = LCD_HX8347D_CHIMEI_QVGA; break; default: hw_lcd_panel = LCD_HX8347G_TIANMA_QVGA; break; } } else if(machine_is_msm7x27a_M660()) { switch(lcd_id) { case LCD_HW_ID0: hw_lcd_panel = LCD_HX8357C_TIANMA_HVGA; break; case LCD_HW_ID1: hw_lcd_panel = LCD_HX8357B_TIANMA_HVGA; break; default: hw_lcd_panel = LCD_HX8357C_TIANMA_HVGA; break; } } else { hw_lcd_panel = LCD_HX8357B_TIANMA_HVGA; } return hw_lcd_panel; }
/*configure GPIO 25 Of PIMIC as PWM to driver LED*/ int led_pwm_gpio_config(void) { int rc; struct pm_gpio backlight_drv = { .direction = PM_GPIO_DIR_OUT, .output_buffer = PM_GPIO_OUT_BUF_CMOS, .output_value = 0, .pull = PM_GPIO_PULL_NO, .vin_sel = 0, .out_strength = PM_GPIO_STRENGTH_HIGH, .function = PM_GPIO_FUNC_2, .inv_int_pol = 1, }; if(machine_is_msm8255_u8860lp() || machine_is_msm8255_u8860_r() ||machine_is_msm8255_u8860_51()) { rc = pm8xxx_gpio_config( 24, &backlight_drv); } else { rc = -1; } if (rc) { pr_err("%s LED backlight GPIO config failed\n", __func__); return rc; } return 0; } #endif static void msm_keypad_bl_led_set(struct led_classdev *led_cdev, enum led_brightness value) { #ifdef CONFIG_HUAWEI_LEDS_PMIC int ret = 0; /* 7x27a platform use mpp7 as keypad backlight */ #ifdef CONFIG_ARCH_MSM7X27A if(machine_is_msm7x27a_C8820()) { ret = pmic_secure_mpp_config_i_sink(PM_MPP_7, PM_MPP__I_SINK__LEVEL_5mA, \ (!!value) ? PM_MPP__I_SINK__SWITCH_ENA : PM_MPP__I_SINK__SWITCH_DIS); } else { /* use pwm to control the brightness of keypad backlight*/ /* make sure the led is drived by pwm when */ /* the system sleep indicator switch is on */ pmapp_button_backlight_init(); ret = pmapp_button_backlight_set_brightness(value); } #else if(machine_is_msm7x30_u8800() || machine_is_msm7x30_u8800_51() || machine_is_msm8255_u8800_pro() ) { ret = pmic_set_led_intensity(LED_KEYPAD, !( ! value)); } else if( machine_is_msm8255_u8860lp() || machine_is_msm8255_u8860_r() ||machine_is_msm8255_u8860_51()) { pwm_config(bl_pwm, LED_PWM_DUTY_LEVEL*value/NSEC_PER_USEC, LED_PWM_PERIOD/NSEC_PER_USEC); pwm_enable(bl_pwm); } else if(machine_is_msm7x30_u8820() || (machine_is_msm8255_u8730())) { ret = pmic_set_mpp6_led_intensity(!( ! value)); } /*< when the value between 0 and 255,set the key brightness is LED_BRIGHRNESS_LEVEL or set the brightness is 0 */ else if( machine_is_msm8255_u8860() || machine_is_msm8255_c8860() || machine_is_msm8255_u8860_92()) { if(LED_BRIGHTNESS_OFF >= value || LED_PWM_LEVEL < value ) { ret = pmic_set_keyled_intensity(LED_KEYPAD,LED_BRIGHTNESS_OFF ); } else { ret = pmic_set_keyled_intensity(LED_KEYPAD, LED_BRIGHTNESS_LEVEL); } } else if(machine_is_msm8255_u8680()) { /* Set keypad led brightness level 12 for U8680 */ if(LED_BRIGHTNESS_OFF >= value || LED_PWM_LEVEL < value) { ret = pmic_set_keyled_intensity(LED_KEYPAD,LED_BRIGHTNESS_OFF); } else { ret = pmic_set_keyled_intensity(LED_KEYPAD, LED_BRIGHTNESS_LEVEL_U8680); } } else if(machine_is_msm8255_u8667()) { /* Set keypad led brightness level 16 for U8667 */ if(LED_BRIGHTNESS_OFF >= value || LED_PWM_LEVEL < value) { ret = pmic_set_keyled_intensity(LED_KEYPAD, LED_BRIGHTNESS_OFF); } else { ret = pmic_set_keyled_intensity(LED_KEYPAD, LED_BRIGHTNESS_LEVEL_U8667); } } #endif if (ret) dev_err(led_cdev->dev, "can't set keypad backlight\n"); #else int ret; ret = pmic_set_led_intensity(LED_KEYPAD, value / MAX_KEYPAD_BL_LEVEL); if (ret) dev_err(led_cdev->dev, "can't set keypad backlight\n"); #endif }
lcd_panel_type get_lcd_panel_type(void) { lcd_panel_type hw_lcd_panel = LCD_NONE; if ( machine_is_msm7x30_u8800() || machine_is_msm7x30_u8820() || machine_is_msm7x30_u8800_51() || machine_is_msm8255_u8800_pro()) { switch (lcd_id) { case LCD_HW_ID0: hw_lcd_panel = LCD_NT35582_BYD_WVGA; break; case LCD_HW_ID1: hw_lcd_panel = LCD_NT35582_TRULY_WVGA; break; case LCD_HW_ID2: hw_lcd_panel = LCD_NT35510_ALPHA_SI_WVGA; break; case LCD_HW_ID3: hw_lcd_panel = LCD_NT35510_ALPHA_SI_WVGA_TYPE2; break; default : hw_lcd_panel = LCD_NT35510_ALPHA_SI_WVGA; break; } } else if (machine_is_msm8255_u8860() || machine_is_msm8255_c8860() || machine_is_msm8255_u8860lp() /* < DTS2012022905490 ganfan 20120301 begin */ || machine_is_msm8255_u8860_r() /* DTS2012022905490 ganfan 20120301 end > */ || machine_is_msm8255_u8860_92() || machine_is_msm8255_u8860_51()) { switch (lcd_id) { case LCD_HW_ID0: hw_lcd_panel = LCD_NT35560_TOSHIBA_FWVGA; break; default : hw_lcd_panel = LCD_NT35560_TOSHIBA_FWVGA; break; } } else if( machine_is_msm8255_u8680() || machine_is_msm8255_u8730()) { /*< DTS2012021007223 lijianzhao 20120211 begin */ /*< DTS2012021602342 zhongjinrong 20120224 begin */ switch (lcd_id) { case LCD_HW_ID0: hw_lcd_panel = MDDI_RSP61408_CHIMEI_WVGA; break; case LCD_HW_ID1: hw_lcd_panel = MDDI_HX8369A_TIANMA_WVGA; break; case LCD_HW_ID2: hw_lcd_panel = MDDI_RSP61408_BYD_WVGA; break; /*< DTS2012042605475 zhongjinrong 20120426 begin */ /* <DTS2012030102766 sunkai 20120301 begin */ case LCD_HW_ID3: hw_lcd_panel = MDDI_RSP61408_TRULY_WVGA; break; /* DTS2012030102766 sunkai 20120301 end> */ /* DTS2012042605475 zhongjinrong 20120426 end >*/ default : hw_lcd_panel = MDDI_RSP61408_CHIMEI_WVGA; break; } /* DTS2012021602342 zhongjinrong 20120224 end >*/ } else if( machine_is_msm8255_u8667()) { switch (lcd_id) { case LCD_HW_ID0: hw_lcd_panel = MDDI_HX8357C_CHIMEI_HVGA; break; /*< DTS2012042605475 zhongjinrong 20120426 begin */ /*< DTS2012022401352 qitongliang 20120224 begin */ case LCD_HW_ID1: hw_lcd_panel = MDDI_HX8357C_TIANMA_IPS_HVGA; break; /* DTS2012022401352 qitongliang 20120224 end >*/ /* DTS2012042605475 zhongjinrong 20120426 end >*/ case LCD_HW_ID2: hw_lcd_panel = MDDI_HX8357C_CHIMEI_IPS_HVGA; break; case LCD_HW_ID3: hw_lcd_panel = MDDI_HX8357C_TIANMA_HVGA; break; default: hw_lcd_panel = MDDI_HX8357C_CHIMEI_HVGA; break; } } /* DTS2012021007223 lijianzhao 20120211 end >*/ else if( machine_is_msm7x27a_umts() || machine_is_msm7x27a_cdma()) { switch (lcd_id) { case LCD_HW_ID0: hw_lcd_panel = MIPI_NT35560_TOSHIBA_FWVGA; break; case LCD_HW_ID1: hw_lcd_panel = LCD_HX8357B_TIANMA_HVGA; break; default: /*no mipi LCD lead to block, so default lcd RGB */ hw_lcd_panel = LCD_HX8357B_TIANMA_HVGA; break; } } else if( machine_is_msm7x27a_U8815() || machine_is_msm7x27a_C8820() || machine_is_msm7x27a_C8825D() ) { switch (lcd_id) { case LCD_HW_ID0: hw_lcd_panel = MIPI_RSP61408_CHIMEI_WVGA; break; case LCD_HW_ID1: hw_lcd_panel = MIPI_HX8369A_TIANMA_WVGA; break; case LCD_HW_ID2: hw_lcd_panel = MIPI_RSP61408_BYD_WVGA; break; /* <DTS2012022501992 liguosheng 20120229 begin */ case LCD_HW_ID3: hw_lcd_panel = MIPI_RSP61408_TRULY_WVGA; break; /* DTS2012022501992 liguosheng 20120229 end> */ default: /*no mipi LCD lead to block, so default lcd RGB */ hw_lcd_panel = LCD_HX8357B_TIANMA_HVGA; break; } } /*< DTS2012022300887 fengwei 20120224 begin */ else if( machine_is_msm7x27a_U8655() || machine_is_msm7x27a_U8655_EMMC() || machine_is_msm7x27a_C8655_NAND() || machine_is_msm7x27a_U8661() || machine_is_msm7x27a_C8668D()) /* DTS2012022300887 fengwei 20120224 end >*/ { switch (lcd_id) { case LCD_HW_ID0: hw_lcd_panel = MIPI_HX8357C_CHIMEI_HVGA; break; /* <DTS2012022501992 liguosheng 20120229 begin */ case LCD_HW_ID1: hw_lcd_panel = MIPI_HX8357C_TIANMA_IPS_HVGA; break; /* DTS2012022501992 liguosheng 20120229 end> */ case LCD_HW_ID2: hw_lcd_panel = MIPI_HX8357C_CHIMEI_IPS_HVGA; break; case LCD_HW_ID3: hw_lcd_panel = MIPI_HX8357C_TIANMA_HVGA; break; default: /*no mipi LCD lead to block, so default lcd RGB */ hw_lcd_panel = LCD_HX8357B_TIANMA_HVGA; break; } } else if( machine_is_msm7x27a_U8185()) { switch(lcd_id) { case LCD_HW_ID0: hw_lcd_panel = LCD_HX8347D_TRULY_QVGA; break; case LCD_HW_ID2: hw_lcd_panel = LCD_HX8347G_TIANMA_QVGA; break; case LCD_HW_ID3: hw_lcd_panel = LCD_HX8347D_CHIMEI_QVGA; break; default: hw_lcd_panel = LCD_HX8347G_TIANMA_QVGA; break; } } else if(machine_is_msm7x27a_M660()) { switch(lcd_id) { case LCD_HW_ID0: hw_lcd_panel = LCD_HX8357C_TIANMA_HVGA; break; case LCD_HW_ID1: hw_lcd_panel = LCD_HX8357B_TIANMA_HVGA; break; default: hw_lcd_panel = LCD_HX8357C_TIANMA_HVGA; break; } } else { hw_lcd_panel = LCD_HX8357B_TIANMA_HVGA; } return hw_lcd_panel; }
/*modify lcd name*/ lcd_panel_type get_lcd_panel_type(void) { lcd_panel_type hw_lcd_panel = LCD_NONE; /*remove two products to adjust new LCD type*/ /* separate Y300 from 8825 serials and make sure it can run BOE LCD well */ /* Add Oem LCD driver */ if ( machine_is_msm8x25_C8833D() || machine_is_msm8x25_U8833D() || machine_is_msm8x25_U8833() ) { switch (lcd_id) { case LCD_HW_ID0: hw_lcd_panel = MIPI_CMD_OTM8009A_CHIMEI_WVGA; break; case LCD_HW_ID1: hw_lcd_panel = MIPI_CMD_HX8369A_TIANMA_WVGA; break; case LCD_HW_ID2: hw_lcd_panel = MIPI_VIDEO_HX8369B_TIANMA_WVGA; break; case LCD_HW_ID5: hw_lcd_panel = MIPI_CMD_NT35510_BOE_WVGA; break; /*Add nt35512 video mode for byd*/ case LCD_HW_ID6: hw_lcd_panel = MIPI_VIDEO_NT35512_BYD_WVGA; break; /*Add otm8018b for video mode*/ case LCD_HW_ID8: hw_lcd_panel = MIPI_VIDEO_OTM8018B_CHIMEI_WVGA; break; /*Add nt35512 for video mode*/ case LCD_HW_ID9: hw_lcd_panel = MIPI_VIDEO_NT35512_BOE_WVGA; break; case LCD_HW_IDA: hw_lcd_panel = MIPI_CMD_NT35510_CHIMEI_WVGA; break; default: hw_lcd_panel = MIPI_CMD_NT35510_BOE_WVGA; break; } } else if (machine_is_msm8x25_H881C()) { switch (lcd_id) { case LCD_HW_ID0: hw_lcd_panel = MIPI_CMD_NT35510_CHIMEI_WVGA; break; case LCD_HW_ID1: hw_lcd_panel = MIPI_CMD_HX8369A_TIANMA_WVGA; break; case LCD_HW_ID5: hw_lcd_panel = MIPI_CMD_NT35510_BOE_WVGA; break; default: hw_lcd_panel = MIPI_CMD_NT35510_BOE_WVGA; break; } } else if( machine_is_msm8x25_U8825() || machine_is_msm8x25_U8825D() || machine_is_msm8x25_C8825D() || machine_is_msm8x25_C8812P() ) { switch (lcd_id) { case LCD_HW_ID0: hw_lcd_panel = MIPI_CMD_RSP61408_CHIMEI_WVGA; break; case LCD_HW_ID1: hw_lcd_panel = MIPI_CMD_HX8369A_TIANMA_WVGA; break; case LCD_HW_ID4: hw_lcd_panel = MIPI_CMD_RSP61408_BYD_WVGA; break; case LCD_HW_ID5: hw_lcd_panel = MIPI_CMD_RSP61408_TRULY_WVGA; break; case LCD_HW_IDA: hw_lcd_panel = MIPI_CMD_NT35510_BOE_WVGA; break; default: hw_lcd_panel = MIPI_CMD_NT35510_BOE_WVGA; break; } } else if (machine_is_msm8x25_C8950D() || machine_is_msm8x25_U8950() || machine_is_msm8x25_U8950D()) { switch (lcd_id) { case LCD_HW_ID0: hw_lcd_panel = MIPI_CMD_NT35516_CHIMEI_QHD; break; case LCD_HW_ID5: hw_lcd_panel = MIPI_CMD_NT35516_TIANMA_QHD; break; default: hw_lcd_panel = MIPI_CMD_NT35516_TIANMA_QHD; break; } } else if ( machine_is_msm8x25_U8951D() || machine_is_msm8x25_C8813() || machine_is_msm8x25_U8951()) { switch (lcd_id) { case LCD_HW_ID0: hw_lcd_panel = MIPI_CMD_NT35510_BOE_FWVGA; break; case LCD_HW_ID1: hw_lcd_panel = MIPI_CMD_HX8369A_TIANMA_FWVGA; break; case LCD_HW_ID4: hw_lcd_panel = MIPI_CMD_OTM8009A_CHIMEI_FWVGA; break; default: hw_lcd_panel = MIPI_CMD_HX8369A_TIANMA_FWVGA; break; } } else if( machine_is_msm7x27a_U8815() || machine_is_msm7x27a_C8820()) { switch (lcd_id) { case LCD_HW_ID0: hw_lcd_panel = MIPI_CMD_RSP61408_CHIMEI_WVGA; break; case LCD_HW_ID1: hw_lcd_panel = MIPI_CMD_HX8369A_TIANMA_WVGA; break; case LCD_HW_ID4: hw_lcd_panel = MIPI_CMD_RSP61408_BYD_WVGA; break; case LCD_HW_ID5: hw_lcd_panel = MIPI_CMD_RSP61408_TRULY_WVGA; break; default: /*no mipi LCD lead to block, so default lcd RGB */ hw_lcd_panel = LCD_HX8357B_TIANMA_HVGA; break; } } else if( machine_is_msm7x27a_U8655_EMMC()) { switch (lcd_id) { case LCD_HW_ID0: hw_lcd_panel = MIPI_CMD_HX8357C_CHIMEI_HVGA; break; case LCD_HW_ID1: hw_lcd_panel = MIPI_CMD_HX8357C_TIANMA_IPS_HVGA; break; case LCD_HW_ID4: hw_lcd_panel = MIPI_CMD_HX8357C_CHIMEI_IPS_HVGA; break; case LCD_HW_ID5: hw_lcd_panel = MIPI_CMD_HX8357C_TIANMA_HVGA; break; default: /*no mipi LCD lead to block, so default lcd RGB */ hw_lcd_panel = MIPI_CMD_HX8357C_CHIMEI_IPS_HVGA; break; } } else if(machine_is_msm7x27a_H867G()) { /* U8686 is H867G ver.E,use tianma IPS and chimei IPS LCD */ if(HW_VER_SUB_VE == get_hw_sub_board_id()) { switch (lcd_id) { case LCD_HW_ID0: hw_lcd_panel = MIPI_CMD_NT35310_BYD_HVGA; break; case LCD_HW_ID1: hw_lcd_panel = MIPI_CMD_HX8357C_TIANMA_IPS_HVGA; break; case LCD_HW_ID4: hw_lcd_panel = MIPI_CMD_HX8357C_CHIMEI_IPS_HVGA; break; case LCD_HW_ID5: hw_lcd_panel = MIPI_CMD_NT35310_BOE_HVGA; break; default: hw_lcd_panel = MIPI_CMD_NT35310_BOE_HVGA; break; } } else { switch (lcd_id) { case LCD_HW_ID0: hw_lcd_panel = MIPI_CMD_NT35310_BYD_HVGA; break; case LCD_HW_ID1: hw_lcd_panel = MIPI_CMD_NT35310_TIANMA_HVGA; break; case LCD_HW_ID5: hw_lcd_panel = MIPI_CMD_NT35310_BOE_HVGA; break; default: hw_lcd_panel = MIPI_CMD_NT35310_BOE_HVGA; break; } } } else if(machine_is_msm7x27a_H868C()) { switch (lcd_id) { case LCD_HW_ID0: hw_lcd_panel = MIPI_CMD_NT35310_BYD_HVGA; break; case LCD_HW_ID1: hw_lcd_panel = MIPI_CMD_NT35310_TIANMA_HVGA; break; case LCD_HW_ID5: hw_lcd_panel = MIPI_CMD_NT35310_BOE_HVGA; break; default: hw_lcd_panel = MIPI_CMD_NT35310_BOE_HVGA; break; } } else { hw_lcd_panel = LCD_HX8357B_TIANMA_HVGA; } return hw_lcd_panel; }
lcd_panel_type get_lcd_panel_type(void) { lcd_panel_type hw_lcd_panel = LCD_NONE; unsigned int lcd_id = LCD_NONE; lcd_id = get_hw_lcd_id(); if( machine_is_msm7x27a_umts()||machine_is_msm7x27a_cdma()) { switch (lcd_id) { case 0: hw_lcd_panel = MIPI_NT35560_TOSHIBA_FWVGA; break; case 1: hw_lcd_panel = LCD_HX8357B_TIANMA_HVGA; break; default: hw_lcd_panel = LCD_HX8357B_TIANMA_HVGA; break; } } else if( machine_is_msm7x27a_U8815() || machine_is_msm7x27a_C8820() || machine_is_msm7x27a_C8825D() ) { switch (lcd_id) { case 0: hw_lcd_panel = MIPI_RSP61408_CHIMEI_WVGA; break; case 1: hw_lcd_panel = MIPI_HX8369A_TIANMA_WVGA; break; case 2: hw_lcd_panel = MIPI_RSP61408_BYD_WVGA; break; case 3: hw_lcd_panel = MIPI_RSP61408_TRULY_WVGA; break; default: /*no mipi LCD lead to block, so default lcd RGB */ hw_lcd_panel = LCD_HX8357B_TIANMA_HVGA; break; } } /* add U8655_EMMC, use the u8655 configuration */ else if( machine_is_msm7x27a_U8655() || machine_is_msm7x27a_U8655_EMMC() || machine_is_msm7x27a_C8655_NAND()|| machine_is_msm7x27a_U8661()) { switch (lcd_id) { /*this IC stand id number 0 and 3,temp add*/ case 0: hw_lcd_panel = MIPI_HX8357C_CHIMEI_HVGA; break; case 1: hw_lcd_panel = MIPI_HX8357C_TIANMA_IPS_HVGA; break; case 2: hw_lcd_panel = MIPI_HX8357C_CHIMEI_IPS_HVGA; break; case 3: hw_lcd_panel = MIPI_HX8357C_TIANMA_HVGA; break; default: /*no mipi LCD lead to block, so default lcd RGB */ hw_lcd_panel = LCD_HX8357B_TIANMA_HVGA; break; } } else if( machine_is_msm7x27a_U8185()) { switch(lcd_id) { case 0: hw_lcd_panel = LCD_HX8347D_TRULY_QVGA; break; case 2: hw_lcd_panel = LCD_HX8347G_TIANMA_QVGA; break; case 3: hw_lcd_panel = LCD_HX8347D_CHIMEI_QVGA; break; default: hw_lcd_panel = LCD_HX8347G_TIANMA_QVGA; break; } } else if(machine_is_msm7x27a_M660()) { switch(lcd_id) { case 0: hw_lcd_panel = LCD_HX8357C_TIANMA_HVGA; break; case 1: hw_lcd_panel = LCD_HX8357B_TIANMA_HVGA; break; default: hw_lcd_panel = LCD_HX8357C_TIANMA_HVGA; break; } } else { hw_lcd_panel = LCD_HX8357B_TIANMA_HVGA; } return hw_lcd_panel; }
/* FUNCTION get_hw_sd_trigger_type * DESCRIPTION * get the bt wakeup gpio type * * RETURN VALUE * the gpio number */ hw_bt_wakeup_gpio_type get_hw_bt_wakeup_gpio_type(void) { hw_bt_wakeup_gpio_type bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_NONES; hw_ver_sub_type ver_sub_type = HW_VER_SUB_MAX; ver_sub_type = get_hw_sub_board_id(); if (machine_is_msm7x27a_U8815()) { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_83; } else if (machine_is_msm7x27a_U8655()) { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_83; } else if (machine_is_msm7x27a_U8655_EMMC()) { if ((ver_sub_type > HW_VER_SUB_VB && ver_sub_type < HW_VER_SUB_VE) || ver_sub_type > HW_VER_SUB_VE) { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_27; } else { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_83; } } else if (machine_is_msm7x27a_C8655_NAND()) { if (ver_sub_type > HW_VER_SUB_VB) { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_27; } else { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_83; } } else if (machine_is_msm7x27a_M660()) { if (ver_sub_type > HW_VER_SUB_VA) { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_27; } else { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_83; } } else if (machine_is_msm7x27a_C8820()) { if (ver_sub_type > HW_VER_SUB_VB) { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_27; } else { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_83; } } else if (machine_is_msm7x27a_C8825D()) { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_83; } /*< DTS2012022300887 fengwei 20120224 begin */ else if (machine_is_msm7x27a_C8668D()) { bt_wakeup_gpio_type = HW_BT_WAKEUP_GPIO_IS_83; } /* DTS2012022300887 fengwei 20120224 end >*/ printk(KERN_INFO "the bt_wakeup_gpio_type is %d\n", bt_wakeup_gpio_type); return bt_wakeup_gpio_type; }
/*hasGyro is a flag to note if has gyro,c8860e has gyro but M886 doesn't*/ static int get_sensors_list(void) { /* < DTS2012020902104 zhangmin 20120209 begin */ /*add 7x30's list*/ int sensors_list = G_SENSOR + L_SENSOR + P_SENSOR + M_SENSOR; int hasgyro = 0; // hasgyro = hasGyro; /*< DTS2012022006500 yangbo 20120220 begin */ if(machine_is_msm8255_u8860() || machine_is_msm8255_u8860_92() || machine_is_msm8255_u8860_51() /* < DTS2012022905490 ganfan 20120301 begin */ || machine_is_msm8255_u8860_r() /* DTS2012022905490 ganfan 20120301 end > */ || machine_is_msm8255_u8860lp() ||(machine_is_msm8255_c8860() && hasgyro )) { sensors_list = G_SENSOR + L_SENSOR + P_SENSOR + M_SENSOR + GY_SENSOR; printk("####This device has gyro\n"); } /*version A and version B has compass, since version C don't have compass*/ else if( ( machine_is_msm7x27a_C8820() && (HW_VER_SUB_VC <= get_hw_sub_board_id()) ) || machine_is_msm7x27a_U8661()) { sensors_list = G_SENSOR + L_SENSOR + P_SENSOR; } /*< DTS2012022300887 fengwei 20120224 begin */ else if (machine_is_msm7x27a_U8655() || machine_is_msm7x27a_U8655_EMMC() || machine_is_msm7x27a_C8655_NAND() || machine_is_msm7x27a_M660() || machine_is_msm7x27a_U8815() || machine_is_msm7x27a_C8820() || machine_is_msm7x27a_C8825D() || machine_is_msm7x27a_C8668D() || machine_is_msm7x30_u8800() || machine_is_msm7x30_u8820() || machine_is_msm7x30_u8800_51() || machine_is_msm8255_u8800_pro() || machine_is_msm8255_c8860() || machine_is_msm8255_u8667() || machine_is_msm8255_u8680() || machine_is_msm8255_u8730()) /* DTS2012022300887 fengwei 20120224 end >*/ { sensors_list = G_SENSOR + L_SENSOR + P_SENSOR + M_SENSOR; printk("####This device doesn't own gyro\n"); } /* move this else if to above for avoid C8820 without compass can not run in */ /* DTS2012022006500 yangbo 20120220 end > */ else if(machine_is_msm7x27a_U8185()) { sensors_list = G_SENSOR; } else { sensors_list = G_SENSOR + L_SENSOR + P_SENSOR + M_SENSOR; } /* DTS2012020902104 zhangmin 20120209 end > */ return sensors_list; }
static long hw_camera_led_ioctl(struct file *filep ,unsigned int cmd, unsigned long arg) { int ret = 0; unsigned int camera_led_state; CDBG("function %s enterence\n",__func__); switch(cmd) { case CAMERA_LED_GET : camera_led_state = atomic_read(&camera_led_flag); if(copy_to_user((void __user *)arg,&camera_led_state,sizeof(camera_led_state))) { pr_err("function copy_to_user fail"); ret = -EFAULT; } break; case CAMERA_LED_SET : if(copy_from_user(&camera_led_state,(void __user *)arg,sizeof(camera_led_state))) { pr_err("function copy_from_user fail"); ret = -EFAULT; } else { /*these handset use tps61310 as flash*/ if(machine_is_msm8x25_U8825() || machine_is_msm8x25_U8825D() || machine_is_msm8x25_U8833D() || machine_is_msm8x25_U8833() || machine_is_msm8x25_C8825D() || machine_is_msm8x25_C8950D() || machine_is_msm8x25_U8950D() || machine_is_msm8x25_U8951() || machine_is_msm8x25_C8813() || machine_is_msm8x25_H881C() || machine_is_msm8x25_U8950() || machine_is_msm8x25_Y300_J1() || machine_is_msm7x27a_C8820()) { ret = call_led_set_state(camera_led_state); } else { ret = msm_camera_flash_set_led_state(&hw_camera_led_data, camera_led_state); } if(!ret) { atomic_set(&camera_led_flag,camera_led_state); } } break; default: pr_err("hw_camera_led_ioctl:error ioctl cmd"); ret = -EINVAL; } return ret; }
static void __init virtualkeys_init(void) { struct kobject *properties_kobj; int ret=0; /*Modify the virtualkeys of touchsreen*/ if(machine_is_msm7x27a_U8815() || machine_is_msm8x25_U8825() || machine_is_msm8x25_U8825D() || machine_is_msm8x25_C8825D() || machine_is_msm8x25_C8833D() || machine_is_msm8x25_U8833D() || machine_is_msm8x25_U8833() || machine_is_msm7x27a_C8820() || machine_is_msm8x25_H881C() || machine_is_msm8x25_C8812P()) { buf_vkey_size = sprintf(buf_virtualkey, __stringify(EV_KEY) ":" __stringify(KEY_BACK) ":57:850:100:80" ":" __stringify(EV_KEY) ":" __stringify(KEY_HOME) ":240:850:100:80" ":" __stringify(EV_KEY) ":" __stringify(KEY_MENU) ":423:850:100:80" "\n"); } else if(machine_is_msm8x25_C8950D() || machine_is_msm8x25_U8950D() || machine_is_msm8x25_U8950()) { buf_vkey_size = sprintf(buf_virtualkey, __stringify(EV_KEY) ":" __stringify(KEY_BACK) ":80:1035:160:80" ":" __stringify(EV_KEY) ":" __stringify(KEY_HOME) ":270:1035:160:80" ":" __stringify(EV_KEY) ":" __stringify(KEY_MENU) ":460:1035:160:80" "\n"); } /*New add FWVGA virtual keys */ else if (machine_is_msm8x25_U8951D() || machine_is_msm8x25_C8813() || machine_is_msm8x25_U8951()) /* modify the area of virtualkeys */ { buf_vkey_size = sprintf(buf_virtualkey, __stringify(EV_KEY) ":" __stringify(KEY_BACK) ":71:900:142:80" ":" __stringify(EV_KEY) ":" __stringify(KEY_HOME) ":240:900:142:80" ":" __stringify(EV_KEY) ":" __stringify(KEY_MENU) ":409:900:142:80" "\n"); } else if (machine_is_msm7x27a_H867G() ||machine_is_msm7x27a_H868C() ) { /* 3 key configuration for 3.5" TP */ /*calibrate virtualkey for H867G and H868C*/ buf_vkey_size = sprintf(buf_virtualkey, __stringify(EV_KEY) ":" __stringify(KEY_BACK) ":50:510:80:50" ":" __stringify(EV_KEY) ":" __stringify(KEY_HOME) ":160:510:80:50" ":" __stringify(EV_KEY) ":" __stringify(KEY_MENU) ":270:510:80:50" "\n"); } else if (machine_is_msm7x27a_U8655_EMMC()) { /*4 virtual keys for att */ if (HW_VER_SUB_VE <= get_hw_sub_board_id()) { buf_vkey_size = sprintf(buf_virtualkey, __stringify(EV_KEY) ":" __stringify(KEY_MENU) ":30:510:60:50" ":" __stringify(EV_KEY) ":" __stringify(KEY_HOME) ":115:510:80:50" ":" __stringify(EV_KEY) ":" __stringify(KEY_BACK) ":205:510:80:50" ":" __stringify(EV_KEY) ":" __stringify(KEY_SEARCH) ":290:510:60:50" "\n"); } else { buf_vkey_size = sprintf(buf_virtualkey, __stringify(EV_KEY) ":" __stringify(KEY_MENU) ":30:510:60:50" ":" __stringify(EV_KEY) ":" __stringify(KEY_HOME) ":165:510:100:50" ":" __stringify(EV_KEY) ":" __stringify(KEY_BACK) ":290:510:60:50" "\n"); } } else { buf_vkey_size = sprintf(buf_virtualkey, __stringify(EV_KEY) ":" __stringify(KEY_MENU) ":57:850:100:80" ":" __stringify(EV_KEY) ":" __stringify(KEY_HOME) ":240:850:100:80" ":" __stringify(EV_KEY) ":" __stringify(KEY_BACK) ":423:850:100:80" "\n"); } properties_kobj = kobject_create_and_add("board_properties", NULL); if (properties_kobj) ret = sysfs_create_group(properties_kobj, &virtualkey_properties_attr_group); if (!properties_kobj || ret) pr_err("failed to create board_properties\n"); }