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,
191 struct sprd_gpio *sprd_gpio = gpiochip_get_data(chip);
197 void __iomem *base = sprd_gpio_bank_base(sprd_gpio, bank);
224 struct sprd_gpio *sprd_gpio;
227 sprd_gpio = devm_kzalloc(&pdev->dev, sizeof(*sprd_gpio), GFP_KERNEL);
228 if (!sprd_gpio)
231 sprd_gpio->irq = platform_get_irq(pdev, 0);
232 if (sprd_gpio->irq < 0)
233 return sprd_gpio->irq;
235 sprd_gpio->base = devm_platform_ioremap_resource(pdev, 0);
236 if (IS_ERR(sprd_gpio->base))
237 return PTR_ERR(sprd_gpio->base);
239 spin_lock_init(&sprd_gpio->lock);
241 sprd_gpio->chip.label = dev_name(&pdev->dev);
242 sprd_gpio->chip.ngpio = SPRD_GPIO_NR;
243 sprd_gpio->chip.base = -1;
244 sprd_gpio->chip.parent = &pdev->dev;
245 sprd_gpio->chip.of_node = pdev->dev.of_node;
246 sprd_gpio->chip.request = sprd_gpio_request;
247 sprd_gpio->chip.free = sprd_gpio_free;
248 sprd_gpio->chip.get = sprd_gpio_get;
249 sprd_gpio->chip.set = sprd_gpio_set;
250 sprd_gpio->chip.direction_input = sprd_gpio_direction_input;
251 sprd_gpio->chip.direction_output = sprd_gpio_direction_output;
253 irq = &sprd_gpio->chip.irq;
258 irq->parent_handler_data = sprd_gpio;
260 irq->parents = &sprd_gpio->irq;
262 ret = devm_gpiochip_add_data(&pdev->dev, &sprd_gpio->chip, sprd_gpio);
268 platform_set_drvdata(pdev, sprd_gpio);