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;

}
Exemple #2
0
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);
}
Exemple #3
0
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);
}
Exemple #4
0
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;
}
Exemple #5
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;
}
Exemple #6
0
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;
}
Exemple #7
0
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;

}