60 lines
1.2 KiB
C
60 lines
1.2 KiB
C
|
/*
|
||
|
* LP5521/LP5523/LP55231 Common Driver
|
||
|
*
|
||
|
* Copyright 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
|
||
|
*/
|
||
|
|
||
|
#include <linux/i2c.h>
|
||
|
#include <linux/leds.h>
|
||
|
#include <linux/module.h>
|
||
|
#include <linux/platform_data/leds-lp55xx.h>
|
||
|
|
||
|
#include "leds-lp55xx-common.h"
|
||
|
|
||
|
int lp55xx_write(struct lp55xx_chip *chip, u8 reg, u8 val)
|
||
|
{
|
||
|
return i2c_smbus_write_byte_data(chip->cl, reg, val);
|
||
|
}
|
||
|
EXPORT_SYMBOL_GPL(lp55xx_write);
|
||
|
|
||
|
int lp55xx_read(struct lp55xx_chip *chip, u8 reg, u8 *val)
|
||
|
{
|
||
|
s32 ret;
|
||
|
|
||
|
ret = i2c_smbus_read_byte_data(chip->cl, reg);
|
||
|
if (ret < 0)
|
||
|
return ret;
|
||
|
|
||
|
*val = ret;
|
||
|
return 0;
|
||
|
}
|
||
|
EXPORT_SYMBOL_GPL(lp55xx_read);
|
||
|
|
||
|
int lp55xx_update_bits(struct lp55xx_chip *chip, u8 reg, u8 mask, u8 val)
|
||
|
{
|
||
|
int ret;
|
||
|
u8 tmp;
|
||
|
|
||
|
ret = lp55xx_read(chip, reg, &tmp);
|
||
|
if (ret)
|
||
|
return ret;
|
||
|
|
||
|
tmp &= ~mask;
|
||
|
tmp |= val & mask;
|
||
|
|
||
|
return lp55xx_write(chip, reg, tmp);
|
||
|
}
|
||
|
EXPORT_SYMBOL_GPL(lp55xx_update_bits);
|
||
|
|
||
|
MODULE_AUTHOR("Milo Kim <milo.kim@ti.com>");
|
||
|
MODULE_DESCRIPTION("LP55xx Common Driver");
|
||
|
MODULE_LICENSE("GPL");
|