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@xxxxxx> > 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@xxxxxx> 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@xxxxxx XMPP: sailus@xxxxxxxxxxxxxx