This patch combines the two driver abstractions into
a single driver abstraction.

Signed-off-by: K. Y. Srinivasan <[email protected]>
Signed-off-by: Haiyang Zhang <[email protected]>
Signed-off-by: Hank Janssen <[email protected]>

---
 drivers/staging/hv/blkvsc.c       |    2 +-
 drivers/staging/hv/blkvsc_drv.c   |    2 +-
 drivers/staging/hv/netvsc.c       |    6 +++---
 drivers/staging/hv/netvsc_api.h   |    4 ++--
 drivers/staging/hv/netvsc_drv.c   |    2 +-
 drivers/staging/hv/rndis_filter.c |    4 ++--
 drivers/staging/hv/storvsc.c      |    4 ++--
 drivers/staging/hv/storvsc_api.h  |    6 +++---
 drivers/staging/hv/storvsc_drv.c  |    2 +-
 drivers/staging/hv/vmbus.h        |   10 +++++++++-
 drivers/staging/hv/vmbus_api.h    |   14 +-------------
 drivers/staging/hv/vmbus_drv.c    |   18 +++++++++---------
 12 files changed, 35 insertions(+), 39 deletions(-)

diff --git a/drivers/staging/hv/blkvsc.c b/drivers/staging/hv/blkvsc.c
index 47ccec2..d29af4b 100644
--- a/drivers/staging/hv/blkvsc.c
+++ b/drivers/staging/hv/blkvsc.c
@@ -63,7 +63,7 @@ blk_vsc_on_device_add(struct hyperv_device *device, void 
*additional_info)
        return ret;
 }
 
-int blk_vsc_initialize(struct hv_driver *driver)
+int blk_vsc_initialize(struct driver_context *driver)
 {
        struct storvsc_driver_object *stor_driver;
        int ret = 0;
diff --git a/drivers/staging/hv/blkvsc_drv.c b/drivers/staging/hv/blkvsc_drv.c
index 305a665..a280f83 100644
--- a/drivers/staging/hv/blkvsc_drv.c
+++ b/drivers/staging/hv/blkvsc_drv.c
@@ -171,7 +171,7 @@ static const struct block_device_operations block_ops = {
 /*
  * blkvsc_drv_init -  BlkVsc driver initialization.
  */
-static int blkvsc_drv_init(int (*drv_init)(struct hv_driver *drv))
+static int blkvsc_drv_init(int (*drv_init)(struct driver_context *drv))
 {
        struct storvsc_driver_object *storvsc_drv_obj = &g_blkvsc_drv.drv_obj;
        struct driver_context *drv_ctx = &g_blkvsc_drv.drv_ctx;
diff --git a/drivers/staging/hv/netvsc.c b/drivers/staging/hv/netvsc.c
index 7cf6999..6d8d0a3 100644
--- a/drivers/staging/hv/netvsc.c
+++ b/drivers/staging/hv/netvsc.c
@@ -49,7 +49,7 @@ netvsc_device_add(struct hyperv_device *device, void 
*additional_info);
 
 static int netvsc_device_remove(struct hyperv_device *device);
 
-static void netvsc_cleanup(struct hv_driver *driver);
+static void netvsc_cleanup(struct driver_context *driver);
 
 static void netvsc_channel_cb(void *context);
 
@@ -178,7 +178,7 @@ static struct netvsc_device *release_inbound_net_device(
 /*
  * netvsc_initialize - Main entry point
  */
-int netvsc_initialize(struct hv_driver *drv)
+int netvsc_initialize(struct driver_context *drv)
 {
        struct netvsc_driver *driver = (struct netvsc_driver *)drv;
 
@@ -837,7 +837,7 @@ static int netvsc_device_remove(struct hyperv_device 
*device)
 /*
  * netvsc_cleanup - Perform any cleanup when the driver is removed
  */
-static void netvsc_cleanup(struct hv_driver *drv)
+static void netvsc_cleanup(struct driver_context *drv)
 {
 }
 
diff --git a/drivers/staging/hv/netvsc_api.h b/drivers/staging/hv/netvsc_api.h
index e43ff7b..842f542 100644
--- a/drivers/staging/hv/netvsc_api.h
+++ b/drivers/staging/hv/netvsc_api.h
@@ -84,7 +84,7 @@ struct hv_netvsc_packet {
 struct netvsc_driver {
        /* Must be the first field */
        /* Which is a bug FIXME! */
-       struct hv_driver base;
+       struct driver_context base;
 
        u32 ring_buf_size;
        u32 req_ext_size;
@@ -109,7 +109,7 @@ struct netvsc_device_info {
 };
 
 /* Interface */
-int netvsc_initialize(struct hv_driver *drv);
+int netvsc_initialize(struct driver_context *drv);
 int rndis_filter_open(struct hyperv_device *dev);
 int rndis_filter_close(struct hyperv_device *dev);
 
diff --git a/drivers/staging/hv/netvsc_drv.c b/drivers/staging/hv/netvsc_drv.c
index fc4eb9b..fbb32f7 100644
--- a/drivers/staging/hv/netvsc_drv.c
+++ b/drivers/staging/hv/netvsc_drv.c
@@ -490,7 +490,7 @@ static void netvsc_drv_exit(void)
        return;
 }
 
-static int netvsc_drv_init(int (*drv_init)(struct hv_driver *drv))
+static int netvsc_drv_init(int (*drv_init)(struct driver_context *drv))
 {
        struct netvsc_driver *net_drv_obj = &g_netvsc_drv.drv_obj;
        struct driver_context *drv_ctx = &g_netvsc_drv.drv_ctx;
diff --git a/drivers/staging/hv/rndis_filter.c 
b/drivers/staging/hv/rndis_filter.c
index b718fa9..a2b5f4d 100644
--- a/drivers/staging/hv/rndis_filter.c
+++ b/drivers/staging/hv/rndis_filter.c
@@ -90,7 +90,7 @@ static int rndis_filte_device_add(struct hyperv_device *dev,
 
 static int rndis_filter_device_remove(struct hyperv_device *dev);
 
-static void rndis_filter_cleanup(struct hv_driver *drv);
+static void rndis_filter_cleanup(struct driver_context *drv);
 
 static int rndis_filter_send(struct hyperv_device *dev,
                             struct hv_netvsc_packet *pkt);
@@ -834,7 +834,7 @@ static int rndis_filter_device_remove(struct hyperv_device 
*dev)
        return 0;
 }
 
-static void rndis_filter_cleanup(struct hv_driver *drv)
+static void rndis_filter_cleanup(struct driver_context *drv)
 {
 }
 
diff --git a/drivers/staging/hv/storvsc.c b/drivers/staging/hv/storvsc.c
index 6000b0d..c86bc68 100644
--- a/drivers/staging/hv/storvsc.c
+++ b/drivers/staging/hv/storvsc.c
@@ -781,14 +781,14 @@ static int stor_vsc_on_io_request(struct hyperv_device 
*device,
 /*
  * stor_vsc_on_cleanup - Perform any cleanup when the driver is removed
  */
-static void stor_vsc_on_cleanup(struct hv_driver *driver)
+static void stor_vsc_on_cleanup(struct driver_context *driver)
 {
 }
 
 /*
  * stor_vsc_initialize - Main entry point
  */
-int stor_vsc_initialize(struct hv_driver *driver)
+int stor_vsc_initialize(struct driver_context *driver)
 {
        struct storvsc_driver_object *stor_driver;
 
diff --git a/drivers/staging/hv/storvsc_api.h b/drivers/staging/hv/storvsc_api.h
index c2915b4..b488d75 100644
--- a/drivers/staging/hv/storvsc_api.h
+++ b/drivers/staging/hv/storvsc_api.h
@@ -80,7 +80,7 @@ struct hv_storvsc_request {
 struct storvsc_driver_object {
        /* Must be the first field */
        /* Which is a bug FIXME! */
-       struct hv_driver base;
+       struct driver_context base;
 
        /* Set by caller (in bytes) */
        u32 ring_buffer_size;
@@ -103,8 +103,8 @@ struct storvsc_device_info {
 };
 
 /* Interface */
-int stor_vsc_initialize(struct hv_driver *driver);
+int stor_vsc_initialize(struct driver_context *driver);
 int stor_vsc_on_host_reset(struct hyperv_device *device);
-int blk_vsc_initialize(struct hv_driver *driver);
+int blk_vsc_initialize(struct driver_context *driver);
 
 #endif /* _STORVSC_API_H_ */
diff --git a/drivers/staging/hv/storvsc_drv.c b/drivers/staging/hv/storvsc_drv.c
index c094578..282bd66 100644
--- a/drivers/staging/hv/storvsc_drv.c
+++ b/drivers/staging/hv/storvsc_drv.c
@@ -135,7 +135,7 @@ static struct scsi_host_template scsi_driver = {
 /*
  * storvsc_drv_init - StorVsc driver initialization.
  */
-static int storvsc_drv_init(int (*drv_init)(struct hv_driver *drv))
+static int storvsc_drv_init(int (*drv_init)(struct driver_context *drv))
 {
        int ret;
        struct storvsc_driver_object *storvsc_drv_obj = &g_storvsc_drv.drv_obj;
diff --git a/drivers/staging/hv/vmbus.h b/drivers/staging/hv/vmbus.h
index 1ac7e56..cad8b4c 100644
--- a/drivers/staging/hv/vmbus.h
+++ b/drivers/staging/hv/vmbus.h
@@ -29,8 +29,16 @@
 #include "vmbus_api.h"
 
 struct driver_context {
+       const char *name;
+
        struct hv_guid class_id;
 
+       int (*dev_add)(struct hyperv_device *device, void *data);
+
+       int (*dev_rm)(struct hyperv_device *device);
+
+       void (*cleanup)(struct driver_context *driver);
+
        struct device_driver driver;
 
        /*
@@ -48,7 +56,7 @@ struct hyperv_device {
        struct work_struct probe_failed_work_item;
        struct hv_guid class_id; /* device type id */
        struct hv_guid device_id; /* device instance id */
-       struct hv_driver *drv;
+       struct driver_context *drv;
        int probe_error;
        struct vmbus_channel *channel; /* associated channel to host*/
        void    *ext;
diff --git a/drivers/staging/hv/vmbus_api.h b/drivers/staging/hv/vmbus_api.h
index 260086f..0d8232e 100644
--- a/drivers/staging/hv/vmbus_api.h
+++ b/drivers/staging/hv/vmbus_api.h
@@ -55,7 +55,7 @@ struct hv_multipage_buffer {
 
 #pragma pack(pop)
 
-struct hv_driver;
+struct driver_context;
 struct hyperv_device;
 
 struct hv_dev_port_info {
@@ -84,16 +84,4 @@ struct hyperv_device_info {
        struct hv_dev_port_info outbound;
 };
 
-/* Base driver object */
-struct hv_driver {
-       const char *name;
-
-       /* the device type supported by this driver */
-       struct hv_guid class_id;
-
-       int (*dev_add)(struct hyperv_device *device, void *data);
-       int (*dev_rm)(struct hyperv_device *device);
-       void (*cleanup)(struct hv_driver *driver);
-};
-
 #endif /* _VMBUS_API_H_ */
diff --git a/drivers/staging/hv/vmbus_drv.c b/drivers/staging/hv/vmbus_drv.c
index a385bd2..3922a07 100644
--- a/drivers/staging/hv/vmbus_drv.c
+++ b/drivers/staging/hv/vmbus_drv.c
@@ -47,7 +47,7 @@ struct vmbus_driver_context {
        /* The driver field is not used in here. Instead, the bus field is */
        /* used to represent the driver */
        struct driver_context drv_ctx;
-       struct hv_driver drv_obj;
+       struct driver_context drv_obj;
 
        struct bus_type bus;
        struct tasklet_struct msg_dpc;
@@ -196,7 +196,7 @@ static int vmbus_dev_rm(struct hyperv_device *dev)
 /*
  * vmbus_cleanup - Perform any cleanup when the driver is removed
  */
-static void vmbus_cleanup(struct hv_driver *drv)
+static void vmbus_cleanup(struct driver_context *drv)
 {
        /* struct vmbus_driver *driver = (struct vmbus_driver *)drv; */
 
@@ -221,7 +221,7 @@ static void vmbus_onmessage_work(struct work_struct *work)
 /*
  * vmbus_on_msg_dpc - DPC routine to handle messages from the hypervisior
  */
-static void vmbus_on_msg_dpc(struct hv_driver *drv)
+static void vmbus_on_msg_dpc(struct driver_context *drv)
 {
        int cpu = smp_processor_id();
        void *page_addr = hv_context.synic_message_page[cpu];
@@ -267,7 +267,7 @@ static void vmbus_on_msg_dpc(struct hv_driver *drv)
 /*
  * vmbus_on_isr - ISR routine
  */
-static int vmbus_on_isr(struct hv_driver *drv)
+static int vmbus_on_isr(struct driver_context *drv)
 {
        int ret = 0;
        int cpu = smp_processor_id();
@@ -463,7 +463,7 @@ static ssize_t vmbus_show_device_attr(struct device *dev,
 static int vmbus_bus_init(void)
 {
        struct vmbus_driver_context *vmbus_drv_ctx = &vmbus_drv;
-       struct hv_driver *driver = &vmbus_drv.drv_obj;
+       struct driver_context *driver = &vmbus_drv.drv_obj;
        struct hyperv_device *dev = &vmbus_drv.device_obj;
        int ret;
        unsigned int vector;
@@ -587,7 +587,7 @@ cleanup:
  */
 static void vmbus_bus_exit(void)
 {
-       struct hv_driver *driver = &vmbus_drv.drv_obj;
+       struct driver_context *driver = &vmbus_drv.drv_obj;
        struct vmbus_driver_context *vmbus_drv_ctx = &vmbus_drv;
 
        struct hyperv_device *dev = &vmbus_drv.device_obj;
@@ -857,7 +857,7 @@ static int vmbus_match(struct device *device, struct 
device_driver *driver)
                   sizeof(struct hv_guid)) == 0) {
                /*
                 * !! NOTE: The driver_ctx is not a vmbus_drv_ctx. We typecast
-                * it here to access the struct hv_driver field
+                * it here to access the struct driver_context field
                 */
                struct vmbus_driver_context *vmbus_drv_ctx =
                        (struct vmbus_driver_context *)driver_ctx;
@@ -1020,7 +1020,7 @@ static void vmbus_device_release(struct device *device)
  */
 static void vmbus_msg_dpc(unsigned long data)
 {
-       struct hv_driver *driver = (struct hv_driver *)data;
+       struct driver_context *driver = (struct driver_context *)data;
 
        /* Call to bus driver to handle interrupt */
        vmbus_on_msg_dpc(driver);
@@ -1037,7 +1037,7 @@ static void vmbus_event_dpc(unsigned long data)
 
 static irqreturn_t vmbus_isr(int irq, void *dev_id)
 {
-       struct hv_driver *driver = &vmbus_drv.drv_obj;
+       struct driver_context *driver = &vmbus_drv.drv_obj;
        int ret;
 
        /* Call to bus driver to handle interrupt */
-- 
1.5.5.6

_______________________________________________
devel mailing list
[email protected]
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel

Reply via email to