Hi Sakari, Thank you for the patch. On Wednesday 17 September 2014 23:45:41 Sakari Ailus wrote: > Decrease the link frequency to the next lower if the user chooses a media > bus code (BPP) cannot be achieved using the selected link frequency. > > Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> > --- > drivers/media/i2c/smiapp/smiapp-core.c | 20 ++++++++++++++++++-- > 1 file changed, 18 insertions(+), 2 deletions(-) > > diff --git a/drivers/media/i2c/smiapp/smiapp-core.c > b/drivers/media/i2c/smiapp/smiapp-core.c index 537ca92..ce2c34d 100644 > --- a/drivers/media/i2c/smiapp/smiapp-core.c > +++ b/drivers/media/i2c/smiapp/smiapp-core.c > @@ -286,11 +286,27 @@ static int smiapp_pll_update(struct smiapp_sensor > *sensor) > > pll->binning_horizontal = sensor->binning_horizontal; > pll->binning_vertical = sensor->binning_vertical; > - pll->link_freq = > - sensor->link_freq->qmenu_int[sensor->link_freq->val]; > pll->scale_m = sensor->scale_m; > pll->bits_per_pixel = sensor->csi_format->compressed; > > + if (!test_bit(sensor->link_freq->val, > + &sensor->valid_link_freqs[ > + sensor->csi_format->compressed > + - SMIAPP_COMPRESSED_BASE])) { > + /* > + * Setting the link frequency will perform PLL > + * re-calculation already, so skip that. > + */ > + return __v4l2_ctrl_s_ctrl( > + sensor->link_freq, > + __ffs(sensor->valid_link_freqs[ > + sensor->csi_format->compressed > + - SMIAPP_COMPRESSED_BASE])); I have an uneasy feeling about this, as smiapp_pll_update is called from the link freq s_ctrl handler. Have you double-checked the recursion bounds ? > + } > + > + pll->link_freq = > + sensor->link_freq->qmenu_int[sensor->link_freq->val]; > + > rval = smiapp_pll_try(sensor, pll); > if (rval < 0) > return rval; -- Regards, Laurent Pinchart -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html