rda_gpio
struct rda_gpio *rda_gpio = gpiochip_get_data(chip);
status = readl_relaxed(rda_gpio->base + RDA_GPIO_INT_STATUS);
struct rda_gpio *rda_gpio;
rda_gpio = devm_kzalloc(dev, sizeof(*rda_gpio), GFP_KERNEL);
if (!rda_gpio)
rda_gpio->irq = platform_get_irq(pdev, 0);
rda_gpio->base = devm_platform_ioremap_resource(pdev, 0);
if (IS_ERR(rda_gpio->base))
return PTR_ERR(rda_gpio->base);
spin_lock_init(&rda_gpio->lock);
.dat = rda_gpio->base + RDA_GPIO_VAL,
.set = rda_gpio->base + RDA_GPIO_SET,
.clr = rda_gpio->base + RDA_GPIO_CLR,
.dirout = rda_gpio->base + RDA_GPIO_OEN_SET_OUT,
.dirin = rda_gpio->base + RDA_GPIO_OEN_SET_IN,
ret = gpio_generic_chip_init(&rda_gpio->chip, &config);
rda_gpio->chip.gc.label = dev_name(dev);
rda_gpio->chip.gc.ngpio = ngpios;
rda_gpio->chip.gc.base = -1;
if (rda_gpio->irq >= 0) {
girq = &rda_gpio->chip.gc.irq;
girq->parent_handler_data = rda_gpio;
girq->parents[0] = rda_gpio->irq;
platform_set_drvdata(pdev, rda_gpio);
return devm_gpiochip_add_data(dev, &rda_gpio->chip.gc, rda_gpio);
struct rda_gpio *rda_gpio = gpiochip_get_data(chip);
void __iomem *base = rda_gpio->base;
spin_lock_irqsave(&rda_gpio->lock, flags);
spin_unlock_irqrestore(&rda_gpio->lock, flags);
struct rda_gpio *rda_gpio = gpiochip_get_data(chip);
void __iomem *base = rda_gpio->base;
struct rda_gpio *rda_gpio = gpiochip_get_data(chip);
void __iomem *base = rda_gpio->base;