Lines Matching refs:sprd_gpio

35 struct sprd_gpio {
42 static inline void __iomem *sprd_gpio_bank_base(struct sprd_gpio *sprd_gpio,
45 return sprd_gpio->base + SPRD_GPIO_BANK_SIZE * bank;
51 struct sprd_gpio *sprd_gpio = gpiochip_get_data(chip);
52 void __iomem *base = sprd_gpio_bank_base(sprd_gpio,
57 spin_lock_irqsave(&sprd_gpio->lock, flags);
66 spin_unlock_irqrestore(&sprd_gpio->lock, flags);
71 struct sprd_gpio *sprd_gpio = gpiochip_get_data(chip);
72 void __iomem *base = sprd_gpio_bank_base(sprd_gpio,
193 struct sprd_gpio *sprd_gpio = gpiochip_get_data(chip);
199 void __iomem *base = sprd_gpio_bank_base(sprd_gpio, bank);
223 struct sprd_gpio *sprd_gpio;
225 sprd_gpio = devm_kzalloc(&pdev->dev, sizeof(*sprd_gpio), GFP_KERNEL);
226 if (!sprd_gpio)
229 sprd_gpio->irq = platform_get_irq(pdev, 0);
230 if (sprd_gpio->irq < 0)
231 return sprd_gpio->irq;
233 sprd_gpio->base = devm_platform_ioremap_resource(pdev, 0);
234 if (IS_ERR(sprd_gpio->base))
235 return PTR_ERR(sprd_gpio->base);
237 spin_lock_init(&sprd_gpio->lock);
239 sprd_gpio->chip.label = dev_name(&pdev->dev);
240 sprd_gpio->chip.ngpio = SPRD_GPIO_NR;
241 sprd_gpio->chip.base = -1;
242 sprd_gpio->chip.parent = &pdev->dev;
243 sprd_gpio->chip.request = sprd_gpio_request;
244 sprd_gpio->chip.free = sprd_gpio_free;
245 sprd_gpio->chip.get = sprd_gpio_get;
246 sprd_gpio->chip.set = sprd_gpio_set;
247 sprd_gpio->chip.direction_input = sprd_gpio_direction_input;
248 sprd_gpio->chip.direction_output = sprd_gpio_direction_output;
250 irq = &sprd_gpio->chip.irq;
255 irq->parent_handler_data = sprd_gpio;
257 irq->parents = &sprd_gpio->irq;
259 return devm_gpiochip_add_data(&pdev->dev, &sprd_gpio->chip, sprd_gpio);