48068d5de1
LP5521/5523 reset device functions are moved to lp55xx common driver. Value of register address and value are chip dependent. Those are configured in each driver. In init function, reset command is executed. Signed-off-by: Milo(Woogyom) Kim <milo.kim@ti.com> Signed-off-by: Bryan Wu <cooloney@gmail.com>
84 lines
2.1 KiB
C
84 lines
2.1 KiB
C
/*
|
|
* LP55XX Common Driver Header
|
|
*
|
|
* Copyright (C) 2012 Texas Instruments
|
|
*
|
|
* Author: Milo(Woogyom) Kim <milo.kim@ti.com>
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* version 2 as published by the Free Software Foundation.
|
|
*
|
|
* Derived from leds-lp5521.c, leds-lp5523.c
|
|
*/
|
|
|
|
#ifndef _LEDS_LP55XX_COMMON_H
|
|
#define _LEDS_LP55XX_COMMON_H
|
|
|
|
struct lp55xx_led;
|
|
struct lp55xx_chip;
|
|
|
|
/*
|
|
* struct lp55xx_reg
|
|
* @addr : Register address
|
|
* @val : Register value
|
|
*/
|
|
struct lp55xx_reg {
|
|
u8 addr;
|
|
u8 val;
|
|
};
|
|
|
|
/*
|
|
* struct lp55xx_device_config
|
|
* @reset : Chip specific reset command
|
|
*/
|
|
struct lp55xx_device_config {
|
|
const struct lp55xx_reg reset;
|
|
};
|
|
|
|
/*
|
|
* 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
|
|
*/
|
|
struct lp55xx_chip {
|
|
struct i2c_client *cl;
|
|
struct lp55xx_platform_data *pdata;
|
|
struct mutex lock; /* lock for user-space interface */
|
|
int num_leds;
|
|
struct lp55xx_device_config *cfg;
|
|
};
|
|
|
|
/*
|
|
* struct lp55xx_led
|
|
* @chan_nr : Channel number
|
|
* @cdev : LED class device
|
|
* @led_current : Current setting at each led channel
|
|
* @max_current : Maximun current at each led channel
|
|
* @brightness_work : Workqueue for brightness control
|
|
* @brightness : Brightness value
|
|
* @chip : The lp55xx chip data
|
|
*/
|
|
struct lp55xx_led {
|
|
int chan_nr;
|
|
struct led_classdev cdev;
|
|
u8 led_current;
|
|
u8 max_current;
|
|
struct work_struct brightness_work;
|
|
u8 brightness;
|
|
struct lp55xx_chip *chip;
|
|
};
|
|
|
|
/* register access */
|
|
extern int lp55xx_write(struct lp55xx_chip *chip, u8 reg, u8 val);
|
|
extern int lp55xx_read(struct lp55xx_chip *chip, u8 reg, u8 *val);
|
|
extern int lp55xx_update_bits(struct lp55xx_chip *chip, u8 reg,
|
|
u8 mask, u8 val);
|
|
|
|
/* common device init functions */
|
|
extern int lp55xx_init_device(struct lp55xx_chip *chip);
|
|
|
|
#endif /* _LEDS_LP55XX_COMMON_H */
|