Lines Matching refs:rda_gpio

37 struct rda_gpio {  struct
48 struct rda_gpio *rda_gpio = gpiochip_get_data(chip); in rda_gpio_update() argument
49 void __iomem *base = rda_gpio->base; in rda_gpio_update()
53 spin_lock_irqsave(&rda_gpio->lock, flags); in rda_gpio_update()
62 spin_unlock_irqrestore(&rda_gpio->lock, flags); in rda_gpio_update()
68 struct rda_gpio *rda_gpio = gpiochip_get_data(chip); in rda_gpio_irq_mask() local
69 void __iomem *base = rda_gpio->base; in rda_gpio_irq_mask()
90 struct rda_gpio *rda_gpio = gpiochip_get_data(chip); in rda_gpio_set_irq() local
91 void __iomem *base = rda_gpio->base; in rda_gpio_set_irq()
182 struct rda_gpio *rda_gpio = gpiochip_get_data(chip); in rda_gpio_irq_handler() local
188 status = readl_relaxed(rda_gpio->base + RDA_GPIO_INT_STATUS); in rda_gpio_irq_handler()
202 struct rda_gpio *rda_gpio; in rda_gpio_probe() local
206 rda_gpio = devm_kzalloc(dev, sizeof(*rda_gpio), GFP_KERNEL); in rda_gpio_probe()
207 if (!rda_gpio) in rda_gpio_probe()
219 rda_gpio->irq = platform_get_irq(pdev, 0); in rda_gpio_probe()
221 rda_gpio->base = devm_platform_ioremap_resource(pdev, 0); in rda_gpio_probe()
222 if (IS_ERR(rda_gpio->base)) in rda_gpio_probe()
223 return PTR_ERR(rda_gpio->base); in rda_gpio_probe()
225 spin_lock_init(&rda_gpio->lock); in rda_gpio_probe()
227 ret = bgpio_init(&rda_gpio->chip, dev, 4, in rda_gpio_probe()
228 rda_gpio->base + RDA_GPIO_VAL, in rda_gpio_probe()
229 rda_gpio->base + RDA_GPIO_SET, in rda_gpio_probe()
230 rda_gpio->base + RDA_GPIO_CLR, in rda_gpio_probe()
231 rda_gpio->base + RDA_GPIO_OEN_SET_OUT, in rda_gpio_probe()
232 rda_gpio->base + RDA_GPIO_OEN_SET_IN, in rda_gpio_probe()
239 rda_gpio->chip.label = dev_name(dev); in rda_gpio_probe()
240 rda_gpio->chip.ngpio = ngpios; in rda_gpio_probe()
241 rda_gpio->chip.base = -1; in rda_gpio_probe()
243 if (rda_gpio->irq >= 0) { in rda_gpio_probe()
244 rda_gpio->irq_chip.name = "rda-gpio", in rda_gpio_probe()
245 rda_gpio->irq_chip.irq_ack = rda_gpio_irq_ack, in rda_gpio_probe()
246 rda_gpio->irq_chip.irq_mask = rda_gpio_irq_mask, in rda_gpio_probe()
247 rda_gpio->irq_chip.irq_unmask = rda_gpio_irq_unmask, in rda_gpio_probe()
248 rda_gpio->irq_chip.irq_set_type = rda_gpio_irq_set_type, in rda_gpio_probe()
249 rda_gpio->irq_chip.flags = IRQCHIP_SKIP_SET_WAKE, in rda_gpio_probe()
251 girq = &rda_gpio->chip.irq; in rda_gpio_probe()
252 girq->chip = &rda_gpio->irq_chip; in rda_gpio_probe()
256 girq->parent_handler_data = rda_gpio; in rda_gpio_probe()
263 girq->parents[0] = rda_gpio->irq; in rda_gpio_probe()
266 platform_set_drvdata(pdev, rda_gpio); in rda_gpio_probe()
268 return devm_gpiochip_add_data(dev, &rda_gpio->chip, rda_gpio); in rda_gpio_probe()