#ifndef CONFIG_PCA9551_I2C_ADDR
#error "CONFIG_PCA9551_I2C_ADDR not defined!"
#define PCA9551_REG_INPUT 0x00
#define PCA9551_REG_PSC0 0x01
#define PCA9551_REG_PWM0 0x02
#define PCA9551_REG_PSC1 0x03
#define PCA9551_REG_PWM1 0x04
#define PCA9551_REG_LS0 0x05
#define PCA9551_REG_LS1 0x06
#define PCA9551_CTRL_AI (1 << 4)
#define PCA9551_LED_STATE_ON 0x00
#define PCA9551_LED_STATE_OFF 0x01
#define PCA9551_LED_STATE_BLINK0 0x02
#define PCA9551_LED_STATE_BLINK1 0x03
struct pca9551_blink_rate {
static int freq_last = -1;
static int mask_last = -1;
static int idx_last = -1;
static int pca9551_led_get_state(int led, int *state)
if (led < 0 || led > 7) {
ret = i2c_read(CONFIG_PCA9551_I2C_ADDR, reg, 1, &buf, 1);
*state = (buf >> shift) & 0x03;
static int pca9551_led_set_state(int led, int state)