Lines Matching full:spc
3 * Versatile Express Serial Power Controller (SPC) support
26 #include "spc.h"
28 #define SPCLOG "vexpress-spc: "
39 /* SPC wake-up IRQs status and mask */
43 /* SPC power down registers */
46 /* SPC per-CPU mailboxes */
50 /* SPC CPU/cluster reset statue */
55 /* SPC system config interface registers */
75 * Even though the SPC takes max 3-5 ms to complete any OPP/COMMS
463 | IRQF_ONESHOT, "vexpress-spc", info); in ve_spc_init()
487 #define to_clk_spc(spc) container_of(spc, struct clk_spc, hw) argument
491 struct clk_spc *spc = to_clk_spc(hw); in spc_recalc_rate() local
494 if (ve_spc_get_performance(spc->cluster, &freq)) in spc_recalc_rate()
503 struct clk_spc *spc = to_clk_spc(hw); in spc_round_rate() local
505 return ve_spc_round_performance(spc->cluster, drate); in spc_round_rate()
511 struct clk_spc *spc = to_clk_spc(hw); in spc_set_rate() local
513 return ve_spc_set_performance(spc->cluster, rate / 1000); in spc_set_rate()
525 struct clk_spc *spc; in ve_spc_clk_register() local
527 spc = kzalloc(sizeof(*spc), GFP_KERNEL); in ve_spc_clk_register()
528 if (!spc) in ve_spc_clk_register()
531 spc->hw.init = &init; in ve_spc_clk_register()
532 spc->cluster = topology_physical_package_id(cpu_dev->id); in ve_spc_clk_register()
534 spc->cluster = spc->cluster < 0 ? 0 : spc->cluster; in ve_spc_clk_register()
541 return devm_clk_register(cpu_dev, &spc->hw); in ve_spc_clk_register()
551 return 0; /* Continue only if SPC is initialised */ in ve_spc_clk_init()
587 platform_device_register_simple("vexpress-spc-cpufreq", -1, NULL, 0); in ve_spc_clk_init()