Lines Matching refs:info

221 static inline const struct rockchip_pin_group *pinctrl_name_to_group(const struct rockchip_pinctrl *info,
226 for (i = 0; i < info->ngroups; i++) {
227 if (!strcmp(info->groups[i].name, name)) {
228 return &info->groups[i];
239 static struct rockchip_pin_bank *pin_to_bank(struct rockchip_pinctrl *info, unsigned pin)
241 struct rockchip_pin_bank *b = info->ctrl->pin_banks;
250 static struct rockchip_pin_bank *bank_num_to_bank(struct rockchip_pinctrl *info, unsigned num)
252 struct rockchip_pin_bank *b = info->ctrl->pin_banks;
255 for (i = 0; i < info->ctrl->nr_banks; i++, b++) {
270 struct rockchip_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
272 return info->ngroups;
277 struct rockchip_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
279 return info->groups[selector].name;
285 struct rockchip_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
287 if (selector >= info->ngroups) {
291 *pins = info->groups[selector].pins;
292 *npins = info->groups[selector].npins;
300 struct rockchip_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
311 grp = pinctrl_name_to_group(info, np->name);
313 dev_err(info->dev, "unable to find group for node %pOFn\n", np);
771 struct rockchip_pinctrl *info = bank->drvdata;
772 struct rockchip_pin_ctrl *ctrl = info->ctrl;
1353 struct rockchip_pinctrl *info = bank->drvdata;
1354 struct rockchip_pin_ctrl *ctrl = info->ctrl;
1378 struct rockchip_pinctrl *info = bank->drvdata;
1390 dev_err(info->dev, "pin %d is unrouted\n", pin);
1399 regmap = info->regmap_pmu;
1401 regmap = (pin % PINCTRL_ROCKCHIP_EIGHT < PINCTRL_ROCKCHIP_FOUR) ? info->regmap_pmu : info->regmap_base;
1403 regmap = info->regmap_base;
1440 struct rockchip_pinctrl *info = bank->drvdata;
1448 dev_err(info->dev, "pin %d is unrouted\n", pin);
1454 dev_err(info->dev, "pin %d only supports a gpio mux\n", pin);
1477 struct rockchip_pinctrl *info = bank->drvdata;
1493 dev_dbg(info->dev, "setting mux of GPIO%d-%d to %d\n", bank->bank_num, pin, mux);
1496 regmap = info->regmap_pmu;
1498 regmap = (pin % PINCTRL_ROCKCHIP_EIGHT < PINCTRL_ROCKCHIP_FOUR) ? info->regmap_pmu : info->regmap_base;
1500 regmap = info->regmap_base;
1538 route_regmap = info->regmap_pmu;
1541 route_regmap = info->regmap_base;
1580 struct rockchip_pinctrl *info = bank->drvdata;
1584 *regmap = info->regmap_pmu;
1587 *regmap = info->regmap_base;
1609 struct rockchip_pinctrl *info = bank->drvdata;
1613 *regmap = info->regmap_pmu;
1616 *regmap = info->regmap_base;
1638 struct rockchip_pinctrl *info = bank->drvdata;
1642 *regmap = info->regmap_pmu;
1646 *regmap = info->regmap_base;
1667 struct rockchip_pinctrl *info = bank->drvdata;
1671 *regmap = info->regmap_pmu;
1675 *regmap = info->regmap_base;
1695 struct rockchip_pinctrl *info = bank->drvdata;
1699 *regmap = info->regmap_pmu;
1702 *regmap = info->regmap_base;
1724 struct rockchip_pinctrl *info = bank->drvdata;
1728 *regmap = info->regmap_pmu;
1732 *regmap = info->regmap_base;
1753 struct rockchip_pinctrl *info = bank->drvdata;
1758 *regmap = info->regmap_base;
1766 *regmap = info->regmap_pmu;
1770 *regmap = info->regmap_base;
1788 struct rockchip_pinctrl *info = bank->drvdata;
1793 *regmap = info->regmap_base;
1802 *regmap = info->regmap_pmu;
1805 *regmap = info->regmap_base;
1824 struct rockchip_pinctrl *info = bank->drvdata;
1829 *regmap = info->regmap_base;
1836 *regmap = info->regmap_pmu;
1840 *regmap = info->regmap_base;
1858 struct rockchip_pinctrl *info = bank->drvdata;
1860 *regmap = info->regmap_base;
1879 struct rockchip_pinctrl *info = bank->drvdata;
1882 *regmap = info->regmap_pmu;
1886 *regmap = info->regmap_base;
1904 struct rockchip_pinctrl *info = bank->drvdata;
1907 *regmap = info->regmap_pmu;
1910 *regmap = info->regmap_base;
1928 struct rockchip_pinctrl *info = bank->drvdata;
1931 *regmap = info->regmap_pmu;
1934 *regmap = info->regmap_base;
1952 struct rockchip_pinctrl *info = bank->drvdata;
1955 *regmap = info->regmap_pmu;
1958 *regmap = info->regmap_base;
1975 struct rockchip_pinctrl *info = bank->drvdata;
1977 *regmap = info->regmap_base;
1990 struct rockchip_pinctrl *info = bank->drvdata;
1992 *regmap = info->regmap_base;
2009 struct rockchip_pinctrl *info = bank->drvdata;
2013 *regmap = info->regmap_pmu ? info->regmap_pmu : bank->regmap_pull;
2014 *reg = info->regmap_pmu ? RK3188_PULL_PMU_OFFSET : 0;
2019 *regmap = info->regmap_pull ? info->regmap_pull : info->regmap_base;
2020 *reg = info->regmap_pull ? 0 : RK3188_PULL_OFFSET;
2041 struct rockchip_pinctrl *info = bank->drvdata;
2045 *regmap = info->regmap_pmu;
2052 *regmap = info->regmap_base;
2074 struct rockchip_pinctrl *info = bank->drvdata;
2078 *regmap = info->regmap_pmu;
2085 *regmap = info->regmap_base;
2103 struct rockchip_pinctrl *info = bank->drvdata;
2105 *regmap = info->regmap_base;
2119 struct rockchip_pinctrl *info = bank->drvdata;
2121 *regmap = info->regmap_base;
2135 struct rockchip_pinctrl *info = bank->drvdata;
2137 *regmap = info->regmap_base;
2151 struct rockchip_pinctrl *info = bank->drvdata;
2153 *regmap = info->regmap_base;
2168 struct rockchip_pinctrl *info = bank->drvdata;
2172 *regmap = info->regmap_pmu;
2179 *regmap = info->regmap_base;
2198 struct rockchip_pinctrl *info = bank->drvdata;
2202 *regmap = info->regmap_pmu;
2209 *regmap = info->regmap_base;
2229 struct rockchip_pinctrl *info = bank->drvdata;
2233 *regmap = info->regmap_pmu;
2242 *regmap = info->regmap_base;
2258 struct rockchip_pinctrl *info = bank->drvdata;
2263 *regmap = info->regmap_pmu;
2265 *regmap = info->regmap_base;
2285 struct rockchip_pinctrl *info = bank->drvdata;
2288 *regmap = info->regmap_pmu;
2291 *regmap = info->regmap_base;
2310 struct rockchip_pinctrl *info = bank->drvdata;
2313 *regmap = info->regmap_pmu;
2321 *regmap = info->regmap_base;
2340 struct rockchip_pinctrl *info = bank->drvdata;
2344 *regmap = info->regmap_pmu;
2351 *regmap = info->regmap_base;
2383 struct rockchip_pinctrl *info = bank->drvdata;
2384 struct rockchip_pin_ctrl *ctrl = info->ctrl;
2432 dev_err(info->dev, "unsupported bit: %d for pinctrl drive type: %d\n", bit, drv_type);
2443 dev_err(info->dev, "unsupported pinctrl drive type: %d\n", drv_type);
2460 struct rockchip_pinctrl *info = bank->drvdata;
2461 struct rockchip_pin_ctrl *ctrl = info->ctrl;
2468 dev_dbg(info->dev, "setting drive of GPIO%d-%d to %d\n", bank->bank_num, pin_num, strength);
2493 dev_err(info->dev, "unsupported driver strength %d\n", strength);
2533 dev_err(info->dev, "unsupported bit: %d for pinctrl drive type: %d\n", bit, drv_type);
2543 dev_err(info->dev, "unsupported pinctrl drive type: %d\n", drv_type);
2595 struct rockchip_pinctrl *info = bank->drvdata;
2596 struct rockchip_pin_ctrl *ctrl = info->ctrl;
2634 dev_err(info->dev, "unsupported pinctrl type\n");
2641 struct rockchip_pinctrl *info = bank->drvdata;
2642 struct rockchip_pin_ctrl *ctrl = info->ctrl;
2648 dev_dbg(info->dev, "setting pull of GPIO%d-%d to %d\n", bank->bank_num, pin_num, pull);
2696 dev_err(info->dev, "unsupported pull setting %d\n", pull);
2708 dev_err(info->dev, "unsupported pinctrl type\n");
2723 struct rockchip_pinctrl *info = bank->drvdata;
2725 *regmap = info->regmap_base;
2744 struct rockchip_pinctrl *info = bank->drvdata;
2747 *regmap = info->regmap_pmu;
2750 *regmap = info->regmap_base;
2764 struct rockchip_pinctrl *info = bank->drvdata;
2765 struct rockchip_pin_ctrl *ctrl = info->ctrl;
2794 struct rockchip_pinctrl *info = bank->drvdata;
2795 struct rockchip_pin_ctrl *ctrl = info->ctrl;
2801 dev_dbg(info->dev, "setting input schmitt of GPIO%d-%d to %d\n", bank->bank_num, pin_num, enable);
2834 struct rockchip_pinctrl *info = bank->drvdata;
2838 *regmap = info->regmap_pmu;
2842 *regmap = info->regmap_base;
2855 struct rockchip_pinctrl *info = bank->drvdata;
2856 struct rockchip_pin_ctrl *ctrl = info->ctrl;
2878 struct rockchip_pinctrl *info = bank->drvdata;
2879 struct rockchip_pin_ctrl *ctrl = info->ctrl;
2885 dev_dbg(info->dev, "setting slew rate of GPIO%d-%d to %d\n", bank->bank_num, pin_num, speed);
2905 struct rockchip_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
2907 return info->nfunctions;
2912 struct rockchip_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
2914 return info->functions[selector].name;
2920 struct rockchip_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
2922 *groups = info->functions[selector].groups;
2923 *num_groups = info->functions[selector].ngroups;
2930 struct rockchip_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
2931 const unsigned int *pins = info->groups[group].pins;
2932 const struct rockchip_pin_config *data = info->groups[group].data;
2936 dev_dbg(info->dev, "enable function %s group %s\n", info->functions[selector].name, info->groups[group].name);
2942 for (cnt = 0; cnt < info->groups[group].npins; cnt++) {
2943 bank = pin_to_bank(info, pins[cnt]);
3001 struct rockchip_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
3002 struct rockchip_pin_bank *bank = pin_to_bank(info, pin);
3024 if (!rockchip_pinconf_pull_valid(info->ctrl, param)) {
3040 dev_err(info->dev, "pin-%d has been mux to func%d\n", pin, rc);
3051 if (!info->ctrl->drv_calc_reg) {
3061 if (!info->ctrl->schmitt_calc_reg) {
3071 if (!info->ctrl->slew_rate_calc_reg) {
3091 struct rockchip_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
3092 struct rockchip_pin_bank *bank = pin_to_bank(info, pin);
3110 if (!rockchip_pinconf_pull_valid(info->ctrl, param)) {
3123 dev_err(info->dev, "pin-%d has been mux to func%d\n", pin, rc);
3136 if (!info->ctrl->drv_calc_reg) {
3148 if (!info->ctrl->schmitt_calc_reg) {
3160 if (!info->ctrl->slew_rate_calc_reg) {
3192 static void rockchip_pinctrl_child_count(struct rockchip_pinctrl *info, struct device_node *np)
3202 info->nfunctions++;
3203 info->ngroups += of_get_child_count(child);
3208 struct rockchip_pinctrl *info, u32 index)
3217 dev_dbg(info->dev, "group(%d): %pOFn\n", index, np);
3230 dev_err(info->dev, "wrong pins number or pins and configs should be by 4\n");
3236 grp->pins = devm_kcalloc(info->dev, grp->npins, sizeof(unsigned int), GFP_KERNEL);
3237 grp->data = devm_kcalloc(info->dev, grp->npins, sizeof(struct rockchip_pin_config), GFP_KERNEL);
3247 bank = bank_num_to_bank(info, num);
3270 static int rockchip_pinctrl_parse_functions(struct device_node *np, struct rockchip_pinctrl *info, u32 index)
3279 dev_dbg(info->dev, "parse function(%d): %pOFn\n", index, np);
3281 func = &info->functions[index];
3290 func->groups = devm_kcalloc(info->dev, func->ngroups, sizeof(char *), GFP_KERNEL);
3298 grp = &info->groups[grp_index++];
3299 ret = rockchip_pinctrl_parse_groups(child, grp, info, i++);
3309 static int rockchip_pinctrl_parse_dt(struct platform_device *pdev, struct rockchip_pinctrl *info)
3317 rockchip_pinctrl_child_count(info, np);
3319 dev_dbg(&pdev->dev, "nfunctions = %d\n", info->nfunctions);
3320 dev_dbg(&pdev->dev, "ngroups = %d\n", info->ngroups);
3322 info->functions = devm_kcalloc(dev, info->nfunctions, sizeof(struct rockchip_pmx_func), GFP_KERNEL);
3323 if (!info->functions) {
3327 info->groups = devm_kcalloc(dev, info->ngroups, sizeof(struct rockchip_pin_group), GFP_KERNEL);
3328 if (!info->groups) {
3340 ret = rockchip_pinctrl_parse_functions(child, info, i++);
3351 static int rockchip_pinctrl_register(struct platform_device *pdev, struct rockchip_pinctrl *info)
3353 struct pinctrl_desc *ctrldesc = &info->pctl;
3365 pindesc = devm_kcalloc(&pdev->dev, info->ctrl->nr_pins, sizeof(*pindesc), GFP_KERNEL);
3371 ctrldesc->npins = info->ctrl->nr_pins;
3374 for (bank = 0, k = 0; bank < info->ctrl->nr_banks; bank++) {
3375 pin_bank = &info->ctrl->pin_banks[bank];
3383 ret = rockchip_pinctrl_parse_dt(pdev, info);
3388 info->pctl_dev = devm_pinctrl_register(&pdev->dev, ctrldesc, info);
3389 if (IS_ERR(info->pctl_dev)) {
3391 return PTR_ERR(info->pctl_dev);
3521 struct rockchip_pinctrl *info = dev_get_drvdata(dev);
3522 int ret = pinctrl_force_sleep(info->pctl_dev);
3532 if (info->ctrl->type == RK3288) {
3533 ret = regmap_read(info->regmap_base, RK3288_GRF_GPIO6C_IOMUX, &rk3288_grf_gpio6c_iomux);
3535 pinctrl_force_default(info->pctl_dev);
3545 struct rockchip_pinctrl *info = dev_get_drvdata(dev);
3548 if (info->ctrl->type == RK3288) {
3549 ret = regmap_write(info->regmap_base, RK3288_GRF_GPIO6C_IOMUX,
3556 return pinctrl_force_default(info->pctl_dev);
3583 static int rk3308_soc_data_init(struct rockchip_pinctrl *info)
3591 ret = regmap_write(info->regmap_base, RK3308_GRF_SOC_CON13,
3598 ret = regmap_write(info->regmap_base, RK3308_GRF_SOC_CON15,
3607 struct rockchip_pinctrl *info;
3620 info = devm_kzalloc(dev, sizeof(*info), GFP_KERNEL);
3621 if (!info) {
3625 info->dev = dev;
3627 ctrl = rockchip_pinctrl_get_soc_data(info, pdev);
3632 info->ctrl = ctrl;
3636 info->regmap_base = syscon_node_to_regmap(node);
3638 if (IS_ERR(info->regmap_base)) {
3639 return PTR_ERR(info->regmap_base);
3650 info->regmap_base = devm_regmap_init_mmio(&pdev->dev, base, &rockchip_regmap_config);
3653 info->reg_size = resource_size(res);
3656 if (ctrl->type == RK3188 && info->reg_size < 0x200) {
3665 info->regmap_pull = devm_regmap_init_mmio(&pdev->dev, base, &rockchip_regmap_config);
3672 info->regmap_pmu = syscon_node_to_regmap(node);
3674 if (IS_ERR(info->regmap_pmu)) {
3675 return PTR_ERR(info->regmap_pmu);
3681 ret = ctrl->soc_data_init(info);
3687 ret = rockchip_pinctrl_register(pdev, info);
3692 platform_set_drvdata(pdev, info);