Lines Matching refs:pchip
200 static inline int __gpio_is_occupied(struct pxa_gpio_chip *pchip, unsigned gpio) in __gpio_is_occupied() argument
206 base = gpio_bank_base(&pchip->chip, gpio); in __gpio_is_occupied()
231 struct pxa_gpio_chip *pchip = pxa_gpio_chip; in pxa_irq_to_gpio() local
234 irq_gpio0 = irq_find_mapping(pchip->irqdomain, 0); in pxa_irq_to_gpio()
255 struct pxa_gpio_chip *pchip = chip_to_pxachip(chip); in pxa_gpio_to_irq() local
257 return irq_find_mapping(pchip->irqdomain, offset); in pxa_gpio_to_irq()
346 static int pxa_init_gpio_chip(struct pxa_gpio_chip *pchip, int ngpio, void __iomem *regbase) in pxa_init_gpio_chip() argument
351 pchip->banks = devm_kcalloc(pchip->dev, nbanks, sizeof(*pchip->banks), in pxa_init_gpio_chip()
353 if (!pchip->banks) in pxa_init_gpio_chip()
356 pchip->chip.parent = pchip->dev; in pxa_init_gpio_chip()
357 pchip->chip.label = "gpio-pxa"; in pxa_init_gpio_chip()
358 pchip->chip.direction_input = pxa_gpio_direction_input; in pxa_init_gpio_chip()
359 pchip->chip.direction_output = pxa_gpio_direction_output; in pxa_init_gpio_chip()
360 pchip->chip.get = pxa_gpio_get; in pxa_init_gpio_chip()
361 pchip->chip.set = pxa_gpio_set; in pxa_init_gpio_chip()
362 pchip->chip.to_irq = pxa_gpio_to_irq; in pxa_init_gpio_chip()
363 pchip->chip.ngpio = ngpio; in pxa_init_gpio_chip()
364 pchip->chip.request = gpiochip_generic_request; in pxa_init_gpio_chip()
365 pchip->chip.free = gpiochip_generic_free; in pxa_init_gpio_chip()
368 pchip->chip.of_xlate = pxa_gpio_of_xlate; in pxa_init_gpio_chip()
369 pchip->chip.of_gpio_n_cells = 2; in pxa_init_gpio_chip()
373 bank = pchip->banks + i; in pxa_init_gpio_chip()
377 return gpiochip_add_data(&pchip->chip, pchip); in pxa_init_gpio_chip()
397 struct pxa_gpio_chip *pchip = irq_data_get_irq_chip_data(d); in pxa_gpio_irq_type() local
399 struct pxa_gpio_bank *c = gpio_to_pxabank(&pchip->chip, gpio); in pxa_gpio_irq_type()
409 if (__gpio_is_occupied(pchip, gpio)) in pxa_gpio_irq_type()
444 struct pxa_gpio_chip *pchip = d; in pxa_gpio_demux_handler() local
449 for_each_gpio_bank(gpio, c, pchip) { in pxa_gpio_demux_handler()
457 generic_handle_domain_irq(pchip->irqdomain, in pxa_gpio_demux_handler()
469 struct pxa_gpio_chip *pchip = d; in pxa_gpio_direct_handler() local
471 if (in_irq == pchip->irq0) { in pxa_gpio_direct_handler()
472 generic_handle_domain_irq(pchip->irqdomain, 0); in pxa_gpio_direct_handler()
473 } else if (in_irq == pchip->irq1) { in pxa_gpio_direct_handler()
474 generic_handle_domain_irq(pchip->irqdomain, 1); in pxa_gpio_direct_handler()
484 struct pxa_gpio_chip *pchip = irq_data_get_irq_chip_data(d); in pxa_ack_muxed_gpio() local
486 void __iomem *base = gpio_bank_base(&pchip->chip, gpio); in pxa_ack_muxed_gpio()
493 struct pxa_gpio_chip *pchip = irq_data_get_irq_chip_data(d); in pxa_mask_muxed_gpio() local
495 struct pxa_gpio_bank *b = gpio_to_pxabank(&pchip->chip, gpio); in pxa_mask_muxed_gpio()
496 void __iomem *base = gpio_bank_base(&pchip->chip, gpio); in pxa_mask_muxed_gpio()
509 struct pxa_gpio_chip *pchip = irq_data_get_irq_chip_data(d); in pxa_gpio_set_wake() local
512 if (pchip->set_wake) in pxa_gpio_set_wake()
513 return pchip->set_wake(gpio, on); in pxa_gpio_set_wake()
520 struct pxa_gpio_chip *pchip = irq_data_get_irq_chip_data(d); in pxa_unmask_muxed_gpio() local
522 struct pxa_gpio_bank *c = gpio_to_pxabank(&pchip->chip, gpio); in pxa_unmask_muxed_gpio()
591 struct pxa_gpio_chip *pchip) in pxa_gpio_probe_dt() argument
610 #define pxa_gpio_probe_dt(pdev, pchip) (-1) argument
615 struct pxa_gpio_chip *pchip; in pxa_gpio_probe() local
623 pchip = devm_kzalloc(&pdev->dev, sizeof(*pchip), GFP_KERNEL); in pxa_gpio_probe()
624 if (!pchip) in pxa_gpio_probe()
626 pchip->dev = &pdev->dev; in pxa_gpio_probe()
634 pchip->set_wake = info->gpio_set_wake; in pxa_gpio_probe()
636 irq_base = pxa_gpio_probe_dt(pdev, pchip); in pxa_gpio_probe()
644 pchip->irqdomain = irq_domain_add_legacy(pdev->dev.of_node, in pxa_gpio_probe()
646 0, &pxa_irq_domain_ops, pchip); in pxa_gpio_probe()
647 if (!pchip->irqdomain) in pxa_gpio_probe()
657 pchip->irq0 = irq0; in pxa_gpio_probe()
658 pchip->irq1 = irq1; in pxa_gpio_probe()
672 ret = pxa_init_gpio_chip(pchip, pxa_last_gpio + 1, gpio_reg_base); in pxa_gpio_probe()
677 for_each_gpio_bank(gpio, c, pchip) { in pxa_gpio_probe()
689 "gpio-0", pchip); in pxa_gpio_probe()
697 "gpio-1", pchip); in pxa_gpio_probe()
704 "gpio-mux", pchip); in pxa_gpio_probe()
709 pxa_gpio_chip = pchip; in pxa_gpio_probe()
756 struct pxa_gpio_chip *pchip = pxa_gpio_chip; in pxa_gpio_suspend() local
760 if (!pchip) in pxa_gpio_suspend()
763 for_each_gpio_bank(gpio, c, pchip) { in pxa_gpio_suspend()
777 struct pxa_gpio_chip *pchip = pxa_gpio_chip; in pxa_gpio_resume() local
781 if (!pchip) in pxa_gpio_resume()
784 for_each_gpio_bank(gpio, c, pchip) { in pxa_gpio_resume()