Lines Matching refs:pctl

81 static void apple_gpio_set_reg(struct apple_gpio_pinctrl *pctl,
84 regmap_update_bits(pctl->map, REG_GPIO(pin), mask, value);
87 static u32 apple_gpio_get_reg(struct apple_gpio_pinctrl *pctl,
93 ret = regmap_read(pctl->map, REG_GPIO(pin), &val);
108 struct apple_gpio_pinctrl *pctl;
118 pctl = pinctrl_dev_get_drvdata(pctldev);
122 dev_err(pctl->dev,
148 function_name = pinmux_generic_get_function_name(pctl->pctldev, func);
149 ret = pinctrl_utils_add_map_mux(pctl->pctldev, map,
176 struct apple_gpio_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev);
179 pctl, group, REG_GPIOx_PERIPH | REG_GPIOx_INPUT_ENABLE,
197 struct apple_gpio_pinctrl *pctl = gpiochip_get_data(chip);
198 unsigned int reg = apple_gpio_get_reg(pctl, offset);
207 struct apple_gpio_pinctrl *pctl = gpiochip_get_data(chip);
208 unsigned int reg = apple_gpio_get_reg(pctl, offset);
215 reg = readl_relaxed(pctl->base + REG_GPIO(offset));
222 struct apple_gpio_pinctrl *pctl = gpiochip_get_data(chip);
224 apple_gpio_set_reg(pctl, offset, REG_GPIOx_DATA, value ? REG_GPIOx_DATA : 0);
229 struct apple_gpio_pinctrl *pctl = gpiochip_get_data(chip);
231 apple_gpio_set_reg(pctl, offset,
242 struct apple_gpio_pinctrl *pctl = gpiochip_get_data(chip);
244 apple_gpio_set_reg(pctl, offset,
255 struct apple_gpio_pinctrl *pctl = gpiochip_get_data(irq_data_get_irq_chip_data(data));
256 unsigned int irqgrp = FIELD_GET(REG_GPIOx_GRP, apple_gpio_get_reg(pctl, data->hwirq));
258 writel(BIT(data->hwirq % 32), pctl->base + REG_IRQ(irqgrp, data->hwirq));
282 struct apple_gpio_pinctrl *pctl = gpiochip_get_data(gc);
284 apple_gpio_set_reg(pctl, data->hwirq, REG_GPIOx_MODE,
292 struct apple_gpio_pinctrl *pctl = gpiochip_get_data(gc);
296 apple_gpio_set_reg(pctl, data->hwirq, REG_GPIOx_MODE,
303 struct apple_gpio_pinctrl *pctl = gpiochip_get_data(chip);
305 apple_gpio_set_reg(pctl, data->hwirq, REG_GPIOx_GRP,
316 struct apple_gpio_pinctrl *pctl = gpiochip_get_data(irq_data_get_irq_chip_data(data));
322 apple_gpio_set_reg(pctl, data->hwirq, REG_GPIOx_MODE,
336 struct apple_gpio_pinctrl *pctl;
341 pctl = container_of(grpp - *grpp, typeof(*pctl), irqgrps[0]);
342 gc = &pctl->gpio_chip;
346 pending = readl_relaxed(pctl->base + REG_IRQ(*grpp, pinh));
366 static int apple_gpio_register(struct apple_gpio_pinctrl *pctl)
368 struct gpio_irq_chip *girq = &pctl->gpio_chip.irq;
372 pctl->gpio_chip.label = dev_name(pctl->dev);
373 pctl->gpio_chip.request = gpiochip_generic_request;
374 pctl->gpio_chip.free = gpiochip_generic_free;
375 pctl->gpio_chip.get_direction = apple_gpio_get_direction;
376 pctl->gpio_chip.direction_input = apple_gpio_direction_input;
377 pctl->gpio_chip.direction_output = apple_gpio_direction_output;
378 pctl->gpio_chip.get = apple_gpio_get;
379 pctl->gpio_chip.set = apple_gpio_set;
380 pctl->gpio_chip.base = -1;
381 pctl->gpio_chip.ngpio = pctl->pinctrl_desc.npins;
382 pctl->gpio_chip.parent = pctl->dev;
401 ret = platform_get_irq(to_platform_device(pctl->dev), i);
406 pctl->irqgrps[i] = i;
407 irq_data[i] = &pctl->irqgrps[i];
416 ret = devm_gpiochip_add_data(pctl->dev, &pctl->gpio_chip, pctl);
427 struct apple_gpio_pinctrl *pctl;
444 pctl = devm_kzalloc(&pdev->dev, struct_size(pctl, irqgrps, nirqs),
446 if (!pctl)
448 pctl->dev = &pdev->dev;
449 pctl->gpio_chip.irq.num_parents = nirqs;
450 dev_set_drvdata(&pdev->dev, pctl);
465 pctl->base = devm_platform_ioremap_resource(pdev, 0);
466 if (IS_ERR(pctl->base))
467 return PTR_ERR(pctl->base);
469 pctl->map = devm_regmap_init_mmio(&pdev->dev, pctl->base, &regmap_config);
470 if (IS_ERR(pctl->map))
471 return dev_err_probe(&pdev->dev, PTR_ERR(pctl->map),
477 pins[i].drv_data = pctl;
482 pctl->pinctrl_desc.name = dev_name(pctl->dev);
483 pctl->pinctrl_desc.pins = pins;
484 pctl->pinctrl_desc.npins = npins;
485 pctl->pinctrl_desc.pctlops = &apple_gpio_pinctrl_ops;
486 pctl->pinctrl_desc.pmxops = &apple_gpio_pinmux_ops;
488 pctl->pctldev = devm_pinctrl_register(&pdev->dev, &pctl->pinctrl_desc, pctl);
489 if (IS_ERR(pctl->pctldev))
490 return dev_err_probe(&pdev->dev, PTR_ERR(pctl->pctldev),
494 res = pinctrl_generic_add_group(pctl->pctldev, pins[i].name,
495 pin_nums + i, 1, pctl);
497 return dev_err_probe(pctl->dev, res,
502 res = pinmux_generic_add_function(pctl->pctldev, pinmux_functions[i],
503 pin_names, npins, pctl);
505 return dev_err_probe(pctl->dev, res,
509 return apple_gpio_register(pctl);