summaryrefslogtreecommitdiff
path: root/io-module/mts_io.c
diff options
context:
space:
mode:
Diffstat (limited to 'io-module/mts_io.c')
-rw-r--r--io-module/mts_io.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/io-module/mts_io.c b/io-module/mts_io.c
index b71eabb..54b1f76 100644
--- a/io-module/mts_io.c
+++ b/io-module/mts_io.c
@@ -653,6 +653,8 @@ static struct kobject *ap_subdirs[NUM_AP];
static struct attribute_group ap_attr_groups[NUM_AP];
/* info for accessory port (contains function pointers for setup and teardown and and useful info) */
static struct ap_info* port_info[NUM_AP];
+static struct kobject *capab;
+static struct attribute_group capab_group;
/* accessory card support */
#include "mtac.c"
@@ -660,6 +662,7 @@ static struct ap_info* port_info[NUM_AP];
#include "mtac_mfser.c"
#include "mtac_eth.c"
#include "mtac_lora.c"
+#include "mts_capab.c"
static bool load_port(int port) {
int port_index = port - 1;
@@ -934,7 +937,11 @@ static void cleanup(void)
kfree(freelater);
freelater = NULL;
}
- log_info("done cleaning up....");
+
+ if(capab_group.attrs)
+ kobject_put((struct kobject *)capab_group.attrs);
+
+ log_info("JAK done cleaning up....");
}
static int __init mts_io_init(void)
@@ -965,6 +972,22 @@ static int __init mts_io_init(void)
init_ports();
+ capab = kobject_create_and_add("capability", &mts_io_platform_device->dev.kobj);
+ if (capab == NULL) {
+ log_error("kobject_create_and_add for capability directory failed");
+ return false;
+ }
+
+ capab_group.attrs = kzalloc(sizeof(struct attribute*) * CAPA_COUNT, GFP_KERNEL);
+ if (! capab_add_attributes(capab_group.attrs)) {
+ return false;
+ }
+
+ if (sysfs_create_group(capab, &capab_group)) {
+ log_error("sysfs_create_group failed to create capability group");
+ return false;
+ }
+
ret = sysfs_create_group(&mts_io_platform_device->dev.kobj, attr_group);
if (ret) {
cleanup();