soc: fsl: dpio: store a backpointer to the device backing the dpaa2_io
authorIoana Ciornei <ioana.ciornei@nxp.com>
Mon, 10 Dec 2018 16:50:18 +0000 (16:50 +0000)
committerLi Yang <leoyang.li@nxp.com>
Fri, 11 Jan 2019 21:06:54 +0000 (15:06 -0600)
Add a new field in the dpaa2_io structure to hold a backpointer to the
actual DPIO device.

Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
Signed-off-by: Li Yang <leoyang.li@nxp.com>
drivers/soc/fsl/dpio/dpio-driver.c
drivers/soc/fsl/dpio/dpio-service.c
include/soc/fsl/dpaa2-io.h

index 5286723d4a1471ef96a2eef22780c5a9e54d935d..2d4af32a0dec46bdaec3af3e4bea58cfff6c8d1c 100644 (file)
@@ -176,7 +176,7 @@ static int dpaa2_dpio_probe(struct fsl_mc_device *dpio_dev)
        if (err)
                goto err_register_dpio_irq;
 
-       priv->io = dpaa2_io_create(&desc);
+       priv->io = dpaa2_io_create(&desc, dev);
        if (!priv->io) {
                dev_err(dev, "dpaa2_io_create failed\n");
                err = -ENOMEM;
index c02bfb18a1f09c1bf5ac982fa30096f27110dd8c..52d800aa47747bf99d12f8731ae71e6f90123f75 100644 (file)
@@ -27,6 +27,7 @@ struct dpaa2_io {
        /* protect notifications list */
        spinlock_t lock_notifications;
        struct list_head notifications;
+       struct device *dev;
 };
 
 struct dpaa2_io_store {
@@ -98,13 +99,15 @@ EXPORT_SYMBOL_GPL(dpaa2_io_service_select);
 /**
  * dpaa2_io_create() - create a dpaa2_io object.
  * @desc: the dpaa2_io descriptor
+ * @dev: the actual DPIO device
  *
  * Activates a "struct dpaa2_io" corresponding to the given config of an actual
  * DPIO object.
  *
  * Return a valid dpaa2_io object for success, or NULL for failure.
  */
-struct dpaa2_io *dpaa2_io_create(const struct dpaa2_io_desc *desc)
+struct dpaa2_io *dpaa2_io_create(const struct dpaa2_io_desc *desc,
+                                struct device *dev)
 {
        struct dpaa2_io *obj = kmalloc(sizeof(*obj), GFP_KERNEL);
 
@@ -146,6 +149,8 @@ struct dpaa2_io *dpaa2_io_create(const struct dpaa2_io_desc *desc)
                dpio_by_cpu[desc->cpu] = obj;
        spin_unlock(&dpio_list_lock);
 
+       obj->dev = dev;
+
        return obj;
 }
 
index 243119c53cdf5ea0408d0e32a77e5e48791d286e..e252066d1f438f2c95aa08fc598a1785399f2660 100644 (file)
@@ -57,7 +57,8 @@ struct dpaa2_io_desc {
        u32 qman_version;
 };
 
-struct dpaa2_io *dpaa2_io_create(const struct dpaa2_io_desc *desc);
+struct dpaa2_io *dpaa2_io_create(const struct dpaa2_io_desc *desc,
+                                struct device *dev);
 
 void dpaa2_io_down(struct dpaa2_io *d);