pl061 64 drivers/gpio/gpio-pl061.c struct pl061 *pl061 = gpiochip_get_data(gc); pl061 66 drivers/gpio/gpio-pl061.c return !(readb(pl061->base + GPIODIR) & BIT(offset)); pl061 71 drivers/gpio/gpio-pl061.c struct pl061 *pl061 = gpiochip_get_data(gc); pl061 75 drivers/gpio/gpio-pl061.c raw_spin_lock_irqsave(&pl061->lock, flags); pl061 76 drivers/gpio/gpio-pl061.c gpiodir = readb(pl061->base + GPIODIR); pl061 78 drivers/gpio/gpio-pl061.c writeb(gpiodir, pl061->base + GPIODIR); pl061 79 drivers/gpio/gpio-pl061.c raw_spin_unlock_irqrestore(&pl061->lock, flags); pl061 87 drivers/gpio/gpio-pl061.c struct pl061 *pl061 = gpiochip_get_data(gc); pl061 91 drivers/gpio/gpio-pl061.c raw_spin_lock_irqsave(&pl061->lock, flags); pl061 92 drivers/gpio/gpio-pl061.c writeb(!!value << offset, pl061->base + (BIT(offset + 2))); pl061 93 drivers/gpio/gpio-pl061.c gpiodir = readb(pl061->base + GPIODIR); pl061 95 drivers/gpio/gpio-pl061.c writeb(gpiodir, pl061->base + GPIODIR); pl061 101 drivers/gpio/gpio-pl061.c writeb(!!value << offset, pl061->base + (BIT(offset + 2))); pl061 102 drivers/gpio/gpio-pl061.c raw_spin_unlock_irqrestore(&pl061->lock, flags); pl061 109 drivers/gpio/gpio-pl061.c struct pl061 *pl061 = gpiochip_get_data(gc); pl061 111 drivers/gpio/gpio-pl061.c return !!readb(pl061->base + (BIT(offset + 2))); pl061 116 drivers/gpio/gpio-pl061.c struct pl061 *pl061 = gpiochip_get_data(gc); pl061 118 drivers/gpio/gpio-pl061.c writeb(!!value << offset, pl061->base + (BIT(offset + 2))); pl061 124 drivers/gpio/gpio-pl061.c struct pl061 *pl061 = gpiochip_get_data(gc); pl061 144 drivers/gpio/gpio-pl061.c raw_spin_lock_irqsave(&pl061->lock, flags); pl061 146 drivers/gpio/gpio-pl061.c gpioiev = readb(pl061->base + GPIOIEV); pl061 147 drivers/gpio/gpio-pl061.c gpiois = readb(pl061->base + GPIOIS); pl061 148 drivers/gpio/gpio-pl061.c gpioibe = readb(pl061->base + GPIOIBE); pl061 200 drivers/gpio/gpio-pl061.c writeb(gpiois, pl061->base + GPIOIS); pl061 201 drivers/gpio/gpio-pl061.c writeb(gpioibe, pl061->base + GPIOIBE); pl061 202 drivers/gpio/gpio-pl061.c writeb(gpioiev, pl061->base + GPIOIEV); pl061 204 drivers/gpio/gpio-pl061.c raw_spin_unlock_irqrestore(&pl061->lock, flags); pl061 214 drivers/gpio/gpio-pl061.c struct pl061 *pl061 = gpiochip_get_data(gc); pl061 219 drivers/gpio/gpio-pl061.c pending = readb(pl061->base + GPIOMIS); pl061 232 drivers/gpio/gpio-pl061.c struct pl061 *pl061 = gpiochip_get_data(gc); pl061 236 drivers/gpio/gpio-pl061.c raw_spin_lock(&pl061->lock); pl061 237 drivers/gpio/gpio-pl061.c gpioie = readb(pl061->base + GPIOIE) & ~mask; pl061 238 drivers/gpio/gpio-pl061.c writeb(gpioie, pl061->base + GPIOIE); pl061 239 drivers/gpio/gpio-pl061.c raw_spin_unlock(&pl061->lock); pl061 245 drivers/gpio/gpio-pl061.c struct pl061 *pl061 = gpiochip_get_data(gc); pl061 249 drivers/gpio/gpio-pl061.c raw_spin_lock(&pl061->lock); pl061 250 drivers/gpio/gpio-pl061.c gpioie = readb(pl061->base + GPIOIE) | mask; pl061 251 drivers/gpio/gpio-pl061.c writeb(gpioie, pl061->base + GPIOIE); pl061 252 drivers/gpio/gpio-pl061.c raw_spin_unlock(&pl061->lock); pl061 266 drivers/gpio/gpio-pl061.c struct pl061 *pl061 = gpiochip_get_data(gc); pl061 269 drivers/gpio/gpio-pl061.c raw_spin_lock(&pl061->lock); pl061 270 drivers/gpio/gpio-pl061.c writeb(mask, pl061->base + GPIOIC); pl061 271 drivers/gpio/gpio-pl061.c raw_spin_unlock(&pl061->lock); pl061 277 drivers/gpio/gpio-pl061.c struct pl061 *pl061 = gpiochip_get_data(gc); pl061 279 drivers/gpio/gpio-pl061.c return irq_set_irq_wake(pl061->parent_irq, state); pl061 285 drivers/gpio/gpio-pl061.c struct pl061 *pl061; pl061 289 drivers/gpio/gpio-pl061.c pl061 = devm_kzalloc(dev, sizeof(*pl061), GFP_KERNEL); pl061 290 drivers/gpio/gpio-pl061.c if (pl061 == NULL) pl061 293 drivers/gpio/gpio-pl061.c pl061->base = devm_ioremap_resource(dev, &adev->res); pl061 294 drivers/gpio/gpio-pl061.c if (IS_ERR(pl061->base)) pl061 295 drivers/gpio/gpio-pl061.c return PTR_ERR(pl061->base); pl061 297 drivers/gpio/gpio-pl061.c raw_spin_lock_init(&pl061->lock); pl061 299 drivers/gpio/gpio-pl061.c pl061->gc.request = gpiochip_generic_request; pl061 300 drivers/gpio/gpio-pl061.c pl061->gc.free = gpiochip_generic_free; pl061 303 drivers/gpio/gpio-pl061.c pl061->gc.base = -1; pl061 304 drivers/gpio/gpio-pl061.c pl061->gc.get_direction = pl061_get_direction; pl061 305 drivers/gpio/gpio-pl061.c pl061->gc.direction_input = pl061_direction_input; pl061 306 drivers/gpio/gpio-pl061.c pl061->gc.direction_output = pl061_direction_output; pl061 307 drivers/gpio/gpio-pl061.c pl061->gc.get = pl061_get_value; pl061 308 drivers/gpio/gpio-pl061.c pl061->gc.set = pl061_set_value; pl061 309 drivers/gpio/gpio-pl061.c pl061->gc.ngpio = PL061_GPIO_NR; pl061 310 drivers/gpio/gpio-pl061.c pl061->gc.label = dev_name(dev); pl061 311 drivers/gpio/gpio-pl061.c pl061->gc.parent = dev; pl061 312 drivers/gpio/gpio-pl061.c pl061->gc.owner = THIS_MODULE; pl061 317 drivers/gpio/gpio-pl061.c pl061->irq_chip.name = dev_name(dev); pl061 318 drivers/gpio/gpio-pl061.c pl061->irq_chip.irq_ack = pl061_irq_ack; pl061 319 drivers/gpio/gpio-pl061.c pl061->irq_chip.irq_mask = pl061_irq_mask; pl061 320 drivers/gpio/gpio-pl061.c pl061->irq_chip.irq_unmask = pl061_irq_unmask; pl061 321 drivers/gpio/gpio-pl061.c pl061->irq_chip.irq_set_type = pl061_irq_type; pl061 322 drivers/gpio/gpio-pl061.c pl061->irq_chip.irq_set_wake = pl061_irq_set_wake; pl061 324 drivers/gpio/gpio-pl061.c writeb(0, pl061->base + GPIOIE); /* disable irqs */ pl061 330 drivers/gpio/gpio-pl061.c pl061->parent_irq = irq; pl061 332 drivers/gpio/gpio-pl061.c girq = &pl061->gc.irq; pl061 333 drivers/gpio/gpio-pl061.c girq->chip = &pl061->irq_chip; pl061 344 drivers/gpio/gpio-pl061.c ret = devm_gpiochip_add_data(dev, &pl061->gc, pl061); pl061 348 drivers/gpio/gpio-pl061.c amba_set_drvdata(adev, pl061); pl061 357 drivers/gpio/gpio-pl061.c struct pl061 *pl061 = dev_get_drvdata(dev); pl061 360 drivers/gpio/gpio-pl061.c pl061->csave_regs.gpio_data = 0; pl061 361 drivers/gpio/gpio-pl061.c pl061->csave_regs.gpio_dir = readb(pl061->base + GPIODIR); pl061 362 drivers/gpio/gpio-pl061.c pl061->csave_regs.gpio_is = readb(pl061->base + GPIOIS); pl061 363 drivers/gpio/gpio-pl061.c pl061->csave_regs.gpio_ibe = readb(pl061->base + GPIOIBE); pl061 364 drivers/gpio/gpio-pl061.c pl061->csave_regs.gpio_iev = readb(pl061->base + GPIOIEV); pl061 365 drivers/gpio/gpio-pl061.c pl061->csave_regs.gpio_ie = readb(pl061->base + GPIOIE); pl061 368 drivers/gpio/gpio-pl061.c if (pl061->csave_regs.gpio_dir & (BIT(offset))) pl061 369 drivers/gpio/gpio-pl061.c pl061->csave_regs.gpio_data |= pl061 370 drivers/gpio/gpio-pl061.c pl061_get_value(&pl061->gc, offset) << offset; pl061 378 drivers/gpio/gpio-pl061.c struct pl061 *pl061 = dev_get_drvdata(dev); pl061 382 drivers/gpio/gpio-pl061.c if (pl061->csave_regs.gpio_dir & (BIT(offset))) pl061 383 drivers/gpio/gpio-pl061.c pl061_direction_output(&pl061->gc, offset, pl061 384 drivers/gpio/gpio-pl061.c pl061->csave_regs.gpio_data & pl061 387 drivers/gpio/gpio-pl061.c pl061_direction_input(&pl061->gc, offset); pl061 390 drivers/gpio/gpio-pl061.c writeb(pl061->csave_regs.gpio_is, pl061->base + GPIOIS); pl061 391 drivers/gpio/gpio-pl061.c writeb(pl061->csave_regs.gpio_ibe, pl061->base + GPIOIBE); pl061 392 drivers/gpio/gpio-pl061.c writeb(pl061->csave_regs.gpio_iev, pl061->base + GPIOIEV); pl061 393 drivers/gpio/gpio-pl061.c writeb(pl061->csave_regs.gpio_ie, pl061->base + GPIOIE);