void __init msm8960_init_cam(void) { if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_SGLTE) { msm_8960_front_cam_gpio_conf.cam_gpiomux_conf_tbl = msm8960_cam_2d_configs_sglte; msm_8960_front_cam_gpio_conf.cam_gpiomux_conf_tbl_size = ARRAY_SIZE(msm8960_cam_2d_configs_sglte); msm_8960_back_cam_gpio_conf.cam_gpiomux_conf_tbl = msm8960_cam_2d_configs_sglte; msm_8960_back_cam_gpio_conf.cam_gpiomux_conf_tbl_size = ARRAY_SIZE(msm8960_cam_2d_configs_sglte); } msm_gpiomux_install(msm8960_cam_common_configs, ARRAY_SIZE(msm8960_cam_common_configs)); if (machine_is_msm8960_cdp()) { msm_gpiomux_install(msm8960_cdp_flash_configs, ARRAY_SIZE(msm8960_cdp_flash_configs)); #ifdef CONFIG_MSM_CAMERA_FLASH msm_flash_src._fsrc.ext_driver_src.led_en = GPIO_CAM_GP_LED_EN1; msm_flash_src._fsrc.ext_driver_src.led_flash_en = GPIO_CAM_GP_LED_EN2; #if defined(CONFIG_I2C) && (defined(CONFIG_GPIO_SX150X) || \ defined(CONFIG_GPIO_SX150X_MODULE)) msm_flash_src._fsrc.ext_driver_src.expander_info = cam_expander_info; #endif #endif } if (machine_is_msm8960_liquid()) { struct msm_camera_sensor_info *s_info; s_info = &msm_camera_sensor_imx074_data; s_info->sensor_platform_info->mount_angle = 180; s_info = &msm_camera_sensor_ov2720_data; s_info->sensor_platform_info->ext_power_ctrl = msm_camera_8960_ext_power_ctrl; } if (machine_is_msm8960_fluid()) { msm_camera_sensor_imx091_data.sensor_platform_info-> mount_angle = 270; } platform_device_register(&msm_camera_server); platform_device_register(&msm8960_device_csiphy0); platform_device_register(&msm8960_device_csiphy1); platform_device_register(&msm8960_device_csiphy2); platform_device_register(&msm8960_device_csid0); platform_device_register(&msm8960_device_csid1); platform_device_register(&msm8960_device_csid2); platform_device_register(&msm8960_device_ispif); platform_device_register(&msm8960_device_vfe); platform_device_register(&msm8960_device_vpe); }
void __init msm_htc_8974_init_gpiomux(void) { int rc; rc = msm_gpiomux_init_dt(); if (rc) { pr_err("%s failed %d\n", __func__, rc); return; } msm_gpiomux_install(msm_blsp_configs, ARRAY_SIZE(msm_blsp_configs)); msm_gpiomux_install(msm_blsp2_uart7_configs, ARRAY_SIZE(msm_blsp2_uart7_configs)); msm_gpiomux_install(wcnss_5wire_interface, ARRAY_SIZE(wcnss_5wire_interface)); msm_gpiomux_install(msm8974_slimbus_config, ARRAY_SIZE(msm8974_slimbus_config)); msm_gpiomux_install(msm_touch_configs, ARRAY_SIZE(msm_touch_configs)); msm_gpiomux_install(msm_sensor_configs, ARRAY_SIZE(msm_sensor_configs)); if (of_machine_pid() == MEC_DWGL_PID || of_machine_pid() == MEC_TL_PID || of_machine_pid() == MEC_DUGL_PID) msm_gpiomux_install(msm_sensor_configs_china_sku, ARRAY_SIZE(msm_sensor_configs_china_sku)); else msm_gpiomux_install(msm_sensor_configs_non_china_sku, ARRAY_SIZE(msm_sensor_configs_non_china_sku)); msm_gpiomux_install(&nfc_irq_config, 1); msm_gpiomux_install(&sd_card_det, 1); msm_gpiomux_sdc4_install(); msm_gpiomux_install(msm_taiko_config, ARRAY_SIZE(msm_taiko_config)); msm_gpiomux_install_nowrite(msm_lcd_configs, ARRAY_SIZE(msm_lcd_configs)); msm_gpiomux_install(msm_aud_configs, ARRAY_SIZE(msm_aud_configs)); msm_gpiomux_install(msm_cir_configs, ARRAY_SIZE(msm_cir_configs)); if (of_machine_pid() == 268) msm_gpiomux_install(msm_felica_configs, ARRAY_SIZE(msm_felica_configs)); if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_MDM) msm_gpiomux_install(mdm_configs, ARRAY_SIZE(mdm_configs)); msm_gpiomux_install(msm_blsp_rawchip_spi_configs, ARRAY_SIZE(msm_blsp_rawchip_spi_configs)); }
void __init glu_init_gpiomux(void) { int rc; rc = msm_gpiomux_init_dt(); if (rc) { pr_err("%s failed %d\n", __func__, rc); return; } pr_info("%s:%d socinfo_get_version %x\n", __func__, __LINE__, socinfo_get_version()); if (socinfo_get_version() >= 0x20000) msm_tlmm_misc_reg_write(TLMM_SPARE_REG, 0x5); #if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE) msm_gpiomux_install(msm_eth_configs, ARRAY_SIZE(msm_eth_configs)); #endif msm_gpiomux_install(msm_blsp_configs, ARRAY_SIZE(msm_blsp_configs)); msm_gpiomux_install(msm_blsp2_uart7_configs, ARRAY_SIZE(msm_blsp2_uart7_configs)); msm_gpiomux_install(msm_blsp_rawchip_spi_configs, ARRAY_SIZE(msm_blsp_rawchip_spi_configs)); msm_gpiomux_install(wcnss_5wire_interface, ARRAY_SIZE(wcnss_5wire_interface)); msm_gpiomux_install(msm8974_slimbus_config, ARRAY_SIZE(msm8974_slimbus_config)); msm_gpiomux_install(msm_touch_configs, ARRAY_SIZE(msm_touch_configs)); msm_gpiomux_install(msm_sensor_configs, ARRAY_SIZE(msm_sensor_configs)); msm_gpiomux_install(&nfc_irq_config, 1); msm_gpiomux_install(&sd_card_det, 1); msm_gpiomux_sdc3_install(); msm_gpiomux_sdc4_install(); msm_gpiomux_install(msm_taiko_config, ARRAY_SIZE(msm_taiko_config)); msm_gpiomux_install(msm_hdmi_configs, ARRAY_SIZE(msm_hdmi_configs)); msm_gpiomux_install(msm_mhl_configs, ARRAY_SIZE(msm_mhl_configs)); msm_gpiomux_install(msm8974_pri_pri_auxpcm_configs, ARRAY_SIZE(msm8974_pri_pri_auxpcm_configs)); msm_gpiomux_install_nowrite(msm_display_configs, ARRAY_SIZE(msm_display_configs)); msm_gpiomux_install(msm_aud_configs, ARRAY_SIZE(msm_aud_configs)); if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_MDM) msm_gpiomux_install(mdm_configs, ARRAY_SIZE(mdm_configs)); }
void __init msm_htc_8974_init_gpiomux(void) { int rc; rc = msm_gpiomux_init_dt(); if (rc) { pr_err("%s failed %d\n", __func__, rc); return; } msm_gpiomux_install(msm_blsp_configs, ARRAY_SIZE(msm_blsp_configs)); msm_gpiomux_install(msm_blsp2_uart7_configs, ARRAY_SIZE(msm_blsp2_uart7_configs)); msm_gpiomux_install(wcnss_5wire_interface, ARRAY_SIZE(wcnss_5wire_interface)); msm_gpiomux_install(msm8974_slimbus_config, ARRAY_SIZE(msm8974_slimbus_config)); msm_gpiomux_install(msm_touch_configs, ARRAY_SIZE(msm_touch_configs)); msm_gpiomux_install(msm_sensor_configs, ARRAY_SIZE(msm_sensor_configs)); msm_gpiomux_install(&nfc_irq_config, 1); msm_gpiomux_install(&sd_card_det, 1); msm_gpiomux_sdc4_install(); msm_gpiomux_install(msm_taiko_config, ARRAY_SIZE(msm_taiko_config)); msm_gpiomux_install(msm_hsic_configs, ARRAY_SIZE(msm_hsic_configs)); msm_gpiomux_install(msm_hdmi_configs, ARRAY_SIZE(msm_hdmi_configs)); msm_gpiomux_install(msm_mhl_configs, ARRAY_SIZE(msm_mhl_configs)); msm_gpiomux_install_nowrite(msm_lcd_configs, ARRAY_SIZE(msm_lcd_configs)); msm_gpiomux_install(msm_aud_configs, ARRAY_SIZE(msm_aud_configs)); msm_gpiomux_install(msm_cir_configs, ARRAY_SIZE(msm_cir_configs)); if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_MDM) msm_gpiomux_install(mdm_configs, ARRAY_SIZE(mdm_configs)); }
void __init msm8930_init_cam(void) { msm_gpiomux_install(msm8930_cam_common_configs, ARRAY_SIZE(msm8930_cam_common_configs)); #ifndef CONFIG_FIH_CAMERA if (machine_is_msm8930_evt() && (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_SGLTE)) { msm_gpiomux_install(msm8930_evt_cam_configs, ARRAY_SIZE(msm8930_evt_cam_configs)); /* Load ov8825 & ov9724 only for SGLTE device */ msm8930_camera_board_info.board_info = msm8930_evt_camera_i2c_boardinfo; msm8930_camera_board_info.num_i2c_board_info = ARRAY_SIZE(msm8930_evt_camera_i2c_boardinfo); } #endif if (machine_is_msm8930_cdp()) { #ifndef CONFIG_FIH_CAMERA struct msm_camera_sensor_info *s_info; s_info = &msm_camera_sensor_s5k3l1yx_data; s_info->sensor_platform_info->mount_angle = 0; #endif #if defined(CONFIG_I2C) && (defined(CONFIG_GPIO_SX150X) || \ defined(CONFIG_GPIO_SX150X_MODULE)) msm_flash_src._fsrc.ext_driver_src.led_en = GPIO_CAM_GP_LED_EN1; msm_flash_src._fsrc.ext_driver_src.led_flash_en = GPIO_CAM_GP_LED_EN2; msm_flash_src._fsrc.ext_driver_src.expander_info = cam_expander_info; #endif } platform_device_register(&msm_camera_server); platform_device_register(&msm8960_device_csiphy0); platform_device_register(&msm8960_device_csiphy1); platform_device_register(&msm8960_device_csid0); platform_device_register(&msm8960_device_csid1); platform_device_register(&msm8960_device_ispif); platform_device_register(&msm8960_device_vfe); platform_device_register(&msm8960_device_vpe); }
static void msm8960_ext_spk_power_amp_off(u32 spk) { int ret = 0; if (spk & (SPK_AMP_POS | SPK_AMP_NEG)) { if (!msm8930_ext_spk_pamp) return; if (socinfo_get_pmic_model() == PMIC_MODEL_PM8917) { gpio_free(LEFT_SPKR_AMPL_GPIO); msm8930_ext_spk_pamp = 0; return; } if (machine_is_msm8930_mtp() || machine_is_msm8930_fluid()) { pr_debug("%s: Free speaker boost gpio %u\n", __func__, SPKR_BOOST_GPIO); gpio_direction_output(SPKR_BOOST_GPIO, 0); gpio_free(SPKR_BOOST_GPIO); } else if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_SGLTE) { ret = pm8xxx_gpio_config(spkr_boost_enable_gpio, &SPKR_OFF); if (ret) { pr_err("%s: Failure: spkr boost gpio OFF %u\n", __func__, spkr_boost_enable_gpio); return; } else { pr_debug("%s:Config PMIC8038 gpio for speaker" \ " OFF successfully\n", __func__); } } pm8xxx_spk_enable(MSM8930_SPK_OFF); msm8930_ext_spk_pamp = 0; pr_debug("%s: slepping 4 ms after turning on external " " Left Speaker Ampl\n", __func__); usleep_range(4000, 4000); } else { pr_err("%s: ERROR : Invalid External Speaker Ampl. spk = 0x%08x\n", __func__, spk); return; } }
static int __init msm8930_audio_init(void) { int ret; if (!soc_class_is_msm8930()) { pr_err("%s: Not the right machine type\n", __func__); return -ENODEV ; } mbhc_cfg.calibration = def_sitar_mbhc_cal(); if (!mbhc_cfg.calibration) { pr_err("Calibration data allocation failed\n"); return -ENOMEM; } msm8930_snd_device = platform_device_alloc("soc-audio", 0); if (!msm8930_snd_device) { pr_err("Platform device allocation failed\n"); kfree(mbhc_cfg.calibration); return -ENOMEM; } platform_set_drvdata(msm8930_snd_device, &snd_soc_card_msm8930); ret = platform_device_add(msm8930_snd_device); if (ret) { platform_device_put(msm8930_snd_device); kfree(mbhc_cfg.calibration); return ret; } if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_SGLTE) us_euro_gpio = GPIO_HS_US_EURO_SEL_GPIO_SGLTE; else us_euro_gpio = GPIO_HS_US_EURO_SEL_GPIO; if (msm8930_configure_headset_mic_gpios()) pr_err("%s Fail to configure headset mic gpios\n", __func__); atomic_set(&auxpcm_rsc_ref, 0); mutex_init(&cdc_mclk_mutex); return ret; }
int __init msm8960_init_gpiomux(void) { int rc = msm_gpiomux_init(NR_GPIO_IRQS); if (rc) { pr_err(KERN_ERR "msm_gpiomux_init failed %d\n", rc); return rc; } #if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE) if (socinfo_get_platform_subtype() != PLATFORM_SUBTYPE_SGLTE) msm_gpiomux_install(msm8960_ethernet_configs, ARRAY_SIZE(msm8960_ethernet_configs)); #endif msm_gpiomux_install(msm8960_gsbi_configs, ARRAY_SIZE(msm8960_gsbi_configs)); msm_gpiomux_install(msm8960_cyts_configs, ARRAY_SIZE(msm8960_cyts_configs)); msm_gpiomux_install(msm8960_slimbus_config, ARRAY_SIZE(msm8960_slimbus_config)); msm_gpiomux_install(msm8960_audio_codec_configs, ARRAY_SIZE(msm8960_audio_codec_configs)); msm_gpiomux_install(msm8960_audio_auxpcm_configs, ARRAY_SIZE(msm8960_audio_auxpcm_configs)); msm_gpiomux_install(wcnss_5wire_interface, ARRAY_SIZE(wcnss_5wire_interface)); #ifdef CONFIG_MMC_MSM_SDC4_SUPPORT msm_gpiomux_install(msm8960_sdcc4_configs, ARRAY_SIZE(msm8960_sdcc4_configs)); #endif if (machine_is_msm8960_mtp() || machine_is_msm8960_fluid() || machine_is_msm8960_liquid() || machine_is_msm8960_cdp()) { if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_SGLTE) msm_gpiomux_install(hap_lvl_shft_config_sglte, ARRAY_SIZE(hap_lvl_shft_config_sglte)); else msm_gpiomux_install(hap_lvl_shft_config, ARRAY_SIZE(hap_lvl_shft_config)); } #ifdef CONFIG_USB_EHCI_MSM_HSIC if ((SOCINFO_VERSION_MAJOR(socinfo_get_version()) != 1) && machine_is_msm8960_liquid()) msm_gpiomux_install(msm8960_hsic_configs, ARRAY_SIZE(msm8960_hsic_configs)); if ((SOCINFO_VERSION_MAJOR(socinfo_get_version()) != 1) && machine_is_msm8960_liquid()) msm_gpiomux_install(msm8960_hsic_hub_configs, ARRAY_SIZE(msm8960_hsic_hub_configs)); #endif #ifdef CONFIG_FB_MSM_HDMI_MSM_PANEL msm_gpiomux_install(msm8960_hdmi_configs, ARRAY_SIZE(msm8960_hdmi_configs)); #endif msm_gpiomux_install(msm8960_mdp_vsync_configs, ARRAY_SIZE(msm8960_mdp_vsync_configs)); if (socinfo_get_platform_subtype() != PLATFORM_SUBTYPE_SGLTE) msm_gpiomux_install(msm8960_gsbi8_uartdm_configs, ARRAY_SIZE(msm8960_gsbi8_uartdm_configs)); if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_SGLTE) msm_gpiomux_install(msm8960_gsbi8_uart_configs, ARRAY_SIZE(msm8960_gsbi8_uart_configs)); else msm_gpiomux_install(msm8960_gsbi5_uart_configs, ARRAY_SIZE(msm8960_gsbi5_uart_configs)); if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_SGLTE) { /* For 8960 Fusion 2.2 Primary IPC */ msm_gpiomux_install(msm8960_fusion_gsbi_configs, ARRAY_SIZE(msm8960_fusion_gsbi_configs)); /* For SGLTE 8960 Fusion External VFR */ msm_gpiomux_install(msm8960_external_vfr_configs, ARRAY_SIZE(msm8960_external_vfr_configs)); } #ifdef CONFIG_MMC_MSM_SDC2_SUPPORT msm_gpiomux_install(msm8960_sdcc2_configs, ARRAY_SIZE(msm8960_sdcc2_configs)); #endif if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_SGLTE) msm_gpiomux_install(sglte_configs, ARRAY_SIZE(sglte_configs)); return 0; }
void __init msm_htc_8974_init_gpiomux(void) { int rc; rc = msm_gpiomux_init_dt(); if (rc) { pr_err("%s failed %d\n", __func__, rc); return; } msm_gpiomux_install(msm_blsp_configs, ARRAY_SIZE(msm_blsp_configs)); msm_gpiomux_install(msm_blsp2_uart7_configs, ARRAY_SIZE(msm_blsp2_uart7_configs)); msm_gpiomux_install(wcnss_5wire_interface, ARRAY_SIZE(wcnss_5wire_interface)); msm_gpiomux_install(msm8974_slimbus_config, ARRAY_SIZE(msm8974_slimbus_config)); msm_gpiomux_install(msm_touch_configs, ARRAY_SIZE(msm_touch_configs)); msm_gpiomux_install(msm_sensor_configs, ARRAY_SIZE(msm_sensor_configs)); msm_gpiomux_install(msm_sensor_configs_non_common, ARRAY_SIZE(msm_sensor_configs_non_common)); //For china sku, GPIO 132 is for front cam ID, for non-china sku, GPIO 117 is for front cam ID if (of_machine_pid() == m8_TL_PID || of_machine_pid() == m8_DUG_PID || of_machine_pid() == m8_DUGL_PID || of_machine_pid() == m8_DWG_PID || of_machine_pid() == m8_DWGL_PID || of_machine_pid() == m8_UHL_PID) msm_gpiomux_install(msm_sensor_configs_china_sku, ARRAY_SIZE(msm_sensor_configs_china_sku)); else msm_gpiomux_install(msm_sensor_configs_non_china_sku, ARRAY_SIZE(msm_sensor_configs_non_china_sku)); msm_gpiomux_install(&nfc_irq_config, 1); msm_gpiomux_install(&sd_card_det, 1); msm_gpiomux_sdc4_install(); msm_gpiomux_install(msm_taiko_config, ARRAY_SIZE(msm_taiko_config)); msm_gpiomux_install(msm_hsic_configs, ARRAY_SIZE(msm_hsic_configs)); msm_gpiomux_install(msm_hdmi_configs, ARRAY_SIZE(msm_hdmi_configs)); msm_gpiomux_install(msm_mhl_configs, ARRAY_SIZE(msm_mhl_configs)); msm_gpiomux_install_nowrite(msm_lcd_configs, ARRAY_SIZE(msm_lcd_configs)); msm_gpiomux_install(msm_aud_configs, ARRAY_SIZE(msm_aud_configs)); msm_gpiomux_install(msm_aud_spk_china_configs, ARRAY_SIZE(msm_aud_spk_china_configs)); msm_gpiomux_install(msm_cir_configs, ARRAY_SIZE(msm_cir_configs)); if (of_machine_pid() == 268 || of_board_is_m8wlj()) msm_gpiomux_install(msm_felica_configs, ARRAY_SIZE(msm_felica_configs)); if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_MDM) msm_gpiomux_install(mdm_configs, ARRAY_SIZE(mdm_configs)); msm_gpiomux_install(msm_blsp_rawchip_spi_configs, ARRAY_SIZE(msm_blsp_rawchip_spi_configs)); }
void __init apq8064_init_gpiomux(void) { int rc; int platform_version = socinfo_get_platform_version(); rc = msm_gpiomux_init(NR_GPIO_IRQS); if (rc) { pr_err(KERN_ERR "msm_gpiomux_init failed %d\n", rc); return; } #ifdef CONFIG_MMC_MSM_SDC4_SUPPORT if (system_rev < BOARD_REV09) { msm_gpiomux_install(sdc4_interface, ARRAY_SIZE(sdc4_interface)); msm_gpiomux_install(sd_ls_en_60_config, ARRAY_SIZE(sd_ls_en_60_config)); } else { msm_gpiomux_install(sdc2_interface, ARRAY_SIZE(sdc2_interface)); msm_gpiomux_install(sd_ls_en_64_config, ARRAY_SIZE(sd_ls_en_64_config)); } #else msm_gpiomux_install(wcnss_5wire_interface, ARRAY_SIZE(wcnss_5wire_interface)); #endif if (machine_is_mpq8064_cdp() || machine_is_mpq8064_hrd() || machine_is_mpq8064_dtv()) { msm_gpiomux_install(mpq8064_gsbi5_i2c_configs, ARRAY_SIZE(mpq8064_gsbi5_i2c_configs)); #ifdef CONFIG_MSM_VCAP msm_gpiomux_install(vcap_configs, ARRAY_SIZE(vcap_configs)); #endif msm_gpiomux_install(sx150x_int_configs, ARRAY_SIZE(sx150x_int_configs)); } else { #if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE) msm_gpiomux_install(apq8064_ethernet_configs, ARRAY_SIZE(apq8064_ethernet_configs)); #endif msm_gpiomux_install(apq8064_gsbi_configs, ARRAY_SIZE(apq8064_gsbi_configs)); } msm_gpiomux_install(apq8064_nc_configs, ARRAY_SIZE(apq8064_nc_configs)); msm_gpiomux_install(sensorhub_configs, ARRAY_SIZE(sensorhub_configs)); if (system_rev > BOARD_REV11) msm_gpiomux_install(nfc_firmware_configs, ARRAY_SIZE(nfc_firmware_configs)); msm_gpiomux_install(apq8064_slimbus_config, ARRAY_SIZE(apq8064_slimbus_config)); msm_gpiomux_install(apq8064_audio_codec_configs, ARRAY_SIZE(apq8064_audio_codec_configs)); if (machine_is_mpq8064_cdp() || machine_is_mpq8064_hrd() || machine_is_mpq8064_dtv()) { msm_gpiomux_install(mpq8064_spkr_i2s_config, ARRAY_SIZE(mpq8064_spkr_i2s_config)); } pr_debug("%s(): audio-auxpcm: Include GPIO configs" " as audio is not the primary user" " for these GPIO Pins\n", __func__); msm_gpiomux_install(apq8064_auxpcm_configs, ARRAY_SIZE(apq8064_auxpcm_configs)); if (machine_is_mpq8064_cdp() || machine_is_mpq8064_hrd() || machine_is_mpq8064_dtv()) msm_gpiomux_install(mpq8064_mi2s_configs, ARRAY_SIZE(mpq8064_mi2s_configs)); if (machine_is_apq8064_mtp()|| machine_is_JF()) { if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_DSDA2) { msm_gpiomux_install(amdm_configs, ARRAY_SIZE(amdm_configs)); msm_gpiomux_install(bmdm_configs, ARRAY_SIZE(bmdm_configs)); } else if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_SGLTE2) { msm_gpiomux_install(mdm_configs, ARRAY_SIZE(mdm_configs)); msm_gpiomux_install(sglte2_qsc_configs, ARRAY_SIZE(sglte2_qsc_configs)); /* GSBI4 UART GPIOs for Primary IPC */ msm_gpiomux_install(apq8064_uartdm_gsbi4_configs, ARRAY_SIZE(apq8064_uartdm_gsbi4_configs)); } else if (SOCINFO_VERSION_MINOR(platform_version) == 1) { msm_gpiomux_install(mdm_i2s_configs, ARRAY_SIZE(mdm_i2s_configs)); } else { msm_gpiomux_install(mdm_configs, ARRAY_SIZE(mdm_configs)); } } if (machine_is_apq8064_mtp()|| machine_is_JF()) { if (SOCINFO_VERSION_MINOR(platform_version) == 1) { msm_gpiomux_install(cyts_gpio_alt_config, ARRAY_SIZE(cyts_gpio_alt_config)); } else { msm_gpiomux_install(cyts_gpio_configs, ARRAY_SIZE(cyts_gpio_configs)); } } #ifdef CONFIG_USB_EHCI_MSM_HSIC if (machine_is_apq8064_mtp()|| machine_is_JF()) msm_gpiomux_install(apq8064_hsic_configs, ARRAY_SIZE(apq8064_hsic_configs)); #endif if (machine_is_apq8064_cdp() || machine_is_apq8064_liquid()) msm_gpiomux_install(apq8064_mxt_configs, ARRAY_SIZE(apq8064_mxt_configs)); msm_gpiomux_install(apq8064_hdmi_configs, ARRAY_SIZE(apq8064_hdmi_configs)); if (machine_is_mpq8064_cdp()) msm_gpiomux_install(mpq8064_ir_configs, ARRAY_SIZE(mpq8064_ir_configs)); if (system_rev < BOARD_REV10) msm_gpiomux_install(msm8064_sd_det_config, ARRAY_SIZE(msm8064_sd_det_config)); #if defined(CONFIG_VIDEO_MHL_V2) msm_gpiomux_install(msm8960_mhl_configs, ARRAY_SIZE(msm8960_mhl_configs)); #endif #if defined(CONFIG_LEDS_AN30259A) msm_gpiomux_install(apq8064_leds_configs, ARRAY_SIZE(apq8064_leds_configs)); #endif #ifdef CONFIG_KEYBOARD_CYPRESS_TOUCH_236 printk(KERN_INFO"cypress gpio init in %s",__func__); if (system_rev > BOARD_REV10) msm_gpiomux_install(apq8064_tkey_config, ARRAY_SIZE(apq8064_tkey_config)); #endif #ifdef CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI if (system_rev >= BOARD_REV09) { printk(KERN_INFO "%s: config touch_irq config.\n",__func__); msm_gpiomux_install(apq8064_touch_irq_config, ARRAY_SIZE(apq8064_touch_irq_config)); } #endif #ifdef CONFIG_MFD_MAX77693 msm_gpiomux_install(apq8064_muic_config, ARRAY_SIZE(apq8064_muic_config)); #endif msm_gpiomux_install(apq8064_sec_jack_configs, ARRAY_SIZE(apq8064_sec_jack_configs)); if (machine_is_mpq8064_hrd() || machine_is_mpq8064_dtv()) msm_gpiomux_install(mpq8064_uartdm_configs, ARRAY_SIZE(mpq8064_uartdm_configs)); }
void __init msm_8974_init_gpiomux(void) { int rc; rc = msm_gpiomux_init_dt(); if (rc) { pr_err("%s failed %d\n", __func__, rc); return; } pr_err("%s:%d socinfo_get_version %x\n", __func__, __LINE__, socinfo_get_version()); if (socinfo_get_version() >= 0x20000) msm_tlmm_misc_reg_write(TLMM_SPARE_REG, 0xf); #if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE) if (!(of_board_is_dragonboard() && machine_is_apq8074())) msm_gpiomux_install(msm_eth_configs, \ ARRAY_SIZE(msm_eth_configs)); #endif msm_gpiomux_install(msm_blsp_configs, ARRAY_SIZE(msm_blsp_configs)); #if !defined(CONFIG_BT_BCM4335) && !defined(CONFIG_BT_BCM4339) msm_gpiomux_install(msm_blsp2_uart7_configs, ARRAY_SIZE(msm_blsp2_uart7_configs)); #endif #if 0 //defined(CONFIG_BT_BCM4335) || defined(CONFIG_BT_BCM4339) msm_gpiomux_btuart_install(); #endif msm_gpiomux_install(msm8974_slimbus_config, ARRAY_SIZE(msm8974_slimbus_config)); msm_gpiomux_install(msm_touch_configs, ARRAY_SIZE(msm_touch_configs)); #if !defined(CONFIG_SENSORS_SSP) msm_gpiomux_install(hap_lvl_shft_config, ARRAY_SIZE(hap_lvl_shft_config)); #endif msm_gpiomux_install(msm_sensor_configs, ARRAY_SIZE(msm_sensor_configs)); msm_gpiomux_install(&sd_card_det, 1); msm_gpiomux_sdc3_install(); msm_gpiomux_sdc4_install(); msm_gpiomux_install(msm_taiko_config, ARRAY_SIZE(msm_taiko_config)); msm_gpiomux_install(fuel_i2c_config, ARRAY_SIZE(fuel_i2c_config)); #if !defined(CONFIG_SENSORS_SSP) msm_gpiomux_install(msm_hsic_hub_configs, ARRAY_SIZE(msm_hsic_hub_configs)); #endif #if defined(CONFIG_SENSORS_SSP) msm_gpiomux_install(ssp_configs, ARRAY_SIZE(ssp_configs)); #endif msm_gpiomux_install(msm_hdmi_configs, ARRAY_SIZE(msm_hdmi_configs)); #if defined(CONFIG_BCM2079X_NFC_I2C) || defined(CONFIG_NFC_PN547) msm_gpiomux_install(msm_nfc_configs, ARRAY_SIZE(msm_nfc_configs)); #endif msm_gpiomux_install(msm8974_pri_pri_auxpcm_configs, ARRAY_SIZE(msm8974_pri_pri_auxpcm_configs)); #if defined(CONFIG_BCM4335) || defined(CONFIG_BCM4335_MODULE) || defined(CONFIG_BCM4339) || defined(CONFIG_BCM4339_MODULE) msm_gpiomux_wlan_host_wakeup_install(); #endif /* defined(CONFIG_BCM4335) || defined(CONFIG_BCM4335_MODULE) || defined(CONFIG_BCM4339) || defined(CONFIG_BCM4339_MODULE) */ #if defined(CONFIG_LEDS_AN30259A) if (system_rev < 7) { msm_gpiomux_install(an30259a_led_config, ARRAY_SIZE(an30259a_led_config)); } else { msm_gpiomux_install(an30259a_led_config_rev7, ARRAY_SIZE(an30259a_led_config_rev7)); } #endif msm_gpiomux_install_nowrite(msm_lcd_configs, ARRAY_SIZE(msm_lcd_configs)); #if !defined(CONFIG_BT_BCM4335) && !defined(CONFIG_BT_BCM4339) if (of_board_is_rumi()) msm_gpiomux_install(msm_rumi_blsp_configs, ARRAY_SIZE(msm_rumi_blsp_configs)); #endif if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_MDM) msm_gpiomux_install(mdm_configs, ARRAY_SIZE(mdm_configs)); if (of_board_is_dragonboard() && machine_is_apq8074()) msm_gpiomux_install(apq8074_dragonboard_ts_config, ARRAY_SIZE(apq8074_dragonboard_ts_config)); #ifdef CONFIG_SENSORS_HALL msm_gpiomux_install(msm8974_hall_configs, ARRAY_SIZE(msm8974_hall_configs)); #endif #if defined(CONFIG_KEYBOARD_CYPRESS_TOUCHKEY_KS01) msm_gpiomux_install(cypress_touch_configs, ARRAY_SIZE(cypress_touch_configs)); #endif msm_gpiomux_install(fpga_tflash, ARRAY_SIZE(fpga_tflash)); #if defined(CONFIG_TDMB) || defined(CONFIG_TDMB_MODULE) msm_gpiomux_install(tdmb_int_config, ARRAY_SIZE(tdmb_int_config)); #endif #if defined(CONFIG_MACH_KS01EUR) msm_gpiomux_install(batt_rem_alarm_configs, ARRAY_SIZE(batt_rem_alarm_configs)); #endif msm_gpiomux_install(nc_configs, ARRAY_SIZE(nc_configs)); #if defined(CONFIG_MACH_KS01EUR) msm_gpiomux_install(wireless_charge_configs, ARRAY_SIZE(wireless_charge_configs)); #endif }
void __init apq8064_init_gpiomux(void) { int rc; rc = msm_gpiomux_init(NR_GPIO_IRQS); if (rc) { pr_err(KERN_ERR "msm_gpiomux_init failed %d\n", rc); return; } #ifdef CONFIG_SWITCH_MAX1462X msm_gpiomux_install(apq8064_earjack_configs, ARRAY_SIZE(apq8064_earjack_configs)); #endif #ifndef CONFIG_MMC_MSM_SDC4_SUPPORT msm_gpiomux_install(wcnss_5wire_interface, ARRAY_SIZE(wcnss_5wire_interface)); #endif if (machine_is_mpq8064_cdp() || machine_is_mpq8064_hrd() || machine_is_mpq8064_dtv()) { #ifdef CONFIG_MSM_VCAP msm_gpiomux_install(vcap_configs, ARRAY_SIZE(vcap_configs)); #endif msm_gpiomux_install(sx150x_int_configs, ARRAY_SIZE(sx150x_int_configs)); } else { #if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE) msm_gpiomux_install(apq8064_ethernet_configs, ARRAY_SIZE(apq8064_ethernet_configs)); #endif msm_gpiomux_install(apq8064_gsbi_configs, ARRAY_SIZE(apq8064_gsbi_configs)); } msm_gpiomux_install(apq8064_slimbus_config, ARRAY_SIZE(apq8064_slimbus_config)); #if defined(CONFIG_ANDROID_IRRC) msm_gpiomux_install(apq8064_irrc_tx_configs, ARRAY_SIZE(apq8064_irrc_tx_configs)); #endif #ifdef CONFIG_SND_SOC_TPA2028D_DUAL_SPEAKER msm_gpiomux_install(apq8064_gsbi7_i2c_8ma_configs, ARRAY_SIZE(apq8064_gsbi7_i2c_8ma_configs)); #endif msm_gpiomux_install(apq8064_audio_codec_configs, ARRAY_SIZE(apq8064_audio_codec_configs)); if (machine_is_mpq8064_cdp() || machine_is_mpq8064_hrd() || machine_is_mpq8064_dtv()) { msm_gpiomux_install(mpq8064_spkr_i2s_config, ARRAY_SIZE(mpq8064_spkr_i2s_config)); } pr_debug("%s(): audio-auxpcm: Include GPIO configs" " as audio is not the primary user" " for these GPIO Pins\n", __func__); #if defined(CONFIG_MODEM_SUPPORT) if (machine_is_apq8064_mtp()) { if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_DSDA2) { msm_gpiomux_install(amdm_configs, ARRAY_SIZE(amdm_configs)); msm_gpiomux_install(bmdm_configs, ARRAY_SIZE(bmdm_configs)); } else if (SOCINFO_VERSION_MINOR(platform_version) == 1) msm_gpiomux_install(mdm_i2s_configs, ARRAY_SIZE(mdm_i2s_configs)); else msm_gpiomux_install(mdm_configs, ARRAY_SIZE(mdm_configs)); } #endif #ifdef CONFIG_USB_EHCI_MSM_HSIC if (machine_is_apq8064_mtp()) { if (SOCINFO_VERSION_MINOR(platform_version) == 1) { msm_gpiomux_install(cyts_gpio_alt_config, ARRAY_SIZE(cyts_gpio_alt_config)); } else { msm_gpiomux_install(cyts_gpio_configs, ARRAY_SIZE(cyts_gpio_configs)); } } if (machine_is_apq8064_mtp()) msm_gpiomux_install(apq8064_hsic_configs, ARRAY_SIZE(apq8064_hsic_configs)); #endif if (machine_is_apq8064_cdp() || machine_is_apq8064_liquid()) msm_gpiomux_install(apq8064_mxt_configs, ARRAY_SIZE(apq8064_mxt_configs)); msm_gpiomux_install(apq8064_hdmi_configs, ARRAY_SIZE(apq8064_hdmi_configs)); #if defined (CONFIG_SLIMPORT_ANX7808) msm_gpiomux_install(apq8064_slimport_configs, ARRAY_SIZE(apq8064_slimport_configs)); pr_err("[Slimport] revision = %d gpiomux install complete!\n", lge_get_board_revno()); #endif #ifdef CONFIG_MMC_MSM_SDC2_SUPPORT msm_gpiomux_install(apq8064_sdc2_configs, ARRAY_SIZE(apq8064_sdc2_configs)); #endif #ifdef CONFIG_MMC_MSM_SDC4_SUPPORT msm_gpiomux_install(apq8064_sdc4_configs, ARRAY_SIZE(apq8064_sdc4_configs)); #endif msm_gpiomux_install(apq8064_sdc3_configs_chg, ARRAY_SIZE(apq8064_sdc3_configs_chg)); }
void __init msm_8974_init_gpiomux(void) { int rc; rc = msm_gpiomux_init_dt(); if (rc) { pr_err("%s failed %d\n", __func__, rc); return; } pr_err("%s:%d socinfo_get_version %x\n", __func__, __LINE__, socinfo_get_version()); msm_tlmm_misc_reg_write(TLMM_SPARE_REG, 0x5); #if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE) msm_gpiomux_install(msm_eth_configs, ARRAY_SIZE(msm_eth_configs)); #endif msm_gpiomux_install(msm_blsp_configs, ARRAY_SIZE(msm_blsp_configs)); #if !defined(CONFIG_MACH_KS01SKT) && !defined(CONFIG_MACH_KS01KTT)\ && !defined(CONFIG_MACH_KS01LGT) msm_gpiomux_install(msm_blsp2_uart7_configs, ARRAY_SIZE(msm_blsp2_uart7_configs)); #endif #if defined(CONFIG_MACH_KS01SKT) || defined(CONFIG_MACH_KS01KTT)\ || defined(CONFIG_MACH_KS01LGT) && defined(CONFIG_BT_BCM4335) msm_gpiomux_btuart_install(); #endif msm_gpiomux_install(msm8974_slimbus_config, ARRAY_SIZE(msm8974_slimbus_config)); msm_gpiomux_install(msm_touch_configs, ARRAY_SIZE(msm_touch_configs)); #if !defined(CONFIG_SENSORS_SSP) msm_gpiomux_install(hap_lvl_shft_config, ARRAY_SIZE(hap_lvl_shft_config)); #endif msm_gpiomux_install(msm_sensor_configs, ARRAY_SIZE(msm_sensor_configs)); #ifdef CONFIG_MACH_KS01 msm_gpiomux_install(&sd_card_det, 1); if(system_rev < 3) msm_gpiomux_install(wcnss_5wire_interface, ARRAY_SIZE(wcnss_5wire_interface)); else msm_gpiomux_sdc3_install(); #else msm_gpiomux_sdc3_install(); #endif msm_gpiomux_sdc4_install(); msm_gpiomux_install(msm_taiko_config, ARRAY_SIZE(msm_taiko_config)); #if !defined(CONFIG_SENSORS_SSP) msm_gpiomux_install(msm_hsic_hub_configs, ARRAY_SIZE(msm_hsic_hub_configs)); #endif #if defined(CONFIG_SENSORS_SSP) msm_gpiomux_install(ssp_configs, ARRAY_SIZE(ssp_configs)); #endif msm_gpiomux_install(msm_hdmi_configs, ARRAY_SIZE(msm_hdmi_configs)); #if defined(CONFIG_BCM2079X_NFC_I2C) msm_gpiomux_install(msm_nfc_configs, ARRAY_SIZE(msm_nfc_configs)); #endif #if defined(CONFIG_BCM4335) || defined(CONFIG_BCM4335_MODULE) msm_gpiomux_wlan_host_wakeup_install(); #endif /* defined(CONFIG_BCM4335) || defined(CONFIG_BCM4335_MODULE) */ #if defined(CONFIG_LEDS_AN30259A) #if defined(CONFIG_MACH_KS01SKT) || defined(CONFIG_MACH_KS01KTT)\ || defined(CONFIG_MACH_KS01LGT) if (system_rev < 7) { msm_gpiomux_install(an30259a_led_config, ARRAY_SIZE(an30259a_led_config)); } else { msm_gpiomux_install(an30259a_led_config_rev7, ARRAY_SIZE(an30259a_led_config_rev7)); } #else msm_gpiomux_install(an30259a_led_config, ARRAY_SIZE(an30259a_led_config)); #endif #endif msm_gpiomux_install(msm8974_pri_auxpcm_configs, ARRAY_SIZE(msm8974_pri_auxpcm_configs)); if (of_board_is_rumi()) msm_gpiomux_install(msm_rumi_blsp_configs, ARRAY_SIZE(msm_rumi_blsp_configs)); if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_MDM) msm_gpiomux_install(mdm_configs, ARRAY_SIZE(mdm_configs)); if (of_board_is_dragonboard() && machine_is_apq8074()) msm_gpiomux_install(apq8074_dragonboard_ts_config, ARRAY_SIZE(apq8074_dragonboard_ts_config)); #ifdef CONFIG_SENSORS_HALL msm_gpiomux_install(msm8974_hall_configs, ARRAY_SIZE(msm8974_hall_configs)); #endif #ifdef CONFIG_KEYBOARD_CYPRESS_TOUCH msm_gpiomux_install(cypress_touch_configs, ARRAY_SIZE(cypress_touch_configs)); #endif msm_gpiomux_install(fpga_tflash, ARRAY_SIZE(fpga_tflash)); msm_gpiomux_install(nc_configs, ARRAY_SIZE(nc_configs)); }
static int msm8930_audrx_init(struct snd_soc_pcm_runtime *rtd) { int err, ret; struct snd_soc_codec *codec = rtd->codec; struct snd_soc_dapm_context *dapm = &codec->dapm; struct snd_soc_dai *cpu_dai = rtd->cpu_dai; pr_debug("%s()\n", __func__); snd_soc_dapm_new_controls(dapm, msm8930_dapm_widgets, ARRAY_SIZE(msm8930_dapm_widgets)); if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_SGLTE) snd_soc_dapm_add_routes(dapm, common_audio_map_sglte, ARRAY_SIZE(common_audio_map_sglte)); else snd_soc_dapm_add_routes(dapm, common_audio_map, ARRAY_SIZE(common_audio_map)); snd_soc_dapm_enable_pin(dapm, "Ext Spk Left Pos"); snd_soc_dapm_enable_pin(dapm, "Ext Spk Left Neg"); snd_soc_dapm_sync(dapm); err = snd_soc_jack_new(codec, "Headset Jack", MSM8930_JACK_TYPES, &hs_jack); if (err) { pr_err("failed to create new jack\n"); return err; } err = snd_soc_jack_new(codec, "Button Jack", SITAR_JACK_BUTTON_MASK, &button_jack); if (err) { pr_err("failed to create new jack\n"); return err; } ret = snd_jack_set_key(button_jack.jack, SND_JACK_BTN_0, KEY_MEDIA); if (ret) { pr_err("%s: Failed to set code for btn-0\n", __func__); return err; } codec_clk = clk_get(cpu_dai->dev, "osr_clk"); /* * Switch is present only in 8930 CDP and SGLTE */ if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_SGLTE || machine_is_msm8930_cdp()) mbhc_cfg.swap_gnd_mic = msm8930_swap_gnd_mic; if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_SGLTE) { mbhc_cfg.gpio = GPIO_HS_DET_SGLTE; mbhc_cfg.gpio_level_insert = 0; } else mbhc_cfg.gpio = GPIO_HS_DET; /* * GPIO for headset detect is present in all devices * MTP/Fluid/CDP/SGLTE */ err = gpio_request(mbhc_cfg.gpio, "HEADSET_DETECT"); if (err) { pr_err("%s: Failed to request gpio %d\n", __func__, mbhc_cfg.gpio); return err; } mbhc_cfg.gpio_irq = gpio_to_irq(mbhc_cfg.gpio); sitar_hs_detect(codec, &mbhc_cfg); if (socinfo_get_pmic_model() != PMIC_MODEL_PM8917) { /* Initialize default PMIC speaker gain */ pm8xxx_spk_gain(DEFAULT_PMIC_SPK_GAIN); } return 0; }
static int __init smd_tty_init(void) { int ret; int n; int idx; smd_tty_driver = alloc_tty_driver(MAX_SMD_TTYS); if (smd_tty_driver == 0) return -ENOMEM; smd_tty_driver->owner = THIS_MODULE; smd_tty_driver->driver_name = "smd_tty_driver"; smd_tty_driver->name = "smd"; smd_tty_driver->major = 0; smd_tty_driver->minor_start = 0; smd_tty_driver->type = TTY_DRIVER_TYPE_SERIAL; smd_tty_driver->subtype = SERIAL_TYPE_NORMAL; smd_tty_driver->init_termios = tty_std_termios; smd_tty_driver->init_termios.c_iflag = 0; smd_tty_driver->init_termios.c_oflag = 0; smd_tty_driver->init_termios.c_cflag = B38400 | CS8 | CREAD; smd_tty_driver->init_termios.c_lflag = 0; smd_tty_driver->flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV; tty_set_operations(smd_tty_driver, &smd_tty_ops); ret = tty_register_driver(smd_tty_driver); if (ret) { put_tty_driver(smd_tty_driver); pr_err("%s: driver registration failed %d\n", __func__, ret); return ret; } for (n = 0; n < ARRAY_SIZE(smd_configs); ++n) { idx = smd_configs[n].tty_dev_index; if (smd_configs[n].dev_name == NULL) smd_configs[n].dev_name = smd_configs[n].port_name; if (idx == DS_IDX) { /* * DS port uses the kernel API starting with * 8660 Fusion. Only register the userspace * platform device for older targets. */ int legacy_ds = 0; legacy_ds |= cpu_is_msm7x01() || cpu_is_msm7x25(); legacy_ds |= cpu_is_msm7x27() || cpu_is_msm7x30(); legacy_ds |= cpu_is_qsd8x50() || cpu_is_msm8x55(); /* * use legacy mode for 8660 Standalone (subtype 0) */ legacy_ds |= cpu_is_msm8x60() && (socinfo_get_platform_subtype() == 0x0); if (!legacy_ds) continue; } tty_register_device(smd_tty_driver, idx, 0); init_completion(&smd_tty[idx].ch_allocated); /* register platform device */ smd_tty[idx].driver.probe = smd_tty_dummy_probe; smd_tty[idx].driver.driver.name = smd_configs[n].dev_name; smd_tty[idx].driver.driver.owner = THIS_MODULE; spin_lock_init(&smd_tty[idx].reset_lock); smd_tty[idx].is_open = 0; init_waitqueue_head(&smd_tty[idx].ch_opened_wait_queue); ret = platform_driver_register(&smd_tty[idx].driver); if (ret) { pr_err("%s: init failed %d (%d)\n", __func__, idx, ret); smd_tty[idx].driver.probe = NULL; goto out; } smd_tty[idx].smd = &smd_configs[n]; } INIT_DELAYED_WORK(&loopback_work, loopback_probe_worker); return 0; out: /* unregister platform devices */ for (n = 0; n < ARRAY_SIZE(smd_configs); ++n) { idx = smd_configs[n].tty_dev_index; if (smd_tty[idx].driver.probe) { platform_driver_unregister(&smd_tty[idx].driver); tty_unregister_device(smd_tty_driver, idx); } } tty_unregister_driver(smd_tty_driver); put_tty_driver(smd_tty_driver); return ret; }
/* ZTE_Audio_LCX_130325, lichaoxia, 2013-03-25, end */ static int msm8930_configure_headset_mic_gpios(void) { int ret; /* ZTE_Audio_LCX_130325, lichaoxia, 2013-03-25, start */ #if defined(CONFIG_US_EURO_SWITCH) struct pm_gpio param = { .direction = PM_GPIO_DIR_OUT, .output_buffer = PM_GPIO_OUT_BUF_CMOS, .output_value = 1, .pull = PM_GPIO_PULL_NO, .vin_sel = PM_GPIO_VIN_S4, .out_strength = PM_GPIO_STRENGTH_MED, .function = PM_GPIO_FUNC_NORMAL, }; ret = gpio_request(us_euro_sel_gpio, "US_EURO_SWITCH"); if (ret) { pr_err("%s: Failed to request gpio %d\n", __func__, us_euro_sel_gpio); return ret; } ret = pm8xxx_gpio_config(us_euro_sel_gpio, ¶m); if (ret) pr_err("%s: Failed to configure gpio %d\n", __func__, us_euro_sel_gpio); else gpio_direction_output(us_euro_sel_gpio, 0); #else if (!us_euro_gpio) return 0; ret = gpio_request(80, "US_EURO_SWITCH"); if (ret) { pr_err("%s: Failed to request gpio 80\n", __func__); return ret; } ret = gpio_direction_output(80, 0); if (ret) { pr_err("%s: Unable to set direction\n", __func__); gpio_free(80); return ret; } #endif /* ZTE_Audio_LCX_130325, lichaoxia, 2013-03-25, end */ msm8930_useuro_gpio_requested = 1; return 0; } static void msm8930_free_headset_mic_gpios(void) { if (msm8930_useuro_gpio_requested) { /* ZTE_Audio_LCX_130325, lichaoxia, 2013-03-25, start */ #if defined(CONFIG_US_EURO_SWITCH) gpio_free(us_euro_sel_gpio); #else gpio_free(80); #endif /* ZTE_Audio_LCX_130325, lichaoxia, 2013-03-25, end */ msm8930_useuro_gpio_requested = 0; } } static int __init msm8930_audio_init(void) { int ret; if (!soc_class_is_msm8930()) { pr_err("%s: Not the right machine type\n", __func__); return -ENODEV ; } mbhc_cfg.calibration = def_sitar_mbhc_cal(); if (!mbhc_cfg.calibration) { pr_err("Calibration data allocation failed\n"); return -ENOMEM; } msm8930_snd_device = platform_device_alloc("soc-audio", 0); if (!msm8930_snd_device) { pr_err("Platform device allocation failed\n"); kfree(mbhc_cfg.calibration); return -ENOMEM; } platform_set_drvdata(msm8930_snd_device, &snd_soc_card_msm8930); ret = platform_device_add(msm8930_snd_device); if (ret) { platform_device_put(msm8930_snd_device); kfree(mbhc_cfg.calibration); return ret; } if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_SGLTE) us_euro_gpio = GPIO_HS_US_EURO_SEL_GPIO_SGLTE; else us_euro_gpio = GPIO_HS_US_EURO_SEL_GPIO; if (msm8930_configure_headset_mic_gpios()) pr_err("%s Fail to configure headset mic gpios\n", __func__); atomic_set(&auxpcm_rsc_ref, 0); mutex_init(&cdc_mclk_mutex); return ret; }
static int __init smd_tty_init(void) { int ret; int n; int idx; smd_tty_driver = alloc_tty_driver(MAX_SMD_TTYS); if (smd_tty_driver == 0) return -ENOMEM; smd_tty_driver->owner = THIS_MODULE; smd_tty_driver->driver_name = "smd_tty_driver"; smd_tty_driver->name = "smd"; smd_tty_driver->major = 0; smd_tty_driver->minor_start = 0; smd_tty_driver->type = TTY_DRIVER_TYPE_SERIAL; smd_tty_driver->subtype = SERIAL_TYPE_NORMAL; smd_tty_driver->init_termios = tty_std_termios; smd_tty_driver->init_termios.c_iflag = 0; smd_tty_driver->init_termios.c_oflag = 0; smd_tty_driver->init_termios.c_cflag = B38400 | CS8 | CREAD; smd_tty_driver->init_termios.c_lflag = 0; smd_tty_driver->flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV; tty_set_operations(smd_tty_driver, &smd_tty_ops); ret = tty_register_driver(smd_tty_driver); if (ret) { put_tty_driver(smd_tty_driver); pr_err("%s: driver registration failed %d\n", __func__, ret); return ret; } for (n = 0; n < ARRAY_SIZE(smd_configs); ++n) { idx = smd_configs[n].tty_dev_index; if (smd_configs[n].dev_name == NULL) smd_configs[n].dev_name = smd_configs[n].port_name; if (idx == DS_IDX) { int legacy_ds = 0; legacy_ds |= cpu_is_msm7x01() || cpu_is_msm7x25(); legacy_ds |= cpu_is_msm7x27() || cpu_is_msm7x30(); legacy_ds |= cpu_is_qsd8x50() || cpu_is_msm8x55(); legacy_ds |= (cpu_is_msm8960() || cpu_is_msm8930() || cpu_is_msm8930aa()) && (board_mfg_mode() == 8); legacy_ds |= cpu_is_msm8x60() && (socinfo_get_platform_subtype() == 0x0); #ifdef CONFIG_MACH_DUMMY legacy_ds = 1; #endif if (!legacy_ds) continue; } tty_register_device(smd_tty_driver, idx, 0); init_completion(&smd_tty[idx].ch_allocated); smd_tty[idx].driver.probe = smd_tty_dummy_probe; smd_tty[idx].driver.driver.name = smd_configs[n].dev_name; smd_tty[idx].driver.driver.owner = THIS_MODULE; spin_lock_init(&smd_tty[idx].reset_lock); smd_tty[idx].is_open = 0; setup_timer(&smd_tty[idx].buf_req_timer, buf_req_retry, (unsigned long)&smd_tty[idx]); init_waitqueue_head(&smd_tty[idx].ch_opened_wait_queue); ret = platform_driver_register(&smd_tty[idx].driver); if (ret) { pr_err("%s: init failed %d (%d)\n", __func__, idx, ret); smd_tty[idx].driver.probe = NULL; goto out; } smd_tty[idx].smd = &smd_configs[n]; } INIT_DELAYED_WORK(&loopback_work, loopback_probe_worker); return 0; out: for (n = 0; n < ARRAY_SIZE(smd_configs); ++n) { idx = smd_configs[n].tty_dev_index; if (smd_tty[idx].driver.probe) { platform_driver_unregister(&smd_tty[idx].driver); tty_unregister_device(smd_tty_driver, idx); } } tty_unregister_driver(smd_tty_driver); put_tty_driver(smd_tty_driver); return ret; }
static int __init smd_tty_init(void) { int ret; int n; int idx; struct tty_port *port; smd_tty_log_init(); smd_tty_driver = alloc_tty_driver(MAX_SMD_TTYS); if (smd_tty_driver == 0) { SMD_TTY_ERR("%s - Driver allocation failed", __func__); return -ENOMEM; } smd_tty_driver->owner = THIS_MODULE; smd_tty_driver->driver_name = "smd_tty_driver"; smd_tty_driver->name = "smd"; smd_tty_driver->major = 0; smd_tty_driver->minor_start = 0; smd_tty_driver->type = TTY_DRIVER_TYPE_SERIAL; smd_tty_driver->subtype = SERIAL_TYPE_NORMAL; smd_tty_driver->init_termios = tty_std_termios; smd_tty_driver->init_termios.c_iflag = 0; smd_tty_driver->init_termios.c_oflag = 0; smd_tty_driver->init_termios.c_cflag = B38400 | CS8 | CREAD; smd_tty_driver->init_termios.c_lflag = 0; smd_tty_driver->flags = TTY_DRIVER_RESET_TERMIOS | TTY_DRIVER_REAL_RAW | TTY_DRIVER_DYNAMIC_DEV; tty_set_operations(smd_tty_driver, &smd_tty_ops); ret = tty_register_driver(smd_tty_driver); if (ret) { put_tty_driver(smd_tty_driver); SMD_TTY_ERR("%s: driver registration failed %d", __func__, ret); return ret; } for (n = 0; n < ARRAY_SIZE(smd_configs); ++n) { idx = smd_configs[n].tty_dev_index; if (smd_configs[n].dev_name == NULL) smd_configs[n].dev_name = smd_configs[n].port_name; if (idx == DS_IDX) { /* * DS port uses the kernel API starting with * 8660 Fusion. Only register the userspace * platform device for older targets. */ int legacy_ds = 0; legacy_ds |= cpu_is_msm7x01() || cpu_is_msm7x25(); legacy_ds |= cpu_is_msm7x27() || cpu_is_msm7x30(); legacy_ds |= cpu_is_qsd8x50() || cpu_is_msm8x55(); /* * use legacy mode for 8660 Standalone (subtype 0) */ legacy_ds |= cpu_is_msm8x60() && (socinfo_get_platform_subtype() == 0x0); #ifdef CONFIG_MSM_SMD_TTY_DS_LEGACY legacy_ds |= cpu_is_msm8974(); #endif if (!legacy_ds) continue; } port = &smd_tty[idx].port; tty_port_init(port); port->ops = &smd_tty_port_ops; /* TODO: For kernel >= 3.7 use tty_port_register_device */ smd_tty[idx].device_ptr = tty_register_device(smd_tty_driver, idx, 0); if (device_create_file(smd_tty[idx].device_ptr, &dev_attr_open_timeout)) SMD_TTY_ERR( "%s: Unable to create device attributes for %s", __func__, smd_configs[n].port_name); init_completion(&smd_tty[idx].ch_allocated); /* register platform device */ smd_tty[idx].driver.probe = smd_tty_dummy_probe; #ifdef CONFIG_MSM_SMD_TTY_DS_LEGACY if (idx == DS_IDX) { /* register platform device for DS */ smd_tty[idx].driver.probe = smd_tty_ds_probe; smd_tty[idx].is_dsmodem_ready = 0; } #endif smd_tty[idx].driver.driver.name = smd_configs[n].dev_name; smd_tty[idx].driver.driver.owner = THIS_MODULE; spin_lock_init(&smd_tty[idx].reset_lock); spin_lock_init(&smd_tty[idx].ra_lock); smd_tty[idx].is_open = 0; setup_timer(&smd_tty[idx].buf_req_timer, buf_req_retry, (unsigned long)&smd_tty[idx]); init_waitqueue_head(&smd_tty[idx].ch_opened_wait_queue); ret = platform_driver_register(&smd_tty[idx].driver); if (ret) { SMD_TTY_ERR( "%s: init failed %d (%d)", __func__, idx, ret); smd_tty[idx].driver.probe = NULL; goto out; } smd_tty[idx].smd = &smd_configs[n]; } INIT_DELAYED_WORK(&loopback_work, loopback_probe_worker); return 0; out: /* unregister platform devices */ for (n = 0; n < ARRAY_SIZE(smd_configs); ++n) { idx = smd_configs[n].tty_dev_index; if (smd_tty[idx].driver.probe) { platform_driver_unregister(&smd_tty[idx].driver); tty_unregister_device(smd_tty_driver, idx); } } tty_unregister_driver(smd_tty_driver); put_tty_driver(smd_tty_driver); return ret; }
void __init msm_8974_init_gpiomux(void) { int rc; rc = msm_gpiomux_init_dt(); if (rc) { pr_err("%s failed %d\n", __func__, rc); return; } pr_err("%s:%d socinfo_get_version %x\n", __func__, __LINE__, socinfo_get_version()); msm_tlmm_misc_reg_write(TLMM_SPARE_REG, 0x5); #if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE) msm_gpiomux_install(msm_eth_configs, ARRAY_SIZE(msm_eth_configs)); #endif msm_gpiomux_install(msm_blsp_configs, ARRAY_SIZE(msm_blsp_configs)); #if !defined(CONFIG_BT_BCM4335) && !defined(CONFIG_BT_BCM4339) msm_gpiomux_install(msm_blsp2_uart7_configs, ARRAY_SIZE(msm_blsp2_uart7_configs)); #endif #if 0 //defined(CONFIG_BT_BCM4335) || defined(CONFIG_BT_BCM4339) msm_gpiomux_btuart_install(); #endif msm_gpiomux_install(msm8974_slimbus_config, ARRAY_SIZE(msm8974_slimbus_config)); msm_gpiomux_install(ext_buck_configs, ARRAY_SIZE(ext_buck_configs)); msm_gpiomux_install(hw_rev_configs, ARRAY_SIZE(hw_rev_configs)); msm_gpiomux_install(gpio_nc_configs, ARRAY_SIZE(gpio_nc_configs)); #if !defined(CONFIG_SENSORS_SSP) msm_gpiomux_install(hap_lvl_shft_config, ARRAY_SIZE(hap_lvl_shft_config)); #endif msm_gpiomux_install(msm_sensor_configs, ARRAY_SIZE(msm_sensor_configs)); msm_gpiomux_install(&sd_card_det, 1); #ifdef CONFIG_MACH_KS01 if(system_rev < 3) msm_gpiomux_install(wcnss_5wire_interface, ARRAY_SIZE(wcnss_5wire_interface)); else msm_gpiomux_sdc3_install(); #else msm_gpiomux_sdc3_install(); #endif msm_gpiomux_sdc4_install(); msm_gpiomux_install(msm_taiko_config, ARRAY_SIZE(msm_taiko_config)); msm_gpiomux_install(es325_config, ARRAY_SIZE(es325_config)); msm_gpiomux_install(ear_send_end_config, ARRAY_SIZE(ear_send_end_config)); #if !defined(CONFIG_SENSORS_SSP) msm_gpiomux_install(msm_hsic_hub_configs, ARRAY_SIZE(msm_hsic_hub_configs)); #endif #if defined(CONFIG_SENSORS_SSP) msm_gpiomux_install(ssp_configs, ARRAY_SIZE(ssp_configs)); #endif msm_gpiomux_install(msm_hdmi_configs, ARRAY_SIZE(msm_hdmi_configs)); if (system_rev > 6) msm_gpiomux_install(msm_hdmi_ddc_configs, ARRAY_SIZE(msm_hdmi_ddc_configs)); #ifdef CONFIG_VIDEO_MHL_V2 if(system_rev > 1) msm_gpiomux_install(mhl_configs, ARRAY_SIZE(mhl_configs)); #endif #if defined(CONFIG_BCM2079X_NFC_I2C) || defined(CONFIG_NFC_PN547) msm_gpiomux_install(msm_nfc_configs, ARRAY_SIZE(msm_nfc_configs)); if(system_rev == 9 || system_rev == 10) { // over-write I2C config, rev09,10 has no external Pull-up register. msm_gpiomux_install(msm_nfc_i2c_configs_rev09, ARRAY_SIZE(msm_nfc_i2c_configs_rev09)); } #endif #if defined(CONFIG_BCM4335) || defined(CONFIG_BCM4335_MODULE) || defined(CONFIG_BCM4339) || defined(CONFIG_BCM4339_MODULE) msm_gpiomux_wlan_host_wakeup_install(); #endif /* defined(CONFIG_BCM4335) || defined(CONFIG_BCM4335_MODULE) || defined(CONFIG_BCM4339) || defined(CONFIG_BCM4339_MODULE) */ #if defined(CONFIG_LEDS_AN30259A) #if defined(CONFIG_MACH_KS01SKT) || defined(CONFIG_MACH_KS01KTT)\ || defined(CONFIG_MACH_KS01LGT) if (system_rev < 7) { msm_gpiomux_install(an30259a_led_config, ARRAY_SIZE(an30259a_led_config)); } else { msm_gpiomux_install(an30259a_led_config_rev7, ARRAY_SIZE(an30259a_led_config_rev7)); } #else msm_gpiomux_install(an30259a_led_config, ARRAY_SIZE(an30259a_led_config)); #endif #endif msm_gpiomux_install(msm8974_pri_auxpcm_configs, ARRAY_SIZE(msm8974_pri_auxpcm_configs)); #if !defined(CONFIG_BT_BCM4335) && !defined(CONFIG_BT_BCM4339) if (of_board_is_rumi()) msm_gpiomux_install(msm_rumi_blsp_configs, ARRAY_SIZE(msm_rumi_blsp_configs)); #endif #if defined(CONFIG_GSM_MODEM_SPRD6500) msm_gpiomux_sc6500_spi_install(); #endif #ifdef CONFIG_SENSORS_HALL msm_gpiomux_install(msm8974_hall_configs, ARRAY_SIZE(msm8974_hall_configs)); #endif #ifdef CONFIG_W1_SLAVE_DS28EL15 msm_gpiomux_install(msm8974_cover_id_config, ARRAY_SIZE(msm8974_cover_id_config)); #endif #ifdef CONFIG_SENSORS_VFS61XX msm_gpiomux_install(msm8974_fingerprint_configs, ARRAY_SIZE(msm8974_fingerprint_configs)); if (system_rev > 2) msm_gpiomux_install(msm8974_fingerprint_rev03_configs, ARRAY_SIZE(msm8974_fingerprint_rev03_configs)); #endif if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_MDM) msm_gpiomux_install(mdm_configs, ARRAY_SIZE(mdm_configs)); if (of_board_is_dragonboard() && machine_is_apq8074()) msm_gpiomux_install(apq8074_dragonboard_ts_config, ARRAY_SIZE(apq8074_dragonboard_ts_config)); #ifdef CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI printk(KERN_INFO "%s:[TSP] touch config.\n",__func__); msm_gpiomux_install(msm8974_touch_config, ARRAY_SIZE(msm8974_touch_config)); #endif msm_gpiomux_install(msm8974_te_configs, ARRAY_SIZE(msm8974_te_configs)); msm_gpiomux_install(msm8974_oled_id_configs, ARRAY_SIZE(msm8974_oled_id_configs)); msm_gpiomux_install(msm8974_uart_config, ARRAY_SIZE(msm8974_uart_config)); msm_gpiomux_install(msm8974_fpga_config, ARRAY_SIZE(msm8974_fpga_config)); }
void __init apq8064_init_gpiomux(void) { int rc; int platform_version = socinfo_get_platform_version(); rc = msm_gpiomux_init(NR_GPIO_IRQS); if (rc) { pr_err(KERN_ERR "msm_gpiomux_init failed %d\n", rc); return; } msm_gpiomux_install(wcnss_5wire_interface, ARRAY_SIZE(wcnss_5wire_interface)); if (machine_is_mpq8064_cdp() || machine_is_mpq8064_hrd() || machine_is_mpq8064_dtv()) { msm_gpiomux_install(mpq8064_gsbi5_i2c_configs, ARRAY_SIZE(mpq8064_gsbi5_i2c_configs)); #ifdef CONFIG_MSM_VCAP msm_gpiomux_install(vcap_configs, ARRAY_SIZE(vcap_configs)); #endif msm_gpiomux_install(sx150x_int_configs, ARRAY_SIZE(sx150x_int_configs)); } else { #if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE) /*added by congshan 20121008 start*/ #ifdef CONFIG_ZTEMT_MHL_8064 #else msm_gpiomux_install(apq8064_ethernet_configs, ARRAY_SIZE(apq8064_ethernet_configs)); #endif /*added by congshan 20121008 end*/ #endif msm_gpiomux_install(apq8064_gsbi_configs, ARRAY_SIZE(apq8064_gsbi_configs)); } msm_gpiomux_install(apq8064_slimbus_config, ARRAY_SIZE(apq8064_slimbus_config)); msm_gpiomux_install(apq8064_audio_codec_configs, ARRAY_SIZE(apq8064_audio_codec_configs)); if (machine_is_mpq8064_cdp() || machine_is_mpq8064_hrd() || machine_is_mpq8064_dtv()) { msm_gpiomux_install(mpq8064_spkr_i2s_config, ARRAY_SIZE(mpq8064_spkr_i2s_config)); } pr_debug("%s(): audio-auxpcm: Include GPIO configs" " as audio is not the primary user" " for these GPIO Pins\n", __func__); if (machine_is_mpq8064_cdp() || machine_is_mpq8064_hrd() || machine_is_mpq8064_dtv()) msm_gpiomux_install(mpq8064_mi2s_configs, ARRAY_SIZE(mpq8064_mi2s_configs)); msm_gpiomux_install(apq8064_ext_regulator_configs, ARRAY_SIZE(apq8064_ext_regulator_configs)); if (machine_is_apq8064_mtp()) { if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_DSDA2) { msm_gpiomux_install(amdm_configs, ARRAY_SIZE(amdm_configs)); msm_gpiomux_install(bmdm_configs, ARRAY_SIZE(bmdm_configs)); } else if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_SGLTE2) { msm_gpiomux_install(mdm_configs, ARRAY_SIZE(mdm_configs)); msm_gpiomux_install(sglte2_qsc_configs, ARRAY_SIZE(sglte2_qsc_configs)); /* GSBI4 UART GPIOs for Primary IPC */ msm_gpiomux_install(apq8064_uartdm_gsbi4_configs, ARRAY_SIZE(apq8064_uartdm_gsbi4_configs)); } else if (SOCINFO_VERSION_MINOR(platform_version) == 1) { msm_gpiomux_install(mdm_i2s_configs, ARRAY_SIZE(mdm_i2s_configs)); } else { msm_gpiomux_install(mdm_configs, ARRAY_SIZE(mdm_configs)); } } if (machine_is_apq8064_mtp()) { if (SOCINFO_VERSION_MINOR(platform_version) == 1) { msm_gpiomux_install(cyts_gpio_alt_config, ARRAY_SIZE(cyts_gpio_alt_config)); } else { msm_gpiomux_install(cyts_gpio_configs, ARRAY_SIZE(cyts_gpio_configs)); } } #ifdef CONFIG_USB_EHCI_MSM_HSIC if (machine_is_apq8064_mtp()) msm_gpiomux_install(apq8064_hsic_configs, ARRAY_SIZE(apq8064_hsic_configs)); #endif if (machine_is_apq8064_cdp() || machine_is_apq8064_liquid()) msm_gpiomux_install(apq8064_mxt_configs, ARRAY_SIZE(apq8064_mxt_configs)); msm_gpiomux_install(apq8064_hdmi_configs, ARRAY_SIZE(apq8064_hdmi_configs)); if (machine_is_mpq8064_cdp()) msm_gpiomux_install(mpq8064_ir_configs, ARRAY_SIZE(mpq8064_ir_configs)); #ifdef CONFIG_MMC_MSM_SDC2_SUPPORT msm_gpiomux_install(apq8064_sdc2_configs, ARRAY_SIZE(apq8064_sdc2_configs)); #endif #ifdef CONFIG_MMC_MSM_SDC4_SUPPORT msm_gpiomux_install(apq8064_sdc4_configs, ARRAY_SIZE(apq8064_sdc4_configs)); #endif msm_gpiomux_install(apq8064_sdc3_configs, ARRAY_SIZE(apq8064_sdc3_configs)); /*added by congshan 20121008 start*/ #ifdef CONFIG_ZTEMT_MHL_8064 msm_gpiomux_install(mpq8064_gsbi5_i2c_configs, ARRAY_SIZE(mpq8064_gsbi5_i2c_configs)); #endif /*added by congshan 20121008 end*/ /* ZTEMT Added by LiuYongfeng, 2012/10/10 */ #ifdef CONFIG_SERIAL_MSM_HSL msm_gpiomux_install(mpq8064_gsbi5_uart_configs, ARRAY_SIZE(mpq8064_gsbi5_uart_configs)); #endif /* ZTEMT END */ //# config the sensors' gpio #ifdef CONFIG_ZTEMT_SENSORS msm_gpiomux_install(sensors_gpio_configs, ARRAY_SIZE(sensors_gpio_configs)); #endif if (machine_is_mpq8064_hrd() || machine_is_mpq8064_dtv()) msm_gpiomux_install(mpq8064_uartdm_configs, ARRAY_SIZE(mpq8064_uartdm_configs)); }
static void msm8960_ext_spk_power_amp_on(u32 spk) { int ret = 0; if (spk & (SPK_AMP_POS | SPK_AMP_NEG)) { if ((msm8930_ext_spk_pamp & SPK_AMP_POS) && (msm8930_ext_spk_pamp & SPK_AMP_NEG)) { pr_debug("%s() External Bottom Speaker Ampl already " "turned on. spk = 0x%08x\n", __func__, spk); return; } msm8930_ext_spk_pamp |= spk; if ((msm8930_ext_spk_pamp & SPK_AMP_POS) && (msm8930_ext_spk_pamp & SPK_AMP_NEG)) { if (socinfo_get_pmic_model() == PMIC_MODEL_PM8917) { ret = msm8930_cfg_spkr_gpio( LEFT_SPKR_AMPL_GPIO, 1, "LEFT_SPKR_AMPL"); if (ret) { pr_err("%s: Failed to config ampl gpio %u\n", __func__, LEFT_SPKR_AMPL_GPIO); return; } } else { if (machine_is_msm8930_mtp() || machine_is_msm8930_fluid()) { ret = msm8930_cfg_spkr_gpio( SPKR_BOOST_GPIO, 1, "SPKR_BOOST"); if (ret) { pr_err("%s: Failure: spkr boost gpio %u\n", __func__, SPKR_BOOST_GPIO); return; } } else if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_SGLTE) { ret = pm8xxx_gpio_config( spkr_boost_enable_gpio, &SPKR_ON); if (ret) { pr_err("%s: Failure: spkr" \ "boost gpio ON %u\n", __func__, spkr_boost_enable_gpio); return; } else { pr_debug("%s:Config PMIC8038" \ "gpio for speaker ON successfully\n", __func__); } } pm8xxx_spk_enable(MSM8930_SPK_ON); } pr_debug("%s: slepping 4 ms after turning on external " " Left Speaker Ampl\n", __func__); usleep_range(4000, 4000); } } else { pr_err("%s: ERROR : Invalid External Speaker Ampl. spk = 0x%08x\n", __func__, spk); return; } }
void __init msm_8974_init_gpiomux(void) { int rc; rc = msm_gpiomux_init_dt(); if (rc) { pr_err("%s failed %d\n", __func__, rc); return; } pr_err("%s:%d socinfo_get_version %x\n", __func__, __LINE__, socinfo_get_version()); if (socinfo_get_version() >= 0x20000) msm_tlmm_misc_reg_write(TLMM_SPARE_REG, 0xf); #if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE) if (!(of_board_is_dragonboard() && machine_is_apq8074())) msm_gpiomux_install(msm_eth_configs, \ ARRAY_SIZE(msm_eth_configs)); #endif msm_gpiomux_install(msm_blsp_configs, ARRAY_SIZE(msm_blsp_configs)); #ifdef CONFIG_MFD_MAX77888 #if 0 // MCU Pin msm_gpiomux_install(msm8974_muic_configs, ARRAY_SIZE(msm8974_muic_configs)); #endif #endif #ifdef CONFIG_W1_SLAVE_DS28EL15 msm_gpiomux_install(msm8974_cover_id_config, ARRAY_SIZE(msm8974_cover_id_config)); #endif #if !defined(CONFIG_BT_BCM4335) && !defined(CONFIG_BT_BCM4339) msm_gpiomux_install(msm_blsp2_uart7_configs, ARRAY_SIZE(msm_blsp2_uart7_configs)); #endif #if 0//defined(CONFIG_BT_BCM4335) || defined(CONFIG_BT_BCM4339) msm_gpiomux_btuart_install(); #endif if (of_board_is_liquid()) msm_gpiomux_install_nowrite(ath_gpio_configs, ARRAY_SIZE(ath_gpio_configs)); msm_gpiomux_install(msm8974_slimbus_config, ARRAY_SIZE(msm8974_slimbus_config)); msm_gpiomux_install(hw_rev_configs, ARRAY_SIZE(hw_rev_configs)); msm_gpiomux_install(gpio_nc_configs, ARRAY_SIZE(gpio_nc_configs)); #if 0//!defined(CONFIG_SENSORS_SSP) msm_gpiomux_install(hap_lvl_shft_config, ARRAY_SIZE(hap_lvl_shft_config)); #endif if (of_board_is_dragonboard() && machine_is_apq8074()) msm_gpiomux_install(msm_sensor_configs_dragonboard, \ ARRAY_SIZE(msm_sensor_configs_dragonboard)); else msm_gpiomux_install(msm_sensor_configs, \ ARRAY_SIZE(msm_sensor_configs)); msm_gpiomux_install(&sd_card_det, 1); msm_gpiomux_sdc3_install(); if (!(of_board_is_dragonboard() && machine_is_apq8074())) msm_gpiomux_sdc4_install(); msm_gpiomux_install(msm_taiko_config, ARRAY_SIZE(msm_taiko_config)); msm_gpiomux_install(es325_config, ARRAY_SIZE(es325_config)); msm_gpiomux_install(msm8974_audio_configs, ARRAY_SIZE(msm8974_audio_configs)); msm_gpiomux_install(msm8974_pri_pri_auxpcm_configs, ARRAY_SIZE(msm8974_pri_pri_auxpcm_configs)); #if 0 // MCU pin msm_gpiomux_install(msm_hsic_hub_configs, ARRAY_SIZE(msm_hsic_hub_configs)); #endif #if defined(CONFIG_SENSORS_SSP) msm_gpiomux_install(ssp_configs, ARRAY_SIZE(ssp_configs)); #endif #if defined(CONFIG_SENSORS) msm_gpiomux_install(msm_sensors_configs, ARRAY_SIZE(msm_sensors_configs)); #endif msm_gpiomux_install(msm_hdmi_configs, ARRAY_SIZE(msm_hdmi_configs)); if (system_rev > 5) msm_gpiomux_install(msm_hdmi_ddc_configs, ARRAY_SIZE(msm_hdmi_ddc_configs)); #ifdef CONFIG_VIDEO_MHL_V2 if(system_rev > 1) msm_gpiomux_install(mhl_configs, ARRAY_SIZE(mhl_configs)); #endif #if 0 msm_gpiomux_install(wcnss_5wire_interface, ARRAY_SIZE(wcnss_5wire_interface)); #endif #if defined(CONFIG_SEC_NFC_I2C) || defined(CONFIG_NFC_PN547) msm_gpiomux_install(msm_nfc_configs, ARRAY_SIZE(msm_nfc_configs)); #endif if (of_board_is_liquid() || (of_board_is_dragonboard() && machine_is_apq8074())) msm_gpiomux_install(msm8974_pri_ter_auxpcm_configs, ARRAY_SIZE(msm8974_pri_ter_auxpcm_configs)); else msm_gpiomux_install(msm8974_pri_pri_auxpcm_configs, ARRAY_SIZE(msm8974_pri_pri_auxpcm_configs)); #if defined(CONFIG_BCM4335) || defined(CONFIG_BCM4335_MODULE) || defined(CONFIG_BCM4339) || defined(CONFIG_BCM4339_MODULE) msm_gpiomux_wlan_host_wakeup_install(); #endif /* defined(CONFIG_BCM4335) || defined(CONFIG_BCM4335_MODULE) || defined(CONFIG_BCM4339) || defined(CONFIG_BCM4339_MODULE) */ #ifdef CONFIG_USB_SWITCH_FSA9485 if (system_rev >= 10) msm_gpiomux_install(vienna_r10_muic_configs, ARRAY_SIZE(vienna_r10_muic_configs)); else msm_gpiomux_install(vienna_muic_configs, ARRAY_SIZE(vienna_muic_configs)); #endif if (of_board_is_cdp()) { #if 0 /* Not used at Mondrian */ msm_gpiomux_install(msm8974_sec_auxpcm_configs, ARRAY_SIZE(msm8974_sec_auxpcm_configs)); #endif } else if (of_board_is_liquid() || of_board_is_fluid() || of_board_is_mtp()) msm_gpiomux_install(msm_epm_configs, ARRAY_SIZE(msm_epm_configs)); msm_gpiomux_install_nowrite(msm_lcd_configs, ARRAY_SIZE(msm_lcd_configs)); #if !defined(CONFIG_BT_BCM4335) && !defined(CONFIG_BT_BCM4339) if (of_board_is_rumi()) msm_gpiomux_install(msm_rumi_blsp_configs, ARRAY_SIZE(msm_rumi_blsp_configs)); #endif #if defined(CONFIG_LEDS_AN30259A) msm_gpiomux_install(an30259a_led_config, ARRAY_SIZE(an30259a_led_config)); #endif #ifdef CONFIG_INPUT_WACOM_HL msm_gpiomux_install(msm8974_wacom_configs, ARRAY_SIZE(msm8974_wacom_configs)); #endif if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_MDM) msm_gpiomux_install(mdm_configs, ARRAY_SIZE(mdm_configs)); if (of_board_is_dragonboard() && machine_is_apq8074()) msm_gpiomux_install(apq8074_dragonboard_ts_config, ARRAY_SIZE(apq8074_dragonboard_ts_config)); }
void __init apq8064_init_gpiomux(void) { int rc; int platform_version = socinfo_get_platform_version(); rc = msm_gpiomux_init(NR_GPIO_IRQS); if (rc) { pr_err(KERN_ERR "msm_gpiomux_init failed %d\n", rc); return; } msm_gpiomux_install(wcnss_5wire_interface, ARRAY_SIZE(wcnss_5wire_interface)); if (machine_is_mpq8064_cdp() || machine_is_mpq8064_hrd() || machine_is_mpq8064_dtv()) { #ifndef CONFIG_MACH_APQ8064_FIND5 msm_gpiomux_install(mpq8064_gsbi5_i2c_configs, ARRAY_SIZE(mpq8064_gsbi5_i2c_configs)); #endif #ifdef CONFIG_MSM_VCAP msm_gpiomux_install(vcap_configs, ARRAY_SIZE(vcap_configs)); #endif #ifndef CONFIG_MACH_APQ8064_FIND5 msm_gpiomux_install(sx150x_int_configs, ARRAY_SIZE(sx150x_int_configs)); #endif } else { #if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE) msm_gpiomux_install(apq8064_ethernet_configs, ARRAY_SIZE(apq8064_ethernet_configs)); #endif msm_gpiomux_install(apq8064_gsbi_configs, ARRAY_SIZE(apq8064_gsbi_configs)); #ifdef CONFIG_MACH_APQ8064_FIND5 if (get_pcb_version() >= PCB_VERSION_DVT) { msm_gpiomux_install(apq8064_gsbi7_i2c_config, ARRAY_SIZE(apq8064_gsbi7_i2c_config)); } #endif } msm_gpiomux_install(apq8064_slimbus_config, ARRAY_SIZE(apq8064_slimbus_config)); msm_gpiomux_install(apq8064_audio_codec_configs, ARRAY_SIZE(apq8064_audio_codec_configs)); if (machine_is_mpq8064_cdp() || machine_is_mpq8064_hrd() || machine_is_mpq8064_dtv()) { msm_gpiomux_install(mpq8064_spkr_i2s_config, ARRAY_SIZE(mpq8064_spkr_i2s_config)); } pr_debug("%s(): audio-auxpcm: Include GPIO configs" " as audio is not the primary user" " for these GPIO Pins\n", __func__); if (machine_is_mpq8064_cdp() || machine_is_mpq8064_hrd() || machine_is_mpq8064_dtv()) msm_gpiomux_install(mpq8064_mi2s_configs, ARRAY_SIZE(mpq8064_mi2s_configs)); msm_gpiomux_install(apq8064_ext_regulator_configs, ARRAY_SIZE(apq8064_ext_regulator_configs)); #ifdef CONFIG_MACH_APQ8064_FIND5 msm_gpiomux_install(apq8064_backlight_enable, ARRAY_SIZE(apq8064_backlight_enable)); #endif if (machine_is_apq8064_mtp()) { if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_DSDA2) { msm_gpiomux_install(amdm_configs, ARRAY_SIZE(amdm_configs)); msm_gpiomux_install(bmdm_configs, ARRAY_SIZE(bmdm_configs)); } else if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_SGLTE2) { msm_gpiomux_install(mdm_configs, ARRAY_SIZE(mdm_configs)); msm_gpiomux_install(sglte2_qsc_configs, ARRAY_SIZE(sglte2_qsc_configs)); /* GSBI4 UART GPIOs for Primary IPC */ msm_gpiomux_install(apq8064_uartdm_gsbi4_configs, ARRAY_SIZE(apq8064_uartdm_gsbi4_configs)); } else if (SOCINFO_VERSION_MINOR(platform_version) == 1) { msm_gpiomux_install(mdm_i2s_configs, ARRAY_SIZE(mdm_i2s_configs)); } else { msm_gpiomux_install(mdm_configs, ARRAY_SIZE(mdm_configs)); } } if (machine_is_apq8064_mtp()) { if (SOCINFO_VERSION_MINOR(platform_version) == 1) { msm_gpiomux_install(cyts_gpio_alt_config, ARRAY_SIZE(cyts_gpio_alt_config)); } else { msm_gpiomux_install(cyts_gpio_configs, ARRAY_SIZE(cyts_gpio_configs)); } } #ifdef CONFIG_USB_EHCI_MSM_HSIC if (machine_is_apq8064_mtp()) msm_gpiomux_install(apq8064_hsic_configs, ARRAY_SIZE(apq8064_hsic_configs)); #endif if (machine_is_apq8064_cdp() || machine_is_apq8064_liquid()) msm_gpiomux_install(apq8064_mxt_configs, ARRAY_SIZE(apq8064_mxt_configs)); msm_gpiomux_install(apq8064_hdmi_configs, ARRAY_SIZE(apq8064_hdmi_configs)); /* OPPO 2012-11-14 DuYuanHua Add to config GPIO_72 as input pin for sim card detection */ #ifdef OPPO_FEATURE_UIM_CARD_HOTSWAP msm_gpiomux_install(apq8064_uim_card_detection_configs, ARRAY_SIZE(apq8064_uim_card_detection_configs)); #endif /* OPPO 2012-11-14 DuYuanHua Add End*/ if (machine_is_mpq8064_cdp()) msm_gpiomux_install(mpq8064_ir_configs, ARRAY_SIZE(mpq8064_ir_configs)); #ifdef CONFIG_MMC_MSM_SDC2_SUPPORT msm_gpiomux_install(apq8064_sdc2_configs, ARRAY_SIZE(apq8064_sdc2_configs)); #endif #ifdef CONFIG_MMC_MSM_SDC4_SUPPORT msm_gpiomux_install(apq8064_sdc4_configs, ARRAY_SIZE(apq8064_sdc4_configs)); #endif msm_gpiomux_install(apq8064_sdc3_configs, ARRAY_SIZE(apq8064_sdc3_configs)); if (machine_is_mpq8064_hrd() || machine_is_mpq8064_dtv()) msm_gpiomux_install(mpq8064_uartdm_configs, ARRAY_SIZE(mpq8064_uartdm_configs)); }
void __init msm_8974_init_gpiomux(void) { int rc; rc = msm_gpiomux_init_dt(); if (rc) { pr_err("%s failed %d\n", __func__, rc); return; } #if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE) msm_gpiomux_install(msm_eth_configs, ARRAY_SIZE(msm_eth_configs)); #endif msm_gpiomux_install(msm_blsp_configs, ARRAY_SIZE(msm_blsp_configs)); msm_gpiomux_install(msm_blsp2_uart7_configs, ARRAY_SIZE(msm_blsp2_uart7_configs)); msm_gpiomux_install(wcnss_5wire_interface, ARRAY_SIZE(wcnss_5wire_interface)); if (of_board_is_liquid()) msm_gpiomux_install_nowrite(ath_gpio_configs, ARRAY_SIZE(ath_gpio_configs)); msm_gpiomux_install(msm8974_slimbus_config, ARRAY_SIZE(msm8974_slimbus_config)); msm_gpiomux_install(msm_touch_configs, ARRAY_SIZE(msm_touch_configs)); msm_gpiomux_install(hap_lvl_shft_config, ARRAY_SIZE(hap_lvl_shft_config)); msm_gpiomux_install(msm_sensor_configs, ARRAY_SIZE(msm_sensor_configs)); msm_gpiomux_install(&sd_card_det, 1); if (machine_is_apq8074() && (of_board_is_liquid() || \ of_board_is_dragonboard())) msm_gpiomux_sdc3_install(); msm_gpiomux_sdc4_install(); msm_gpiomux_install(msm_taiko_config, ARRAY_SIZE(msm_taiko_config)); msm_gpiomux_install(msm_hsic_configs, ARRAY_SIZE(msm_hsic_configs)); msm_gpiomux_install(msm_hsic_hub_configs, ARRAY_SIZE(msm_hsic_hub_configs)); msm_gpiomux_install(msm_hdmi_configs, ARRAY_SIZE(msm_hdmi_configs)); if (of_board_is_fluid()) msm_gpiomux_install(msm_mhl_configs, ARRAY_SIZE(msm_mhl_configs)); if (of_board_is_liquid()) msm_gpiomux_install(msm8974_pri_ter_auxpcm_configs, ARRAY_SIZE(msm8974_pri_ter_auxpcm_configs)); else msm_gpiomux_install(msm8974_pri_pri_auxpcm_configs, ARRAY_SIZE(msm8974_pri_pri_auxpcm_configs)); msm_gpiomux_install(msm8974_sec_auxpcm_configs, ARRAY_SIZE(msm8974_sec_auxpcm_configs)); msm_gpiomux_install_nowrite(msm_lcd_configs, ARRAY_SIZE(msm_lcd_configs)); if (of_board_is_rumi()) msm_gpiomux_install(msm_rumi_blsp_configs, ARRAY_SIZE(msm_rumi_blsp_configs)); if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_MDM) msm_gpiomux_install(mdm_configs, ARRAY_SIZE(mdm_configs)); if (of_board_is_dragonboard() && machine_is_apq8074()) msm_gpiomux_install(apq8074_dragonboard_ts_config, ARRAY_SIZE(apq8074_dragonboard_ts_config)); }
void __init apq8064_init_cam(void) { /* for SGLTE2 platform, do not configure i2c/gpiomux gsbi4 is used for * some other purpose */ /* OPPO 2013-07-24 liubin Modify for N1 not configure i2c start */ #if 0 if (socinfo_get_platform_subtype() != PLATFORM_SUBTYPE_SGLTE2) { msm_gpiomux_install(apq8064_cam_common_configs, ARRAY_SIZE(apq8064_cam_common_configs)); } #else if (socinfo_get_platform_subtype() != PLATFORM_SUBTYPE_SGLTE2) { if (get_pcb_version() >= PCB_VERSION_EVT_N1) { msm_gpiomux_install(apq8064_cam_common_configs_n1, ARRAY_SIZE(apq8064_cam_common_configs_n1)); } else { msm_gpiomux_install(apq8064_cam_common_configs, ARRAY_SIZE(apq8064_cam_common_configs)); } } #endif /* OPPO 2013-07-24 liubin Modify end */ if (machine_is_apq8064_cdp()) { sensor_board_info_imx074.mount_angle = 0; sensor_board_info_mt9m114.mount_angle = 0; } else if (machine_is_apq8064_liquid()) sensor_board_info_imx074.mount_angle = 180; platform_device_register(&msm_camera_server); /* OPPO 2013-07-24 liubin Modify for N1 not configure i2c start */ #if 0 if (socinfo_get_platform_subtype() != PLATFORM_SUBTYPE_SGLTE2) platform_device_register(&msm8960_device_i2c_mux_gsbi4); #else if (socinfo_get_platform_subtype() != PLATFORM_SUBTYPE_SGLTE2) { if (get_pcb_version() >= PCB_VERSION_EVT_N1) { platform_device_register(&msm8064_device_i2c_mux_gsbi7); } else { platform_device_register(&msm8960_device_i2c_mux_gsbi4); } } #endif /* OPPO 2013-07-24 liubin Modify end */ platform_device_register(&msm8960_device_csiphy0); platform_device_register(&msm8960_device_csiphy1); platform_device_register(&msm8960_device_csid0); platform_device_register(&msm8960_device_csid1); platform_device_register(&msm8960_device_ispif); platform_device_register(&msm8960_device_vfe); platform_device_register(&msm8960_device_vpe); }
void __init msm_8974_init_gpiomux(void) { int rc; rc = msm_gpiomux_init_dt(); if (rc) { pr_err("%s failed %d\n", __func__, rc); return; } #if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE) msm_gpiomux_install(msm_eth_configs, ARRAY_SIZE(msm_eth_configs)); #endif msm_gpiomux_install(msm_blsp_configs, ARRAY_SIZE(msm_blsp_configs)); #ifndef CONFIG_MACH_LGE msm_gpiomux_install(msm_blsp2_uart7_configs, ARRAY_SIZE(msm_blsp2_uart7_configs)); #endif msm_gpiomux_install(wcnss_5wire_interface, ARRAY_SIZE(wcnss_5wire_interface)); msm_gpiomux_install(msm8974_slimbus_config, ARRAY_SIZE(msm8974_slimbus_config)); msm_gpiomux_install(msm_touch_configs, ARRAY_SIZE(msm_touch_configs)); msm_gpiomux_install(hap_lvl_shft_config, ARRAY_SIZE(hap_lvl_shft_config)); msm_gpiomux_install(msm_sensor_configs, ARRAY_SIZE(msm_sensor_configs)); msm_gpiomux_install(&sd_card_det, 1); if (machine_is_apq8074() && (of_board_is_liquid() || \ of_board_is_dragonboard())) msm_gpiomux_sdc3_install(); msm_gpiomux_sdc4_install(); msm_gpiomux_install(msm_taiko_config, ARRAY_SIZE(msm_taiko_config)); msm_gpiomux_install(msm_hsic_configs, ARRAY_SIZE(msm_hsic_configs)); msm_gpiomux_install(msm_hsic_hub_configs, ARRAY_SIZE(msm_hsic_hub_configs)); msm_gpiomux_install(msm_hdmi_configs, ARRAY_SIZE(msm_hdmi_configs)); if (of_board_is_fluid()) msm_gpiomux_install(msm_mhl_configs, ARRAY_SIZE(msm_mhl_configs)); msm_gpiomux_install(msm8974_pri_auxpcm_configs, ARRAY_SIZE(msm8974_pri_auxpcm_configs)); msm_gpiomux_install_nowrite(msm_lcd_configs, ARRAY_SIZE(msm_lcd_configs)); if (of_board_is_rumi()) msm_gpiomux_install(msm_rumi_blsp_configs, ARRAY_SIZE(msm_rumi_blsp_configs)); if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_MDM) msm_gpiomux_install(mdm_configs, ARRAY_SIZE(mdm_configs)); #if defined(CONFIG_MACH_LGE) msm_gpiomux_install(slimport_configs_rev_b, ARRAY_SIZE(slimport_configs_rev_b)); printk(KERN_INFO "slimport gpio configs for rev.B upper\n"); msm_gpiomux_install(msm_display_configs, ARRAY_SIZE(msm_display_configs)); #endif #if 0 /* disable sensor GPIO setting (enable ADSP)*/ msm_gpiomux_install(sensor_configs, ARRAY_SIZE(sensor_configs)); #endif #if defined(CONFIG_LGE_SM100) || defined(CONFIG_TSPDRV) msm_gpiomux_install(vibrator_configs, ARRAY_SIZE(vibrator_configs)); #endif #ifdef CONFIG_EARJACK_DEBUGGER msm_gpiomux_install(msm_earjack_debugger_configs, ARRAY_SIZE(msm_earjack_debugger_configs)); #endif if (of_board_is_dragonboard() && machine_is_apq8074()) msm_gpiomux_install(apq8074_dragonboard_ts_config, ARRAY_SIZE(apq8074_dragonboard_ts_config)); }
void __init msm_8974_init_gpiomux(void) { int rc; rc = msm_gpiomux_init_dt(); if (rc) { pr_err("%s failed %d\n", __func__, rc); return; } #if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE) if (!(of_board_is_dragonboard() && machine_is_apq8074())) msm_gpiomux_install(msm_eth_configs, \ ARRAY_SIZE(msm_eth_configs)); #endif msm_gpiomux_install(msm_blsp_configs, ARRAY_SIZE(msm_blsp_configs)); #if !defined(CONFIG_BT_BCM4354) msm_gpiomux_install(msm_blsp2_uart7_configs, ARRAY_SIZE(msm_blsp2_uart7_configs)); #endif #if defined(CONFIG_BT_BCM4354) msm_gpiomux_btuart_install(); #endif #if defined(CONFIG_WCNSS_CORE) msm_gpiomux_install(wcnss_5wire_interface, ARRAY_SIZE(wcnss_5wire_interface)); #endif if (of_board_is_liquid()) msm_gpiomux_install_nowrite(ath_gpio_configs, ARRAY_SIZE(ath_gpio_configs)); msm_gpiomux_install(msm8974_slimbus_config, ARRAY_SIZE(msm8974_slimbus_config)); if (system_rev >= 4) msm_gpiomux_install(es705_config, ARRAY_SIZE(es705_config)); msm_gpiomux_install(msm_touch_configs, ARRAY_SIZE(msm_touch_configs)); msm_gpiomux_install(hap_lvl_shft_config, ARRAY_SIZE(hap_lvl_shft_config)); if (of_board_is_dragonboard() && machine_is_apq8074()) msm_gpiomux_install(msm_sensor_configs_dragonboard, \ ARRAY_SIZE(msm_sensor_configs_dragonboard)); else msm_gpiomux_install(msm_sensor_configs, \ ARRAY_SIZE(msm_sensor_configs)); msm_gpiomux_install(&sd_card_det, 1); if (machine_is_apq8074() && (of_board_is_liquid() || \ of_board_is_dragonboard())) msm_gpiomux_sdc3_install(); #if !defined(CONFIG_WCNSS_CORE) msm_gpiomux_sdc3_install(); #endif if (!(of_board_is_dragonboard() && machine_is_apq8074())) msm_gpiomux_sdc4_install(); msm_gpiomux_install(msm_taiko_config, ARRAY_SIZE(msm_taiko_config)); if (system_rev < 4) msm_gpiomux_install(msm_es705_config, ARRAY_SIZE(msm_es705_config)); #if !defined(CONFIG_TDMB) msm_gpiomux_install(msm_hsic_hub_configs, ARRAY_SIZE(msm_hsic_hub_configs)); #endif #ifdef CONFIG_GPIO_MC5587 msm_gpiomux_install(msm8974_gpioexpander_configs, ARRAY_SIZE(msm8974_gpioexpander_configs)); #endif msm_gpiomux_install(msm_hdmi_configs, ARRAY_SIZE(msm_hdmi_configs)); #ifdef CONFIG_VIDEO_MHL_V2 msm_gpiomux_install(mhl_configs, ARRAY_SIZE(mhl_configs)); #endif #ifdef CONFIG_FB_MSM_MDSS_HDMI_MHL_SII8334 if (of_board_is_fluid()) msm_gpiomux_install(msm_mhl_configs, ARRAY_SIZE(msm_mhl_configs)); #endif if (of_board_is_liquid() || (of_board_is_dragonboard() && machine_is_apq8074())) msm_gpiomux_install(msm8974_pri_ter_auxpcm_configs, ARRAY_SIZE(msm8974_pri_ter_auxpcm_configs)); else msm_gpiomux_install(msm8974_pri_pri_auxpcm_configs, ARRAY_SIZE(msm8974_pri_pri_auxpcm_configs)); if (of_board_is_cdp()) msm_gpiomux_install(msm8974_sec_auxpcm_configs, ARRAY_SIZE(msm8974_sec_auxpcm_configs)); else if (of_board_is_liquid() || of_board_is_fluid() || of_board_is_mtp()) msm_gpiomux_install(msm_epm_configs, ARRAY_SIZE(msm_epm_configs)); msm_gpiomux_install_nowrite(msm_lcd_configs, ARRAY_SIZE(msm_lcd_configs)); #if !defined(CONFIG_BT_BCM4354) if (of_board_is_rumi()) msm_gpiomux_install(msm_rumi_blsp_configs, ARRAY_SIZE(msm_rumi_blsp_configs)); #endif if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_MDM) msm_gpiomux_install(mdm_configs, ARRAY_SIZE(mdm_configs)); if (of_board_is_dragonboard() && machine_is_apq8074()) msm_gpiomux_install(apq8074_dragonboard_ts_config, ARRAY_SIZE(apq8074_dragonboard_ts_config)); msm_gpiomux_install(fuel_i2c_config, ARRAY_SIZE(fuel_i2c_config)); #if defined(CONFIG_SENSORS_SSP) msm_gpiomux_install(ssp_configs, ARRAY_SIZE(ssp_configs)); #endif #ifdef CONFIG_SENSORS_VFS61XX msm_gpiomux_install(msm8974_fingerprint_configs, ARRAY_SIZE(msm8974_fingerprint_configs)); #endif #if defined(CONFIG_NFC_PN547) || defined(CONFIG_BCM2079X_NFC_I2C) msm_gpiomux_install(msm_nfc_configs, ARRAY_SIZE(msm_nfc_configs)); #endif msm_gpiomux_install(msm_cis_spi_configs, ARRAY_SIZE(msm_cis_spi_configs)); msm_gpiomux_install(msm_af_configs, ARRAY_SIZE(msm_af_configs)); msm_gpiomux_install(gpio_nc_configs, ARRAY_SIZE(gpio_nc_configs)); }
void __init msm_8974_init_gpiomux(void) { int rc; rc = msm_gpiomux_init_dt(); if (rc) { pr_err("%s failed %d\n", __func__, rc); return; } pr_err("%s:%d socinfo_get_version %x\n", __func__, __LINE__, socinfo_get_version()); if (socinfo_get_version() >= 0x20000) msm_tlmm_misc_reg_write(TLMM_SPARE_REG, 0xf); #if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE) if (!(of_board_is_dragonboard() && machine_is_apq8074())) msm_gpiomux_install(msm_eth_configs, \ ARRAY_SIZE(msm_eth_configs)); #endif msm_gpiomux_install(msm_blsp_configs, ARRAY_SIZE(msm_blsp_configs)); #ifdef CONFIG_MFD_MAX77888 msm_gpiomux_install(msm8974_muic_configs, ARRAY_SIZE(msm8974_muic_configs)); #endif msm_gpiomux_install(msm_battery_configs, ARRAY_SIZE(msm_battery_configs)); #if !defined(CONFIG_MACH_LT03_LTE) msm_gpiomux_install(msm_batteryotg_configs, ARRAY_SIZE(msm_batteryotg_configs)); #endif #if !defined(CONFIG_BT_BCM4335) && !defined(CONFIG_BT_BCM4339) msm_gpiomux_install(msm_blsp2_uart7_configs, ARRAY_SIZE(msm_blsp2_uart7_configs)); #endif #if defined(CONFIG_BT_BCM4335) || defined(CONFIG_BT_BCM4339) msm_gpiomux_btuart_install(); msm_gpiomux_btwake_install(); #endif if (of_board_is_liquid()) msm_gpiomux_install_nowrite(ath_gpio_configs, ARRAY_SIZE(ath_gpio_configs)); msm_gpiomux_install(msm8974_slimbus_config, ARRAY_SIZE(msm8974_slimbus_config)); msm_gpiomux_install(hap_lvl_shft_config, ARRAY_SIZE(hap_lvl_shft_config)); if (of_board_is_dragonboard() && machine_is_apq8074()) msm_gpiomux_install(msm_sensor_configs_dragonboard, \ ARRAY_SIZE(msm_sensor_configs_dragonboard)); else msm_gpiomux_install(msm_sensor_configs, \ ARRAY_SIZE(msm_sensor_configs)); msm_gpiomux_install(hw_rev_configs, ARRAY_SIZE(hw_rev_configs)); msm_gpiomux_install(&sd_card_det, 1); msm_gpiomux_sdc3_install(); if (!(of_board_is_dragonboard() && machine_is_apq8074())) msm_gpiomux_sdc4_install(); msm_gpiomux_install(msm_taiko_config, ARRAY_SIZE(msm_taiko_config)); msm_gpiomux_install(ear_send_end_config, ARRAY_SIZE(ear_send_end_config)); #if defined(CONFIG_MACH_LT03_VZW) || defined(CONFIG_MACH_LT03_EUR) || defined(CONFIG_MACH_LT03_TMO) \ || defined(CONFIG_MACH_LT03SKT) || defined(CONFIG_MACH_LT03KTT) || defined(CONFIG_MACH_LT03LGT) msm_gpiomux_install(spk_ext_config, ARRAY_SIZE(spk_ext_config)); #endif msm_gpiomux_install(msm_hsic_hub_configs, ARRAY_SIZE(msm_hsic_hub_configs)); msm_gpiomux_install(msm_hdmi_configs, ARRAY_SIZE(msm_hdmi_configs)); #ifdef CONFIG_VIDEO_MHL_V2 msm_gpiomux_install(mhl_configs, ARRAY_SIZE(mhl_configs)); #endif #if 0 msm_gpiomux_install(wcnss_5wire_interface, ARRAY_SIZE(wcnss_5wire_interface)); #endif if (of_board_is_liquid() || (of_board_is_dragonboard() && machine_is_apq8074())) msm_gpiomux_install(msm8974_pri_ter_auxpcm_configs, ARRAY_SIZE(msm8974_pri_ter_auxpcm_configs)); else msm_gpiomux_install(msm8974_pri_pri_auxpcm_configs, ARRAY_SIZE(msm8974_pri_pri_auxpcm_configs)); #if defined(CONFIG_BCM4335) || defined(CONFIG_BCM4335_MODULE) || defined(CONFIG_BCM4339) || defined(CONFIG_BCM4339_MODULE) msm_gpiomux_wlan_host_wakeup_install(); #endif /* defined(CONFIG_BCM4335) || defined(CONFIG_BCM4335_MODULE) || defined(CONFIG_BCM4339) || defined(CONFIG_BCM4339_MODULE) */ #ifdef CONFIG_USB_SWITCH_FSA9485 if (system_rev >= 7) msm_gpiomux_install(lt03_r04_muic_configs, ARRAY_SIZE(lt03_r04_muic_configs)); else msm_gpiomux_install(lt03_muic_configs, ARRAY_SIZE(lt03_muic_configs)); #endif if (of_board_is_cdp()) { #if 0 /* Not used at Mondrian */ msm_gpiomux_install(msm8974_sec_auxpcm_configs, ARRAY_SIZE(msm8974_sec_auxpcm_configs)); #endif } else if (of_board_is_liquid() || of_board_is_fluid() || of_board_is_mtp()) msm_gpiomux_install(msm_epm_configs, ARRAY_SIZE(msm_epm_configs)); msm_gpiomux_install_nowrite(msm_lcd_configs, ARRAY_SIZE(msm_lcd_configs)); #if !defined(CONFIG_BT_BCM4335) && !defined(CONFIG_BT_BCM4339) if (of_board_is_rumi()) msm_gpiomux_install(msm_rumi_blsp_configs, ARRAY_SIZE(msm_rumi_blsp_configs)); #endif if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_MDM) msm_gpiomux_install(mdm_configs, ARRAY_SIZE(mdm_configs)); if (of_board_is_dragonboard() && machine_is_apq8074()) msm_gpiomux_install(apq8074_dragonboard_ts_config, ARRAY_SIZE(apq8074_dragonboard_ts_config)); #ifdef CONFIG_FB_MSM_EDP_SAMSUNG msm_gpiomux_install(msm8974_lcd_config, ARRAY_SIZE(msm8974_lcd_config)); #endif #ifdef CONFIG_INPUT_WACOM msm_gpiomux_install(msm8974_wacom_configs, ARRAY_SIZE(msm8974_wacom_configs)); #endif msm_gpiomux_install(msm_grip_configs, ARRAY_SIZE(msm_grip_configs)); msm_gpiomux_install(msm_sensors_configs, ARRAY_SIZE(msm_sensors_configs)); #if defined(CONFIG_MACH_LT03_VZW) || defined(CONFIG_MACH_LT03SKT) || defined(CONFIG_MACH_LT03KTT) || defined(CONFIG_MACH_LT03LGT) msm_gpiomux_install(ext_buck_configs, ARRAY_SIZE(ext_buck_configs)); #endif #if defined(CONFIG_MACH_LT03_LTE) msm_gpiomux_install(gpio_nc_configs,ARRAY_SIZE(gpio_nc_configs)); #endif }
void __init msm_8974_init_gpiomux(void) { int rc; rc = msm_gpiomux_init_dt(); if (rc) { pr_err("%s failed %d\n", __func__, rc); return; } pr_debug("%s:%d socinfo_get_version %x\n", __func__, __LINE__, socinfo_get_version()); if (socinfo_get_version() >= 0x20000) msm_tlmm_misc_reg_write(TLMM_SPARE_REG, 0xf); #if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE) if (!(of_board_is_dragonboard() && machine_is_apq8074())) msm_gpiomux_install(msm_eth_configs, \ ARRAY_SIZE(msm_eth_configs)); #endif msm_gpiomux_install(msm_blsp_configs, ARRAY_SIZE(msm_blsp_configs)); msm_gpiomux_install(msm_blsp2_uart7_configs, ARRAY_SIZE(msm_blsp2_uart7_configs)); msm_gpiomux_install(wcnss_5wire_interface, ARRAY_SIZE(wcnss_5wire_interface)); if (of_board_is_liquid()) msm_gpiomux_install_nowrite(ath_gpio_configs, ARRAY_SIZE(ath_gpio_configs)); msm_gpiomux_install(msm8974_slimbus_config, ARRAY_SIZE(msm8974_slimbus_config)); msm_gpiomux_install(msm_touch_configs, ARRAY_SIZE(msm_touch_configs)); if (of_board_is_liquid()) msm_gpiomux_install(msm_touch_i2cmode_configs, ARRAY_SIZE(msm_touch_i2cmode_configs)); msm_gpiomux_install(hap_lvl_shft_config, ARRAY_SIZE(hap_lvl_shft_config)); if (of_board_is_dragonboard() && machine_is_apq8074()) msm_gpiomux_install(msm_sensor_configs_dragonboard, \ ARRAY_SIZE(msm_sensor_configs_dragonboard)); else msm_gpiomux_install(msm_sensor_configs, \ ARRAY_SIZE(msm_sensor_configs)); msm_gpiomux_install(&sd_card_det, 1); if (machine_is_apq8074() && (of_board_is_liquid() || \ of_board_is_dragonboard())) msm_gpiomux_sdc3_install(); if (!(of_board_is_dragonboard() && machine_is_apq8074())) msm_gpiomux_sdc4_install(); msm_gpiomux_install(msm_taiko_config, ARRAY_SIZE(msm_taiko_config)); msm_gpiomux_install(msm_hsic_configs, ARRAY_SIZE(msm_hsic_configs)); msm_gpiomux_install(msm_hsic_hub_configs, ARRAY_SIZE(msm_hsic_hub_configs)); msm_gpiomux_install(msm_hdmi_configs, ARRAY_SIZE(msm_hdmi_configs)); if (of_board_is_fluid()) msm_gpiomux_install(msm_mhl_configs, ARRAY_SIZE(msm_mhl_configs)); if (of_board_is_liquid() || (of_board_is_dragonboard() && machine_is_apq8074())) msm_gpiomux_install(msm8974_pri_ter_auxpcm_configs, ARRAY_SIZE(msm8974_pri_ter_auxpcm_configs)); else msm_gpiomux_install(msm8974_pri_pri_auxpcm_configs, ARRAY_SIZE(msm8974_pri_pri_auxpcm_configs)); if (of_board_is_cdp()) msm_gpiomux_install(msm8974_sec_auxpcm_configs, ARRAY_SIZE(msm8974_sec_auxpcm_configs)); else if (of_board_is_liquid() || of_board_is_fluid() || of_board_is_mtp()) msm_gpiomux_install(msm_epm_configs, ARRAY_SIZE(msm_epm_configs)); msm_gpiomux_install_nowrite(msm_lcd_configs, ARRAY_SIZE(msm_lcd_configs)); if (of_board_is_rumi()) msm_gpiomux_install(msm_rumi_blsp_configs, ARRAY_SIZE(msm_rumi_blsp_configs)); if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_MDM) msm_gpiomux_install(mdm_configs, ARRAY_SIZE(mdm_configs)); if (of_board_is_dragonboard() && machine_is_apq8074()) msm_gpiomux_install(apq8074_dragonboard_ts_config, ARRAY_SIZE(apq8074_dragonboard_ts_config)); if ((socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_INTERPOSERV3) && of_board_is_cdp()) msm_gpiomux_install(apq8074_interposer_config, ARRAY_SIZE(apq8074_interposer_config)); }
int __init msm8960_init_gpiomux(void) { int rc = msm_gpiomux_init(NR_GPIO_IRQS); if (rc) { pr_err(KERN_ERR "msm_gpiomux_init failed %d\n", rc); return rc; } #if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE) msm_gpiomux_install(msm8960_ethernet_configs, ARRAY_SIZE(msm8960_ethernet_configs)); #endif msm_gpiomux_install(msm8960_gsbi_configs, ARRAY_SIZE(msm8960_gsbi_configs)); msm_gpiomux_install(msm8960_slimbus_config, ARRAY_SIZE(msm8960_slimbus_config)); msm_gpiomux_install(msm8960_audio_codec_configs, ARRAY_SIZE(msm8960_audio_codec_configs)); msm_gpiomux_install(wcnss_5wire_interface, ARRAY_SIZE(wcnss_5wire_interface)); #ifdef CONFIG_MMC_MSM_SDC4_SUPPORT msm_gpiomux_install(msm8960_sdcc4_configs, ARRAY_SIZE(msm8960_sdcc4_configs)); #endif #ifdef CONFIG_FB_MSM_HDMI_MSM_PANEL msm_gpiomux_install(msm8960_hdmi_configs, ARRAY_SIZE(msm8960_hdmi_configs)); #endif if (socinfo_get_platform_subtype() != PLATFORM_SUBTYPE_SGLTE) msm_gpiomux_install(msm8960_gsbi8_uartdm_configs, ARRAY_SIZE(msm8960_gsbi8_uartdm_configs)); if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_SGLTE) msm_gpiomux_install(msm8960_gsbi8_uart_configs, ARRAY_SIZE(msm8960_gsbi8_uart_configs)); else msm_gpiomux_install(msm8960_gsbi5_uart_configs, ARRAY_SIZE(msm8960_gsbi5_uart_configs)); if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_SGLTE) { /* For 8960 Fusion 2.2 Primary IPC */ msm_gpiomux_install(msm8960_fusion_gsbi_configs, ARRAY_SIZE(msm8960_fusion_gsbi_configs)); /* For SGLTE 8960 Fusion External VFR */ msm_gpiomux_install(msm8960_external_vfr_configs, ARRAY_SIZE(msm8960_external_vfr_configs)); } #ifdef CONFIG_MMC_MSM_SDC2_SUPPORT msm_gpiomux_install(msm8960_sdcc2_configs, ARRAY_SIZE(msm8960_sdcc2_configs)); #endif gpiomux_device_install(); if (socinfo_get_platform_subtype() == PLATFORM_SUBTYPE_SGLTE) msm_gpiomux_install(sglte_configs, ARRAY_SIZE(sglte_configs)); return 0; }