mbox series

[RESEND,00/18] CAMSS: Add SM8250 support

Message ID 20211111161542.3936425-1-bryan.odonoghue@linaro.org (mailing list archive)
Headers show
Series CAMSS: Add SM8250 support | expand

Message

Bryan O'Donoghue Nov. 11, 2021, 4:15 p.m. UTC
RESEND: git send-email --to=inux-arm-msm@vger.kernel.org -> --to=linux-arm-msm@vger.kernel.org

This series is imported from excellent enabling work contributed by
Jonathan Marek which we have picked up in Linaro for the RB5 project.

Link: https://patchwork.kernel.org/project/linux-arm-msm/patch/20210511180728.23781-2-jonathan@marek.ca/
Link: https://www.qualcomm.com/products/robotics-rb5-platform
Link: https://www.96boards.org/product/qualcomm-robotics-rb5
Link: https://www.thundercomm.com/app_en/product/1590131656070623?index=1&categoryId=category0&tabIndex=1

The RB5 has a slightly different sku I think to Jonathan's platform -
QRB5165 in our case with a different version of LK the relevant bootloader
for the board.

As a result we needed to make some additional updates to the provided
patcheset, included here.

The most notable changes are:

- Addition of clocks.
- Addition of bandwidth settings.
- Representing the dependency on a VFE for a given CSID so that V4L
  subdevs will come out of reset right when poked.

A full tree which is bootable and capable of producing pixel data from the
imx577 main sensor is availble here, with this series being a sub-set of
the necessary patches on the SoC side only.

Link: https://git.linaro.org/people/bryan.odonoghue/kernel.git/log/?h=v5.16-rc1-sm8250-camss-imx577-only

media-ctl --reset
media-ctl -v -d /dev/media0 -V '"imx412 '20-001a'":0[fmt:SRGGB10/4056x3040 field:none]'
media-ctl -V '"msm_csiphy2":0[fmt:SRGGB10/4056x3040]'
media-ctl -V '"msm_csid0":0[fmt:SRGGB10/4056x3040]'
media-ctl -V '"msm_vfe0_rdi0":0[fmt:SRGGB10/4056x3040]'
media-ctl -l '"msm_csiphy2":1->"msm_csid0":0[1]'
media-ctl -l '"msm_csid0":1->"msm_vfe0_rdi0":0[1]'

yavta -B capture-mplane -c -I -n 5 -f SRGGB10P -s 4056x3040 -F /dev/video0

Bryan O'Donoghue (2):
  media: camss: Add SM8250 bandwdith configuration support
  media: camss: Do vfe_get/vfe_put for csid on sm8250

Jonathan Marek (16):
  media: dt-bindings: media: camss: Add qcom,sm8250-camss binding
  media: camss: csiphy-3ph: don't print HW version as an error
  media: camss: csiphy-3ph: disable interrupts
  media: camss: csiphy-3ph: add support for SM8250 CSI DPHY
  media: camss: csid-170: fix non-10bit formats
  media: camss: csid-170: don't enable unused irqs
  media: camss: csid-170: remove stray comment
  media: camss: csid-170: support more than one lite vfe
  media: camss: csid-170: set the right HALT_CMD when disabled
  media: camss: csid: allow csid to work without a regulator
  media: camss: remove vdda-csiN from sdm845 resources
  media: camss: fix VFE irq name
  media: camss: vfe-170: fix "VFE halt timeout" error
  media: camss: Add initial support for VFE hardware version Titan 480
  media: camss: add support for V4L2_PIX_FMT_GREY for sdm845 HW
  media: camss: add support for SM8250 camss

 .../bindings/media/qcom,sm8250-camss.yaml     | 450 ++++++++++++++
 drivers/media/platform/qcom/camss/Makefile    |   3 +-
 .../{camss-csid-170.c => camss-csid-gen2.c}   |  32 +-
 .../media/platform/qcom/camss/camss-csid.c    |  55 +-
 .../media/platform/qcom/camss/camss-csid.h    |   2 +-
 .../qcom/camss/camss-csiphy-3ph-1-0.c         | 184 ++++--
 .../media/platform/qcom/camss/camss-csiphy.c  |   9 +-
 .../media/platform/qcom/camss/camss-vfe-170.c |  12 +-
 .../media/platform/qcom/camss/camss-vfe-480.c | 548 ++++++++++++++++++
 drivers/media/platform/qcom/camss/camss-vfe.c |  17 +-
 drivers/media/platform/qcom/camss/camss-vfe.h |   4 +
 .../media/platform/qcom/camss/camss-video.c   |   5 +-
 drivers/media/platform/qcom/camss/camss.c     | 298 +++++++++-
 drivers/media/platform/qcom/camss/camss.h     |  18 +
 14 files changed, 1533 insertions(+), 104 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/media/qcom,sm8250-camss.yaml
 rename drivers/media/platform/qcom/camss/{camss-csid-170.c => camss-csid-gen2.c} (95%)
 create mode 100644 drivers/media/platform/qcom/camss/camss-vfe-480.c

Comments

Julian Grahsl Nov. 22, 2021, 7:40 p.m. UTC | #1
Hey Bryan,

I tested the patch series on the RB5 Vision Kit and verified that
capturing frames from the IMX577/IMX412 camera using yavta and
libcamera is working as expected. The captured data is padded to a
16-byte boundary for each line in the frame. I was using a simple
python/opencv script to verify that the frame is not corrupted and
that the reported image format (4056x3040-SRGGB10_CSI2P) makes sense
(keeping the 16-byte boundary in mind).

Please add my t-b.

Tested-by: Julian Grahsl <jgrahsl@snap.com>

root@qrb5165-rb5:~# cam -c 1 --capture=10 --file=frame1.bin
Using camera /base/soc@0/cci@ac50000/i2c-bus@0/camera@1a as cam0
[0:38:31.392452919] [1404]  INFO Camera camera.cpp:945 configuring
streams: (0) 4056x3040-SRGGB10_CSI2P
cam0: Capture 10 frames
2311.682879 (0.00 fps) cam0-stream0 seq: 000000 bytesused: 15418880
2311.716190 (30.02 fps) cam0-stream0 seq: 000001 bytesused: 15418880
2311.749522 (30.00 fps) cam0-stream0 seq: 000002 bytesused: 15418880
2311.782852 (30.00 fps) cam0-stream0 seq: 000003 bytesused: 15418880
2311.816347 (29.86 fps) cam0-stream0 seq: 000004 bytesused: 15418880
2311.849604 (30.07 fps) cam0-stream0 seq: 000005 bytesused: 15418880
2311.882934 (30.00 fps) cam0-stream0 seq: 000006 bytesused: 15418880
2311.916272 (30.00 fps) cam0-stream0 seq: 000007 bytesused: 15418880
2311.949611 (29.99 fps) cam0-stream0 seq: 000008 bytesused: 15418880
2311.982931 (30.01 fps) cam0-stream0 seq: 000009 bytesused: 15418880

On Thu, Nov 11, 2021 at 5:13 PM Bryan O'Donoghue
<bryan.odonoghue@linaro.org> wrote:
>
> RESEND: git send-email --to=inux-arm-msm@vger.kernel.org -> --to=linux-arm-msm@vger.kernel.org
>
> This series is imported from excellent enabling work contributed by
> Jonathan Marek which we have picked up in Linaro for the RB5 project.
>
> Link: https://patchwork.kernel.org/project/linux-arm-msm/patch/20210511180728.23781-2-jonathan@marek.ca/
> Link: https://urldefense.proofpoint.com/v2/url?u=https-3A__www.qualcomm.com_products_robotics-2Drb5-2Dplatform&d=DwIDAg&c=ncDTmphkJTvjIDPh0hpF_4vCHvabgGkICC2epckfdiw&r=WMvYsMZYRjlckS0DeCYqNiuOSbMJMG-a0iXUWTmfVNw&m=M_FfZyy6tanOleebHlyZCt13urClXtUo40bzp3DK5Lufj5aEBaA6pMaGR7QKm95Y&s=SCOC2iFYWetFrxGV5JvxaxnZAD77TbbP2aImnbzzgZI&e=
> Link: https://urldefense.proofpoint.com/v2/url?u=https-3A__www.96boards.org_product_qualcomm-2Drobotics-2Drb5&d=DwIDAg&c=ncDTmphkJTvjIDPh0hpF_4vCHvabgGkICC2epckfdiw&r=WMvYsMZYRjlckS0DeCYqNiuOSbMJMG-a0iXUWTmfVNw&m=M_FfZyy6tanOleebHlyZCt13urClXtUo40bzp3DK5Lufj5aEBaA6pMaGR7QKm95Y&s=mB63BeH3Hwdmzz8OXly-62OKS33Hk_aVqJJLN6xmD40&e=
> Link: https://urldefense.proofpoint.com/v2/url?u=https-3A__www.thundercomm.com_app-5Fen_product_1590131656070623-3Findex-3D1-26categoryId-3Dcategory0-26tabIndex-3D1&d=DwIDAg&c=ncDTmphkJTvjIDPh0hpF_4vCHvabgGkICC2epckfdiw&r=WMvYsMZYRjlckS0DeCYqNiuOSbMJMG-a0iXUWTmfVNw&m=M_FfZyy6tanOleebHlyZCt13urClXtUo40bzp3DK5Lufj5aEBaA6pMaGR7QKm95Y&s=VltqdAczXJiZKDatFp-6UdrSyaZ9hU4IOma3vCqp8Cw&e=
>
> The RB5 has a slightly different sku I think to Jonathan's platform -
> QRB5165 in our case with a different version of LK the relevant bootloader
> for the board.
>
> As a result we needed to make some additional updates to the provided
> patcheset, included here.
>
> The most notable changes are:
>
> - Addition of clocks.
> - Addition of bandwidth settings.
> - Representing the dependency on a VFE for a given CSID so that V4L
>   subdevs will come out of reset right when poked.
>
> A full tree which is bootable and capable of producing pixel data from the
> imx577 main sensor is availble here, with this series being a sub-set of
> the necessary patches on the SoC side only.
>
> Link: https://git.linaro.org/people/bryan.odonoghue/kernel.git/log/?h=v5.16-rc1-sm8250-camss-imx577-only
>
> media-ctl --reset
> media-ctl -v -d /dev/media0 -V '"imx412 '20-001a'":0[fmt:SRGGB10/4056x3040 field:none]'
> media-ctl -V '"msm_csiphy2":0[fmt:SRGGB10/4056x3040]'
> media-ctl -V '"msm_csid0":0[fmt:SRGGB10/4056x3040]'
> media-ctl -V '"msm_vfe0_rdi0":0[fmt:SRGGB10/4056x3040]'
> media-ctl -l '"msm_csiphy2":1->"msm_csid0":0[1]'
> media-ctl -l '"msm_csid0":1->"msm_vfe0_rdi0":0[1]'
>
> yavta -B capture-mplane -c -I -n 5 -f SRGGB10P -s 4056x3040 -F /dev/video0
>
> Bryan O'Donoghue (2):
>   media: camss: Add SM8250 bandwdith configuration support
>   media: camss: Do vfe_get/vfe_put for csid on sm8250
>
> Jonathan Marek (16):
>   media: dt-bindings: media: camss: Add qcom,sm8250-camss binding
>   media: camss: csiphy-3ph: don't print HW version as an error
>   media: camss: csiphy-3ph: disable interrupts
>   media: camss: csiphy-3ph: add support for SM8250 CSI DPHY
>   media: camss: csid-170: fix non-10bit formats
>   media: camss: csid-170: don't enable unused irqs
>   media: camss: csid-170: remove stray comment
>   media: camss: csid-170: support more than one lite vfe
>   media: camss: csid-170: set the right HALT_CMD when disabled
>   media: camss: csid: allow csid to work without a regulator
>   media: camss: remove vdda-csiN from sdm845 resources
>   media: camss: fix VFE irq name
>   media: camss: vfe-170: fix "VFE halt timeout" error
>   media: camss: Add initial support for VFE hardware version Titan 480
>   media: camss: add support for V4L2_PIX_FMT_GREY for sdm845 HW
>   media: camss: add support for SM8250 camss
>
>  .../bindings/media/qcom,sm8250-camss.yaml     | 450 ++++++++++++++
>  drivers/media/platform/qcom/camss/Makefile    |   3 +-
>  .../{camss-csid-170.c => camss-csid-gen2.c}   |  32 +-
>  .../media/platform/qcom/camss/camss-csid.c    |  55 +-
>  .../media/platform/qcom/camss/camss-csid.h    |   2 +-
>  .../qcom/camss/camss-csiphy-3ph-1-0.c         | 184 ++++--
>  .../media/platform/qcom/camss/camss-csiphy.c  |   9 +-
>  .../media/platform/qcom/camss/camss-vfe-170.c |  12 +-
>  .../media/platform/qcom/camss/camss-vfe-480.c | 548 ++++++++++++++++++
>  drivers/media/platform/qcom/camss/camss-vfe.c |  17 +-
>  drivers/media/platform/qcom/camss/camss-vfe.h |   4 +
>  .../media/platform/qcom/camss/camss-video.c   |   5 +-
>  drivers/media/platform/qcom/camss/camss.c     | 298 +++++++++-
>  drivers/media/platform/qcom/camss/camss.h     |  18 +
>  14 files changed, 1533 insertions(+), 104 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/media/qcom,sm8250-camss.yaml
>  rename drivers/media/platform/qcom/camss/{camss-csid-170.c => camss-csid-gen2.c} (95%)
>  create mode 100644 drivers/media/platform/qcom/camss/camss-vfe-480.c
>
> --
> 2.33.0
>