Lines Matching refs:sprd_gpio

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