/* * struct lp55xx_reg * @addr : Register address * @val : Register value (can also used as mask or shift)
*/ struct lp55xx_reg {
u8 addr; union {
u8 val;
u8 mask;
u8 shift;
};
};
/* * struct lp55xx_device_config * @reg_op_mode : Chip specific OP MODE reg addr * @engine_busy : Chip specific engine busy * (if not supported 153 us sleep) * @reset : Chip specific reset command * @enable : Chip specific enable command * @prog_mem_base : Chip specific base reg address for chip SMEM programming * @reg_led_pwm_base : Chip specific base reg address for LED PWM conf * @reg_led_current_base : Chip specific base reg address for LED current conf * @reg_master_fader_base : Chip specific base reg address for master fader base * @reg_led_ctrl_base : Chip specific base reg address for LED ctrl base * @pages_per_engine : Assigned pages for each engine * (if not set chip doesn't support pages) * @max_channel : Maximum number of channels * @post_init_device : Chip specific initialization code * @brightness_fn : Brightness function * @multicolor_brightness_fn : Multicolor brightness function * @set_led_current : LED current set function * @firmware_cb : Call function when the firmware is loaded * @run_engine : Run internal engine for pattern * @dev_attr_group : Device specific attributes
*/ struct lp55xx_device_config { conststruct lp55xx_reg reg_op_mode; /* addr, shift */ conststruct lp55xx_reg reg_exec; /* addr, shift */ conststruct lp55xx_reg engine_busy; /* addr, mask */ conststruct lp55xx_reg reset; conststruct lp55xx_reg enable; conststruct lp55xx_reg prog_mem_base; conststruct lp55xx_reg reg_led_pwm_base; conststruct lp55xx_reg reg_led_current_base; conststruct lp55xx_reg reg_master_fader_base; conststruct lp55xx_reg reg_led_ctrl_base; constint pages_per_engine; constint max_channel;
/* define if the device has specific initialization process */ int (*post_init_device) (struct lp55xx_chip *chip);
/* set LED brightness */ int (*brightness_fn)(struct lp55xx_led *led);
/* set multicolor LED brightness */ int (*multicolor_brightness_fn)(struct lp55xx_led *led);
/* current setting function */ void (*set_led_current) (struct lp55xx_led *led, u8 led_current);
/* access program memory when the firmware is loaded */ void (*firmware_cb)(struct lp55xx_chip *chip);
/* used for running firmware LED patterns */ void (*run_engine) (struct lp55xx_chip *chip, bool start);
/* additional device specific attributes */ conststruct attribute_group *dev_attr_group;
};
/* * struct lp55xx_engine * @mode : Engine mode * @led_mux : Mux bits for LED selection. Only used in LP5523
*/ struct lp55xx_engine { enum lp55xx_engine_mode mode;
u16 led_mux;
};
/* * struct lp55xx_chip * @cl : I2C communication for access registers * @pdata : Platform specific data * @lock : Lock for user-space interface * @num_leds : Number of registered LEDs * @cfg : Device specific configuration data * @engine_idx : Selected engine number * @engines : Engine structure for the device attribute R/W interface * @fw : Firmware data for running a LED pattern
*/ struct lp55xx_chip { struct i2c_client *cl; struct lp55xx_platform_data *pdata; struct mutex lock; /* lock for user-space interface */ int num_leds; conststruct lp55xx_device_config *cfg; enum lp55xx_engine_index engine_idx; struct lp55xx_engine engines[LP55XX_ENGINE_MAX]; conststruct firmware *fw;
};
/* * struct lp55xx_led * @chan_nr : Channel number * @cdev : LED class device * @mc_cdev : Multi color class device * @color_components: Multi color LED map information * @led_current : Current setting at each led channel * @max_current : Maximun current at each led channel * @brightness : Brightness value * @chip : The lp55xx chip data
*/ struct lp55xx_led { int chan_nr; struct led_classdev cdev; struct led_classdev_mc mc_cdev;
u8 led_current;
u8 max_current;
u8 brightness; struct lp55xx_chip *chip;
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.