|
@@ -257,3 +257,21 @@ int omap_prcm_register_chain_handler(struct omap_prcm_irq_setup *irq_setup)
|
|
|
|
|
|
nr_regs = irq_setup->nr_regs;
|
|
|
|
|
|
+ if (prcm_irq_setup) {
|
|
|
+ pr_err("PRCM: already initialized; won't reinitialize\n");
|
|
|
+ return -EINVAL;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (nr_regs > OMAP_PRCM_MAX_NR_PENDING_REG) {
|
|
|
+ pr_err("PRCM: nr_regs too large\n");
|
|
|
+ return -EINVAL;
|
|
|
+ }
|
|
|
+
|
|
|
+ prcm_irq_setup = irq_setup;
|
|
|
+
|
|
|
+ prcm_irq_chips = kzalloc(sizeof(void *) * nr_regs, GFP_KERNEL);
|
|
|
+ prcm_irq_setup->saved_mask = kzalloc(sizeof(u32) * nr_regs, GFP_KERNEL);
|
|
|
+ prcm_irq_setup->priority_mask = kzalloc(sizeof(u32) * nr_regs,
|
|
|
+ GFP_KERNEL);
|
|
|
+
|
|
|
+ if (!prcm_irq_chips || !prcm_irq_setup->saved_mask ||
|