Lines Matching refs:pmx
48 static inline u32 pmx_readl(struct tegra_pmx *pmx, u32 bank, u32 reg) in pmx_readl() argument
50 return readl(pmx->regs[bank] + reg); in pmx_readl()
53 static inline void pmx_writel(struct tegra_pmx *pmx, u32 val, u32 bank, u32 reg) in pmx_writel() argument
55 writel(val, pmx->regs[bank] + reg); in pmx_writel()
60 struct tegra_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); in tegra_pinctrl_get_groups_count() local
62 return pmx->soc->ngroups; in tegra_pinctrl_get_groups_count()
68 struct tegra_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); in tegra_pinctrl_get_group_name() local
70 return pmx->soc->groups[group].name; in tegra_pinctrl_get_group_name()
78 struct tegra_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); in tegra_pinctrl_get_group_pins() local
80 *pins = pmx->soc->groups[group].pins; in tegra_pinctrl_get_group_pins()
81 *num_pins = pmx->soc->groups[group].npins; in tegra_pinctrl_get_group_pins()
240 struct tegra_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); in tegra_pinctrl_get_funcs_count() local
242 return pmx->soc->nfunctions; in tegra_pinctrl_get_funcs_count()
248 struct tegra_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); in tegra_pinctrl_get_func_name() local
250 return pmx->soc->functions[function].name; in tegra_pinctrl_get_func_name()
258 struct tegra_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); in tegra_pinctrl_get_func_groups() local
260 *groups = pmx->soc->functions[function].groups; in tegra_pinctrl_get_func_groups()
261 *num_groups = pmx->soc->functions[function].ngroups; in tegra_pinctrl_get_func_groups()
270 struct tegra_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); in tegra_pinctrl_set_mux() local
275 g = &pmx->soc->groups[group]; in tegra_pinctrl_set_mux()
287 val = pmx_readl(pmx, g->mux_bank, g->mux_reg); in tegra_pinctrl_set_mux()
290 pmx_writel(pmx, val, g->mux_bank, g->mux_reg); in tegra_pinctrl_set_mux()
302 static int tegra_pinconf_reg(struct tegra_pmx *pmx, in tegra_pinconf_reg() argument
352 if (pmx->soc->hsm_in_mux) { in tegra_pinconf_reg()
363 if (pmx->soc->schmitt_in_mux) { in tegra_pinconf_reg()
404 if (pmx->soc->drvtype_in_mux) { in tegra_pinconf_reg()
415 dev_err(pmx->dev, "Invalid config param %04x\n", param); in tegra_pinconf_reg()
431 dev_err(pmx->dev, in tegra_pinconf_reg()
459 struct tegra_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); in tegra_pinconf_group_get() local
468 g = &pmx->soc->groups[group]; in tegra_pinconf_group_get()
470 ret = tegra_pinconf_reg(pmx, g, param, true, &bank, ®, &bit, in tegra_pinconf_group_get()
475 val = pmx_readl(pmx, bank, reg); in tegra_pinconf_group_get()
488 struct tegra_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); in tegra_pinconf_group_set() local
497 g = &pmx->soc->groups[group]; in tegra_pinconf_group_set()
503 ret = tegra_pinconf_reg(pmx, g, param, true, &bank, ®, &bit, in tegra_pinconf_group_set()
508 val = pmx_readl(pmx, bank, reg); in tegra_pinconf_group_set()
534 pmx_writel(pmx, val, bank, reg); in tegra_pinconf_group_set()
558 struct tegra_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); in tegra_pinconf_group_dbg_show() local
565 g = &pmx->soc->groups[group]; in tegra_pinconf_group_dbg_show()
568 ret = tegra_pinconf_reg(pmx, g, cfg_params[i].param, false, in tegra_pinconf_group_dbg_show()
573 val = pmx_readl(pmx, bank, reg); in tegra_pinconf_group_dbg_show()
630 struct tegra_pmx *pmx; in tegra_pinctrl_probe() local
636 pmx = devm_kzalloc(&pdev->dev, sizeof(*pmx), GFP_KERNEL); in tegra_pinctrl_probe()
637 if (!pmx) { in tegra_pinctrl_probe()
641 pmx->dev = &pdev->dev; in tegra_pinctrl_probe()
642 pmx->soc = soc_data; in tegra_pinctrl_probe()
648 pmx->group_pins = devm_kzalloc(&pdev->dev, in tegra_pinctrl_probe()
649 soc_data->ngroups * 4 * sizeof(*pmx->group_pins), in tegra_pinctrl_probe()
651 if (!pmx->group_pins) in tegra_pinctrl_probe()
654 group_pins = pmx->group_pins; in tegra_pinctrl_probe()
672 BUG_ON(group_pins - pmx->group_pins >= in tegra_pinctrl_probe()
679 tegra_pinctrl_gpio_range.npins = pmx->soc->ngpios; in tegra_pinctrl_probe()
681 tegra_pinctrl_desc.pins = pmx->soc->pins; in tegra_pinctrl_probe()
682 tegra_pinctrl_desc.npins = pmx->soc->npins; in tegra_pinctrl_probe()
689 pmx->nbanks = i; in tegra_pinctrl_probe()
691 pmx->regs = devm_kzalloc(&pdev->dev, pmx->nbanks * sizeof(*pmx->regs), in tegra_pinctrl_probe()
693 if (!pmx->regs) { in tegra_pinctrl_probe()
698 for (i = 0; i < pmx->nbanks; i++) { in tegra_pinctrl_probe()
700 pmx->regs[i] = devm_ioremap_resource(&pdev->dev, res); in tegra_pinctrl_probe()
701 if (IS_ERR(pmx->regs[i])) in tegra_pinctrl_probe()
702 return PTR_ERR(pmx->regs[i]); in tegra_pinctrl_probe()
705 pmx->pctl = pinctrl_register(&tegra_pinctrl_desc, &pdev->dev, pmx); in tegra_pinctrl_probe()
706 if (!pmx->pctl) { in tegra_pinctrl_probe()
711 pinctrl_add_gpio_range(pmx->pctl, &tegra_pinctrl_gpio_range); in tegra_pinctrl_probe()
713 platform_set_drvdata(pdev, pmx); in tegra_pinctrl_probe()
723 struct tegra_pmx *pmx = platform_get_drvdata(pdev); in tegra_pinctrl_remove() local
725 pinctrl_unregister(pmx->pctl); in tegra_pinctrl_remove()