Lines Matching defs:sprd_eic
92 struct sprd_eic {
130 static inline void __iomem *sprd_eic_offset_base(struct sprd_eic *sprd_eic,
136 return sprd_eic->base[bank];
142 struct sprd_eic *sprd_eic = gpiochip_get_data(chip);
144 sprd_eic_offset_base(sprd_eic, offset / SPRD_EIC_PER_BANK_NR);
148 spin_lock_irqsave(&sprd_eic->lock, flags);
157 spin_unlock_irqrestore(&sprd_eic->lock, flags);
162 struct sprd_eic *sprd_eic = gpiochip_get_data(chip);
164 sprd_eic_offset_base(sprd_eic, offset / SPRD_EIC_PER_BANK_NR);
182 struct sprd_eic *sprd_eic = gpiochip_get_data(chip);
184 switch (sprd_eic->type) {
210 struct sprd_eic *sprd_eic = gpiochip_get_data(chip);
212 sprd_eic_offset_base(sprd_eic, offset / SPRD_EIC_PER_BANK_NR);
237 struct sprd_eic *sprd_eic = gpiochip_get_data(chip);
240 switch (sprd_eic->type) {
264 struct sprd_eic *sprd_eic = gpiochip_get_data(chip);
269 switch (sprd_eic->type) {
291 struct sprd_eic *sprd_eic = gpiochip_get_data(chip);
294 switch (sprd_eic->type) {
315 struct sprd_eic *sprd_eic = gpiochip_get_data(chip);
319 switch (sprd_eic->type) {
475 struct sprd_eic *sprd_eic = gpiochip_get_data(chip);
484 if ((sprd_eic->type != SPRD_EIC_DEBOUNCE &&
485 sprd_eic->type != SPRD_EIC_LATCH) ||
493 switch (sprd_eic->type) {
530 struct sprd_eic *sprd_eic = gpiochip_get_data(chip);
534 void __iomem *base = sprd_eic_offset_base(sprd_eic, bank);
537 switch (sprd_eic->type) {
607 struct sprd_eic *sprd_eic;
617 sprd_eic = devm_kzalloc(&pdev->dev, sizeof(*sprd_eic), GFP_KERNEL);
618 if (!sprd_eic)
621 spin_lock_init(&sprd_eic->lock);
622 sprd_eic->type = pdata->type;
624 sprd_eic->irq = platform_get_irq(pdev, 0);
625 if (sprd_eic->irq < 0)
626 return sprd_eic->irq;
639 sprd_eic->base[i] = devm_ioremap_resource(&pdev->dev, res);
640 if (IS_ERR(sprd_eic->base[i]))
641 return PTR_ERR(sprd_eic->base[i]);
644 sprd_eic->chip.label = sprd_eic_label_name[sprd_eic->type];
645 sprd_eic->chip.ngpio = pdata->num_eics;
646 sprd_eic->chip.base = -1;
647 sprd_eic->chip.parent = &pdev->dev;
648 sprd_eic->chip.direction_input = sprd_eic_direction_input;
649 switch (sprd_eic->type) {
651 sprd_eic->chip.request = sprd_eic_request;
652 sprd_eic->chip.free = sprd_eic_free;
653 sprd_eic->chip.set_config = sprd_eic_set_config;
654 sprd_eic->chip.set = sprd_eic_set;
658 sprd_eic->chip.get = sprd_eic_get;
665 irq = &sprd_eic->chip.irq;
670 irq->parent_handler_data = sprd_eic;
672 irq->parents = &sprd_eic->irq;
674 ret = devm_gpiochip_add_data(&pdev->dev, &sprd_eic->chip, sprd_eic);