Symbol: plgpio
drivers/pinctrl/spear/pinctrl-plgpio.c
117
struct plgpio *plgpio = gpiochip_get_data(chip);
drivers/pinctrl/spear/pinctrl-plgpio.c
121
if (plgpio->p2o && (plgpio->p2o_regs & PTO_DIR_REG)) {
drivers/pinctrl/spear/pinctrl-plgpio.c
122
offset = plgpio->p2o(offset);
drivers/pinctrl/spear/pinctrl-plgpio.c
127
spin_lock_irqsave(&plgpio->lock, flags);
drivers/pinctrl/spear/pinctrl-plgpio.c
128
plgpio_reg_set(plgpio->regmap, offset, plgpio->regs.dir);
drivers/pinctrl/spear/pinctrl-plgpio.c
129
spin_unlock_irqrestore(&plgpio->lock, flags);
drivers/pinctrl/spear/pinctrl-plgpio.c
137
struct plgpio *plgpio = gpiochip_get_data(chip);
drivers/pinctrl/spear/pinctrl-plgpio.c
142
if (plgpio->p2o && (plgpio->p2o_regs & (PTO_DIR_REG | PTO_WDATA_REG))) {
drivers/pinctrl/spear/pinctrl-plgpio.c
143
tmp = plgpio->p2o(offset);
drivers/pinctrl/spear/pinctrl-plgpio.c
147
if (plgpio->p2o_regs & PTO_DIR_REG)
drivers/pinctrl/spear/pinctrl-plgpio.c
149
if (plgpio->p2o_regs & PTO_WDATA_REG)
drivers/pinctrl/spear/pinctrl-plgpio.c
153
spin_lock_irqsave(&plgpio->lock, flags);
drivers/pinctrl/spear/pinctrl-plgpio.c
155
plgpio_reg_set(plgpio->regmap, wdata_offset,
drivers/pinctrl/spear/pinctrl-plgpio.c
156
plgpio->regs.wdata);
drivers/pinctrl/spear/pinctrl-plgpio.c
158
plgpio_reg_reset(plgpio->regmap, wdata_offset,
drivers/pinctrl/spear/pinctrl-plgpio.c
159
plgpio->regs.wdata);
drivers/pinctrl/spear/pinctrl-plgpio.c
161
plgpio_reg_reset(plgpio->regmap, dir_offset, plgpio->regs.dir);
drivers/pinctrl/spear/pinctrl-plgpio.c
162
spin_unlock_irqrestore(&plgpio->lock, flags);
drivers/pinctrl/spear/pinctrl-plgpio.c
169
struct plgpio *plgpio = gpiochip_get_data(chip);
drivers/pinctrl/spear/pinctrl-plgpio.c
175
if (plgpio->p2o && (plgpio->p2o_regs & PTO_RDATA_REG)) {
drivers/pinctrl/spear/pinctrl-plgpio.c
176
offset = plgpio->p2o(offset);
drivers/pinctrl/spear/pinctrl-plgpio.c
181
return is_plgpio_set(plgpio->regmap, offset, plgpio->regs.rdata);
drivers/pinctrl/spear/pinctrl-plgpio.c
187
struct plgpio *plgpio = gpiochip_get_data(chip);
drivers/pinctrl/spear/pinctrl-plgpio.c
193
if (plgpio->p2o && (plgpio->p2o_regs & PTO_WDATA_REG)) {
drivers/pinctrl/spear/pinctrl-plgpio.c
194
offset = plgpio->p2o(offset);
drivers/pinctrl/spear/pinctrl-plgpio.c
200
plgpio_reg_set(plgpio->regmap, offset, plgpio->regs.wdata);
drivers/pinctrl/spear/pinctrl-plgpio.c
202
plgpio_reg_reset(plgpio->regmap, offset, plgpio->regs.wdata);
drivers/pinctrl/spear/pinctrl-plgpio.c
209
struct plgpio *plgpio = gpiochip_get_data(chip);
drivers/pinctrl/spear/pinctrl-plgpio.c
220
if (!IS_ERR(plgpio->clk)) {
drivers/pinctrl/spear/pinctrl-plgpio.c
221
ret = clk_enable(plgpio->clk);
drivers/pinctrl/spear/pinctrl-plgpio.c
226
if (plgpio->regs.enb == -1)
drivers/pinctrl/spear/pinctrl-plgpio.c
237
if (plgpio->p2o && (plgpio->p2o_regs & PTO_ENB_REG)) {
drivers/pinctrl/spear/pinctrl-plgpio.c
238
offset = plgpio->p2o(offset);
drivers/pinctrl/spear/pinctrl-plgpio.c
245
spin_lock_irqsave(&plgpio->lock, flags);
drivers/pinctrl/spear/pinctrl-plgpio.c
246
plgpio_reg_set(plgpio->regmap, offset, plgpio->regs.enb);
drivers/pinctrl/spear/pinctrl-plgpio.c
247
spin_unlock_irqrestore(&plgpio->lock, flags);
drivers/pinctrl/spear/pinctrl-plgpio.c
251
if (!IS_ERR(plgpio->clk))
drivers/pinctrl/spear/pinctrl-plgpio.c
252
clk_disable(plgpio->clk);
drivers/pinctrl/spear/pinctrl-plgpio.c
260
struct plgpio *plgpio = gpiochip_get_data(chip);
drivers/pinctrl/spear/pinctrl-plgpio.c
266
if (plgpio->regs.enb == -1)
drivers/pinctrl/spear/pinctrl-plgpio.c
270
if (plgpio->p2o && (plgpio->p2o_regs & PTO_ENB_REG)) {
drivers/pinctrl/spear/pinctrl-plgpio.c
271
offset = plgpio->p2o(offset);
drivers/pinctrl/spear/pinctrl-plgpio.c
276
spin_lock_irqsave(&plgpio->lock, flags);
drivers/pinctrl/spear/pinctrl-plgpio.c
277
plgpio_reg_reset(plgpio->regmap, offset, plgpio->regs.enb);
drivers/pinctrl/spear/pinctrl-plgpio.c
278
spin_unlock_irqrestore(&plgpio->lock, flags);
drivers/pinctrl/spear/pinctrl-plgpio.c
281
if (!IS_ERR(plgpio->clk))
drivers/pinctrl/spear/pinctrl-plgpio.c
282
clk_disable(plgpio->clk);
drivers/pinctrl/spear/pinctrl-plgpio.c
291
struct plgpio *plgpio = gpiochip_get_data(gc);
drivers/pinctrl/spear/pinctrl-plgpio.c
296
if (plgpio->p2o && (plgpio->p2o_regs & PTO_IE_REG)) {
drivers/pinctrl/spear/pinctrl-plgpio.c
297
offset = plgpio->p2o(offset);
drivers/pinctrl/spear/pinctrl-plgpio.c
302
spin_lock_irqsave(&plgpio->lock, flags);
drivers/pinctrl/spear/pinctrl-plgpio.c
303
plgpio_reg_set(plgpio->regmap, offset, plgpio->regs.ie);
drivers/pinctrl/spear/pinctrl-plgpio.c
304
spin_unlock_irqrestore(&plgpio->lock, flags);
drivers/pinctrl/spear/pinctrl-plgpio.c
311
struct plgpio *plgpio = gpiochip_get_data(gc);
drivers/pinctrl/spear/pinctrl-plgpio.c
316
if (plgpio->p2o && (plgpio->p2o_regs & PTO_IE_REG)) {
drivers/pinctrl/spear/pinctrl-plgpio.c
317
offset = plgpio->p2o(offset);
drivers/pinctrl/spear/pinctrl-plgpio.c
323
spin_lock_irqsave(&plgpio->lock, flags);
drivers/pinctrl/spear/pinctrl-plgpio.c
324
plgpio_reg_reset(plgpio->regmap, offset, plgpio->regs.ie);
drivers/pinctrl/spear/pinctrl-plgpio.c
325
spin_unlock_irqrestore(&plgpio->lock, flags);
drivers/pinctrl/spear/pinctrl-plgpio.c
331
struct plgpio *plgpio = gpiochip_get_data(gc);
drivers/pinctrl/spear/pinctrl-plgpio.c
336
if (offset >= plgpio->chip.ngpio)
drivers/pinctrl/spear/pinctrl-plgpio.c
339
if (plgpio->regs.eit == -1)
drivers/pinctrl/spear/pinctrl-plgpio.c
347
if (plgpio->regs.eit == -1)
drivers/pinctrl/spear/pinctrl-plgpio.c
350
reg_off = REG_OFFSET(0, plgpio->regs.eit, offset);
drivers/pinctrl/spear/pinctrl-plgpio.c
351
regmap_read(plgpio->regmap, reg_off, &val);
drivers/pinctrl/spear/pinctrl-plgpio.c
355
regmap_write(plgpio->regmap, reg_off, val | (1 << offset));
drivers/pinctrl/spear/pinctrl-plgpio.c
357
regmap_write(plgpio->regmap, reg_off, val & ~(1 << offset));
drivers/pinctrl/spear/pinctrl-plgpio.c
374
struct plgpio *plgpio = gpiochip_get_data(gc);
drivers/pinctrl/spear/pinctrl-plgpio.c
380
count = plgpio->chip.ngpio;
drivers/pinctrl/spear/pinctrl-plgpio.c
386
regmap_read(plgpio->regmap, plgpio->regs.mis +
drivers/pinctrl/spear/pinctrl-plgpio.c
392
regmap_write(plgpio->regmap, plgpio->regs.mis +
drivers/pinctrl/spear/pinctrl-plgpio.c
408
if (plgpio->o2p && (plgpio->p2o_regs & PTO_MIS_REG)) {
drivers/pinctrl/spear/pinctrl-plgpio.c
409
pin = plgpio->o2p(offset);
drivers/pinctrl/spear/pinctrl-plgpio.c
458
static int plgpio_probe_dt(struct platform_device *pdev, struct plgpio *plgpio)
drivers/pinctrl/spear/pinctrl-plgpio.c
465
plgpio->p2o = spear310_p2o;
drivers/pinctrl/spear/pinctrl-plgpio.c
466
plgpio->o2p = spear310_o2p;
drivers/pinctrl/spear/pinctrl-plgpio.c
467
plgpio->p2o_regs = PTO_WDATA_REG | PTO_DIR_REG | PTO_IE_REG |
drivers/pinctrl/spear/pinctrl-plgpio.c
472
plgpio->chip.ngpio = val;
drivers/pinctrl/spear/pinctrl-plgpio.c
479
plgpio->regs.enb = val;
drivers/pinctrl/spear/pinctrl-plgpio.c
481
plgpio->regs.enb = -1;
drivers/pinctrl/spear/pinctrl-plgpio.c
484
plgpio->regs.wdata = val;
drivers/pinctrl/spear/pinctrl-plgpio.c
491
plgpio->regs.dir = val;
drivers/pinctrl/spear/pinctrl-plgpio.c
498
plgpio->regs.ie = val;
drivers/pinctrl/spear/pinctrl-plgpio.c
505
plgpio->regs.rdata = val;
drivers/pinctrl/spear/pinctrl-plgpio.c
512
plgpio->regs.mis = val;
drivers/pinctrl/spear/pinctrl-plgpio.c
519
plgpio->regs.eit = val;
drivers/pinctrl/spear/pinctrl-plgpio.c
521
plgpio->regs.eit = -1;
drivers/pinctrl/spear/pinctrl-plgpio.c
532
struct plgpio *plgpio;
drivers/pinctrl/spear/pinctrl-plgpio.c
535
plgpio = devm_kzalloc(&pdev->dev, sizeof(*plgpio), GFP_KERNEL);
drivers/pinctrl/spear/pinctrl-plgpio.c
536
if (!plgpio)
drivers/pinctrl/spear/pinctrl-plgpio.c
541
plgpio->regmap = device_node_to_regmap(regmap_np);
drivers/pinctrl/spear/pinctrl-plgpio.c
543
if (IS_ERR(plgpio->regmap)) {
drivers/pinctrl/spear/pinctrl-plgpio.c
545
plgpio->regmap);
drivers/pinctrl/spear/pinctrl-plgpio.c
546
return PTR_ERR(plgpio->regmap);
drivers/pinctrl/spear/pinctrl-plgpio.c
549
plgpio->regmap = device_node_to_regmap(pdev->dev.of_node);
drivers/pinctrl/spear/pinctrl-plgpio.c
550
if (IS_ERR(plgpio->regmap)) {
drivers/pinctrl/spear/pinctrl-plgpio.c
552
plgpio->regmap);
drivers/pinctrl/spear/pinctrl-plgpio.c
553
return PTR_ERR(plgpio->regmap);
drivers/pinctrl/spear/pinctrl-plgpio.c
557
ret = plgpio_probe_dt(pdev, plgpio);
drivers/pinctrl/spear/pinctrl-plgpio.c
563
plgpio->clk = devm_clk_get(&pdev->dev, NULL);
drivers/pinctrl/spear/pinctrl-plgpio.c
564
if (IS_ERR(plgpio->clk))
drivers/pinctrl/spear/pinctrl-plgpio.c
568
plgpio->csave_regs = devm_kcalloc(&pdev->dev,
drivers/pinctrl/spear/pinctrl-plgpio.c
569
DIV_ROUND_UP(plgpio->chip.ngpio, MAX_GPIO_PER_REG),
drivers/pinctrl/spear/pinctrl-plgpio.c
570
sizeof(*plgpio->csave_regs),
drivers/pinctrl/spear/pinctrl-plgpio.c
572
if (!plgpio->csave_regs)
drivers/pinctrl/spear/pinctrl-plgpio.c
576
platform_set_drvdata(pdev, plgpio);
drivers/pinctrl/spear/pinctrl-plgpio.c
577
spin_lock_init(&plgpio->lock);
drivers/pinctrl/spear/pinctrl-plgpio.c
579
plgpio->chip.base = -1;
drivers/pinctrl/spear/pinctrl-plgpio.c
580
plgpio->chip.request = plgpio_request;
drivers/pinctrl/spear/pinctrl-plgpio.c
581
plgpio->chip.free = plgpio_free;
drivers/pinctrl/spear/pinctrl-plgpio.c
582
plgpio->chip.direction_input = plgpio_direction_input;
drivers/pinctrl/spear/pinctrl-plgpio.c
583
plgpio->chip.direction_output = plgpio_direction_output;
drivers/pinctrl/spear/pinctrl-plgpio.c
584
plgpio->chip.get = plgpio_get_value;
drivers/pinctrl/spear/pinctrl-plgpio.c
585
plgpio->chip.set = plgpio_set_value;
drivers/pinctrl/spear/pinctrl-plgpio.c
586
plgpio->chip.label = dev_name(&pdev->dev);
drivers/pinctrl/spear/pinctrl-plgpio.c
587
plgpio->chip.parent = &pdev->dev;
drivers/pinctrl/spear/pinctrl-plgpio.c
588
plgpio->chip.owner = THIS_MODULE;
drivers/pinctrl/spear/pinctrl-plgpio.c
590
if (!IS_ERR(plgpio->clk)) {
drivers/pinctrl/spear/pinctrl-plgpio.c
591
ret = clk_prepare(plgpio->clk);
drivers/pinctrl/spear/pinctrl-plgpio.c
602
girq = &plgpio->chip.irq;
drivers/pinctrl/spear/pinctrl-plgpio.c
619
ret = gpiochip_add_data(&plgpio->chip, plgpio);
drivers/pinctrl/spear/pinctrl-plgpio.c
628
if (!IS_ERR(plgpio->clk))
drivers/pinctrl/spear/pinctrl-plgpio.c
629
clk_unprepare(plgpio->clk);
drivers/pinctrl/spear/pinctrl-plgpio.c
637
struct plgpio *plgpio = dev_get_drvdata(dev);
drivers/pinctrl/spear/pinctrl-plgpio.c
638
int i, reg_count = DIV_ROUND_UP(plgpio->chip.ngpio, MAX_GPIO_PER_REG);
drivers/pinctrl/spear/pinctrl-plgpio.c
644
if (plgpio->regs.enb != -1)
drivers/pinctrl/spear/pinctrl-plgpio.c
645
regmap_read(plgpio->regmap, plgpio->regs.enb + off,
drivers/pinctrl/spear/pinctrl-plgpio.c
646
&plgpio->csave_regs[i].enb);
drivers/pinctrl/spear/pinctrl-plgpio.c
647
if (plgpio->regs.eit != -1)
drivers/pinctrl/spear/pinctrl-plgpio.c
648
regmap_read(plgpio->regmap, plgpio->regs.eit + off,
drivers/pinctrl/spear/pinctrl-plgpio.c
649
&plgpio->csave_regs[i].eit);
drivers/pinctrl/spear/pinctrl-plgpio.c
650
regmap_read(plgpio->regmap, plgpio->regs.wdata + off,
drivers/pinctrl/spear/pinctrl-plgpio.c
651
&plgpio->csave_regs[i].wdata);
drivers/pinctrl/spear/pinctrl-plgpio.c
652
regmap_read(plgpio->regmap, plgpio->regs.dir + off,
drivers/pinctrl/spear/pinctrl-plgpio.c
653
&plgpio->csave_regs[i].dir);
drivers/pinctrl/spear/pinctrl-plgpio.c
654
regmap_read(plgpio->regmap, plgpio->regs.ie + off,
drivers/pinctrl/spear/pinctrl-plgpio.c
655
&plgpio->csave_regs[i].ie);
drivers/pinctrl/spear/pinctrl-plgpio.c
669
regmap_read(plgpio->regmap, plgpio->regs.__reg + _off, &_tmp); \
drivers/pinctrl/spear/pinctrl-plgpio.c
671
plgpio->csave_regs[i].__reg = \
drivers/pinctrl/spear/pinctrl-plgpio.c
672
_tmp | (plgpio->csave_regs[i].__reg & _mask); \
drivers/pinctrl/spear/pinctrl-plgpio.c
677
struct plgpio *plgpio = dev_get_drvdata(dev);
drivers/pinctrl/spear/pinctrl-plgpio.c
678
int i, reg_count = DIV_ROUND_UP(plgpio->chip.ngpio, MAX_GPIO_PER_REG);
drivers/pinctrl/spear/pinctrl-plgpio.c
686
mask = (1 << (plgpio->chip.ngpio - i *
drivers/pinctrl/spear/pinctrl-plgpio.c
689
if (plgpio->regs.enb != -1)
drivers/pinctrl/spear/pinctrl-plgpio.c
692
if (plgpio->regs.eit != -1)
drivers/pinctrl/spear/pinctrl-plgpio.c
700
regmap_write(plgpio->regmap, plgpio->regs.wdata + off,
drivers/pinctrl/spear/pinctrl-plgpio.c
701
plgpio->csave_regs[i].wdata);
drivers/pinctrl/spear/pinctrl-plgpio.c
703
regmap_write(plgpio->regmap, plgpio->regs.dir + off,
drivers/pinctrl/spear/pinctrl-plgpio.c
704
plgpio->csave_regs[i].dir);
drivers/pinctrl/spear/pinctrl-plgpio.c
706
if (plgpio->regs.eit != -1)
drivers/pinctrl/spear/pinctrl-plgpio.c
707
regmap_write(plgpio->regmap, plgpio->regs.eit + off,
drivers/pinctrl/spear/pinctrl-plgpio.c
708
plgpio->csave_regs[i].eit);
drivers/pinctrl/spear/pinctrl-plgpio.c
710
regmap_write(plgpio->regmap, plgpio->regs.ie + off,
drivers/pinctrl/spear/pinctrl-plgpio.c
711
plgpio->csave_regs[i].ie);
drivers/pinctrl/spear/pinctrl-plgpio.c
713
if (plgpio->regs.enb != -1)
drivers/pinctrl/spear/pinctrl-plgpio.c
714
regmap_write(plgpio->regmap, plgpio->regs.enb + off,
drivers/pinctrl/spear/pinctrl-plgpio.c
715
plgpio->csave_regs[i].enb);