Lines Matching refs:at91_gpio
428 struct at91_gpio_chip *at91_gpio = irq_data_get_irq_chip_data(d); in gpio_irq_set_wake() local
430 unsigned bank = at91_gpio->pioc_idx; in gpio_irq_set_wake()
440 irq_set_irq_wake(at91_gpio->pioc_virq, state); in gpio_irq_set_wake()
505 struct at91_gpio_chip *at91_gpio = irq_data_get_irq_chip_data(d); in gpio_irq_mask() local
506 void __iomem *pio = at91_gpio->regbase; in gpio_irq_mask()
515 struct at91_gpio_chip *at91_gpio = irq_data_get_irq_chip_data(d); in gpio_irq_unmask() local
516 void __iomem *pio = at91_gpio->regbase; in gpio_irq_unmask()
537 struct at91_gpio_chip *at91_gpio = irq_data_get_irq_chip_data(d); in alt_gpio_irq_type() local
538 void __iomem *pio = at91_gpio->regbase; in alt_gpio_irq_type()
590 struct at91_gpio_chip *at91_gpio = irq_data_get_irq_chip_data(idata); in gpio_irq_handler() local
591 void __iomem *pio = at91_gpio->regbase; in gpio_irq_handler()
604 if (!at91_gpio->next) in gpio_irq_handler()
606 at91_gpio = at91_gpio->next; in gpio_irq_handler()
607 pio = at91_gpio->regbase; in gpio_irq_handler()
613 generic_handle_irq(irq_find_mapping(at91_gpio->domain, n)); in gpio_irq_handler()
719 struct at91_gpio_chip *at91_gpio = h->host_data; in at91_gpio_irq_map() local
730 irq_set_chip_data(virq, at91_gpio); in at91_gpio_irq_map()
745 struct at91_gpio_chip *at91_gpio = &gpio_chip[alias_idx]; in at91_gpio_of_irq_setup() local
754 __raw_writel(~0, at91_gpio->regbase + PIO_IDR); in at91_gpio_of_irq_setup()
757 at91_gpio->domain = irq_domain_add_linear(node, at91_gpio->chip.ngpio, in at91_gpio_of_irq_setup()
758 &at91_gpio_ops, at91_gpio); in at91_gpio_of_irq_setup()
759 if (!at91_gpio->domain) in at91_gpio_of_irq_setup()
761 at91_gpio->pioc_idx); in at91_gpio_of_irq_setup()
764 if (at91_gpio->pioc_idx) in at91_gpio_of_irq_setup()
765 prev = &gpio_chip[at91_gpio->pioc_idx - 1]; in at91_gpio_of_irq_setup()
771 if (prev && prev->next == at91_gpio) in at91_gpio_of_irq_setup()
774 at91_gpio->pioc_virq = irq_create_mapping(irq_find_host(parent), in at91_gpio_of_irq_setup()
775 at91_gpio->pioc_hwirq); in at91_gpio_of_irq_setup()
776 irq_set_chip_data(at91_gpio->pioc_virq, at91_gpio); in at91_gpio_of_irq_setup()
777 irq_set_chained_handler(at91_gpio->pioc_virq, gpio_irq_handler); in at91_gpio_of_irq_setup()
792 static void __init at91_gpio_irqdomain(struct at91_gpio_chip *at91_gpio) in at91_gpio_irqdomain() argument
796 irq_base = irq_alloc_descs(-1, 0, at91_gpio->chip.ngpio, 0); in at91_gpio_irqdomain()
799 at91_gpio->pioc_idx, irq_base); in at91_gpio_irqdomain()
800 at91_gpio->domain = irq_domain_add_legacy(NULL, at91_gpio->chip.ngpio, in at91_gpio_irqdomain()
803 if (!at91_gpio->domain) in at91_gpio_irqdomain()
805 at91_gpio->pioc_idx); in at91_gpio_irqdomain()
867 struct at91_gpio_chip *at91_gpio = to_at91_gpio_chip(chip); in at91_gpiolib_direction_input() local
868 void __iomem *pio = at91_gpio->regbase; in at91_gpiolib_direction_input()
878 struct at91_gpio_chip *at91_gpio = to_at91_gpio_chip(chip); in at91_gpiolib_direction_output() local
879 void __iomem *pio = at91_gpio->regbase; in at91_gpiolib_direction_output()
889 struct at91_gpio_chip *at91_gpio = to_at91_gpio_chip(chip); in at91_gpiolib_get() local
890 void __iomem *pio = at91_gpio->regbase; in at91_gpiolib_get()
900 struct at91_gpio_chip *at91_gpio = to_at91_gpio_chip(chip); in at91_gpiolib_set() local
901 void __iomem *pio = at91_gpio->regbase; in at91_gpiolib_set()
934 struct at91_gpio_chip *at91_gpio = to_at91_gpio_chip(chip); in at91_gpiolib_to_irq() local
938 virq = irq_create_mapping(at91_gpio->domain, offset); in at91_gpiolib_to_irq()
949 struct at91_gpio_chip *at91_gpio = &gpio_chip[idx]; in at91_gpio_setup_clk() local
952 at91_gpio->clock = clk_get_sys(NULL, at91_gpio->chip.label); in at91_gpio_setup_clk()
953 if (IS_ERR(at91_gpio->clock)) { in at91_gpio_setup_clk()
958 if (clk_prepare(at91_gpio->clock)) in at91_gpio_setup_clk()
962 if (clk_enable(at91_gpio->clock)) { in at91_gpio_setup_clk()
970 clk_unprepare(at91_gpio->clock); in at91_gpio_setup_clk()
972 clk_put(at91_gpio->clock); in at91_gpio_setup_clk()
981 struct at91_gpio_chip *at91_gpio; in of_at91_gpio_init_one() local
993 at91_gpio = &gpio_chip[alias_idx]; in of_at91_gpio_init_one()
994 at91_gpio->chip.base = alias_idx * at91_gpio->chip.ngpio; in of_at91_gpio_init_one()
996 at91_gpio->regbase = of_iomap(np, 0); in of_at91_gpio_init_one()
997 if (!at91_gpio->regbase) { in of_at91_gpio_init_one()
1004 if (of_property_read_u32(np, "interrupts", &at91_gpio->pioc_hwirq)) { in of_at91_gpio_init_one()
1018 at91_gpio->chip.of_node = np; in of_at91_gpio_init_one()
1020 at91_gpio->pioc_idx = alias_idx; in of_at91_gpio_init_one()
1024 iounmap(at91_gpio->regbase); in of_at91_gpio_init_one()
1049 struct at91_gpio_chip *at91_gpio = &gpio_chip[idx]; in at91_gpio_init_one() local
1051 at91_gpio->chip.base = idx * at91_gpio->chip.ngpio; in at91_gpio_init_one()
1052 at91_gpio->pioc_hwirq = pioc_hwirq; in at91_gpio_init_one()
1053 at91_gpio->pioc_idx = idx; in at91_gpio_init_one()
1055 at91_gpio->regbase = ioremap(regbase, 512); in at91_gpio_init_one()
1056 if (!at91_gpio->regbase) { in at91_gpio_init_one()
1068 iounmap(at91_gpio->regbase); in at91_gpio_init_one()
1077 struct at91_gpio_chip *at91_gpio, *last = NULL; in at91_gpio_init() local
1088 at91_gpio = &gpio_chip[i]; in at91_gpio_init()
1094 if (last && last->pioc_hwirq == at91_gpio->pioc_hwirq) in at91_gpio_init()
1095 last->next = at91_gpio; in at91_gpio_init()
1096 last = at91_gpio; in at91_gpio_init()
1098 gpiochip_add(&at91_gpio->chip); in at91_gpio_init()