Lines Matching refs:pctl
120 struct axp20x_pctl *pctl = gpiochip_get_data(chip);
124 ret = regmap_read(pctl->regmap, AXP20X_GPIO20_SS, &val);
128 return !!(val & BIT(offset + pctl->desc->gpio_status_offset));
134 struct axp20x_pctl *pctl = gpiochip_get_data(chip);
142 ret = regmap_read(pctl->regmap, reg, &val);
175 struct axp20x_pctl *pctl = gpiochip_get_data(chip);
182 regmap_update_bits(pctl->regmap, reg,
191 struct axp20x_pctl *pctl = pinctrl_dev_get_drvdata(pctldev);
198 return regmap_update_bits(pctl->regmap, reg, AXP20X_GPIO_FUNCTIONS,
204 struct axp20x_pctl *pctl = pinctrl_dev_get_drvdata(pctldev);
206 return ARRAY_SIZE(pctl->funcs);
212 struct axp20x_pctl *pctl = pinctrl_dev_get_drvdata(pctldev);
214 return pctl->funcs[selector].name;
222 struct axp20x_pctl *pctl = pinctrl_dev_get_drvdata(pctldev);
224 *groups = pctl->funcs[selector].groups;
225 *num_groups = pctl->funcs[selector].ngroups;
233 struct axp20x_pctl *pctl = pinctrl_dev_get_drvdata(pctldev);
239 pctl->funcs[function].muxval);
242 mask = pctl->desc->ldo_mask;
244 mask = pctl->desc->adc_mask;
258 return axp20x_pmx_set(pctldev, group, pctl->funcs[function].muxval);
265 struct axp20x_pctl *pctl = pinctrl_dev_get_drvdata(pctldev);
269 pctl->funcs[AXP20X_FUNC_GPIO_IN].muxval);
272 pctl->funcs[AXP20X_FUNC_GPIO_OUT].muxval);
286 struct axp20x_pctl *pctl = pinctrl_dev_get_drvdata(pctldev);
288 return pctl->desc->npins;
294 struct axp20x_pctl *pctl = pinctrl_dev_get_drvdata(pctldev);
296 *pins = (unsigned int *)&pctl->desc->pins[selector];
305 struct axp20x_pctl *pctl = pinctrl_dev_get_drvdata(pctldev);
307 return pctl->desc->pins[selector].name;
347 struct axp20x_pctl *pctl = platform_get_drvdata(pdev);
348 int i, ret, pin, npins = pctl->desc->npins;
350 pctl->funcs[AXP20X_FUNC_GPIO_OUT].name = "gpio_out";
351 pctl->funcs[AXP20X_FUNC_GPIO_OUT].muxval = AXP20X_MUX_GPIO_OUT;
352 pctl->funcs[AXP20X_FUNC_GPIO_IN].name = "gpio_in";
353 pctl->funcs[AXP20X_FUNC_GPIO_IN].muxval = AXP20X_MUX_GPIO_IN;
354 pctl->funcs[AXP20X_FUNC_LDO].name = "ldo";
359 pctl->funcs[AXP20X_FUNC_ADC].name = "adc";
360 pctl->funcs[AXP20X_FUNC_ADC].muxval = pctl->desc->adc_mux;
364 pctl->funcs[i].ngroups = npins;
365 pctl->funcs[i].groups = devm_kcalloc(&pdev->dev,
368 if (!pctl->funcs[i].groups)
371 pctl->funcs[i].groups[pin] = pctl->desc->pins[pin].name;
374 ret = axp20x_funcs_groups_from_mask(&pdev->dev, pctl->desc->ldo_mask,
375 npins, &pctl->funcs[AXP20X_FUNC_LDO],
376 pctl->desc->pins);
380 ret = axp20x_funcs_groups_from_mask(&pdev->dev, pctl->desc->adc_mask,
381 npins, &pctl->funcs[AXP20X_FUNC_ADC],
382 pctl->desc->pins);
399 struct axp20x_pctl *pctl;
412 pctl = devm_kzalloc(&pdev->dev, sizeof(*pctl), GFP_KERNEL);
413 if (!pctl)
416 pctl->chip.base = -1;
417 pctl->chip.can_sleep = true;
418 pctl->chip.request = gpiochip_generic_request;
419 pctl->chip.free = gpiochip_generic_free;
420 pctl->chip.parent = &pdev->dev;
421 pctl->chip.label = dev_name(&pdev->dev);
422 pctl->chip.owner = THIS_MODULE;
423 pctl->chip.get = axp20x_gpio_get;
424 pctl->chip.get_direction = axp20x_gpio_get_direction;
425 pctl->chip.set = axp20x_gpio_set;
426 pctl->chip.direction_input = axp20x_gpio_input;
427 pctl->chip.direction_output = axp20x_gpio_output;
429 pctl->desc = of_device_get_match_data(dev);
431 pctl->chip.ngpio = pctl->desc->npins;
433 pctl->regmap = axp20x->regmap;
434 pctl->dev = &pdev->dev;
436 platform_set_drvdata(pdev, pctl);
450 pctrl_desc->pins = pctl->desc->pins;
451 pctrl_desc->npins = pctl->desc->npins;
455 pctl->pctl_dev = devm_pinctrl_register(&pdev->dev, pctrl_desc, pctl);
456 if (IS_ERR(pctl->pctl_dev)) {
458 return PTR_ERR(pctl->pctl_dev);
461 ret = devm_gpiochip_add_data(&pdev->dev, &pctl->chip, pctl);
467 ret = gpiochip_add_pin_range(&pctl->chip, dev_name(&pdev->dev),
468 pctl->desc->pins->number,
469 pctl->desc->pins->number,
470 pctl->desc->npins);