static int gic_notifier(struct notifier_block *self, unsigned long cmd, void *v) { int i; for (i = 0; i < MAX_GIC_NR; i++) { switch (cmd) { case CPU_PM_ENTER: gic_cpu_save(i); break; case CPU_PM_ENTER_FAILED: case CPU_PM_EXIT: gic_cpu_restore(i); break; case CPU_CLUSTER_PM_ENTER: gic_dist_save(i); break; case CPU_CLUSTER_PM_ENTER_FAILED: case CPU_CLUSTER_PM_EXIT: gic_dist_restore(i); break; } } return NOTIFY_OK; }
static int gic_runtime_suspend(struct device *dev) { struct gic_chip_data *gic = dev_get_drvdata(dev); gic_dist_save(gic); gic_cpu_save(gic); return pm_clk_suspend(dev); }