mbox series

[v2,00/25] media: venus: Enable 6xx support

Message ID 20210312173039.1387617-1-bryan.odonoghue@linaro.org
Headers show
Series media: venus: Enable 6xx support | expand

Message

Bryan O'Donoghue March 12, 2021, 5:30 p.m. UTC
V2:
- Adds Acked-by as indicated - Stan
- Fixes typo in patch #1 22000000 -> 220000000 - Stan
- Fixes setting of clk_set_rate in core_clks_enable
  unbreaks regression for 1xx/db410c - Stan
- "Add 6xx AXI halt logic"
  * Polled read removed - Stan
  * Redundant comments removed - Stan
  * Delay assocaited with LPI write removed entirely
    experimentation shows a delay is not required - Stan/Bryan
- Unifies intbuf_types_6xx_enc and intbuf_types_6xx_dec into
  intbuf_types_6xx
  Looking at the code the separate arrays was a NOP anyway - Stan/Bryan
- Ensures venus_helper_set_format_constraints() runs for 6xx only
- Differentiates stop address between 6xx and >= 4xx
  0xdeadb000 >= 4xx
  0x00000000 == 6xx - Stan

With the fixes in place for db410c I've verified this code now on
sm8250/rb5 sdm845/rb3 and msm8916/db410c

yaml: pending - acked waiting application
https://www.spinics.net/lists/devicetree/msg406892.html

dts: pending - will resend when above is applied
https://lore.kernel.org/linux-arm-msm/20210222132817.1807788-1-bryan.odonoghue@linaro.org/T/#t

Reference tree:

ssh://git@git.linaro.org/people/bryan.odonoghue/kernel.git / tracking-qcomlt-sm8250-venus

This tree incorporates two sets of patches from Stan - plus the two
yaml/dts sets mentioned above.

svarbanov-linux-tv/venus-for-next-v5.13
svarbanov-linux-tv/venus-msm8916-fixes

There's a small integration error between the 5.13 and msm8916-fixes which
I resolved in favor of the bugfix in 5.13 pending - other than that this
tree and these patches apply on tip-of-tree and run as indicated on rb5/rb3
and db410c.

https://www.spinics.net/lists/linux-arm-msm/msg81291.html

V1:
This series enables support for 6xx venus encode/decode as found on the
sm8250.

The new silicon has different base addresses for existing functional blocks
within the venus address space. We add a base address offset mechanism to
handle this. The offsetting mechanism has been validated on 6xx and 4xx
hardware.

The sm8250 supports:

- h264
- h265
- vp8
- vp9

The driver changes are contingent on yaml and dts patches already
in-flight.

yaml: pending
https://www.spinics.net/lists/devicetree/msg406892.html

dts: pending
https://lore.kernel.org/linux-arm-msm/20210222132817.1807788-1-bryan.odonoghue@linaro.org/T/#t

clk: applied
https://kernel.googlesource.com/pub/scm/linux/kernel/git/clk/linux/+/clk-next

Applies on top of 

https://git.linuxtv.org/svarbanov/media_tree.git / venus-for-next-v5.12-part2

Bryan O'Donoghue (11):
  media: venus: Update v6 buffer descriptors
  media: venus: core: add sm8250 DT compatible and resource data
  media: venus: core: Add io base variables for each block
  media: venus: hfi,pm,firmware: Convert to block relative addressing
  media: venus: core: Add differentiator IS_V6(core)
  media: venus: core: Add an io base for TZ wrapper regs
  media: venus: core: Add an io base for AON regs
  media: venus: core: Hook to V6 base registers when appropriate
  media: venus: hfi: Read WRAPPER_TZ_CPU_STATUS_V6 on 6xx
  media: venus: hfi, vdec: v6 Add IS_V6() to existing IS_V4() if
    locations
  media: venus: pm: Hook 6xx pm ops into 4xx pm ops

Dikshita Agarwal (12):
  media: venus: hfi: Define block offsets for V6 hardware
  media: venus: hfi: Define additional 6xx registers
  media: venus: hfi: Add a 6xx boot logic
  media: venus: hfi: Add 6xx interrupt support
  media: venus: core,pm: Vote for min clk freq during venus boot
  media: venus: hfi: Add 6xx AXI halt logic
  media: venus: pm: Toggle 6xx wrapper power in vcodec_control
  media: venus: firmware: Do not toggle WRAPPER_A9SS_SW_RESET on 6xx
  media: venus: helpers: Add internal buffer list for v6
  media: venus: helpers, hfi, vdec: Set actual plane constraints to FW
  media: venus: hfi: Increase plat_buf_v6 o/p buffer count.
  media: venus: helper: Decide work mode

Stanimir Varbanov (2):
  media: venus: core,pm: Add handling for resets
  media: venus: vdec: Fix decoder cmd STOP issue

 drivers/media/platform/qcom/venus/core.c      |  78 +++++++++
 drivers/media/platform/qcom/venus/core.h      |  19 ++
 drivers/media/platform/qcom/venus/firmware.c  |  34 ++--
 drivers/media/platform/qcom/venus/helpers.c   |  73 +++++++-
 drivers/media/platform/qcom/venus/helpers.h   |   3 +-
 drivers/media/platform/qcom/venus/hfi_cmds.c  |  15 +-
 .../media/platform/qcom/venus/hfi_helper.h    |   9 +-
 .../platform/qcom/venus/hfi_plat_bufs_v6.c    |   2 +-
 .../platform/qcom/venus/hfi_platform_v6.c     | 138 +++++++--------
 drivers/media/platform/qcom/venus/hfi_venus.c | 164 +++++++++++++-----
 .../media/platform/qcom/venus/hfi_venus_io.h  | 118 ++++++++-----
 .../media/platform/qcom/venus/pm_helpers.c    |  92 +++++++++-
 drivers/media/platform/qcom/venus/vdec.c      |  17 +-
 drivers/media/platform/qcom/venus/venc.c      |   2 +-
 14 files changed, 567 insertions(+), 197 deletions(-)

-- 
2.30.1

Comments

Stanimir Varbanov March 23, 2021, 12:20 p.m. UTC | #1
Hi Bryan,

Thanks for your work!

On 3/12/21 7:30 PM, Bryan O'Donoghue wrote:
> V2:

> - Adds Acked-by as indicated - Stan

> - Fixes typo in patch #1 22000000 -> 220000000 - Stan

> - Fixes setting of clk_set_rate in core_clks_enable

>   unbreaks regression for 1xx/db410c - Stan

> - "Add 6xx AXI halt logic"

>   * Polled read removed - Stan

>   * Redundant comments removed - Stan

>   * Delay assocaited with LPI write removed entirely

>     experimentation shows a delay is not required - Stan/Bryan

> - Unifies intbuf_types_6xx_enc and intbuf_types_6xx_dec into

>   intbuf_types_6xx

>   Looking at the code the separate arrays was a NOP anyway - Stan/Bryan

> - Ensures venus_helper_set_format_constraints() runs for 6xx only

> - Differentiates stop address between 6xx and >= 4xx

>   0xdeadb000 >= 4xx

>   0x00000000 == 6xx - Stan

> 

> With the fixes in place for db410c I've verified this code now on

> sm8250/rb5 sdm845/rb3 and msm8916/db410c


You have my ack for all patches

Acked-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>


except 21/25 and 24/25 who have comments.

> 

> yaml: pending - acked waiting application

> https://www.spinics.net/lists/devicetree/msg406892.html


I'll take this through media-tree once driver patchset is ready.

-- 
regards,
Stan

> 

> dts: pending - will resend when above is applied

> https://lore.kernel.org/linux-arm-msm/20210222132817.1807788-1-bryan.odonoghue@linaro.org/T/#t

> 

> Reference tree:

> 

> ssh://git@git.linaro.org/people/bryan.odonoghue/kernel.git / tracking-qcomlt-sm8250-venus

> 

> This tree incorporates two sets of patches from Stan - plus the two

> yaml/dts sets mentioned above.

> 

> svarbanov-linux-tv/venus-for-next-v5.13

> svarbanov-linux-tv/venus-msm8916-fixes

> 

> There's a small integration error between the 5.13 and msm8916-fixes which

> I resolved in favor of the bugfix in 5.13 pending - other than that this

> tree and these patches apply on tip-of-tree and run as indicated on rb5/rb3

> and db410c.

> 

> https://www.spinics.net/lists/linux-arm-msm/msg81291.html

> 

> V1:

> This series enables support for 6xx venus encode/decode as found on the

> sm8250.

> 

> The new silicon has different base addresses for existing functional blocks

> within the venus address space. We add a base address offset mechanism to

> handle this. The offsetting mechanism has been validated on 6xx and 4xx

> hardware.

> 

> The sm8250 supports:

> 

> - h264

> - h265

> - vp8

> - vp9

> 

> The driver changes are contingent on yaml and dts patches already

> in-flight.

> 

> yaml: pending

> https://www.spinics.net/lists/devicetree/msg406892.html

> 

> dts: pending

> https://lore.kernel.org/linux-arm-msm/20210222132817.1807788-1-bryan.odonoghue@linaro.org/T/#t

> 

> clk: applied

> https://kernel.googlesource.com/pub/scm/linux/kernel/git/clk/linux/+/clk-next

> 

> Applies on top of 

> 

> https://git.linuxtv.org/svarbanov/media_tree.git / venus-for-next-v5.12-part2

> 

> Bryan O'Donoghue (11):

>   media: venus: Update v6 buffer descriptors

>   media: venus: core: add sm8250 DT compatible and resource data

>   media: venus: core: Add io base variables for each block

>   media: venus: hfi,pm,firmware: Convert to block relative addressing

>   media: venus: core: Add differentiator IS_V6(core)

>   media: venus: core: Add an io base for TZ wrapper regs

>   media: venus: core: Add an io base for AON regs

>   media: venus: core: Hook to V6 base registers when appropriate

>   media: venus: hfi: Read WRAPPER_TZ_CPU_STATUS_V6 on 6xx

>   media: venus: hfi, vdec: v6 Add IS_V6() to existing IS_V4() if

>     locations

>   media: venus: pm: Hook 6xx pm ops into 4xx pm ops

> 

> Dikshita Agarwal (12):

>   media: venus: hfi: Define block offsets for V6 hardware

>   media: venus: hfi: Define additional 6xx registers

>   media: venus: hfi: Add a 6xx boot logic

>   media: venus: hfi: Add 6xx interrupt support

>   media: venus: core,pm: Vote for min clk freq during venus boot

>   media: venus: hfi: Add 6xx AXI halt logic

>   media: venus: pm: Toggle 6xx wrapper power in vcodec_control

>   media: venus: firmware: Do not toggle WRAPPER_A9SS_SW_RESET on 6xx

>   media: venus: helpers: Add internal buffer list for v6

>   media: venus: helpers, hfi, vdec: Set actual plane constraints to FW

>   media: venus: hfi: Increase plat_buf_v6 o/p buffer count.

>   media: venus: helper: Decide work mode

> 

> Stanimir Varbanov (2):

>   media: venus: core,pm: Add handling for resets

>   media: venus: vdec: Fix decoder cmd STOP issue

> 

>  drivers/media/platform/qcom/venus/core.c      |  78 +++++++++

>  drivers/media/platform/qcom/venus/core.h      |  19 ++

>  drivers/media/platform/qcom/venus/firmware.c  |  34 ++--

>  drivers/media/platform/qcom/venus/helpers.c   |  73 +++++++-

>  drivers/media/platform/qcom/venus/helpers.h   |   3 +-

>  drivers/media/platform/qcom/venus/hfi_cmds.c  |  15 +-

>  .../media/platform/qcom/venus/hfi_helper.h    |   9 +-

>  .../platform/qcom/venus/hfi_plat_bufs_v6.c    |   2 +-

>  .../platform/qcom/venus/hfi_platform_v6.c     | 138 +++++++--------

>  drivers/media/platform/qcom/venus/hfi_venus.c | 164 +++++++++++++-----

>  .../media/platform/qcom/venus/hfi_venus_io.h  | 118 ++++++++-----

>  .../media/platform/qcom/venus/pm_helpers.c    |  92 +++++++++-

>  drivers/media/platform/qcom/venus/vdec.c      |  17 +-

>  drivers/media/platform/qcom/venus/venc.c      |   2 +-

>  14 files changed, 567 insertions(+), 197 deletions(-)

>
Bryan O'Donoghue March 23, 2021, 2:07 p.m. UTC | #2
On 23/03/2021 12:20, Stanimir Varbanov wrote:
> Hi Bryan,

> 

> Thanks for your work!

> 

> On 3/12/21 7:30 PM, Bryan O'Donoghue wrote:

>> V2:

>> - Adds Acked-by as indicated - Stan

>> - Fixes typo in patch #1 22000000 -> 220000000 - Stan

>> - Fixes setting of clk_set_rate in core_clks_enable

>>    unbreaks regression for 1xx/db410c - Stan

>> - "Add 6xx AXI halt logic"

>>    * Polled read removed - Stan

>>    * Redundant comments removed - Stan

>>    * Delay assocaited with LPI write removed entirely

>>      experimentation shows a delay is not required - Stan/Bryan

>> - Unifies intbuf_types_6xx_enc and intbuf_types_6xx_dec into

>>    intbuf_types_6xx

>>    Looking at the code the separate arrays was a NOP anyway - Stan/Bryan

>> - Ensures venus_helper_set_format_constraints() runs for 6xx only

>> - Differentiates stop address between 6xx and >= 4xx

>>    0xdeadb000 >= 4xx

>>    0x00000000 == 6xx - Stan

>>

>> With the fixes in place for db410c I've verified this code now on

>> sm8250/rb5 sdm845/rb3 and msm8916/db410c

> 

> You have my ack for all patches

> 

> Acked-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>

> 

> except 21/25 and 24/25 who have comments.

> 

>>

>> yaml: pending - acked waiting application

>> https://www.spinics.net/lists/devicetree/msg406892.html

> 

> I'll take this through media-tree once driver patchset is ready.

> 


Thanks Stan.

I'll get something re-posted this week after Connect.

---
bod