Lines Matching refs:gpio_dev

43 	struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
45 raw_spin_lock_irqsave(&gpio_dev->lock, flags);
46 pin_reg = readl(gpio_dev->base + offset * 4);
47 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
59 struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
61 raw_spin_lock_irqsave(&gpio_dev->lock, flags);
62 pin_reg = readl(gpio_dev->base + offset * 4);
64 writel(pin_reg, gpio_dev->base + offset * 4);
65 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
75 struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
77 raw_spin_lock_irqsave(&gpio_dev->lock, flags);
78 pin_reg = readl(gpio_dev->base + offset * 4);
84 writel(pin_reg, gpio_dev->base + offset * 4);
85 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
94 struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
96 raw_spin_lock_irqsave(&gpio_dev->lock, flags);
97 pin_reg = readl(gpio_dev->base + offset * 4);
98 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
107 struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
109 raw_spin_lock_irqsave(&gpio_dev->lock, flags);
110 pin_reg = readl(gpio_dev->base + offset * 4);
115 writel(pin_reg, gpio_dev->base + offset * 4);
116 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
119 static int amd_gpio_set_debounce(struct amd_gpio *gpio_dev, unsigned int offset,
128 pin_reg = readl(gpio_dev->base + WAKE_INT_MASTER_REG);
133 pin_reg = readl(gpio_dev->base + offset * 4);
182 writel(pin_reg, gpio_dev->base + offset * 4);
194 struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
213 seq_printf(s, "WAKE_INT_MASTER_REG: 0x%08x\n", readl(gpio_dev->base + WAKE_INT_MASTER_REG));
214 for (bank = 0; bank < gpio_dev->hwbank_num; bank++) {
243 raw_spin_lock_irqsave(&gpio_dev->lock, flags);
244 pin_reg = readl(gpio_dev->base + i * 4);
245 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
377 struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
381 raw_spin_lock_irqsave(&gpio_dev->lock, flags);
382 pin_reg = readl(gpio_dev->base + (d->hwirq)*4);
385 writel(pin_reg, gpio_dev->base + (d->hwirq)*4);
386 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
394 struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
396 raw_spin_lock_irqsave(&gpio_dev->lock, flags);
397 pin_reg = readl(gpio_dev->base + (d->hwirq)*4);
400 writel(pin_reg, gpio_dev->base + (d->hwirq)*4);
401 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
411 struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
413 raw_spin_lock_irqsave(&gpio_dev->lock, flags);
414 pin_reg = readl(gpio_dev->base + (d->hwirq)*4);
416 writel(pin_reg, gpio_dev->base + (d->hwirq)*4);
417 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
425 struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
427 raw_spin_lock_irqsave(&gpio_dev->lock, flags);
428 pin_reg = readl(gpio_dev->base + (d->hwirq)*4);
430 writel(pin_reg, gpio_dev->base + (d->hwirq)*4);
431 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
439 struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
443 raw_spin_lock_irqsave(&gpio_dev->lock, flags);
444 pin_reg = readl(gpio_dev->base + (d->hwirq)*4);
451 writel(pin_reg, gpio_dev->base + (d->hwirq)*4);
452 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
455 err = enable_irq_wake(gpio_dev->irq);
457 err = disable_irq_wake(gpio_dev->irq);
460 dev_err(&gpio_dev->pdev->dev, "failed to %s wake-up interrupt\n",
471 struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
473 raw_spin_lock_irqsave(&gpio_dev->lock, flags);
474 reg = readl(gpio_dev->base + WAKE_INT_MASTER_REG);
476 writel(reg, gpio_dev->base + WAKE_INT_MASTER_REG);
477 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
486 struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
488 raw_spin_lock_irqsave(&gpio_dev->lock, flags);
489 pin_reg = readl(gpio_dev->base + (d->hwirq)*4);
531 dev_err(&gpio_dev->pdev->dev, "Invalid type value\n");
555 writel(pin_reg_irq_en, gpio_dev->base + (d->hwirq)*4);
556 while ((readl(gpio_dev->base + (d->hwirq)*4) & mask) != mask)
558 writel(pin_reg, gpio_dev->base + (d->hwirq)*4);
559 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
597 struct amd_gpio *gpio_dev = dev_id;
598 struct gpio_chip *gc = &gpio_dev->gc;
607 raw_spin_lock_irqsave(&gpio_dev->lock, flags);
608 status = readl(gpio_dev->base + WAKE_INT_STATUS_REG1);
610 status |= readl(gpio_dev->base + WAKE_INT_STATUS_REG0);
611 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
615 regs = gpio_dev->base;
645 raw_spin_lock_irqsave(&gpio_dev->lock, flags);
649 dev_dbg(&gpio_dev->pdev->dev,
656 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
664 raw_spin_lock_irqsave(&gpio_dev->lock, flags);
665 regval = readl(gpio_dev->base + WAKE_INT_MASTER_REG);
667 writel(regval, gpio_dev->base + WAKE_INT_MASTER_REG);
668 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
685 struct amd_gpio *gpio_dev = pinctrl_dev_get_drvdata(pctldev);
687 return gpio_dev->ngroups;
693 struct amd_gpio *gpio_dev = pinctrl_dev_get_drvdata(pctldev);
695 return gpio_dev->groups[group].name;
703 struct amd_gpio *gpio_dev = pinctrl_dev_get_drvdata(pctldev);
705 *pins = gpio_dev->groups[group].pins;
706 *num_pins = gpio_dev->groups[group].npins;
727 struct amd_gpio *gpio_dev = pinctrl_dev_get_drvdata(pctldev);
730 raw_spin_lock_irqsave(&gpio_dev->lock, flags);
731 pin_reg = readl(gpio_dev->base + pin*4);
732 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
751 dev_dbg(&gpio_dev->pdev->dev, "Invalid config param %04x\n",
770 struct amd_gpio *gpio_dev = pinctrl_dev_get_drvdata(pctldev);
772 raw_spin_lock_irqsave(&gpio_dev->lock, flags);
776 pin_reg = readl(gpio_dev->base + pin*4);
780 ret = amd_gpio_set_debounce(gpio_dev, pin, arg);
801 dev_dbg(&gpio_dev->pdev->dev,
806 writel(pin_reg, gpio_dev->base + pin*4);
809 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
853 struct amd_gpio *gpio_dev = gpiochip_get_data(gc);
855 return amd_pinconf_set(gpio_dev->pctrl, pin, &config, 1);
865 static void amd_gpio_irq_init(struct amd_gpio *gpio_dev)
867 struct pinctrl_desc *desc = gpio_dev->pctrl->desc;
877 const struct pin_desc *pd = pin_desc_get(gpio_dev->pctrl, pin);
882 raw_spin_lock_irqsave(&gpio_dev->lock, flags);
884 pin_reg = readl(gpio_dev->base + pin * 4);
886 writel(pin_reg, gpio_dev->base + pin * 4);
888 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
893 static bool amd_gpio_should_save(struct amd_gpio *gpio_dev, unsigned int pin)
895 const struct pin_desc *pd = pin_desc_get(gpio_dev->pctrl, pin);
905 gpiochip_line_is_irq(&gpio_dev->gc, pin))
913 struct amd_gpio *gpio_dev = dev_get_drvdata(dev);
914 struct pinctrl_desc *desc = gpio_dev->pctrl->desc;
921 if (!amd_gpio_should_save(gpio_dev, pin))
924 raw_spin_lock_irqsave(&gpio_dev->lock, flags);
925 gpio_dev->saved_regs[i] = readl(gpio_dev->base + pin * 4) & ~PIN_IRQ_PENDING;
928 if (!(gpio_dev->saved_regs[i] & WAKE_SOURCE)) {
929 writel(gpio_dev->saved_regs[i] & ~BIT(INTERRUPT_MASK_OFF),
930 gpio_dev->base + pin * 4);
935 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
943 struct amd_gpio *gpio_dev = dev_get_drvdata(dev);
944 struct pinctrl_desc *desc = gpio_dev->pctrl->desc;
951 if (!amd_gpio_should_save(gpio_dev, pin))
954 raw_spin_lock_irqsave(&gpio_dev->lock, flags);
955 gpio_dev->saved_regs[i] |= readl(gpio_dev->base + pin * 4) & PIN_IRQ_PENDING;
956 writel(gpio_dev->saved_regs[i], gpio_dev->base + pin * 4);
957 raw_spin_unlock_irqrestore(&gpio_dev->lock, flags);
983 struct amd_gpio *gpio_dev = pinctrl_dev_get_drvdata(pctrldev);
985 if (!gpio_dev->iomux_base) {
986 dev_err(&gpio_dev->pdev->dev, "iomux function %d group not supported\n", selector);
997 struct amd_gpio *gpio_dev = pinctrl_dev_get_drvdata(pctrldev);
998 struct device *dev = &gpio_dev->pdev->dev;
1002 if (!gpio_dev->iomux_base)
1006 if (strcmp(gpio_dev->groups[group].name, pmx_functions[function].groups[index]))
1009 if (readb(gpio_dev->iomux_base + pmx_functions[function].index) ==
1016 writeb(index, gpio_dev->iomux_base + pmx_functions[function].index);
1018 if (index != (readb(gpio_dev->iomux_base + pmx_functions[function].index) &
1025 for (ind = 0; ind < gpio_dev->groups[group].npins; ind++) {
1026 if (strncmp(gpio_dev->groups[group].name, "IMX_F", strlen("IMX_F")))
1029 pd = pin_desc_get(gpio_dev->pctrl, gpio_dev->groups[group].pins[ind]);
1030 pd->mux_owner = gpio_dev->groups[group].name;
1054 static void amd_get_iomux_res(struct amd_gpio *gpio_dev)
1057 struct device *dev = &gpio_dev->pdev->dev;
1066 gpio_dev->iomux_base = devm_platform_ioremap_resource(gpio_dev->pdev, index);
1067 if (IS_ERR(gpio_dev->iomux_base)) {
1082 struct amd_gpio *gpio_dev;
1085 gpio_dev = devm_kzalloc(&pdev->dev,
1087 if (!gpio_dev)
1090 raw_spin_lock_init(&gpio_dev->lock);
1092 gpio_dev->base = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
1093 if (IS_ERR(gpio_dev->base)) {
1095 return PTR_ERR(gpio_dev->base);
1098 gpio_dev->irq = platform_get_irq(pdev, 0);
1099 if (gpio_dev->irq < 0)
1100 return gpio_dev->irq;
1103 gpio_dev->saved_regs = devm_kcalloc(&pdev->dev, amd_pinctrl_desc.npins,
1104 sizeof(*gpio_dev->saved_regs),
1106 if (!gpio_dev->saved_regs)
1110 gpio_dev->pdev = pdev;
1111 gpio_dev->gc.get_direction = amd_gpio_get_direction;
1112 gpio_dev->gc.direction_input = amd_gpio_direction_input;
1113 gpio_dev->gc.direction_output = amd_gpio_direction_output;
1114 gpio_dev->gc.get = amd_gpio_get_value;
1115 gpio_dev->gc.set = amd_gpio_set_value;
1116 gpio_dev->gc.set_config = amd_gpio_set_config;
1117 gpio_dev->gc.dbg_show = amd_gpio_dbg_show;
1119 gpio_dev->gc.base = -1;
1120 gpio_dev->gc.label = pdev->name;
1121 gpio_dev->gc.owner = THIS_MODULE;
1122 gpio_dev->gc.parent = &pdev->dev;
1123 gpio_dev->gc.ngpio = resource_size(res) / 4;
1125 gpio_dev->hwbank_num = gpio_dev->gc.ngpio / 64;
1126 gpio_dev->groups = kerncz_groups;
1127 gpio_dev->ngroups = ARRAY_SIZE(kerncz_groups);
1130 amd_get_iomux_res(gpio_dev);
1131 gpio_dev->pctrl = devm_pinctrl_register(&pdev->dev, &amd_pinctrl_desc,
1132 gpio_dev);
1133 if (IS_ERR(gpio_dev->pctrl)) {
1135 return PTR_ERR(gpio_dev->pctrl);
1139 amd_gpio_irq_init(gpio_dev);
1141 girq = &gpio_dev->gc.irq;
1150 ret = gpiochip_add_data(&gpio_dev->gc, gpio_dev);
1154 ret = gpiochip_add_pin_range(&gpio_dev->gc, dev_name(&pdev->dev),
1155 0, 0, gpio_dev->gc.ngpio);
1161 ret = devm_request_irq(&pdev->dev, gpio_dev->irq, amd_gpio_irq_handler,
1162 IRQF_SHARED | IRQF_COND_ONESHOT, KBUILD_MODNAME, gpio_dev);
1166 platform_set_drvdata(pdev, gpio_dev);
1167 acpi_register_wakeup_handler(gpio_dev->irq, amd_gpio_check_wake, gpio_dev);
1173 gpiochip_remove(&gpio_dev->gc);
1180 struct amd_gpio *gpio_dev;
1182 gpio_dev = platform_get_drvdata(pdev);
1184 gpiochip_remove(&gpio_dev->gc);
1185 acpi_unregister_wakeup_handler(amd_gpio_check_wake, gpio_dev);