1/****************************************************************************
2 ****************************************************************************
3 ***
4 ***   This header was automatically generated from a Linux kernel header
5 ***   of the same name, to make information necessary for userspace to
6 ***   call into the kernel available to libc.  It contains only constants,
7 ***   structures, and macros generated from the original header, and thus,
8 ***   contains no copyrightable information.
9 ***
10 ***   To edit the content of this header, modify the corresponding
11 ***   source file (e.g. under external/kernel-headers/original/) then
12 ***   run bionic/libc/kernel/tools/update_all.py
13 ***
14 ***   Any manual change here will be lost the next time this script will
15 ***   be run. You've been warned!
16 ***
17 ****************************************************************************
18 ****************************************************************************/
19#ifndef _DEVICE_H_
20#define _DEVICE_H_
21#include <linux/ioport.h>
22#include <linux/kobject.h>
23/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
24#include <linux/klist.h>
25#include <linux/list.h>
26#include <linux/types.h>
27#include <linux/module.h>
28/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
29#include <linux/pm.h>
30#include <asm/semaphore.h>
31#include <asm/atomic.h>
32#define DEVICE_NAME_SIZE 50
33/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
34#define DEVICE_NAME_HALF __stringify(20)
35#define DEVICE_ID_SIZE 32
36#define BUS_ID_SIZE KOBJ_NAME_LEN
37struct device;
38/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
39struct device_driver;
40struct class;
41struct class_device;
42struct bus_type {
43/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
44 const char * name;
45 struct subsystem subsys;
46 struct kset drivers;
47 struct kset devices;
48/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
49 struct klist klist_devices;
50 struct klist klist_drivers;
51 struct bus_attribute * bus_attrs;
52 struct device_attribute * dev_attrs;
53/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
54 struct driver_attribute * drv_attrs;
55 int (*match)(struct device * dev, struct device_driver * drv);
56 int (*uevent)(struct device *dev, char **envp,
57 int num_envp, char *buffer, int buffer_size);
58/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
59 int (*probe)(struct device * dev);
60 int (*remove)(struct device * dev);
61 void (*shutdown)(struct device * dev);
62 int (*suspend)(struct device * dev, pm_message_t state);
63/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
64 int (*resume)(struct device * dev);
65};
66struct device * bus_find_device(struct bus_type *bus, struct device *start,
67 void *data, int (*match)(struct device *, void *));
68/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
69struct bus_attribute {
70 struct attribute attr;
71 ssize_t (*show)(struct bus_type *, char * buf);
72 ssize_t (*store)(struct bus_type *, const char * buf, size_t count);
73/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
74};
75#define BUS_ATTR(_name,_mode,_show,_store)  struct bus_attribute bus_attr_##_name = __ATTR(_name,_mode,_show,_store)
76struct device_driver {
77 const char * name;
78/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
79 struct bus_type * bus;
80 struct completion unloaded;
81 struct kobject kobj;
82 struct klist klist_devices;
83/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
84 struct klist_node knode_bus;
85 struct module * owner;
86 int (*probe) (struct device * dev);
87 int (*remove) (struct device * dev);
88/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
89 void (*shutdown) (struct device * dev);
90 int (*suspend) (struct device * dev, pm_message_t state);
91 int (*resume) (struct device * dev);
92};
93/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
94struct driver_attribute {
95 struct attribute attr;
96 ssize_t (*show)(struct device_driver *, char * buf);
97 ssize_t (*store)(struct device_driver *, const char * buf, size_t count);
98/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
99};
100#define DRIVER_ATTR(_name,_mode,_show,_store)  struct driver_attribute driver_attr_##_name = __ATTR(_name,_mode,_show,_store)
101struct device * driver_find_device(struct device_driver *drv,
102 struct device *start, void *data,
103/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
104 int (*match)(struct device *, void *));
105struct class {
106 const char * name;
107 struct module * owner;
108/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
109 struct subsystem subsys;
110 struct list_head children;
111 struct list_head devices;
112 struct list_head interfaces;
113/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
114 struct semaphore sem;
115 struct class_attribute * class_attrs;
116 struct class_device_attribute * class_dev_attrs;
117 int (*uevent)(struct class_device *dev, char **envp,
118/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
119 int num_envp, char *buffer, int buffer_size);
120 void (*release)(struct class_device *dev);
121 void (*class_release)(struct class *class);
122};
123/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
124struct class_attribute {
125 struct attribute attr;
126 ssize_t (*show)(struct class *, char * buf);
127 ssize_t (*store)(struct class *, const char * buf, size_t count);
128/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
129};
130#define CLASS_ATTR(_name,_mode,_show,_store)  struct class_attribute class_attr_##_name = __ATTR(_name,_mode,_show,_store)
131struct class_device_attribute {
132 struct attribute attr;
133/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
134 ssize_t (*show)(struct class_device *, char * buf);
135 ssize_t (*store)(struct class_device *, const char * buf, size_t count);
136};
137#define CLASS_DEVICE_ATTR(_name,_mode,_show,_store)  struct class_device_attribute class_device_attr_##_name =   __ATTR(_name,_mode,_show,_store)
138/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
139struct class_device {
140 struct list_head node;
141 struct kobject kobj;
142 struct class * class;
143/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
144 dev_t devt;
145 struct class_device_attribute *devt_attr;
146 struct class_device_attribute uevent_attr;
147 struct device * dev;
148/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
149 void * class_data;
150 struct class_device *parent;
151 struct attribute_group ** groups;
152 void (*release)(struct class_device *dev);
153/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
154 int (*uevent)(struct class_device *dev, char **envp,
155 int num_envp, char *buffer, int buffer_size);
156 char class_id[BUS_ID_SIZE];
157};
158/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
159struct class_interface {
160 struct list_head node;
161 struct class *class;
162 int (*add) (struct class_device *, struct class_interface *);
163/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
164 void (*remove) (struct class_device *, struct class_interface *);
165};
166struct device_attribute {
167 struct attribute attr;
168/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
169 ssize_t (*show)(struct device *dev, struct device_attribute *attr,
170 char *buf);
171 ssize_t (*store)(struct device *dev, struct device_attribute *attr,
172 const char *buf, size_t count);
173/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
174};
175#define DEVICE_ATTR(_name,_mode,_show,_store)  struct device_attribute dev_attr_##_name = __ATTR(_name,_mode,_show,_store)
176struct device {
177 struct klist klist_children;
178/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
179 struct klist_node knode_parent;
180 struct klist_node knode_driver;
181 struct klist_node knode_bus;
182 struct device * parent;
183/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
184 struct kobject kobj;
185 char bus_id[BUS_ID_SIZE];
186 struct device_attribute uevent_attr;
187 struct device_attribute *devt_attr;
188/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
189 struct semaphore sem;
190 struct bus_type * bus;
191 struct device_driver *driver;
192 void *driver_data;
193/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
194 void *platform_data;
195 void *firmware_data;
196 struct dev_pm_info power;
197 u64 *dma_mask;
198/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
199 u64 coherent_dma_mask;
200 struct list_head dma_pools;
201 struct dma_coherent_mem *dma_mem;
202 struct list_head node;
203/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
204 struct class *class;
205 dev_t devt;
206 void (*release)(struct device * dev);
207};
208/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
209#define dev_printk(level, dev, format, arg...)   printk(level "%s %s: " format , dev_driver_string(dev) , (dev)->bus_id , ## arg)
210#ifdef DEBUG
211#define dev_dbg(dev, format, arg...)   dev_printk(KERN_DEBUG , dev , format , ## arg)
212#else
213/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
214#define dev_dbg(dev, format, arg...) do { (void)(dev); } while (0)
215#endif
216#define dev_err(dev, format, arg...)   dev_printk(KERN_ERR , dev , format , ## arg)
217#define dev_info(dev, format, arg...)   dev_printk(KERN_INFO , dev , format , ## arg)
218/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
219#define dev_warn(dev, format, arg...)   dev_printk(KERN_WARNING , dev , format , ## arg)
220#define dev_notice(dev, format, arg...)   dev_printk(KERN_NOTICE , dev , format , ## arg)
221#define MODULE_ALIAS_CHARDEV(major,minor)   MODULE_ALIAS("char-major-" __stringify(major) "-" __stringify(minor))
222#define MODULE_ALIAS_CHARDEV_MAJOR(major)   MODULE_ALIAS("char-major-" __stringify(major) "-*")
223/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
224#endif
225