Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003  * lm3533.h -- LM3533 interface
0004  *
0005  * Copyright (C) 2011-2012 Texas Instruments
0006  *
0007  * Author: Johan Hovold <jhovold@gmail.com>
0008  */
0009 
0010 #ifndef __LINUX_MFD_LM3533_H
0011 #define __LINUX_MFD_LM3533_H
0012 
0013 #define LM3533_ATTR_RO(_name) \
0014     DEVICE_ATTR(_name, S_IRUGO, show_##_name, NULL)
0015 #define LM3533_ATTR_RW(_name) \
0016     DEVICE_ATTR(_name, S_IRUGO | S_IWUSR , show_##_name, store_##_name)
0017 
0018 struct device;
0019 struct regmap;
0020 
0021 struct lm3533 {
0022     struct device *dev;
0023 
0024     struct regmap *regmap;
0025 
0026     int gpio_hwen;
0027     int irq;
0028 
0029     unsigned have_als:1;
0030     unsigned have_backlights:1;
0031     unsigned have_leds:1;
0032 };
0033 
0034 struct lm3533_ctrlbank {
0035     struct lm3533 *lm3533;
0036     struct device *dev;
0037     int id;
0038 };
0039 
0040 struct lm3533_als_platform_data {
0041     unsigned pwm_mode:1;        /* PWM input mode (default analog) */
0042     u8 r_select;            /* 1 - 127 (ignored in PWM-mode) */
0043 };
0044 
0045 struct lm3533_bl_platform_data {
0046     char *name;
0047     u16 max_current;        /* 5000 - 29800 uA (800 uA step) */
0048     u8 default_brightness;      /* 0 - 255 */
0049     u8 pwm;             /* 0 - 0x3f */
0050 };
0051 
0052 struct lm3533_led_platform_data {
0053     char *name;
0054     const char *default_trigger;
0055     u16 max_current;        /* 5000 - 29800 uA (800 uA step) */
0056     u8 pwm;             /* 0 - 0x3f */
0057 };
0058 
0059 enum lm3533_boost_freq {
0060     LM3533_BOOST_FREQ_500KHZ,
0061     LM3533_BOOST_FREQ_1000KHZ,
0062 };
0063 
0064 enum lm3533_boost_ovp {
0065     LM3533_BOOST_OVP_16V,
0066     LM3533_BOOST_OVP_24V,
0067     LM3533_BOOST_OVP_32V,
0068     LM3533_BOOST_OVP_40V,
0069 };
0070 
0071 struct lm3533_platform_data {
0072     int gpio_hwen;
0073 
0074     enum lm3533_boost_ovp boost_ovp;
0075     enum lm3533_boost_freq boost_freq;
0076 
0077     struct lm3533_als_platform_data *als;
0078 
0079     struct lm3533_bl_platform_data *backlights;
0080     int num_backlights;
0081 
0082     struct lm3533_led_platform_data *leds;
0083     int num_leds;
0084 };
0085 
0086 extern int lm3533_ctrlbank_enable(struct lm3533_ctrlbank *cb);
0087 extern int lm3533_ctrlbank_disable(struct lm3533_ctrlbank *cb);
0088 
0089 extern int lm3533_ctrlbank_set_brightness(struct lm3533_ctrlbank *cb, u8 val);
0090 extern int lm3533_ctrlbank_get_brightness(struct lm3533_ctrlbank *cb, u8 *val);
0091 extern int lm3533_ctrlbank_set_max_current(struct lm3533_ctrlbank *cb,
0092                                 u16 imax);
0093 extern int lm3533_ctrlbank_set_pwm(struct lm3533_ctrlbank *cb, u8 val);
0094 extern int lm3533_ctrlbank_get_pwm(struct lm3533_ctrlbank *cb, u8 *val);
0095 
0096 extern int lm3533_read(struct lm3533 *lm3533, u8 reg, u8 *val);
0097 extern int lm3533_write(struct lm3533 *lm3533, u8 reg, u8 val);
0098 extern int lm3533_update(struct lm3533 *lm3533, u8 reg, u8 val, u8 mask);
0099 
0100 #endif  /* __LINUX_MFD_LM3533_H */