Lines Matching refs:cd
47 struct gpcv2_irqchip_data *cd; in gpcv2_wakeup_source_save() local
51 cd = imx_gpcv2_instance; in gpcv2_wakeup_source_save()
52 if (!cd) in gpcv2_wakeup_source_save()
56 reg = cd->gpc_base + cd->cpu2wakeup + i * 4; in gpcv2_wakeup_source_save()
57 cd->saved_irq_mask[i] = readl_relaxed(reg); in gpcv2_wakeup_source_save()
58 writel_relaxed(cd->wakeup_sources[i], reg); in gpcv2_wakeup_source_save()
66 struct gpcv2_irqchip_data *cd; in gpcv2_wakeup_source_restore() local
70 cd = imx_gpcv2_instance; in gpcv2_wakeup_source_restore()
71 if (!cd) in gpcv2_wakeup_source_restore()
75 reg = cd->gpc_base + cd->cpu2wakeup + i * 4; in gpcv2_wakeup_source_restore()
76 writel_relaxed(cd->saved_irq_mask[i], reg); in gpcv2_wakeup_source_restore()
87 struct gpcv2_irqchip_data *cd = d->chip_data; in imx_gpcv2_irq_set_wake() local
93 raw_spin_lock_irqsave(&cd->rlock, flags); in imx_gpcv2_irq_set_wake()
94 reg = cd->gpc_base + cd->cpu2wakeup + idx * 4; in imx_gpcv2_irq_set_wake()
96 val = cd->wakeup_sources[idx]; in imx_gpcv2_irq_set_wake()
98 cd->wakeup_sources[idx] = on ? (val & ~mask) : (val | mask); in imx_gpcv2_irq_set_wake()
99 raw_spin_unlock_irqrestore(&cd->rlock, flags); in imx_gpcv2_irq_set_wake()
111 struct gpcv2_irqchip_data *cd = d->chip_data; in imx_gpcv2_irq_unmask() local
115 raw_spin_lock(&cd->rlock); in imx_gpcv2_irq_unmask()
116 reg = cd->gpc_base + cd->cpu2wakeup + d->hwirq / 32 * 4; in imx_gpcv2_irq_unmask()
120 raw_spin_unlock(&cd->rlock); in imx_gpcv2_irq_unmask()
127 struct gpcv2_irqchip_data *cd = d->chip_data; in imx_gpcv2_irq_mask() local
131 raw_spin_lock(&cd->rlock); in imx_gpcv2_irq_mask()
132 reg = cd->gpc_base + cd->cpu2wakeup + d->hwirq / 32 * 4; in imx_gpcv2_irq_mask()
136 raw_spin_unlock(&cd->rlock); in imx_gpcv2_irq_mask()
213 struct gpcv2_irqchip_data *cd; in imx_gpcv2_irqchip_init() local
227 cd = kzalloc(sizeof(struct gpcv2_irqchip_data), GFP_KERNEL); in imx_gpcv2_irqchip_init()
228 if (!cd) { in imx_gpcv2_irqchip_init()
233 cd->gpc_base = of_iomap(node, 0); in imx_gpcv2_irqchip_init()
234 if (!cd->gpc_base) { in imx_gpcv2_irqchip_init()
236 kfree(cd); in imx_gpcv2_irqchip_init()
241 node, &gpcv2_irqchip_data_domain_ops, cd); in imx_gpcv2_irqchip_init()
243 iounmap(cd->gpc_base); in imx_gpcv2_irqchip_init()
244 kfree(cd); in imx_gpcv2_irqchip_init()
251 writel_relaxed(~0, cd->gpc_base + GPC_IMR1_CORE0 + i * 4); in imx_gpcv2_irqchip_init()
252 writel_relaxed(~0, cd->gpc_base + GPC_IMR1_CORE1 + i * 4); in imx_gpcv2_irqchip_init()
253 cd->wakeup_sources[i] = ~0; in imx_gpcv2_irqchip_init()
257 cd->cpu2wakeup = GPC_IMR1_CORE0; in imx_gpcv2_irqchip_init()
264 writel_relaxed(~0x1, cd->gpc_base + cd->cpu2wakeup); in imx_gpcv2_irqchip_init()
266 imx_gpcv2_instance = cd; in imx_gpcv2_irqchip_init()