static int __init jet_audio_init(void) { int ret; if (!cpu_is_msm8960()) { pr_err("%s: Not the right machine type\n", __func__); return -ENODEV; } pr_debug("%s", __func__); msm_snd_device = platform_device_alloc("soc-audio", 0); if (!msm_snd_device) { pr_err("Platform device allocation failed\n"); return -ENOMEM; } memcpy(msm_dai, msm_dai_common, sizeof(msm_dai_common)); memcpy(msm_dai + ARRAY_SIZE(msm_dai_common), msm_dai_delta_tabla2x, sizeof(msm_dai_delta_tabla2x)); platform_set_drvdata(msm_snd_device, &snd_soc_card_msm); ret = platform_device_add(msm_snd_device); if (ret) { platform_device_put(msm_snd_device); return ret; } msm_snd_tabla1x_device = platform_device_alloc("soc-audio", 1); if (!msm_snd_tabla1x_device) { pr_err("Platform device allocation failed\n"); return -ENOMEM; } memcpy(msm_tabla1x_dai, msm_dai_common, sizeof(msm_dai_common)); memcpy(msm_tabla1x_dai + ARRAY_SIZE(msm_dai_common), msm_dai_delta_tabla1x, sizeof(msm_dai_delta_tabla1x)); platform_set_drvdata(msm_snd_tabla1x_device, &snd_soc_tabla1x_card_msm); ret = platform_device_add(msm_snd_tabla1x_device); if (ret) { platform_device_put(msm_snd_tabla1x_device); return ret; } mutex_init(&audio_notifier_lock); pr_debug("%s: register cable detect func for dock", __func__); ret = cable_detect_register_notifier(&audio_dock_notifier); mutex_init(&cdc_mclk_mutex); return ret; }
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; }