#include <linux/module.h>
#include <linux/mfd/core.h>
#include <linux/platform_device.h>
#include <linux/mfd/lm3533.h>
#define LM3533_LVCTRLBANK_MIN 2
#define LM3533_LVCTRLBANK_MAX 5
#define LM3533_LVCTRLBANK_COUNT 4
#define LM3533_RISEFALLTIME_MAX 7
#define LM3533_ALS_CHANNEL_LV_MIN 1
#define LM3533_ALS_CHANNEL_LV_MAX 2
#define LM3533_REG_CTRLBANK_BCONF_BASE 0x1b
#define LM3533_REG_PATTERN_ENABLE 0x28
#define LM3533_REG_PATTERN_LOW_TIME_BASE 0x71
#define LM3533_REG_PATTERN_HIGH_TIME_BASE 0x72
#define LM3533_REG_PATTERN_RISETIME_BASE 0x74
#define LM3533_REG_PATTERN_FALLTIME_BASE 0x75
#define LM3533_REG_PATTERN_STEP 0x10
#define LM3533_REG_CTRLBANK_BCONF_MAPPING_MASK 0x04
#define LM3533_REG_CTRLBANK_BCONF_ALS_EN_MASK 0x02
#define LM3533_REG_CTRLBANK_BCONF_ALS_CHANNEL_MASK 0x01
#define LM3533_LED_FLAG_PATTERN_ENABLE 1
struct lm3533_ctrlbank cb;
struct led_classdev cdev;
static inline struct lm3533_led *to_lm3533_led(struct led_classdev *cdev)
return container_of(cdev, struct lm3533_led, cdev);
static inline int lm3533_led_get_ctrlbank_id(struct lm3533_led *led)
static inline u8 lm3533_led_get_lv_reg(struct lm3533_led *led, u8 base)
static inline u8 lm3533_led_get_pattern(struct lm3533_led *led)
static inline u8 lm3533_led_get_pattern_reg(struct lm3533_led *led,
return base + lm3533_led_get_pattern(led) * LM3533_REG_PATTERN_STEP;
static int lm3533_led_pattern_enable(struct lm3533_led *led, int enable)
dev_dbg(led->cdev.dev, "%s - %d\n", __func__, enable);