static int __init cpufreq_stats_init(void) { int ret; spin_lock_init(&cpufreq_stats_lock); ret = cpufreq_stats_setup(); #ifdef CONFIG_BL_SWITCHER if (!ret) bL_switcher_register_notifier(&switcher_notifier); #endif return ret; }
int bL_cpufreq_register(struct cpufreq_arm_bL_ops *ops) { int ret, i; if (arm_bL_ops) { pr_debug("%s: Already registered: %s, exiting\n", __func__, arm_bL_ops->name); return -EBUSY; } if (!ops || !strlen(ops->name) || !ops->init_opp_table) { pr_err("%s: Invalid arm_bL_ops, exiting\n", __func__); return -ENODEV; } arm_bL_ops = ops; ret = bL_switcher_get_enabled(); set_switching_enabled(ret); for (i = 0; i < MAX_CLUSTERS; i++) mutex_init(&cluster_lock[i]); ret = cpufreq_register_driver(&bL_cpufreq_driver); if (ret) { pr_info("%s: Failed registering platform driver: %s, err: %d\n", __func__, ops->name, ret); arm_bL_ops = NULL; } else { ret = bL_switcher_register_notifier(&bL_switcher_notifier); if (ret) { cpufreq_unregister_driver(&bL_cpufreq_driver); arm_bL_ops = NULL; } else { pr_info("%s: Registered platform driver: %s\n", __func__, ops->name); } } bL_switcher_put_enabled(); return ret; }
static int __bLs_register_notifier(void) { return bL_switcher_register_notifier(&bL_switcher_notifier); }