void __init msm_fb_add_devices(void) { int rc = 0; msm7x27a_set_display_params(prim_panel_name); if (machine_is_msm7627a_qrd1()) platform_add_devices(qrd_fb_devices, ARRAY_SIZE(qrd_fb_devices)); else if (machine_is_msm7627a_evb() || machine_is_msm8625_evb() || machine_is_msm8625_evt()) { mipi_NT35510_pdata.bl_lock = 1; mipi_NT35516_pdata.bl_lock = 1; if (disable_splash) mdp_pdata.cont_splash_enabled = 0x0; platform_add_devices(evb_fb_devices, ARRAY_SIZE(evb_fb_devices)); } else if (machine_is_msm7627a_qrd3() || machine_is_msm8625_qrd7()) { sku3_lcdc_lcd_camera_power_init(); mdp_pdata.cont_splash_enabled = 0x0; platform_add_devices(qrd3_fb_devices, ARRAY_SIZE(qrd3_fb_devices)); } else { mdp_pdata.cont_splash_enabled = 0x0; platform_add_devices(msm_fb_devices, ARRAY_SIZE(msm_fb_devices)); } msm_fb_register_device("mdp", &mdp_pdata); if (machine_is_msm7625a_surf() || machine_is_msm7x27a_surf() || machine_is_msm8625_surf() || machine_is_msm7627a_qrd3() || machine_is_msm8625_qrd7()) msm_fb_register_device("lcdc", &lcdc_pdata); #ifdef CONFIG_FB_MSM_MIPI_DSI msm_fb_register_device("mipi_dsi", &mipi_dsi_pdata); #endif if (machine_is_msm7627a_evb() || machine_is_msm8625_evb() || machine_is_msm8625_evt()) { gpio_reg_2p85v = regulator_get(&mipi_dsi_device.dev, "lcd_vdd"); if (IS_ERR(gpio_reg_2p85v)) pr_err("%s:ext_2p85v regulator get failed", __func__); gpio_reg_1p8v = regulator_get(&mipi_dsi_device.dev, "lcd_vddi"); if (IS_ERR(gpio_reg_1p8v)) pr_err("%s:ext_1p8v regulator get failed", __func__); if (mdp_pdata.cont_splash_enabled) { /*Enable EXT_2.85 and 1.8 regulators*/ rc = regulator_enable(gpio_reg_2p85v); if (rc < 0) pr_err("%s: reg enable failed\n", __func__); rc = regulator_enable(gpio_reg_1p8v); if (rc < 0) pr_err("%s: reg enable failed\n", __func__); } } }
int sku3_lcdc_lcd_camera_power_onoff(int on) { int rc = 0; u32 socinfo = socinfo_get_platform_type(); static int refcount = 0; if (on) { if (refcount > 0) { refcount++; return rc; } if (socinfo == 0x0B) gpio_set_value_cansleep(SKU3_LCDC_LCD_CAMERA_LDO_1V8, 1); else if (socinfo == 0x0F || machine_is_msm8625_qrd7()) gpio_set_value_cansleep(SKU3_1_LCDC_LCD_CAMERA_LDO_1V8, 1); gpio_set_value_cansleep(SKU3_LCDC_LCD_CAMERA_LDO_2V8, 1); rc = regulator_bulk_enable(ARRAY_SIZE(regs_truly_lcdc), regs_truly_lcdc); if (rc) pr_err("%s: could not enable regulators: %d\n", __func__, rc); else refcount++; } else { if (refcount > 1) { refcount--; return rc; } if (socinfo == 0x0B) gpio_set_value_cansleep(SKU3_LCDC_LCD_CAMERA_LDO_1V8, 0); else if (socinfo == 0x0F || machine_is_msm8625_qrd7()) gpio_set_value_cansleep(SKU3_1_LCDC_LCD_CAMERA_LDO_1V8, 0); gpio_set_value_cansleep(SKU3_LCDC_LCD_CAMERA_LDO_2V8, 0); rc = regulator_bulk_disable(ARRAY_SIZE(regs_truly_lcdc), regs_truly_lcdc); if (rc) pr_err("%s: could not disable regulators: %d\n", __func__, rc); else refcount--; } return rc; }
static void __init msm7x27a_init_cam(void) { if (!(machine_is_msm7x27a_ffa() || machine_is_msm7625a_ffa() || machine_is_msm7627a_qrd1() || machine_is_msm8625_ffa())) { sensor_board_info_s5k4e1.cam_vreg = NULL; sensor_board_info_s5k4e1.num_vreg = 0; sensor_board_info_mt9e013.cam_vreg = NULL; sensor_board_info_mt9e013.num_vreg = 0; sensor_board_info_ov9726.cam_vreg = NULL; sensor_board_info_ov9726.num_vreg = 0; sensor_board_info_ov7692.cam_vreg = NULL; sensor_board_info_ov7692.num_vreg = 0; sensor_board_info_ov5647.cam_vreg = NULL; sensor_board_info_ov5647.num_vreg = 0; sensor_board_info_ov8825.cam_vreg = NULL; sensor_board_info_ov8825.num_vreg = 0; } if (machine_is_msm8625_evb() || machine_is_msm7627a_evb() || machine_is_msm8625_evt() || machine_is_msm7627a_qrd3() || machine_is_msm8625_qrd7()) { sensor_board_info_ov7692.cam_vreg = ov7692_gpio_vreg; sensor_board_info_ov7692.num_vreg = ARRAY_SIZE(ov7692_gpio_vreg); sensor_board_info_ov5647.cam_vreg = ov5647_gpio_vreg; sensor_board_info_ov5647.num_vreg = ARRAY_SIZE(ov5647_gpio_vreg); sensor_board_info_ov8825.cam_vreg = ov8825_gpio_vreg; sensor_board_info_ov8825.num_vreg = ARRAY_SIZE(ov8825_gpio_vreg); } platform_device_register(&msm_camera_server); if (machine_is_msm8625_surf() || machine_is_msm8625_evb() || machine_is_msm8625_evt() || machine_is_msm8625_qrd7()) { platform_device_register(&msm8625_device_csic0); platform_device_register(&msm8625_device_csic1); } else { platform_device_register(&msm7x27a_device_csic0); platform_device_register(&msm7x27a_device_csic1); } if (machine_is_msm8625_evb() || machine_is_msm8625_evt() || machine_is_msm8625_qrd7()) *(int *) msm7x27a_device_clkctl.dev.platform_data = 1; platform_device_register(&msm7x27a_device_clkctl); platform_device_register(&msm7x27a_device_vfe); }
static int bt_set_gpio(int on) { int rc = 0; struct marimba config = { .mod_id = SLAVE_ID_BAHAMA}; pr_debug("%s: Setting SYS_RST_PIN(%d) to %d\n", __func__, gpio_bt_sys_rest_en, on); if (on) { #if defined(CONFIG_QCT2243_V21) && defined(CONFIG_CPLD) cpld_gpio_write(gpio_bt_sys_rest_en, 1); #else if (machine_is_msm7627a_evb() || machine_is_msm8625_qrd7()) { rc = gpio_tlmm_config(GPIO_CFG(gpio_bt_sys_rest_en, 0, GPIO_CFG_OUTPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA), GPIO_CFG_ENABLE); gpio_set_value(gpio_bt_sys_rest_en, 1); } else { rc = gpio_direction_output(gpio_bt_sys_rest_en, 1); } #endif msleep(100); } else { if (!marimba_get_fm_status(&config) && !marimba_get_bt_status(&config)) { #if defined(CONFIG_QCT2243_V21) && defined(CONFIG_CPLD) cpld_gpio_write(gpio_bt_sys_rest_en, 0); #else if (machine_is_msm7627a_evb() || machine_is_msm8625_qrd7()) { gpio_set_value(gpio_bt_sys_rest_en, 0); rc = gpio_tlmm_config(GPIO_CFG( gpio_bt_sys_rest_en, 0, GPIO_CFG_INPUT, GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA), GPIO_CFG_ENABLE); } else { gpio_set_value_cansleep(gpio_bt_sys_rest_en, 0); rc = gpio_direction_input(gpio_bt_sys_rest_en); } #endif msleep(100); } } if (rc) pr_err("%s: BT sys_reset_en GPIO : Error", __func__); return rc; }
void __init msm_fb_add_devices(void) { /* Using continuous splash or not */ if (machine_is_msm8625_qrd7() || machine_is_msm8625_evb() || machine_is_msm8625_qrd5()) { if (cont_splash_enabled) { /* increase ref count of ext power */ qrd_lcd_splash_power_vote(1); mdp_pdata.cont_splash_enabled = 1; /* FIXME: Need these flags to indicate backlight driver the initial backlight level */ mipi_NT35510_pdata.cont_splash_enabled = 1; mipi_NT35510_alaska_pdata.cont_splash_enabled = 1; mipi_himax_pdata.cont_splash_enabled = 1; } } /* default is NT35510 */ if (machine_is_msm8625_skua() && skua_panel_is_himax()) { skua_fb_devices[1] = &mipi_dsi_himax_panel_device; skua_backlight_device.dev.platform_data = &mipi_himax_pdata; } msm7x27a_set_display_params(prim_panel_name); if (machine_is_msm8225_cellon()) platform_add_devices(c8680_fb_devices, ARRAY_SIZE(c8680_fb_devices)); else if (machine_is_msm7627a_qrd1()) platform_add_devices(qrd_fb_devices, ARRAY_SIZE(qrd_fb_devices)); else if (machine_is_msm7627a_evb() || machine_is_msm8625_evb() || machine_is_msm8625_qrd5() || machine_is_msm7x27a_qrd5a() || machine_is_msm8625_evt()) { platform_add_devices(evb_fb_devices, ARRAY_SIZE(evb_fb_devices)); } else if (machine_is_msm8625_skua()) platform_add_devices(skua_fb_devices, ARRAY_SIZE(skua_fb_devices)); else if (machine_is_msm7627a_qrd3() || machine_is_msm8625_qrd7()) { platform_add_devices(qrd3_fb_devices, ARRAY_SIZE(qrd3_fb_devices)); } else platform_add_devices(msm_fb_devices, ARRAY_SIZE(msm_fb_devices)); msm_fb_register_device("mdp", &mdp_pdata); if (machine_is_msm7625a_surf() || machine_is_msm7x27a_surf() || machine_is_msm8625_surf() || machine_is_msm7627a_qrd3() || machine_is_msm8625_qrd7()) msm_fb_register_device("lcdc", &lcdc_pdata); #ifdef CONFIG_FB_MSM_MIPI_DSI msm_fb_register_device("mipi_dsi", &mipi_dsi_pdata); #endif }
static void led_brightness_set_flash(struct led_classdev *led_cdev, enum led_brightness brightness) { if(brightness){ if(machine_is_msm8625_qrd5() || machine_is_msm7x27a_qrd5a()) gpio_set_value(qrd5_led_flash_en1, 1); else if(machine_is_msm8625_qrd7()) gpio_set_value(qrd7_led_flash_en, 1); } else { if(machine_is_msm8625_qrd5() || machine_is_msm7x27a_qrd5a()) gpio_set_value(qrd5_led_flash_en1, 0); else if(machine_is_msm8625_qrd7()) gpio_set_value(qrd7_led_flash_en, 0); } }
static void __init add_platform_devices(void) { if (machine_is_msm8625_evb() || machine_is_msm8625_qrd7() || machine_is_msm8625_evt() || machine_is_msm8625q_evbd() || machine_is_msm8625q_skud() || machine_is_qrd_skud_prime()) { msm8625_device_uart1.dev.platform_data = &msm_8625_uart1_pdata; platform_add_devices(msm8625_evb_devices, ARRAY_SIZE(msm8625_evb_devices)); platform_add_devices(qrd3_devices, ARRAY_SIZE(qrd3_devices)); } else { platform_add_devices(qrd7627a_devices, ARRAY_SIZE(qrd7627a_devices)); } if (machine_is_msm8625_evb() || machine_is_msm8625_evt()) platform_add_devices(msm8625_lcd_camera_devices, ARRAY_SIZE(msm8625_lcd_camera_devices)); else if (machine_is_msm8625q_evbd()) platform_add_devices(msm8625q_lcd_camera_devices, ARRAY_SIZE(msm8625q_lcd_camera_devices)); if (machine_is_msm7627a_qrd3() || machine_is_msm7627a_evb()) platform_add_devices(qrd3_devices, ARRAY_SIZE(qrd3_devices)); platform_add_devices(common_devices, ARRAY_SIZE(common_devices)); }
static void __init add_platform_devices(void) { if (machine_is_msm8625_evb() || machine_is_msm8625_qrd7() || machine_is_msm8625_qrd5() || machine_is_msm8625q_evbd() || machine_is_msm8625q_skud() || machine_is_msm8625q_skue()) { platform_add_devices(msm8625_evb_devices, ARRAY_SIZE(msm8625_evb_devices)); platform_add_devices(qrd3_devices, ARRAY_SIZE(qrd3_devices)); } else { platform_add_devices(qrd7627a_devices, ARRAY_SIZE(qrd7627a_devices)); } if (machine_is_msm8625_evb() || machine_is_msm8625_qrd5()) platform_add_devices(msm8625_lcd_camera_devices, ARRAY_SIZE(msm8625_lcd_camera_devices)); else if (machine_is_msm8625q_evbd()) platform_add_devices(msm8625q_lcd_camera_devices, ARRAY_SIZE(msm8625q_lcd_camera_devices)); if (machine_is_msm7627a_qrd3() || machine_is_msm7627a_evb()) platform_add_devices(qrd3_devices, ARRAY_SIZE(qrd3_devices)); platform_add_devices(common_devices, ARRAY_SIZE(common_devices)); }
static void __init add_platform_devices(void) { if (machine_is_msm8625_evb() || machine_is_msm8625_qrd7() || machine_is_msm8625_qrd5() || machine_is_msm8625q_skud() || machine_is_msm8625q_skue()) { platform_add_devices(msm8625_evb_devices, ARRAY_SIZE(msm8625_evb_devices)); platform_add_devices(qrd3_devices, ARRAY_SIZE(qrd3_devices)); } else { platform_add_devices(qrd7627a_devices, ARRAY_SIZE(qrd7627a_devices)); } if (machine_is_msm7627a_qrd3() || machine_is_msm7627a_evb()) platform_add_devices(qrd3_devices, ARRAY_SIZE(qrd3_devices)); /*start by lf 2012.12.26 for button-backlight*/ if (machine_is_msm8625_qrd5()){ #if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE) keyboard_leds_init(); #endif /*end by lf 2012.12.26 */ } platform_add_devices(common_devices, ARRAY_SIZE(common_devices)); }
static int msm_fb_detect_panel(const char *name) { int ret = -ENODEV; printk("%s: %d\n", __func__, __LINE__); if (machine_is_msm8225_cellon()) { ret = cellon_auto_detect_lcd_panel(name); } else if (machine_is_msm7x27a_surf() || machine_is_msm7625a_surf() || machine_is_msm8625_surf()) { if (!strncmp(name, "lcdc_toshiba_fwvga_pt", 21) || !strncmp(name, "mipi_cmd_renesas_fwvga", 22)) ret = 0; } else if (machine_is_msm7x27a_ffa() || machine_is_msm7625a_ffa() || machine_is_msm8625_ffa()) { if (!strncmp(name, "mipi_cmd_renesas_fwvga", 22)) ret = 0; } else if (machine_is_msm7627a_qrd1()) { if (!strncmp(name, "mipi_video_truly_wvga", 21)) ret = 0; } else if (machine_is_msm7627a_qrd3() || machine_is_msm8625_qrd7()) { if (!strncmp(name, "lcdc_truly_hvga_ips3p2335_pt", 28)) ret = 0; } else if (machine_is_msm7627a_evb() || machine_is_msm8625_evb() || machine_is_msm8625_qrd5() || machine_is_msm7x27a_qrd5a()) { if (cont_splash_enabled == 1) { if (!strncmp(name, "mipi_cmd_nt35510_wvga", 21)) ret = 0; } else if (cont_splash_enabled == 2) { if (!strncmp(name, "mipi_video_nt35510_wvga", 21)) ret = 0; } else { if (!strncmp(name, "mipi_cmd_nt35510_wvga", 21)) ret = 0; } } else if (machine_is_msm8625_skua()) { if (!strncmp(name, "mipi_video_himax_wvga", 21) && skua_panel_is_himax()) ret = 0; else if (!strncmp(name, "mipi_cmd_nt35510_alaska_wvga", 28) && !skua_panel_is_himax()) ret = 0; } else if (machine_is_msm8625_evt()) { if (!strncmp(name, "mipi_video_nt35510_wvga", 23)) ret = 0; } #if !defined(CONFIG_FB_MSM_LCDC_AUTO_DETECT) && \ !defined(CONFIG_FB_MSM_MIPI_PANEL_AUTO_DETECT) && \ !defined(CONFIG_FB_MSM_LCDC_MIPI_PANEL_AUTO_DETECT) if (machine_is_msm7x27a_surf() || machine_is_msm7625a_surf() || machine_is_msm8625_surf()) { if (!strncmp(name, LCDC_TOSHIBA_FWVGA_PANEL_NAME, strnlen(LCDC_TOSHIBA_FWVGA_PANEL_NAME, PANEL_NAME_MAX_LEN))) return 0; } #endif return ret; }
static int __init qrd_wlan_init(void) { int rc; pr_info("WLAN power init\n"); if (machine_is_msm7627a_qrd1() || machine_is_msm7627a_evb() || machine_is_msm8625_evb() || machine_is_msm8625_qrd5() || machine_is_msm7x27a_qrd5a() || machine_is_msm8625_skua() || machine_is_msm8625_evt() || machine_is_msm7627a_qrd3() || machine_is_msm8625_qrd7()) { rc = gpio_tlmm_config(GPIO_CFG(gpio_wlan_sys_rest_en, 0, GPIO_CFG_OUTPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA), GPIO_CFG_ENABLE); if (rc) { pr_err("%s gpio_tlmm_config %d failed,error = %d\n", __func__, gpio_wlan_sys_rest_en, rc); goto exit; } gpio_set_value(gpio_wlan_sys_rest_en, 0); } else { gpio_request(gpio_wlan_sys_rest_en, "WLAN_DEEP_SLEEP_N"); rc = setup_wlan_gpio(false); gpio_free(gpio_wlan_sys_rest_en); if (rc) { pr_err("%s: wlan_set_gpio = %d\n", __func__, rc); goto exit; } } /* GPIO_WLAN_3V3_EN is only required for the QRD7627a */ if (machine_is_msm7627a_qrd1()) { rc = gpio_tlmm_config(GPIO_CFG(GPIO_WLAN_3V3_EN, 0, GPIO_CFG_OUTPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA), GPIO_CFG_ENABLE); if (rc) { pr_err("%s gpio_tlmm_config %d failed,error = %d\n", __func__, GPIO_WLAN_3V3_EN, rc); goto exit; } gpio_set_value(GPIO_WLAN_3V3_EN, 0); } /*ATH6KL_USES_PREALLOCATE_MEM*/ #ifdef CONFIG_ATH6KL_USES_PREALLOCATE_MEM wlan_init_memory(); #endif /* NV mac init */ msm_read_nv(NV_ITEM_WLAN_MAC_ADDR,wlan_mac_addr); printk("MAC from NV %02X:%02X:%02X:%02X:%02X:%02X\n", wlan_mac_addr[0], wlan_mac_addr[1], wlan_mac_addr[2], wlan_mac_addr[3], wlan_mac_addr[4], wlan_mac_addr[5]); exit: return rc; }
static void gpio_wlan_config(void) { if (machine_is_msm7627a_qrd1() || machine_is_msm7627a_evb() || machine_is_msm8625_evb() || machine_is_msm8625_evt() || machine_is_msm7627a_qrd3() || machine_is_msm8625_qrd7()) gpio_wlan_sys_rest_en = 124; }
static int msm_lcdc_power_save(int on) { int rc = 0; if (machine_is_msm7627a_qrd3() || machine_is_msm8625_qrd7()) rc = sku3_lcdc_power_save(on); else rc = msm_fb_lcdc_power_save(on); return rc; }
static void __init add_platform_devices(void) { if (machine_is_msm8625_evb() || machine_is_msm8625_qrd5() || machine_is_msm8625_skua() || machine_is_msm8625_qrd7() || machine_is_msm8625_skub() || machine_is_msm8625_evt()) platform_add_devices(msm8625_evb_devices, ARRAY_SIZE(msm8625_evb_devices)); else { platform_add_devices(qrd7627a_devices, ARRAY_SIZE(qrd7627a_devices)); } if (machine_is_msm7627a_qrd3() || machine_is_msm7627a_evb() || machine_is_msm8625_qrd7() || machine_is_msm8625_skub()) platform_add_devices(qrd3_devices, ARRAY_SIZE(qrd3_devices)); platform_add_devices(common_devices, ARRAY_SIZE(common_devices)); }
static int msm_fb_detect_panel(const char *name) { int ret = -ENODEV; if (machine_is_msm7x27a_surf() || machine_is_msm7625a_surf() || machine_is_msm8625_surf()) { #if 0 //#ifdef CONFIG_LCDC_TOSHIBA if (!strncmp(name, "lcdc_toshiba_fwvga_pt", 21) || !strncmp(name, "mipi_cmd_renesas_fwvga", 22)) ret = 0; #endif } else if (machine_is_msm7x27a_ffa() || machine_is_msm7625a_ffa() || machine_is_msm8625_ffa()) { #ifdef CONFIG_FB_MSM_MIPI_DSI_RENESAS if (!strncmp(name, "mipi_cmd_renesas_fwvga", 22)) ret = 0; #endif #ifdef CONFIG_FB_MSM_MIPI_DSI_ILI9486 if (!strncmp(name, "mipi_cmd_ili9486_hvga", 21)) ret = 0; #endif }else if (machine_is_msm7627a_qrd1()) { } else if (machine_is_msm7627a_qrd1()) { if (!strncmp(name, "mipi_video_truly_wvga", 21)) ret = 0; } else if (machine_is_msm7627a_qrd3() || machine_is_msm8625_qrd7()) { if (!strncmp(name, "lcdc_truly_hvga_ips3p2335_pt", 28)) ret = 0; } else if (machine_is_msm7627a_evb() || machine_is_msm8625_evb() || machine_is_msm8625_evt()) { if (!strncmp(name, "mipi_cmd_nt35510_wvga", 21)) ret = 0; } #if 0 //#ifdef CONFIG_LCDC_TOSHIBA #if !defined(CONFIG_FB_MSM_LCDC_AUTO_DETECT) && \ !defined(CONFIG_FB_MSM_MIPI_PANEL_AUTO_DETECT) && \ !defined(CONFIG_FB_MSM_LCDC_MIPI_PANEL_AUTO_DETECT) if (machine_is_msm7x27a_surf() || machine_is_msm7625a_surf() || machine_is_msm8625_surf()) { if (!strncmp(name, LCDC_TOSHIBA_FWVGA_PANEL_NAME, strnlen(LCDC_TOSHIBA_FWVGA_PANEL_NAME, PANEL_NAME_MAX_LEN))) return 0; } #endif #endif return ret; }
static void gpio_wlan_config(void) { if (machine_is_msm7627a_qrd1() || machine_is_msm7627a_evb() || machine_is_msm8625_evb() || machine_is_msm8625_evt() || machine_is_msm7627a_qrd3() || machine_is_msm8625_qrd7()) gpio_wlan_sys_rest_en = 124; else if (machine_is_qrd_skud_prime() || machine_is_msm8625q_evbd() || machine_is_msm8625q_skud()) gpio_wlan_sys_rest_en = 38; }
static void __init add_platform_devices(void) { if (machine_is_msm8625_evb() || machine_is_msm8625_qrd7() || machine_is_msm8625_evt() || machine_is_qrd_skud_prime()) { msm8625_device_uart1.dev.platform_data = &msm_8625_uart1_pdata; platform_add_devices(msm8625_evb_devices, ARRAY_SIZE(msm8625_evb_devices)); platform_add_devices(qrd3_devices, ARRAY_SIZE(qrd3_devices)); } else { platform_add_devices(qrd7627a_devices, ARRAY_SIZE(qrd7627a_devices)); } if (machine_is_msm7627a_qrd3() || machine_is_msm7627a_evb()) platform_add_devices(qrd3_devices, ARRAY_SIZE(qrd3_devices)); if (machine_is_msm7627a_evb() || machine_is_msm8625_evb() || machine_is_msm8625_evt() || machine_is_qrd_skud_prime()) platform_add_devices(msm8625_lcd_camera_devices, ARRAY_SIZE(msm8625_lcd_camera_devices)); else if (machine_is_msm8625_qrd7()) platform_add_devices(sku3_1_lcd_camera_devices, ARRAY_SIZE(sku3_1_lcd_camera_devices)); else if (machine_is_msm7627a_qrd3()) { u32 socinfo = socinfo_get_platform_type(); if (socinfo == 0x0B) platform_add_devices(sku3_lcd_camera_devices, ARRAY_SIZE(sku3_lcd_camera_devices)); else if (socinfo == 0x0F) platform_add_devices(sku3_1_lcd_camera_devices, ARRAY_SIZE(sku3_1_lcd_camera_devices)); } platform_add_devices(common_devices, ARRAY_SIZE(common_devices)); }
static int msm_fb_detect_panel(const char *name) { int ret = -ENODEV; #if 1 // #suwg printk("xxx %s:%s\n ",__func__,name); return ret; #endif if (machine_is_msm7x27a_surf() || machine_is_msm7625a_surf() || machine_is_msm8625_surf()) { if (!strncmp(name, "lcdc_toshiba_fwvga_pt", 21) || !strncmp(name, "mipi_cmd_renesas_fwvga", 22)) ret = 0; } else if (machine_is_msm7x27a_ffa() || machine_is_msm7625a_ffa() || machine_is_msm8625_ffa()) { if (!strncmp(name, "mipi_cmd_renesas_fwvga", 22)) ret = 0; } else if (machine_is_msm7627a_qrd1()) { if (!strncmp(name, "mipi_video_truly_wvga", 21)) ret = 0; } else if (machine_is_msm7627a_qrd3() || machine_is_msm8625_qrd7()) { if (!strncmp(name, "lcdc_truly_hvga_ips3p2335_pt", 28)) ret = 0; } else if (machine_is_msm7627a_evb() || machine_is_msm8625_evb() || machine_is_msm8625_qrd5() || machine_is_msm7x27a_qrd5a()) { if (!strncmp(name, "mipi_cmd_nt35510_wvga", 21)) ret = 0; } else if (machine_is_msm8625q_skud() || machine_is_msm8625q_evbd()) { if (!strncmp(name, "mipi_video_hx8389b_qhd", 22)) ret = 0; } else if (machine_is_msm8625q_skue()) { if (!strncmp(name, "mipi_video_otm9605a_qhd", 23)) ret = 0; } #if !defined(CONFIG_FB_MSM_LCDC_AUTO_DETECT) && \ !defined(CONFIG_FB_MSM_MIPI_PANEL_AUTO_DETECT) && \ !defined(CONFIG_FB_MSM_LCDC_MIPI_PANEL_AUTO_DETECT) if (machine_is_msm7x27a_surf() || machine_is_msm7625a_surf() || machine_is_msm8625_surf()) { if (!strncmp(name, LCDC_TOSHIBA_FWVGA_PANEL_NAME, strnlen(LCDC_TOSHIBA_FWVGA_PANEL_NAME, PANEL_NAME_MAX_LEN))) return 0; } #endif return ret; }
static int msm_fb_detect_panel(const char *name) { int ret = -ENODEV; if (machine_is_msm7x27a_surf() || machine_is_msm7625a_surf() || machine_is_msm8625_surf()) { if (!strncmp(name, "lcdc_toshiba_fwvga_pt", 21) || !strncmp(name, "mipi_cmd_renesas_fwvga", 22)) ret = 0; } else if (machine_is_msm7x27a_ffa() || machine_is_msm7625a_ffa() || machine_is_msm8625_ffa()) { if (!strncmp(name, "mipi_cmd_renesas_fwvga", 22)) ret = 0; } else if (machine_is_msm7627a_qrd1()) { if (!strncmp(name, "mipi_video_truly_wvga", 21)) ret = 0; } else if (machine_is_msm7627a_qrd3() || machine_is_msm8625_qrd7()) { if (!strncmp(name, "lcdc_truly_hvga_ips3p2335_pt", 28)) ret = 0; } else if (machine_is_msm7627a_evb() || machine_is_msm8625_evb() || machine_is_msm8625_qrd5() || machine_is_msm7x27a_qrd5a()) { #if 1 //#linxc 12-08-23 +++ if (!strncmp(name, "mipi_cmd_novatek_sharp_qhd", 26)) ret = 0; #else if (!strncmp(name, "mipi_cmd_nt35510_wvga", 21)) ret = 0; #endif } else if (machine_is_msm8625q_skud()) { if (!strncmp(name, "mipi_video_hx8389b_qhd", 22)) ret = 0; } #if !defined(CONFIG_FB_MSM_LCDC_AUTO_DETECT) && \ !defined(CONFIG_FB_MSM_MIPI_PANEL_AUTO_DETECT) && \ !defined(CONFIG_FB_MSM_LCDC_MIPI_PANEL_AUTO_DETECT) if (machine_is_msm7x27a_surf() || machine_is_msm7625a_surf() || machine_is_msm8625_surf()) { if (!strncmp(name, LCDC_TOSHIBA_FWVGA_PANEL_NAME, strnlen(LCDC_TOSHIBA_FWVGA_PANEL_NAME, PANEL_NAME_MAX_LEN))) return 0; } #endif return ret; }
static void lcd_camera_power_init(void) { int rc = 0; pr_debug("lcd_camera_power_init\n"); if (machine_is_msm7627a_qrd3() || machine_is_msm8625_qrd7()) lcd_camera_ldo_1v8 = SKU7_LCD_CAMERA_LDO_1V8; else lcd_camera_ldo_1v8 = SKU3_LCD_CAMERA_LDO_1V8; /* LDO_EXT2V8 */ if (gpio_request(LCD_CAMERA_LDO_2V8, "lcd_camera_ldo_2v8")) { pr_err("failed to request gpio lcd_camera_ldo_2v8\n"); return; } rc = gpio_tlmm_config(GPIO_CFG(LCD_CAMERA_LDO_2V8, 0, GPIO_CFG_OUTPUT, GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA), GPIO_CFG_ENABLE); if (rc < 0) { pr_err("%s: unable to enable lcd_camera_ldo_2v8!\n", __func__); goto fail_gpio2; } /* LDO_EVT1V8 */ if (gpio_request(lcd_camera_ldo_1v8, "lcd_camera_ldo_1v8")) { pr_err("failed to request gpio lcd_camera_ldo_1v8\n"); goto fail_gpio2; } rc = gpio_tlmm_config(GPIO_CFG(lcd_camera_ldo_1v8, 0, GPIO_CFG_OUTPUT, GPIO_CFG_PULL_DOWN, GPIO_CFG_2MA), GPIO_CFG_ENABLE); if (rc < 0) { pr_err("%s: unable to enable lcd_camera_ldo_1v8!\n", __func__); goto fail_gpio1; } return; fail_gpio1: gpio_free(lcd_camera_ldo_1v8); fail_gpio2: gpio_free(LCD_CAMERA_LDO_2V8); return; }
static void gpio_bt_config(void) { u32 socinfo = socinfo_get_platform_version(); if (machine_is_msm7627a_qrd1()) gpio_bt_sys_rest_en = 114; if (machine_is_msm7627a_evb() || machine_is_msm8625_evb() || machine_is_msm8625_evt()) gpio_bt_sys_rest_en = 16; if (machine_is_msm8625_qrd7()) gpio_bt_sys_rest_en = 88; if (machine_is_msm7627a_qrd3()) { if (socinfo == 0x70002) gpio_bt_sys_rest_en = 88; else gpio_bt_sys_rest_en = 85; } }
static void gpio_wlan_config(void) { if (machine_is_msm7627a_qrd1() || machine_is_msm7627a_evb() || machine_is_msm8625_evb() || machine_is_msm8625_qrd5() || machine_is_msm7x27a_qrd5a() || machine_is_msm8625_skua() || machine_is_msm8625_evt() || machine_is_msm7627a_qrd3() || machine_is_msm8625_qrd7()) #ifndef CONFIG_CELLON_PRJ_C8681 gpio_wlan_sys_rest_en = 124; #else gpio_wlan_sys_rest_en = 16; #endif pr_info("wlan rest gpio - %d\n", gpio_wlan_sys_rest_en); }
static int __init qrd_wlan_init(void) { int rc; pr_info("WLAN power init\n"); if (machine_is_msm7627a_qrd1() || machine_is_msm7627a_evb() || machine_is_msm8625_evb() || machine_is_msm8625_qrd5() || machine_is_msm7627a_qrd3() || machine_is_msm8625_qrd7() || machine_is_msm8625q_skud() || machine_is_msm8625q_skue()) { rc = gpio_tlmm_config(GPIO_CFG(gpio_wlan_sys_rest_en, 0, GPIO_CFG_OUTPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA), GPIO_CFG_ENABLE); if (rc) { pr_err("%s gpio_tlmm_config %d failed,error = %d\n", __func__, gpio_wlan_sys_rest_en, rc); goto exit; } gpio_set_value(gpio_wlan_sys_rest_en, 0); } else { gpio_request(gpio_wlan_sys_rest_en, "WLAN_DEEP_SLEEP_N"); rc = setup_wlan_gpio(false); gpio_free(gpio_wlan_sys_rest_en); if (rc) { pr_err("%s: wlan_set_gpio = %d\n", __func__, rc); goto exit; } } /* GPIO_WLAN_3V3_EN is only required for the QRD7627a */ if (machine_is_msm7627a_qrd1()) { rc = gpio_tlmm_config(GPIO_CFG(GPIO_WLAN_3V3_EN, 0, GPIO_CFG_OUTPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA), GPIO_CFG_ENABLE); if (rc) { pr_err("%s gpio_tlmm_config %d failed,error = %d\n", __func__, GPIO_WLAN_3V3_EN, rc); goto exit; } gpio_set_value(GPIO_WLAN_3V3_EN, 0); } exit: return rc; }
static int tricolor_leds_gpio_setup(void) { int ret = 0; if(machine_is_msm8625_qrd5() || machine_is_msm7x27a_qrd5a()) { tricolor_leds_gpio_cfg_data[0].gpio_cfg = GPIO_CFG(LED_FLASH_EN1, 0, GPIO_CFG_OUTPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA); } else if(machine_is_msm8625_qrd7()) { tricolor_leds_gpio_cfg_data[0].gpio_cfg = GPIO_CFG(QRD7_LED_FLASH_EN, 0, GPIO_CFG_OUTPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA); } ret = msm_gpios_request_enable(tricolor_leds_gpio_cfg_data, sizeof(tricolor_leds_gpio_cfg_data)/sizeof(struct msm_gpio)); if( ret<0 ) printk(KERN_ERR "%s: Failed to obtain tricolor_leds GPIO . Code: %d\n", __func__, ret); return ret; }
static void __init msm_pm_init(void) { #if 0 if (machine_is_msm8625_qrd7()) return; #endif if (!(machine_is_msm8625_evb() || machine_is_msm8625_qrd5() || machine_is_msm8625_skua() || machine_is_msm8625_qrd7() || machine_is_msm8625_skub())) { msm_pm_set_platform_data(msm7627a_pm_data, ARRAY_SIZE(msm7627a_pm_data)); BUG_ON(msm_pm_boot_init(&msm_pm_boot_pdata)); } else { msm_pm_set_platform_data(msm8625_pm_data, ARRAY_SIZE(msm8625_pm_data)); BUG_ON(msm_pm_boot_init(&msm_pm_8625_boot_pdata)); msm8x25_spm_device_init(); } }
static void __init msm7627a_init_regulators(void) { int rc = 0; printk("%s\n", __func__); rc = platform_device_register(&msm_proccomm_regulator_dev); if (rc) pr_err("%s: could not register msm_proccomm_regulator_dev: %d\n", __func__, rc); if (machine_is_msm7627a_evb() || machine_is_msm8625_evb() || machine_is_msm8625_qrd5() || machine_is_msm7x27a_qrd5a()) { rc = platform_device_register(&evb_device_ext_2v8_vreg); if (rc) pr_err("%s: could not register evb_device_ext_2v8_vreg: %d\n", __func__, rc); rc = platform_device_register(&evb_device_ext_1v8_vreg); if (rc) pr_err("%s: could not register evb_device_ext_1v8_vreg: %d\n", __func__, rc); } else if (machine_is_msm8625_qrd7()) { rc = platform_device_register(&sku7_device_ext_2v8_vreg); if (rc) pr_err("%s: could not register sku7_device_ext_2v8_vreg: %d\n", __func__, rc); rc = platform_device_register(&sku7_device_ext_1v8_vreg); if (rc) pr_err("%s: could not register sku7_device_ext_1v8_vreg: %d\n", __func__, rc); } else if (machine_is_msm7627a_qrd3()) { rc = platform_device_register(&sku3_device_ext_2v8_vreg); if (rc) pr_err("%s: could not register sku3_device_ext_2v8_vreg: %d\n", __func__, rc); rc = platform_device_register(&sku3_device_ext_1v8_vreg); if (rc) pr_err("%s: could not register sku3_device_ext_1v8_vreg: %d\n", __func__, rc); } return; }
static void gpio_wlan_config(void) { if (machine_is_msm7627a_qrd1() || machine_is_msm7627a_evb() || machine_is_msm8625_evb() || machine_is_msm8625_qrd5() || machine_is_msm7x27a_qrd5a() || machine_is_msm7627a_qrd3() || machine_is_msm8625_qrd7()) gpio_wlan_sys_rest_en = 124; else if(machine_is_msm8625q_evbd() || machine_is_msm8625q_skue() || machine_is_msm8625q_skud()) /*TYDRV:chenjp 2012.12.26 modify for QCT support*/ #if defined(TYQ_QCT_SUPPORT) gpio_wlan_sys_rest_en = 124; #else gpio_wlan_sys_rest_en = 38; #endif }
static void __init msm7x27a_init_cam(void) { #ifdef CONFIG_HI351 struct msm_camera_sensor_info *s_info; #endif if (!(machine_is_msm7x27a_ffa() || machine_is_msm7625a_ffa() || machine_is_msm7627a_qrd1() || machine_is_msm8625_ffa())) { #ifdef CONFIG_MACH_LGE #ifdef CONFIG_HI351 sensor_board_info_hi351.cam_vreg = NULL; sensor_board_info_hi351.num_vreg = 0; s_info = &msm_camera_sensor_hi351_data; s_info->sensor_platform_info->ext_power_ctrl = msm_camera_7x27a_ext_power_ctrl; #endif #else sensor_board_info_s5k4e1.cam_vreg = NULL; sensor_board_info_s5k4e1.num_vreg = 0; sensor_board_info_mt9e013.cam_vreg = NULL; sensor_board_info_mt9e013.num_vreg = 0; sensor_board_info_ov9726.cam_vreg = NULL; sensor_board_info_ov9726.num_vreg = 0; sensor_board_info_ov7692.cam_vreg = NULL; sensor_board_info_ov7692.num_vreg = 0; sensor_board_info_ov5647.cam_vreg = NULL; sensor_board_info_ov5647.num_vreg = 0; sensor_board_info_ov8825.cam_vreg = NULL; sensor_board_info_ov8825.num_vreg = 0; #endif } platform_device_register(&msm_camera_server); platform_device_register(&msm7x27a_device_csic0); platform_device_register(&msm7x27a_device_csic1); if (machine_is_msm8625_evb() || machine_is_msm8625_evt() || machine_is_msm8625_qrd7()) *(int *) msm7x27a_device_clkctl.dev.platform_data = 1; platform_device_register(&msm7x27a_device_clkctl); platform_device_register(&msm7x27a_device_vfe); }
static void gpio_bt_config(void) { #if defined(CONFIG_QCT2243_V21) int pin, rc = 0; gpio_tlmm_config(fm_rds_int_init[0], GPIO_CFG_ENABLE); for (pin = 0; pin < ARRAY_SIZE(bt_config_power_off); pin++) { rc = gpio_tlmm_config(bt_config_power_off[pin], GPIO_CFG_ENABLE); if (rc < 0) { pr_err("%s:" " gpio_tlmm_config(%#x)=%d\n", __func__, bt_config_power_off[pin], rc); } } #else u32 socinfo = socinfo_get_platform_version(); if (machine_is_msm7627a_qrd1()) gpio_bt_sys_rest_en = 114; if (machine_is_msm7627a_evb() || machine_is_msm8625_evb() || machine_is_msm8625_evt()) gpio_bt_sys_rest_en = 16; if (machine_is_msm8625_qrd7()) gpio_bt_sys_rest_en = 88; if (0 || machine_is_msm8625q_evbd() || machine_is_msm8625q_skud()) gpio_bt_sys_rest_en = 35; if (machine_is_msm7627a_qrd3()) { if (socinfo == 0x70002) gpio_bt_sys_rest_en = 88; else gpio_bt_sys_rest_en = 85; } #endif }
static unsigned int msm_AR600X_shutdown_power(bool on) { int rc = 0; if (!wlan_powered_up) { pr_info("WLAN is not powered up, returning success\n"); return 0; } /* Disable the A0 clock */ rc = setup_wlan_clock(on); if (rc) { pr_err("%s: setup_wlan_clock = %d\n", __func__, rc); goto set_clock_fail; } /* * gpio_wlan_sys_rest_en is not from the GPIO expander for QRD7627a, * EVB1.0 and QRD8625,so the below step is required for those devices. */ if (machine_is_msm7627a_qrd1() || machine_is_msm7627a_evb() || machine_is_msm8625_evb() || machine_is_msm8625_evt() || machine_is_msm7627a_qrd3() || machine_is_msm8625_qrd7()) { rc = gpio_tlmm_config(GPIO_CFG(gpio_wlan_sys_rest_en, 0, GPIO_CFG_OUTPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA), GPIO_CFG_ENABLE); if (rc) { pr_err("%s gpio_tlmm_config 119 failed,error = %d\n", __func__, rc); goto gpio_fail; } gpio_set_value(gpio_wlan_sys_rest_en, 0); } else { #ifdef CONFIG_HUAWEI_KERNEL /* rollback to 1030 baseline */ gpio_request(gpio_wlan_sys_rest_en, "WLAN_DEEP_SLEEP_N"); rc = setup_wlan_gpio(on); if (rc) { pr_err("%s: wlan_set_gpio = %d\n", __func__, rc); goto set_gpio_fail; } gpio_free(gpio_wlan_sys_rest_en); #else rc = setup_wlan_gpio(on); if (rc) { pr_err("%s: setup_wlan_gpio = %d\n", __func__, rc); goto set_gpio_fail; } gpio_free(gpio_wlan_sys_rest_en); #endif } /* GPIO_WLAN_3V3_EN is only required for the QRD7627a */ if (machine_is_msm7627a_qrd1()) { rc = gpio_tlmm_config(GPIO_CFG(GPIO_WLAN_3V3_EN, 0, GPIO_CFG_OUTPUT, GPIO_CFG_NO_PULL, GPIO_CFG_2MA), GPIO_CFG_ENABLE); if (rc) { pr_err("%s gpio_tlmm_config 119 failed,error = %d\n", __func__, rc); goto qrd_gpio_fail; } gpio_set_value(GPIO_WLAN_3V3_EN, 0); } rc = wlan_switch_regulators(on); if (rc) { pr_err("%s: wlan_switch_regulators error = %d\n", __func__, rc); goto reg_disable; } wlan_powered_up = false; pr_info("WLAN power-down success\n"); return 0; set_clock_fail: setup_wlan_clock(0); set_gpio_fail: setup_wlan_gpio(0); gpio_fail: if (!(machine_is_msm7627a_qrd1() || machine_is_msm7627a_evb() || machine_is_msm8625_evb() || machine_is_msm8625_evt() || machine_is_msm7627a_qrd3() || machine_is_msm8625_qrd7())) gpio_free(gpio_wlan_sys_rest_en); qrd_gpio_fail: /* GPIO_WLAN_3V3_EN is only required for the QRD7627a */ if (machine_is_msm7627a_qrd1()) gpio_free(GPIO_WLAN_3V3_EN); reg_disable: wlan_switch_regulators(0); #ifndef CONFIG_HUAWEI_KERNEL out: pr_info("WLAN power-down failed\n"); #endif return rc; }