Lines Matching refs:sprd_eic
92 struct sprd_eic { struct
131 static inline void __iomem *sprd_eic_offset_base(struct sprd_eic *sprd_eic, in sprd_eic_offset_base() argument
137 return sprd_eic->base[bank]; in sprd_eic_offset_base()
143 struct sprd_eic *sprd_eic = gpiochip_get_data(chip); in sprd_eic_update() local
145 sprd_eic_offset_base(sprd_eic, offset / SPRD_EIC_PER_BANK_NR); in sprd_eic_update()
149 spin_lock_irqsave(&sprd_eic->lock, flags); in sprd_eic_update()
158 spin_unlock_irqrestore(&sprd_eic->lock, flags); in sprd_eic_update()
163 struct sprd_eic *sprd_eic = gpiochip_get_data(chip); in sprd_eic_read() local
165 sprd_eic_offset_base(sprd_eic, offset / SPRD_EIC_PER_BANK_NR); in sprd_eic_read()
200 struct sprd_eic *sprd_eic = gpiochip_get_data(chip); in sprd_eic_set_debounce() local
202 sprd_eic_offset_base(sprd_eic, offset / SPRD_EIC_PER_BANK_NR); in sprd_eic_set_debounce()
227 struct sprd_eic *sprd_eic = gpiochip_get_data(chip); in sprd_eic_irq_mask() local
230 switch (sprd_eic->type) { in sprd_eic_irq_mask()
252 struct sprd_eic *sprd_eic = gpiochip_get_data(chip); in sprd_eic_irq_unmask() local
255 switch (sprd_eic->type) { in sprd_eic_irq_unmask()
277 struct sprd_eic *sprd_eic = gpiochip_get_data(chip); in sprd_eic_irq_ack() local
280 switch (sprd_eic->type) { in sprd_eic_irq_ack()
301 struct sprd_eic *sprd_eic = gpiochip_get_data(chip); in sprd_eic_irq_set_type() local
305 switch (sprd_eic->type) { in sprd_eic_irq_set_type()
434 struct sprd_eic *sprd_eic = gpiochip_get_data(chip); in sprd_eic_toggle_trigger() local
443 if ((sprd_eic->type != SPRD_EIC_DEBOUNCE && in sprd_eic_toggle_trigger()
444 sprd_eic->type != SPRD_EIC_LATCH) || in sprd_eic_toggle_trigger()
452 switch (sprd_eic->type) { in sprd_eic_toggle_trigger()
489 struct sprd_eic *sprd_eic = gpiochip_get_data(chip); in sprd_eic_handle_one_type() local
493 void __iomem *base = sprd_eic_offset_base(sprd_eic, bank); in sprd_eic_handle_one_type()
496 switch (sprd_eic->type) { in sprd_eic_handle_one_type()
556 struct sprd_eic *sprd_eic; in sprd_eic_probe() local
566 sprd_eic = devm_kzalloc(&pdev->dev, sizeof(*sprd_eic), GFP_KERNEL); in sprd_eic_probe()
567 if (!sprd_eic) in sprd_eic_probe()
570 spin_lock_init(&sprd_eic->lock); in sprd_eic_probe()
571 sprd_eic->type = pdata->type; in sprd_eic_probe()
573 sprd_eic->irq = platform_get_irq(pdev, 0); in sprd_eic_probe()
574 if (sprd_eic->irq < 0) { in sprd_eic_probe()
576 return sprd_eic->irq; in sprd_eic_probe()
590 sprd_eic->base[i] = devm_ioremap_resource(&pdev->dev, res); in sprd_eic_probe()
591 if (IS_ERR(sprd_eic->base[i])) in sprd_eic_probe()
592 return PTR_ERR(sprd_eic->base[i]); in sprd_eic_probe()
595 sprd_eic->chip.label = sprd_eic_label_name[sprd_eic->type]; in sprd_eic_probe()
596 sprd_eic->chip.ngpio = pdata->num_eics; in sprd_eic_probe()
597 sprd_eic->chip.base = -1; in sprd_eic_probe()
598 sprd_eic->chip.parent = &pdev->dev; in sprd_eic_probe()
599 sprd_eic->chip.of_node = pdev->dev.of_node; in sprd_eic_probe()
600 sprd_eic->chip.direction_input = sprd_eic_direction_input; in sprd_eic_probe()
601 switch (sprd_eic->type) { in sprd_eic_probe()
603 sprd_eic->chip.request = sprd_eic_request; in sprd_eic_probe()
604 sprd_eic->chip.free = sprd_eic_free; in sprd_eic_probe()
605 sprd_eic->chip.set_config = sprd_eic_set_config; in sprd_eic_probe()
606 sprd_eic->chip.set = sprd_eic_set; in sprd_eic_probe()
611 sprd_eic->chip.get = sprd_eic_get; in sprd_eic_probe()
619 sprd_eic->intc.name = dev_name(&pdev->dev); in sprd_eic_probe()
620 sprd_eic->intc.irq_ack = sprd_eic_irq_ack; in sprd_eic_probe()
621 sprd_eic->intc.irq_mask = sprd_eic_irq_mask; in sprd_eic_probe()
622 sprd_eic->intc.irq_unmask = sprd_eic_irq_unmask; in sprd_eic_probe()
623 sprd_eic->intc.irq_set_type = sprd_eic_irq_set_type; in sprd_eic_probe()
624 sprd_eic->intc.flags = IRQCHIP_SKIP_SET_WAKE; in sprd_eic_probe()
626 irq = &sprd_eic->chip.irq; in sprd_eic_probe()
627 irq->chip = &sprd_eic->intc; in sprd_eic_probe()
631 irq->parent_handler_data = sprd_eic; in sprd_eic_probe()
633 irq->parents = &sprd_eic->irq; in sprd_eic_probe()
635 ret = devm_gpiochip_add_data(&pdev->dev, &sprd_eic->chip, sprd_eic); in sprd_eic_probe()
641 platform_set_drvdata(pdev, sprd_eic); in sprd_eic_probe()