drm: sun8i: Add DE2 HDMI video support
Subsystems (5)
v6 cover drm: sun8i: Add DE2 HDMI video support
This patchset series adds HDMI video support to the Allwinner sun8i SoCs which include the display engine 2 (DE2). The driver contains the code for the A83T and H3, but it could be used/extended for other SoCs as the A64, H2 and H5.
v6:
- remove audio support (other patchset to come)
- use DRM modeset data for HDMI configuration (thanks to Jernej Škrabec)
- more meaningfull register names
- use a mutex for DE I/O protection
- merge DE and plane into one file
- don't activate the video hardware when video not started (Maxime Ripard)
- remove 'type = "video" in DT graph ports
(Rob Herring)
- change the I/O accesses by #define instead of struct (Maxime Ripard, André Przywara)
- remove pm functions (Maxime Ripard)
- set the pll-de/de clocks in the DT (Maxime Ripard)
- use platform_get_irq instead of irq_of_parse_and_map (Maxime Ripard)
- rename sunxi to sun8i (Maxime Ripard)
- fix coding style errors (Maxime Ripard)
- subclass the drm structure in private data (Daniel Vetter)
- move drm_dev_register at end of init (Daniel Vetter)
v5:
- add overlay plane
- add audio support
- add support for the A83T
- add back the HDMI driver
- many bug fixes
v4:
- drivers/clk/sunxi/Makefile was missing (Emil Velikov)
v3:
- add the hardware cursor
- simplify and fix the DE2 init sequences
- generation for all SUNXI SoCs (Andre Przywara)
v2:
- remove the HDMI driver
- remarks from Chen-Yu Tsai and Russell King
- DT documentation added
Jean-Francois Moine (5):
drm: sun8i: Add a basic DRM driver for Allwinner DE2
drm: sunxi: add HDMI video support to A83T and H3
ARM: dts: sun8i-h3: add HDMI video nodes
ARM: dts: sun8i-h3: Add HDMI video to the Banana Pi M2+
ARM: dts: sun8i-h3: Add HDMI video to the Orange PI 2
.../devicetree/bindings/display/sunxi/hdmi.txt | 53 ++ .../bindings/display/sunxi/sun8i-de2.txt | 83 ++ arch/arm/boot/dts/sun8i-h3-bananapi-m2-plus.dts | 13 + arch/arm/boot/dts/sun8i-h3-orangepi-2.dts | 13 + arch/arm/boot/dts/sun8i-h3.dtsi | 51 ++ drivers/gpu/drm/Kconfig | 2 + drivers/gpu/drm/Makefile | 1 + drivers/gpu/drm/sun8i/Kconfig | 26 + drivers/gpu/drm/sun8i/Makefile | 9 + drivers/gpu/drm/sun8i/de2_crtc.c | 440 +++++++++++ drivers/gpu/drm/sun8i/de2_crtc.h | 50 ++ drivers/gpu/drm/sun8i/de2_drm.h | 48 ++ drivers/gpu/drm/sun8i/de2_drv.c | 379 ++++++++++ drivers/gpu/drm/sun8i/de2_hdmi.c | 394 ++++++++++ drivers/gpu/drm/sun8i/de2_hdmi.h | 51 ++ drivers/gpu/drm/sun8i/de2_hdmi_io.c | 839 +++++++++++++++++++++ drivers/gpu/drm/sun8i/de2_plane.c | 712 +++++++++++++++++ 17 files changed, 3164 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/sunxi/hdmi.txt create mode 100644 Documentation/devicetree/bindings/display/sunxi/sun8i-de2.txt create mode 100644 drivers/gpu/drm/sun8i/Kconfig create mode 100644 drivers/gpu/drm/sun8i/Makefile create mode 100644 drivers/gpu/drm/sun8i/de2_crtc.c create mode 100644 drivers/gpu/drm/sun8i/de2_crtc.h create mode 100644 drivers/gpu/drm/sun8i/de2_drm.h create mode 100644 drivers/gpu/drm/sun8i/de2_drv.c create mode 100644 drivers/gpu/drm/sun8i/de2_hdmi.c create mode 100644 drivers/gpu/drm/sun8i/de2_hdmi.h create mode 100644 drivers/gpu/drm/sun8i/de2_hdmi_io.c create mode 100644 drivers/gpu/drm/sun8i/de2_plane.c
Signature · 6 lines
2.10.2 -- You received this message because you are subscribed to the Google Groups "linux-sunxi" group. To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/[email protected] For more options, visit https://groups.google.com/d/optout.
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH v6 1/5 drm: sun8i: Add a basic DRM driver for Allwinner DE2
Allwinner's recent SoCs, as A64, A83T and H3, contain a new display engine, DE2.
This patch adds a DRM video driver for this device.
--- .../bindings/display/sunxi/sun8i-de2.txt | 83 +++ drivers/gpu/drm/Kconfig | 2 + drivers/gpu/drm/Makefile | 1 + drivers/gpu/drm/sun8i/Kconfig | 19 + drivers/gpu/drm/sun8i/Makefile | 7 + drivers/gpu/drm/sun8i/de2_crtc.c | 440 +++++++++++++ drivers/gpu/drm/sun8i/de2_crtc.h | 50 ++ drivers/gpu/drm/sun8i/de2_drm.h | 48 ++ drivers/gpu/drm/sun8i/de2_drv.c | 379 +++++++++++ drivers/gpu/drm/sun8i/de2_plane.c | 712 +++++++++++++++++++++ 10 files changed, 1741 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/sunxi/sun8i-de2.txt create mode 100644 drivers/gpu/drm/sun8i/Kconfig create mode 100644 drivers/gpu/drm/sun8i/Makefile create mode 100644 drivers/gpu/drm/sun8i/de2_crtc.c create mode 100644 drivers/gpu/drm/sun8i/de2_crtc.h create mode 100644 drivers/gpu/drm/sun8i/de2_drm.h create mode 100644 drivers/gpu/drm/sun8i/de2_drv.c create mode 100644 drivers/gpu/drm/sun8i/de2_plane.c
Documentation/devicetree/bindings/display/sunxi/sun8i-de2.txt new file +83 -0
@@ -0,0 +1,83 @@ +Allwinner sun8i Display Engine 2 subsystem +========================================== + +The Allwinner DE2 subsystem contains a display controller (DE2), +one or two LCD controllers (TCON) and their external interfaces. + +Display controller +================== + +Required properties: + +- compatible: value should be one of the following + "allwinner,sun8i-a83t-display-engine" + "allwinner,sun8i-h3-display-engine" + +- clocks: must include clock specifiers corresponding to entries in the + clock-names property. + +- clock-names: must contain + "gate": DE bus gate + "clock": DE clock + +- resets: phandle to the reset of the device + +- ports: phandle's to the LCD ports + +LCD controller +============== + +Required properties: + +- compatible: should be + "allwinner,sun8i-a83t-tcon" + +- clocks: must include clock specifiers corresponding to entries in the + clock-names property. + +- clock-names: must contain + "gate": TCON bus gate + "clock": TCON pixel clock + +- resets: phandle to the reset of the device + +- port: port node with endpoint definitions as defined in + Documentation/devicetree/bindings/media/video-interfaces.txt + +Example: + + de: de-controller@01000000 { + compatible = "allwinner,sun8i-h3-display-engine"; + ... + clocks = <&&ccu CLK_BUS_DE>, <&ccu CLK_DE>; + clock-names = "gate", "clock"; + resets = <&ccu RST_BUS_DE>; + ports = <&lcd0_p>; + }; + + lcd0: lcd-controller@01c0c000 { + compatible = "allwinner,sun8i-a83t-tcon"; + ... + clocks = <&ccu CLK_BUS_TCON0>, <&ccu CLK_TCON0>; + clock-names = "gate", "clock"; + resets = <&ccu RST_BUS_TCON0>; + #address-cells = <1>; + #size-cells = <0>; + lcd0_p: port { + lcd0_ep: endpoint { + remote-endpoint = <&hdmi_ep>; + }; + }; + }; + + hdmi: hdmi@01ee0000 { + ... + #address-cells = <1>; + #size-cells = <0>; + port { + hdmi_ep: endpoint { + remote-endpoint = <&lcd0_ep>; + }; + }; + }; +
drivers/gpu/drm/Kconfig +2 -0
@@ -202,6 +202,8 @@ source "drivers/gpu/drm/shmobile/Kconfig" source "drivers/gpu/drm/sun4i/Kconfig" +source "drivers/gpu/drm/sun8i/Kconfig" + source "drivers/gpu/drm/omapdrm/Kconfig" source "drivers/gpu/drm/tilcdc/Kconfig"
drivers/gpu/drm/Makefile +1 -0
@@ -72,6 +72,7 @@ obj-$(CONFIG_DRM_RCAR_DU) += rcar-du/ obj-$(CONFIG_DRM_SHMOBILE) +=shmobile/ obj-y += omapdrm/ obj-$(CONFIG_DRM_SUN4I) += sun4i/ +obj-$(CONFIG_DRM_SUN8I) += sun8i/ obj-y += tilcdc/ obj-$(CONFIG_DRM_QXL) += qxl/ obj-$(CONFIG_DRM_BOCHS) += bochs/
drivers/gpu/drm/sun8i/Kconfig new file +19 -0
@@ -0,0 +1,19 @@ +# +# Allwinner DE2 Video configuration +# + +config DRM_SUN8I + bool + +config DRM_SUN8I_DE2 + tristate "Support for Allwinner Video with DE2 interface" + depends on DRM && OF + depends on ARCH_SUNXI || COMPILE_TEST + select DRM_GEM_CMA_HELPER + select DRM_KMS_CMA_HELPER + select DRM_KMS_HELPER + select DRM_SUN8I + help + Choose this option if your Allwinner chipset has the DE2 interface + as the A64, A83T and H3. If M is selected the module will be called + sun8i-de2-drm.
drivers/gpu/drm/sun8i/Makefile new file +7 -0
@@ -0,0 +1,7 @@ +# +# Makefile for Allwinner's sun8i DRM device driver +# + +sun8i-de2-drm-objs := de2_drv.o de2_crtc.o de2_plane.o + +obj-$(CONFIG_DRM_SUN8I_DE2) += sun8i-de2-drm.o
drivers/gpu/drm/sun8i/de2_crtc.c new file +440 -0
440 lines not on this page · raw message
drivers/gpu/drm/sun8i/de2_crtc.h new file +50 -0
50 lines not on this page · raw message
drivers/gpu/drm/sun8i/de2_drm.h new file +48 -0
48 lines not on this page · raw message
drivers/gpu/drm/sun8i/de2_drv.c new file +379 -0
379 lines not on this page · raw message
drivers/gpu/drm/sun8i/de2_plane.c new file +712 -0
712 lines not on this page · raw message
Signature · 6 lines
2.10.2 -- You received this message because you are subscribed to the Google Groups "linux-sunxi" group. To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/[email protected] For more options, visit https://groups.google.com/d/optout.
Rob Herring
maintainerRe: [PATCH v6 1/5] drm: sun8i: Add a basic DRM driver for Allwinner DE2
Quoted 7 lines · Jean-Francois Moine
Allwinner's recent SoCs, as A64, A83T and H3, contain a new display engine, DE2.
This patch adds a DRM video driver for this device.Signed-off-by Jean-Francois Moine <[email protected]>--- .../bindings/display/sunxi/sun8i-de2.txt | 83 +++
It's preferred to split bindings to a separate patch.
Quoted 40 lines
drivers/gpu/drm/Kconfig | 2 + drivers/gpu/drm/Makefile | 1 + drivers/gpu/drm/sun8i/Kconfig | 19 + drivers/gpu/drm/sun8i/Makefile | 7 + drivers/gpu/drm/sun8i/de2_crtc.c | 440 +++++++++++++ drivers/gpu/drm/sun8i/de2_crtc.h | 50 ++ drivers/gpu/drm/sun8i/de2_drm.h | 48 ++ drivers/gpu/drm/sun8i/de2_drv.c | 379 +++++++++++ drivers/gpu/drm/sun8i/de2_plane.c | 712 +++++++++++++++++++++ 10 files changed, 1741 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/sunxi/sun8i-de2.txt create mode 100644 drivers/gpu/drm/sun8i/Kconfig create mode 100644 drivers/gpu/drm/sun8i/Makefile create mode 100644 drivers/gpu/drm/sun8i/de2_crtc.c create mode 100644 drivers/gpu/drm/sun8i/de2_crtc.h create mode 100644 drivers/gpu/drm/sun8i/de2_drm.h create mode 100644 drivers/gpu/drm/sun8i/de2_drv.c create mode 100644 drivers/gpu/drm/sun8i/de2_plane.cDocumentation/devicetree/bindings/display/sunxi/sun8i-de2.txt new file +15
-0@@ -0,0 +1,83 @@ +Allwinner sun8i Display Engine 2 subsystem +========================================== + +The Allwinner DE2 subsystem contains a display controller (DE2), +one or two LCD controllers (TCON) and their external interfaces. + +Display controller +================== + +Required properties: + +- compatible: value should be one of the following + "allwinner,sun8i-a83t-display-engine" + "allwinner,sun8i-h3-display-engine" +
Documentation/devicetree/bindings/display/sunxi/sun8i-de2.txt line 25
Quoted 10 lines
Documentation/devicetree/bindings/display/sunxi/sun8i-de2.txt new file +10
-0+- clocks: must include clock specifiers corresponding to entries in the + clock-names property. + +- clock-names: must contain + "gate": DE bus gate + "clock": DE clock + +- resets: phandle to the reset of the device + +- ports: phandle's to the LCD ports
This should use OF graph to describe the connection from the DE to the LCD controllers like the sun4i binding does.
No registers for the DE?
Quoted 10 lines
Documentation/devicetree/bindings/display/sunxi/sun8i-de2.txt new file +10
-0+ +LCD controller +============== + +Required properties: + +- compatible: should be + "allwinner,sun8i-a83t-tcon" + +- clocks: must include clock specifiers corresponding to entries in the
Documentation/devicetree/bindings/display/sunxi/sun8i-de2.txt line 45
Quoted 10 lines
Documentation/devicetree/bindings/display/sunxi/sun8i-de2.txt new file +10
-0+ clock-names property. + +- clock-names: must contain + "gate": TCON bus gate + "clock": TCON pixel clock + +- resets: phandle to the reset of the device + +- port: port node with endpoint definitions as defined in + Documentation/devicetree/bindings/media/video-interfaces.txt
Need to specify how many ports and endpoints.
Documentation/devicetree/bindings/display/sunxi/sun8i-de2.txt line 51
Quoted 6 lines
Documentation/devicetree/bindings/display/sunxi/sun8i-de2.txt new file +6
-0+ +Example: + + de: de-controller at 01000000 { + compatible = "allwinner,sun8i-h3-display-engine"; + ...
What are you not showing?
Documentation/devicetree/bindings/display/sunxi/sun8i-de2.txt line 60
Quoted 9 lines
Documentation/devicetree/bindings/display/sunxi/sun8i-de2.txt new file +9
-0+ clocks = <&&ccu CLK_BUS_DE>, <&ccu CLK_DE>; + clock-names = "gate", "clock"; + resets = <&ccu RST_BUS_DE>; + ports = <&lcd0_p>; + }; + + lcd0: lcd-controller at 01c0c000 { + compatible = "allwinner,sun8i-a83t-tcon"; + ...
ditto.
Quoted 23 lines
Documentation/devicetree/bindings/display/sunxi/sun8i-de2.txt new file +23
-0+ clocks = <&ccu CLK_BUS_TCON0>, <&ccu CLK_TCON0>; + clock-names = "gate", "clock"; + resets = <&ccu RST_BUS_TCON0>; + #address-cells = <1>; + #size-cells = <0>; + lcd0_p: port { + lcd0_ep: endpoint { + remote-endpoint = <&hdmi_ep>; + }; + }; + }; + + hdmi: hdmi at 01ee0000 { + ... + #address-cells = <1>; + #size-cells = <0>; + port { + hdmi_ep: endpoint { + remote-endpoint = <&lcd0_ep>; + }; + }; + }; +
PATCH v6 2/5 drm: sun8i: add HDMI video support to A83T and H3
In reply to a message not in the archiveThis patch adds a HDMI video driver to the Allwinner's SoCs A83T and H3.
--- .../devicetree/bindings/display/sunxi/hdmi.txt | 53 ++ drivers/gpu/drm/sun8i/Kconfig | 7 + drivers/gpu/drm/sun8i/Makefile | 2 + drivers/gpu/drm/sun8i/de2_hdmi.c | 394 ++++++++++ drivers/gpu/drm/sun8i/de2_hdmi.h | 51 ++ drivers/gpu/drm/sun8i/de2_hdmi_io.c | 839 +++++++++++++++++++++ 6 files changed, 1346 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/sunxi/hdmi.txt create mode 100644 drivers/gpu/drm/sun8i/de2_hdmi.c create mode 100644 drivers/gpu/drm/sun8i/de2_hdmi.h create mode 100644 drivers/gpu/drm/sun8i/de2_hdmi_io.c
Documentation/devicetree/bindings/display/sunxi/hdmi.txt new file +53 -0
@@ -0,0 +1,53 @@ +Allwinner HDMI Transmitter +========================== + +The Allwinner HDMI transmitters are included in the SoCs. +They support audio and video. + +Required properties: + - #address-cells : should be <1> + - #size-cells : should be <0> + - compatible : should be one of + "allwinner,sun8i-a83t-hdmi" + "allwinner,sun8i-h3-hdmi" + - clocks : phandles to the HDMI clocks as described in + Documentation/devicetree/bindings/clock/clock-bindings.txt + - clock-names : must be + "gate" : bus gate + "clock" : streaming clock + "ddc-clock" : DDC clock + - resets : One or two phandles to the HDMI resets + - reset-names : when 2 phandles, must be + "hdmi0" and "hdmi1" + +Required nodes: + - port: Audio and video input port nodes with endpoint definitions + as defined in Documentation/devicetree/bindings/graph.txt. + port@0 is video and port@1 is audio. + +Example: + + hdmi: hdmi@01ee0000 { + compatible = "allwinner,sun8i-a83t-hdmi"; + reg = <0x01ee0000 0x20000>; + clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI>, + <&ccu CLK_HDMI_DDC>; + clock-names = "gate", "clock", "ddc-clock"; + resets = <&ccu RST_HDMI0>, <&ccu RST_HDMI1>; + reset-names = "hdmi0", "hdmi1"; + ... + #address-cells = <1>; + #size-cells = <0>; + port@0 { /* video */ + reg = <0>; + hdmi_lcd1: endpoint { + remote-endpoint = <&lcd1_hdmi>; + }; + }; + port@1 { /* audio */ + reg = <1>; + hdmi_i2s2: endpoint { + remote-endpoint = <&i2s2_hdmi>; + }; + }; + };
drivers/gpu/drm/sun8i/Kconfig +7 -0
@@ -17,3 +17,10 @@ config DRM_SUN8I_DE2 Choose this option if your Allwinner chipset has the DE2 interface as the A64, A83T and H3. If M is selected the module will be called sun8i-de2-drm. + +config DRM_SUN8I_DE2_HDMI + tristate "Support for DE2 HDMI" + depends on DRM_SUN8I_DE2 + help + Choose this option if you use want HDMI on DE2. + If M is selected the module will be called sun8i-de2-hdmi.
drivers/gpu/drm/sun8i/Makefile +2 -0
@@ -3,5 +3,7 @@ # sun8i-de2-drm-objs := de2_drv.o de2_crtc.o de2_plane.o +sun8i-de2-hdmi-objs := de2_hdmi.o de2_hdmi_io.o obj-$(CONFIG_DRM_SUN8I_DE2) += sun8i-de2-drm.o +obj-$(CONFIG_DRM_SUN8I_DE2_HDMI) += sun8i-de2-hdmi.o
drivers/gpu/drm/sun8i/de2_hdmi.c new file +394 -0
394 lines not on this page · raw message
drivers/gpu/drm/sun8i/de2_hdmi.h new file +51 -0
51 lines not on this page · raw message
drivers/gpu/drm/sun8i/de2_hdmi_io.c new file +839 -0
839 lines not on this page · raw message
Signature · 6 lines
2.10.2 -- You received this message because you are subscribed to the Google Groups "linux-sunxi" group. To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/[email protected] For more options, visit https://groups.google.com/d/optout.
A message that is not in the archive (sent off-list or not yet received): cea6a5397664213c6a917028ec2e429d25972490.1479641523.git.moinejf-GANU6spQydw@public.gmane.org
Re: [PATCH v6 2/5] drm: sun8i: add HDMI video support to A83T and H3
Quoted 38 lines · Jean-Francois Moine
This patch adds a HDMI video driver to the Allwinner's SoCs A83T and H3.
Signed-off-by Jean-Francois Moine <[email protected]>--- .../devicetree/bindings/display/sunxi/hdmi.txt | 53 ++ drivers/gpu/drm/sun8i/Kconfig | 7 + drivers/gpu/drm/sun8i/Makefile | 2 + drivers/gpu/drm/sun8i/de2_hdmi.c | 394 ++++++++++ drivers/gpu/drm/sun8i/de2_hdmi.h | 51 ++ drivers/gpu/drm/sun8i/de2_hdmi_io.c | 839 +++++++++++++++++++++ 6 files changed, 1346 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/sunxi/hdmi.txt create mode 100644 drivers/gpu/drm/sun8i/de2_hdmi.c create mode 100644 drivers/gpu/drm/sun8i/de2_hdmi.h create mode 100644 drivers/gpu/drm/sun8i/de2_hdmi_io.cDocumentation/devicetree/bindings/display/sunxi/hdmi.txt new file +16
-0@@ -0,0 +1,53 @@ +Allwinner HDMI Transmitter +========================== + +The Allwinner HDMI transmitters are included in the SoCs. +They support audio and video. + +Required properties: + - #address-cells : should be <1> + - #size-cells : should be <0> + - compatible : should be one of + "allwinner,sun8i-a83t-hdmi" + "allwinner,sun8i-h3-hdmi" + - clocks : phandles to the HDMI clocks as described in + Documentation/devicetree/bindings/clock/clock-bindings.txt + - clock-names : must be + "gate" : bus gate
Documentation/devicetree/bindings/display/sunxi/hdmi.txt line 26
Quoted 10 lines
Documentation/devicetree/bindings/display/sunxi/hdmi.txt new file +10
-0+ "clock" : streaming clock + "ddc-clock" : DDC clock + - resets : One or two phandles to the HDMI resets + - reset-names : when 2 phandles, must be + "hdmi0" and "hdmi1" + +Required nodes: + - port: Audio and video input port nodes with endpoint definitions + as defined in Documentation/devicetree/bindings/graph.txt. + port@0 is video and port@1 is audio.
This should probably also have an output port to the hdmi-connector binding. It is not needed so much if this block handles DDC and HPD itself, but if those are a separate I2C controller and GPIO, respectively, then you need it for sure. There's also power on the connector or other connectors like muxed on Type-C.
Documentation/devicetree/bindings/display/sunxi/hdmi.txt line 38
Quoted 12 lines
Documentation/devicetree/bindings/display/sunxi/hdmi.txt new file +12
-0+ +Example: + + hdmi: hdmi@01ee0000 { + compatible = "allwinner,sun8i-a83t-hdmi"; + reg = <0x01ee0000 0x20000>; + clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI>, + <&ccu CLK_HDMI_DDC>; + clock-names = "gate", "clock", "ddc-clock"; + resets = <&ccu RST_HDMI0>, <&ccu RST_HDMI1>; + reset-names = "hdmi0", "hdmi1"; + ...
Please show all properties in example.
Quoted 15 lines
Documentation/devicetree/bindings/display/sunxi/hdmi.txt new file +15
-0+ #address-cells = <1>; + #size-cells = <0>; + port@0 { /* video */ + reg = <0>; + hdmi_lcd1: endpoint { + remote-endpoint = <&lcd1_hdmi>; + }; + }; + port@1 { /* audio */ + reg = <1>; + hdmi_i2s2: endpoint { + remote-endpoint = <&i2s2_hdmi>; + }; + }; + };
PATCH v6 3/5 ARM: dts: sun8i-h3: add HDMI video nodes
In reply to a message not in the archive--- arch/arm/boot/dts/sun8i-h3.dtsi | 51 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+)
arch/arm/boot/dts/sun8i-h3.dtsi +51 -0
@@ -140,6 +140,16 @@ #size-cells = <1>; ranges; + de: de-controller@01000000 { + compatible = "allwinner,sun8i-h3-display-engine"; + reg = <0x01000000 0x400000>; + clocks = <&ccu CLK_BUS_DE>, <&ccu CLK_DE>; + clock-names = "bus", "clock"; + resets = <&ccu RST_BUS_DE>; + ports = <&lcd0_p>; + status = "disabled"; + }; + dma: dma-controller@01c02000 { compatible = "allwinner,sun8i-h3-dma"; reg = <0x01c02000 0x1000>;
@@ -149,6 +159,23 @@ #dma-cells = <1>; }; + lcd0: lcd-controller@01c0c000 { + compatible = "allwinner,sun8i-a83t-tcon"; + reg = <0x01c0c000 0x400>; + clocks = <&ccu CLK_BUS_TCON0>, <&ccu CLK_TCON0>; + clock-names = "bus", "clock"; + resets = <&ccu RST_BUS_TCON0>; + interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>; + status = "disabled"; + #address-cells = <1>; + #size-cells = <0>; + lcd0_p: port { + lcd0_hdmi: endpoint { + remote-endpoint = <&hdmi_lcd0>; + }; + }; + }; + mmc0: mmc@01c0f000 { compatible = "allwinner,sun7i-a20-mmc"; reg = <0x01c0f000 0x1000>;
@@ -314,6 +341,11 @@ clock-names = "hosc", "losc"; #clock-cells = <1>; #reset-cells = <1>; + + assigned-clocks = <&ccu CLK_PLL_DE>, + <&ccu CLK_DE>; + assigned-clock-rates = <864000000>, + <432000000>; }; pio: pinctrl@01c20800 {
@@ -564,6 +596,25 @@ interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; }; + hdmi: hdmi@01ee0000 { + compatible = "allwinner,sun8i-h3-hdmi"; + reg = <0x01ee0000 0x20000>; + clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI>, + <&ccu CLK_HDMI_DDC>; + clock-names = "bus", "clock", "ddc-clock"; + resets = <&ccu RST_BUS_HDMI0>, <&ccu RST_BUS_HDMI1>; + reset-names = "hdmi0", "hdmi1"; + status = "disabled"; + #address-cells = <1>; + #size-cells = <0>; + port@0 { /* video */ + reg = <0>; + hdmi_lcd0: endpoint { + remote-endpoint = <&lcd0_hdmi>; + }; + }; + }; + rtc: rtc@01f00000 { compatible = "allwinner,sun6i-a31-rtc"; reg = <0x01f00000 0x54>;
Signature · 1 line
2.10.2
A message that is not in the archive (sent off-list or not yet received): cdf50b8433e2d9a053e35f8788bfcd5d41504312.1479641523.git.moinejf-GANU6spQydw@public.gmane.org
Re: [PATCH v6 3/5] ARM: dts: sun8i-h3: add HDMI video nodes
20.11.2016, 20:07, "Jean-Francois Moine" <[email protected]>:
Quoted 51 lines
Signed-off-by Jean-Francois Moine <[email protected]>---
arch/arm/boot/dts/sun8i-h3.dtsi | 51 +++++++++++++++++++++++++++++++++++++++++1 file changed, 51 insertions(+)arch/arm/boot/dts/sun8i-h3.dtsi +27
-0@@ -140,6 +140,16 @@ #size-cells = <1>; ranges; + de: de-controller@01000000 { + compatible = "allwinner,sun8i-h3-display-engine"; + reg = <0x01000000 0x400000>; + clocks = <&ccu CLK_BUS_DE>, <&ccu CLK_DE>; + clock-names = "bus", "clock"; + resets = <&ccu RST_BUS_DE>; + ports = <&lcd0_p>; + status = "disabled"; + }; + dma: dma-controller@01c02000 { compatible = "allwinner,sun8i-h3-dma"; reg = <0x01c02000 0x1000>;@@ -149,6 +159,23 @@ #dma-cells = <1>; }; + lcd0: lcd-controller@01c0c000 { + compatible = "allwinner,sun8i-a83t-tcon"; + reg = <0x01c0c000 0x400>; + clocks = <&ccu CLK_BUS_TCON0>, <&ccu CLK_TCON0>; + clock-names = "bus", "clock"; + resets = <&ccu RST_BUS_TCON0>; + interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>; + status = "disabled"; + #address-cells = <1>; + #size-cells = <0>; + lcd0_p: port { + lcd0_hdmi: endpoint { + remote-endpoint = <&hdmi_lcd0>; + }; + }; + }; + mmc0: mmc@01c0f000 { compatible = "allwinner,sun7i-a20-mmc"; reg = <0x01c0f000 0x1000>;
arch/arm/boot/dts/sun8i-h3.dtsi line 345
Quoted 5 lines
arch/arm/boot/dts/sun8i-h3.dtsi +2
-0@@ -314,6 +341,11 @@ clock-names = "hosc", "losc"; #clock-cells = <1>; #reset-cells = <1>; + + assigned-clocks = <&ccu CLK_PLL_DE>,
Cannot get the patch built on 4.9-rc, as CLK_PLL_DE is not an exported clock.
Only CLK_DE is exported.
Quoted 39 lines
arch/arm/boot/dts/sun8i-h3.dtsi +22
-1+ <&ccu CLK_DE>; + assigned-clock-rates = <864000000>, + <432000000>; }; pio: pinctrl@01c20800 {@@ -564,6 +596,25 @@ interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; }; + hdmi: hdmi@01ee0000 { + compatible = "allwinner,sun8i-h3-hdmi"; + reg = <0x01ee0000 0x20000>; + clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI>, + <&ccu CLK_HDMI_DDC>; + clock-names = "bus", "clock", "ddc-clock"; + resets = <&ccu RST_BUS_HDMI0>, <&ccu RST_BUS_HDMI1>; + reset-names = "hdmi0", "hdmi1"; + status = "disabled"; + #address-cells = <1>; + #size-cells = <0>; + port@0 { /* video */ + reg = <0>; + hdmi_lcd0: endpoint { + remote-endpoint = <&lcd0_hdmi>; + }; + }; + }; + rtc: rtc@01f00000 { compatible = "allwinner,sun6i-a31-rtc"; reg = <0x01f00000 0x54>; --2.10.2
--
You received this message because you are subscribed to the Google Groups "linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
Signature · 3 lines
You received this message because you are subscribed to the Google Groups "linux-sunxi" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
A message that is not in the archive (sent off-list or not yet received): [email protected]
Re: [PATCH v6 3/5] ARM: dts: sun8i-h3: add HDMI video nodes
Quoted 3 lines · On Fri, 25 Nov 2016 13:27:20 +0800 Icenowy Zheng…
Quoted 1 line
+ assigned-clocks = <&ccu
CLK_PLL_DE>,Cannot get the patch built on 4.9-rc, as
CLK_PLL_DEis not an exported clock.
Hi,
Sorry, I forgot it. The symbol goes toinclude/dt-bindings/clock/sun8i-h3-ccu.h
as:
#define CLK_PLL_DE 13
Signature · 7 lines
Ken ar c'hentañ | ** Breizh ha Linux atav! ** Jef | http://moinejf.free.fr/ -- You received this message because you are subscribed to the Google Groups "linux-sunxi" group. To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/[email protected] For more options, visit https://groups.google.com/d/optout.
Re: [PATCH v6 3/5] ARM: dts: sun8i-h3: add HDMI video nodes
In reply to a message not in the archive20.11.2016, 20:12, "Jean-Francois Moine" <[email protected]>:
Quoted 78 lines
Signed-off-by Jean-Francois Moine <[email protected]>---
arch/arm/boot/dts/sun8i-h3.dtsi | 51 +++++++++++++++++++++++++++++++++++++++++1 file changed, 51 insertions(+)arch/arm/boot/dts/sun8i-h3.dtsi +44
-0@@ -140,6 +140,16 @@ #size-cells = <1>; ranges; + de: de-controller@01000000 { + compatible = "allwinner,sun8i-h3-display-engine"; + reg = <0x01000000 0x400000>; + clocks = <&ccu CLK_BUS_DE>, <&ccu CLK_DE>; + clock-names = "bus", "clock"; + resets = <&ccu RST_BUS_DE>; + ports = <&lcd0_p>; + status = "disabled"; + }; + dma: dma-controller@01c02000 { compatible = "allwinner,sun8i-h3-dma"; reg = <0x01c02000 0x1000>;@@ -149,6 +159,23 @@ #dma-cells = <1>; }; + lcd0: lcd-controller@01c0c000 { + compatible = "allwinner,sun8i-a83t-tcon"; + reg = <0x01c0c000 0x400>; + clocks = <&ccu CLK_BUS_TCON0>, <&ccu CLK_TCON0>; + clock-names = "bus", "clock"; + resets = <&ccu RST_BUS_TCON0>; + interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>; + status = "disabled"; + #address-cells = <1>; + #size-cells = <0>; + lcd0_p: port { + lcd0_hdmi: endpoint { + remote-endpoint = <&hdmi_lcd0>; + }; + }; + }; + mmc0: mmc@01c0f000 { compatible = "allwinner,sun7i-a20-mmc"; reg = <0x01c0f000 0x1000>;@@ -314,6 +341,11 @@ clock-names = "hosc", "losc"; #clock-cells = <1>; #reset-cells = <1>; + + assigned-clocks = <&ccu CLK_PLL_DE>, + <&ccu CLK_DE>; + assigned-clock-rates = <864000000>, + <432000000>; }; pio: pinctrl@01c20800 {@@ -564,6 +596,25 @@ interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; }; + hdmi: hdmi@01ee0000 { + compatible = "allwinner,sun8i-h3-hdmi"; + reg = <0x01ee0000 0x20000>; + clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI>, + <&ccu CLK_HDMI_DDC>; + clock-names = "bus", "clock", "ddc-clock"; + resets = <&ccu RST_BUS_HDMI0>, <&ccu RST_BUS_HDMI1>; + reset-names = "hdmi0", "hdmi1"; + status = "disabled"; + #address-cells = <1>; + #size-cells = <0>; + port@0 { /* video */
arch/arm/boot/dts/sun8i-h3.dtsi line 620
Quoted 10 lines
arch/arm/boot/dts/sun8i-h3.dtsi +7
-0+ reg = <0>; + hdmi_lcd0: endpoint { + remote-endpoint = <&lcd0_hdmi>; + }; + }; + }; + rtc: rtc@01f00000 { compatible = "allwinner,sun6i-a31-rtc"; reg = <0x01f00000 0x54>;
After removing CLK_PLL_DE's assigned-clock, the kernel passes compilation.
However, it cannot recognize any HDMI screen...
(My board is Orange Pi One, and I manually added status="okay"; to &lcd0, &de, &hdmi)
[ 16.507802] sun8i-de2 1000000.de-controller: bound 1c0c000.lcd-controller (ops de2_lcd_ops [sun8i_de2_drm]) [ 16.675948] sun8i-de2 1000000.de-controller: bound 1ee0000.hdmi (ops de2_hdmi_fini [sun8i_de2_hdmi]) [ 16.685120] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013). [ 16.695876] [drm] No driver support for vblank timestamp query. [ 16.701862] sun8i-de2 1000000.de-controller: No connectors reported connected with modes [ 16.713061] [drm] Cannot find any crtc or sizes - going 1024x768 [ 16.734214] Console: switching to colour frame buffer device 128x48 [ 16.751022] sun8i-de2 1000000.de-controller: fb0: frame buffer device
Quoted 7 lines
--
2.10.2_______________________________________________
linux-arm-kernel mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Signature · 3 lines
You received this message because you are subscribed to the Google Groups "linux-sunxi" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
A message that is not in the archive (sent off-list or not yet received): [email protected]
Re: [PATCH v6 3/5] ARM: dts: sun8i-h3: add HDMI video nodes
Quoted 1 line · On Fri, 25 Nov 2016 17:41:51 +0800 Icenowy Zheng…
After removing CLK_PLL_DE's assigned-clock, the kernel passes compilation.
The 'pll-de' and 'de' must have a fixed rate. Otherwise, if you do not use the legacy u-boot, I don't know which can be the rate of the DE.
Quoted 4 lines
However, it cannot recognize any HDMI screen...
(My board is Orange Pi One, and I manually added status="okay"; to &lcd0, &de, &hdmi)
Quoted 8 lines
[ 16.507802] sun8i-de2 1000000.de-controller: bound 1c0c000.lcd-controller (ops de2_lcd_ops [sun8i_de2_drm]) [ 16.675948] sun8i-de2 1000000.de-controller: bound 1ee0000.hdmi (ops de2_hdmi_fini [sun8i_de2_hdmi]) [ 16.685120] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013). [ 16.695876] [drm] No driver support for vblank timestamp query. [ 16.701862] sun8i-de2 1000000.de-controller: No connectors reported connected with modes [ 16.713061] [drm] Cannot find any crtc or sizes - going 1024x768 [ 16.734214] Console: switching to colour frame buffer device 128x48 [ 16.751022] sun8i-de2 1000000.de-controller: fb0: frame buffer device
I put a 'pr_warn' message is case the EDID cannot be read. Have you this message?
Anyway, there is a problem with the EDID:
- my Orange Pi 2 (H3) randomly fails to read it. But this succeeds after rebooting once or twice.
- my Banana Pi M2+ (H3) reads it correctly each time.
- my Banana Pi M3 (A83T) can never read it.
BTW, on first tries, I was forcing a CEA mode thru the kernel command line. This was working with the OPi2 and BPiM3, but there was no sound. In the last version, I use a EDID in edid_firmware for having sound with the BPiM3. This works fine.
But, forcing a CEA mode is no more possible, so, when the OPi2 cannot read the EDID, the system switches to a VGA mode (default 1024x768) which is not supported. It seems that this is your case.
So, in brief, if your board cannot read the EDID, put a EDID somewhere and its path in /sys/module/drm_kms_helper/parameters/edid_firmware. There will be no console, but X11 will work correctly.
Signature · 7 lines
Ken ar c'hentañ | ** Breizh ha Linux atav! ** Jef | http://moinejf.free.fr/ -- You received this message because you are subscribed to the Google Groups "linux-sunxi" group. To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/[email protected] For more options, visit https://groups.google.com/d/optout.
A message that is not in the archive (sent off-list or not yet received): 20161125112213.83420594eb435b6bb1a4d164-GANU6spQydw@public.gmane.org
Re: [PATCH v6 3/5] ARM: dts: sun8i-h3: add HDMI video nodes
25.11.2016, 18:22, "Jean-Francois Moine" <[email protected]>:
Quoted 7 lines
Quoted 1 line · On Fri, 25 Nov 2016 17:41:51 +0800 Icenowy Zheng…
After removing CLK_PLL_DE's assigned-clock, the kernel passes compilation.
The 'pll-de' and 'de' must have a fixed rate. Otherwise, if you do not use the legacy u-boot, I don't know which can be the rate of the DE.
Can't CCU deal with this?
I still kept the CLK_DE's assigned-clock...
Quoted 14 lines
Quoted 5 lines
However, it cannot recognize any HDMI screen...
(My board is Orange Pi One, and I manually added status="okay"; to &lcd0, &de, &hdmi)
Quoted 8 lines
[ 16.507802] sun8i-de2 1000000.de-controller: bound 1c0c000.lcd-controller (ops de2_lcd_ops [sun8i_de2_drm]) [ 16.675948] sun8i-de2 1000000.de-controller: bound 1ee0000.hdmi (ops de2_hdmi_fini [sun8i_de2_hdmi]) [ 16.685120] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013). [ 16.695876] [drm] No driver support for vblank timestamp query. [ 16.701862] sun8i-de2 1000000.de-controller: No connectors reported connected with modes [ 16.713061] [drm] Cannot find any crtc or sizes - going 1024x768 [ 16.734214] Console: switching to colour frame buffer device 128x48 [ 16.751022] sun8i-de2 1000000.de-controller: fb0: frame buffer device
Quoted 2 lines
I put a '
pr_warn' message is case the EDID cannot be read. Have you this message?
Seems no...
Quoted 15 lines
Anyway, there is a problem with the EDID:
- my Orange Pi 2 (H3) randomly fails to read it. But this succeeds after rebooting once or twice.
- my Banana Pi M2+ (H3) reads it correctly each time.
- my Banana Pi M3 (A83T) can never read it.BTW, on first tries, I was forcing a CEA mode thru the kernel command line. This was working with the OPi2 and BPiM3, but there was no sound. In the last version, I use a EDID in
edid_firmwarefor having sound with the BPiM3. This works fine.
But, forcing a CEA mode is no more possible, so, when the OPi2 cannot read the EDID, the system switches to a VGA mode (default 1024x768) which is not supported. It seems that this is your case.
Quoted 3 lines
So, in brief, if your board cannot read the EDID, put a EDID somewhere and its path in
/sys/module/drm_kms_helper/parameters/edid_firmware. There will be no console, but X11 will work correctly.
The problem seems to be that the CRTC is not properly initialized...
Quoted 4 lines
--
Ken ar c'hentañ | ** Breizh ha Linux atav! **
Jef | http://moinejf.free.fr/
Signature · 3 lines
You received this message because you are subscribed to the Google Groups "linux-sunxi" group. To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/[email protected] For more options, visit https://groups.google.com/d/optout.
Re: [PATCH v6 3/5] ARM: dts: sun8i-h3: add HDMI video nodes
In reply to a message not in the archiveQuoted 38 lines · Jean-Francois Moine
Quoted 1 line · On Fri, 25 Nov 2016 17:41:51 +0800 Icenowy Zheng…
After removing CLK_PLL_DE's assigned-clock, the kernel passes compilation.
The 'pll-de' and 'de' must have a fixed rate. Otherwise, if you do not use the legacy u-boot, I don't know which can be the rate of the DE.
Quoted 4 lines
However, it cannot recognize any HDMI screen...
(My board is Orange Pi One, and I manually added status="okay"; to &lcd0, &de, &hdmi)
Quoted 8 lines
[ 16.507802] sun8i-de2 1000000.de-controller: bound 1c0c000.lcd-controller (ops de2_lcd_ops [sun8i_de2_drm]) [ 16.675948] sun8i-de2 1000000.de-controller: bound 1ee0000.hdmi (ops de2_hdmi_fini [sun8i_de2_hdmi]) [ 16.685120] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013). [ 16.695876] [drm] No driver support for vblank timestamp query. [ 16.701862] sun8i-de2 1000000.de-controller: No connectors reported connected with modes [ 16.713061] [drm] Cannot find any crtc or sizes - going 1024x768 [ 16.734214] Console: switching to colour frame buffer device 128x48 [ 16.751022] sun8i-de2 1000000.de-controller: fb0: frame buffer deviceI put a '
pr_warn' message is case the EDID cannot be read. Have you this message?Anyway, there is a problem with the EDID:
- my Orange Pi 2 (H3) randomly fails to read it. But this succeeds after rebooting once or twice.
- my Banana Pi M2+ (H3) reads it correctly each time.
- my Banana Pi M3 (A83T) can never read it.BTW, on first tries, I was forcing a CEA mode thru the kernel command line. This was working with the OPi2 and BPiM3, but there was no sound. In the last version, I use a EDID in
edid_firmwarefor having sound with the BPiM3. This works fine.
But, forcing a CEA mode is no more possible, so, when the OPi2 cannot read the EDID, the system switches to a VGA mode (default 1024x768) which is not supported. It seems that this is your case.
Quoted 3 lines
So, in brief, if your board cannot read the EDID, put a EDID somewhere and its path in
/sys/module/drm_kms_helper/parameters/edid_firmware. There will be no console, but X11 will work correctly.
This is one of the things that are usually very helpful to put in a cover letter. This is obviously also a blocker for the merge of the driver, and should be dealt with.
Maxime
Signature · 3 lines
Maxime Ripard, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com
Re: [PATCH v6 3/5] ARM: dts: sun8i-h3: add HDMI video nodes
In reply to a message not in the archiveHi Jean-François,
Dne petek, 25. november 2016 11.22.20 UTC+1 je oseba Jean-François Moine napisala:
Quoted 27 lines
Quoted 1 line · On Fri, 25 Nov 2016 17:41:51 +0800 Icenowy Zheng…
After removing CLK_PLL_DE's assigned-clock, the kernel passes
compilation.
The 'pll-de' and 'de' must have a fixed rate. Otherwise, if you do not use the legacy u-boot, I don't know which can be the rate of the DE.
Quoted 3 lines
However, it cannot recognize any HDMI screen...
(My board is Orange Pi One, and I manually added status="okay"; to
&lcd0, &de, &hdmi)
Quoted 2 lines
[ 16.507802] sun8i-de2 1000000.de-controller: bound1c0c000.lcd-controller (ops
de2_lcd_ops[sun8i_de2_drm])Quoted 1 line
[ 16.675948] sun8i-de2 1000000.de-controller: bound 1ee0000.hdmi (ops
de2_hdmi_fini[sun8i_de2_hdmi])Quoted 1 line
[ 16.685120] [drm] Supports vblank timestamp caching Rev 2(21.10.2013).
Quoted 2 lines
[ 16.695876] [drm] No driver support for vblank timestamp query. [ 16.701862] sun8i-de2 1000000.de-controller: No connectors reportedconnected with modes
Quoted 3 lines
[ 16.713061] [drm] Cannot find any crtc or sizes - going 1024x768 [ 16.734214] Console: switching to colour frame buffer device 128x48 [ 16.751022] sun8i-de2 1000000.de-controller: fb0: frame buffer
Quoted 9 lines
device
I put a '
pr_warn' message is case the EDID cannot be read. Have you this message?Anyway, there is a problem with the EDID:
- my Orange Pi 2 (H3) randomly fails to read it. But this succeeds after rebooting once or twice.
My U-Boot driver never exhibited a problem with reading EDID on OPi2. However,
I'm reusing code from Rockchip HDMI U-Boot driver for this (with some Allwinner
adjustments).
Quoted 11 lines
- my Banana Pi M2+ (H3) reads it correctly each time.
- my Banana Pi M3 (A83T) can never read it.BTW, on first tries, I was forcing a CEA mode thru the kernel command line. This was working with the OPi2 and BPiM3, but there was no sound. In the last version, I use a EDID in
edid_firmwarefor having sound with the BPiM3. This works fine.
But, forcing a CEA mode is no more possible, so, when the OPi2 cannot read the EDID, the system switches to a VGA mode (default 1024x768) which is not supported. It seems that this is your case.
Quoted 7 lines
So, in brief, if your board cannot read the EDID, put a EDID somewhere and its path in
/sys/module/drm_kms_helper/parameters/edid_firmware. There will be no console, but X11 will work correctly.Signature · 2 lines
Ken ar c'hentañ | ** Breizh ha Linux atav! ** Jef | http://moinejf.free.fr/
Best regards,
Jernej Škrabec
Signature · 3 lines
You received this message because you are subscribed to the Google Groups "linux-sunxi" group. To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/[email protected] For more options, visit https://groups.google.com/d/optout.
PATCH v6 4/5 ARM: dts: sun8i-h3: Add HDMI video to the Banana Pi M2+
In reply to a message not in the archive--- arch/arm/boot/dts/sun8i-h3-bananapi-m2-plus.dts | 13 +++++++++++++ 1 file changed, 13 insertions(+)
arch/arm/boot/dts/sun8i-h3-bananapi-m2-plus.dts +13 -0
@@ -55,6 +55,7 @@ aliases { serial0 = &uart0; serial1 = &uart1; + lcd0 = &lcd0; }; chosen {
@@ -93,6 +94,10 @@ }; }; +&de { + status = "okay"; +}; + &ehci1 { status = "okay"; };
@@ -101,12 +106,20 @@ status = "okay"; }; +&hdmi { + status = "okay"; +}; + &ir { pinctrl-names = "default"; pinctrl-0 = <&ir_pins_a>; status = "okay"; }; +&lcd0 { + status = "okay"; +}; + &mmc0 { pinctrl-names = "default"; pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin>;
Signature · 1 line
2.10.2
PATCH v6 5/5 ARM: dts: sun8i-h3: Add HDMI video to the Orange PI 2
In reply to a message not in the archive--- arch/arm/boot/dts/sun8i-h3-orangepi-2.dts | 13 +++++++++++++ 1 file changed, 13 insertions(+)
arch/arm/boot/dts/sun8i-h3-orangepi-2.dts +13 -0
@@ -56,6 +56,7 @@ serial0 = &uart0; /* ethernet0 is the H3 emac, defined in sun8i-h3.dtsi */ ethernet1 = &rtl8189; + lcd0 = &lcd0; }; chosen {
@@ -105,16 +106,28 @@ }; }; +&de { + status = "okay"; +}; + &ehci1 { status = "okay"; }; +&hdmi { + status = "okay"; +}; + &ir { pinctrl-names = "default"; pinctrl-0 = <&ir_pins_a>; status = "okay"; }; +&lcd0 { + status = "okay"; +}; + &mmc0 { pinctrl-names = "default"; pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin>;
Signature · 1 line
2.10.2
Dne 20.11.2016 v 12:32 Jean-Francois Moine napsal(a):
Quoted 4 lines
This patchset series adds HDMI video support to the Allwinner sun8i SoCs which include the display engine 2 (DE2). The driver contains the code for the A83T and H3, but it could be used/extended for other SoCs as the A64, H2 and H5.
Hi,
I'm trying to test your patches on Orange Pi PC, and I've run into a few
issues: (I'm using sunxi-ng with the same patches as last time, to make it work with your driver)
1] I just get pink output on the monitor - there's some signal, but it's pink (or more like magenta).
dmesg ouput indicates no error:
[ 1.887823] [drm] Initialized [ 1.888503] sun8i-de2 1000000.de-controller: bound 1c0c000.lcd-controller (ops 0xc0a63894) [ 2.057298] sun8i-de2 1000000.de-controller: bound 1ee0000.hdmi (ops 0xc0a63b54) [ 2.057304] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013). [ 2.057307] [drm] No driver support for vblank timestamp query. [ 2.690862] Console: switching to colour frame buffer device 240x67 [ 2.723059] sun8i-de2 1000000.de-controller: fb0: frame buffer device
Quoted 16 lines
v6:
- remove audio support (other patchset to come)
- use DRM modeset data for HDMI configuration (thanks to Jernej Škrabec)
- more meaningfull register names
- use a mutex for DE I/O protection
- merge DE and plane into one file
- don't activate the video hardware when video not started (Maxime Ripard)
- remove 'type = "video" in DT graph ports
(Rob Herring)
- change the I/O accesses by #define instead of struct (Maxime Ripard, André Przywara)
- remove pm functions (Maxime Ripard)
- set the pll-de/de clocks in the DT (Maxime Ripard)
This change triggers this dmesg output I suppose:
[ 0.000000] bad: scheduling from the idle thread! [ 0.000000] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.9.0-rc6-00045-g5347f96 #29 [ 0.000000] Hardware name: Allwinner sun8i Family [ 0.000000] [<c010dc64>] (unwind_backtrace) from [<c010ae7c>] (show_stack+0x10/0x14) [ 0.000000] [<c010ae7c>] (show_stack) from [<c04d3ce0>] (dump_stack+0x84/0x98) [ 0.000000] [<c04d3ce0>] (dump_stack) from [<c0149984>] (dequeue_task_idle+0x34/0x40) [ 0.000000] [<c0149984>] (dequeue_task_idle) from [<c0950b54>] (__schedule+0x244/0x52c) [ 0.000000] [<c0950b54>] (__schedule) from [<c0950eac>] (schedule+0x44/0x9c) [ 0.000000] [<c0950eac>] (schedule) from [<c0953e58>] (schedule_hrtimeout_range_clock+0xc4/0x138) [ 0.000000] [<c0953e58>] (schedule_hrtimeout_range_clock) from [<c0953ee4>] (schedule_hrtimeout_range+0x18/0x20) [ 0.000000] [<c0953ee4>] (schedule_hrtimeout_range) from [<c0953c40>] (usleep_range+0x4c/0x54) [ 0.000000] [<c0953c40>] (usleep_range) from [<c052c4f0>] (ccu_helper_wait_for_lock+0x58/0xc8) [ 0.000000] [<c052c4f0>] (ccu_helper_wait_for_lock) from [<c052dd10>] (ccu_nm_set_rate+0x124/0x148) [ 0.000000] [<c052dd10>] (ccu_nm_set_rate) from [<c052547c>] (clk_change_rate+0x194/0x248) [ 0.000000] [<c052547c>] (clk_change_rate) from [<c0525598>] (clk_core_set_rate_nolock+0x68/0xb0) [ 0.000000] [<c0525598>] (clk_core_set_rate_nolock) from [<c0525b58>] (clk_set_rate+0x20/0x30) [ 0.000000] [<c0525b58>] (clk_set_rate) from [<c0529f84>] (of_clk_set_defaults+0x1fc/0x334) [ 0.000000] [<c0529f84>] (of_clk_set_defaults) from [<c0526dac>] (of_clk_add_hw_provider+0x74/0x9c) [ 0.000000] [<c0526dac>] (of_clk_add_hw_provider) from [<c052c608>] (sunxi_ccu_probe+0xa8/0x130) [ 0.000000] [<c052c608>] (sunxi_ccu_probe) from [<c0c197dc>] (of_clk_init+0x15c/0x1e8) [ 0.000000] [<c0c197dc>] (of_clk_init) from [<c0c08390>] (sun6i_timer_init+0xc/0x18) [ 0.000000] [<c0c08390>] (sun6i_timer_init) from [<c0c00bb8>] (start_kernel+0x248/0x398) [ 0.000000] [<c0c00bb8>] (start_kernel) from [<4000807c>] (0x4000807c) [ 0.000000] arm_arch_timer: Architected cp15 timer(s) running at 24.00MHz (phys). [ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x588fe9dc0, max_idle_ns: 440795202592 ns [ 0.000000] ------------[ cut here ]------------ [ 0.000000] WARNING: CPU: 0 PID: 0 at kernel/time/sched_clock.c:179 sched_clock_register+0x44/0x1dc [ 0.000000] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.9.0-rc6-00045-g5347f96 #29 [ 0.000000] Hardware name: Allwinner sun8i Family [ 0.000000] [<c010dc64>] (unwind_backtrace) from [<c010ae7c>] (show_stack+0x10/0x14) [ 0.000000] [<c010ae7c>] (show_stack) from [<c04d3ce0>] (dump_stack+0x84/0x98) [ 0.000000] [<c04d3ce0>] (dump_stack) from [<c012087c>] (__warn+0xe0/0xfc) [ 0.000000] [<c012087c>] (__warn) from [<c0120948>] (warn_slowpath_null+0x20/0x28) [ 0.000000] [<c0120948>] (warn_slowpath_null) from [<c0c0be20>] (sched_clock_register+0x44/0x1dc) [ 0.000000] [<c0c0be20>] (sched_clock_register) from [<c0c23be4>] (arch_timer_common_init+0x204/0x22c) [ 0.000000] [<c0c23be4>] (arch_timer_common_init) from [<c0c23ef0>] (arch_timer_of_init+0x2e4/0x310) [ 0.000000] [<c0c23ef0>] (arch_timer_of_init) from [<c0c232c0>] (clocksource_probe+0x58/0xac) [ 0.000000] [<c0c232c0>] (clocksource_probe) from [<c0c00bb8>] (start_kernel+0x248/0x398) [ 0.000000] [<c0c00bb8>] (start_kernel) from [<4000807c>] (0x4000807c) [ 0.000000] ---[ end trace 0000000000000000 ]--- [ 0.000004] sched_clock: 56 bits at 24MHz, resolution 41ns, wraps every 4398046511097ns [ 0.000010] Switching to timer-based delay loop, resolution 41ns [ 0.000139] clocksource: timer: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 79635851949 ns [ 0.000244] ------------[ cut here ]------------ [ 0.000253] WARNING: CPU: 0 PID: 0 at init/main.c:576 start_kernel+0x27c/0x398 [ 0.000255] Interrupts were enabled early [ 0.000261] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G W 4.9.0-rc6-00045-g5347f96 #29 [ 0.000263] Hardware name: Allwinner sun8i Family [ 0.000273] [<c010dc64>] (unwind_backtrace) from [<c010ae7c>] (show_stack+0x10/0x14) [ 0.000283] [<c010ae7c>] (show_stack) from [<c04d3ce0>] (dump_stack+0x84/0x98) [ 0.000290] [<c04d3ce0>] (dump_stack) from [<c012087c>] (__warn+0xe0/0xfc) [ 0.000296] [<c012087c>] (__warn) from [<c01208d0>] (warn_slowpath_fmt+0x38/0x48) [ 0.000303] [<c01208d0>] (warn_slowpath_fmt) from [<c0c00bec>] (start_kernel+0x27c/0x398) [ 0.000309] [<c0c00bec>] (start_kernel) from [<4000807c>] (0x4000807c) [ 0.000314] ---[ end trace f68728a0d3053b52 ]--- [ 0.000383] Console: colour dummy device 80x30 [ 0.000395] console [tty1] enabled
Which can be fixed by:
(quoted diff) +0 -0
b/drivers/clk/sunxi-ng/ccu_common.c
index 51d4bac..9dc970f 100644
drivers/clk/sunxi-ng/ccu_common.c +0 -0
@@ -30,8 +30,8 @@ void ccu_helper_wait_for_lock(struct ccu_common
*common, u32 lock)
if (!lock)
return;- WARN_ON(readl_relaxed_poll_timeout(common->base + common->reg, reg,
- reg & lock, 100, 70000));
+ WARN_ON(readl_relaxed_poll_timeout_atomic(common->base + common->reg, reg,
+ reg & lock, 5, 70000));
}
int sunxi_ccu_probe(struct device_node *node, void __iomem *reg,
But I'm not sure that's a good approach in general. This is a sunxi-ng ccu issue, rather than an issue with your patches. Maxime, any ideas?
regards,
Ondrej
Quoted 61 lines
- use
platform_get_irqinstead ofirq_of_parse_and_map(Maxime Ripard)
- rename sunxi to sun8i (Maxime Ripard)
- fix coding style errors (Maxime Ripard)
- subclass the drm structure in private data (Daniel Vetter)
- movedrm_dev_registerat end of init (Daniel Vetter)
v5:
- add overlay plane
- add audio support
- add support for the A83T
- add back the HDMI driver
- many bug fixes
v4:
-drivers/clk/sunxi/Makefilewas missing (Emil Velikov)
v3:
- add the hardware cursor
- simplify and fix the DE2 init sequences
- generation for all SUNXI SoCs (Andre Przywara)
v2:
- remove the HDMI driver
- remarks from Chen-Yu Tsai and Russell King
- DT documentation addedJean-Francois Moine (5):
drm: sun8i: Add a basic DRM driver for Allwinner DE2
drm: sunxi: add HDMI video support to A83T and H3
ARM: dts: sun8i-h3: add HDMI video nodes
ARM: dts: sun8i-h3: Add HDMI video to the Banana Pi M2+
ARM: dts: sun8i-h3: Add HDMI video to the Orange PI 2.../devicetree/bindings/display/sunxi/hdmi.txt | 53 ++ .../bindings/display/sunxi/sun8i-de2.txt | 83 ++ arch/arm/boot/dts/sun8i-h3-bananapi-m2-plus.dts | 13 + arch/arm/boot/dts/sun8i-h3-orangepi-2.dts | 13 + arch/arm/boot/dts/sun8i-h3.dtsi | 51 ++ drivers/gpu/drm/Kconfig | 2 + drivers/gpu/drm/Makefile | 1 + drivers/gpu/drm/sun8i/Kconfig | 26 + drivers/gpu/drm/sun8i/Makefile | 9 + drivers/gpu/drm/sun8i/de2_crtc.c | 440 +++++++++++ drivers/gpu/drm/sun8i/de2_crtc.h | 50 ++ drivers/gpu/drm/sun8i/de2_drm.h | 48 ++ drivers/gpu/drm/sun8i/de2_drv.c | 379 ++++++++++ drivers/gpu/drm/sun8i/de2_hdmi.c | 394 ++++++++++ drivers/gpu/drm/sun8i/de2_hdmi.h | 51 ++ drivers/gpu/drm/sun8i/de2_hdmi_io.c | 839 +++++++++++++++++++++ drivers/gpu/drm/sun8i/de2_plane.c | 712 +++++++++++++++++ 17 files changed, 3164 insertions(+) create mode 100644 Documentation/devicetree/bindings/display/sunxi/hdmi.txt create mode 100644 Documentation/devicetree/bindings/display/sunxi/sun8i-de2.txt create mode 100644 drivers/gpu/drm/sun8i/Kconfig create mode 100644 drivers/gpu/drm/sun8i/Makefile create mode 100644 drivers/gpu/drm/sun8i/de2_crtc.c create mode 100644 drivers/gpu/drm/sun8i/de2_crtc.h create mode 100644 drivers/gpu/drm/sun8i/de2_drm.h create mode 100644 drivers/gpu/drm/sun8i/de2_drv.c create mode 100644 drivers/gpu/drm/sun8i/de2_hdmi.c create mode 100644 drivers/gpu/drm/sun8i/de2_hdmi.h create mode 100644 drivers/gpu/drm/sun8i/de2_hdmi_io.c create mode 100644 drivers/gpu/drm/sun8i/de2_plane.c
Signature · 3 lines
You received this message because you are subscribed to the Google Groups "linux-sunxi" group. To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/[email protected] For more options, visit https://groups.google.com/d/optout.
A message that is not in the archive (sent off-list or not yet received): 1c9a02ff-ce6c-7ad7-36fa-8a2ea0b7675e-5qf/[email protected]
Quoted 17 lines · On Mon, 21 Nov 2016 01:54:53 +0100 Ondřej Jirman…
Dne 20.11.2016 v 12:32 Jean-Francois Moine napsal(a):
Quoted 4 lines
This patchset series adds HDMI video support to the Allwinner sun8i SoCs which include the display engine 2 (DE2). The driver contains the code for the A83T and H3, but it could be used/extended for other SoCs as the A64, H2 and H5.
Hi,
I'm trying to test your patches on Orange Pi PC, and I've run into a few
issues: (I'm using sunxi-ng with the same patches as last time, to make it work with your driver)1] I just get pink output on the monitor - there's some signal, but it's pink (or more like magenta).
dmesg ouput indicates no error:
Quoted 9 lines
[ 1.887823] [drm] Initialized [ 1.888503] sun8i-de2 1000000.de-controller: bound 1c0c000.lcd-controller (ops 0xc0a63894) [ 2.057298] sun8i-de2 1000000.de-controller: bound 1ee0000.hdmi (ops 0xc0a63b54) [ 2.057304] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013). [ 2.057307] [drm] No driver support for vblank timestamp query. [ 2.690862] Console: switching to colour frame buffer device 240x67 [ 2.723059] sun8i-de2 1000000.de-controller: fb0: frame buffer device
[snip]
My H3 boards work correctly, except the Orange PI 2 when it cannot read the EDID (but it is OK after reboot).
Did you check if the EDID was correctly read?
Which resolution do you expect?
Signature · 7 lines
Ken ar c'hentañ | ** Breizh ha Linux atav! ** Jef | http://moinejf.free.fr/ -- You received this message because you are subscribed to the Google Groups "linux-sunxi" group. To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/[email protected] For more options, visit https://groups.google.com/d/optout.
A message that is not in the archive (sent off-list or not yet received): 20161121191416.706b80c25d476fa002a001b1-GANU6spQydw@public.gmane.org
Dne 21.11.2016 v 19:14 Jean-Francois Moine napsal(a):
Quoted 29 lines
Quoted 17 lines · On Mon, 21 Nov 2016 01:54:53 +0100 Ondřej Jirman…
Dne 20.11.2016 v 12:32 Jean-Francois Moine napsal(a):
Quoted 4 lines
This patchset series adds HDMI video support to the Allwinner sun8i SoCs which include the display engine 2 (DE2). The driver contains the code for the A83T and H3, but it could be used/extended for other SoCs as the A64, H2 and H5.
Hi,
I'm trying to test your patches on Orange Pi PC, and I've run into a few
issues: (I'm using sunxi-ng with the same patches as last time, to make it work with your driver)1] I just get pink output on the monitor - there's some signal, but it's pink (or more like magenta).
dmesg ouput indicates no error:
Quoted 9 lines
[ 1.887823] [drm] Initialized [ 1.888503] sun8i-de2 1000000.de-controller: bound 1c0c000.lcd-controller (ops 0xc0a63894) [ 2.057298] sun8i-de2 1000000.de-controller: bound 1ee0000.hdmi (ops 0xc0a63b54) [ 2.057304] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013). [ 2.057307] [drm] No driver support for vblank timestamp query. [ 2.690862] Console: switching to colour frame buffer device 240x67 [ 2.723059] sun8i-de2 1000000.de-controller: fb0: frame buffer device
Quoted 6 lines
[snip]My H3 boards work correctly, except the Orange PI 2 when it cannot read the EDID (but it is OK after reboot).
Did you check if the EDID was correctly read?
EDID is correctly read (I verified that it is the same as with the v5 version of the driver), but there's one difference I noted. v5 says dpms is Off, while v6 says dpms is On.
Quoted 2 lines
Which resolution do you expect?
Signature · 3 lines
You received this message because you are subscribed to the Google Groups "linux-sunxi" group. To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/[email protected] For more options, visit https://groups.google.com/d/optout.