Lines Matching refs:info

516 static void st_pinconf_set_retime_packed(struct st_pinctrl *info,
519 const struct st_pctl_data *data = info->data;
546 static void st_pinconf_set_retime_dedicated(struct st_pinctrl *info,
558 info->data, config);
597 static int st_pinconf_get_retime_packed(struct st_pinctrl *info,
600 const struct st_pctl_data *data = info->data;
630 static int st_pinconf_get_retime_dedicated(struct st_pinctrl *info,
644 delay = st_pinconf_bit_to_delay(delay_bits, info->data, output);
772 struct st_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
774 return info->ngroups;
780 struct st_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
782 return info->groups[selector].name;
788 struct st_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
790 if (selector >= info->ngroups)
793 *pins = info->groups[selector].pins;
794 *npins = info->groups[selector].npins;
800 const struct st_pinctrl *info, const char *name)
804 for (i = 0; i < info->ngroups; i++) {
805 if (!strcmp(info->groups[i].name, name))
806 return &info->groups[i];
815 struct st_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
821 grp = st_pctl_find_group_by_name(info, np->name);
823 dev_err(info->dev, "unable to find group for node %pOFn\n",
878 struct st_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
880 return info->nfunctions;
886 struct st_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
888 return info->functions[selector].name;
894 struct st_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
895 *grps = info->functions[selector].groups;
896 *ngrps = info->functions[selector].ngroups;
904 struct st_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
905 struct st_pinconf *conf = info->groups[group].pin_conf;
909 for (i = 0; i < info->groups[group].npins; i++) {
944 static void st_pinconf_get_retime(struct st_pinctrl *info,
947 if (info->data->rt_style == st_retime_style_packed)
948 st_pinconf_get_retime_packed(info, pc, pin, config);
949 else if (info->data->rt_style == st_retime_style_dedicated)
951 st_pinconf_get_retime_dedicated(info, pc,
955 static void st_pinconf_set_retime(struct st_pinctrl *info,
958 if (info->data->rt_style == st_retime_style_packed)
959 st_pinconf_set_retime_packed(info, pc, config, pin);
960 else if (info->data->rt_style == st_retime_style_dedicated)
962 st_pinconf_set_retime_dedicated(info, pc,
970 struct st_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
976 st_pinconf_set_retime(info, pc, pin, configs[i]);
986 struct st_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
991 st_pinconf_get_retime(info, pc, pin, config);
1039 static void st_pctl_dt_child_count(struct st_pinctrl *info,
1045 info->nbanks++;
1047 info->nfunctions++;
1048 info->ngroups += of_get_child_count(child);
1053 static int st_pctl_dt_setup_retime_packed(struct st_pinctrl *info,
1056 struct device *dev = info->dev;
1057 struct regmap *rm = info->regmap;
1058 const struct st_pctl_data *data = info->data;
1089 static int st_pctl_dt_setup_retime_dedicated(struct st_pinctrl *info,
1092 struct device *dev = info->dev;
1093 struct regmap *rm = info->regmap;
1094 const struct st_pctl_data *data = info->data;
1113 static int st_pctl_dt_setup_retime(struct st_pinctrl *info,
1116 const struct st_pctl_data *data = info->data;
1118 return st_pctl_dt_setup_retime_packed(info, bank, pc);
1120 return st_pctl_dt_setup_retime_dedicated(info, bank, pc);
1138 static void st_parse_syscfgs(struct st_pinctrl *info, int bank,
1141 const struct st_pctl_data *data = info->data;
1149 struct st_pio_control *pc = &info->banks[bank].pc;
1150 struct device *dev = info->dev;
1151 struct regmap *regmap = info->regmap;
1161 st_pctl_dt_setup_retime(info, bank, pc);
1171 struct st_pctl_group *grp, struct st_pinctrl *info, int idx)
1200 grp->pins = devm_kcalloc(info->dev, npins, sizeof(u32), GFP_KERNEL);
1201 grp->pin_conf = devm_kcalloc(info->dev,
1248 struct st_pinctrl *info, u32 index, int *grp_index)
1255 func = &info->functions[index];
1259 dev_err(info->dev, "No groups defined\n");
1262 func->groups = devm_kcalloc(info->dev,
1270 grp = &info->groups[*grp_index];
1272 ret = st_pctl_dt_parse_groups(child, grp, info, i++);
1278 dev_info(info->dev, "Function[%d\t name:%s,\tgroups:%d]\n",
1443 struct st_pinctrl *info = irq_desc_get_handler_data(desc);
1449 status = readl(info->irqmux_base);
1451 for_each_set_bit(n, &status, info->nbanks)
1452 __gpio_irq_handler(&info->banks[n]);
1479 static int st_gpiolib_register_bank(struct st_pinctrl *info,
1482 struct st_gpio_bank *bank = &info->banks[bank_nr];
1484 struct device *dev = info->dev;
1540 if (!info->irqmux_base) {
1578 struct pinctrl_desc *pctl_desc, struct st_pinctrl *info)
1589 st_pctl_dt_child_count(info, np);
1590 if (!info->nbanks) {
1595 dev_info(&pdev->dev, "nbanks = %d\n", info->nbanks);
1596 dev_info(&pdev->dev, "nfunctions = %d\n", info->nfunctions);
1597 dev_info(&pdev->dev, "ngroups = %d\n", info->ngroups);
1599 info->functions = devm_kcalloc(&pdev->dev,
1600 info->nfunctions, sizeof(*info->functions), GFP_KERNEL);
1602 info->groups = devm_kcalloc(&pdev->dev,
1603 info->ngroups, sizeof(*info->groups),
1606 info->banks = devm_kcalloc(&pdev->dev,
1607 info->nbanks, sizeof(*info->banks), GFP_KERNEL);
1609 if (!info->functions || !info->groups || !info->banks)
1612 info->regmap = syscon_regmap_lookup_by_phandle(np, "st,syscfg");
1613 if (IS_ERR(info->regmap)) {
1614 dev_err(info->dev, "No syscfg phandle specified\n");
1615 return PTR_ERR(info->regmap);
1617 info->data = of_match_node(st_pctl_of_match, np)->data;
1624 info->irqmux_base = devm_ioremap_resource(&pdev->dev, res);
1626 if (IS_ERR(info->irqmux_base))
1627 return PTR_ERR(info->irqmux_base);
1630 info);
1634 pctl_desc->npins = info->nbanks * ST_GPIO_PINS_PER_BANK;
1646 ret = st_gpiolib_register_bank(info, bank, child);
1652 k = info->banks[bank].range.pin_base;
1653 bank_name = info->banks[bank].range.name;
1660 st_parse_syscfgs(info, bank, child);
1663 ret = st_pctl_parse_functions(child, info,
1678 struct st_pinctrl *info;
1691 info = devm_kzalloc(&pdev->dev, sizeof(*info), GFP_KERNEL);
1692 if (!info)
1695 info->dev = &pdev->dev;
1696 platform_set_drvdata(pdev, info);
1697 ret = st_pctl_probe_dt(pdev, pctl_desc, info);
1707 info->pctl = devm_pinctrl_register(&pdev->dev, pctl_desc, info);
1708 if (IS_ERR(info->pctl)) {
1710 return PTR_ERR(info->pctl);
1713 for (i = 0; i < info->nbanks; i++)
1714 pinctrl_add_gpio_range(info->pctl, &info->banks[i].range);