Lines Matching refs:gpio

10 #include <linux/gpio/driver.h>
104 static void __iomem *bank_reg(struct aspeed_sgpio *gpio,
110 return gpio->base + bank->val_regs + GPIO_VAL_VALUE;
112 return gpio->base + bank->rdata_reg;
114 return gpio->base + bank->irq_regs + GPIO_IRQ_ENABLE;
116 return gpio->base + bank->irq_regs + GPIO_IRQ_TYPE0;
118 return gpio->base + bank->irq_regs + GPIO_IRQ_TYPE1;
120 return gpio->base + bank->irq_regs + GPIO_IRQ_TYPE2;
122 return gpio->base + bank->irq_regs + GPIO_IRQ_STATUS;
124 return gpio->base + bank->tolerance_regs;
171 struct aspeed_sgpio *gpio = gpiochip_get_data(gc);
177 raw_spin_lock_irqsave(&gpio->lock, flags);
180 rc = !!(ioread32(bank_reg(gpio, bank, reg)) & GPIO_BIT(offset));
182 raw_spin_unlock_irqrestore(&gpio->lock, flags);
189 struct aspeed_sgpio *gpio = gpiochip_get_data(gc);
199 addr_r = bank_reg(gpio, bank, reg_rdata);
200 addr_w = bank_reg(gpio, bank, reg_val);
216 struct aspeed_sgpio *gpio = gpiochip_get_data(gc);
219 raw_spin_lock_irqsave(&gpio->lock, flags);
223 raw_spin_unlock_irqrestore(&gpio->lock, flags);
233 struct aspeed_sgpio *gpio = gpiochip_get_data(gc);
240 raw_spin_lock_irqsave(&gpio->lock, flags);
242 raw_spin_unlock_irqrestore(&gpio->lock, flags);
253 struct aspeed_sgpio **gpio,
263 *gpio = internal;
271 struct aspeed_sgpio *gpio;
277 irqd_to_aspeed_sgpio_data(d, &gpio, &bank, &bit, &offset);
279 status_addr = bank_reg(gpio, bank, reg_irq_status);
281 raw_spin_lock_irqsave(&gpio->lock, flags);
285 raw_spin_unlock_irqrestore(&gpio->lock, flags);
291 struct aspeed_sgpio *gpio;
297 irqd_to_aspeed_sgpio_data(d, &gpio, &bank, &bit, &offset);
298 addr = bank_reg(gpio, bank, reg_irq_enable);
302 gpiochip_enable_irq(&gpio->chip, irqd_to_hwirq(d));
304 raw_spin_lock_irqsave(&gpio->lock, flags);
314 raw_spin_unlock_irqrestore(&gpio->lock, flags);
318 gpiochip_disable_irq(&gpio->chip, irqd_to_hwirq(d));
341 struct aspeed_sgpio *gpio;
346 irqd_to_aspeed_sgpio_data(d, &gpio, &bank, &bit, &offset);
369 raw_spin_lock_irqsave(&gpio->lock, flags);
371 addr = bank_reg(gpio, bank, reg_irq_type0);
376 addr = bank_reg(gpio, bank, reg_irq_type1);
381 addr = bank_reg(gpio, bank, reg_irq_type2);
386 raw_spin_unlock_irqrestore(&gpio->lock, flags);
418 struct aspeed_sgpio *gpio;
422 irqd_to_aspeed_sgpio_data(d, &gpio, &bank, &bit, &offset);
423 seq_printf(p, dev_name(gpio->dev));
436 static int aspeed_sgpio_setup_irqs(struct aspeed_sgpio *gpio,
447 gpio->irq = rc;
453 iowrite32(0x00000000, bank_reg(gpio, bank, reg_irq_enable));
455 iowrite32(0xffffffff, bank_reg(gpio, bank, reg_irq_status));
458 irq = &gpio->chip.irq;
464 irq->parent_handler_data = gpio;
465 irq->parents = &gpio->irq;
472 iowrite32(0x00000000, bank_reg(gpio, bank, reg_irq_type0));
474 iowrite32(0x00000000, bank_reg(gpio, bank, reg_irq_type1));
476 iowrite32(0x00000000, bank_reg(gpio, bank, reg_irq_type2));
489 struct aspeed_sgpio *gpio = gpiochip_get_data(chip);
494 reg = bank_reg(gpio, to_bank(offset), reg_tolerance);
496 raw_spin_lock_irqsave(&gpio->lock, flags);
507 raw_spin_unlock_irqrestore(&gpio->lock, flags);
541 struct aspeed_sgpio *gpio;
545 gpio = devm_kzalloc(&pdev->dev, sizeof(*gpio), GFP_KERNEL);
546 if (!gpio)
549 gpio->base = devm_platform_ioremap_resource(pdev, 0);
550 if (IS_ERR(gpio->base))
551 return PTR_ERR(gpio->base);
553 gpio->dev = &pdev->dev;
577 gpio->pclk = devm_clk_get(&pdev->dev, NULL);
578 if (IS_ERR(gpio->pclk)) {
580 return PTR_ERR(gpio->pclk);
583 apb_freq = clk_get_rate(gpio->pclk);
604 ASPEED_SGPIO_ENABLE, gpio->base + ASPEED_SGPIO_CTRL);
606 raw_spin_lock_init(&gpio->lock);
608 gpio->chip.parent = &pdev->dev;
609 gpio->chip.ngpio = nr_gpios * 2;
610 gpio->chip.init_valid_mask = aspeed_sgpio_init_valid_mask;
611 gpio->chip.direction_input = aspeed_sgpio_dir_in;
612 gpio->chip.direction_output = aspeed_sgpio_dir_out;
613 gpio->chip.get_direction = aspeed_sgpio_get_direction;
614 gpio->chip.request = NULL;
615 gpio->chip.free = NULL;
616 gpio->chip.get = aspeed_sgpio_get;
617 gpio->chip.set = aspeed_sgpio_set;
618 gpio->chip.set_config = aspeed_sgpio_set_config;
619 gpio->chip.label = dev_name(&pdev->dev);
620 gpio->chip.base = -1;
622 aspeed_sgpio_setup_irqs(gpio, pdev);
624 rc = devm_gpiochip_add_data(&pdev->dev, &gpio->chip, gpio);