Lines Matching refs:exar_gpio

48 exar_offset_to_sel_addr(struct exar_gpio_chip *exar_gpio, unsigned int offset)  in exar_offset_to_sel_addr()  argument
50 unsigned int pin = exar_gpio->first_pin + (offset % 16); in exar_offset_to_sel_addr()
54 return addr + (cascaded ? exar_gpio->cascaded_offset : 0); in exar_offset_to_sel_addr()
58 exar_offset_to_lvl_addr(struct exar_gpio_chip *exar_gpio, unsigned int offset) in exar_offset_to_lvl_addr() argument
60 unsigned int pin = exar_gpio->first_pin + (offset % 16); in exar_offset_to_lvl_addr()
64 return addr + (cascaded ? exar_gpio->cascaded_offset : 0); in exar_offset_to_lvl_addr()
68 exar_offset_to_bit(struct exar_gpio_chip *exar_gpio, unsigned int offset) in exar_offset_to_bit() argument
70 unsigned int pin = exar_gpio->first_pin + (offset % 16); in exar_offset_to_bit()
77 struct exar_gpio_chip *exar_gpio = gpiochip_get_data(chip); in exar_get_direction() local
78 unsigned int addr = exar_offset_to_sel_addr(exar_gpio, offset); in exar_get_direction()
79 unsigned int bit = exar_offset_to_bit(exar_gpio, offset); in exar_get_direction()
81 if (regmap_test_bits(exar_gpio->regmap, addr, BIT(bit))) in exar_get_direction()
89 struct exar_gpio_chip *exar_gpio = gpiochip_get_data(chip); in exar_get_value() local
90 unsigned int addr = exar_offset_to_lvl_addr(exar_gpio, offset); in exar_get_value()
91 unsigned int bit = exar_offset_to_bit(exar_gpio, offset); in exar_get_value()
93 return !!(regmap_test_bits(exar_gpio->regmap, addr, BIT(bit))); in exar_get_value()
99 struct exar_gpio_chip *exar_gpio = gpiochip_get_data(chip); in exar_set_value() local
100 unsigned int addr = exar_offset_to_lvl_addr(exar_gpio, offset); in exar_set_value()
101 unsigned int bit = exar_offset_to_bit(exar_gpio, offset); in exar_set_value()
104 regmap_set_bits(exar_gpio->regmap, addr, BIT(bit)); in exar_set_value()
106 regmap_clear_bits(exar_gpio->regmap, addr, BIT(bit)); in exar_set_value()
112 struct exar_gpio_chip *exar_gpio = gpiochip_get_data(chip); in exar_direction_output() local
113 unsigned int addr = exar_offset_to_sel_addr(exar_gpio, offset); in exar_direction_output()
114 unsigned int bit = exar_offset_to_bit(exar_gpio, offset); in exar_direction_output()
117 regmap_clear_bits(exar_gpio->regmap, addr, BIT(bit)); in exar_direction_output()
124 struct exar_gpio_chip *exar_gpio = gpiochip_get_data(chip); in exar_direction_input() local
125 unsigned int addr = exar_offset_to_sel_addr(exar_gpio, offset); in exar_direction_input()
126 unsigned int bit = exar_offset_to_bit(exar_gpio, offset); in exar_direction_input()
128 regmap_set_bits(exar_gpio->regmap, addr, BIT(bit)); in exar_direction_input()
135 struct exar_gpio_chip *exar_gpio = data; in exar_devm_ida_free() local
137 ida_free(&ida_index, exar_gpio->index); in exar_devm_ida_free()
151 struct exar_gpio_chip *exar_gpio; in gpio_exar_probe() local
172 exar_gpio = devm_kzalloc(dev, sizeof(*exar_gpio), GFP_KERNEL); in gpio_exar_probe()
173 if (!exar_gpio) in gpio_exar_probe()
183 exar_gpio->cascaded_offset = (pcidev->device & GENMASK(3, 0)) * in gpio_exar_probe()
191 exar_gpio->regmap = devm_regmap_init_mmio(dev, p, &exar_regmap_config); in gpio_exar_probe()
192 if (IS_ERR(exar_gpio->regmap)) in gpio_exar_probe()
193 return PTR_ERR(exar_gpio->regmap); in gpio_exar_probe()
199 ret = devm_add_action_or_reset(dev, exar_devm_ida_free, exar_gpio); in gpio_exar_probe()
203 sprintf(exar_gpio->name, "exar_gpio%d", index); in gpio_exar_probe()
204 exar_gpio->gpio_chip.label = exar_gpio->name; in gpio_exar_probe()
205 exar_gpio->gpio_chip.parent = dev; in gpio_exar_probe()
206 exar_gpio->gpio_chip.direction_output = exar_direction_output; in gpio_exar_probe()
207 exar_gpio->gpio_chip.direction_input = exar_direction_input; in gpio_exar_probe()
208 exar_gpio->gpio_chip.get_direction = exar_get_direction; in gpio_exar_probe()
209 exar_gpio->gpio_chip.get = exar_get_value; in gpio_exar_probe()
210 exar_gpio->gpio_chip.set = exar_set_value; in gpio_exar_probe()
211 exar_gpio->gpio_chip.base = -1; in gpio_exar_probe()
212 exar_gpio->gpio_chip.ngpio = ngpios; in gpio_exar_probe()
213 exar_gpio->index = index; in gpio_exar_probe()
214 exar_gpio->first_pin = first_pin; in gpio_exar_probe()
216 ret = devm_gpiochip_add_data(dev, &exar_gpio->gpio_chip, exar_gpio); in gpio_exar_probe()