From 0f86643d2642ac640ced433cea212cca415992f3 Mon Sep 17 00:00:00 2001 From: retic1337 <cameronbanna@gmail.com> Date: Tue, 29 Dec 2020 17:22:19 -0800 Subject: [PATCH] Formatting --- app/drivers/led/is31fl3733/is31fl3733.c | 262 +++++++++--------- .../led/is31fl3733/issi,is31fl3733.yaml | 2 +- 2 files changed, 131 insertions(+), 133 deletions(-) diff --git a/app/drivers/led/is31fl3733/is31fl3733.c b/app/drivers/led/is31fl3733/is31fl3733.c index 180e94e0..65ddc9f7 100644 --- a/app/drivers/led/is31fl3733/is31fl3733.c +++ b/app/drivers/led/is31fl3733/is31fl3733.c @@ -5,8 +5,8 @@ #define DT_DRV_COMPAT issi_is31fl3733 /* -* "SUMMARY" -*/ + * "SUMMARY" + */ #include <drivers/i2c.h> #include <drivers/led.h> @@ -16,168 +16,166 @@ #define LOG_LEVEL CONFIG_LED_LOG_LEVEL #include <logging/log.h> LOG_MODULE_REGISTER(is31fl3733); - /** Number of CS lines. */ +/** Number of CS lines. */ #define IS31FL3733_CS (16) - /** Number of SW lines. */ +/** Number of SW lines. */ #define IS31FL3733_SW (12) - /** IS31FL3733 common registers. */ -#define IS31FL3733_PSR (0xFD) ///< Page select register. Write only. -#define IS31FL3733_PSWL (0xFE) ///< Page select register write lock. Read/Write. - /** Registers in Page 0. */ -#define IS31FL3733_LEDONOFF (0x0000) /// ON or OFF state control for each LED. Write only. -#define IS31FL3733_LEDOPEN (0x0018) /// Open state for each LED. Read only. -#define IS31FL3733_LEDSHORT (0x0030) /// Short state for each LED. Read only. - /** Registers in Page 1. */ -#define IS31FL3733_LEDPWM (0x0100) /// PWM duty for each LED. Write only. - /** Registers in Page 3. */ -#define IS31FL3733_CR (0x0300) /// Configuration Register. Write only. -#define IS31FL3733_RESET (0x0311) /// Reset register. Read only. - /** PSWL register bits. */ +/** IS31FL3733 common registers. */ +#define IS31FL3733_PSR (0xFD) ///< Page select register. Write only. +#define IS31FL3733_PSWL (0xFE) ///< Page select register write lock. Read/Write. + /** Registers in Page 0. */ +#define IS31FL3733_LEDONOFF (0x0000) /// ON or OFF state control for each LED. Write only. +#define IS31FL3733_LEDOPEN (0x0018) /// Open state for each LED. Read only. +#define IS31FL3733_LEDSHORT (0x0030) /// Short state for each LED. Read only. + /** Registers in Page 1. */ +#define IS31FL3733_LEDPWM (0x0100) /// PWM duty for each LED. Write only. + /** Registers in Page 3. */ +#define IS31FL3733_CR (0x0300) /// Configuration Register. Write only. +#define IS31FL3733_RESET (0x0311) /// Reset register. Read only. + /** PSWL register bits. */ #define IS31FL3733_PSWL_DISABLE (0x00) /// Disable write to Page Select register. -#define IS31FL3733_PSWL_ENABLE (0xC5) /// Enable write to Page select register. +#define IS31FL3733_PSWL_ENABLE (0xC5) /// Enable write to Page select register. struct is31fl3733_config { - int reg; - int inst; - char *bus_name; + int reg; + int inst; + char *bus_name; }; struct is31fl3733_data { - const struct device *i2c; + const struct device *i2c; }; uint8_t leds[IS31FL3733_SW * IS31FL3733_CS / 8]; -static int is31fl3733_set_page(const struct device *dev, uint16_t addr){ - const struct is31fl3733_data *dev_data = dev->data; - const struct is31fl3733_config *dev_cfg = dev->config; - if (i2c_reg_write_byte(dev_data->i2c, dev_cfg->reg, IS31FL3733_PSWL, IS31FL3733_PSWL_ENABLE)){ - LOG_ERR("Enable write to Page select register failed"); - return -EIO; - } - if (i2c_reg_write_byte(dev_data->i2c, dev_cfg->reg, IS31FL3733_PSR, addr)){ - LOG_ERR("Writing to Page select register failed"); - return -EIO; - } - return 0; -} -static int is31fl3733_write_page_reg(const struct device *dev, uint8_t reg, uint8_t buffer){ - const struct is31fl3733_data *dev_data = dev->data; - const struct is31fl3733_config *dev_cfg = dev->config; - if (i2c_reg_write_byte(dev_data->i2c, dev_cfg->reg, reg, buffer)){ - LOG_ERR("Writing Page Failed"); - return -EIO; - } - return 0; -} -static int is31fl3733_led_set_brightness(const struct device *dev, uint32_t led, uint8_t value){ - uint8_t cs = led - ((led / 16) * 16); - uint8_t sw = led / 16; - uint8_t offset = sw * IS31FL3733_CS + cs; - // Set page to 0x01 PWM Page - is31fl3733_set_page(dev, 0x01); - is31fl3733_write_page_reg(dev, offset, value); +static int is31fl3733_set_page(const struct device *dev, uint16_t addr) { + const struct is31fl3733_data *dev_data = dev->data; + const struct is31fl3733_config *dev_cfg = dev->config; + if (i2c_reg_write_byte(dev_data->i2c, dev_cfg->reg, IS31FL3733_PSWL, IS31FL3733_PSWL_ENABLE)) { + LOG_ERR("Enable write to Page select register failed"); + return -EIO; + } + if (i2c_reg_write_byte(dev_data->i2c, dev_cfg->reg, IS31FL3733_PSR, addr)) { + LOG_ERR("Writing to Page select register failed"); + return -EIO; + } return 0; } -static inline int is31fl3733_led_on(const struct device *dev, uint32_t led){ +static int is31fl3733_write_page_reg(const struct device *dev, uint8_t reg, uint8_t buffer) { + const struct is31fl3733_data *dev_data = dev->data; + const struct is31fl3733_config *dev_cfg = dev->config; + if (i2c_reg_write_byte(dev_data->i2c, dev_cfg->reg, reg, buffer)) { + LOG_ERR("Writing Page Failed"); + return -EIO; + } + return 0; +} +static int is31fl3733_led_set_brightness(const struct device *dev, uint32_t led, uint8_t value) { + uint8_t cs = led - ((led / 16) * 16); + uint8_t sw = led / 16; + uint8_t offset = sw * IS31FL3733_CS + cs; + // Set page to 0x01 PWM Page + is31fl3733_set_page(dev, 0x01); + is31fl3733_write_page_reg(dev, offset, value); + return 0; +} +static inline int is31fl3733_led_on(const struct device *dev, uint32_t led) { uint8_t cs = led - ((led / 16) * 16); uint8_t sw = led / 16; uint8_t offset = (sw << 1) + (cs / 8); leds[offset] |= 0x01 << (cs % 8); - // Set page to 0x01 Led Control Page - is31fl3733_set_page(dev, 0x00); - is31fl3733_write_page_reg(dev, offset, leds[offset]); + // Set page to 0x01 Led Control Page + is31fl3733_set_page(dev, 0x00); + is31fl3733_write_page_reg(dev, offset, leds[offset]); return 0; } -static inline int is31fl3733_led_off(const struct device *dev, uint32_t led){ +static inline int is31fl3733_led_off(const struct device *dev, uint32_t led) { uint8_t cs = led - ((led / 16) * 16); uint8_t sw = led / 16; uint8_t offset = (sw << 1) + (cs / 8); leds[offset] &= ~(0x01 << (cs % 8)); - // Set page to 0x01 Led Control Page - is31fl3733_set_page(dev, 0x00); - is31fl3733_write_page_reg(dev, offset, leds[offset]); + // Set page to 0x01 Led Control Page + is31fl3733_set_page(dev, 0x00); + is31fl3733_write_page_reg(dev, offset, leds[offset]); return 0; } -static int is31fl3733_led_set_color(const struct device *dev,uint32_t led, uint8_t num_of_colors, const uint8_t *colors){ +static int is31fl3733_led_set_color(const struct device *dev, uint32_t led, uint8_t num_of_colors, + const uint8_t *colors) { uint8_t cs = led - ((led / 16) * 16); - uint8_t sw = (led / 16) * 3; - uint8_t offset_red = sw * IS31FL3733_CS + cs; - uint8_t offset_green = (sw + 1) * IS31FL3733_CS + cs; - uint8_t offset_blue = (sw + 2) * IS31FL3733_CS + cs; - // Set page to 0x01 PWM Page - is31fl3733_set_page(dev, 0x01); - is31fl3733_write_page_reg(dev, offset_red, colors[0]); - is31fl3733_write_page_reg(dev, offset_green, colors[1]); - is31fl3733_write_page_reg(dev, offset_blue, colors[2]); - return 0; + uint8_t sw = (led / 16) * 3; + uint8_t offset_red = sw * IS31FL3733_CS + cs; + uint8_t offset_green = (sw + 1) * IS31FL3733_CS + cs; + uint8_t offset_blue = (sw + 2) * IS31FL3733_CS + cs; + // Set page to 0x01 PWM Page + is31fl3733_set_page(dev, 0x01); + is31fl3733_write_page_reg(dev, offset_red, colors[0]); + is31fl3733_write_page_reg(dev, offset_green, colors[1]); + is31fl3733_write_page_reg(dev, offset_blue, colors[2]); + return 0; } -static int is31fl3733_led_reset(const struct device *dev){ - const struct is31fl3733_data *data = dev->data; - const struct is31fl3733_config *dev_cfg = dev->config; - if (i2c_reg_write_byte(data->i2c, dev_cfg->reg, IS31FL3733_PSWL, IS31FL3733_PSWL_ENABLE)){ - LOG_ERR("Enable write to Page select register failed"); - return -EIO; - } - uint8_t partA = (uint8_t)((IS31FL3733_RESET & 0xFF00) >> 8); - uint8_t partB = (uint8_t)(IS31FL3733_RESET & 0x00FF); - uint8_t tx_buf[2] = {IS31FL3733_PSR, partA}; - // Sequence to reset the IC - if (i2c_write(data->i2c,tx_buf, 2, dev_cfg->reg)){ - LOG_ERR("Reseting Device Failed"); - return -EIO; - } - uint8_t tx_buf2[1] = {partB}; - if (i2c_write(data->i2c, tx_buf2, 1, dev_cfg->reg)){ - LOG_ERR("Reseting Device Failed"); - return -EIO; - } - if (i2c_read(data->i2c, NULL, 1, dev_cfg->reg)){ - LOG_ERR("Reseting Device Failed"); - return -EIO; - } - // Set Page to 0x03 Function page - is31fl3733_set_page(dev, 0x03); - // use the write page reg function to set the config - // register to 0x00 and set the value to 0x01 for normal - // operation, this can also be set to 0x01 for software - // shutdown mode. see page 17 & 18 of datasheet - is31fl3733_write_page_reg(dev, 0x00, 0x01); - return 0; +static int is31fl3733_led_reset(const struct device *dev) { + const struct is31fl3733_data *data = dev->data; + const struct is31fl3733_config *dev_cfg = dev->config; + if (i2c_reg_write_byte(data->i2c, dev_cfg->reg, IS31FL3733_PSWL, IS31FL3733_PSWL_ENABLE)) { + LOG_ERR("Enable write to Page select register failed"); + return -EIO; + } + uint8_t partA = (uint8_t)((IS31FL3733_RESET & 0xFF00) >> 8); + uint8_t partB = (uint8_t)(IS31FL3733_RESET & 0x00FF); + uint8_t tx_buf[2] = {IS31FL3733_PSR, partA}; + // Sequence to reset the IC + if (i2c_write(data->i2c, tx_buf, 2, dev_cfg->reg)) { + LOG_ERR("Reseting Device Failed"); + return -EIO; + } + uint8_t tx_buf2[1] = {partB}; + if (i2c_write(data->i2c, tx_buf2, 1, dev_cfg->reg)) { + LOG_ERR("Reseting Device Failed"); + return -EIO; + } + if (i2c_read(data->i2c, NULL, 1, dev_cfg->reg)) { + LOG_ERR("Reseting Device Failed"); + return -EIO; + } + // Set Page to 0x03 Function page + is31fl3733_set_page(dev, 0x03); + // use the write page reg function to set the config + // register to 0x00 and set the value to 0x01 for normal + // operation, this can also be set to 0x01 for software + // shutdown mode. see page 17 & 18 of datasheet + is31fl3733_write_page_reg(dev, 0x00, 0x01); + return 0; } -static int is31fl3733_led_init(const struct device *dev){ - const struct is31fl3733_config *dev_cfg = dev->config; - struct is31fl3733_data *dev_data = dev->data; - dev_data->i2c = device_get_binding(dev_cfg->bus_name); - if (dev_data->i2c == NULL) { - LOG_DBG("Failed to get I2C device"); - return -EINVAL; - } - is31fl3733_led_reset(dev); - // Set the Global Current Control, would like to pull this - // value from the device tree eventually - is31fl3733_write_page_reg(dev, 0x03, 0x01); - uint8_t GCC = 255; - is31fl3733_write_page_reg(dev, 0x01, GCC); - return 0; +static int is31fl3733_led_init(const struct device *dev) { + const struct is31fl3733_config *dev_cfg = dev->config; + struct is31fl3733_data *dev_data = dev->data; + dev_data->i2c = device_get_binding(dev_cfg->bus_name); + if (dev_data->i2c == NULL) { + LOG_DBG("Failed to get I2C device"); + return -EINVAL; + } + is31fl3733_led_reset(dev); + // Set the Global Current Control, would like to pull this + // value from the device tree eventually + is31fl3733_write_page_reg(dev, 0x03, 0x01); + uint8_t GCC = 255; + is31fl3733_write_page_reg(dev, 0x01, GCC); + return 0; } static const struct led_driver_api is31fl3733_led_api = { .on = is31fl3733_led_on, - .off = is31fl3733_led_off, - .set_brightness = is31fl3733_led_set_brightness, - .set_color = is31fl3733_led_set_color, + .off = is31fl3733_led_off, + .set_brightness = is31fl3733_led_set_brightness, + .set_color = is31fl3733_led_set_color, }; - - -#define IS31FL3733_INIT(inst) \ - static struct is31fl3733_data is31fl3733_led_data_##inst; \ - static const struct is31fl3733_config is31fl3733_config_##inst = { \ - .bus_name = DT_INST_BUS_LABEL(inst), \ - .reg = DT_INST_REG_ADDR(inst), \ - }; \ - DEVICE_AND_API_INIT(is31fl3733_led##inst, DT_INST_LABEL(inst), \ - &is31fl3733_led_init, &is31fl3733_led_data_##inst, \ - &is31fl3733_config_##inst, POST_KERNEL, CONFIG_LED_INIT_PRIORITY, \ - &is31fl3733_led_api); +#define IS31FL3733_INIT(inst) \ + static struct is31fl3733_data is31fl3733_led_data_##inst; \ + static const struct is31fl3733_config is31fl3733_config_##inst = { \ + .bus_name = DT_INST_BUS_LABEL(inst), \ + .reg = DT_INST_REG_ADDR(inst), \ + }; \ + DEVICE_AND_API_INIT(is31fl3733_led##inst, DT_INST_LABEL(inst), &is31fl3733_led_init, \ + &is31fl3733_led_data_##inst, &is31fl3733_config_##inst, POST_KERNEL, \ + CONFIG_LED_INIT_PRIORITY, &is31fl3733_led_api); DT_INST_FOREACH_STATUS_OKAY(IS31FL3733_INIT) diff --git a/app/drivers/zephyr/dts/bindings/led/is31fl3733/issi,is31fl3733.yaml b/app/drivers/zephyr/dts/bindings/led/is31fl3733/issi,is31fl3733.yaml index b8427da2..9cd05b69 100644 --- a/app/drivers/zephyr/dts/bindings/led/is31fl3733/issi,is31fl3733.yaml +++ b/app/drivers/zephyr/dts/bindings/led/is31fl3733/issi,is31fl3733.yaml @@ -6,4 +6,4 @@ compatible: "issi,is31fl3733" properties: label: required: true - type: string \ No newline at end of file + type: string