Lines Matching defs:ipctl

60 	struct imx_pinctrl *ipctl = pinctrl_dev_get_drvdata(pctldev);
61 const struct imx_pinctrl_soc_info *info = ipctl->info;
75 dev_err(ipctl->dev, "unable to find group for node %pOFn\n", np);
163 static int imx_pmx_set_one_pin_mmio(struct imx_pinctrl *ipctl,
166 const struct imx_pinctrl_soc_info *info = ipctl->info;
172 pin_reg = &ipctl->pin_regs[pin_id];
175 dev_dbg(ipctl->dev, "Pin(%s) does not support mux function\n",
183 reg = readl(ipctl->base + pin_reg->mux_reg);
186 writel(reg, ipctl->base + pin_reg->mux_reg);
187 dev_dbg(ipctl->dev, "write: offset 0x%x val 0x%x\n",
190 writel(pin_mmio->mux_mode, ipctl->base + pin_reg->mux_reg);
191 dev_dbg(ipctl->dev, "write: offset 0x%x val 0x%x\n",
218 val = readl(ipctl->base + pin_mmio->input_reg);
221 writel(val, ipctl->base + pin_mmio->input_reg);
227 if (ipctl->input_sel_base)
228 writel(pin_mmio->input_val, ipctl->input_sel_base +
231 writel(pin_mmio->input_val, ipctl->base +
233 dev_dbg(ipctl->dev,
244 struct imx_pinctrl *ipctl = pinctrl_dev_get_drvdata(pctldev);
245 const struct imx_pinctrl_soc_info *info = ipctl->info;
266 dev_dbg(ipctl->dev, "enable function %s group %s\n",
277 err = imx_pmx_set_one_pin_mmio(ipctl, pin);
294 static u32 imx_pinconf_decode_generic_config(struct imx_pinctrl *ipctl,
298 const struct imx_pinctrl_soc_info *info = ipctl->info;
330 struct imx_pinctrl *ipctl)
332 const struct imx_pinctrl_soc_info *info = ipctl->info;
333 struct pinctrl_dev *pctl = ipctl->pctl;
346 return imx_pinconf_decode_generic_config(ipctl, configs, num_configs);
352 struct imx_pinctrl *ipctl = pinctrl_dev_get_drvdata(pctldev);
353 const struct imx_pinctrl_soc_info *info = ipctl->info;
354 const struct imx_pin_reg *pin_reg = &ipctl->pin_regs[pin_id];
357 dev_err(ipctl->dev, "Pin(%s) does not support config function\n",
362 *config = readl(ipctl->base + pin_reg->conf_reg);
373 struct imx_pinctrl *ipctl = pinctrl_dev_get_drvdata(pctldev);
374 const struct imx_pinctrl_soc_info *info = ipctl->info;
386 struct imx_pinctrl *ipctl = pinctrl_dev_get_drvdata(pctldev);
387 const struct imx_pinctrl_soc_info *info = ipctl->info;
388 const struct imx_pin_reg *pin_reg = &ipctl->pin_regs[pin_id];
392 dev_err(ipctl->dev, "Pin(%s) does not support config function\n",
397 dev_dbg(ipctl->dev, "pinconf set pin %s\n",
403 reg = readl(ipctl->base + pin_reg->conf_reg);
406 writel(reg, ipctl->base + pin_reg->conf_reg);
407 dev_dbg(ipctl->dev, "write: offset 0x%x val 0x%x\n",
410 writel(configs[i], ipctl->base + pin_reg->conf_reg);
411 dev_dbg(ipctl->dev, "write: offset 0x%x val 0x%lx\n",
423 struct imx_pinctrl *ipctl = pinctrl_dev_get_drvdata(pctldev);
424 const struct imx_pinctrl_soc_info *info = ipctl->info;
437 struct imx_pinctrl *ipctl = pinctrl_dev_get_drvdata(pctldev);
438 const struct imx_pinctrl_soc_info *info = ipctl->info;
446 dev_err(ipctl->dev, "failed to get %s pinconf\n",
452 pin_reg = &ipctl->pin_regs[pin_id];
458 config = readl(ipctl->base + pin_reg->conf_reg);
515 static void imx_pinctrl_parse_pin_mmio(struct imx_pinctrl *ipctl,
520 const struct imx_pinctrl_soc_info *info = ipctl->info;
541 pin_reg = &ipctl->pin_regs[*pin_id];
551 pin_mmio->config = imx_pinconf_parse_generic_config(np, ipctl);
564 dev_dbg(ipctl->dev, "%s: 0x%x 0x%08lx", info->pins[*pin_id].name,
570 struct imx_pinctrl *ipctl,
573 const struct imx_pinctrl_soc_info *info = ipctl->info;
579 dev_dbg(ipctl->dev, "group(%d): %pOFn\n", index, np);
608 dev_err(ipctl->dev,
616 dev_err(ipctl->dev, "Invalid fsl,pins or pins property in node %pOF\n", np);
621 grp->data = devm_kcalloc(ipctl->dev,
624 grp->pins = devm_kcalloc(ipctl->dev,
633 info->imx_pinctrl_parse_pin(ipctl, &grp->pins[i],
636 imx_pinctrl_parse_pin_mmio(ipctl, &grp->pins[i],
644 struct imx_pinctrl *ipctl,
647 struct pinctrl_dev *pctl = ipctl->pctl;
663 dev_err(ipctl->dev, "no groups defined in %pOF\n", np);
666 func->group_names = devm_kcalloc(ipctl->dev, func->num_group_names,
674 grp = devm_kzalloc(ipctl->dev, sizeof(struct group_desc),
681 mutex_lock(&ipctl->mutex);
683 ipctl->group_index++, grp);
684 mutex_unlock(&ipctl->mutex);
686 imx_pinctrl_parse_groups(child, grp, ipctl, i++);
721 struct imx_pinctrl *ipctl)
725 struct pinctrl_dev *pctl = ipctl->pctl;
752 mutex_lock(&ipctl->mutex);
754 mutex_unlock(&ipctl->mutex);
758 ipctl->group_index = 0;
768 imx_pinctrl_parse_functions(np, ipctl, 0);
772 imx_pinctrl_parse_functions(child, ipctl, i++);
785 struct imx_pinctrl *ipctl;
801 ipctl = devm_kzalloc(&pdev->dev, sizeof(*ipctl), GFP_KERNEL);
802 if (!ipctl)
806 ipctl->pin_regs = devm_kmalloc_array(&pdev->dev, info->npins,
807 sizeof(*ipctl->pin_regs),
809 if (!ipctl->pin_regs)
813 ipctl->pin_regs[i].mux_reg = -1;
814 ipctl->pin_regs[i].conf_reg = -1;
817 ipctl->base = devm_platform_ioremap_resource(pdev, 0);
818 if (IS_ERR(ipctl->base))
819 return PTR_ERR(ipctl->base);
828 ipctl->input_sel_base = of_iomap(np, 0);
830 if (!ipctl->input_sel_base) {
858 mutex_init(&ipctl->mutex);
860 ipctl->info = info;
861 ipctl->dev = &pdev->dev;
862 platform_set_drvdata(pdev, ipctl);
864 imx_pinctrl_desc, ipctl,
865 &ipctl->pctl);
871 ret = imx_pinctrl_probe_dt(pdev, ipctl);
879 return pinctrl_enable(ipctl->pctl);
885 struct imx_pinctrl *ipctl = dev_get_drvdata(dev);
887 return pinctrl_force_sleep(ipctl->pctl);
892 struct imx_pinctrl *ipctl = dev_get_drvdata(dev);
894 return pinctrl_force_default(ipctl->pctl);