Lines Matching refs:chip
34 static int __gen_74x164_write_config(struct gen_74x164_chip *chip) in __gen_74x164_write_config() argument
36 struct spi_device *spi = to_spi_device(chip->gpio_chip.dev); in __gen_74x164_write_config()
41 msg_buf = kzalloc(chip->registers * sizeof(struct spi_transfer), in __gen_74x164_write_config()
56 for (i = chip->registers - 1; i >= 0; i--) { in __gen_74x164_write_config()
57 msg_buf[i].tx_buf = chip->buffer + i; in __gen_74x164_write_config()
71 struct gen_74x164_chip *chip = gpio_to_74x164_chip(gc); in gen_74x164_get_value() local
76 mutex_lock(&chip->lock); in gen_74x164_get_value()
77 ret = (chip->buffer[bank] >> pin) & 0x1; in gen_74x164_get_value()
78 mutex_unlock(&chip->lock); in gen_74x164_get_value()
86 struct gen_74x164_chip *chip = gpio_to_74x164_chip(gc); in gen_74x164_set_value() local
90 mutex_lock(&chip->lock); in gen_74x164_set_value()
92 chip->buffer[bank] |= (1 << pin); in gen_74x164_set_value()
94 chip->buffer[bank] &= ~(1 << pin); in gen_74x164_set_value()
96 __gen_74x164_write_config(chip); in gen_74x164_set_value()
97 mutex_unlock(&chip->lock); in gen_74x164_set_value()
109 struct gen_74x164_chip *chip; in gen_74x164_probe() local
121 chip = devm_kzalloc(&spi->dev, sizeof(*chip), GFP_KERNEL); in gen_74x164_probe()
122 if (!chip) in gen_74x164_probe()
125 spi_set_drvdata(spi, chip); in gen_74x164_probe()
127 chip->gpio_chip.label = spi->modalias; in gen_74x164_probe()
128 chip->gpio_chip.direction_output = gen_74x164_direction_output; in gen_74x164_probe()
129 chip->gpio_chip.get = gen_74x164_get_value; in gen_74x164_probe()
130 chip->gpio_chip.set = gen_74x164_set_value; in gen_74x164_probe()
131 chip->gpio_chip.base = -1; in gen_74x164_probe()
134 &chip->registers)) { in gen_74x164_probe()
140 chip->gpio_chip.ngpio = GEN_74X164_NUMBER_GPIOS * chip->registers; in gen_74x164_probe()
141 chip->buffer = devm_kzalloc(&spi->dev, chip->registers, GFP_KERNEL); in gen_74x164_probe()
142 if (!chip->buffer) in gen_74x164_probe()
145 chip->gpio_chip.can_sleep = true; in gen_74x164_probe()
146 chip->gpio_chip.dev = &spi->dev; in gen_74x164_probe()
147 chip->gpio_chip.owner = THIS_MODULE; in gen_74x164_probe()
149 mutex_init(&chip->lock); in gen_74x164_probe()
151 ret = __gen_74x164_write_config(chip); in gen_74x164_probe()
157 ret = gpiochip_add(&chip->gpio_chip); in gen_74x164_probe()
162 mutex_destroy(&chip->lock); in gen_74x164_probe()
169 struct gen_74x164_chip *chip = spi_get_drvdata(spi); in gen_74x164_remove() local
171 gpiochip_remove(&chip->gpio_chip); in gen_74x164_remove()
172 mutex_destroy(&chip->lock); in gen_74x164_remove()