Hi!

> Making the sub-device bus configuration a pointer should be in a separate
> patch. It makes sense since the entire configuration is not valid for all
> sub-devices attached to the ISP anymore. I think it originally was a
> separate patch, but they probably have been merged at some point. I can't
> find it right now anyway.

Something like this?
                                                                        Pavel

commit df9141c66678b549fac9d143bd55ed0b242cf36e
Author: Pavel <pa...@ucw.cz>
Date:   Wed Mar 1 13:27:56 2017 +0100

    Turn bus in struct isp_async_subdev into pointer; some of our subdevs
    (flash, focus) will not need bus configuration.

Signed-off-by: Pavel Machek <pa...@ucw.cz>

diff --git a/drivers/media/platform/omap3isp/isp.c 
b/drivers/media/platform/omap3isp/isp.c
index 8a456d4..36bd359 100644
--- a/drivers/media/platform/omap3isp/isp.c
+++ b/drivers/media/platform/omap3isp/isp.c
@@ -2030,12 +2030,18 @@ enum isp_of_phy {
 static int isp_fwnode_parse(struct device *dev, struct fwnode_handle *fwn,
                            struct isp_async_subdev *isd)
 {
-       struct isp_bus_cfg *buscfg = &isd->bus;
+       struct isp_bus_cfg *buscfg;
        struct v4l2_fwnode_endpoint vfwn;
        unsigned int i;
        int ret;
        bool csi1 = false;
 
+       buscfg = devm_kzalloc(dev, sizeof(*isd->bus), GFP_KERNEL);
+       if (!buscfg)
+               return -ENOMEM;
+
+       isd->bus = buscfg;
+
        ret = v4l2_fwnode_endpoint_parse(fwn, &vfwn);
        if (ret)
                return ret;
@@ -2246,7 +2252,7 @@ static int isp_subdev_notifier_bound(struct 
v4l2_async_notifier *async,
                container_of(asd, struct isp_async_subdev, asd);
 
        isd->sd = subdev;
-       isd->sd->host_priv = &isd->bus;
+       isd->sd->host_priv = isd->bus;
 
        return 0;
 }
diff --git a/drivers/media/platform/omap3isp/isp.h 
b/drivers/media/platform/omap3isp/isp.h
index 7e6f663..c0b9d1d 100644
--- a/drivers/media/platform/omap3isp/isp.h
+++ b/drivers/media/platform/omap3isp/isp.h
@@ -228,7 +228,7 @@ struct isp_device {
 
 struct isp_async_subdev {
        struct v4l2_subdev *sd;
-       struct isp_bus_cfg bus;
+       struct isp_bus_cfg *bus;
        struct v4l2_async_subdev asd;
 };
 
diff --git a/drivers/media/platform/omap3isp/ispcsiphy.c 
b/drivers/media/platform/omap3isp/ispcsiphy.c
index f20abe8..be23408 100644
--- a/drivers/media/platform/omap3isp/ispcsiphy.c
+++ b/drivers/media/platform/omap3isp/ispcsiphy.c
@@ -202,7 +202,7 @@ static int omap3isp_csiphy_config(struct isp_csiphy *phy)
                struct isp_async_subdev *isd =
                        container_of(pipe->external->asd,
                                     struct isp_async_subdev, asd);
-               buscfg = &isd->bus;
+               buscfg = isd->bus;
        }
 
        if (buscfg->interface == ISP_INTERFACE_CCP2B_PHY1


-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) 
http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

Attachment: signature.asc
Description: Digital signature

Reply via email to