Lines Matching defs:info
1155 struct ocelot_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
1157 *groups = info->func[function].groups;
1158 *num_groups = info->func[function].ngroups;
1163 static int ocelot_pin_function_idx(struct ocelot_pinctrl *info,
1166 struct ocelot_pin_caps *p = info->desc->pins[pin].drv_data;
1180 #define REG_ALT(msb, info, p) (OCELOT_GPIO_ALT0 * (info)->stride + 4 * ((msb) + ((info)->stride * ((p) / 32))))
1185 struct ocelot_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
1186 struct ocelot_pin_caps *pin = info->desc->pins[group].drv_data;
1190 f = ocelot_pin_function_idx(info, group, selector);
1202 regmap_update_bits(info->map, REG_ALT(0, info, pin->pin),
1204 regmap_update_bits(info->map, REG_ALT(1, info, pin->pin),
1213 struct ocelot_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
1214 struct ocelot_pin_caps *pin = info->desc->pins[group].drv_data;
1218 f = ocelot_pin_function_idx(info, group, selector);
1230 regmap_update_bits(info->map, REG_ALT(0, info, pin->pin),
1232 regmap_update_bits(info->map, REG_ALT(1, info, pin->pin),
1234 regmap_update_bits(info->map, REG_ALT(2, info, pin->pin),
1240 #define REG(r, info, p) ((r) * (info)->stride + (4 * ((p) / 32)))
1246 struct ocelot_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
1249 regmap_update_bits(info->map, REG(OCELOT_GPIO_OE, info, pin), BIT(p),
1259 struct ocelot_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
1262 regmap_update_bits(info->map, REG_ALT(0, info, offset),
1264 regmap_update_bits(info->map, REG_ALT(1, info, offset),
1274 struct ocelot_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
1277 regmap_update_bits(info->map, REG_ALT(0, info, offset),
1279 regmap_update_bits(info->map, REG_ALT(1, info, offset),
1281 regmap_update_bits(info->map, REG_ALT(2, info, offset),
1307 struct ocelot_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
1309 return info->desc->npins;
1315 struct ocelot_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
1317 return info->desc->pins[group].name;
1325 struct ocelot_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
1327 *pins = &info->desc->pins[group].number;
1333 static int ocelot_hw_get_value(struct ocelot_pinctrl *info,
1340 if (info->pincfg) {
1341 const struct ocelot_pincfg_data *opd = info->pincfg_data;
1344 ret = regmap_read(info->pincfg,
1345 pin * regmap_get_reg_stride(info->pincfg),
1372 static int ocelot_pincfg_clrsetbits(struct ocelot_pinctrl *info, u32 regaddr,
1378 ret = regmap_read(info->pincfg,
1379 regaddr * regmap_get_reg_stride(info->pincfg),
1387 ret = regmap_write(info->pincfg,
1388 regaddr * regmap_get_reg_stride(info->pincfg),
1394 static int ocelot_hw_set_value(struct ocelot_pinctrl *info,
1401 if (info->pincfg) {
1402 const struct ocelot_pincfg_data *opd = info->pincfg_data;
1407 ret = ocelot_pincfg_clrsetbits(info, pin,
1413 ret = ocelot_pincfg_clrsetbits(info, pin,
1420 ret = ocelot_pincfg_clrsetbits(info, pin,
1438 struct ocelot_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
1446 err = ocelot_hw_get_value(info, pin, PINCONF_BIAS, &val);
1452 val = !!(val & info->pincfg_data->pd_bit);
1454 val = !!(val & info->pincfg_data->pu_bit);
1458 if (!info->pincfg_data->schmitt_bit)
1461 err = ocelot_hw_get_value(info, pin, PINCONF_SCHMITT, &val);
1465 val = !!(val & info->pincfg_data->schmitt_bit);
1469 err = ocelot_hw_get_value(info, pin, PINCONF_DRIVE_STRENGTH,
1476 err = regmap_read(info->map, REG(OCELOT_GPIO_OUT, info, pin),
1485 err = regmap_read(info->map, REG(OCELOT_GPIO_OE, info, pin),
1508 struct ocelot_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
1509 const struct ocelot_pincfg_data *opd = info->pincfg_data;
1525 err = ocelot_hw_set_value(info, pin, PINCONF_BIAS, arg);
1536 err = ocelot_hw_set_value(info, pin, PINCONF_SCHMITT,
1544 err = ocelot_hw_set_value(info, pin,
1557 regmap_write(info->map,
1558 REG(OCELOT_GPIO_OUT_SET, info,
1562 regmap_write(info->map,
1563 REG(OCELOT_GPIO_OUT_CLR, info,
1566 regmap_update_bits(info->map,
1567 REG(OCELOT_GPIO_OE, info, pin),
1687 struct ocelot_pinctrl *info)
1690 u8 *pins = kcalloc(info->desc->npins, sizeof(u8), GFP_KERNEL);
1696 for (npins = 0, i = 0; i < info->desc->npins; i++) {
1697 if (ocelot_pin_function_idx(info, i, f) >= 0)
1704 info->func[f].ngroups = npins;
1705 info->func[f].groups = devm_kcalloc(dev, npins, sizeof(char *),
1707 if (!info->func[f].groups) {
1713 info->func[f].groups[i] =
1714 info->desc->pins[pins[i]].name;
1723 struct ocelot_pinctrl *info)
1727 ret = ocelot_create_group_func_map(&pdev->dev, info);
1733 info->pctl = devm_pinctrl_register(&pdev->dev, info->desc, info);
1734 if (IS_ERR(info->pctl)) {
1736 return PTR_ERR(info->pctl);
1744 struct ocelot_pinctrl *info = gpiochip_get_data(chip);
1747 regmap_read(info->map, REG(OCELOT_GPIO_IN, info, offset), &val);
1755 struct ocelot_pinctrl *info = gpiochip_get_data(chip);
1758 regmap_write(info->map, REG(OCELOT_GPIO_OUT_SET, info, offset),
1761 regmap_write(info->map, REG(OCELOT_GPIO_OUT_CLR, info, offset),
1768 struct ocelot_pinctrl *info = gpiochip_get_data(chip);
1771 regmap_read(info->map, REG(OCELOT_GPIO_OE, info, offset), &val);
1788 struct ocelot_pinctrl *info = gpiochip_get_data(chip);
1792 regmap_write(info->map, REG(OCELOT_GPIO_OUT_SET, info, offset),
1795 regmap_write(info->map, REG(OCELOT_GPIO_OUT_CLR, info, offset),
1815 struct ocelot_pinctrl *info = gpiochip_get_data(chip);
1818 regmap_update_bits(info->map, REG(OCELOT_GPIO_INTR_ENA, info, gpio),
1843 struct ocelot_pinctrl *info = gpiochip_get_data(chip);
1854 regmap_read(info->map, REG(OCELOT_GPIO_IN, info, gpio), &val);
1863 regmap_read(info->map, REG(OCELOT_GPIO_INTR, info, gpio), &val);
1869 regmap_write_bits(info->map, REG(OCELOT_GPIO_INTR, info, gpio),
1874 regmap_update_bits(info->map, REG(OCELOT_GPIO_INTR_ENA, info, gpio),
1883 regmap_read(info->map, REG(OCELOT_GPIO_IN, info, gpio), &val);
1897 queue_work(info->wq, &work->irq_work);
1904 struct ocelot_pinctrl *info = gpiochip_get_data(chip);
1908 regmap_update_bits(info->map, REG(OCELOT_GPIO_INTR_ENA, info, gpio),
1915 struct ocelot_pinctrl *info = gpiochip_get_data(chip);
1918 regmap_write_bits(info->map, REG(OCELOT_GPIO_INTR, info, gpio),
1960 struct ocelot_pinctrl *info = gpiochip_get_data(chip);
1961 unsigned int id_reg = OCELOT_GPIO_INTR_IDENT * info->stride;
1965 for (i = 0; i < info->stride; i++) {
1966 regmap_read(info->map, id_reg + 4 * i, ®);
1975 min(32U, info->desc->npins - 32 * i))
1983 struct ocelot_pinctrl *info)
1989 info->gpio_chip = ocelot_gpiolib_chip;
1991 gc = &info->gpio_chip;
1992 gc->ngpio = info->desc->npins;
2013 return devm_gpiochip_add_data(&pdev->dev, gc, info);
2029 const struct ocelot_pinctrl *info)
2037 .max_register = info->desc->npins * 4,
2059 struct ocelot_pinctrl *info;
2069 info = devm_kzalloc(dev, sizeof(*info), GFP_KERNEL);
2070 if (!info)
2077 info->desc = devm_kmemdup(dev, &data->desc, sizeof(*info->desc),
2079 if (!info->desc)
2082 info->wq = alloc_ordered_workqueue("ocelot_ordered", 0);
2083 if (!info->wq)
2087 info->wq);
2091 info->pincfg_data = &data->pincfg_data;
2099 info->stride = 1 + (info->desc->npins - 1) / 32;
2101 regmap_config.max_register = OCELOT_GPIO_SD_MAP * info->stride + 15 * 4;
2103 info->map = ocelot_regmap_from_resource(pdev, 0, ®map_config);
2104 if (IS_ERR(info->map))
2105 return dev_err_probe(dev, PTR_ERR(info->map),
2107 dev_set_drvdata(dev, info);
2108 info->dev = dev;
2111 if (info->desc->confops) {
2112 pincfg = ocelot_pinctrl_create_pincfg(pdev, info);
2116 info->pincfg = pincfg;
2119 ret = ocelot_pinctrl_register(pdev, info);
2123 ret = ocelot_gpiochip_register(pdev, info);