mbox series

[v3,0/8] Support for NVDEC on Tegra234

Message ID 20220920081203.3237744-1-cyndis@kapsi.fi
Headers show
Series Support for NVDEC on Tegra234 | expand

Message

Mikko Perttunen Sept. 20, 2022, 8:11 a.m. UTC
From: Mikko Perttunen <mperttunen@nvidia.com>

v3:
* Updated patch 3 based on comments

v2:
* Updated patches 1,3 based on comments
* Added Acked-by to patch 2

Original message:

Hi all,

this series adds support for the HW video decoder, NVDEC,
on Tegra234 (Orin). The main change is a switch from Falcon
to RISC-V for the internal microcontroller, which brings along
a change in how the engine is booted. Otherwise it is backwards
compatible with earlier versions.

In previous iterations, firmware was simply loaded from disk and
written into engine internal memory. Now, the engine has a
bootrom that loads the firmware from a carveout where it has been
loaded by the system bootloader; however, we still need to tell it
where that carveout is loaded and some offsets into it. For that,
the first patch adds a new memory controller API to query the
carveout address. The offsets are read from device tree -- the
expectation is that at flashing time (when the firmware is also
flashed), the flasher also delivers a device tree overlay with
values corresponding to the flashed firmware.

The currently available Linux for Tegra release doesn't yet
include this device tree overlay flashing, and the firmware version
it contains is incompatible with this series. The plan is to fix
that for the next Linux for Tegra release, but if necessary, we
can postpone merging of this series to once those changes are
available.

Thanks!
Mikko

Mikko Perttunen (8):
  memory: tegra: Add API for retrieving carveout bounds
  dt-bindings: Add headers for NVDEC on Tegra234
  dt-bindings: Add bindings for Tegra234 NVDEC
  arm64: tegra: Add NVDEC on Tegra234
  gpu: host1x: Add stream ID register data for NVDEC on Tegra234
  drm/tegra: nvdec: Support multiple clocks
  drm/tegra: Add code for booting RISC-V based engines
  drm/tegra: Add Tegra234 support to NVDEC driver

 .../gpu/host1x/nvidia,tegra234-nvdec.yaml     | 156 ++++++++++++++++
 arch/arm64/boot/dts/nvidia/tegra234.dtsi      |  27 +++
 drivers/gpu/drm/tegra/Makefile                |   3 +-
 drivers/gpu/drm/tegra/drm.c                   |   1 +
 drivers/gpu/drm/tegra/nvdec.c                 | 171 +++++++++++++++---
 drivers/gpu/drm/tegra/riscv.c                 | 106 +++++++++++
 drivers/gpu/drm/tegra/riscv.h                 |  30 +++
 drivers/gpu/host1x/dev.c                      |  12 ++
 drivers/memory/tegra/mc.c                     |  25 +++
 drivers/memory/tegra/tegra234.c               |   5 +
 include/dt-bindings/clock/tegra234-clock.h    |   4 +
 include/dt-bindings/memory/tegra234-mc.h      |   3 +
 .../dt-bindings/power/tegra234-powergate.h    |   1 +
 include/dt-bindings/reset/tegra234-reset.h    |   1 +
 include/soc/tegra/mc.h                        |  11 ++
 15 files changed, 530 insertions(+), 26 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/gpu/host1x/nvidia,tegra234-nvdec.yaml
 create mode 100644 drivers/gpu/drm/tegra/riscv.c
 create mode 100644 drivers/gpu/drm/tegra/riscv.h

Comments

Krzysztof Kozlowski Sept. 21, 2022, 7:26 a.m. UTC | #1
On 20/09/2022 10:11, Mikko Perttunen wrote:
> From: Mikko Perttunen <mperttunen@nvidia.com>
> 
> v3:
> * Updated patch 3 based on comments
> 
> v2:
> * Updated patches 1,3 based on comments
> * Added Acked-by to patch 2
> 
> Original message:
> 
> Hi all,
> 
> this series adds support for the HW video decoder, NVDEC,
> on Tegra234 (Orin). The main change is a switch from Falcon
> to RISC-V for the internal microcontroller, which brings along
> a change in how the engine is booted. Otherwise it is backwards
> compatible with earlier versions.

I asked you to describe the dependencies and patch merging strategy.
It's still not here, so I assume there are no and I am taking patches
relevant to me.

Best regards,
Krzysztof
Mikko Perttunen Sept. 21, 2022, 7:50 a.m. UTC | #2
On 9/21/22 10:26, Krzysztof Kozlowski wrote:
> On 20/09/2022 10:11, Mikko Perttunen wrote:
>> From: Mikko Perttunen <mperttunen@nvidia.com>
>>
>> v3:
>> * Updated patch 3 based on comments
>>
>> v2:
>> * Updated patches 1,3 based on comments
>> * Added Acked-by to patch 2
>>
>> Original message:
>>
>> Hi all,
>>
>> this series adds support for the HW video decoder, NVDEC,
>> on Tegra234 (Orin). The main change is a switch from Falcon
>> to RISC-V for the internal microcontroller, which brings along
>> a change in how the engine is booted. Otherwise it is backwards
>> compatible with earlier versions.
> 
> I asked you to describe the dependencies and patch merging strategy.
> It's still not here, so I assume there are no and I am taking patches
> relevant to me.
> 
> Best regards,
> Krzysztof

Sorry, I described it in the earlier email and forgot to add it to the 
cover letter..

Patch 8 does depend on patch 1 so it would be better to take the memory 
patch with it, or however works best from maintainership point of view 
(not my expertise).

thanks,
Mikko
Krzysztof Kozlowski Sept. 21, 2022, 7:53 a.m. UTC | #3
On 21/09/2022 09:50, Mikko Perttunen wrote:
> On 9/21/22 10:26, Krzysztof Kozlowski wrote:
>> On 20/09/2022 10:11, Mikko Perttunen wrote:
>>> From: Mikko Perttunen <mperttunen@nvidia.com>
>>>
>>> v3:
>>> * Updated patch 3 based on comments
>>>
>>> v2:
>>> * Updated patches 1,3 based on comments
>>> * Added Acked-by to patch 2
>>>
>>> Original message:
>>>
>>> Hi all,
>>>
>>> this series adds support for the HW video decoder, NVDEC,
>>> on Tegra234 (Orin). The main change is a switch from Falcon
>>> to RISC-V for the internal microcontroller, which brings along
>>> a change in how the engine is booted. Otherwise it is backwards
>>> compatible with earlier versions.
>>
>> I asked you to describe the dependencies and patch merging strategy.
>> It's still not here, so I assume there are no and I am taking patches
>> relevant to me.
>>
>> Best regards,
>> Krzysztof
> 
> Sorry, I described it in the earlier email and forgot to add it to the 
> cover letter..

Please keep it in cover letter. We all get too many emails and too many
patchsets to remember. Plus, things can change and such dependency can
disappear after some versions.

Best regards,
Krzysztof
Thierry Reding Oct. 24, 2022, 1:15 p.m. UTC | #4
On Tue, Sep 20, 2022 at 11:11:55AM +0300, Mikko Perttunen wrote:
> From: Mikko Perttunen <mperttunen@nvidia.com>
> 
> v3:
> * Updated patch 3 based on comments
> 
> v2:
> * Updated patches 1,3 based on comments
> * Added Acked-by to patch 2
> 
> Original message:
> 
> Hi all,
> 
> this series adds support for the HW video decoder, NVDEC,
> on Tegra234 (Orin). The main change is a switch from Falcon
> to RISC-V for the internal microcontroller, which brings along
> a change in how the engine is booted. Otherwise it is backwards
> compatible with earlier versions.
> 
> In previous iterations, firmware was simply loaded from disk and
> written into engine internal memory. Now, the engine has a
> bootrom that loads the firmware from a carveout where it has been
> loaded by the system bootloader; however, we still need to tell it
> where that carveout is loaded and some offsets into it. For that,
> the first patch adds a new memory controller API to query the
> carveout address. The offsets are read from device tree -- the
> expectation is that at flashing time (when the firmware is also
> flashed), the flasher also delivers a device tree overlay with
> values corresponding to the flashed firmware.
> 
> The currently available Linux for Tegra release doesn't yet
> include this device tree overlay flashing, and the firmware version
> it contains is incompatible with this series. The plan is to fix
> that for the next Linux for Tegra release, but if necessary, we
> can postpone merging of this series to once those changes are
> available.
> 
> Thanks!
> Mikko
> 
> Mikko Perttunen (8):
>   memory: tegra: Add API for retrieving carveout bounds
>   dt-bindings: Add headers for NVDEC on Tegra234
>   dt-bindings: Add bindings for Tegra234 NVDEC
>   arm64: tegra: Add NVDEC on Tegra234
>   gpu: host1x: Add stream ID register data for NVDEC on Tegra234
>   drm/tegra: nvdec: Support multiple clocks
>   drm/tegra: Add code for booting RISC-V based engines
>   drm/tegra: Add Tegra234 support to NVDEC driver
> 
>  .../gpu/host1x/nvidia,tegra234-nvdec.yaml     | 156 ++++++++++++++++
>  arch/arm64/boot/dts/nvidia/tegra234.dtsi      |  27 +++
>  drivers/gpu/drm/tegra/Makefile                |   3 +-
>  drivers/gpu/drm/tegra/drm.c                   |   1 +
>  drivers/gpu/drm/tegra/nvdec.c                 | 171 +++++++++++++++---
>  drivers/gpu/drm/tegra/riscv.c                 | 106 +++++++++++
>  drivers/gpu/drm/tegra/riscv.h                 |  30 +++
>  drivers/gpu/host1x/dev.c                      |  12 ++
>  drivers/memory/tegra/mc.c                     |  25 +++
>  drivers/memory/tegra/tegra234.c               |   5 +
>  include/dt-bindings/clock/tegra234-clock.h    |   4 +
>  include/dt-bindings/memory/tegra234-mc.h      |   3 +
>  .../dt-bindings/power/tegra234-powergate.h    |   1 +
>  include/dt-bindings/reset/tegra234-reset.h    |   1 +
>  include/soc/tegra/mc.h                        |  11 ++
>  15 files changed, 530 insertions(+), 26 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/gpu/host1x/nvidia,tegra234-nvdec.yaml
>  create mode 100644 drivers/gpu/drm/tegra/riscv.c
>  create mode 100644 drivers/gpu/drm/tegra/riscv.h

Applied, thanks.

Thierry