Skip to content

Add Synopsys DesignWare HDMI RX Controller and PHY drivers

Nelson Costa linux-devicetree linux-media lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest9 patches 21 repliesIn review

RFC v2 from the cover letter

- The original media Device Tree bindings was divided in two independent Device Trees:
* Device tree for PHYs e405/e406 in PHY dt bindings
* Device tree for HDMI RX Controller in media dt bindings
- Add OF graph ports connection model in the Device Trees (Thanks to Laurent Pinchart <[email protected]>)
- The HDMI RX Controller was adjusted in order to work with the new Device Trees Model:
* the "input-count" field was removed from original Device Tree and now the count is done based on port child count.
* Changed the way to get the phy node, removing the dependency as child node of Controller node
- Fix reported kernel test robot issues:
* Fix "warning: no previous prototype for 'dw_phy_eq_settings'"
* Fix "warning: integer literal is too large to be represented in type 'long', interpreting as 'unsigned long' per C89; this literal will have type 'long long' in C99 onwards [-Wc99-compat]"

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/9dt-bindings: phy: Document Synopsys DesignWare HDMI RX PHYs e405 and e406Documentation/devicetree/bindings/phy/snps,phy-dw-hdmi-e40x.yaml+93 -01 reply
2/9dt-bindings: media: Document Synopsys DesignWare HDMI RXDocumentation/devicetree/bindings/media/snps,dw-hdmi-rx.yaml+98 -02 replies
3/9MAINTAINERS: Add entry for Synopsys DesignWare HDMI driversMAINTAINERS+11 -00 replies
4/9phy: Add PHY standard HDMI opts to the PHY APIinclude/linux/phy/phy-hdmi.h include/linux/phy/phy.h+108 -10 replies
5/9phy: dwc: Add Synopsys DesignWare HDMI RX PHYs e405 and e406 Driverdrivers/phy/Kconfig drivers/phy/Makefile drivers/phy/dwc/Kconfig +6 more+1809 -02 replies
6/9media: platform: Add Synopsys DesignWare HDMI RX Controller Driverdrivers/media/platform/Kconfig drivers/media/platform/Makefile drivers/media/platform/dwc/Kconfig +4 more+3858 -04 replies
7/9media: v4l2-dv-timings: Add more CEA/CTA-861 video format timingsdrivers/media/v4l2-core/v4l2-dv-timings.c include/uapi/linux/v4l2-dv-timings.h+1733 -16 replies
8/9media: dwc: dw-hdmi-rx: Add support for Aspect Ratiodrivers/media/platform/dwc/dw-hdmi-rx.c+52 -22 replies
9/9media: dwc: dw-hdmi-rx: Add support for CECdrivers/media/platform/dwc/Kconfig drivers/media/platform/dwc/dw-hdmi-rx.c drivers/media/platform/dwc/dw-hdmi-rx.h+324 -24 replies

Reviews trailers per patch

1 of 9 patches has a Reviewed-by or Acked-by.

PatchRob Herring
1/9R-b
2/9
3/9
4/9
5/9
6/9
7/9
8/9
9/9

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v1 thread

Cover letter [PATCH 0/9] Add Synopsys DesignWare HDMI RX Controller and PHY drivers

This series implements support for the Synopsys DesignWare HDMI RX Controller and PHYs e405/e406 drivers, being compliant with standard HDMI 1.4 and HDMI 2.0.

The Controller + PHY pipeline can be integrated into a fully featured system that can be able to receive video up to 4k@60Hz with basic audio.

This solution is mainly composed by two modules: phy-dw-hdmi-e40x and dw-hdmi-rx.

phy-dw-hdmi-e40x: it's the PHY (Physical Layer) driver that implements support for Synopsys DesignWare e405 and e406 PHYs. It is responsible to configure the PHY and equalize it for the best settings, in order to receive and decode video to be delivered to the Controller. This driver is integrated in the PHY subsystem.
The main features of this module are:
- Equalizer algorithm that chooses the phy best settings according to the detected HDMI cable characteristics
- Support for scrambling
- Support for color depth up to 48bpp
- Support for HDMI 2.0 modes up to 6G (HDMI 4k@60Hz).

dw-hdmi-rx: it's the Controller driver that implements support for Synopsys DesignWare HDMI RX Controller. It is responsible to manage and handle the PHY (through the PHY API) and the Controller configurations in order to configure the video and audio pipeline.
This driver is implemented as a standard V4L2 subdevice.
The main features of this module are:
- Support for scrambling
- Support for color depth up to 48bpp
- Support for HDMI 2.0 modes up to 6G (HDMI 4k@60Hz)
- Support for RGB, YCC444, YCC422 and YCC420
- Support for basic audio (LPCM 2ch, 32KHz/44.1KHz/48KHz, 16bit)
- Support for Aspect Ratio
- Support for CEC
- Internal state machine that reconfigures phy and controller
- JTAG communication with phy
- Inter-module communication with phy driver:
* through the PHY API using the phy reference "hdmi-phy"
* through the callbacks that phy dwc driver needs.
- Debug write/read ioctls

NOTES: This patch series has two specific patches (Patch [4/8] and [7/8]) one for the PHY API and the other for v4l2-dv-timings.

Patch [4/8] adds phy standard HDMI opts to the phy API that contributes for the PHY subsystem, which allows to integrate the PHY driver in the PHY subsystem using this new HDMI opts structure, because there are hdmi options that are needed to pass between the Controller and PHY drivers using the standard API.

Patch [7/8] adds more CEA/CTA-861 video format timings that contributes to the v4l2 media subsystem, which in our case is needed to provide information about the Aspect Ratio.

PATCH v1:
- Fix "undefined reference to `hdmi_infoframe_unpack'", adding config HDMI selectable for config VIDEO_DWC_HDMI_RX.

- Add MEDIA_CONTROLLER and VIDEO_V4L2_SUBDEV_API also selectable for config VIDEO_DWC_HDMI_RX.

RFC v2:
- The original media Device Tree bindings was divided in two independent Device Trees:
* Device tree for PHYs e405/e406 in PHY dt bindings
* Device tree for HDMI RX Controller in media dt bindings
- Add OF graph ports connection model in the Device Trees (Thanks to Laurent Pinchart <[email protected]>)
- The HDMI RX Controller was adjusted in order to work with the new Device Trees Model:
* the "input-count" field was removed from original Device Tree and now the count is done based on port child count.
* Changed the way to get the phy node, removing the dependency as child node of Controller node
- Fix reported kernel test robot issues:
* Fix "warning: no previous prototype for 'dw_phy_eq_settings'"
* Fix "warning: integer literal is too large to be represented in type 'long', interpreting as 'unsigned long' per C89; this literal will have type 'long long' in C99 onwards [-Wc99-compat]"

- Fix phy power off/on issue when the system startups without the cable connected.
- Fix "CHECK: Comparison to NULL could be written "of_device_get_match_data"".

Nelson Costa (9):
dt-bindings: phy: Document Synopsys DesignWare HDMI RX PHYs e405 and

    e406

dt-bindings: media: Document Synopsys DesignWare HDMI RX
MAINTAINERS: Add entry for Synopsys DesignWare HDMI drivers
phy: Add PHY standard HDMI opts to the PHY API
phy: dwc: Add Synopsys DesignWare HDMI RX PHYs e405 and e406 Driver
media: platform: Add Synopsys DesignWare HDMI RX Controller Driver
media: v4l2-dv-timings: Add more CEA/CTA-861 video format timings
media: dwc: dw-hdmi-rx: Add support for Aspect Ratio
media: dwc: dw-hdmi-rx: Add support for CEC

 .../devicetree/bindings/media/snps,dw-hdmi-rx.yaml |   98 +
 .../bindings/phy/snps,phy-dw-hdmi-e40x.yaml        |   93 +
 MAINTAINERS                                        |   11 +
 drivers/media/platform/Kconfig                     |    2 +
 drivers/media/platform/Makefile                    |    1 +
 drivers/media/platform/dwc/Kconfig                 |   23 +
 drivers/media/platform/dwc/Makefile                |    3 +
 drivers/media/platform/dwc/dw-hdmi-rx.c            | 3542 ++++++++++++++++++++
 drivers/media/platform/dwc/dw-hdmi-rx.h            |  533 +++
 drivers/media/v4l2-core/v4l2-dv-timings.c          |  139 +
 drivers/phy/Kconfig                                |    1 +
 drivers/phy/Makefile                               |    1 +
 drivers/phy/dwc/Kconfig                            |   20 +
 drivers/phy/dwc/Makefile                           |    9 +
 drivers/phy/dwc/phy-dw-hdmi-e405.c                 |  497 +++
 drivers/phy/dwc/phy-dw-hdmi-e406.c                 |  475 +++
 drivers/phy/dwc/phy-dw-hdmi-e40x-core.c            |  514 +++
 drivers/phy/dwc/phy-dw-hdmi-e40x.h                 |  219 ++
 include/linux/phy/dwc/dw-hdmi-phy-pdata.h          |   73 +
 include/linux/phy/phy-hdmi.h                       |  102 +
 include/linux/phy/phy.h                            |    7 +-
 include/media/dwc/dw-hdmi-rx-pdata.h               |  126 +
 include/uapi/linux/v4l2-dv-timings.h               | 1595 ++++++++-
 23 files changed, 8082 insertions(+), 2 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/media/snps,dw-hdmi-rx.yaml
 create mode 100644 Documentation/devicetree/bindings/phy/snps,phy-dw-hdmi-e40x.yaml
 create mode 100644 drivers/media/platform/dwc/Kconfig
 create mode 100644 drivers/media/platform/dwc/Makefile
 create mode 100644 drivers/media/platform/dwc/dw-hdmi-rx.c
 create mode 100644 drivers/media/platform/dwc/dw-hdmi-rx.h
 create mode 100644 drivers/phy/dwc/Kconfig
 create mode 100644 drivers/phy/dwc/Makefile
 create mode 100644 drivers/phy/dwc/phy-dw-hdmi-e405.c
 create mode 100644 drivers/phy/dwc/phy-dw-hdmi-e406.c
 create mode 100644 drivers/phy/dwc/phy-dw-hdmi-e40x-core.c
 create mode 100644 drivers/phy/dwc/phy-dw-hdmi-e40x.h
 create mode 100644 include/linux/phy/dwc/dw-hdmi-phy-pdata.h
 create mode 100644 include/linux/phy/phy-hdmi.h
 create mode 100644 include/media/dwc/dw-hdmi-rx-pdata.h
Signature · 1 line
2.7.4