diff options
author | Tzafrir Cohen <tzafrir.cohen@xorcom.com> | 2008-06-19 13:36:15 +0000 |
---|---|---|
committer | Tzafrir Cohen <tzafrir.cohen@xorcom.com> | 2008-06-19 13:36:15 +0000 |
commit | 9d886a8e34490fabc3a1e3a0ebba5f8a43a6fd49 (patch) | |
tree | 8ac596c49aed7284efdb19c2b97900248436aa44 /drivers/dahdi/xpp/mmapbus.c | |
parent | 55896756afb1dc68c66712885cd310f8a11494e2 (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.c | 91 |
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"); |