lkml.org 
[lkml]   [2017]   [Mar]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: subdevice config into pointer (was Re: [PATCH 1/4] v4l2: device_register_subdev_nodes: allow calling multiple times)
    Hi Pavel,

    On Thu, Mar 02, 2017 at 10:07:27AM +0100, Pavel Machek wrote:
    > 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 <pavel@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 <pavel@ucw.cz>

    I applied this to the ccp2 branch with an improved patch description.

    >
    > 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
    >
    >

    --
    Regards,

    Sakari Ailus
    e-mail: sakari.ailus@iki.fi XMPP: sailus@retiisi.org.uk

    \
     
     \ /
      Last update: 2017-03-02 15:43    [W:4.138 / U:0.132 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site