Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
lm3533.h
Go to the documentation of this file.
1 /*
2  * lm3533.h -- LM3533 interface
3  *
4  * Copyright (C) 2011-2012 Texas Instruments
5  *
6  * Author: Johan Hovold <[email protected]>
7  *
8  * This program is free software; you can redistribute it and/or modify it
9  * under the terms of the GNU General Public License as published by the
10  * Free Software Foundation; either version 2 of the License, or (at your
11  * option) any later version.
12  */
13 
14 #ifndef __LINUX_MFD_LM3533_H
15 #define __LINUX_MFD_LM3533_H
16 
17 #define LM3533_ATTR_RO(_name) \
18  DEVICE_ATTR(_name, S_IRUGO, show_##_name, NULL)
19 #define LM3533_ATTR_RW(_name) \
20  DEVICE_ATTR(_name, S_IRUGO | S_IWUSR , show_##_name, store_##_name)
21 
22 struct device;
23 struct regmap;
24 
25 struct lm3533 {
26  struct device *dev;
27 
28  struct regmap *regmap;
29 
30  int gpio_hwen;
31  int irq;
32 
33  unsigned have_als:1;
34  unsigned have_backlights:1;
35  unsigned have_leds:1;
36 };
37 
39  struct lm3533 *lm3533;
40  struct device *dev;
41  int id;
42 };
43 
45  unsigned pwm_mode:1; /* PWM input mode (default analog) */
46  u8 r_select; /* 1 - 127 (ignored in PWM-mode) */
47 };
48 
50  char *name;
51  u16 max_current; /* 5000 - 29800 uA (800 uA step) */
52  u8 default_brightness; /* 0 - 255 */
53  u8 pwm; /* 0 - 0x3f */
54 };
55 
57  char *name;
58  const char *default_trigger;
59  u16 max_current; /* 5000 - 29800 uA (800 uA step) */
60  u8 pwm; /* 0 - 0x3f */
61 };
62 
66 };
67 
73 };
74 
76  int gpio_hwen;
77 
80 
82 
85 
87  int num_leds;
88 };
89 
90 extern int lm3533_ctrlbank_enable(struct lm3533_ctrlbank *cb);
91 extern int lm3533_ctrlbank_disable(struct lm3533_ctrlbank *cb);
92 
96  u16 imax);
97 extern int lm3533_ctrlbank_set_pwm(struct lm3533_ctrlbank *cb, u8 val);
98 extern int lm3533_ctrlbank_get_pwm(struct lm3533_ctrlbank *cb, u8 *val);
99 
100 extern int lm3533_read(struct lm3533 *lm3533, u8 reg, u8 *val);
101 extern int lm3533_write(struct lm3533 *lm3533, u8 reg, u8 val);
102 extern int lm3533_update(struct lm3533 *lm3533, u8 reg, u8 val, u8 mask);
103 
104 #endif /* __LINUX_MFD_LM3533_H */