greybus: interface: clean up and rename init-status helper
authorJohan Hovold <johan@hovoldconsulting.com>
Tue, 29 Mar 2016 22:56:02 +0000 (18:56 -0400)
committerGreg Kroah-Hartman <gregkh@google.com>
Wed, 30 Mar 2016 21:17:40 +0000 (14:17 -0700)
Clean up and rename the interface-init-status helper.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/interface.c

index 3b18f61..569403c 100644 (file)
 
 
 /*
- * T_TstSrcIncrement is written by the module on ES2 as a stand-in for boot
- * status attribute ES3_INIT_STATUS. AP needs to read and clear it, after
- * reading a non-zero value from it.
+ * T_TstSrcIncrement is written by the module on ES2 as a stand-in for the
+ * init-status attribute ES3_INIT_STATUS. The AP needs to read and clear it
+ * after reading a non-zero value from it.
  *
  * FIXME: This is module-hardware dependent and needs to be extended for every
  * type of module we want to support.
  */
-static int gb_interface_read_and_clear_boot_status(struct gb_interface *intf)
+static int gb_interface_read_and_clear_init_status(struct gb_interface *intf)
 {
        struct gb_host_device *hd = intf->hd;
        int ret;
        u32 value;
        u16 attr;
        u8 init_status;
+       bool es2_bridge;
+
+       es2_bridge = intf->ddbl1_manufacturer_id == ES2_DDBL1_MFR_ID &&
+                       intf->ddbl1_product_id == ES2_DDBL1_PROD_ID;
 
        /*
-        * Check if the module is ES2 or ES3, and choose attr number
-        * appropriately.
-        * FIXME: Remove ES2 support from the kernel entirely.
+        * ES2 bridges use T_TstSrcIncrement for the init status.
+        *
+        * FIXME: Remove ES2 support
         */
-       if (intf->ddbl1_manufacturer_id == ES2_DDBL1_MFR_ID &&
-                               intf->ddbl1_product_id == ES2_DDBL1_PROD_ID)
+       if (es2_bridge)
                attr = DME_ATTR_T_TST_SRC_INCREMENT;
        else
                attr = DME_ATTR_ES3_INIT_STATUS;
 
-       /* Read and clear boot status in ES3_INIT_STATUS */
        ret = gb_svc_dme_peer_get(hd->svc, intf->interface_id, attr,
                                  DME_ATTR_SELECTOR_INDEX, &value);
        if (ret)
                return ret;
 
        /*
-        * A nonzero boot status indicates the module has finished
-        * booting. Clear it.
+        * A nonzero init status indicates the module has finished
+        * initializing.
         */
        if (!value) {
-               dev_err(&intf->dev, "Module not ready yet\n");
+               dev_err(&intf->dev, "invalid init status\n");
                return -ENODEV;
        }
 
        /*
-        * Check if the module needs to boot from UniPro.
+        * Check if the interface needs to boot over UniPro.
+        *
         * For ES2: We need to check lowest 8 bits of 'value'.
         * For ES3: We need to check highest 8 bits out of 32 of 'value'.
-        * FIXME: Remove ES2 support from the kernel entirely.
+        *
+        * FIXME: Remove ES2 support
         */
-       if (intf->ddbl1_manufacturer_id == ES2_DDBL1_MFR_ID &&
-                       intf->ddbl1_product_id == ES2_DDBL1_PROD_ID)
+       if (es2_bridge)
                init_status = value & 0xff;
        else
                init_status = value >> 24;
@@ -68,6 +71,7 @@ static int gb_interface_read_and_clear_boot_status(struct gb_interface *intf)
                        init_status == DME_DIS_FALLBACK_UNIPRO_BOOT_STARTED)
                intf->boot_over_unipro = true;
 
+       /* Clear the init status. */
        return gb_svc_dme_peer_set(hd->svc, intf->interface_id, attr,
                                   DME_ATTR_SELECTOR_INDEX, 0);
 }
@@ -210,9 +214,9 @@ int gb_interface_enable(struct gb_interface *intf)
        int ret, size;
        void *manifest;
 
-       ret = gb_interface_read_and_clear_boot_status(intf);
+       ret = gb_interface_read_and_clear_init_status(intf);
        if (ret) {
-               dev_err(&intf->dev, "failed to clear boot status: %d\n", ret);
+               dev_err(&intf->dev, "failed to clear init status: %d\n", ret);
                return ret;
        }