Lines Matching refs:gpio_dev

47 	struct amd_gpio *gpio_dev = gpiochip_get_data(gc);  in amd_gpio_get_direction()  local
49 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_get_direction()
50 pin_reg = readl(gpio_dev->base + offset * 4); in amd_gpio_get_direction()
51 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_get_direction()
60 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_direction_input() local
62 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_direction_input()
63 pin_reg = readl(gpio_dev->base + offset * 4); in amd_gpio_direction_input()
65 writel(pin_reg, gpio_dev->base + offset * 4); in amd_gpio_direction_input()
66 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_direction_input()
76 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_direction_output() local
78 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_direction_output()
79 pin_reg = readl(gpio_dev->base + offset * 4); in amd_gpio_direction_output()
85 writel(pin_reg, gpio_dev->base + offset * 4); in amd_gpio_direction_output()
86 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_direction_output()
95 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_get_value() local
97 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_get_value()
98 pin_reg = readl(gpio_dev->base + offset * 4); in amd_gpio_get_value()
99 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_get_value()
108 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_set_value() local
110 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_set_value()
111 pin_reg = readl(gpio_dev->base + offset * 4); in amd_gpio_set_value()
116 writel(pin_reg, gpio_dev->base + offset * 4); in amd_gpio_set_value()
117 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_set_value()
127 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_set_debounce() local
129 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_set_debounce()
130 pin_reg = readl(gpio_dev->base + offset * 4); in amd_gpio_set_debounce()
179 writel(pin_reg, gpio_dev->base + offset * 4); in amd_gpio_set_debounce()
180 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_set_debounce()
203 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_dbg_show() local
219 for (bank = 0; bank < gpio_dev->hwbank_num; bank++) { in amd_gpio_dbg_show()
245 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_dbg_show()
246 pin_reg = readl(gpio_dev->base + i * 4); in amd_gpio_dbg_show()
247 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_dbg_show()
350 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_irq_enable() local
352 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_irq_enable()
353 pin_reg = readl(gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_enable()
356 writel(pin_reg, gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_enable()
357 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_irq_enable()
365 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_irq_disable() local
367 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_irq_disable()
368 pin_reg = readl(gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_disable()
371 writel(pin_reg, gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_disable()
372 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_irq_disable()
380 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_irq_mask() local
382 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_irq_mask()
383 pin_reg = readl(gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_mask()
385 writel(pin_reg, gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_mask()
386 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_irq_mask()
394 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_irq_unmask() local
396 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_irq_unmask()
397 pin_reg = readl(gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_unmask()
399 writel(pin_reg, gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_unmask()
400 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_irq_unmask()
408 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_irq_eoi() local
410 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_irq_eoi()
411 reg = readl(gpio_dev->base + WAKE_INT_MASTER_REG); in amd_gpio_irq_eoi()
413 writel(reg, gpio_dev->base + WAKE_INT_MASTER_REG); in amd_gpio_irq_eoi()
414 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_irq_eoi()
423 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_irq_set_type() local
425 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_irq_set_type()
426 pin_reg = readl(gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_set_type()
484 dev_err(&gpio_dev->pdev->dev, "Invalid type value\n"); in amd_gpio_irq_set_type()
508 writel(pin_reg_irq_en, gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_set_type()
509 while ((readl(gpio_dev->base + (d->hwirq)*4) & mask) != mask) in amd_gpio_irq_set_type()
511 writel(pin_reg, gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_set_type()
512 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_irq_set_type()
542 struct amd_gpio *gpio_dev = dev_id; in amd_gpio_irq_handler() local
543 struct gpio_chip *gc = &gpio_dev->gc; in amd_gpio_irq_handler()
551 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_irq_handler()
552 status = readl(gpio_dev->base + WAKE_INT_STATUS_REG1); in amd_gpio_irq_handler()
554 status |= readl(gpio_dev->base + WAKE_INT_STATUS_REG0); in amd_gpio_irq_handler()
555 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_irq_handler()
559 regs = gpio_dev->base; in amd_gpio_irq_handler()
579 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_irq_handler()
582 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_irq_handler()
588 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_irq_handler()
589 regval = readl(gpio_dev->base + WAKE_INT_MASTER_REG); in amd_gpio_irq_handler()
591 writel(regval, gpio_dev->base + WAKE_INT_MASTER_REG); in amd_gpio_irq_handler()
592 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_irq_handler()
599 struct amd_gpio *gpio_dev = pinctrl_dev_get_drvdata(pctldev); in amd_get_groups_count() local
601 return gpio_dev->ngroups; in amd_get_groups_count()
607 struct amd_gpio *gpio_dev = pinctrl_dev_get_drvdata(pctldev); in amd_get_group_name() local
609 return gpio_dev->groups[group].name; in amd_get_group_name()
617 struct amd_gpio *gpio_dev = pinctrl_dev_get_drvdata(pctldev); in amd_get_group_pins() local
619 *pins = gpio_dev->groups[group].pins; in amd_get_group_pins()
620 *num_pins = gpio_dev->groups[group].npins; in amd_get_group_pins()
641 struct amd_gpio *gpio_dev = pinctrl_dev_get_drvdata(pctldev); in amd_pinconf_get() local
644 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_pinconf_get()
645 pin_reg = readl(gpio_dev->base + pin*4); in amd_pinconf_get()
646 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_pinconf_get()
665 dev_err(&gpio_dev->pdev->dev, "Invalid config param %04x\n", in amd_pinconf_get()
684 struct amd_gpio *gpio_dev = pinctrl_dev_get_drvdata(pctldev); in amd_pinconf_set() local
686 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_pinconf_set()
690 pin_reg = readl(gpio_dev->base + pin*4); in amd_pinconf_set()
718 dev_err(&gpio_dev->pdev->dev, in amd_pinconf_set()
723 writel(pin_reg, gpio_dev->base + pin*4); in amd_pinconf_set()
725 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_pinconf_set()
774 static bool amd_gpio_should_save(struct amd_gpio *gpio_dev, unsigned int pin) in amd_gpio_should_save() argument
776 const struct pin_desc *pd = pin_desc_get(gpio_dev->pctrl, pin); in amd_gpio_should_save()
786 gpiochip_line_is_irq(&gpio_dev->gc, pin)) in amd_gpio_should_save()
795 struct amd_gpio *gpio_dev = platform_get_drvdata(pdev); in amd_gpio_suspend() local
796 struct pinctrl_desc *desc = gpio_dev->pctrl->desc; in amd_gpio_suspend()
802 if (!amd_gpio_should_save(gpio_dev, pin)) in amd_gpio_suspend()
805 gpio_dev->saved_regs[i] = readl(gpio_dev->base + pin*4); in amd_gpio_suspend()
814 struct amd_gpio *gpio_dev = platform_get_drvdata(pdev); in amd_gpio_resume() local
815 struct pinctrl_desc *desc = gpio_dev->pctrl->desc; in amd_gpio_resume()
821 if (!amd_gpio_should_save(gpio_dev, pin)) in amd_gpio_resume()
824 writel(gpio_dev->saved_regs[i], gpio_dev->base + pin*4); in amd_gpio_resume()
849 struct amd_gpio *gpio_dev; in amd_gpio_probe() local
851 gpio_dev = devm_kzalloc(&pdev->dev, in amd_gpio_probe()
853 if (!gpio_dev) in amd_gpio_probe()
856 raw_spin_lock_init(&gpio_dev->lock); in amd_gpio_probe()
864 gpio_dev->base = devm_ioremap_nocache(&pdev->dev, res->start, in amd_gpio_probe()
866 if (!gpio_dev->base) in amd_gpio_probe()
876 gpio_dev->saved_regs = devm_kcalloc(&pdev->dev, amd_pinctrl_desc.npins, in amd_gpio_probe()
877 sizeof(*gpio_dev->saved_regs), in amd_gpio_probe()
879 if (!gpio_dev->saved_regs) in amd_gpio_probe()
883 gpio_dev->pdev = pdev; in amd_gpio_probe()
884 gpio_dev->gc.get_direction = amd_gpio_get_direction; in amd_gpio_probe()
885 gpio_dev->gc.direction_input = amd_gpio_direction_input; in amd_gpio_probe()
886 gpio_dev->gc.direction_output = amd_gpio_direction_output; in amd_gpio_probe()
887 gpio_dev->gc.get = amd_gpio_get_value; in amd_gpio_probe()
888 gpio_dev->gc.set = amd_gpio_set_value; in amd_gpio_probe()
889 gpio_dev->gc.set_config = amd_gpio_set_config; in amd_gpio_probe()
890 gpio_dev->gc.dbg_show = amd_gpio_dbg_show; in amd_gpio_probe()
892 gpio_dev->gc.base = -1; in amd_gpio_probe()
893 gpio_dev->gc.label = pdev->name; in amd_gpio_probe()
894 gpio_dev->gc.owner = THIS_MODULE; in amd_gpio_probe()
895 gpio_dev->gc.parent = &pdev->dev; in amd_gpio_probe()
896 gpio_dev->gc.ngpio = resource_size(res) / 4; in amd_gpio_probe()
898 gpio_dev->gc.of_node = pdev->dev.of_node; in amd_gpio_probe()
901 gpio_dev->hwbank_num = gpio_dev->gc.ngpio / 64; in amd_gpio_probe()
902 gpio_dev->groups = kerncz_groups; in amd_gpio_probe()
903 gpio_dev->ngroups = ARRAY_SIZE(kerncz_groups); in amd_gpio_probe()
906 gpio_dev->pctrl = devm_pinctrl_register(&pdev->dev, &amd_pinctrl_desc, in amd_gpio_probe()
907 gpio_dev); in amd_gpio_probe()
908 if (IS_ERR(gpio_dev->pctrl)) { in amd_gpio_probe()
910 return PTR_ERR(gpio_dev->pctrl); in amd_gpio_probe()
913 ret = gpiochip_add_data(&gpio_dev->gc, gpio_dev); in amd_gpio_probe()
917 ret = gpiochip_add_pin_range(&gpio_dev->gc, dev_name(&pdev->dev), in amd_gpio_probe()
918 0, 0, gpio_dev->gc.ngpio); in amd_gpio_probe()
924 ret = gpiochip_irqchip_add(&gpio_dev->gc, in amd_gpio_probe()
936 KBUILD_MODNAME, gpio_dev); in amd_gpio_probe()
940 platform_set_drvdata(pdev, gpio_dev); in amd_gpio_probe()
946 gpiochip_remove(&gpio_dev->gc); in amd_gpio_probe()
953 struct amd_gpio *gpio_dev; in amd_gpio_remove() local
955 gpio_dev = platform_get_drvdata(pdev); in amd_gpio_remove()
957 gpiochip_remove(&gpio_dev->gc); in amd_gpio_remove()