greybus: greybus_string()
authorGreg Kroah-Hartman <greg@kroah.com>
Tue, 2 Sep 2014 02:01:14 +0000 (19:01 -0700)
committerGreg Kroah-Hartman <greg@kroah.com>
Tue, 2 Sep 2014 02:01:14 +0000 (19:01 -0700)
drivers/staging/greybus/core.c
drivers/staging/greybus/greybus.h

index 37ece6d..235a9c4 100644 (file)
@@ -169,6 +169,22 @@ static void greybus_module_release(struct device *dev)
 }
 
 
+const u8 *greybus_string(struct greybus_device *gdev, int id)
+{
+       int i;
+       struct gdev_string *string;
+
+       if (!gdev)
+               return NULL;
+
+       for (i = 0; i < gdev->num_strings; ++i) {
+               string = gdev->string[i];
+               if (string->id == id)
+                       return &string->string[0];
+       }
+       return NULL;
+}
+
 static struct device_type greybus_module_type = {
        .name =         "greybus_module",
        .release =      greybus_module_release,
@@ -242,7 +258,7 @@ static ssize_t module_vendor_string_show(struct device *dev,
 {
        struct greybus_device *gdev = to_greybus_device(dev);
        return sprintf(buf, "%s",
-                      greybus_string(gdev->module_id.vendor_stringid));
+                      greybus_string(gdev, gdev->module_id.vendor_stringid));
 }
 static DEVICE_ATTR_RO(module_vendor_string);
 
@@ -252,7 +268,7 @@ static ssize_t module_product_string_show(struct device *dev,
 {
        struct greybus_device *gdev = to_greybus_device(dev);
        return sprintf(buf, "%s",
-                      greybus_string(gdev->module_id.product_stringid));
+                      greybus_string(gdev, gdev->module_id.product_stringid));
 }
 static DEVICE_ATTR_RO(module_product_string);
 
index 1955fea..50bbf18 100644 (file)
@@ -178,7 +178,7 @@ struct greybus_device *greybus_new_device(struct device *parent,
                                          int size);
 void greybus_remove_device(struct greybus_device *gdev);
 
-const u8 *greybus_string(int id);
+const u8 *greybus_string(struct greybus_device *gdev, int id);
 
 /* Internal functions to gb module, move to internal .h file eventually. */