Lines Matching defs:ipctl
62 struct imx_pinctrl *ipctl = pinctrl_dev_get_drvdata(pctldev);
63 const struct imx_pinctrl_soc_info *info = ipctl->info;
77 dev_err(ipctl->dev, "unable to find group for node %pOFn\n", np);
165 static int imx_pmx_set_one_pin_mmio(struct imx_pinctrl *ipctl,
168 const struct imx_pinctrl_soc_info *info = ipctl->info;
174 pin_reg = &ipctl->pin_regs[pin_id];
177 dev_dbg(ipctl->dev, "Pin(%s) does not support mux function\n",
185 reg = readl(ipctl->base + pin_reg->mux_reg);
188 writel(reg, ipctl->base + pin_reg->mux_reg);
189 dev_dbg(ipctl->dev, "write: offset 0x%x val 0x%x\n",
192 writel(pin_mmio->mux_mode, ipctl->base + pin_reg->mux_reg);
193 dev_dbg(ipctl->dev, "write: offset 0x%x val 0x%x\n",
220 val = readl(ipctl->base + pin_mmio->input_reg);
223 writel(val, ipctl->base + pin_mmio->input_reg);
229 if (ipctl->input_sel_base)
230 writel(pin_mmio->input_val, ipctl->input_sel_base +
233 writel(pin_mmio->input_val, ipctl->base +
235 dev_dbg(ipctl->dev,
246 struct imx_pinctrl *ipctl = pinctrl_dev_get_drvdata(pctldev);
247 const struct imx_pinctrl_soc_info *info = ipctl->info;
268 dev_dbg(ipctl->dev, "enable function %s group %s\n",
279 err = imx_pmx_set_one_pin_mmio(ipctl, pin);
298 struct imx_pinctrl *ipctl = pinctrl_dev_get_drvdata(pctldev);
299 const struct imx_pinctrl_soc_info *info = ipctl->info;
300 const struct imx_pin_reg *pin_reg = &ipctl->pin_regs[pin_id];
303 dev_err(ipctl->dev, "Pin(%s) does not support config function\n",
308 *config = readl(ipctl->base + pin_reg->conf_reg);
319 struct imx_pinctrl *ipctl = pinctrl_dev_get_drvdata(pctldev);
320 const struct imx_pinctrl_soc_info *info = ipctl->info;
332 struct imx_pinctrl *ipctl = pinctrl_dev_get_drvdata(pctldev);
333 const struct imx_pinctrl_soc_info *info = ipctl->info;
334 const struct imx_pin_reg *pin_reg = &ipctl->pin_regs[pin_id];
338 dev_err(ipctl->dev, "Pin(%s) does not support config function\n",
343 dev_dbg(ipctl->dev, "pinconf set pin %s\n",
349 reg = readl(ipctl->base + pin_reg->conf_reg);
352 writel(reg, ipctl->base + pin_reg->conf_reg);
353 dev_dbg(ipctl->dev, "write: offset 0x%x val 0x%x\n",
356 writel(configs[i], ipctl->base + pin_reg->conf_reg);
357 dev_dbg(ipctl->dev, "write: offset 0x%x val 0x%lx\n",
369 struct imx_pinctrl *ipctl = pinctrl_dev_get_drvdata(pctldev);
370 const struct imx_pinctrl_soc_info *info = ipctl->info;
383 struct imx_pinctrl *ipctl = pinctrl_dev_get_drvdata(pctldev);
384 const struct imx_pinctrl_soc_info *info = ipctl->info;
392 dev_err(ipctl->dev, "failed to get %s pinconf\n",
398 pin_reg = &ipctl->pin_regs[pin_id];
404 config = readl(ipctl->base + pin_reg->conf_reg);
460 static void imx_pinctrl_parse_pin_mmio(struct imx_pinctrl *ipctl,
465 const struct imx_pinctrl_soc_info *info = ipctl->info;
486 pin_reg = &ipctl->pin_regs[*pin_id];
503 dev_dbg(ipctl->dev, "%s: 0x%x 0x%08lx", info->pins[*pin_id].name,
509 struct imx_pinctrl *ipctl,
512 const struct imx_pinctrl_soc_info *info = ipctl->info;
518 dev_dbg(ipctl->dev, "group(%d): %pOFn\n", index, np);
544 dev_err(ipctl->dev,
552 dev_err(ipctl->dev, "Invalid fsl,pins or pins property in node %pOF\n", np);
557 grp->data = devm_kcalloc(ipctl->dev,
560 grp->pins = devm_kcalloc(ipctl->dev,
569 info->imx_pinctrl_parse_pin(ipctl, &grp->pins[i],
572 imx_pinctrl_parse_pin_mmio(ipctl, &grp->pins[i],
580 struct imx_pinctrl *ipctl,
583 struct pinctrl_dev *pctl = ipctl->pctl;
600 dev_info(ipctl->dev, "no groups defined in %pOF\n", np);
604 group_names = devm_kcalloc(ipctl->dev, func->num_group_names,
615 grp = devm_kzalloc(ipctl->dev, sizeof(struct group_desc),
622 mutex_lock(&ipctl->mutex);
624 ipctl->group_index++, grp);
625 mutex_unlock(&ipctl->mutex);
627 imx_pinctrl_parse_groups(child, grp, ipctl, i++);
662 struct imx_pinctrl *ipctl)
666 struct pinctrl_dev *pctl = ipctl->pctl;
693 mutex_lock(&ipctl->mutex);
695 mutex_unlock(&ipctl->mutex);
699 ipctl->group_index = 0;
709 imx_pinctrl_parse_functions(np, ipctl, 0);
713 imx_pinctrl_parse_functions(child, ipctl, i++);
726 struct imx_pinctrl *ipctl;
742 ipctl = devm_kzalloc(&pdev->dev, sizeof(*ipctl), GFP_KERNEL);
743 if (!ipctl)
747 ipctl->pin_regs = devm_kmalloc_array(&pdev->dev, info->npins,
748 sizeof(*ipctl->pin_regs),
750 if (!ipctl->pin_regs)
754 ipctl->pin_regs[i].mux_reg = -1;
755 ipctl->pin_regs[i].conf_reg = -1;
758 ipctl->base = devm_platform_ioremap_resource(pdev, 0);
759 if (IS_ERR(ipctl->base))
760 return PTR_ERR(ipctl->base);
769 ipctl->input_sel_base = of_iomap(np, 0);
771 if (!ipctl->input_sel_base) {
795 mutex_init(&ipctl->mutex);
797 ipctl->info = info;
798 ipctl->dev = &pdev->dev;
799 platform_set_drvdata(pdev, ipctl);
801 imx_pinctrl_desc, ipctl,
802 &ipctl->pctl);
808 ret = imx_pinctrl_probe_dt(pdev, ipctl);
816 return pinctrl_enable(ipctl->pctl);
822 struct imx_pinctrl *ipctl = dev_get_drvdata(dev);
824 return pinctrl_force_sleep(ipctl->pctl);
829 struct imx_pinctrl *ipctl = dev_get_drvdata(dev);
831 return pinctrl_force_default(ipctl->pctl);