mbox series

[0/6] qcom: camss: dts: Prune and tidy x13s, rb5 and rb3 CAMSS dts

Message ID 20241025-b4-linux-next-24-10-25-camss-dts-fixups-v1-0-cdff2f1a5792@linaro.org
Headers show
Series qcom: camss: dts: Prune and tidy x13s, rb5 and rb3 CAMSS dts | expand

Message

Bryan O'Donoghue Oct. 25, 2024, 3:43 p.m. UTC
This series does a refresh on upstream x13s, rb5 and rb3 dts.

Firstly:
Moving from static dts files for the mezzanine cards to dtso.
A recent examples of this approach is here:

Commit: bc90f56a1699 ("arm64: dts: sm8650-hdk: add support for the Display Card overlay")

Taking this example this series converts rb3 and rb5 to the same overlay
format. The apq8016-sbc-d3-camera-mezzanine.dtb is omitted from this series
as I haven't had an opportunity to test on this platform but, will do so at
a later date.

Secondly:
rb3 and rb5 both declare clock-lanes in their respective sensor blocks.
Neither sensor actually requires this declaration.

Drop in both cases.

Finally:
Declare CMA heaps for both mezzanine boards so that libcamera's DMA buf
will work with upstream rb3/rb5 camera mezzanine boards.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
---
Bryan O'Donoghue (6):
      arm64: dts: qcom: qrb5165-rb5-vision-mezzanine: Convert mezzanine riser to dtbo
      arm64: dts: qcom: sdm845-db845c-navigation-mezzanine: Convert mezzanine riser to dtso
      arm64: dts: qcom: sc8280xp-x13s: Drop redundant clock-lanes from camera@10
      arm64: dts: qcom: qrb5165-rb5-vision-mezzanine: Drop redundant clock-lanes from camera@1a
      arm64: dts: qcom: qrb5165-rb5-vision-mezzanine: Add cma heap for libcamera softisp support
      arm64: dts: qcom: sdm845-db845c-navigation-mezzanine: Add cma heap for libcamera softisp support

 arch/arm64/boot/dts/qcom/Makefile                    |  6 ++++++
 ...zzanine.dts => qrb5165-rb5-vision-mezzanine.dtso} | 19 +++++++++++++++++--
 .../boot/dts/qcom/sc8280xp-lenovo-thinkpad-x13s.dts  |  1 -
 ...e.dts => sdm845-db845c-navigation-mezzanine.dtso} | 20 ++++++++++++++++++--
 4 files changed, 41 insertions(+), 5 deletions(-)
---
base-commit: a39230ecf6b3057f5897bc4744a790070cfbe7a8
change-id: 20241025-b4-linux-next-24-10-25-camss-dts-fixups-1a094dc5a60f

Best regards,

Comments

Rob Clark Nov. 1, 2024, 12:33 p.m. UTC | #1
On Fri, Oct 25, 2024 at 8:49 AM Bryan O'Donoghue
<bryan.odonoghue@linaro.org> wrote:
>
> libcamera softisp requires a linux,cma heap export in order to support
> user-space debayering, 3a and export to other system components such as
> pipewire, Firefox/Chromium - Hangouts, Zoom etc.

AFAIU libcamera could use udmabuf, etc, and there is no hw requirement
for CMA.  So it doesn't seem we should be adding this to dt.  And I'd
really prefer that we not be using CMA just for lolz.

BR,
-R

> Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
> ---
>  .../boot/dts/qcom/sdm845-db845c-navigation-mezzanine.dtso     | 11 +++++++++++
>  1 file changed, 11 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/qcom/sdm845-db845c-navigation-mezzanine.dtso b/arch/arm64/boot/dts/qcom/sdm845-db845c-navigation-mezzanine.dtso
> index d62a20f018e7a7e1c7e77f0c927c2d9fe7ae8509..c8507afcd1e0d1f9b14b6e4edcbc646032e7b6c9 100644
> --- a/arch/arm64/boot/dts/qcom/sdm845-db845c-navigation-mezzanine.dtso
> +++ b/arch/arm64/boot/dts/qcom/sdm845-db845c-navigation-mezzanine.dtso
> @@ -9,6 +9,17 @@
>  #include <dt-bindings/clock/qcom,camcc-sdm845.h>
>  #include <dt-bindings/gpio/gpio.h>
>
> +/ {
> +       reserved-memory {
> +               linux,cma {
> +                       compatible = "shared-dma-pool";
> +                       size = <0x0 0x8000000>;
> +                       reusable;
> +                       linux,cma-default;
> +               };
> +       };
> +};
> +
>  &camss {
>         vdda-phy-supply = <&vreg_l1a_0p875>;
>         vdda-pll-supply = <&vreg_l26a_1p2>;
>
> --
> 2.47.0
>
>
Kieran Bingham Nov. 1, 2024, 3:18 p.m. UTC | #2
+Cc Laurent

Quoting Rob Clark (2024-11-01 12:33:44)
> On Fri, Oct 25, 2024 at 8:49 AM Bryan O'Donoghue
> <bryan.odonoghue@linaro.org> wrote:
> >
> > libcamera softisp requires a linux,cma heap export in order to support
> > user-space debayering, 3a and export to other system components such as
> > pipewire, Firefox/Chromium - Hangouts, Zoom etc.
> 
> AFAIU libcamera could use udmabuf, etc, and there is no hw requirement
> for CMA.  So it doesn't seem we should be adding this to dt.  And I'd
> really prefer that we not be using CMA just for lolz.

I agree here. Otherwise this theoretically locks this memory to the pool
'forever'. It's not something we should define in device tree.

udmabuf provides a means to get memfd allocated memory which is not
physically contiguous - but /is/ managed by a dmabuf handle.

Presently with SoftISP being CPU only - physically contiguous memory is
not required.

Bryan, will this still be true when you have a GPU based ISP ? Will that
require physically contiguous memory ? Or will the mapping into the GPU
handle any required translations?

--
Kieran


> 
> BR,
> -R
> 
> > Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
> > ---
> >  .../boot/dts/qcom/sdm845-db845c-navigation-mezzanine.dtso     | 11 +++++++++++
> >  1 file changed, 11 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/qcom/sdm845-db845c-navigation-mezzanine.dtso b/arch/arm64/boot/dts/qcom/sdm845-db845c-navigation-mezzanine.dtso
> > index d62a20f018e7a7e1c7e77f0c927c2d9fe7ae8509..c8507afcd1e0d1f9b14b6e4edcbc646032e7b6c9 100644
> > --- a/arch/arm64/boot/dts/qcom/sdm845-db845c-navigation-mezzanine.dtso
> > +++ b/arch/arm64/boot/dts/qcom/sdm845-db845c-navigation-mezzanine.dtso
> > @@ -9,6 +9,17 @@
> >  #include <dt-bindings/clock/qcom,camcc-sdm845.h>
> >  #include <dt-bindings/gpio/gpio.h>
> >
> > +/ {
> > +       reserved-memory {
> > +               linux,cma {
> > +                       compatible = "shared-dma-pool";
> > +                       size = <0x0 0x8000000>;
> > +                       reusable;
> > +                       linux,cma-default;
> > +               };
> > +       };
> > +};
> > +
> >  &camss {
> >         vdda-phy-supply = <&vreg_l1a_0p875>;
> >         vdda-pll-supply = <&vreg_l26a_1p2>;
> >
> > --
> > 2.47.0
> >
> >
Rob Clark Nov. 1, 2024, 4:05 p.m. UTC | #3
On Fri, Nov 1, 2024 at 8:18 AM Kieran Bingham
<kieran.bingham@ideasonboard.com> wrote:
>
> +Cc Laurent
>
> Quoting Rob Clark (2024-11-01 12:33:44)
> > On Fri, Oct 25, 2024 at 8:49 AM Bryan O'Donoghue
> > <bryan.odonoghue@linaro.org> wrote:
> > >
> > > libcamera softisp requires a linux,cma heap export in order to support
> > > user-space debayering, 3a and export to other system components such as
> > > pipewire, Firefox/Chromium - Hangouts, Zoom etc.
> >
> > AFAIU libcamera could use udmabuf, etc, and there is no hw requirement
> > for CMA.  So it doesn't seem we should be adding this to dt.  And I'd
> > really prefer that we not be using CMA just for lolz.
>
> I agree here. Otherwise this theoretically locks this memory to the pool
> 'forever'. It's not something we should define in device tree.
>
> udmabuf provides a means to get memfd allocated memory which is not
> physically contiguous - but /is/ managed by a dmabuf handle.
>
> Presently with SoftISP being CPU only - physically contiguous memory is
> not required.
>
> Bryan, will this still be true when you have a GPU based ISP ? Will that
> require physically contiguous memory ? Or will the mapping into the GPU
> handle any required translations?

GPU does not require phys contiguous.  OTOH it may/will impose some
layout constraints.

I'm kinda leaning towards teaching gbm to allocate YUV plus add a
GBO_BO_USE_CPU usage bit if softisp also needs CPU access.  (Modern
adreno can do cached-coherent buffers, at some small performance cost,
so that CPU access doesn't have to fall off a cliff.)  But that
doesn't exist yet.

BR,
-R

>
> --
> Kieran
>
>
> >
> > BR,
> > -R
> >
> > > Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
> > > ---
> > >  .../boot/dts/qcom/sdm845-db845c-navigation-mezzanine.dtso     | 11 +++++++++++
> > >  1 file changed, 11 insertions(+)
> > >
> > > diff --git a/arch/arm64/boot/dts/qcom/sdm845-db845c-navigation-mezzanine.dtso b/arch/arm64/boot/dts/qcom/sdm845-db845c-navigation-mezzanine.dtso
> > > index d62a20f018e7a7e1c7e77f0c927c2d9fe7ae8509..c8507afcd1e0d1f9b14b6e4edcbc646032e7b6c9 100644
> > > --- a/arch/arm64/boot/dts/qcom/sdm845-db845c-navigation-mezzanine.dtso
> > > +++ b/arch/arm64/boot/dts/qcom/sdm845-db845c-navigation-mezzanine.dtso
> > > @@ -9,6 +9,17 @@
> > >  #include <dt-bindings/clock/qcom,camcc-sdm845.h>
> > >  #include <dt-bindings/gpio/gpio.h>
> > >
> > > +/ {
> > > +       reserved-memory {
> > > +               linux,cma {
> > > +                       compatible = "shared-dma-pool";
> > > +                       size = <0x0 0x8000000>;
> > > +                       reusable;
> > > +                       linux,cma-default;
> > > +               };
> > > +       };
> > > +};
> > > +
> > >  &camss {
> > >         vdda-phy-supply = <&vreg_l1a_0p875>;
> > >         vdda-pll-supply = <&vreg_l26a_1p2>;
> > >
> > > --
> > > 2.47.0
> > >
> > >
Bryan O'Donoghue Nov. 2, 2024, 11:38 a.m. UTC | #4
On 01/11/2024 15:18, Kieran Bingham wrote:
> Presently with SoftISP being CPU only - physically contiguous memory is
> not required.

Yes, I've misinterpreted what we discussed, udmabuf should be enough on 
qcom.

> Bryan, will this still be true when you have a GPU based ISP ? Will that
> require physically contiguous memory ? Or will the mapping into the GPU
> handle any required translations?

I believe it should be fine because we do glTexImage2D on the way in ATM 
and have support for eglCreateImageKHR(.., .., .., .., .., 
   EGL_DMA_BUF_PLANE0_FD_EXT, dma_fd); but in either case phys contig 
doesn't matter.

---
bod