|
@@ -2923,6 +2923,15 @@ static int check_module_parm(void)
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static ssize_t ehea_show_capabilities(struct device_driver *drv,
|
|
|
|
+ char *buf)
|
|
|
|
+{
|
|
|
|
+ return sprintf(buf, "%d", EHEA_CAPABILITIES);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static DRIVER_ATTR(capabilities, S_IRUSR | S_IRGRP | S_IROTH,
|
|
|
|
+ ehea_show_capabilities, NULL);
|
|
|
|
+
|
|
int __init ehea_module_init(void)
|
|
int __init ehea_module_init(void)
|
|
{
|
|
{
|
|
int ret;
|
|
int ret;
|
|
@@ -2934,8 +2943,19 @@ int __init ehea_module_init(void)
|
|
if (ret)
|
|
if (ret)
|
|
goto out;
|
|
goto out;
|
|
ret = ibmebus_register_driver(&ehea_driver);
|
|
ret = ibmebus_register_driver(&ehea_driver);
|
|
- if (ret)
|
|
|
|
|
|
+ if (ret) {
|
|
ehea_error("failed registering eHEA device driver on ebus");
|
|
ehea_error("failed registering eHEA device driver on ebus");
|
|
|
|
+ goto out;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ ret = driver_create_file(&ehea_driver.driver,
|
|
|
|
+ &driver_attr_capabilities);
|
|
|
|
+ if (ret) {
|
|
|
|
+ ehea_error("failed to register capabilities attribute, ret=%d",
|
|
|
|
+ ret);
|
|
|
|
+ ibmebus_unregister_driver(&ehea_driver);
|
|
|
|
+ goto out;
|
|
|
|
+ }
|
|
|
|
|
|
out:
|
|
out:
|
|
return ret;
|
|
return ret;
|
|
@@ -2943,6 +2963,7 @@ out:
|
|
|
|
|
|
static void __exit ehea_module_exit(void)
|
|
static void __exit ehea_module_exit(void)
|
|
{
|
|
{
|
|
|
|
+ driver_remove_file(&ehea_driver.driver, &driver_attr_capabilities);
|
|
ibmebus_unregister_driver(&ehea_driver);
|
|
ibmebus_unregister_driver(&ehea_driver);
|
|
}
|
|
}
|
|
|
|
|