static int __init msm_audio_init(void) { int ret = 0; mutex_init(&cdc_mclk_mutex); if (!machine_is_msm8974_sim()) { pr_info("%s: Not msm8974 machine type\n", __func__); return -ENODEV; } msm_snd_device = platform_device_alloc("soc-audio", 0); if (!msm_snd_device) { pr_err("Platform device allocation failed\n"); return -ENOMEM; } 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; } mutex_init(&cdc_mclk_mutex); atomic_set(&auxpcm_rsc_ref, 0); return 0; err: devm_kfree(&pdev->dev, pdata); return ret; }
static void __exit msm_audio_exit(void) { if (!machine_is_msm8974_sim()) { pr_err("%s: Not the right machine type\n", __func__); return ; } msm_free_headset_mic_gpios(); platform_device_unregister(msm_snd_device); }
int __cpuinit msm8974_boot_secondary(unsigned int cpu, struct task_struct *idle) { pr_debug("Starting secondary CPU %d\n", cpu); if (per_cpu(cold_boot_done, cpu) == false) { if (machine_is_msm8974_sim() || machine_is_mpq8092_sim()) release_secondary_sim(0xf9088000, cpu); else if (!machine_is_msm8974_rumi()) msm8974_release_secondary(0xf9088000, cpu); per_cpu(cold_boot_done, cpu) = true; } return release_from_pen(cpu); }
static int krait_release_secondary_sim(unsigned long base, int cpu) { void *base_ptr = ioremap_nocache(base + (cpu * 0x10000), SZ_4K); if (!base_ptr) return -ENODEV; if (machine_is_msm8974_sim()) { writel_relaxed(0x800, base_ptr+0x04); writel_relaxed(0x3FFF, base_ptr+0x14); } mb(); iounmap(base_ptr); return 0; }
static int release_secondary(unsigned int cpu) { BUG_ON(cpu >= get_core_count()); if (cpu_is_msm8x60()) return scorpion_release_secondary(); if (machine_is_msm8974_sim()) return krait_release_secondary_sim(0xf9088000, cpu); if (soc_class_is_msm8960() || soc_class_is_msm8930() || soc_class_is_apq8064()) return krait_release_secondary(0x02088000, cpu); if (cpu_is_msm8974()) return krait_release_secondary_p3(0xf9088000, cpu); WARN(1, "unknown CPU case in release_secondary\n"); return -EINVAL; }
static int __cpuinit release_secondary(unsigned int cpu) { BUG_ON(cpu >= get_core_count()); if (cpu_is_msm8x60()) return scorpion_release_secondary(); if (machine_is_msm8960_sim() || machine_is_msm8960_rumi3() || machine_is_apq8064_sim()) return krait_release_secondary_sim(0x02088000, cpu); if (machine_is_msm8974_sim()) return krait_release_secondary_sim(0xf9088000, cpu); if (cpu_is_msm8960() || cpu_is_msm8930() || cpu_is_msm8930aa() || cpu_is_apq8064() || cpu_is_msm8627() || cpu_is_msm8960ab() || cpu_is_apq8064ab()) return krait_release_secondary(0x02088000, cpu); WARN(1, "unknown CPU case in release_secondary\n"); return -EINVAL; }
static int __init msm_audio_init(void) { int ret = 0; mutex_init(&cdc_mclk_mutex); if (!machine_is_msm8974_sim()) { pr_err("%s: Not the right machine type\n", __func__); return -ENODEV; } msm_snd_device = platform_device_alloc("soc-audio", 0); if (!msm_snd_device) { pr_err("Platform device allocation failed\n"); return -ENOMEM; } 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; } return ret; }