mbox series

[0/7] media: hantro: add Allwinner H6 support

Message ID 20211122184702.768341-1-jernej.skrabec@gmail.com (mailing list archive)
Headers show
Series media: hantro: add Allwinner H6 support | expand

Message

Jernej Škrabec Nov. 22, 2021, 6:46 p.m. UTC
Hi everyone!

Here is patchset which adds support for Hantro G2 core found in Allwinner
H6 SoC. It is slightly older core, so it needs few quirks to be
implemented:
1. It uses slightly different register layout in some cases. However, those
   differences are small, so it makes sense only to add quirks.
2. It doesn't use ring buffer for bitstream as newer variants.
3. It needs double buffering to be enabled in order to work correctly.
4. postproc must be enabled at the end of the job. It seems that core has
   some issues with latching register values if postproc registers are set
   at the beginning of the job

legacy_regs quirk could be split into 3, like legacy_regs, ring_buffer and
late_postproc, but I didn't see the need for that. I examined vendor
sources at [1] and it suggests that legacy_regs implies no ring buffer.

It's also unclear if core supports HEVC decoding or not. This can be
implemented later. VP9 10-bit decoding support is mentioned in manual, but
it doesn't work at the moment. This will be addressed later.

Please take a look.

Best regards,
Jernej

[1] https://github.com/CliveLau1990/imx-vpu-hantro

Jernej Skrabec (7):
  media: hantro: add support for reset lines
  media: hantro: vp9: use double buffering if needed
  media: hantro: vp9: add support for legacy register set
  media: hantro: move postproc enablement for old cores
  media: dt-bindings: allwinner: document H6 Hantro G2 binding
  media: hantro: Add support for Allwinner H6
  arm64: dts: allwinner: h6: Add Hantro G2 node

 .../media/allwinner,sun50i-h6-vpu-g2.yaml     |  64 +++++++++++
 arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi  |   9 ++
 drivers/staging/media/hantro/Kconfig          |  10 +-
 drivers/staging/media/hantro/Makefile         |   3 +
 drivers/staging/media/hantro/hantro.h         |   7 ++
 drivers/staging/media/hantro/hantro_drv.c     |  27 ++++-
 drivers/staging/media/hantro/hantro_g2_regs.h |  20 ++++
 .../staging/media/hantro/hantro_g2_vp9_dec.c  |  76 ++++++++++---
 drivers/staging/media/hantro/hantro_hw.h      |   1 +
 drivers/staging/media/hantro/sunxi_vpu_hw.c   | 104 ++++++++++++++++++
 10 files changed, 301 insertions(+), 20 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/media/allwinner,sun50i-h6-vpu-g2.yaml
 create mode 100644 drivers/staging/media/hantro/sunxi_vpu_hw.c

Comments

Jernej Škrabec Nov. 22, 2021, 6:51 p.m. UTC | #1
Dne ponedeljek, 22. november 2021 ob 19:46:55 CET je Jernej Skrabec 
napisal(a):
> Hi everyone!
> 
> Here is patchset which adds support for Hantro G2 core found in Allwinner
> H6 SoC. It is slightly older core, so it needs few quirks to be
> implemented:
> 1. It uses slightly different register layout in some cases. However, those
>    differences are small, so it makes sense only to add quirks.
> 2. It doesn't use ring buffer for bitstream as newer variants.
> 3. It needs double buffering to be enabled in order to work correctly.
> 4. postproc must be enabled at the end of the job. It seems that core has
>    some issues with latching register values if postproc registers are set
>    at the beginning of the job
> 
> legacy_regs quirk could be split into 3, like legacy_regs, ring_buffer and
> late_postproc, but I didn't see the need for that. I examined vendor
> sources at [1] and it suggests that legacy_regs implies no ring buffer.
> 
> It's also unclear if core supports HEVC decoding or not. This can be
> implemented later. VP9 10-bit decoding support is mentioned in manual, but
> it doesn't work at the moment. This will be addressed later.
> 
> Please take a look.
> 
> Best regards,
> Jernej
> 
> [1] https://github.com/CliveLau1990/imx-vpu-hantro

Forgot to add, this series is based on top of:
https://www.spinics.net/lists/linux-media/msg202448.html

Regards,
Jernej

> 
> Jernej Skrabec (7):
>   media: hantro: add support for reset lines
>   media: hantro: vp9: use double buffering if needed
>   media: hantro: vp9: add support for legacy register set
>   media: hantro: move postproc enablement for old cores
>   media: dt-bindings: allwinner: document H6 Hantro G2 binding
>   media: hantro: Add support for Allwinner H6
>   arm64: dts: allwinner: h6: Add Hantro G2 node
> 
>  .../media/allwinner,sun50i-h6-vpu-g2.yaml     |  64 +++++++++++
>  arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi  |   9 ++
>  drivers/staging/media/hantro/Kconfig          |  10 +-
>  drivers/staging/media/hantro/Makefile         |   3 +
>  drivers/staging/media/hantro/hantro.h         |   7 ++
>  drivers/staging/media/hantro/hantro_drv.c     |  27 ++++-
>  drivers/staging/media/hantro/hantro_g2_regs.h |  20 ++++
>  .../staging/media/hantro/hantro_g2_vp9_dec.c  |  76 ++++++++++---
>  drivers/staging/media/hantro/hantro_hw.h      |   1 +
>  drivers/staging/media/hantro/sunxi_vpu_hw.c   | 104 ++++++++++++++++++
>  10 files changed, 301 insertions(+), 20 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/media/
allwinner,sun50i-h6-vpu-g2.yaml
>  create mode 100644 drivers/staging/media/hantro/sunxi_vpu_hw.c
> 
> -- 
> 2.34.0
> 
>