Lines Matching refs:gpio_dev
43 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_get_direction() local
45 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_get_direction()
46 pin_reg = readl(gpio_dev->base + offset * 4); in amd_gpio_get_direction()
47 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_get_direction()
56 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_direction_input() local
58 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_direction_input()
59 pin_reg = readl(gpio_dev->base + offset * 4); in amd_gpio_direction_input()
61 writel(pin_reg, gpio_dev->base + offset * 4); in amd_gpio_direction_input()
62 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_direction_input()
72 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_direction_output() local
74 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_direction_output()
75 pin_reg = readl(gpio_dev->base + offset * 4); in amd_gpio_direction_output()
81 writel(pin_reg, gpio_dev->base + offset * 4); in amd_gpio_direction_output()
82 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_direction_output()
91 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_get_value() local
93 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_get_value()
94 pin_reg = readl(gpio_dev->base + offset * 4); in amd_gpio_get_value()
95 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_get_value()
104 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_set_value() local
106 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_set_value()
107 pin_reg = readl(gpio_dev->base + offset * 4); in amd_gpio_set_value()
112 writel(pin_reg, gpio_dev->base + offset * 4); in amd_gpio_set_value()
113 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_set_value()
123 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_set_debounce() local
125 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_set_debounce()
126 pin_reg = readl(gpio_dev->base + offset * 4); in amd_gpio_set_debounce()
175 writel(pin_reg, gpio_dev->base + offset * 4); in amd_gpio_set_debounce()
176 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_set_debounce()
199 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_dbg_show() local
215 for (bank = 0; bank < gpio_dev->hwbank_num; bank++) { in amd_gpio_dbg_show()
241 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_dbg_show()
242 pin_reg = readl(gpio_dev->base + i * 4); in amd_gpio_dbg_show()
243 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_dbg_show()
346 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_irq_enable() local
348 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_irq_enable()
349 pin_reg = readl(gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_enable()
352 writel(pin_reg, gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_enable()
353 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_irq_enable()
361 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_irq_disable() local
363 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_irq_disable()
364 pin_reg = readl(gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_disable()
367 writel(pin_reg, gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_disable()
368 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_irq_disable()
376 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_irq_mask() local
378 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_irq_mask()
379 pin_reg = readl(gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_mask()
381 writel(pin_reg, gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_mask()
382 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_irq_mask()
390 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_irq_unmask() local
392 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_irq_unmask()
393 pin_reg = readl(gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_unmask()
395 writel(pin_reg, gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_unmask()
396 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_irq_unmask()
404 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_irq_eoi() local
406 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_irq_eoi()
407 reg = readl(gpio_dev->base + WAKE_INT_MASTER_REG); in amd_gpio_irq_eoi()
409 writel(reg, gpio_dev->base + WAKE_INT_MASTER_REG); in amd_gpio_irq_eoi()
410 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_irq_eoi()
419 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_irq_set_type() local
421 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_irq_set_type()
422 pin_reg = readl(gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_set_type()
480 dev_err(&gpio_dev->pdev->dev, "Invalid type value\n"); in amd_gpio_irq_set_type()
504 writel(pin_reg_irq_en, gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_set_type()
505 while ((readl(gpio_dev->base + (d->hwirq)*4) & mask) != mask) in amd_gpio_irq_set_type()
507 writel(pin_reg, gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_set_type()
508 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_irq_set_type()
538 struct amd_gpio *gpio_dev = dev_id; in amd_gpio_irq_handler() local
539 struct gpio_chip *gc = &gpio_dev->gc; in amd_gpio_irq_handler()
548 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_irq_handler()
549 status = readl(gpio_dev->base + WAKE_INT_STATUS_REG1); in amd_gpio_irq_handler()
551 status |= readl(gpio_dev->base + WAKE_INT_STATUS_REG0); in amd_gpio_irq_handler()
552 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_irq_handler()
556 regs = gpio_dev->base; in amd_gpio_irq_handler()
580 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_irq_handler()
584 dev_dbg(&gpio_dev->pdev->dev, in amd_gpio_irq_handler()
589 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_irq_handler()
595 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_irq_handler()
596 regval = readl(gpio_dev->base + WAKE_INT_MASTER_REG); in amd_gpio_irq_handler()
598 writel(regval, gpio_dev->base + WAKE_INT_MASTER_REG); in amd_gpio_irq_handler()
599 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_irq_handler()
606 struct amd_gpio *gpio_dev = pinctrl_dev_get_drvdata(pctldev); in amd_get_groups_count() local
608 return gpio_dev->ngroups; in amd_get_groups_count()
614 struct amd_gpio *gpio_dev = pinctrl_dev_get_drvdata(pctldev); in amd_get_group_name() local
616 return gpio_dev->groups[group].name; in amd_get_group_name()
624 struct amd_gpio *gpio_dev = pinctrl_dev_get_drvdata(pctldev); in amd_get_group_pins() local
626 *pins = gpio_dev->groups[group].pins; in amd_get_group_pins()
627 *num_pins = gpio_dev->groups[group].npins; in amd_get_group_pins()
648 struct amd_gpio *gpio_dev = pinctrl_dev_get_drvdata(pctldev); in amd_pinconf_get() local
651 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_pinconf_get()
652 pin_reg = readl(gpio_dev->base + pin*4); in amd_pinconf_get()
653 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_pinconf_get()
672 dev_err(&gpio_dev->pdev->dev, "Invalid config param %04x\n", in amd_pinconf_get()
691 struct amd_gpio *gpio_dev = pinctrl_dev_get_drvdata(pctldev); in amd_pinconf_set() local
693 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_pinconf_set()
697 pin_reg = readl(gpio_dev->base + pin*4); in amd_pinconf_set()
725 dev_err(&gpio_dev->pdev->dev, in amd_pinconf_set()
730 writel(pin_reg, gpio_dev->base + pin*4); in amd_pinconf_set()
732 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_pinconf_set()
781 static bool amd_gpio_should_save(struct amd_gpio *gpio_dev, unsigned int pin) in amd_gpio_should_save() argument
783 const struct pin_desc *pd = pin_desc_get(gpio_dev->pctrl, pin); in amd_gpio_should_save()
793 gpiochip_line_is_irq(&gpio_dev->gc, pin)) in amd_gpio_should_save()
801 struct amd_gpio *gpio_dev = dev_get_drvdata(dev); in amd_gpio_suspend() local
802 struct pinctrl_desc *desc = gpio_dev->pctrl->desc; in amd_gpio_suspend()
808 if (!amd_gpio_should_save(gpio_dev, pin)) in amd_gpio_suspend()
811 gpio_dev->saved_regs[i] = readl(gpio_dev->base + pin*4); in amd_gpio_suspend()
819 struct amd_gpio *gpio_dev = dev_get_drvdata(dev); in amd_gpio_resume() local
820 struct pinctrl_desc *desc = gpio_dev->pctrl->desc; in amd_gpio_resume()
826 if (!amd_gpio_should_save(gpio_dev, pin)) in amd_gpio_resume()
829 writel(gpio_dev->saved_regs[i], gpio_dev->base + pin*4); in amd_gpio_resume()
854 struct amd_gpio *gpio_dev; in amd_gpio_probe() local
856 gpio_dev = devm_kzalloc(&pdev->dev, in amd_gpio_probe()
858 if (!gpio_dev) in amd_gpio_probe()
861 raw_spin_lock_init(&gpio_dev->lock); in amd_gpio_probe()
869 gpio_dev->base = devm_ioremap_nocache(&pdev->dev, res->start, in amd_gpio_probe()
871 if (!gpio_dev->base) in amd_gpio_probe()
879 gpio_dev->saved_regs = devm_kcalloc(&pdev->dev, amd_pinctrl_desc.npins, in amd_gpio_probe()
880 sizeof(*gpio_dev->saved_regs), in amd_gpio_probe()
882 if (!gpio_dev->saved_regs) in amd_gpio_probe()
886 gpio_dev->pdev = pdev; in amd_gpio_probe()
887 gpio_dev->gc.get_direction = amd_gpio_get_direction; in amd_gpio_probe()
888 gpio_dev->gc.direction_input = amd_gpio_direction_input; in amd_gpio_probe()
889 gpio_dev->gc.direction_output = amd_gpio_direction_output; in amd_gpio_probe()
890 gpio_dev->gc.get = amd_gpio_get_value; in amd_gpio_probe()
891 gpio_dev->gc.set = amd_gpio_set_value; in amd_gpio_probe()
892 gpio_dev->gc.set_config = amd_gpio_set_config; in amd_gpio_probe()
893 gpio_dev->gc.dbg_show = amd_gpio_dbg_show; in amd_gpio_probe()
895 gpio_dev->gc.base = -1; in amd_gpio_probe()
896 gpio_dev->gc.label = pdev->name; in amd_gpio_probe()
897 gpio_dev->gc.owner = THIS_MODULE; in amd_gpio_probe()
898 gpio_dev->gc.parent = &pdev->dev; in amd_gpio_probe()
899 gpio_dev->gc.ngpio = resource_size(res) / 4; in amd_gpio_probe()
901 gpio_dev->gc.of_node = pdev->dev.of_node; in amd_gpio_probe()
904 gpio_dev->hwbank_num = gpio_dev->gc.ngpio / 64; in amd_gpio_probe()
905 gpio_dev->groups = kerncz_groups; in amd_gpio_probe()
906 gpio_dev->ngroups = ARRAY_SIZE(kerncz_groups); in amd_gpio_probe()
909 gpio_dev->pctrl = devm_pinctrl_register(&pdev->dev, &amd_pinctrl_desc, in amd_gpio_probe()
910 gpio_dev); in amd_gpio_probe()
911 if (IS_ERR(gpio_dev->pctrl)) { in amd_gpio_probe()
913 return PTR_ERR(gpio_dev->pctrl); in amd_gpio_probe()
916 ret = gpiochip_add_data(&gpio_dev->gc, gpio_dev); in amd_gpio_probe()
920 ret = gpiochip_add_pin_range(&gpio_dev->gc, dev_name(&pdev->dev), in amd_gpio_probe()
921 0, 0, gpio_dev->gc.ngpio); in amd_gpio_probe()
927 ret = gpiochip_irqchip_add(&gpio_dev->gc, in amd_gpio_probe()
939 IRQF_SHARED, KBUILD_MODNAME, gpio_dev); in amd_gpio_probe()
943 platform_set_drvdata(pdev, gpio_dev); in amd_gpio_probe()
949 gpiochip_remove(&gpio_dev->gc); in amd_gpio_probe()
956 struct amd_gpio *gpio_dev; in amd_gpio_remove() local
958 gpio_dev = platform_get_drvdata(pdev); in amd_gpio_remove()
960 gpiochip_remove(&gpio_dev->gc); in amd_gpio_remove()