[PATCH v4 00/78] drm/vc4: Support BCM2711 Display Pipeline

Hoegeun Kwon hoegeun.kwon at samsung.com
Fri Aug 21 03:18:34 EDT 2020


Hi Maxime,

Thank you for your version 4 patch.
I tested all 78 patches based on the next-20200708.


Dual HDMI opearation does not work normally.
flip_done timed out occurs and doesn't work.
Could you check please it.

[  105.694541] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* 
[CRTC:64:crtc-3] flip_done timed out
[  115.934994] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* 
[CONNECTOR:32:HDMI-A-1] flip_done timed out
[  126.174545] [drm:drm_atomic_helper_wait_for_dependencies] *ERROR* 
[PLANE:60:plane-3] flip_done timed out


And there is a problem with 4k UDH not outputting...
So this problem worked as I fixed it like patches[1].

[1] [PATCH 0/3] drm/vc4: Support HDMI QHD or higher output


"[PATCH v4 00/78] drm/vc4: Support BCM2711 Display Pipeline" all patches.

Tested-by: Hoegeun Kwon <hoegeun.kwon at samsung.com>

Best regards,
Hoegeun

> Hi everyone,
>
> Here's a (pretty long) series to introduce support in the VC4 DRM driver
> for the display pipeline found in the BCM2711 (and thus the RaspberryPi 4).
>
> The main differences are that there's two HDMI controllers and that there's
> more pixelvalve now. Those pixelvalve come with a mux in the HVS that still
> have only 3 FIFOs. Both of those differences are breaking a bunch of
> expectations in the driver, so we first need a good bunch of cleanup and
> reworks to introduce support for the new controllers.
>
> Similarly, the HDMI controller has all its registers shuffled and split in
> multiple controllers now, so we need a bunch of changes to support this as
> well.
>
> Only the HDMI support is enabled for now (even though the DPI and DSI
> outputs have been tested too).
>
> Let me know if you have any comments
> Maxime
>
> Cc: bcm-kernel-feedback-list at broadcom.com
> Cc: devicetree at vger.kernel.org
> Cc: Kamal Dasu <kdasu.kdev at gmail.com>
> Cc: linux-clk at vger.kernel.org
> Cc: Michael Turquette <mturquette at baylibre.com>
> Cc: Philipp Zabel <p.zabel at pengutronix.de>
> Cc: Rob Herring <robh+dt at kernel.org>
> Cc: Stephen Boyd <sboyd at kernel.org>
>
> Changes from v3:
>    - Rebased on top of next-20200708
>    - Added a name to the HDMI audio codec component
>    - Only disable the BCM2711 HDMI pixelvalves at boot
>    - Fixed an error in the HVS binding
>    - Fix a framebuffer size condition that was inverted
>    - Changed the channel allocation algorithm using Eric's suggestion
>    - Always write the muxing values instead of updating if needed
>    - Improved a bit the hvs_available_channels comment in the structure
>    - Change atomic_complete_commit code to use for_each_new_crtc_in_state
>    - Change the muxing code to take into account disparities between the
>      BCM2711 and previous SoCs.
>    - Only change the clock rate on BCM2711 during a modeset
>    - Fix a crash at atomic_disable
>    - Use clk_set_min_rate for the core clock too
>    - Add a few defines, and simplify the FIFO level stuff
>    - Reordered the patches according to Eric's reviews
>    - Fixed a regression with VID_CTL setting on RPI3
>
> Changes from v2:
>    - Rebased on top of next-20200526
>    - Split the firmware clock series away
>    - Removed the stuck pixel (with all the subsequent pixels being shifted
>      by one
>    - Fixed the writeback issue too.
>    - Fix the dual output
>    - Fixed the return value of phy_get_cp_current
>    - Enhanced the comment on the reset delay
>    - Increase the max width and height
>    - Made a proper Kconfig option for the DVP clock driver
>    - Fixed the alsa card name collision
>
> Changes from v1:
>    - Rebased on top of 5.7-rc1
>    - Run checkpatch
>    - Added audio support
>    - Fixed some HDMI timeouts
>    - Swiched to clk_hw_register_gate_parent_data
>    - Reorder Kconfig symbols in drivers/i2c/busses
>    - Make the firmware clocks a child of the firmware node
>    - Switch DVP clock driver to clk_hw interface
>    - constify raspberrypi_clk_data in raspberrypi_clock_property
>    - Don't mark firmware clocks as IGNORE_UNUSED
>    - Change from reset_ms to reset_us in reset-simple, and add a bit more
>      comments
>    - Remove generic clk patch to test if a NULL pointer is returned
>    - Removed misleading message in the is_prepared renaming patch commit
>      message
>    - Constify HDMI controller variants
>    - Fix a bug in the allocation size of the clk data array
>    - Added a mention in the DT binding conversion patches about the breakage
>    - Merged a few fixes from kbuild
>    - Fixed a few bisection and CEC build issues
>    - Collected Acked-by and Reviewed-by
>    - Change Dave email address to raspberrypi.com
>
> Dave Stevenson (7):
>    drm/vc4: Add support for the BCM2711 HVS5
>    drm/vc4: plane: Change LBM alignment constraint on LBM
>    drm/vc4: plane: Optimize the LBM allocation size
>    drm/vc4: hdmi: Use reg-names to retrieve the HDMI audio registers
>    drm/vc4: hdmi: Reset audio infoframe on encoder_enable if previously streaming
>    drm/vc4: hdmi: Set the b-frame marker to the match ALSA's default.
>    drm/vc4: hdmi: Add audio-related callbacks
>
> Maxime Ripard (71):
>    dt-bindings: display: Add support for the BCM2711 HVS
>    drm/vc4: hvs: Boost the core clock during modeset
>    drm/vc4: plane: Create more planes
>    drm/vc4: crtc: Deal with different number of pixel per clock
>    drm/vc4: crtc: Use a shared interrupt
>    drm/vc4: crtc: Move the cob allocation outside of bind
>    drm/vc4: crtc: Rename HVS channel to output
>    drm/vc4: crtc: Use local chan variable
>    drm/vc4: crtc: Enable and disable the PV in atomic_enable / disable
>    drm/vc4: kms: Convert to for_each_new_crtc_state
>    drm/vc4: crtc: Assign output to channel automatically
>    drm/vc4: crtc: Add FIFO depth to vc4_crtc_data
>    drm/vc4: crtc: Add function to compute FIFO level bits
>    drm/vc4: crtc: Rename HDMI encoder type to HDMI0
>    drm/vc4: crtc: Add HDMI1 encoder type
>    drm/vc4: crtc: Disable color management for HVS5
>    drm/vc4: crtc: Turn pixelvalve reset into a function
>    drm/vc4: crtc: Move PV dump to config_pv
>    drm/vc4: crtc: Move HVS init and close to a function
>    drm/vc4: crtc: Move the HVS gamma LUT setup to our init function
>    drm/vc4: hvs: Make sure our channel is reset
>    drm/vc4: crtc: Remove mode_set_nofb
>    drm/vc4: crtc: Remove redundant pixelvalve reset
>    drm/vc4: crtc: Move HVS channel init before the PV initialisation
>    drm/vc4: encoder: Add finer-grained encoder callbacks
>    drm/vc4: crtc: Add a delay after disabling the PixelValve output
>    drm/vc4: crtc: Clear the PixelValve FIFO on disable
>    drm/vc4: crtc: Clear the PixelValve FIFO during configuration
>    drm/vc4: hvs: Make the stop_channel function public
>    drm/vc4: hvs: Introduce a function to get the assigned FIFO
>    drm/vc4: crtc: Move the CRTC disable out
>    drm/vc4: drv: Disable the CRTC at boot time
>    dt-bindings: display: vc4: pv: Add BCM2711 pixel valves
>    drm/vc4: crtc: Add BCM2711 pixelvalves
>    drm/vc4: hdmi: Use debugfs private field
>    drm/vc4: hdmi: Move structure to header
>    drm/vc4: hdmi: rework connectors and encoders
>    drm/vc4: hdmi: Remove DDC argument to connector_init
>    drm/vc4: hdmi: Rename hdmi to vc4_hdmi
>    drm/vc4: hdmi: Move accessors to vc4_hdmi
>    drm/vc4: hdmi: Use local vc4_hdmi directly
>    drm/vc4: hdmi: Add container_of macros for encoders and connectors
>    drm/vc4: hdmi: Pass vc4_hdmi to CEC code
>    drm/vc4: hdmi: Retrieve the vc4_hdmi at unbind using our device
>    drm/vc4: hdmi: Remove vc4_dev hdmi pointer
>    drm/vc4: hdmi: Remove vc4_hdmi_connector
>    drm/vc4: hdmi: Introduce resource init and variant
>    drm/vc4: hdmi: Implement a register layout abstraction
>    drm/vc4: hdmi: Add reset callback
>    drm/vc4: hdmi: Add PHY init and disable function
>    drm/vc4: hdmi: Add PHY RNG enable / disable function
>    drm/vc4: hdmi: Add a CSC setup callback
>    drm/vc4: hdmi: Store the encoder type in the variant structure
>    drm/vc4: hdmi: Deal with multiple debugfs files
>    drm/vc4: hdmi: Move CEC init to its own function
>    drm/vc4: hdmi: Add CEC support flag
>    drm/vc4: hdmi: Remove unused CEC_CLOCK_DIV define
>    drm/vc4: hdmi: Rename drm_encoder pointer in mode_valid
>    drm/vc4: hdmi: Adjust HSM clock rate depending on pixel rate
>    drm/vc4: hdmi: Use clk_set_min_rate instead
>    drm/vc4: hdmi: Deal with multiple ALSA cards
>    drm/vc4: hdmi: Remove register dumps in enable
>    drm/vc4: hdmi: Always recenter the HDMI FIFO
>    drm/vc4: hdmi: Implement finer-grained hooks
>    drm/vc4: hdmi: Do the VID_CTL configuration at once
>    drm/vc4: hdmi: Switch to blank pixels when disabled
>    drm/vc4: hdmi: Support the BCM2711 HDMI controllers
>    dt-bindings: display: vc4: hdmi: Add BCM2711 HDMI controllers bindings
>    dt-bindings: display: vc4: Document BCM2711 VC5
>    drm/vc4: drv: Support BCM2711
>    ARM: dts: bcm2711: Enable the display pipeline
>
>   Documentation/devicetree/bindings/display/brcm,bcm2711-hdmi.yaml        |  109 +++++-
>   Documentation/devicetree/bindings/display/brcm,bcm2835-hvs.yaml         |   18 +-
>   Documentation/devicetree/bindings/display/brcm,bcm2835-pixelvalve0.yaml |    5 +-
>   Documentation/devicetree/bindings/display/brcm,bcm2835-vc4.yaml         |    1 +-
>   arch/arm/boot/dts/bcm2711-rpi-4-b.dts                                   |   46 ++-
>   arch/arm/boot/dts/bcm2711.dtsi                                          |  115 ++++-
>   drivers/gpu/drm/vc4/Makefile                                            |    1 +-
>   drivers/gpu/drm/vc4/vc4_crtc.c                                          |  338 +++++++++++----
>   drivers/gpu/drm/vc4/vc4_drv.c                                           |    5 +-
>   drivers/gpu/drm/vc4/vc4_drv.h                                           |   43 +-
>   drivers/gpu/drm/vc4/vc4_hdmi.c                                          | 1625 +++++++++++++++++++++++++++++++++++++++++++-----------------------------
>   drivers/gpu/drm/vc4/vc4_hdmi.h                                          |  183 ++++++++-
>   drivers/gpu/drm/vc4/vc4_hdmi_phy.c                                      |  520 +++++++++++++++++++++++-
>   drivers/gpu/drm/vc4/vc4_hdmi_regs.h                                     |  442 ++++++++++++++++++++-
>   drivers/gpu/drm/vc4/vc4_hvs.c                                           |  260 +++++++-----
>   drivers/gpu/drm/vc4/vc4_kms.c                                           |  225 +++++++++-
>   drivers/gpu/drm/vc4/vc4_plane.c                                         |  222 +++++++---
>   drivers/gpu/drm/vc4/vc4_regs.h                                          |  177 +++-----
>   drivers/gpu/drm/vc4/vc4_txp.c                                           |    4 +-
>   19 files changed, 3331 insertions(+), 1008 deletions(-)
>   create mode 100644 Documentation/devicetree/bindings/display/brcm,bcm2711-hdmi.yaml
>   create mode 100644 drivers/gpu/drm/vc4/vc4_hdmi.h
>   create mode 100644 drivers/gpu/drm/vc4/vc4_hdmi_phy.c
>   create mode 100644 drivers/gpu/drm/vc4/vc4_hdmi_regs.h
>
> base-commit: 5bdd2824d705fb8d339d6f96e464b907c9a1553d



More information about the linux-arm-kernel mailing list