Lines Matching refs:sprd_eic
92 struct sprd_eic {
131 static inline void __iomem *sprd_eic_offset_base(struct sprd_eic *sprd_eic,
137 return sprd_eic->base[bank];
143 struct sprd_eic *sprd_eic = gpiochip_get_data(chip);
145 sprd_eic_offset_base(sprd_eic, offset / SPRD_EIC_PER_BANK_NR);
149 spin_lock_irqsave(&sprd_eic->lock, flags);
158 spin_unlock_irqrestore(&sprd_eic->lock, flags);
163 struct sprd_eic *sprd_eic = gpiochip_get_data(chip);
165 sprd_eic_offset_base(sprd_eic, offset / SPRD_EIC_PER_BANK_NR);
183 struct sprd_eic *sprd_eic = gpiochip_get_data(chip);
185 switch (sprd_eic->type) {
211 struct sprd_eic *sprd_eic = gpiochip_get_data(chip);
213 sprd_eic_offset_base(sprd_eic, offset / SPRD_EIC_PER_BANK_NR);
238 struct sprd_eic *sprd_eic = gpiochip_get_data(chip);
241 switch (sprd_eic->type) {
263 struct sprd_eic *sprd_eic = gpiochip_get_data(chip);
266 switch (sprd_eic->type) {
288 struct sprd_eic *sprd_eic = gpiochip_get_data(chip);
291 switch (sprd_eic->type) {
312 struct sprd_eic *sprd_eic = gpiochip_get_data(chip);
316 switch (sprd_eic->type) {
472 struct sprd_eic *sprd_eic = gpiochip_get_data(chip);
481 if ((sprd_eic->type != SPRD_EIC_DEBOUNCE &&
482 sprd_eic->type != SPRD_EIC_LATCH) ||
490 switch (sprd_eic->type) {
527 struct sprd_eic *sprd_eic = gpiochip_get_data(chip);
531 void __iomem *base = sprd_eic_offset_base(sprd_eic, bank);
534 switch (sprd_eic->type) {
595 struct sprd_eic *sprd_eic;
605 sprd_eic = devm_kzalloc(&pdev->dev, sizeof(*sprd_eic), GFP_KERNEL);
606 if (!sprd_eic)
609 spin_lock_init(&sprd_eic->lock);
610 sprd_eic->type = pdata->type;
612 sprd_eic->irq = platform_get_irq(pdev, 0);
613 if (sprd_eic->irq < 0)
614 return sprd_eic->irq;
627 sprd_eic->base[i] = devm_ioremap_resource(&pdev->dev, res);
628 if (IS_ERR(sprd_eic->base[i]))
629 return PTR_ERR(sprd_eic->base[i]);
632 sprd_eic->chip.label = sprd_eic_label_name[sprd_eic->type];
633 sprd_eic->chip.ngpio = pdata->num_eics;
634 sprd_eic->chip.base = -1;
635 sprd_eic->chip.parent = &pdev->dev;
636 sprd_eic->chip.of_node = pdev->dev.of_node;
637 sprd_eic->chip.direction_input = sprd_eic_direction_input;
638 switch (sprd_eic->type) {
640 sprd_eic->chip.request = sprd_eic_request;
641 sprd_eic->chip.free = sprd_eic_free;
642 sprd_eic->chip.set_config = sprd_eic_set_config;
643 sprd_eic->chip.set = sprd_eic_set;
647 sprd_eic->chip.get = sprd_eic_get;
654 sprd_eic->intc.name = dev_name(&pdev->dev);
655 sprd_eic->intc.irq_ack = sprd_eic_irq_ack;
656 sprd_eic->intc.irq_mask = sprd_eic_irq_mask;
657 sprd_eic->intc.irq_unmask = sprd_eic_irq_unmask;
658 sprd_eic->intc.irq_set_type = sprd_eic_irq_set_type;
659 sprd_eic->intc.flags = IRQCHIP_SKIP_SET_WAKE;
661 irq = &sprd_eic->chip.irq;
662 irq->chip = &sprd_eic->intc;
666 irq->parent_handler_data = sprd_eic;
668 irq->parents = &sprd_eic->irq;
670 ret = devm_gpiochip_add_data(&pdev->dev, &sprd_eic->chip, sprd_eic);
676 platform_set_drvdata(pdev, sprd_eic);