Lines Matching defs:pctrl

89 	struct pinctrl_dev *pctrl;
125 static int pm8xxx_read_bank(struct pm8xxx_gpio *pctrl,
131 ret = regmap_write(pctrl->regmap, pin->reg, val);
133 dev_err(pctrl->dev, "failed to select bank %d\n", bank);
137 ret = regmap_read(pctrl->regmap, pin->reg, &val);
139 dev_err(pctrl->dev, "failed to read register %d\n", bank);
146 static int pm8xxx_write_bank(struct pm8xxx_gpio *pctrl,
156 ret = regmap_write(pctrl->regmap, pin->reg, val);
158 dev_err(pctrl->dev, "failed to write register\n");
165 struct pm8xxx_gpio *pctrl = pinctrl_dev_get_drvdata(pctldev);
167 return pctrl->npins;
182 struct pm8xxx_gpio *pctrl = pinctrl_dev_get_drvdata(pctldev);
184 *pins = &pctrl->desc.pins[group].number;
214 struct pm8xxx_gpio *pctrl = pinctrl_dev_get_drvdata(pctldev);
217 *num_groups = pctrl->npins;
225 struct pm8xxx_gpio *pctrl = pinctrl_dev_get_drvdata(pctldev);
226 struct pm8xxx_pin_data *pin = pctrl->desc.pins[group].drv_data;
232 pm8xxx_write_bank(pctrl, pin, 4, val);
248 struct pm8xxx_gpio *pctrl = pinctrl_dev_get_drvdata(pctldev);
249 struct pm8xxx_pin_data *pin = pctrl->desc.pins[offset].drv_data;
318 struct pm8xxx_gpio *pctrl = pinctrl_dev_get_drvdata(pctldev);
319 struct pm8xxx_pin_data *pin = pctrl->desc.pins[offset].drv_data;
345 dev_err(pctrl->dev, "invalid pull-up strength\n");
375 dev_err(pctrl->dev, "invalid drive strength\n");
390 dev_err(pctrl->dev,
400 pm8xxx_write_bank(pctrl, pin, 0, val);
407 pm8xxx_write_bank(pctrl, pin, 1, val);
412 pm8xxx_write_bank(pctrl, pin, 2, val);
418 pm8xxx_write_bank(pctrl, pin, 3, val);
423 pm8xxx_write_bank(pctrl, pin, 4, val);
430 pm8xxx_write_bank(pctrl, pin, 5, val);
453 struct pm8xxx_gpio *pctrl = gpiochip_get_data(chip);
454 struct pm8xxx_pin_data *pin = pctrl->desc.pins[offset].drv_data;
460 pm8xxx_write_bank(pctrl, pin, 1, val);
469 struct pm8xxx_gpio *pctrl = gpiochip_get_data(chip);
470 struct pm8xxx_pin_data *pin = pctrl->desc.pins[offset].drv_data;
480 pm8xxx_write_bank(pctrl, pin, 1, val);
487 struct pm8xxx_gpio *pctrl = gpiochip_get_data(chip);
488 struct pm8xxx_pin_data *pin = pctrl->desc.pins[offset].drv_data;
509 struct pm8xxx_gpio *pctrl = gpiochip_get_data(chip);
510 struct pm8xxx_pin_data *pin = pctrl->desc.pins[offset].drv_data;
519 pm8xxx_write_bank(pctrl, pin, 1, val);
545 struct pm8xxx_gpio *pctrl = gpiochip_get_data(chip);
546 struct pm8xxx_pin_data *pin = pctrl->desc.pins[offset].drv_data;
603 static int pm8xxx_pin_populate(struct pm8xxx_gpio *pctrl,
608 val = pm8xxx_read_bank(pctrl, pin, 0);
614 val = pm8xxx_read_bank(pctrl, pin, 1);
622 val = pm8xxx_read_bank(pctrl, pin, 2);
632 val = pm8xxx_read_bank(pctrl, pin, 3);
639 val = pm8xxx_read_bank(pctrl, pin, 4);
645 val = pm8xxx_read_bank(pctrl, pin, 5);
667 struct pm8xxx_gpio *pctrl = container_of(domain->host_data,
671 fwspec->param[0] > pctrl->chip.ngpio)
715 struct pm8xxx_gpio *pctrl;
718 pctrl = devm_kzalloc(&pdev->dev, sizeof(*pctrl), GFP_KERNEL);
719 if (!pctrl)
722 pctrl->dev = &pdev->dev;
723 pctrl->npins = (uintptr_t) device_get_match_data(&pdev->dev);
725 pctrl->regmap = dev_get_regmap(pdev->dev.parent, NULL);
726 if (!pctrl->regmap) {
731 pctrl->desc = pm8xxx_pinctrl_desc;
732 pctrl->desc.npins = pctrl->npins;
735 pctrl->desc.npins,
742 pctrl->desc.npins,
748 for (i = 0; i < pctrl->desc.npins; i++) {
751 ret = pm8xxx_pin_populate(pctrl, &pin_data[i]);
759 pctrl->desc.pins = pins;
761 pctrl->desc.num_custom_params = ARRAY_SIZE(pm8xxx_gpio_bindings);
762 pctrl->desc.custom_params = pm8xxx_gpio_bindings;
764 pctrl->desc.custom_conf_items = pm8xxx_conf_items;
767 pctrl->pctrl = devm_pinctrl_register(&pdev->dev, &pctrl->desc, pctrl);
768 if (IS_ERR(pctrl->pctrl)) {
770 return PTR_ERR(pctrl->pctrl);
773 pctrl->chip = pm8xxx_gpio_template;
774 pctrl->chip.base = -1;
775 pctrl->chip.parent = &pdev->dev;
776 pctrl->chip.of_node = pdev->dev.of_node;
777 pctrl->chip.of_gpio_n_cells = 2;
778 pctrl->chip.label = dev_name(pctrl->dev);
779 pctrl->chip.ngpio = pctrl->npins;
781 parent_node = of_irq_find_parent(pctrl->dev->of_node);
790 girq = &pctrl->chip.irq;
794 girq->fwnode = of_node_to_fwnode(pctrl->dev->of_node);
801 ret = gpiochip_add_data(&pctrl->chip, pctrl);
817 if (!of_property_read_bool(pctrl->dev->of_node, "gpio-ranges")) {
818 ret = gpiochip_add_pin_range(&pctrl->chip, dev_name(pctrl->dev),
819 0, 0, pctrl->chip.ngpio);
821 dev_err(pctrl->dev, "failed to add pin range\n");
826 platform_set_drvdata(pdev, pctrl);
833 gpiochip_remove(&pctrl->chip);
840 struct pm8xxx_gpio *pctrl = platform_get_drvdata(pdev);
842 gpiochip_remove(&pctrl->chip);