]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/commitdiff
greybus: fix hd init sequence of setting up parent and driver pointers properly
authorGreg Kroah-Hartman <greg@kroah.com>
Sun, 14 Sep 2014 19:27:28 +0000 (12:27 -0700)
committerGreg Kroah-Hartman <greg@kroah.com>
Sun, 14 Sep 2014 19:27:28 +0000 (12:27 -0700)
drivers/staging/greybus/ap.c
drivers/staging/greybus/core.c
drivers/staging/greybus/gbuf.c
drivers/staging/greybus/greybus.h

index 4c1065030745063d806ca4ae92353f454d0da215..4293073efe4109a1452cdbc2e4aa0f9e8b40e80b 100644 (file)
@@ -68,7 +68,7 @@ static void svc_handshake(struct svc_function_handshake *handshake,
        /* A new SVC communication channel, let's verify it was for us */
        if (handshake->handshake_type != SVC_HANDSHAKE_SVC_HELLO) {
                /* we don't know what to do with this, log it and return */
-               dev_dbg(&hd->dev, "received invalid handshake type %d\n",
+               dev_dbg(hd->parent, "received invalid handshake type %d\n",
                        handshake->handshake_type);
                return;
        }
@@ -86,7 +86,7 @@ static void svc_management(struct svc_function_unipro_management *management,
                           struct greybus_host_device *hd)
 {
        /* What?  An AP should not get this message */
-       dev_err(&hd->dev, "Got an svc management message???\n");
+       dev_err(hd->parent, "Got an svc management message???\n");
 }
 
 static void svc_hotplug(struct svc_function_hotplug *hotplug,
@@ -96,17 +96,18 @@ static void svc_hotplug(struct svc_function_hotplug *hotplug,
 
        switch (hotplug->hotplug_event) {
        case SVC_HOTPLUG_EVENT:
-               dev_dbg(&hd->dev, "module id %d added\n", module_id);
+               dev_dbg(hd->parent, "module id %d added\n", module_id);
                // FIXME - add the module to the system
                break;
 
        case SVC_HOTUNPLUG_EVENT:
-               dev_dbg(&hd->dev, "module id %d removed\n", module_id);
+               dev_dbg(hd->parent, "module id %d removed\n", module_id);
                // FIXME - remove the module from the system
                break;
 
        default:
-               dev_err(&hd->dev, "received invalid hotplug message type %d\n",
+               dev_err(hd->parent,
+                       "received invalid hotplug message type %d\n",
                        hotplug->hotplug_event);
                break;
        }
@@ -116,7 +117,7 @@ static void svc_ddb(struct svc_function_ddb *ddb,
                    struct greybus_host_device *hd)
 {
        /* What?  An AP should not get this message */
-       dev_err(&hd->dev, "Got an svc DDB message???\n");
+       dev_err(hd->parent, "Got an svc DDB message???\n");
 }
 
 static void svc_power(struct svc_function_power *power,
@@ -125,12 +126,12 @@ static void svc_power(struct svc_function_power *power,
        u8 module_id = power->module_id;
 
        if (power->power_type != SVC_POWER_BATTERY_STATUS) {
-               dev_err(&hd->dev, "received invalid power type %d\n",
+               dev_err(hd->parent, "received invalid power type %d\n",
                        power->power_type);
                return;
        }
 
-       dev_dbg(&hd->dev, "power status for module id %d is %d\n",
+       dev_dbg(hd->parent, "power status for module id %d is %d\n",
                module_id, power->status.status);
 
        // FIXME - do something with the power information, like update our
@@ -141,14 +142,14 @@ static void svc_epm(struct svc_function_epm *epm,
                    struct greybus_host_device *hd)
 {
        /* What?  An AP should not get this message */
-       dev_err(&hd->dev, "Got an EPM message???\n");
+       dev_err(hd->parent, "Got an EPM message???\n");
 }
 
 static void svc_suspend(struct svc_function_suspend *suspend,
                        struct greybus_host_device *hd)
 {
        /* What?  An AP should not get this message */
-       dev_err(&hd->dev, "Got an suspend message???\n");
+       dev_err(hd->parent, "Got an suspend message???\n");
 }
 
 static struct svc_msg *convert_ap_message(struct ap_msg *ap_msg)
@@ -209,7 +210,7 @@ static void ap_process_event(struct work_struct *work)
                svc_suspend(&svc_msg->suspend, hd);
                break;
        default:
-               dev_err(&hd->dev, "received invalid SVC message type %d\n",
+               dev_err(hd->parent, "received invalid SVC message type %d\n",
                        svc_msg->header.type);
        }
 
index f987086ae6ecd45cd3ac8359f4b932fb8b792895..a13cf9f050593f76afc3ff44fe2d8c92bdbc6321 100644 (file)
@@ -499,6 +499,8 @@ struct greybus_host_device *greybus_create_hd(struct greybus_host_driver *driver
                return NULL;
 
        kref_init(&hd->kref);
+       hd->parent = parent;
+       hd->driver = driver;
 
        return hd;
 }
index 3affdbfa0479e817f48be70bd5f7192974604019..2bdf485d1051faf421609ab657dd48cf84170724 100644 (file)
@@ -197,7 +197,7 @@ void greybus_cport_in_data(struct greybus_host_device *hd, int cport, u8 *data,
        ch = &cport_handler[cport];
        if (!ch->handler) {
                /* Ugh, drop the data on the floor, after logging it... */
-               dev_err(&hd->dev,
+               dev_err(hd->parent,
                        "Received data for cport %d, but no handler!\n",
                        cport);
                return;
index ecda30dd308a9fd7f1d65f27b55506b4a0d12310..2838e44ce6fb7b2a029dc3e16ab3b94185c0a6a6 100644 (file)
@@ -105,7 +105,6 @@ struct svc_msg;
 struct greybus_host_driver {
        size_t  hd_priv_size;
 
-       int (*start)(struct greybus_host_device *hd);
        int (*alloc_gbuf)(struct gbuf *gbuf, unsigned int size, gfp_t gfp_mask);
        void (*free_gbuf)(struct gbuf *gbuf);
        int (*send_svc_msg)(struct svc_msg *svc_msg, struct greybus_host_device *hd);
@@ -114,10 +113,9 @@ struct greybus_host_driver {
 };
 
 struct greybus_host_device {
-       struct device dev;
        struct kref kref;
+       struct device *parent;
        const struct greybus_host_driver *driver;
-       unsigned long hd_priv_size;
 
        /* Private data for the host driver */
        unsigned long hd_priv[0] __attribute__ ((aligned(sizeof(s64))));