xref: /openbmc/linux/include/linux/leds-pca9532.h (revision b886d83c)
1b886d83cSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
2e14fa824SRiku Voipio /*
3e14fa824SRiku Voipio  * pca9532.h - platform data structure for pca9532 led controller
4e14fa824SRiku Voipio  *
5e14fa824SRiku Voipio  * Copyright (C) 2008 Riku Voipio <riku.voipio@movial.fi>
6e14fa824SRiku Voipio  *
7e14fa824SRiku Voipio  * Datasheet: http://www.nxp.com/acrobat/datasheets/PCA9532_3.pdf
8e14fa824SRiku Voipio  */
9e14fa824SRiku Voipio 
10e14fa824SRiku Voipio #ifndef __LINUX_PCA9532_H
11e14fa824SRiku Voipio #define __LINUX_PCA9532_H
12e14fa824SRiku Voipio 
13e14fa824SRiku Voipio #include <linux/leds.h>
14934cd3f9SRiku Voipio #include <linux/workqueue.h>
15fa4191a6SPhil Reid #include <dt-bindings/leds/leds-pca9532.h>
16e14fa824SRiku Voipio 
17e14fa824SRiku Voipio enum pca9532_state {
18e14fa824SRiku Voipio 	PCA9532_OFF  = 0x0,
19e14fa824SRiku Voipio 	PCA9532_ON   = 0x1,
20e14fa824SRiku Voipio 	PCA9532_PWM0 = 0x2,
2128c5fe99SFelix Brack 	PCA9532_PWM1 = 0x3,
2228c5fe99SFelix Brack 	PCA9532_KEEP = 0xff,
23e14fa824SRiku Voipio };
24e14fa824SRiku Voipio 
25e14fa824SRiku Voipio struct pca9532_led {
26e14fa824SRiku Voipio 	u8 id;
27e14fa824SRiku Voipio 	struct i2c_client *client;
28fa4191a6SPhil Reid 	const char *name;
29fa4191a6SPhil Reid 	const char *default_trigger;
30e14fa824SRiku Voipio 	struct led_classdev ldev;
31934cd3f9SRiku Voipio 	struct work_struct work;
32fa4191a6SPhil Reid 	u32 type;
33e14fa824SRiku Voipio 	enum pca9532_state state;
34e14fa824SRiku Voipio };
35e14fa824SRiku Voipio 
36e14fa824SRiku Voipio struct pca9532_platform_data {
37e14fa824SRiku Voipio 	struct pca9532_led leds[16];
38e14fa824SRiku Voipio 	u8 pwm[2];
39e14fa824SRiku Voipio 	u8 psc[2];
403c1ab50dSJoachim Eastwood 	int gpio_base;
41e14fa824SRiku Voipio };
42e14fa824SRiku Voipio 
43e14fa824SRiku Voipio #endif /* __LINUX_PCA9532_H */
44