Lines Matching refs:pctl

78 static void apple_gpio_set_reg(struct apple_gpio_pinctrl *pctl,  in apple_gpio_set_reg()  argument
81 regmap_update_bits(pctl->map, REG_GPIO(pin), mask, value); in apple_gpio_set_reg()
84 static u32 apple_gpio_get_reg(struct apple_gpio_pinctrl *pctl, in apple_gpio_get_reg() argument
90 ret = regmap_read(pctl->map, REG_GPIO(pin), &val); in apple_gpio_get_reg()
105 struct apple_gpio_pinctrl *pctl; in apple_gpio_dt_node_to_map() local
115 pctl = pinctrl_dev_get_drvdata(pctldev); in apple_gpio_dt_node_to_map()
119 dev_err(pctl->dev, in apple_gpio_dt_node_to_map()
145 function_name = pinmux_generic_get_function_name(pctl->pctldev, func); in apple_gpio_dt_node_to_map()
146 ret = pinctrl_utils_add_map_mux(pctl->pctldev, map, in apple_gpio_dt_node_to_map()
173 struct apple_gpio_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); in apple_gpio_pinmux_set() local
176 pctl, group, REG_GPIOx_PERIPH | REG_GPIOx_INPUT_ENABLE, in apple_gpio_pinmux_set()
194 struct apple_gpio_pinctrl *pctl = gpiochip_get_data(chip); in apple_gpio_get_direction() local
195 unsigned int reg = apple_gpio_get_reg(pctl, offset); in apple_gpio_get_direction()
204 struct apple_gpio_pinctrl *pctl = gpiochip_get_data(chip); in apple_gpio_get() local
205 unsigned int reg = apple_gpio_get_reg(pctl, offset); in apple_gpio_get()
212 reg = readl_relaxed(pctl->base + REG_GPIO(offset)); in apple_gpio_get()
219 struct apple_gpio_pinctrl *pctl = gpiochip_get_data(chip); in apple_gpio_set() local
221 apple_gpio_set_reg(pctl, offset, REG_GPIOx_DATA, value ? REG_GPIOx_DATA : 0); in apple_gpio_set()
226 struct apple_gpio_pinctrl *pctl = gpiochip_get_data(chip); in apple_gpio_direction_input() local
228 apple_gpio_set_reg(pctl, offset, in apple_gpio_direction_input()
239 struct apple_gpio_pinctrl *pctl = gpiochip_get_data(chip); in apple_gpio_direction_output() local
241 apple_gpio_set_reg(pctl, offset, in apple_gpio_direction_output()
252 struct apple_gpio_pinctrl *pctl = gpiochip_get_data(irq_data_get_irq_chip_data(data)); in apple_gpio_irq_ack() local
253 unsigned int irqgrp = FIELD_GET(REG_GPIOx_GRP, apple_gpio_get_reg(pctl, data->hwirq)); in apple_gpio_irq_ack()
255 writel(BIT(data->hwirq % 32), pctl->base + REG_IRQ(irqgrp, data->hwirq)); in apple_gpio_irq_ack()
279 struct apple_gpio_pinctrl *pctl = gpiochip_get_data(gc); in apple_gpio_irq_mask() local
281 apple_gpio_set_reg(pctl, data->hwirq, REG_GPIOx_MODE, in apple_gpio_irq_mask()
289 struct apple_gpio_pinctrl *pctl = gpiochip_get_data(gc); in apple_gpio_irq_unmask() local
293 apple_gpio_set_reg(pctl, data->hwirq, REG_GPIOx_MODE, in apple_gpio_irq_unmask()
300 struct apple_gpio_pinctrl *pctl = gpiochip_get_data(chip); in apple_gpio_irq_startup() local
302 apple_gpio_set_reg(pctl, data->hwirq, REG_GPIOx_GRP, in apple_gpio_irq_startup()
313 struct apple_gpio_pinctrl *pctl = gpiochip_get_data(irq_data_get_irq_chip_data(data)); in apple_gpio_irq_set_type() local
319 apple_gpio_set_reg(pctl, data->hwirq, REG_GPIOx_MODE, in apple_gpio_irq_set_type()
333 struct apple_gpio_pinctrl *pctl; in apple_gpio_irq_handler() local
338 pctl = container_of(grpp - *grpp, typeof(*pctl), irqgrps[0]); in apple_gpio_irq_handler()
339 gc = &pctl->gpio_chip; in apple_gpio_irq_handler()
343 pending = readl_relaxed(pctl->base + REG_IRQ(*grpp, pinh)); in apple_gpio_irq_handler()
363 static int apple_gpio_register(struct apple_gpio_pinctrl *pctl) in apple_gpio_register() argument
365 struct gpio_irq_chip *girq = &pctl->gpio_chip.irq; in apple_gpio_register()
369 pctl->gpio_chip.label = dev_name(pctl->dev); in apple_gpio_register()
370 pctl->gpio_chip.request = gpiochip_generic_request; in apple_gpio_register()
371 pctl->gpio_chip.free = gpiochip_generic_free; in apple_gpio_register()
372 pctl->gpio_chip.get_direction = apple_gpio_get_direction; in apple_gpio_register()
373 pctl->gpio_chip.direction_input = apple_gpio_direction_input; in apple_gpio_register()
374 pctl->gpio_chip.direction_output = apple_gpio_direction_output; in apple_gpio_register()
375 pctl->gpio_chip.get = apple_gpio_get; in apple_gpio_register()
376 pctl->gpio_chip.set = apple_gpio_set; in apple_gpio_register()
377 pctl->gpio_chip.base = -1; in apple_gpio_register()
378 pctl->gpio_chip.ngpio = pctl->pinctrl_desc.npins; in apple_gpio_register()
379 pctl->gpio_chip.parent = pctl->dev; in apple_gpio_register()
398 ret = platform_get_irq(to_platform_device(pctl->dev), i); in apple_gpio_register()
403 pctl->irqgrps[i] = i; in apple_gpio_register()
404 irq_data[i] = &pctl->irqgrps[i]; in apple_gpio_register()
413 ret = devm_gpiochip_add_data(pctl->dev, &pctl->gpio_chip, pctl); in apple_gpio_register()
424 struct apple_gpio_pinctrl *pctl; in apple_gpio_pinctrl_probe() local
441 pctl = devm_kzalloc(&pdev->dev, struct_size(pctl, irqgrps, nirqs), in apple_gpio_pinctrl_probe()
443 if (!pctl) in apple_gpio_pinctrl_probe()
445 pctl->dev = &pdev->dev; in apple_gpio_pinctrl_probe()
446 pctl->gpio_chip.irq.num_parents = nirqs; in apple_gpio_pinctrl_probe()
447 dev_set_drvdata(&pdev->dev, pctl); in apple_gpio_pinctrl_probe()
462 pctl->base = devm_platform_ioremap_resource(pdev, 0); in apple_gpio_pinctrl_probe()
463 if (IS_ERR(pctl->base)) in apple_gpio_pinctrl_probe()
464 return PTR_ERR(pctl->base); in apple_gpio_pinctrl_probe()
466 pctl->map = devm_regmap_init_mmio(&pdev->dev, pctl->base, &regmap_config); in apple_gpio_pinctrl_probe()
467 if (IS_ERR(pctl->map)) in apple_gpio_pinctrl_probe()
468 return dev_err_probe(&pdev->dev, PTR_ERR(pctl->map), in apple_gpio_pinctrl_probe()
474 pins[i].drv_data = pctl; in apple_gpio_pinctrl_probe()
479 pctl->pinctrl_desc.name = dev_name(pctl->dev); in apple_gpio_pinctrl_probe()
480 pctl->pinctrl_desc.pins = pins; in apple_gpio_pinctrl_probe()
481 pctl->pinctrl_desc.npins = npins; in apple_gpio_pinctrl_probe()
482 pctl->pinctrl_desc.pctlops = &apple_gpio_pinctrl_ops; in apple_gpio_pinctrl_probe()
483 pctl->pinctrl_desc.pmxops = &apple_gpio_pinmux_ops; in apple_gpio_pinctrl_probe()
485 pctl->pctldev = devm_pinctrl_register(&pdev->dev, &pctl->pinctrl_desc, pctl); in apple_gpio_pinctrl_probe()
486 if (IS_ERR(pctl->pctldev)) in apple_gpio_pinctrl_probe()
487 return dev_err_probe(&pdev->dev, PTR_ERR(pctl->pctldev), in apple_gpio_pinctrl_probe()
491 res = pinctrl_generic_add_group(pctl->pctldev, pins[i].name, in apple_gpio_pinctrl_probe()
492 pin_nums + i, 1, pctl); in apple_gpio_pinctrl_probe()
494 return dev_err_probe(pctl->dev, res, in apple_gpio_pinctrl_probe()
499 res = pinmux_generic_add_function(pctl->pctldev, pinmux_functions[i], in apple_gpio_pinctrl_probe()
500 pin_names, npins, pctl); in apple_gpio_pinctrl_probe()
502 return dev_err_probe(pctl->dev, res, in apple_gpio_pinctrl_probe()
506 return apple_gpio_register(pctl); in apple_gpio_pinctrl_probe()