#include <linux/i2c.h>
#include <linux/module.h>
#include <linux/led-class-multicolor.h>
#define NCP5623_FUNCTION_OFFSET …
#define NCP5623_REG(x) …
#define NCP5623_SHUTDOWN_REG …
#define NCP5623_ILED_REG …
#define NCP5623_PWM_REG(index) …
#define NCP5623_UPWARD_STEP_REG …
#define NCP5623_DOWNWARD_STEP_REG …
#define NCP5623_DIMMING_TIME_REG …
#define NCP5623_MAX_BRIGHTNESS …
#define NCP5623_MAX_DIM_TIME_MS …
#define NCP5623_DIM_STEP_MS …
struct ncp5623 { … };
static int ncp5623_write(struct i2c_client *client, u8 reg, u8 data)
{ … }
static int ncp5623_brightness_set(struct led_classdev *cdev,
enum led_brightness brightness)
{ … }
static int ncp5623_pattern_set(struct led_classdev *cdev,
struct led_pattern *pattern,
u32 len, int repeat)
{ … }
static int ncp5623_pattern_clear(struct led_classdev *led_cdev)
{ … }
static int ncp5623_probe(struct i2c_client *client)
{ … }
static void ncp5623_remove(struct i2c_client *client)
{ … }
static void ncp5623_shutdown(struct i2c_client *client)
{ … }
static const struct of_device_id ncp5623_id[] = …;
MODULE_DEVICE_TABLE(of, ncp5623_id);
static struct i2c_driver ncp5623_i2c_driver = …;
module_i2c_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;