summaryrefslogtreecommitdiffstats
path: root/lib/driver.c
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2009-04-22 23:39:27 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2009-07-21 16:41:44 +0200
commita2b7cd183bad9c9e0888ce62f5ae0f83c070cc2a (patch)
tree556535cae729eac244edff816476cab281c6be7b /lib/driver.c
parent6411c3b2be40bb295520db2e9f6f891873a48b1a (diff)
downloadbarebox-a2b7cd183bad9c9e0888ce62f5ae0f83c070cc2a.tar.gz
barebox-a2b7cd183bad9c9e0888ce62f5ae0f83c070cc2a.tar.xz
introduce cdev
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'lib/driver.c')
-rw-r--r--lib/driver.c94
1 files changed, 23 insertions, 71 deletions
diff --git a/lib/driver.c b/lib/driver.c
index 30de8c20ea..2806cc96c2 100644
--- a/lib/driver.c
+++ b/lib/driver.c
@@ -42,6 +42,18 @@ EXPORT_SYMBOL(driver_list);
static LIST_HEAD(active);
+struct device_d *device_by_name(const char *name)
+{
+ struct device_d *dev;
+
+ for_each_device(dev) {
+ if(!strcmp(name, dev->name))
+ return dev;
+ }
+
+ return NULL;
+}
+
struct device_d *get_device_by_id(const char *id)
{
struct device_d *dev;
@@ -217,89 +229,29 @@ struct device_d *get_device_by_path(const char *path)
}
EXPORT_SYMBOL(get_device_by_path);
-ssize_t dev_read(struct device_d *dev, void *buf, size_t count, unsigned long offset, ulong flags)
-{
- if (dev->driver->read)
- return dev->driver->read(dev, buf, count, offset, flags);
- errno = -ENOSYS;
- return -ENOSYS;
-}
-
-ssize_t dev_write(struct device_d *dev, const void *buf, size_t count, unsigned long offset, ulong flags)
-{
- if (dev->driver->write)
- return dev->driver->write(dev, buf, count, offset, flags);
- errno = -ENOSYS;
- return -ENOSYS;
-}
-
-off_t dev_lseek(struct device_d *dev, off_t offset)
-{
- if (dev->driver->lseek)
- return dev->driver->lseek(dev, offset);
- errno = -ENOSYS;
- return -1;
-}
-
-int dev_open(struct device_d *dev, struct filep *f)
-{
- if (dev->driver->open)
- return dev->driver->open(dev, f);
- errno = -ENOSYS;
- return -ENOSYS;
-}
-
-int dev_close(struct device_d *dev, struct filep *f)
-{
- if (dev->driver->close)
- return dev->driver->close(dev, f);
- errno = -ENOSYS;
- return -ENOSYS;
-}
-
-int dev_ioctl(struct device_d *dev, int request, void *buf)
-{
- if (dev->driver->ioctl)
- return dev->driver->ioctl(dev, request, buf);
- errno = -ENOSYS;
- return -ENOSYS;
-}
-
-int dev_erase(struct device_d *dev, size_t count, unsigned long offset)
-{
- if (dev->driver->erase)
- return dev->driver->erase(dev, count, offset);
- errno = -ENOSYS;
- return -ENOSYS;
-}
-
int dev_protect(struct device_d *dev, size_t count, unsigned long offset, int prot)
{
- if (dev->driver->protect)
- return dev->driver->protect(dev, count, offset, prot);
- errno = -ENOSYS;
- return -ENOSYS;
+ printf("%s: currently broken\n", __func__);
+ return -EINVAL;
}
-int dev_memmap(struct device_d *dev, void **map, int flags)
+int generic_memmap_ro(struct cdev *cdev, void **map, int flags)
{
- if (dev->driver->memmap)
- return dev->driver->memmap(dev, map, flags);
- errno = -ENOSYS;
- return -ENOSYS;
-}
+ if (!cdev->dev)
+ return -EINVAL;
-int generic_memmap_ro(struct device_d *dev, void **map, int flags)
-{
if (flags & PROT_WRITE)
return -EACCES;
- *map = (void *)dev->map_base;
+ *map = (void *)cdev->dev->map_base;
return 0;
}
-int generic_memmap_rw(struct device_d *dev, void **map, int flags)
+int generic_memmap_rw(struct cdev *cdev, void **map, int flags)
{
- *map = (void *)dev->map_base;
+ if (!cdev->dev)
+ return -EINVAL;
+
+ *map = (void *)cdev->dev->map_base;
return 0;
}