summaryrefslogtreecommitdiffstats
path: root/include/driver.h
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2007-07-05 18:01:25 +0200
committerSascha Hauer <sha@octopus.labnet.pengutronix.de>2007-07-05 18:01:25 +0200
commita0b0cfc5ed9759a50aefc264c7490b19d617d12b (patch)
treead31938638788dd77bc56bad43987f5ea3203693 /include/driver.h
parent55ebf67d3ec2b0727f86a54157a2740e9e8472c3 (diff)
downloadbarebox-a0b0cfc5ed9759a50aefc264c7490b19d617d12b.tar.gz
barebox-a0b0cfc5ed9759a50aefc264c7490b19d617d12b.tar.xz
svn_rev_121
implement device parameters
Diffstat (limited to 'include/driver.h')
-rw-r--r--include/driver.h21
1 files changed, 20 insertions, 1 deletions
diff --git a/include/driver.h b/include/driver.h
index 848f844ec2..e8d185b016 100644
--- a/include/driver.h
+++ b/include/driver.h
@@ -6,7 +6,13 @@
#define MAP_READ 1
#define MAP_WRITE 2
-struct memarea_info;
+struct param_d {
+ char *(*get)(struct device_d *, ulong cookie);
+ int (*set)(struct device_d *, ulong cookie, char *val);
+ char *name;
+ ulong cookie;
+ struct param_d *next;
+};
#define DEVICE_TYPE_UNKNOWN 0
#define DEVICE_TYPE_ETHER 1
@@ -33,6 +39,8 @@ struct device_d {
struct device_d *next;
unsigned long type;
+
+ struct param_d *param;
};
struct driver_d {
@@ -48,6 +56,9 @@ struct driver_d {
void (*info) (struct device_d *);
void (*shortinfo) (struct device_d *);
+ struct param_d* (*get) (struct device_d*, int no);
+ int (*set) (struct device_d*, struct param_d *, char *val);
+
unsigned long type;
void *type_data;
};
@@ -65,6 +76,10 @@ struct device_d *get_device_by_name(char *name);
ssize_t read(struct device_d *dev, void *buf, size_t count, ulong offset, ulong flags);
ssize_t write(struct device_d *dev, void *buf, size_t count, ulong offset, ulong flags);
ssize_t erase(struct device_d *dev, size_t count, unsigned long offset);
+char *dev_get_param(struct device_d *dev, char *name);
+int dev_set_param(struct device_d *dev, char *name, char *val);
+
+int dev_add_parameter(struct device_d *dev, struct param_d *par);
ssize_t mem_read(struct device_d *dev, void *buf, size_t count, ulong offset, ulong flags);
ssize_t mem_write(struct device_d *dev, void *buf, size_t count, ulong offset, ulong flags);
@@ -72,5 +87,9 @@ ssize_t mem_write(struct device_d *dev, void *buf, size_t count, ulong offset, u
int register_device_type_handler(int(*handle)(struct device_d *), ulong device_type);
//void unregister_device_type_handler(struct device_d *);
+int dummy_probe(struct device_d *);
+
+int global_add_parameter(struct param_d *param);
+
#endif /* DRIVER_H */