[PATCH v3 3/8] ARM: MB86S7X: Add MCPM support
Russell King - ARM Linux
linux at arm.linux.org.uk
Fri Jan 9 04:41:35 PST 2015
On Fri, Jan 09, 2015 at 07:28:54PM +0800, Vincent Yang wrote:
> +static int __init mb86s7x_mcpm_init(void)
> +{
> + unsigned int mpidr, cpu, cluster;
> + struct mb86s7x_scb_version cmd;
> + int ret;
> +
> + if (!cci_probed())
> + return -ENODEV;
> +
> + mpidr = read_cpuid_mpidr();
> + cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0);
> + cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1);
> +
> + pr_info("Booting on cpu_%u cluster_%u\n", cpu, cluster);
> + mb86s7x_pm_use_count[cluster][cpu] = 1;
> +
> + /* reset the wfi 'color' for primary cpu */
> + mb86s7x_set_wficolor(cluster, cpu, AT_WFI_DO_NOTHING);
> +
> + /* Do SMC to set entry address for CPUs coming online */
> + mb86s7x_cpu_entry(virt_to_phys(mcpm_entry_point));
> +
> + cmd.payload_size = sizeof(cmd);
> + cmd.version = 0;
> + cmd.config_version = 0;
> + ret = mb86s7x_send_packet(CMD_SCB_CAPABILITY_GET_REQ,
> + &cmd, sizeof(cmd));
> + if (ret < 0) /* non fatal */
> + pr_err("%s:%d failed to get SCB version\n",
> + __func__, __LINE__);
> + else
> + pr_err("MB86S7x SCB version 0x%x:0x%x\n",
> + cmd.version, cmd.config_version);
> +
> + ret = mcpm_platform_register(&mb86s7x_pm_power_ops);
> + if (!ret)
> + ret = mcpm_sync_init(mb86s7x_pm_power_up_setup);
> + if (!ret)
> + ret = mcpm_loopback(mb86s7x_cache_off); /* turn on the CCI */
> + if (!ret)
> + mcpm_smp_set_ops();
> +
> + return ret;
> +}
> +early_initcall(mb86s7x_mcpm_init);
What happens if this is built into a kernel running on another SoC where
CCI has been probed?
--
FTTC broadband for 0.8mile line: currently at 10.5Mbps down 400kbps up
according to speedtest.net.
More information about the linux-arm-kernel
mailing list