Lines Matching +full:device +full:- +full:width

1 // SPDX-License-Identifier: GPL-2.0+
17 u32 mask; /* configuration-value mask bits */
18 int width; /* configuration register bit width */ member
27 * single_configure_pins() - Configure pins based on FDT data
29 * @dev: Pointer to single pin configuration device which is the parent of
34 * This pointer points to a 'pinctrl-single,pins' property in the
35 * device-tree.
44 struct single_pdata *pdata = dev->platdata; in single_configure_pins()
50 reg = fdt32_to_cpu(pins->reg); in single_configure_pins()
51 if ((reg < 0) || (reg > pdata->offset)) { in single_configure_pins()
55 reg += pdata->base; in single_configure_pins()
56 val = fdt32_to_cpu(pins->val) & pdata->mask; in single_configure_pins()
57 switch (pdata->width) { in single_configure_pins()
59 writew((readw(reg) & ~pdata->mask) | val, reg); in single_configure_pins()
62 writel((readl(reg) & ~pdata->mask) | val, reg); in single_configure_pins()
65 dev_warn(dev, "unsupported register width %i\n", in single_configure_pins()
66 pdata->width); in single_configure_pins()
77 const void *fdt = gd->fdt_blob; in single_set_state()
81 prop = fdt_getprop(fdt, dev_of_offset(config), "pinctrl-single,pins", in single_set_state()
84 dev_dbg(dev, "configuring pins for %s\n", config->name); in single_set_state()
87 return -FDT_ERR_BADSTRUCTURE; in single_set_state()
101 struct single_pdata *pdata = dev->platdata; in single_ofdata_to_platdata()
103 pdata->width = fdtdec_get_int(gd->fdt_blob, dev_of_offset(dev), in single_ofdata_to_platdata()
104 "pinctrl-single,register-width", 0); in single_ofdata_to_platdata()
106 res = fdtdec_get_int_array(gd->fdt_blob, dev_of_offset(dev), in single_ofdata_to_platdata()
110 pdata->offset = of_reg[1] - pdata->width / 8; in single_ofdata_to_platdata()
115 return -EINVAL; in single_ofdata_to_platdata()
117 pdata->base = addr; in single_ofdata_to_platdata()
119 pdata->mask = fdtdec_get_int(gd->fdt_blob, dev_of_offset(dev), in single_ofdata_to_platdata()
120 "pinctrl-single,function-mask", in single_ofdata_to_platdata()
130 { .compatible = "pinctrl-single" },
135 .name = "single-pinctrl",