|
@@ -2,7 +2,7 @@
|
|
|
* R-Car SYSC Power management support
|
|
|
*
|
|
|
* Copyright (C) 2014 Magnus Damm
|
|
|
- * Copyright (C) 2015-2016 Glider bvba
|
|
|
+ * Copyright (C) 2015-2017 Glider bvba
|
|
|
*
|
|
|
* This file is subject to the terms and conditions of the GNU General Public
|
|
|
* License. See the file "COPYING" in the main directory of this archive
|
|
@@ -334,6 +334,12 @@ static int __init rcar_sysc_pd_init(void)
|
|
|
|
|
|
info = match->data;
|
|
|
|
|
|
+ if (info->init) {
|
|
|
+ error = info->init();
|
|
|
+ if (error)
|
|
|
+ return error;
|
|
|
+ }
|
|
|
+
|
|
|
has_cpg_mstp = of_find_compatible_node(NULL, NULL,
|
|
|
"renesas,cpg-mstp-clocks");
|
|
|
|
|
@@ -377,6 +383,11 @@ static int __init rcar_sysc_pd_init(void)
|
|
|
const struct rcar_sysc_area *area = &info->areas[i];
|
|
|
struct rcar_sysc_pd *pd;
|
|
|
|
|
|
+ if (!area->name) {
|
|
|
+ /* Skip NULLified area */
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
pd = kzalloc(sizeof(*pd) + strlen(area->name) + 1, GFP_KERNEL);
|
|
|
if (!pd) {
|
|
|
error = -ENOMEM;
|
|
@@ -406,6 +417,18 @@ out_put:
|
|
|
}
|
|
|
early_initcall(rcar_sysc_pd_init);
|
|
|
|
|
|
+void __init rcar_sysc_nullify(struct rcar_sysc_area *areas,
|
|
|
+ unsigned int num_areas, u8 id)
|
|
|
+{
|
|
|
+ unsigned int i;
|
|
|
+
|
|
|
+ for (i = 0; i < num_areas; i++)
|
|
|
+ if (areas[i].isr_bit == id) {
|
|
|
+ areas[i].name = NULL;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
void __init rcar_sysc_init(phys_addr_t base, u32 syscier)
|
|
|
{
|
|
|
u32 syscimr;
|