6b13f685e
김민수
BSP 최초 추가
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
#ifndef _LINUX_LCD_H
#define _LINUX_LCD_H
#include <linux/device.h>
#include <linux/mutex.h>
#include <linux/notifier.h>
#include <linux/fb.h>
struct lcd_device;
struct fb_info;
struct lcd_properties {
int max_contrast;
};
struct lcd_ops {
int (*get_power)(struct lcd_device *);
int (*early_set_power)(struct lcd_device *, int power);
int (*r_early_set_power)(struct lcd_device *, int power);
int (*set_power)(struct lcd_device *, int power);
int (*get_contrast)(struct lcd_device *);
int (*set_contrast)(struct lcd_device *, int contrast);
int (*set_mode)(struct lcd_device *, struct fb_videomode *);
int (*check_fb)(struct lcd_device *, struct fb_info *);
};
struct lcd_device {
struct lcd_properties props;
struct mutex ops_lock;
struct lcd_ops *ops;
struct mutex update_lock;
struct notifier_block fb_notif;
struct device dev;
};
struct lcd_platform_data {
int (*reset)(struct lcd_device *ld);
int (*power_on)(struct lcd_device *ld, int enable);
int lcd_enabled;
unsigned int reset_delay;
unsigned int power_on_delay;
unsigned int power_off_delay;
void *pdata;
};
static inline void lcd_set_power(struct lcd_device *ld, int power)
{
mutex_lock(&ld->update_lock);
if (ld->ops && ld->ops->set_power)
ld->ops->set_power(ld, power);
mutex_unlock(&ld->update_lock);
}
extern struct lcd_device *lcd_device_register(const char *name,
struct device *parent, void *devdata, struct lcd_ops *ops);
extern struct lcd_device *devm_lcd_device_register(struct device *dev,
const char *name, struct device *parent,
void *devdata, struct lcd_ops *ops);
extern void lcd_device_unregister(struct lcd_device *ld);
extern void devm_lcd_device_unregister(struct device *dev,
struct lcd_device *ld);
#define to_lcd_device(obj) container_of(obj, struct lcd_device, dev)
static inline void * lcd_get_data(struct lcd_device *ld_dev)
{
return dev_get_drvdata(&ld_dev->dev);
}
#endif
|