Re: imx8m-mini csi-2 limitations

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Petko

On Thu, Aug 18, 2022 at 12:27:45PM +0300, Petko Manolov wrote:
> 	Hello again,
>
> After digging down NXP's documentation and reading some comments within kernel
> drivers (sorry Jacopo, you've left some nice comments in imx7-media-csi.c, hence
> you're spammed now :) i came to the conclusion that mipi-csi to csi-bridge data

No worries.

I tried re-reading all the discussions, but memory still fails me
here.

I recall I had an issue with the CSIS bandwidth and somewhere I
suggested that it might be due to the CSI-2 specification version that
the peripheral implemented. I can't find that email anymore though :/

> path can only be 8bits in raw12 format.  The only exception is YUV422 format,
> which get BIT_MIPI_DOUBLE_CMPNT flag set.
>

Yes, there has been quite some discussions about how to mix-and-match
the settings between the CSIS (mipi-csi) and the CSI (csi-bridge) [*]

If I recall correctly there are at least three configurations at play:

- The CSIS pixel mode selection

  MIPI_CSI_ISP_CONFIG[13:12]

  The driver currently forces dual pixel sampling mode for YUV422
  and report a TODO:

  * TODO: Verify which other formats require DUAL (or QUAD) modes.

  Here you're trying to transfer RAW12 data, which is indicated in the
  register documentation as one of the formats suitable for DUAL/QUAD
  mode transfer

  - I'm actually not sure how and if RAW12 gets expanded to 16 bit
    samples by filling the 16-bit word with 0s or it either gets
    packed in 6 bytes with no paddings. Figure "13-33. Pixel
    alignment" seems to suggest that, but I'm not sure I really got
    that diagram

- The CSI-bridge

  - CSI_CR3[3] SENSOR_16BITS
  - CSI_CR18[20] MIPI_DOUBLE_CMP

  The comment in imx7_csi_configure() explains how different versions
  of YUYV (2X8 and 1X16) are handled, and why SENSOR_16BITS and
  MIPI_DOUBLE_CMP have to be enabled when the csi-bridge has to be instructed
  to sample 16 bits samples from the RX queue.

I guess the key would be here to find out what combination of
SINGLE/DUAL/QUAD sampling is opportune for RAW12 (I would try with
DUAL first and then QUAD) and then configure the csi-bridge bus
sampling mode accordingly (likely in the same was as it is done for
YUYV_1X16)

When it comes to bandwidth limitation, can you try to reduce the
sensor output size to make sure you chase one issue at the time ?

[*] Is "CSI" the most abused acronym of history ?

> So i guess there are two questions:
>
> 	a) can the csi-bridge (and mipi-csi) be persuaded to do two-bytes for
> 	raw12 format;

See above :)

> 	b) what's the maximum frequency for csi-bridge PIXCLK?
>

Not sure about this one.

I've anyway cc-ed Laurent and Xavier, which can surely be helpful here

Thanks
   j

> I've increased PIXCLK up to 1ghz (as opposed to the default 500mhz) and this seem
> to hung the bridge.
>
>
> cheers,
> Petko
>
>
> On 22-08-15 16:52:59, Petko Manolov wrote:
> > 	Hello guys,
> >
> > I'm developing a driver for Sony imx492 sensor and i'm using imx8m-mini
> > (Variscite SoM on Symphony carrier board) platform.  Thanks to Laurent i dumped
> > the vendor mipi-csi and csi-bridge drivers in favor of mainline (v5.19-rc6 atm)
> > and parts started to click in place.  However, there are still a few rough
> > edges.
> >
> > The sensor is 47mpix, and is only capable of streaming over all four CSI-2
> > lanes.  Each lane is 1.728gbit, which makes 6.912gbps total bandwidth.
> > imx8m-mini's d-phy can handle (on paper) up to 6gbps.
> >
> > I guess the main question here is: what's the fastest transfer rate that's known
> > to work with this SoC?  Does anyone have experience with imx8m-mini in this
> > regard?
> >
> >
> > Even with the settings that i'm able to obtain a (distorted) test pattern image
> > with, i keep getting tons of:
> >
> > [99910.847591] imx-mipi-csis 32e30000.mipi-csi: FIFO Overflow Error events: 1353347
> >
> > IRQs also look a suspicious on the 'csi' part:
> >
> > 214:    2653716          0          0          0     GICv3  49 Level     32e30000.mipi-csi
> > 215:          2          0          0          0     GICv3  48 Level     csi
> >
> > That's with this clock setup:
> >
> >  sys_pll2                             1        1        0  1000000000          0     0  50000         Y
> >     sys_pll2_out                      5        5        0  1000000000          0     0  50000         Y
> >        sys_pll2_1000m                 3        3        0  1000000000          0     0  50000         Y
> >           csi1_phy_ref                1        1        0  1000000000          0     0  50000         Y
> >           csi1_core                   1        1        0   500000000          0     0  50000         Y
> >              csi1_root_clk            1        1        0   500000000          0     0  50000         Y
> >
> > However, if i change the latter two (csi1_core & csi1_root_clk) to 1ghz, there
> > are still mipi-csi IRQs coming in, but nothing from the csi-bridge.
> >
> > Any advice on where i shall start looking first?
> >
> >
> > thanks,
> > Petko



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux