xpp: adapt to 'location' attribute removal:

* Reparent astribanks below their USB transport
 * This way their location can be derived from their hardware
   hierarchy.
 * The tradeoff is that once USB hardware is disconnected, there
   is no sysfs visibility of the astribank object even if it
   cannot be release yet due to open channels by asterisk
 * Thus, we'll need to migrate to "surprise removal" of dahdi
   devices...

Signed-off-by: Oron Peled <oron.peled@xorcom.com>

git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@10281 a0bf4364-ded3-4de4-8d8a-66a801d63aff
This commit is contained in:
Oron Peled
2011-10-26 19:06:11 +00:00
committed by Tzafrir Cohen
parent 7c4c826d68
commit bfae9c07da

View File

@@ -438,16 +438,6 @@ static void astribank_release(struct device *dev)
xbus_free(xbus);
}
static void toplevel_release(struct device *dev)
{
NOTICE("%s\n", __func__);
}
static struct device toplevel_device = {
.release = toplevel_release,
/* No Parent */
};
static struct bus_type toplevel_bus_type = {
.name = "astribanks",
.match = astribank_match,
@@ -941,7 +931,7 @@ int xbus_sysfs_create(xbus_t *xbus)
astribank = &xbus->astribank;
XBUS_DBG(DEVICES, xbus, "\n");
astribank->bus = &toplevel_bus_type;
astribank->parent = &toplevel_device;
astribank->parent = xbus->transport.transport_device;
dev_set_name(astribank, "xbus-%02d", xbus->num);
dev_set_drvdata(astribank, xbus);
astribank->release = astribank_release;
@@ -958,16 +948,10 @@ int __init xpp_driver_init(void)
int ret;
DBG(DEVICES, "SYSFS\n");
dev_set_name(&toplevel_device, "astribanks");
ret = device_register(&toplevel_device);
if (ret) {
ERR("%s: toplevel device_register failed: %d\n", __func__, ret);
goto failed_toplevel;
}
if((ret = bus_register(&toplevel_bus_type)) < 0) {
ERR("%s: bus_register(%s) failed. Error number %d",
__FUNCTION__, toplevel_bus_type.name, ret);
goto failed_bus;
goto failed_toplevel;
}
if((ret = driver_register(&xpp_driver)) < 0) {
ERR("%s: driver_register(%s) failed. Error number %d",
@@ -984,8 +968,6 @@ failed_xpd_bus:
driver_unregister(&xpp_driver);
failed_xpp_driver:
bus_unregister(&toplevel_bus_type);
failed_bus:
device_unregister(&toplevel_device);
failed_toplevel:
return ret;
}
@@ -996,7 +978,6 @@ void xpp_driver_exit(void)
bus_unregister(&xpd_type);
driver_unregister(&xpp_driver);
bus_unregister(&toplevel_bus_type);
device_unregister(&toplevel_device);
}
EXPORT_SYMBOL(xpd_driver_register);