Lines Matching refs:info

531 	struct ocelot_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
533 *groups = info->func[function].groups;
534 *num_groups = info->func[function].ngroups;
539 static int ocelot_pin_function_idx(struct ocelot_pinctrl *info,
542 struct ocelot_pin_caps *p = info->desc->pins[pin].drv_data;
553 #define REG_ALT(msb, info, p) (OCELOT_GPIO_ALT0 * (info)->stride + 4 * ((msb) + ((info)->stride * ((p) / 32))))
558 struct ocelot_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
559 struct ocelot_pin_caps *pin = info->desc->pins[group].drv_data;
563 f = ocelot_pin_function_idx(info, group, selector);
575 regmap_update_bits(info->map, REG_ALT(0, info, pin->pin),
577 regmap_update_bits(info->map, REG_ALT(1, info, pin->pin),
583 #define REG(r, info, p) ((r) * (info)->stride + (4 * ((p) / 32)))
589 struct ocelot_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
592 regmap_update_bits(info->map, REG(OCELOT_GPIO_OE, info, pin), BIT(p),
602 struct ocelot_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
605 regmap_update_bits(info->map, REG_ALT(0, info, offset),
607 regmap_update_bits(info->map, REG_ALT(1, info, offset),
624 struct ocelot_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
626 return info->desc->npins;
632 struct ocelot_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
634 return info->desc->pins[group].name;
642 struct ocelot_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
644 *pins = &info->desc->pins[group].number;
650 static int ocelot_hw_get_value(struct ocelot_pinctrl *info,
657 if (info->pincfg) {
658 u32 regcfg = readl(info->pincfg + (pin * sizeof(u32)));
682 static int ocelot_hw_set_value(struct ocelot_pinctrl *info,
689 if (info->pincfg) {
690 void __iomem *regaddr = info->pincfg + (pin * sizeof(u32));
720 struct ocelot_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
728 err = ocelot_hw_get_value(info, pin, PINCONF_BIAS, &val);
740 err = ocelot_hw_get_value(info, pin, PINCONF_SCHMITT, &val);
748 err = ocelot_hw_get_value(info, pin, PINCONF_DRIVE_STRENGTH,
755 err = regmap_read(info->map, REG(OCELOT_GPIO_OUT, info, pin),
764 err = regmap_read(info->map, REG(OCELOT_GPIO_OE, info, pin),
787 struct ocelot_pinctrl *info = pinctrl_dev_get_drvdata(pctldev);
803 err = ocelot_hw_set_value(info, pin, PINCONF_BIAS, arg);
811 err = ocelot_hw_set_value(info, pin, PINCONF_SCHMITT,
819 err = ocelot_hw_set_value(info, pin,
832 regmap_write(info->map,
833 REG(OCELOT_GPIO_OUT_SET, info,
837 regmap_write(info->map,
838 REG(OCELOT_GPIO_OUT_CLR, info,
841 regmap_update_bits(info->map,
842 REG(OCELOT_GPIO_OE, info, pin),
900 struct ocelot_pinctrl *info)
903 u8 *pins = kcalloc(info->desc->npins, sizeof(u8), GFP_KERNEL);
909 for (npins = 0, i = 0; i < info->desc->npins; i++) {
910 if (ocelot_pin_function_idx(info, i, f) >= 0)
917 info->func[f].ngroups = npins;
918 info->func[f].groups = devm_kcalloc(dev, npins, sizeof(char *),
920 if (!info->func[f].groups) {
926 info->func[f].groups[i] =
927 info->desc->pins[pins[i]].name;
936 struct ocelot_pinctrl *info)
940 ret = ocelot_create_group_func_map(&pdev->dev, info);
946 info->pctl = devm_pinctrl_register(&pdev->dev, info->desc, info);
947 if (IS_ERR(info->pctl)) {
949 return PTR_ERR(info->pctl);
957 struct ocelot_pinctrl *info = gpiochip_get_data(chip);
960 regmap_read(info->map, REG(OCELOT_GPIO_IN, info, offset), &val);
968 struct ocelot_pinctrl *info = gpiochip_get_data(chip);
971 regmap_write(info->map, REG(OCELOT_GPIO_OUT_SET, info, offset),
974 regmap_write(info->map, REG(OCELOT_GPIO_OUT_CLR, info, offset),
981 struct ocelot_pinctrl *info = gpiochip_get_data(chip);
984 regmap_read(info->map, REG(OCELOT_GPIO_OE, info, offset), &val);
1001 struct ocelot_pinctrl *info = gpiochip_get_data(chip);
1005 regmap_write(info->map, REG(OCELOT_GPIO_OUT_SET, info, offset),
1008 regmap_write(info->map, REG(OCELOT_GPIO_OUT_CLR, info, offset),
1028 struct ocelot_pinctrl *info = gpiochip_get_data(chip);
1031 regmap_update_bits(info->map, REG(OCELOT_GPIO_INTR_ENA, info, gpio),
1038 struct ocelot_pinctrl *info = gpiochip_get_data(chip);
1041 regmap_update_bits(info->map, REG(OCELOT_GPIO_INTR_ENA, info, gpio),
1048 struct ocelot_pinctrl *info = gpiochip_get_data(chip);
1051 regmap_write_bits(info->map, REG(OCELOT_GPIO_INTR, info, gpio),
1095 struct ocelot_pinctrl *info = gpiochip_get_data(chip);
1096 unsigned int id_reg = OCELOT_GPIO_INTR_IDENT * info->stride;
1100 for (i = 0; i < info->stride; i++) {
1101 regmap_read(info->map, id_reg + 4 * i, &reg);
1110 min(32U, info->desc->npins - 32 * i))
1119 struct ocelot_pinctrl *info)
1125 info->gpio_chip = ocelot_gpiolib_chip;
1127 gc = &info->gpio_chip;
1128 gc->ngpio = info->desc->npins;
1131 gc->of_node = info->dev->of_node;
1150 return devm_gpiochip_add_data(&pdev->dev, gc, info);
1163 struct ocelot_pinctrl *info;
1173 info = devm_kzalloc(dev, sizeof(*info), GFP_KERNEL);
1174 if (!info)
1177 info->desc = (struct pinctrl_desc *)device_get_match_data(dev);
1186 info->stride = 1 + (info->desc->npins - 1) / 32;
1188 regmap_config.max_register = OCELOT_GPIO_SD_MAP * info->stride + 15 * 4;
1190 info->map = devm_regmap_init_mmio(dev, base, &regmap_config);
1191 if (IS_ERR(info->map)) {
1193 return PTR_ERR(info->map);
1195 dev_set_drvdata(dev, info->map);
1196 info->dev = dev;
1199 if (info->desc->confops) {
1205 info->pincfg = base;
1208 ret = ocelot_pinctrl_register(pdev, info);
1212 ret = ocelot_gpiochip_register(pdev, info);