• Home
  • Raw
  • Download

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()
59 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_direction_input() local
61 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_direction_input()
62 pin_reg = readl(gpio_dev->base + offset * 4); in amd_gpio_direction_input()
64 writel(pin_reg, gpio_dev->base + offset * 4); in amd_gpio_direction_input()
65 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_direction_input()
75 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_direction_output() local
77 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_direction_output()
78 pin_reg = readl(gpio_dev->base + offset * 4); in amd_gpio_direction_output()
84 writel(pin_reg, gpio_dev->base + offset * 4); in amd_gpio_direction_output()
85 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_direction_output()
94 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_get_value() local
96 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_get_value()
97 pin_reg = readl(gpio_dev->base + offset * 4); in amd_gpio_get_value()
98 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_get_value()
107 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_set_value() local
109 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_set_value()
110 pin_reg = readl(gpio_dev->base + offset * 4); in amd_gpio_set_value()
115 writel(pin_reg, gpio_dev->base + offset * 4); in amd_gpio_set_value()
116 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_set_value()
126 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_set_debounce() local
128 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_set_debounce()
132 pin_reg = readl(gpio_dev->base + WAKE_INT_MASTER_REG); in amd_gpio_set_debounce()
137 pin_reg = readl(gpio_dev->base + offset * 4); in amd_gpio_set_debounce()
186 writel(pin_reg, gpio_dev->base + offset * 4); in amd_gpio_set_debounce()
187 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
222 seq_printf(s, "WAKE_INT_MASTER_REG: 0x%08x\n", readl(gpio_dev->base + WAKE_INT_MASTER_REG)); in amd_gpio_dbg_show()
223 for (bank = 0; bank < gpio_dev->hwbank_num; bank++) { in amd_gpio_dbg_show()
249 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_dbg_show()
250 pin_reg = readl(gpio_dev->base + i * 4); in amd_gpio_dbg_show()
251 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_dbg_show()
385 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_irq_enable() local
387 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_irq_enable()
388 pin_reg = readl(gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_enable()
391 writel(pin_reg, gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_enable()
392 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_irq_enable()
400 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_irq_disable() local
402 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_irq_disable()
403 pin_reg = readl(gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_disable()
406 writel(pin_reg, gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_disable()
407 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_irq_disable()
415 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_irq_mask() local
417 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_irq_mask()
418 pin_reg = readl(gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_mask()
420 writel(pin_reg, gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_mask()
421 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_irq_mask()
429 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_irq_unmask() local
431 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_irq_unmask()
432 pin_reg = readl(gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_unmask()
434 writel(pin_reg, gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_unmask()
435 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_irq_unmask()
443 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_irq_set_wake() local
447 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_irq_set_wake()
448 pin_reg = readl(gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_set_wake()
455 writel(pin_reg, gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_set_wake()
456 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_irq_set_wake()
459 err = enable_irq_wake(gpio_dev->irq); in amd_gpio_irq_set_wake()
461 err = disable_irq_wake(gpio_dev->irq); in amd_gpio_irq_set_wake()
464 dev_err(&gpio_dev->pdev->dev, "failed to %s wake-up interrupt\n", in amd_gpio_irq_set_wake()
475 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_irq_eoi() local
477 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_irq_eoi()
478 reg = readl(gpio_dev->base + WAKE_INT_MASTER_REG); in amd_gpio_irq_eoi()
480 writel(reg, gpio_dev->base + WAKE_INT_MASTER_REG); in amd_gpio_irq_eoi()
481 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_irq_eoi()
490 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_irq_set_type() local
492 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_irq_set_type()
493 pin_reg = readl(gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_set_type()
535 dev_err(&gpio_dev->pdev->dev, "Invalid type value\n"); in amd_gpio_irq_set_type()
559 writel(pin_reg_irq_en, gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_set_type()
560 while ((readl(gpio_dev->base + (d->hwirq)*4) & mask) != mask) in amd_gpio_irq_set_type()
562 writel(pin_reg, gpio_dev->base + (d->hwirq)*4); in amd_gpio_irq_set_type()
563 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_irq_set_type()
600 struct amd_gpio *gpio_dev = dev_id; in do_amd_gpio_irq_handler() local
601 struct gpio_chip *gc = &gpio_dev->gc; in do_amd_gpio_irq_handler()
610 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in do_amd_gpio_irq_handler()
611 status = readl(gpio_dev->base + WAKE_INT_STATUS_REG1); in do_amd_gpio_irq_handler()
613 status |= readl(gpio_dev->base + WAKE_INT_STATUS_REG0); in do_amd_gpio_irq_handler()
614 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in do_amd_gpio_irq_handler()
618 regs = gpio_dev->base; in do_amd_gpio_irq_handler()
629 dev_dbg(&gpio_dev->pdev->dev, in do_amd_gpio_irq_handler()
649 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in do_amd_gpio_irq_handler()
653 dev_dbg(&gpio_dev->pdev->dev, in do_amd_gpio_irq_handler()
660 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in do_amd_gpio_irq_handler()
668 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in do_amd_gpio_irq_handler()
669 regval = readl(gpio_dev->base + WAKE_INT_MASTER_REG); in do_amd_gpio_irq_handler()
671 writel(regval, gpio_dev->base + WAKE_INT_MASTER_REG); in do_amd_gpio_irq_handler()
672 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in do_amd_gpio_irq_handler()
689 struct amd_gpio *gpio_dev = pinctrl_dev_get_drvdata(pctldev); in amd_get_groups_count() local
691 return gpio_dev->ngroups; in amd_get_groups_count()
697 struct amd_gpio *gpio_dev = pinctrl_dev_get_drvdata(pctldev); in amd_get_group_name() local
699 return gpio_dev->groups[group].name; in amd_get_group_name()
707 struct amd_gpio *gpio_dev = pinctrl_dev_get_drvdata(pctldev); in amd_get_group_pins() local
709 *pins = gpio_dev->groups[group].pins; in amd_get_group_pins()
710 *num_pins = gpio_dev->groups[group].npins; in amd_get_group_pins()
731 struct amd_gpio *gpio_dev = pinctrl_dev_get_drvdata(pctldev); in amd_pinconf_get() local
734 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_pinconf_get()
735 pin_reg = readl(gpio_dev->base + pin*4); in amd_pinconf_get()
736 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_pinconf_get()
755 dev_dbg(&gpio_dev->pdev->dev, "Invalid config param %04x\n", in amd_pinconf_get()
774 struct amd_gpio *gpio_dev = pinctrl_dev_get_drvdata(pctldev); in amd_pinconf_set() local
776 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_pinconf_set()
780 pin_reg = readl(gpio_dev->base + pin*4); in amd_pinconf_set()
808 dev_dbg(&gpio_dev->pdev->dev, in amd_pinconf_set()
813 writel(pin_reg, gpio_dev->base + pin*4); in amd_pinconf_set()
815 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_pinconf_set()
859 struct amd_gpio *gpio_dev = gpiochip_get_data(gc); in amd_gpio_set_config() local
867 return amd_pinconf_set(gpio_dev->pctrl, pin, &config, 1); in amd_gpio_set_config()
877 static void amd_gpio_irq_init(struct amd_gpio *gpio_dev) in amd_gpio_irq_init() argument
879 struct pinctrl_desc *desc = gpio_dev->pctrl->desc; in amd_gpio_irq_init()
890 const struct pin_desc *pd = pin_desc_get(gpio_dev->pctrl, pin); in amd_gpio_irq_init()
895 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_irq_init()
897 pin_reg = readl(gpio_dev->base + pin * 4); in amd_gpio_irq_init()
899 writel(pin_reg, gpio_dev->base + pin * 4); in amd_gpio_irq_init()
901 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_irq_init()
906 static bool amd_gpio_should_save(struct amd_gpio *gpio_dev, unsigned int pin) in amd_gpio_should_save() argument
908 const struct pin_desc *pd = pin_desc_get(gpio_dev->pctrl, pin); in amd_gpio_should_save()
918 gpiochip_line_is_irq(&gpio_dev->gc, pin)) in amd_gpio_should_save()
926 struct amd_gpio *gpio_dev = dev_get_drvdata(dev); in amd_gpio_suspend() local
927 struct pinctrl_desc *desc = gpio_dev->pctrl->desc; in amd_gpio_suspend()
934 if (!amd_gpio_should_save(gpio_dev, pin)) in amd_gpio_suspend()
937 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_suspend()
938 gpio_dev->saved_regs[i] = readl(gpio_dev->base + pin * 4) & ~PIN_IRQ_PENDING; in amd_gpio_suspend()
939 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_suspend()
947 struct amd_gpio *gpio_dev = dev_get_drvdata(dev); in amd_gpio_resume() local
948 struct pinctrl_desc *desc = gpio_dev->pctrl->desc; in amd_gpio_resume()
955 if (!amd_gpio_should_save(gpio_dev, pin)) in amd_gpio_resume()
958 raw_spin_lock_irqsave(&gpio_dev->lock, flags); in amd_gpio_resume()
959 gpio_dev->saved_regs[i] |= readl(gpio_dev->base + pin * 4) & PIN_IRQ_PENDING; in amd_gpio_resume()
960 writel(gpio_dev->saved_regs[i], gpio_dev->base + pin * 4); in amd_gpio_resume()
961 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags); in amd_gpio_resume()
985 struct amd_gpio *gpio_dev; in amd_gpio_probe() local
988 gpio_dev = devm_kzalloc(&pdev->dev, in amd_gpio_probe()
990 if (!gpio_dev) in amd_gpio_probe()
993 raw_spin_lock_init(&gpio_dev->lock); in amd_gpio_probe()
1001 gpio_dev->base = devm_ioremap(&pdev->dev, res->start, in amd_gpio_probe()
1003 if (!gpio_dev->base) in amd_gpio_probe()
1006 gpio_dev->irq = platform_get_irq(pdev, 0); in amd_gpio_probe()
1007 if (gpio_dev->irq < 0) in amd_gpio_probe()
1008 return gpio_dev->irq; in amd_gpio_probe()
1011 gpio_dev->saved_regs = devm_kcalloc(&pdev->dev, amd_pinctrl_desc.npins, in amd_gpio_probe()
1012 sizeof(*gpio_dev->saved_regs), in amd_gpio_probe()
1014 if (!gpio_dev->saved_regs) in amd_gpio_probe()
1018 gpio_dev->pdev = pdev; in amd_gpio_probe()
1019 gpio_dev->gc.get_direction = amd_gpio_get_direction; in amd_gpio_probe()
1020 gpio_dev->gc.direction_input = amd_gpio_direction_input; in amd_gpio_probe()
1021 gpio_dev->gc.direction_output = amd_gpio_direction_output; in amd_gpio_probe()
1022 gpio_dev->gc.get = amd_gpio_get_value; in amd_gpio_probe()
1023 gpio_dev->gc.set = amd_gpio_set_value; in amd_gpio_probe()
1024 gpio_dev->gc.set_config = amd_gpio_set_config; in amd_gpio_probe()
1025 gpio_dev->gc.dbg_show = amd_gpio_dbg_show; in amd_gpio_probe()
1027 gpio_dev->gc.base = -1; in amd_gpio_probe()
1028 gpio_dev->gc.label = pdev->name; in amd_gpio_probe()
1029 gpio_dev->gc.owner = THIS_MODULE; in amd_gpio_probe()
1030 gpio_dev->gc.parent = &pdev->dev; in amd_gpio_probe()
1031 gpio_dev->gc.ngpio = resource_size(res) / 4; in amd_gpio_probe()
1033 gpio_dev->gc.of_node = pdev->dev.of_node; in amd_gpio_probe()
1036 gpio_dev->hwbank_num = gpio_dev->gc.ngpio / 64; in amd_gpio_probe()
1037 gpio_dev->groups = kerncz_groups; in amd_gpio_probe()
1038 gpio_dev->ngroups = ARRAY_SIZE(kerncz_groups); in amd_gpio_probe()
1041 gpio_dev->pctrl = devm_pinctrl_register(&pdev->dev, &amd_pinctrl_desc, in amd_gpio_probe()
1042 gpio_dev); in amd_gpio_probe()
1043 if (IS_ERR(gpio_dev->pctrl)) { in amd_gpio_probe()
1045 return PTR_ERR(gpio_dev->pctrl); in amd_gpio_probe()
1049 amd_gpio_irq_init(gpio_dev); in amd_gpio_probe()
1051 girq = &gpio_dev->gc.irq; in amd_gpio_probe()
1060 ret = gpiochip_add_data(&gpio_dev->gc, gpio_dev); in amd_gpio_probe()
1064 ret = gpiochip_add_pin_range(&gpio_dev->gc, dev_name(&pdev->dev), in amd_gpio_probe()
1065 0, 0, gpio_dev->gc.ngpio); in amd_gpio_probe()
1071 ret = devm_request_irq(&pdev->dev, gpio_dev->irq, amd_gpio_irq_handler, in amd_gpio_probe()
1072 IRQF_SHARED, KBUILD_MODNAME, gpio_dev); in amd_gpio_probe()
1076 platform_set_drvdata(pdev, gpio_dev); in amd_gpio_probe()
1077 acpi_register_wakeup_handler(gpio_dev->irq, amd_gpio_check_wake, gpio_dev); in amd_gpio_probe()
1083 gpiochip_remove(&gpio_dev->gc); in amd_gpio_probe()
1090 struct amd_gpio *gpio_dev; in amd_gpio_remove() local
1092 gpio_dev = platform_get_drvdata(pdev); in amd_gpio_remove()
1094 gpiochip_remove(&gpio_dev->gc); in amd_gpio_remove()
1095 acpi_unregister_wakeup_handler(amd_gpio_check_wake, gpio_dev); in amd_gpio_remove()