Lines Matching refs:pctl

147 	struct stm32_pinctrl *pctl = dev_get_drvdata(bank->gpio_chip.parent);  in stm32_gpio_request()  local
151 range = pinctrl_find_gpio_range_from_pin_nolock(pctl->pctl_dev, pin); in stm32_gpio_request()
153 dev_err(pctl->dev, "pin %d not in range.\n", pin); in stm32_gpio_request()
248 struct stm32_pinctrl *pctl = dev_get_drvdata(bank->gpio_chip.parent); in stm32_gpio_irq_request_resources() local
257 dev_err(pctl->dev, "unable to lock HW IRQ %lu for IRQ\n", in stm32_gpio_irq_request_resources()
302 struct stm32_pinctrl *pctl = dev_get_drvdata(bank->gpio_chip.parent); in stm32_gpio_domain_activate() local
304 regmap_field_write(pctl->irqmux[irq_data->hwirq], bank->bank_ioport_nr); in stm32_gpio_domain_activate()
338 stm32_pctrl_find_group_by_pin(struct stm32_pinctrl *pctl, u32 pin) in stm32_pctrl_find_group_by_pin() argument
342 for (i = 0; i < pctl->ngroups; i++) { in stm32_pctrl_find_group_by_pin()
343 struct stm32_pinctrl_group *grp = pctl->groups + i; in stm32_pctrl_find_group_by_pin()
352 static bool stm32_pctrl_is_function_valid(struct stm32_pinctrl *pctl, in stm32_pctrl_is_function_valid() argument
357 for (i = 0; i < pctl->match_data->npins; i++) { in stm32_pctrl_is_function_valid()
358 const struct stm32_desc_pin *pin = pctl->match_data->pins + i; in stm32_pctrl_is_function_valid()
376 static int stm32_pctrl_dt_node_to_map_func(struct stm32_pinctrl *pctl, in stm32_pctrl_dt_node_to_map_func() argument
387 if (!stm32_pctrl_is_function_valid(pctl, pin, fnum)) { in stm32_pctrl_dt_node_to_map_func()
388 dev_err(pctl->dev, "invalid function %d on pin %d .\n", in stm32_pctrl_dt_node_to_map_func()
405 struct stm32_pinctrl *pctl; in stm32_pctrl_dt_subnode_to_map() local
415 pctl = pinctrl_dev_get_drvdata(pctldev); in stm32_pctrl_dt_subnode_to_map()
419 dev_err(pctl->dev, "missing pins property in node %s .\n", in stm32_pctrl_dt_subnode_to_map()
459 if (!stm32_pctrl_is_function_valid(pctl, pin, func)) { in stm32_pctrl_dt_subnode_to_map()
460 dev_err(pctl->dev, "invalid function.\n"); in stm32_pctrl_dt_subnode_to_map()
464 grp = stm32_pctrl_find_group_by_pin(pctl, pin); in stm32_pctrl_dt_subnode_to_map()
466 dev_err(pctl->dev, "unable to match pin %d to group\n", in stm32_pctrl_dt_subnode_to_map()
471 err = stm32_pctrl_dt_node_to_map_func(pctl, pin, func, grp, map, in stm32_pctrl_dt_subnode_to_map()
515 struct stm32_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); in stm32_pctrl_get_groups_count() local
517 return pctl->ngroups; in stm32_pctrl_get_groups_count()
523 struct stm32_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); in stm32_pctrl_get_group_name() local
525 return pctl->groups[group].name; in stm32_pctrl_get_group_name()
533 struct stm32_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); in stm32_pctrl_get_group_pins() local
535 *pins = (unsigned *)&pctl->groups[group].pin; in stm32_pctrl_get_group_pins()
568 struct stm32_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); in stm32_pmx_get_func_groups() local
570 *groups = pctl->grp_names; in stm32_pmx_get_func_groups()
571 *num_groups = pctl->ngroups; in stm32_pmx_get_func_groups()
629 struct stm32_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); in stm32_pmx_set_mux() local
630 struct stm32_pinctrl_group *g = pctl->groups + group; in stm32_pmx_set_mux()
636 ret = stm32_pctrl_is_function_valid(pctl, g->pin, function); in stm32_pmx_set_mux()
638 dev_err(pctl->dev, "invalid function %d on group %d .\n", in stm32_pmx_set_mux()
645 dev_err(pctl->dev, "No gpio range defined.\n"); in stm32_pmx_set_mux()
817 struct stm32_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); in stm32_pconf_parse_conf() local
824 dev_err(pctl->dev, "No gpio range defined.\n"); in stm32_pconf_parse_conf()
865 struct stm32_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); in stm32_pconf_group_get() local
867 *config = pctl->groups[group].config; in stm32_pconf_group_get()
875 struct stm32_pinctrl *pctl = pinctrl_dev_get_drvdata(pctldev); in stm32_pconf_group_set() local
876 struct stm32_pinctrl_group *g = &pctl->groups[group]; in stm32_pconf_group_set()
964 static int stm32_gpiolib_register_bank(struct stm32_pinctrl *pctl, in stm32_gpiolib_register_bank() argument
967 struct stm32_gpio_bank *bank = &pctl->banks[pctl->nbanks]; in stm32_gpiolib_register_bank()
971 struct device *dev = pctl->dev; in stm32_gpiolib_register_bank()
1008 bank_nr = pctl->nbanks; in stm32_gpiolib_register_bank()
1016 pinctrl_add_gpio_range(pctl->pctl_dev, in stm32_gpiolib_register_bank()
1017 &pctl->banks[bank_nr].range); in stm32_gpiolib_register_bank()
1035 bank->domain = irq_domain_create_hierarchy(pctl->domain, 0, in stm32_gpiolib_register_bank()
1053 struct stm32_pinctrl *pctl) in stm32_pctrl_dt_setup_irq() argument
1065 pctl->domain = irq_find_host(parent); in stm32_pctrl_dt_setup_irq()
1066 if (!pctl->domain) in stm32_pctrl_dt_setup_irq()
1069 pctl->regmap = syscon_regmap_lookup_by_phandle(np, "st,syscfg"); in stm32_pctrl_dt_setup_irq()
1070 if (IS_ERR(pctl->regmap)) in stm32_pctrl_dt_setup_irq()
1071 return PTR_ERR(pctl->regmap); in stm32_pctrl_dt_setup_irq()
1073 rm = pctl->regmap; in stm32_pctrl_dt_setup_irq()
1095 pctl->irqmux[i] = devm_regmap_field_alloc(dev, rm, mux); in stm32_pctrl_dt_setup_irq()
1096 if (IS_ERR(pctl->irqmux[i])) in stm32_pctrl_dt_setup_irq()
1097 return PTR_ERR(pctl->irqmux[i]); in stm32_pctrl_dt_setup_irq()
1105 struct stm32_pinctrl *pctl = platform_get_drvdata(pdev); in stm32_pctrl_build_state() local
1108 pctl->ngroups = pctl->match_data->npins; in stm32_pctrl_build_state()
1111 pctl->groups = devm_kcalloc(&pdev->dev, pctl->ngroups, in stm32_pctrl_build_state()
1112 sizeof(*pctl->groups), GFP_KERNEL); in stm32_pctrl_build_state()
1113 if (!pctl->groups) in stm32_pctrl_build_state()
1117 pctl->grp_names = devm_kcalloc(&pdev->dev, pctl->ngroups, in stm32_pctrl_build_state()
1118 sizeof(*pctl->grp_names), GFP_KERNEL); in stm32_pctrl_build_state()
1119 if (!pctl->grp_names) in stm32_pctrl_build_state()
1122 for (i = 0; i < pctl->match_data->npins; i++) { in stm32_pctrl_build_state()
1123 const struct stm32_desc_pin *pin = pctl->match_data->pins + i; in stm32_pctrl_build_state()
1124 struct stm32_pinctrl_group *group = pctl->groups + i; in stm32_pctrl_build_state()
1129 pctl->grp_names[i] = pin->pin.name; in stm32_pctrl_build_state()
1141 struct stm32_pinctrl *pctl; in stm32_pctl_probe() local
1157 pctl = devm_kzalloc(dev, sizeof(*pctl), GFP_KERNEL); in stm32_pctl_probe()
1158 if (!pctl) in stm32_pctl_probe()
1161 platform_set_drvdata(pdev, pctl); in stm32_pctl_probe()
1163 pctl->dev = dev; in stm32_pctl_probe()
1164 pctl->match_data = match->data; in stm32_pctl_probe()
1172 ret = stm32_pctrl_dt_setup_irq(pdev, pctl); in stm32_pctl_probe()
1177 pins = devm_kcalloc(&pdev->dev, pctl->match_data->npins, sizeof(*pins), in stm32_pctl_probe()
1182 for (i = 0; i < pctl->match_data->npins; i++) in stm32_pctl_probe()
1183 pins[i] = pctl->match_data->pins[i].pin; in stm32_pctl_probe()
1185 pctl->pctl_desc.name = dev_name(&pdev->dev); in stm32_pctl_probe()
1186 pctl->pctl_desc.owner = THIS_MODULE; in stm32_pctl_probe()
1187 pctl->pctl_desc.pins = pins; in stm32_pctl_probe()
1188 pctl->pctl_desc.npins = pctl->match_data->npins; in stm32_pctl_probe()
1189 pctl->pctl_desc.confops = &stm32_pconf_ops; in stm32_pctl_probe()
1190 pctl->pctl_desc.pctlops = &stm32_pctrl_ops; in stm32_pctl_probe()
1191 pctl->pctl_desc.pmxops = &stm32_pmx_ops; in stm32_pctl_probe()
1192 pctl->dev = &pdev->dev; in stm32_pctl_probe()
1194 pctl->pctl_dev = devm_pinctrl_register(&pdev->dev, &pctl->pctl_desc, in stm32_pctl_probe()
1195 pctl); in stm32_pctl_probe()
1197 if (IS_ERR(pctl->pctl_dev)) { in stm32_pctl_probe()
1199 return PTR_ERR(pctl->pctl_dev); in stm32_pctl_probe()
1210 pctl->banks = devm_kcalloc(dev, banks, sizeof(*pctl->banks), in stm32_pctl_probe()
1212 if (!pctl->banks) in stm32_pctl_probe()
1217 ret = stm32_gpiolib_register_bank(pctl, child); in stm32_pctl_probe()
1221 pctl->nbanks++; in stm32_pctl_probe()