Lines Matching refs:pmx

31 static void muxregs_endisable(struct spear_pmx *pmx,  in muxregs_endisable()  argument
40 val = pmx_readl(pmx, muxreg->reg); in muxregs_endisable()
49 pmx_writel(pmx, val, muxreg->reg); in muxregs_endisable()
53 static int set_mode(struct spear_pmx *pmx, int mode) in set_mode() argument
59 if (!pmx->machdata->pmx_modes || !pmx->machdata->npmx_modes) in set_mode()
62 for (i = 0; i < pmx->machdata->npmx_modes; i++) { in set_mode()
63 if (pmx->machdata->pmx_modes[i]->mode == (1 << mode)) { in set_mode()
64 pmx_mode = pmx->machdata->pmx_modes[i]; in set_mode()
72 val = pmx_readl(pmx, pmx_mode->reg); in set_mode()
75 pmx_writel(pmx, val, pmx_mode->reg); in set_mode()
77 pmx->machdata->mode = pmx_mode->mode; in set_mode()
78 dev_info(pmx->dev, "Configured Mode: %s with id: %x\n\n", in set_mode()
116 struct spear_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); in spear_pinctrl_get_groups_cnt() local
118 return pmx->machdata->ngroups; in spear_pinctrl_get_groups_cnt()
124 struct spear_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); in spear_pinctrl_get_group_name() local
126 return pmx->machdata->groups[group]->name; in spear_pinctrl_get_group_name()
132 struct spear_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); in spear_pinctrl_get_group_pins() local
134 *pins = pmx->machdata->groups[group]->pins; in spear_pinctrl_get_group_pins()
135 *num_pins = pmx->machdata->groups[group]->npins; in spear_pinctrl_get_group_pins()
151 struct spear_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); in spear_pinctrl_dt_node_to_map() local
171 dev_err(pmx->dev, "No child nodes passed via DT\n"); in spear_pinctrl_dt_node_to_map()
212 struct spear_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); in spear_pinctrl_get_funcs_count() local
214 return pmx->machdata->nfunctions; in spear_pinctrl_get_funcs_count()
220 struct spear_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); in spear_pinctrl_get_func_name() local
222 return pmx->machdata->functions[function]->name; in spear_pinctrl_get_func_name()
229 struct spear_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); in spear_pinctrl_get_func_groups() local
231 *groups = pmx->machdata->functions[function]->groups; in spear_pinctrl_get_func_groups()
232 *ngroups = pmx->machdata->functions[function]->ngroups; in spear_pinctrl_get_func_groups()
240 struct spear_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); in spear_pinctrl_endisable() local
246 pgroup = pmx->machdata->groups[group]; in spear_pinctrl_endisable()
252 if (pmx->machdata->modes_supported) { in spear_pinctrl_endisable()
253 if (!(pmx->machdata->mode & modemux->modes)) in spear_pinctrl_endisable()
258 muxregs_endisable(pmx, modemux->muxregs, modemux->nmuxregs, in spear_pinctrl_endisable()
263 dev_err(pmx->dev, "pinmux group: %s not supported\n", in spear_pinctrl_endisable()
278 static struct spear_gpio_pingroup *get_gpio_pingroup(struct spear_pmx *pmx, in get_gpio_pingroup() argument
284 if (!pmx->machdata->gpio_pingroups) in get_gpio_pingroup()
287 for (i = 0; i < pmx->machdata->ngpio_pingroups; i++) { in get_gpio_pingroup()
288 gpio_pingroup = &pmx->machdata->gpio_pingroups[i]; in get_gpio_pingroup()
302 struct spear_pmx *pmx = pinctrl_dev_get_drvdata(pctldev); in gpio_request_endisable() local
303 struct spear_pinctrl_machdata *machdata = pmx->machdata; in gpio_request_endisable()
310 gpio_pingroup = get_gpio_pingroup(pmx, offset); in gpio_request_endisable()
312 muxregs_endisable(pmx, gpio_pingroup->muxregs, in gpio_request_endisable()
320 machdata->gpio_request_endisable(pmx, offset, enable); in gpio_request_endisable()
358 struct spear_pmx *pmx; in spear_pinctrl_probe() local
363 pmx = devm_kzalloc(&pdev->dev, sizeof(*pmx), GFP_KERNEL); in spear_pinctrl_probe()
364 if (!pmx) { in spear_pinctrl_probe()
370 pmx->vbase = devm_ioremap_resource(&pdev->dev, res); in spear_pinctrl_probe()
371 if (IS_ERR(pmx->vbase)) in spear_pinctrl_probe()
372 return PTR_ERR(pmx->vbase); in spear_pinctrl_probe()
374 pmx->dev = &pdev->dev; in spear_pinctrl_probe()
375 pmx->machdata = machdata; in spear_pinctrl_probe()
386 if (set_mode(pmx, mode)) { in spear_pinctrl_probe()
393 platform_set_drvdata(pdev, pmx); in spear_pinctrl_probe()
398 pmx->pctl = pinctrl_register(&spear_pinctrl_desc, &pdev->dev, pmx); in spear_pinctrl_probe()
399 if (!pmx->pctl) { in spear_pinctrl_probe()
409 struct spear_pmx *pmx = platform_get_drvdata(pdev); in spear_pinctrl_remove() local
411 pinctrl_unregister(pmx->pctl); in spear_pinctrl_remove()