Lines Matching defs:cluster
40 #define CPUIDLE_FLAG_REG(cluster) \
41 ((cluster == 0) ? REG_SCBAKDATA8_OFFSET : \
95 static void hisi_cpuhotplug_lock(unsigned int cluster, unsigned int core)
99 lock_id = (cluster << 2) + core;
104 static void hisi_cpuhotplug_unlock(unsigned int cluster, unsigned int core)
108 lock_id = (cluster << 2) + core;
114 void hisi_cpuidle_lock(unsigned int cluster, unsigned int core)
116 unsigned int offset = (cluster == 0 ? RES0_LOCK_BASE : RES1_LOCK_BASE);
122 void hisi_cpuidle_unlock(unsigned int cluster, unsigned int core)
124 unsigned int offset = (cluster == 0 ? RES0_LOCK_BASE : RES1_LOCK_BASE);
129 unsigned int hisi_get_cpuidle_flag(unsigned int cluster)
133 val = mmio_read_32(CPUIDLE_FLAG_REG(cluster));
139 void hisi_set_cpuidle_flag(unsigned int cluster, unsigned int core)
141 mmio_setbits_32(CPUIDLE_FLAG_REG(cluster), BIT(core));
144 void hisi_clear_cpuidle_flag(unsigned int cluster, unsigned int core)
146 mmio_clrbits_32(CPUIDLE_FLAG_REG(cluster), BIT(core));
165 void hisi_set_cluster_pwdn_flag(unsigned int cluster,
170 hisi_cpuhotplug_lock(cluster, core);
173 val &= ~(0x3U << ((2 * cluster) + 28));
174 val |= (value << (2 * cluster));
177 hisi_cpuhotplug_unlock(cluster, core);
180 unsigned int hisi_get_cpu_boot_flag(unsigned int cluster, unsigned int core)
184 hisi_cpuhotplug_lock(cluster, core);
186 val = val >> (16 + (cluster << 2));
188 hisi_cpuhotplug_unlock(cluster, core);
193 unsigned int hisi_test_cpu_down(unsigned int cluster, unsigned int core)
197 hisi_cpuhotplug_lock(cluster, core);
199 val = val >> (16 + (cluster << 2));
201 hisi_cpuhotplug_unlock(cluster, core);
209 void hisi_set_cpu_boot_flag(unsigned int cluster, unsigned int core)
211 unsigned int flag = BIT((cluster<<2) + core + 16);
213 hisi_cpuhotplug_lock(cluster, core);
217 hisi_cpuhotplug_unlock(cluster, core);
220 void hisi_clear_cpu_boot_flag(unsigned int cluster, unsigned int core)
222 unsigned int flag = BIT((cluster<<2) + core + 16);
224 hisi_cpuhotplug_lock(cluster, core);
228 hisi_cpuhotplug_unlock(cluster, core);
231 int cluster_is_powered_on(unsigned int cluster)
236 if (cluster == 0)
244 static void *hisi_get_pdc_addr(unsigned int cluster)
249 if (cluster == 0)
258 static unsigned int hisi_get_pdc_stat(unsigned int cluster)
260 void *pdc_base_addr = hisi_get_pdc_addr(cluster);
268 static int check_hotplug(unsigned int cluster, unsigned int boot_flag)
279 int hisi_test_pwrdn_allcores(unsigned int cluster, unsigned int core)
282 unsigned int pdc_stat = hisi_get_pdc_stat(cluster);
283 unsigned int boot_flag = hisi_get_cpu_boot_flag(cluster, core);
284 unsigned int cpuidle_flag = hisi_get_cpuidle_flag(cluster);
290 check_hotplug(cluster, boot_flag))
296 void hisi_disable_pdc(unsigned int cluster)
298 void *pdc_base_addr = hisi_get_pdc_addr(cluster);
303 void hisi_enable_pdc(unsigned int cluster)
305 void *pdc_base_addr = hisi_get_pdc_addr(cluster);
340 void hisi_pdc_mask_cluster_wakeirq(unsigned int cluster)
343 void *pdc_base_addr = hisi_get_pdc_addr(cluster);
349 static void hisi_pdc_powerup_core(unsigned int cluster, unsigned int core,
353 void *pdc_base_addr = hisi_get_pdc_addr(cluster);
359 static void hisi_pdc_powerdn_core(unsigned int cluster, unsigned int core,
363 void *pdc_base_addr = hisi_get_pdc_addr(cluster);
369 void hisi_powerup_core(unsigned int cluster, unsigned int core)
371 hisi_pdc_powerup_core(cluster, core, PDC_MASK_GIC_WAKE_IRQ,
375 void hisi_powerdn_core(unsigned int cluster, unsigned int core)
377 hisi_pdc_powerdn_core(cluster, core, PDC_MASK_GIC_WAKE_IRQ,
381 void hisi_powerup_cluster(unsigned int cluster, unsigned int core)
383 hisi_ipc_pm_on_off(core, cluster, PM_ON);
386 void hisi_powerdn_cluster(unsigned int cluster, unsigned int core)
388 void *pdc_base_addr = hisi_get_pdc_addr(cluster);
390 hisi_set_cluster_pwdn_flag(cluster, core, CLUSTER_PWDN_HOTPLUG);
397 void hisi_enter_core_idle(unsigned int cluster, unsigned int core)
399 hisi_pdc_powerdn_core(cluster, core, PDC_UNMASK_GIC_WAKE_IRQ,
403 void hisi_enter_cluster_idle(unsigned int cluster, unsigned int core)
405 void *pdc_base_addr = hisi_get_pdc_addr(cluster);
407 hisi_set_cluster_pwdn_flag(cluster, core, CLUSTER_PWDN_IDLE);
414 void hisi_enter_ap_suspend(unsigned int cluster, unsigned int core)
416 hisi_ipc_pm_suspend(core, cluster, 0x3);