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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Maxime,

On 7/9/20 2:41 AM, Maxime Ripard wrote:
> 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@xxxxxxxxxxxx
> Cc: devicetree@xxxxxxxxxxxxxxx
> Cc: Kamal Dasu <kdasu.kdev@xxxxxxxxx>
> Cc: linux-clk@xxxxxxxxxxxxxxx
> Cc: Michael Turquette <mturquette@xxxxxxxxxxxx>
> Cc: Philipp Zabel <p.zabel@xxxxxxxxxxxxxx>
> Cc: Rob Herring <robh+dt@xxxxxxxxxx>
> Cc: Stephen Boyd <sboyd@xxxxxxxxxx>
> 
> 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
> 

I tested it for stress test with reboot command repetitively
for verifying this patchset. It is well working.

Tested-by: Chanwoo Choi <cw00.choi@xxxxxxxxxxx>

-- 
Best Regards,
Chanwoo Choi
Samsung Electronics
_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/dri-devel



[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux