summaryrefslogtreecommitdiff
path: root/drivers/misc/misc-uclass.c
diff options
context:
space:
mode:
authorStefano Babic <sbabic@denx.de>2015-10-30 14:52:51 +0100
committerStefano Babic <sbabic@denx.de>2015-10-30 14:52:51 +0100
commite573bdb324c78fac56655a493bea843842c9d9f8 (patch)
tree3933d354a6be71cbe66d583fec3f5b2479e596ee /drivers/misc/misc-uclass.c
parenta69fdc7787bfa2f27eed74c2ee58c28ce932d502 (diff)
parent0eb4cf9c14315e1976a116de75da6f420ac0e8dd (diff)
Merge branch 'master' of git://git.denx.de/u-boot
Diffstat (limited to 'drivers/misc/misc-uclass.c')
-rw-r--r--drivers/misc/misc-uclass.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/drivers/misc/misc-uclass.c b/drivers/misc/misc-uclass.c
new file mode 100644
index 00000000000..13a6ea508b1
--- /dev/null
+++ b/drivers/misc/misc-uclass.c
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2010 Thomas Chou <thomas@wytron.com.tw>
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <errno.h>
+#include <misc.h>
+
+/*
+ * Implement a miscellaneous uclass for those do not fit other more
+ * general classes. A set of generic read, write and ioctl methods may
+ * be used to access the device.
+ */
+
+int misc_read(struct udevice *dev, int offset, void *buf, int size)
+{
+ const struct misc_ops *ops = device_get_ops(dev);
+
+ if (!ops->read)
+ return -ENOSYS;
+
+ return ops->read(dev, offset, buf, size);
+}
+
+int misc_write(struct udevice *dev, int offset, void *buf, int size)
+{
+ const struct misc_ops *ops = device_get_ops(dev);
+
+ if (!ops->write)
+ return -ENOSYS;
+
+ return ops->write(dev, offset, buf, size);
+}
+
+int misc_ioctl(struct udevice *dev, unsigned long request, void *buf)
+{
+ const struct misc_ops *ops = device_get_ops(dev);
+
+ if (!ops->ioctl)
+ return -ENOSYS;
+
+ return ops->ioctl(dev, request, buf);
+}
+
+UCLASS_DRIVER(misc) = {
+ .id = UCLASS_MISC,
+ .name = "misc",
+};