Lines Matching refs:p
71 static inline unsigned long em_gio_read(struct em_gio_priv *p, int offs) in em_gio_read() argument
74 return ioread32(p->base0 + offs); in em_gio_read()
76 return ioread32(p->base1 + (offs - GIO_IDT0)); in em_gio_read()
79 static inline void em_gio_write(struct em_gio_priv *p, int offs, in em_gio_write() argument
83 iowrite32(value, p->base0 + offs); in em_gio_write()
85 iowrite32(value, p->base1 + (offs - GIO_IDT0)); in em_gio_write()
90 struct em_gio_priv *p = irq_data_get_irq_chip_data(d); in em_gio_irq_disable() local
92 em_gio_write(p, GIO_IDS, BIT(irqd_to_hwirq(d))); in em_gio_irq_disable()
97 struct em_gio_priv *p = irq_data_get_irq_chip_data(d); in em_gio_irq_enable() local
99 em_gio_write(p, GIO_IEN, BIT(irqd_to_hwirq(d))); in em_gio_irq_enable()
104 struct em_gio_priv *p = irq_data_get_irq_chip_data(d); in em_gio_irq_reqres() local
106 if (gpiochip_lock_as_irq(&p->gpio_chip, irqd_to_hwirq(d))) { in em_gio_irq_reqres()
107 dev_err(p->gpio_chip.dev, in em_gio_irq_reqres()
117 struct em_gio_priv *p = irq_data_get_irq_chip_data(d); in em_gio_irq_relres() local
119 gpiochip_unlock_as_irq(&p->gpio_chip, irqd_to_hwirq(d)); in em_gio_irq_relres()
136 struct em_gio_priv *p = irq_data_get_irq_chip_data(d); in em_gio_irq_set_type() local
152 spin_lock_irqsave(&p->sense_lock, flags); in em_gio_irq_set_type()
155 tmp = em_gio_read(p, GIO_IIA); in em_gio_irq_set_type()
157 em_gio_write(p, GIO_IIA, tmp); in em_gio_irq_set_type()
160 tmp = em_gio_read(p, reg); in em_gio_irq_set_type()
163 em_gio_write(p, reg, tmp); in em_gio_irq_set_type()
166 em_gio_write(p, GIO_IIR, BIT(offset)); in em_gio_irq_set_type()
169 tmp = em_gio_read(p, GIO_IIA); in em_gio_irq_set_type()
171 em_gio_write(p, GIO_IIA, tmp); in em_gio_irq_set_type()
173 spin_unlock_irqrestore(&p->sense_lock, flags); in em_gio_irq_set_type()
180 struct em_gio_priv *p = dev_id; in em_gio_irq_handler() local
184 while ((pending = em_gio_read(p, GIO_MST))) { in em_gio_irq_handler()
186 em_gio_write(p, GIO_IIR, BIT(offset)); in em_gio_irq_handler()
187 generic_handle_irq(irq_find_mapping(p->irq_domain, offset)); in em_gio_irq_handler()
259 struct em_gio_priv *p = h->host_data; in em_gio_irq_domain_map() local
264 irq_set_chip_and_handler(irq, &p->irq_chip, handle_level_irq); in em_gio_irq_domain_map()
278 struct em_gio_priv *p; in em_gio_probe() local
285 p = devm_kzalloc(&pdev->dev, sizeof(*p), GFP_KERNEL); in em_gio_probe()
286 if (!p) { in em_gio_probe()
291 p->pdev = pdev; in em_gio_probe()
292 platform_set_drvdata(pdev, p); in em_gio_probe()
293 spin_lock_init(&p->sense_lock); in em_gio_probe()
306 p->base0 = devm_ioremap_nocache(&pdev->dev, io[0]->start, in em_gio_probe()
308 if (!p->base0) { in em_gio_probe()
314 p->base1 = devm_ioremap_nocache(&pdev->dev, io[1]->start, in em_gio_probe()
316 if (!p->base1) { in em_gio_probe()
336 gpio_chip = &p->gpio_chip; in em_gio_probe()
351 irq_chip = &p->irq_chip; in em_gio_probe()
360 p->irq_domain = irq_domain_add_simple(pdev->dev.of_node, in em_gio_probe()
363 &em_gio_irq_domain_ops, p); in em_gio_probe()
364 if (!p->irq_domain) { in em_gio_probe()
371 em_gio_irq_handler, 0, name, p)) { in em_gio_probe()
378 em_gio_irq_handler, 0, name, p)) { in em_gio_probe()
399 irq_domain_remove(p->irq_domain); in em_gio_probe()
406 struct em_gio_priv *p = platform_get_drvdata(pdev); in em_gio_remove() local
408 gpiochip_remove(&p->gpio_chip); in em_gio_remove()
410 irq_domain_remove(p->irq_domain); in em_gio_remove()