On Fri, May 27, 2022 at 06:24:44PM +0800, Ming Qian wrote: > There is a hardware bug that it will load > the first 128 bytes of configuration data twice, > it will led to some configure error. > so shift the configuration data 128 bytes, > and make the first 128 bytes all zero, > then hardware will load the 128 zero twice, > and ignore them as garbage. > then the configuration data can be loaded correctly > > Signed-off-by: Ming Qian <ming.qian@xxxxxxx> > Reviewed-by: Mirela Rabulea <mirela.rabulea@xxxxxxx> > Reviewed-by: Tommaso Merciai <tommaso.merciai@xxxxxxxxxxxxxxxxxxxx> > --- > v2 > - add some comments about why the 0x80 offset is needed > drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c > index 734e1b65fbc7..c0fd030d0f19 100644 > --- a/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c > +++ b/drivers/media/platform/nxp/imx-jpeg/mxc-jpeg.c > @@ -519,6 +519,7 @@ static bool mxc_jpeg_alloc_slot_data(struct mxc_jpeg_dev *jpeg, > GFP_ATOMIC); > if (!cfg_stm) > goto err; > + memset(cfg_stm, 0, MXC_JPEG_MAX_CFG_STREAM); > jpeg->slot_data[slot].cfg_stream_vaddr = cfg_stm; > > skip_alloc: > @@ -755,7 +756,13 @@ static unsigned int mxc_jpeg_setup_cfg_stream(void *cfg_stream_vaddr, > u32 fourcc, > u16 w, u16 h) > { > - unsigned int offset = 0; > + /* > + * There is a hardware issue that first 128 bytes of configuration data > + * can't be loaded correctly. > + * To avoid this issue, we need to write the configuration from > + * an offset which should be no less than 0x80 (128 bytes). > + */ > + unsigned int offset = 0x80; > u8 *cfg = (u8 *)cfg_stream_vaddr; > struct mxc_jpeg_sof *sof; > struct mxc_jpeg_sos *sos; > -- > 2.36.1 > Looks good to me! Thanks, Tommaso -- Tommaso Merciai Embedded Linux Engineer tommaso.merciai@xxxxxxxxxxxxxxxxxxxx __________________________________ Amarula Solutions SRL Via Le Canevare 30, 31100 Treviso, Veneto, IT T. +39 042 243 5310 info@xxxxxxxxxxxxxxxxxxxx www.amarulasolutions.com