Lines Matching full:pca955x

7  * LED driver for various PCA955x I2C LED drivers
19 * Philips PCA955x LED driver chips follow a register map as shown below:
53 #include <dt-bindings/leds/leds-pca955x.h>
107 struct pca955x { struct
119 struct pca955x *pca955x; member
154 struct pca955x *pca955x = i2c_get_clientdata(client); in pca955x_write_psc() local
155 u8 cmd = pca95xx_num_input_regs(pca955x->chipdef->bits) + (2 * n); in pca955x_write_psc()
174 struct pca955x *pca955x = i2c_get_clientdata(client); in pca955x_write_pwm() local
175 u8 cmd = pca95xx_num_input_regs(pca955x->chipdef->bits) + 1 + (2 * n); in pca955x_write_pwm()
191 struct pca955x *pca955x = i2c_get_clientdata(client); in pca955x_write_ls() local
192 u8 cmd = pca95xx_num_input_regs(pca955x->chipdef->bits) + 4 + n; in pca955x_write_ls()
208 struct pca955x *pca955x = i2c_get_clientdata(client); in pca955x_read_ls() local
209 u8 cmd = pca95xx_num_input_regs(pca955x->chipdef->bits) + 4 + n; in pca955x_read_ls()
224 struct pca955x *pca955x = i2c_get_clientdata(client); in pca955x_read_pwm() local
225 u8 cmd = pca95xx_num_input_regs(pca955x->chipdef->bits) + 1 + (2 * n); in pca955x_read_pwm()
243 struct pca955x *pca955x = pca955x_led->pca955x; in pca955x_led_get() local
247 ret = pca955x_read_ls(pca955x->client, pca955x_led->led_num / 4, &ls); in pca955x_led_get()
263 ret = pca955x_read_pwm(pca955x->client, 1, &pwm); in pca955x_led_get()
277 struct pca955x *pca955x; in pca955x_led_set() local
284 pca955x = pca955x_led->pca955x; in pca955x_led_set()
289 mutex_lock(&pca955x->lock); in pca955x_led_set()
291 ret = pca955x_read_ls(pca955x->client, chip_ls, &ls); in pca955x_led_set()
313 ret = pca955x_write_pwm(pca955x->client, 1, 255 - value); in pca955x_led_set()
320 ret = pca955x_write_ls(pca955x->client, chip_ls, ls); in pca955x_led_set()
323 mutex_unlock(&pca955x->lock); in pca955x_led_set()
348 struct pca955x *pca955x = gpiochip_get_data(gc); in pca955x_gpio_request_pin() local
350 return test_and_set_bit(offset, &pca955x->active_pins) ? -EBUSY : 0; in pca955x_gpio_request_pin()
355 struct pca955x *pca955x = gpiochip_get_data(gc); in pca955x_gpio_free_pin() local
357 clear_bit(offset, &pca955x->active_pins); in pca955x_gpio_free_pin()
363 struct pca955x *pca955x = gpiochip_get_data(gc); in pca955x_set_value() local
364 struct pca955x_led *led = &pca955x->leds[offset]; in pca955x_set_value()
380 struct pca955x *pca955x = gpiochip_get_data(gc); in pca955x_gpio_get_value() local
381 struct pca955x_led *led = &pca955x->leds[offset]; in pca955x_gpio_get_value()
385 pca955x_read_input(pca955x->client, led->led_num / 8, &reg); in pca955x_gpio_get_value()
393 struct pca955x *pca955x = gpiochip_get_data(gc); in pca955x_gpio_direction_input() local
394 struct pca955x_led *led = &pca955x->leds[offset]; in pca955x_gpio_direction_input()
452 struct pca955x *pca955x; in pca955x_probe() local
484 dev_info(&client->dev, "leds-pca955x: Using %s %d-bit LED driver at " in pca955x_probe()
498 pca955x = devm_kzalloc(&client->dev, sizeof(*pca955x), GFP_KERNEL); in pca955x_probe()
499 if (!pca955x) in pca955x_probe()
502 pca955x->leds = devm_kcalloc(&client->dev, chip->bits, in pca955x_probe()
504 if (!pca955x->leds) in pca955x_probe()
507 i2c_set_clientdata(client, pca955x); in pca955x_probe()
509 mutex_init(&pca955x->lock); in pca955x_probe()
510 pca955x->client = client; in pca955x_probe()
511 pca955x->chipdef = chip; in pca955x_probe()
514 init_data.devicename = "pca955x"; in pca955x_probe()
517 pca955x_led = &pca955x->leds[i]; in pca955x_probe()
519 pca955x_led->pca955x = pca955x; in pca955x_probe()
566 set_bit(i, &pca955x->active_pins); in pca955x_probe()
604 pca955x->gpio.label = "gpio-pca955x"; in pca955x_probe()
605 pca955x->gpio.direction_input = pca955x_gpio_direction_input; in pca955x_probe()
606 pca955x->gpio.direction_output = pca955x_gpio_direction_output; in pca955x_probe()
607 pca955x->gpio.set = pca955x_gpio_set_value; in pca955x_probe()
608 pca955x->gpio.get = pca955x_gpio_get_value; in pca955x_probe()
609 pca955x->gpio.request = pca955x_gpio_request_pin; in pca955x_probe()
610 pca955x->gpio.free = pca955x_gpio_free_pin; in pca955x_probe()
611 pca955x->gpio.can_sleep = 1; in pca955x_probe()
612 pca955x->gpio.base = -1; in pca955x_probe()
613 pca955x->gpio.ngpio = chip->bits; in pca955x_probe()
614 pca955x->gpio.parent = &client->dev; in pca955x_probe()
615 pca955x->gpio.owner = THIS_MODULE; in pca955x_probe()
617 err = devm_gpiochip_add_data(&client->dev, &pca955x->gpio, in pca955x_probe()
618 pca955x); in pca955x_probe()
621 pca955x->gpio.parent = NULL; in pca955x_probe()
626 pca955x->gpio.base, pca955x->gpio.base + in pca955x_probe()
627 pca955x->gpio.ngpio - 1); in pca955x_probe()
655 .name = "leds-pca955x",
665 MODULE_DESCRIPTION("PCA955x LED driver");