* [PATCH v2 0/4] ARM64: dts: meson-gx: fix VPU init for non-vendor u-boot
@ 2017-11-20 14:19 Neil Armstrong
2017-11-20 14:19 ` [PATCH v2 1/4] ARM64: dts: meson-gx: add VPU power domain Neil Armstrong
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Neil Armstrong @ 2017-11-20 14:19 UTC (permalink / raw)
To: linux-arm-kernel
On the Amlogic Gx SoCs (GXBB, GXL & GXM), the VPU power domain is initialized
by the vendor U-Boot code, but running mainline U-boot has been possible
on these SoCs. But lacking such init made the system lock at kernel boot.
A PM Power Domain driver has been pushed at [1] to solve the main issue.
This patchset depends on the the following patchsets :
- [1] soc: amlogic: add support for Meson GX VPU Domains
- [2] reset: meson: add level reset support for GX SoC family
- [3] clk: meson: gxbb: Add VPU and VAPB clocks
Changes since v1 at [4] :
- Dropped hdmi-supply in hdmi node until 4.16
- set 5v regulator always-on for now
[1] https://lkml.kernel.org/r/1508228167-11753-1-git-send-email-narmstrong at baylibre.com
[2] https://lkml.kernel.org/r/1508167573-17396-1-git-send-email-narmstrong at baylibre.com
[3] https://lkml.kernel.org/r/1508168085-19032-1-git-send-email-narmstrong at baylibre.com
[4] https://lkml.kernel.org/r/1508228951-12384-1-git-send-email-narmstrong at baylibre.com
Neil Armstrong (4):
ARM64: dts: meson-gx: add VPU power domain
ARM64: dts: meson-gx: Add HDMI_5V regulator on selected boards
ARM64: dts: meson-gx: grow reset controller memory zone
ARM64: dts: odroid-c2: Add HDMI and CEC Nodes
.../arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi | 12 ++++++
arch/arm64/boot/dts/amlogic/meson-gx.dtsi | 13 ++++++-
.../arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts | 30 +++++++++++++++
arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi | 43 ++++++++++++++++++++++
.../dts/amlogic/meson-gxl-s905x-libretech-cc.dts | 12 ++++++
.../boot/dts/amlogic/meson-gxl-s905x-p212.dtsi | 12 ++++++
arch/arm64/boot/dts/amlogic/meson-gxl.dtsi | 43 ++++++++++++++++++++++
.../boot/dts/amlogic/meson-gxm-khadas-vim2.dts | 12 ++++++
8 files changed, 176 insertions(+), 1 deletion(-)
--
2.7.4
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH v2 1/4] ARM64: dts: meson-gx: add VPU power domain 2017-11-20 14:19 [PATCH v2 0/4] ARM64: dts: meson-gx: fix VPU init for non-vendor u-boot Neil Armstrong @ 2017-11-20 14:19 ` Neil Armstrong 2017-11-20 14:19 ` [PATCH v2 2/4] ARM64: dts: meson-gx: Add HDMI_5V regulator on selected boards Neil Armstrong ` (3 subsequent siblings) 4 siblings, 0 replies; 6+ messages in thread From: Neil Armstrong @ 2017-11-20 14:19 UTC (permalink / raw) To: linux-arm-kernel This patch adds support for the VPU Power Domain nodes, and attaches the VPU power domain to the VPU node. Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> --- arch/arm64/boot/dts/amlogic/meson-gx.dtsi | 11 ++++++++ arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi | 43 +++++++++++++++++++++++++++++ arch/arm64/boot/dts/amlogic/meson-gxl.dtsi | 43 +++++++++++++++++++++++++++++ 3 files changed, 97 insertions(+) diff --git a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi index ab7ce16..668d891 100644 --- a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi @@ -377,6 +377,12 @@ compatible = "amlogic,meson-gx-ao-sysctrl", "syscon", "simple-mfd"; reg = <0x0 0x0 0x0 0x100>; + pwrc_vpu: power-controller-vpu { + compatible = "amlogic,meson-gx-pwrc-vpu"; + #power-domain-cells = <0>; + amlogic,hhi-sysctrl = <&sysctrl>; + }; + clkc_AO: clock-controller { compatible = "amlogic,meson-gx-aoclkc"; #clock-cells = <1>; @@ -454,6 +460,11 @@ #size-cells = <2>; ranges = <0x0 0x0 0x0 0xc883c000 0x0 0x2000>; + sysctrl: system-controller at 0 { + compatible = "amlogic,meson-gx-hhi-sysctrl", "syscon", "simple-mfd"; + reg = <0 0 0 0x400>; + }; + mailbox: mailbox at 404 { compatible = "amlogic,meson-gx-mhu", "amlogic,meson-gxbb-mhu"; reg = <0 0x404 0 0x4c>; diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi index ead895a..6904872 100644 --- a/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-gxbb.dtsi @@ -694,6 +694,48 @@ }; }; +&pwrc_vpu { + resets = <&reset RESET_VIU>, + <&reset RESET_VENC>, + <&reset RESET_VCBUS>, + <&reset RESET_BT656>, + <&reset RESET_DVIN_RESET>, + <&reset RESET_RDMA>, + <&reset RESET_VENCI>, + <&reset RESET_VENCP>, + <&reset RESET_VDAC>, + <&reset RESET_VDI6>, + <&reset RESET_VENCL>, + <&reset RESET_VID_LOCK>; + clocks = <&clkc CLKID_VPU>, + <&clkc CLKID_VAPB>; + clock-names = "vpu", "vapb"; + /* + * VPU clocking is provided by two identical clock paths + * VPU_0 and VPU_1 muxed to a single clock by a glitch + * free mux to safely change frequency while running. + * Same for VAPB but with a final gate after the glitch free mux. + */ + assigned-clocks = <&clkc CLKID_VPU_0_SEL>, + <&clkc CLKID_VPU_0>, + <&clkc CLKID_VPU>, /* Glitch free mux */ + <&clkc CLKID_VAPB_0_SEL>, + <&clkc CLKID_VAPB_0>, + <&clkc CLKID_VAPB_SEL>; /* Glitch free mux */ + assigned-clock-parents = <&clkc CLKID_FCLK_DIV3>, + <0>, /* Do Nothing */ + <&clkc CLKID_VPU_0>, + <&clkc CLKID_FCLK_DIV4>, + <0>, /* Do Nothing */ + <&clkc CLKID_VAPB_0>; + assigned-clock-rates = <0>, /* Do Nothing */ + <666666666>, + <0>, /* Do Nothing */ + <0>, /* Do Nothing */ + <250000000>, + <0>; /* Do Nothing */ +}; + &saradc { compatible = "amlogic,meson-gxbb-saradc", "amlogic,meson-saradc"; clocks = <&xtal>, @@ -763,4 +805,5 @@ &vpu { compatible = "amlogic,meson-gxbb-vpu", "amlogic,meson-gx-vpu"; + power-domains = <&pwrc_vpu>; }; diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi index 8ed981f..49b8ec1 100644 --- a/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-gxl.dtsi @@ -644,6 +644,48 @@ }; }; +&pwrc_vpu { + resets = <&reset RESET_VIU>, + <&reset RESET_VENC>, + <&reset RESET_VCBUS>, + <&reset RESET_BT656>, + <&reset RESET_DVIN_RESET>, + <&reset RESET_RDMA>, + <&reset RESET_VENCI>, + <&reset RESET_VENCP>, + <&reset RESET_VDAC>, + <&reset RESET_VDI6>, + <&reset RESET_VENCL>, + <&reset RESET_VID_LOCK>; + clocks = <&clkc CLKID_VPU>, + <&clkc CLKID_VAPB>; + clock-names = "vpu", "vapb"; + /* + * VPU clocking is provided by two identical clock paths + * VPU_0 and VPU_1 muxed to a single clock by a glitch + * free mux to safely change frequency while running. + * Same for VAPB but with a final gate after the glitch free mux. + */ + assigned-clocks = <&clkc CLKID_VPU_0_SEL>, + <&clkc CLKID_VPU_0>, + <&clkc CLKID_VPU>, /* Glitch free mux */ + <&clkc CLKID_VAPB_0_SEL>, + <&clkc CLKID_VAPB_0>, + <&clkc CLKID_VAPB_SEL>; /* Glitch free mux */ + assigned-clock-parents = <&clkc CLKID_FCLK_DIV3>, + <0>, /* Do Nothing */ + <&clkc CLKID_VPU_0>, + <&clkc CLKID_FCLK_DIV4>, + <0>, /* Do Nothing */ + <&clkc CLKID_VAPB_0>; + assigned-clock-rates = <0>, /* Do Nothing */ + <666666666>, + <0>, /* Do Nothing */ + <0>, /* Do Nothing */ + <250000000>, + <0>; /* Do Nothing */ +}; + &saradc { compatible = "amlogic,meson-gxl-saradc", "amlogic,meson-saradc"; clocks = <&xtal>, @@ -713,4 +755,5 @@ &vpu { compatible = "amlogic,meson-gxl-vpu", "amlogic,meson-gx-vpu"; + power-domains = <&pwrc_vpu>; }; -- 2.7.4 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 2/4] ARM64: dts: meson-gx: Add HDMI_5V regulator on selected boards 2017-11-20 14:19 [PATCH v2 0/4] ARM64: dts: meson-gx: fix VPU init for non-vendor u-boot Neil Armstrong 2017-11-20 14:19 ` [PATCH v2 1/4] ARM64: dts: meson-gx: add VPU power domain Neil Armstrong @ 2017-11-20 14:19 ` Neil Armstrong 2017-11-20 14:19 ` [PATCH v2 3/4] ARM64: dts: meson-gx: grow reset controller memory zone Neil Armstrong ` (2 subsequent siblings) 4 siblings, 0 replies; 6+ messages in thread From: Neil Armstrong @ 2017-11-20 14:19 UTC (permalink / raw) To: linux-arm-kernel On reference boards and derivatives, the HDMI Logic is powered by an external 5V regulator. This regulator was set by the Vendor U-Boot, add the regulator and set it always-on for now. Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> --- arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi | 12 ++++++++++++ arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts | 12 ++++++++++++ arch/arm64/boot/dts/amlogic/meson-gxl-s905x-p212.dtsi | 12 ++++++++++++ arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts | 12 ++++++++++++ 4 files changed, 48 insertions(+) diff --git a/arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi b/arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi index 7d4b95e..aeb6d21 100644 --- a/arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-gx-p23x-q20x.dtsi @@ -59,6 +59,18 @@ reg = <0x0 0x0 0x0 0x80000000>; }; + hdmi_5v: regulator-hdmi-5v { + compatible = "regulator-fixed"; + + regulator-name = "HDMI_5V"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + + gpio = <&gpio GPIOH_3 GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-always-on; + }; + vddio_boot: regulator-vddio_boot { compatible = "regulator-fixed"; regulator-name = "VDDIO_BOOT"; diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts index dc9c3b8..9671f1e 100644 --- a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts +++ b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts @@ -72,6 +72,18 @@ reg = <0x0 0x0 0x0 0x80000000>; }; + hdmi_5v: regulator-hdmi-5v { + compatible = "regulator-fixed"; + + regulator-name = "HDMI_5V"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + + gpio = <&gpio GPIOH_3 GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-always-on; + }; + vcc_3v3: regulator-vcc_3v3 { compatible = "regulator-fixed"; regulator-name = "VCC_3V3"; diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-p212.dtsi b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-p212.dtsi index ff09df1..7005068 100644 --- a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-p212.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-p212.dtsi @@ -28,6 +28,18 @@ reg = <0x0 0x0 0x0 0x80000000>; }; + hdmi_5v: regulator-hdmi-5v { + compatible = "regulator-fixed"; + + regulator-name = "HDMI_5V"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + + gpio = <&gpio GPIOH_3 GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-always-on; + }; + vddio_boot: regulator-vddio_boot { compatible = "regulator-fixed"; regulator-name = "VDDIO_BOOT"; diff --git a/arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts b/arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts index 34a41b2..d2595c0 100644 --- a/arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts +++ b/arch/arm64/boot/dts/amlogic/meson-gxm-khadas-vim2.dts @@ -153,6 +153,18 @@ }; }; + hdmi_5v: regulator-hdmi-5v { + compatible = "regulator-fixed"; + + regulator-name = "HDMI_5V"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + + gpio = <&gpio GPIOH_3 GPIO_ACTIVE_HIGH>; + enable-active-high; + regulator-always-on; + }; + vcc_3v3: regulator-vcc_3v3 { compatible = "regulator-fixed"; regulator-name = "VCC_3V3"; -- 2.7.4 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 3/4] ARM64: dts: meson-gx: grow reset controller memory zone 2017-11-20 14:19 [PATCH v2 0/4] ARM64: dts: meson-gx: fix VPU init for non-vendor u-boot Neil Armstrong 2017-11-20 14:19 ` [PATCH v2 1/4] ARM64: dts: meson-gx: add VPU power domain Neil Armstrong 2017-11-20 14:19 ` [PATCH v2 2/4] ARM64: dts: meson-gx: Add HDMI_5V regulator on selected boards Neil Armstrong @ 2017-11-20 14:19 ` Neil Armstrong 2017-11-20 14:19 ` [PATCH v2 4/4] ARM64: dts: odroid-c2: Add HDMI and CEC Nodes Neil Armstrong 2017-12-01 0:22 ` [PATCH v2 0/4] ARM64: dts: meson-gx: fix VPU init for non-vendor u-boot Kevin Hilman 4 siblings, 0 replies; 6+ messages in thread From: Neil Armstrong @ 2017-11-20 14:19 UTC (permalink / raw) To: linux-arm-kernel Now the Amlogic Meson GX SoCs datasheet documents all the Reset registers, grow the memory in the node to allow usage of the level registers. Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> --- arch/arm64/boot/dts/amlogic/meson-gx.dtsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi index 668d891..7cdbf58 100644 --- a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi +++ b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi @@ -229,7 +229,7 @@ reset: reset-controller at 4404 { compatible = "amlogic,meson-gx-reset", "amlogic,meson-gxbb-reset"; - reg = <0x0 0x04404 0x0 0x20>; + reg = <0x0 0x04404 0x0 0x9c>; #reset-cells = <1>; }; -- 2.7.4 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 4/4] ARM64: dts: odroid-c2: Add HDMI and CEC Nodes 2017-11-20 14:19 [PATCH v2 0/4] ARM64: dts: meson-gx: fix VPU init for non-vendor u-boot Neil Armstrong ` (2 preceding siblings ...) 2017-11-20 14:19 ` [PATCH v2 3/4] ARM64: dts: meson-gx: grow reset controller memory zone Neil Armstrong @ 2017-11-20 14:19 ` Neil Armstrong 2017-12-01 0:22 ` [PATCH v2 0/4] ARM64: dts: meson-gx: fix VPU init for non-vendor u-boot Kevin Hilman 4 siblings, 0 replies; 6+ messages in thread From: Neil Armstrong @ 2017-11-20 14:19 UTC (permalink / raw) To: linux-arm-kernel Now the VPU Power Domain has been fixed while boothing from Mainline U-Boot, VPU and HDMI nodes can finally be added to the Odroid-C2 DTS. Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> --- .../arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts b/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts index f8d2214..d6d3af5 100644 --- a/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts +++ b/arch/arm64/boot/dts/amlogic/meson-gxbb-odroidc2.dts @@ -135,6 +135,24 @@ compatible = "mmc-pwrseq-emmc"; reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>; }; + + hdmi-connector { + compatible = "hdmi-connector"; + type = "a"; + + port { + hdmi_connector_in: endpoint { + remote-endpoint = <&hdmi_tx_tmds_out>; + }; + }; + }; +}; + +&cec_AO { + status = "okay"; + pinctrl-0 = <&ao_cec_pins>; + pinctrl-names = "default"; + hdmi-phandle = <&hdmi_tx>; }; ðmac { @@ -179,6 +197,18 @@ }; }; +&hdmi_tx { + status = "okay"; + pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>; + pinctrl-names = "default"; +}; + +&hdmi_tx_tmds_port { + hdmi_tx_tmds_out: endpoint { + remote-endpoint = <&hdmi_connector_in>; + }; +}; + &i2c_A { status = "okay"; pinctrl-0 = <&i2c_a_pins>; -- 2.7.4 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 0/4] ARM64: dts: meson-gx: fix VPU init for non-vendor u-boot 2017-11-20 14:19 [PATCH v2 0/4] ARM64: dts: meson-gx: fix VPU init for non-vendor u-boot Neil Armstrong ` (3 preceding siblings ...) 2017-11-20 14:19 ` [PATCH v2 4/4] ARM64: dts: odroid-c2: Add HDMI and CEC Nodes Neil Armstrong @ 2017-12-01 0:22 ` Kevin Hilman 4 siblings, 0 replies; 6+ messages in thread From: Kevin Hilman @ 2017-12-01 0:22 UTC (permalink / raw) To: linux-arm-kernel Neil Armstrong <narmstrong@baylibre.com> writes: > On the Amlogic Gx SoCs (GXBB, GXL & GXM), the VPU power domain is initialized > by the vendor U-Boot code, but running mainline U-boot has been possible > on these SoCs. But lacking such init made the system lock at kernel boot. > > A PM Power Domain driver has been pushed at [1] to solve the main issue. > > This patchset depends on the the following patchsets : > - [1] soc: amlogic: add support for Meson GX VPU Domains > - [2] reset: meson: add level reset support for GX SoC family > - [3] clk: meson: gxbb: Add VPU and VAPB clocks > > Changes since v1 at [4] : > - Dropped hdmi-supply in hdmi node until 4.16 > - set 5v regulator always-on for now v2 applied to v4.15/fixes, Thanks, Kevin ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2017-12-01 0:22 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2017-11-20 14:19 [PATCH v2 0/4] ARM64: dts: meson-gx: fix VPU init for non-vendor u-boot Neil Armstrong 2017-11-20 14:19 ` [PATCH v2 1/4] ARM64: dts: meson-gx: add VPU power domain Neil Armstrong 2017-11-20 14:19 ` [PATCH v2 2/4] ARM64: dts: meson-gx: Add HDMI_5V regulator on selected boards Neil Armstrong 2017-11-20 14:19 ` [PATCH v2 3/4] ARM64: dts: meson-gx: grow reset controller memory zone Neil Armstrong 2017-11-20 14:19 ` [PATCH v2 4/4] ARM64: dts: odroid-c2: Add HDMI and CEC Nodes Neil Armstrong 2017-12-01 0:22 ` [PATCH v2 0/4] ARM64: dts: meson-gx: fix VPU init for non-vendor u-boot Kevin Hilman
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).