static int __init elite_audio_init(void) { int ret; #ifdef CONFIG_AUDIO_USAGE_FOR_POWER_CONSUMPTION int retval = 0; #endif pr_aud_info("%s", __func__); msm8960_snd_device = platform_device_alloc("soc-audio", 0); if (!msm8960_snd_device) { pr_aud_err("%s, Platform device allocation failed\n", __func__); return -ENOMEM; } platform_set_drvdata(msm8960_snd_device, &snd_soc_card_msm8960); ret = platform_device_add(msm8960_snd_device); if (ret) { pr_aud_err("%s, Platform device add failed\n", __func__); platform_device_put(msm8960_snd_device); return ret; } mutex_init(&audio_notifier_lock); pr_aud_info("%s: register cable detect func for dock", __func__); ret = cable_detect_register_notifier(&audio_dock_notifier); #ifdef CONFIG_AUDIO_USAGE_FOR_POWER_CONSUMPTION /* Create two audio status file nodes, audio_speaker_t and * audio_headset_t under /sys/audio_stats/ */ if (audio_stat_kobj == NULL) { audio_stat_kobj = kobject_create_and_add("audio_stats", NULL); retval = sysfs_create_file(audio_stat_kobj, attrs[0]); if (!retval) { pr_err("Speaker file node creation failed under kobject\n"); } retval = sysfs_create_file(audio_stat_kobj, attrs[1]); if (!retval) { pr_err("Headset file node creation failed under kobject\n"); } } #endif htc_8960_register_q6asm_ops(&qops); htc_8960_register_pcm_routing_ops(&rops); acoustic_register_ops(&acoustic); return ret; }
static int __init fighter_audio_init(void) { int ret = 0, rc = 0; #ifdef CONFIG_AUDIO_USAGE_FOR_POWER_CONSUMPTION int retval = 0; #endif struct pm_gpio param = { .direction = PM_GPIO_DIR_OUT, .output_buffer = PM_GPIO_OUT_BUF_CMOS, .output_value = 0, .pull = PM_GPIO_PULL_NO, .vin_sel = PM_GPIO_VIN_S4, .out_strength = PM_GPIO_STRENGTH_MED, .function = PM_GPIO_FUNC_NORMAL, }; pr_debug("%s", __func__); msm8960_snd_device = platform_device_alloc("soc-audio", 0); if (!msm8960_snd_device) { pr_aud_err("%s, Platform device allocation failed\n", __func__); return -ENOMEM; } platform_set_drvdata(msm8960_snd_device, &snd_soc_card_msm8960); ret = platform_device_add(msm8960_snd_device); if (ret) { pr_aud_err("%s, Platform device add failed\n", __func__); platform_device_put(msm8960_snd_device); return ret; } #ifdef CONFIG_AUDIO_USAGE_FOR_POWER_CONSUMPTION /* Create two audio status file nodes, audio_speaker_t and * audio_headset_t under /sys/audio_stats/ */ if (audio_stat_kobj == NULL) { audio_stat_kobj = kobject_create_and_add("audio_stats", NULL); retval = sysfs_create_file(audio_stat_kobj, attrs[0]); if (!retval) { pr_err("Speaker file node creation failed under kobject\n"); } retval = sysfs_create_file(audio_stat_kobj, attrs[1]); if (!retval) { pr_err("Headset file node creation failed under kobject\n"); } } #endif rc = gpio_request(PM8921_GPIO_PM_TO_SYS(FIGHTER_AUD_AMP_EN), "tpa2051_en"); rc = pm8xxx_gpio_config(PM8921_GPIO_PM_TO_SYS(FIGHTER_AUD_AMP_EN), ¶m); if (rc < 0) pr_aud_err("failed to configure tpa2051_en gpio\n"); gpio_tlmm_config(msm_2051_gpio[0], GPIO_CFG_ENABLE); gpio_tlmm_config(msm_2051_gpio[1], GPIO_CFG_ENABLE); htc_8960_register_q6asm_ops(&qops); htc_8960_register_pcm_routing_ops(&rops); acoustic_register_ops(&acoustic); return ret; } late_initcall(fighter_audio_init); static void __exit fighter_audio_exit(void) { pr_debug("%s", __func__); platform_device_unregister(msm8960_snd_device); }