Lines Matching +full:imx +full:- +full:pinctrl

4  * SPDX-License-Identifier:	GPL-2.0+
12 #include <dm/pinctrl.h>
14 #include "pinctrl-imx.h"
21 struct imx_pinctrl_soc_info *info = priv->info; in imx_pinctrl_set_state()
27 u32 mux_shift = info->mux_mask ? ffs(info->mux_mask) - 1 : 0; in imx_pinctrl_set_state()
30 dev_dbg(dev, "%s: %s\n", __func__, config->name); in imx_pinctrl_set_state()
32 if (info->flags & SHARE_MUX_CONF_REG) in imx_pinctrl_set_state()
37 prop = fdt_getprop(gd->fdt_blob, node, "fsl,pins", &size); in imx_pinctrl_set_state()
39 dev_err(dev, "No fsl,pins property in node %s\n", config->name); in imx_pinctrl_set_state()
40 return -EINVAL; in imx_pinctrl_set_state()
45 config->name); in imx_pinctrl_set_state()
46 return -EINVAL; in imx_pinctrl_set_state()
51 return -ENOMEM; in imx_pinctrl_set_state()
53 if (fdtdec_get_int_array(gd->fdt_blob, node, "fsl,pins", in imx_pinctrl_set_state()
57 return -EINVAL; in imx_pinctrl_set_state()
64 * Documentation/devicetree/bindings/pinctrl/fsl,imx-pinctrl.txt in imx_pinctrl_set_state()
69 if (!(info->flags & ZERO_OFFSET_VALID) && !mux_reg) in imx_pinctrl_set_state()
70 mux_reg = -1; in imx_pinctrl_set_state()
72 if (info->flags & SHARE_MUX_CONF_REG) { in imx_pinctrl_set_state()
76 if (!(info->flags & ZERO_OFFSET_VALID) && !conf_reg) in imx_pinctrl_set_state()
77 conf_reg = -1; in imx_pinctrl_set_state()
80 if ((mux_reg == -1) || (conf_reg == -1)) { in imx_pinctrl_set_state()
83 return -EINVAL; in imx_pinctrl_set_state()
102 if (info->flags & SHARE_MUX_CONF_REG) { in imx_pinctrl_set_state()
103 clrsetbits_le32(info->base + mux_reg, info->mux_mask, in imx_pinctrl_set_state()
106 writel(mux_mode, info->base + mux_reg); in imx_pinctrl_set_state()
133 u32 mask = ((1 << width) - 1) << shift; in imx_pinctrl_set_state()
138 val = readl(info->base + input_reg); in imx_pinctrl_set_state()
141 writel(val, info->base + input_reg); in imx_pinctrl_set_state()
147 if (info->input_sel_base) in imx_pinctrl_set_state()
148 writel(input_val, info->input_sel_base + in imx_pinctrl_set_state()
151 writel(input_val, info->base + input_reg); in imx_pinctrl_set_state()
159 if (info->flags & SHARE_MUX_CONF_REG) { in imx_pinctrl_set_state()
160 clrsetbits_le32(info->base + conf_reg, in imx_pinctrl_set_state()
161 ~info->mux_mask, config_val); in imx_pinctrl_set_state()
163 writel(config_val, info->base + conf_reg); in imx_pinctrl_set_state()
190 dev_err(dev, "wrong pinctrl info\n"); in imx_pinctrl_probe()
191 return -EINVAL; in imx_pinctrl_probe()
194 priv->dev = dev; in imx_pinctrl_probe()
195 priv->info = info; in imx_pinctrl_probe()
197 addr = fdtdec_get_addr_size(gd->fdt_blob, dev_of_offset(dev), "reg", in imx_pinctrl_probe()
201 return -EINVAL; in imx_pinctrl_probe()
203 info->base = map_sysmem(addr, size); in imx_pinctrl_probe()
204 if (!info->base) in imx_pinctrl_probe()
205 return -ENOMEM; in imx_pinctrl_probe()
206 priv->info = info; in imx_pinctrl_probe()
208 info->mux_mask = fdtdec_get_int(gd->fdt_blob, node, "fsl,mux_mask", 0); in imx_pinctrl_probe()
211 * Documentation/devicetree/bindings/pinctrl/fsl,imx7d-pinctrl.txt in imx_pinctrl_probe()
213 if (fdtdec_get_bool(gd->fdt_blob, node, "fsl,input-sel")) { in imx_pinctrl_probe()
214 ret = fdtdec_parse_phandle_with_args(gd->fdt_blob, in imx_pinctrl_probe()
215 node, "fsl,input-sel", in imx_pinctrl_probe()
218 dev_err(dev, "iomuxc fsl,input-sel property not found\n"); in imx_pinctrl_probe()
219 return -EINVAL; in imx_pinctrl_probe()
222 addr = fdtdec_get_addr_size(gd->fdt_blob, arg.node, "reg", in imx_pinctrl_probe()
225 return -EINVAL; in imx_pinctrl_probe()
227 info->input_sel_base = map_sysmem(addr, size); in imx_pinctrl_probe()
228 if (!info->input_sel_base) in imx_pinctrl_probe()
229 return -ENOMEM; in imx_pinctrl_probe()
232 dev_dbg(dev, "initialized IMX pinctrl driver\n"); in imx_pinctrl_probe()
240 struct imx_pinctrl_soc_info *info = priv->info; in imx_pinctrl_remove()
242 if (info->input_sel_base) in imx_pinctrl_remove()
243 unmap_sysmem(info->input_sel_base); in imx_pinctrl_remove()
244 if (info->base) in imx_pinctrl_remove()
245 unmap_sysmem(info->base); in imx_pinctrl_remove()