summaryrefslogtreecommitdiff
path: root/drivers/dahdi/xpp/mmapbus.c
diff options
context:
space:
mode:
authorTzafrir Cohen <tzafrir.cohen@xorcom.com>2008-06-19 13:36:15 +0000
committerTzafrir Cohen <tzafrir.cohen@xorcom.com>2008-06-19 13:36:15 +0000
commit9d886a8e34490fabc3a1e3a0ebba5f8a43a6fd49 (patch)
tree8ac596c49aed7284efdb19c2b97900248436aa44 /drivers/dahdi/xpp/mmapbus.c
parent55896756afb1dc68c66712885cd310f8a11494e2 (diff)
Further XPP driver adjustments:
* More complete Kconfig. * Verification of FXO init script moved here from tools. * Perl init scripts are verified. * Correct name XppConf*ig*. * Add the files for xpp_mmap . git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@4408 a0bf4364-ded3-4de4-8d8a-66a801d63aff
Diffstat (limited to 'drivers/dahdi/xpp/mmapbus.c')
-rw-r--r--drivers/dahdi/xpp/mmapbus.c91
1 files changed, 91 insertions, 0 deletions
diff --git a/drivers/dahdi/xpp/mmapbus.c b/drivers/dahdi/xpp/mmapbus.c
new file mode 100644
index 0000000..30ca8c5
--- /dev/null
+++ b/drivers/dahdi/xpp/mmapbus.c
@@ -0,0 +1,91 @@
+#include <linux/module.h>
+#include <linux/kernel.h>
+#include <linux/device.h>
+#include "mmapbus.h"
+
+static int mmap_match(struct device *dev, struct device_driver *driver)
+{
+ return !strncmp(dev->bus_id, driver->name, strlen(driver->name));
+}
+static int mmap_uevent(struct device *dev, char **envp, int num_envp, char *buffer, int buffer_size)
+{
+ envp[0] = buffer;
+ envp[1] = NULL;
+ return 0;
+}
+
+static void mmap_bus_release(struct device *dev)
+{
+}
+
+static void mmap_dev_release(struct device *dev)
+{
+}
+
+static struct bus_type mmap_bus_type = {
+ .name = "mmap",
+ .match = mmap_match,
+ .uevent = mmap_uevent,
+};
+
+static struct device mmap_bus = {
+ .bus_id = "mmap0",
+ .release = mmap_bus_release,
+};
+
+
+
+int register_mmap_device(struct mmap_device *dev)
+{
+ dev->dev.bus = &mmap_bus_type;
+ dev->dev.parent = &mmap_bus;
+ dev->dev.release = mmap_dev_release;
+ strncpy(dev->dev.bus_id, dev->name, BUS_ID_SIZE);
+ return device_register(&dev->dev);
+}
+
+void unregister_mmap_device(struct mmap_device *dev)
+{
+ device_unregister(&dev->dev);
+}
+EXPORT_SYMBOL(register_mmap_device);
+EXPORT_SYMBOL(unregister_mmap_device);
+
+int register_mmap_driver(struct mmap_driver *driver)
+{
+ driver->driver.bus = &mmap_bus_type;
+ return driver_register(&driver->driver);
+}
+
+void unregister_mmap_driver(struct mmap_driver *driver)
+{
+ driver_unregister(&driver->driver);
+}
+EXPORT_SYMBOL(register_mmap_driver);
+EXPORT_SYMBOL(unregister_mmap_driver);
+
+int register_mmap_bus(void)
+{
+ int ret = 0;
+ if ((ret = bus_register(&mmap_bus_type)) < 0)
+ goto bus_type_reg;
+ if ((ret = device_register(&mmap_bus)) < 0)
+ goto bus_reg;
+ return ret;
+
+bus_reg:
+ bus_unregister(&mmap_bus_type);
+bus_type_reg:
+ return ret;
+}
+
+void unregister_mmap_bus(void)
+{
+ device_unregister(&mmap_bus);
+ bus_unregister(&mmap_bus_type);
+}
+EXPORT_SYMBOL(register_mmap_bus);
+EXPORT_SYMBOL(unregister_mmap_bus);
+
+MODULE_AUTHOR("Alexander Landau <landau.alex@gmail.com>");
+MODULE_LICENSE("GPL");