Symbol: pl061
drivers/gpio/gpio-pl061.c
101
writeb(!!value << offset, pl061->base + (BIT(offset + 2)));
drivers/gpio/gpio-pl061.c
102
raw_spin_unlock_irqrestore(&pl061->lock, flags);
drivers/gpio/gpio-pl061.c
109
struct pl061 *pl061 = gpiochip_get_data(gc);
drivers/gpio/gpio-pl061.c
111
return !!readb(pl061->base + (BIT(offset + 2)));
drivers/gpio/gpio-pl061.c
116
struct pl061 *pl061 = gpiochip_get_data(gc);
drivers/gpio/gpio-pl061.c
118
writeb(!!value << offset, pl061->base + (BIT(offset + 2)));
drivers/gpio/gpio-pl061.c
126
struct pl061 *pl061 = gpiochip_get_data(gc);
drivers/gpio/gpio-pl061.c
146
raw_spin_lock_irqsave(&pl061->lock, flags);
drivers/gpio/gpio-pl061.c
148
gpioiev = readb(pl061->base + GPIOIEV);
drivers/gpio/gpio-pl061.c
149
gpiois = readb(pl061->base + GPIOIS);
drivers/gpio/gpio-pl061.c
150
gpioibe = readb(pl061->base + GPIOIBE);
drivers/gpio/gpio-pl061.c
202
writeb(gpiois, pl061->base + GPIOIS);
drivers/gpio/gpio-pl061.c
203
writeb(gpioibe, pl061->base + GPIOIBE);
drivers/gpio/gpio-pl061.c
204
writeb(gpioiev, pl061->base + GPIOIEV);
drivers/gpio/gpio-pl061.c
206
raw_spin_unlock_irqrestore(&pl061->lock, flags);
drivers/gpio/gpio-pl061.c
216
struct pl061 *pl061 = gpiochip_get_data(gc);
drivers/gpio/gpio-pl061.c
221
pending = readb(pl061->base + GPIOMIS);
drivers/gpio/gpio-pl061.c
234
struct pl061 *pl061 = gpiochip_get_data(gc);
drivers/gpio/gpio-pl061.c
238
raw_spin_lock(&pl061->lock);
drivers/gpio/gpio-pl061.c
239
gpioie = readb(pl061->base + GPIOIE) & ~mask;
drivers/gpio/gpio-pl061.c
240
writeb(gpioie, pl061->base + GPIOIE);
drivers/gpio/gpio-pl061.c
241
raw_spin_unlock(&pl061->lock);
drivers/gpio/gpio-pl061.c
249
struct pl061 *pl061 = gpiochip_get_data(gc);
drivers/gpio/gpio-pl061.c
255
raw_spin_lock(&pl061->lock);
drivers/gpio/gpio-pl061.c
256
gpioie = readb(pl061->base + GPIOIE) | mask;
drivers/gpio/gpio-pl061.c
257
writeb(gpioie, pl061->base + GPIOIE);
drivers/gpio/gpio-pl061.c
258
raw_spin_unlock(&pl061->lock);
drivers/gpio/gpio-pl061.c
272
struct pl061 *pl061 = gpiochip_get_data(gc);
drivers/gpio/gpio-pl061.c
275
raw_spin_lock(&pl061->lock);
drivers/gpio/gpio-pl061.c
276
writeb(mask, pl061->base + GPIOIC);
drivers/gpio/gpio-pl061.c
277
raw_spin_unlock(&pl061->lock);
drivers/gpio/gpio-pl061.c
283
struct pl061 *pl061 = gpiochip_get_data(gc);
drivers/gpio/gpio-pl061.c
285
return irq_set_irq_wake(pl061->parent_irq, state);
drivers/gpio/gpio-pl061.c
309
struct pl061 *pl061;
drivers/gpio/gpio-pl061.c
313
pl061 = devm_kzalloc(dev, sizeof(*pl061), GFP_KERNEL);
drivers/gpio/gpio-pl061.c
314
if (pl061 == NULL)
drivers/gpio/gpio-pl061.c
317
pl061->base = devm_ioremap_resource(dev, &adev->res);
drivers/gpio/gpio-pl061.c
318
if (IS_ERR(pl061->base))
drivers/gpio/gpio-pl061.c
319
return PTR_ERR(pl061->base);
drivers/gpio/gpio-pl061.c
321
raw_spin_lock_init(&pl061->lock);
drivers/gpio/gpio-pl061.c
322
pl061->gc.request = gpiochip_generic_request;
drivers/gpio/gpio-pl061.c
323
pl061->gc.free = gpiochip_generic_free;
drivers/gpio/gpio-pl061.c
324
pl061->gc.base = -1;
drivers/gpio/gpio-pl061.c
325
pl061->gc.get_direction = pl061_get_direction;
drivers/gpio/gpio-pl061.c
326
pl061->gc.direction_input = pl061_direction_input;
drivers/gpio/gpio-pl061.c
327
pl061->gc.direction_output = pl061_direction_output;
drivers/gpio/gpio-pl061.c
328
pl061->gc.get = pl061_get_value;
drivers/gpio/gpio-pl061.c
329
pl061->gc.set = pl061_set_value;
drivers/gpio/gpio-pl061.c
330
pl061->gc.ngpio = PL061_GPIO_NR;
drivers/gpio/gpio-pl061.c
331
pl061->gc.label = dev_name(dev);
drivers/gpio/gpio-pl061.c
332
pl061->gc.parent = dev;
drivers/gpio/gpio-pl061.c
333
pl061->gc.owner = THIS_MODULE;
drivers/gpio/gpio-pl061.c
338
writeb(0, pl061->base + GPIOIE); /* disable irqs */
drivers/gpio/gpio-pl061.c
342
pl061->parent_irq = irq;
drivers/gpio/gpio-pl061.c
344
girq = &pl061->gc.irq;
drivers/gpio/gpio-pl061.c
356
ret = devm_gpiochip_add_data(dev, &pl061->gc, pl061);
drivers/gpio/gpio-pl061.c
360
amba_set_drvdata(adev, pl061);
drivers/gpio/gpio-pl061.c
368
struct pl061 *pl061 = dev_get_drvdata(dev);
drivers/gpio/gpio-pl061.c
371
pl061->csave_regs.gpio_data = 0;
drivers/gpio/gpio-pl061.c
372
pl061->csave_regs.gpio_dir = readb(pl061->base + GPIODIR);
drivers/gpio/gpio-pl061.c
373
pl061->csave_regs.gpio_is = readb(pl061->base + GPIOIS);
drivers/gpio/gpio-pl061.c
374
pl061->csave_regs.gpio_ibe = readb(pl061->base + GPIOIBE);
drivers/gpio/gpio-pl061.c
375
pl061->csave_regs.gpio_iev = readb(pl061->base + GPIOIEV);
drivers/gpio/gpio-pl061.c
376
pl061->csave_regs.gpio_ie = readb(pl061->base + GPIOIE);
drivers/gpio/gpio-pl061.c
379
if (pl061->csave_regs.gpio_dir & (BIT(offset)))
drivers/gpio/gpio-pl061.c
380
pl061->csave_regs.gpio_data |=
drivers/gpio/gpio-pl061.c
381
pl061_get_value(&pl061->gc, offset) << offset;
drivers/gpio/gpio-pl061.c
389
struct pl061 *pl061 = dev_get_drvdata(dev);
drivers/gpio/gpio-pl061.c
393
if (pl061->csave_regs.gpio_dir & (BIT(offset)))
drivers/gpio/gpio-pl061.c
394
pl061_direction_output(&pl061->gc, offset,
drivers/gpio/gpio-pl061.c
395
pl061->csave_regs.gpio_data &
drivers/gpio/gpio-pl061.c
398
pl061_direction_input(&pl061->gc, offset);
drivers/gpio/gpio-pl061.c
401
writeb(pl061->csave_regs.gpio_is, pl061->base + GPIOIS);
drivers/gpio/gpio-pl061.c
402
writeb(pl061->csave_regs.gpio_ibe, pl061->base + GPIOIBE);
drivers/gpio/gpio-pl061.c
403
writeb(pl061->csave_regs.gpio_iev, pl061->base + GPIOIEV);
drivers/gpio/gpio-pl061.c
404
writeb(pl061->csave_regs.gpio_ie, pl061->base + GPIOIE);
drivers/gpio/gpio-pl061.c
61
struct pl061 *pl061 = gpiochip_get_data(gc);
drivers/gpio/gpio-pl061.c
63
if (readb(pl061->base + GPIODIR) & BIT(offset))
drivers/gpio/gpio-pl061.c
71
struct pl061 *pl061 = gpiochip_get_data(gc);
drivers/gpio/gpio-pl061.c
75
raw_spin_lock_irqsave(&pl061->lock, flags);
drivers/gpio/gpio-pl061.c
76
gpiodir = readb(pl061->base + GPIODIR);
drivers/gpio/gpio-pl061.c
78
writeb(gpiodir, pl061->base + GPIODIR);
drivers/gpio/gpio-pl061.c
79
raw_spin_unlock_irqrestore(&pl061->lock, flags);
drivers/gpio/gpio-pl061.c
87
struct pl061 *pl061 = gpiochip_get_data(gc);
drivers/gpio/gpio-pl061.c
91
raw_spin_lock_irqsave(&pl061->lock, flags);
drivers/gpio/gpio-pl061.c
92
writeb(!!value << offset, pl061->base + (BIT(offset + 2)));
drivers/gpio/gpio-pl061.c
93
gpiodir = readb(pl061->base + GPIODIR);
drivers/gpio/gpio-pl061.c
95
writeb(gpiodir, pl061->base + GPIODIR);