2020-07-19 14:11:11

by Christian Hewitt

[permalink] [raw]
Subject: [PATCH 0/3] arm64: dts: meson: add support for ODROID-N2+

This series splits the existing meson-g12b-odroid-n2.dts into a common
dtsi and dts, and then adds new bindings and dts for the ODROID-N2+
which uses an Amlogic S922X rev.C chip that Hardkernel supports with
overclock to 2.4GHz on the big cluster and 2.0GHz on the little cluster.

The series has a soft-dependency on proposed changes to N2 audio [0]
from Jerome Brunet so will need a v2 rebase once they are applied
(basic tests for this series on N2 and N2+ are with them applied).

[0] https://patchwork.kernel.org/project/linux-amlogic/list/?series=311099

Christian Hewitt (3):
arm64: dts: meson: convert ODROID-N2 to dtsi
dt-bindings: arm: amlogic: add support for the ODROID-N2+
arm64: dts: meson: add support for the ODROID-N2+

.../devicetree/bindings/arm/amlogic.yaml | 1 +
arch/arm64/boot/dts/amlogic/Makefile | 1 +
.../dts/amlogic/meson-g12b-odroid-n2-plus.dts | 53 ++
.../boot/dts/amlogic/meson-g12b-odroid-n2.dts | 493 +----------------
.../dts/amlogic/meson-g12b-odroid-n2.dtsi | 500 ++++++++++++++++++
5 files changed, 556 insertions(+), 492 deletions(-)
create mode 100644 arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts
create mode 100644 arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi

--
2.17.1


2020-07-19 14:11:14

by Christian Hewitt

[permalink] [raw]
Subject: [PATCH 1/3] arm64: dts: meson: convert ODROID-N2 to dtsi

Convert the current ODROID-N2 dts into a common dtsi in preparation
for adding ODROID-N2+ support.

Signed-off-by: Christian Hewitt <[email protected]>
---
.../boot/dts/amlogic/meson-g12b-odroid-n2.dts | 493 +----------------
.../dts/amlogic/meson-g12b-odroid-n2.dtsi | 500 ++++++++++++++++++
2 files changed, 501 insertions(+), 492 deletions(-)
create mode 100644 arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi

diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts
index 169ea283d4ee..5fd51a87ae9b 100644
--- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts
@@ -6,500 +6,9 @@

/dts-v1/;

-#include "meson-g12b-s922x.dtsi"
-#include <dt-bindings/input/input.h>
-#include <dt-bindings/gpio/meson-g12a-gpio.h>
-#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
+#include "meson-g12b-odroid-n2.dtsi"

/ {
compatible = "hardkernel,odroid-n2", "amlogic,s922x", "amlogic,g12b";
model = "Hardkernel ODROID-N2";
-
- aliases {
- serial0 = &uart_AO;
- ethernet0 = &ethmac;
- };
-
- chosen {
- stdout-path = "serial0:115200n8";
- };
-
- memory@0 {
- device_type = "memory";
- reg = <0x0 0x0 0x0 0x40000000>;
- };
-
- emmc_pwrseq: emmc-pwrseq {
- compatible = "mmc-pwrseq-emmc";
- reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
- };
-
- leds {
- compatible = "gpio-leds";
-
- blue {
- label = "n2:blue";
- gpios = <&gpio_ao GPIOAO_11 GPIO_ACTIVE_HIGH>;
- linux,default-trigger = "heartbeat";
- };
- };
-
- tflash_vdd: regulator-tflash_vdd {
- compatible = "regulator-fixed";
-
- regulator-name = "TFLASH_VDD";
- regulator-min-microvolt = <3300000>;
- regulator-max-microvolt = <3300000>;
-
- gpio = <&gpio_ao GPIOAO_8 GPIO_ACTIVE_HIGH>;
- enable-active-high;
- regulator-always-on;
- };
-
- tf_io: gpio-regulator-tf_io {
- compatible = "regulator-gpio";
-
- regulator-name = "TF_IO";
- regulator-min-microvolt = <1800000>;
- regulator-max-microvolt = <3300000>;
-
- gpios = <&gpio_ao GPIOAO_9 GPIO_ACTIVE_HIGH>;
- gpios-states = <0>;
-
- states = <3300000 0>,
- <1800000 1>;
- };
-
- flash_1v8: regulator-flash_1v8 {
- compatible = "regulator-fixed";
- regulator-name = "FLASH_1V8";
- regulator-min-microvolt = <1800000>;
- regulator-max-microvolt = <1800000>;
- vin-supply = <&vcc_3v3>;
- regulator-always-on;
- };
-
- main_12v: regulator-main_12v {
- compatible = "regulator-fixed";
- regulator-name = "12V";
- regulator-min-microvolt = <12000000>;
- regulator-max-microvolt = <12000000>;
- regulator-always-on;
- };
-
- vcc_5v: regulator-vcc_5v {
- compatible = "regulator-fixed";
- regulator-name = "5V";
- regulator-min-microvolt = <5000000>;
- regulator-max-microvolt = <5000000>;
- regulator-always-on;
- vin-supply = <&main_12v>;
- };
-
- vcc_1v8: regulator-vcc_1v8 {
- compatible = "regulator-fixed";
- regulator-name = "VCC_1V8";
- regulator-min-microvolt = <1800000>;
- regulator-max-microvolt = <1800000>;
- vin-supply = <&vcc_3v3>;
- regulator-always-on;
- };
-
- vcc_3v3: regulator-vcc_3v3 {
- compatible = "regulator-fixed";
- regulator-name = "VCC_3V3";
- regulator-min-microvolt = <3300000>;
- regulator-max-microvolt = <3300000>;
- vin-supply = <&vddao_3v3>;
- regulator-always-on;
- /* FIXME: actually controlled by VDDCPU_B_EN */
- };
-
- vddcpu_a: regulator-vddcpu-a {
- /*
- * MP8756GD Regulator.
- */
- compatible = "pwm-regulator";
-
- regulator-name = "VDDCPU_A";
- regulator-min-microvolt = <721000>;
- regulator-max-microvolt = <1022000>;
-
- vin-supply = <&main_12v>;
-
- pwms = <&pwm_ab 0 1250 0>;
- pwm-dutycycle-range = <100 0>;
-
- regulator-boot-on;
- regulator-always-on;
- };
-
- vddcpu_b: regulator-vddcpu-b {
- /*
- * Silergy SY8120B1ABC Regulator.
- */
- compatible = "pwm-regulator";
-
- regulator-name = "VDDCPU_B";
- regulator-min-microvolt = <721000>;
- regulator-max-microvolt = <1022000>;
-
- vin-supply = <&main_12v>;
-
- pwms = <&pwm_AO_cd 1 1250 0>;
- pwm-dutycycle-range = <100 0>;
-
- regulator-boot-on;
- regulator-always-on;
- };
-
- hub_5v: regulator-hub_5v {
- compatible = "regulator-fixed";
- regulator-name = "HUB_5V";
- regulator-min-microvolt = <5000000>;
- regulator-max-microvolt = <5000000>;
- vin-supply = <&vcc_5v>;
-
- /* Connected to the Hub CHIPENABLE, LOW sets low power state */
- gpio = <&gpio GPIOH_5 GPIO_ACTIVE_HIGH>;
- enable-active-high;
- };
-
- usb_pwr_en: regulator-usb_pwr_en {
- compatible = "regulator-fixed";
- regulator-name = "USB_PWR_EN";
- regulator-min-microvolt = <5000000>;
- regulator-max-microvolt = <5000000>;
- vin-supply = <&vcc_5v>;
-
- /* Connected to the microUSB port power enable */
- gpio = <&gpio GPIOH_6 GPIO_ACTIVE_HIGH>;
- enable-active-high;
- };
-
- vddao_1v8: regulator-vddao_1v8 {
- compatible = "regulator-fixed";
- regulator-name = "VDDAO_1V8";
- regulator-min-microvolt = <1800000>;
- regulator-max-microvolt = <1800000>;
- vin-supply = <&vddao_3v3>;
- regulator-always-on;
- };
-
- vddao_3v3: regulator-vddao_3v3 {
- compatible = "regulator-fixed";
- regulator-name = "VDDAO_3V3";
- regulator-min-microvolt = <3300000>;
- regulator-max-microvolt = <3300000>;
- vin-supply = <&main_12v>;
- regulator-always-on;
- };
-
- hdmi-connector {
- compatible = "hdmi-connector";
- type = "a";
-
- port {
- hdmi_connector_in: endpoint {
- remote-endpoint = <&hdmi_tx_tmds_out>;
- };
- };
- };
-
- sound {
- compatible = "amlogic,axg-sound-card";
- model = "G12B-ODROID-N2";
- audio-aux-devs = <&tdmout_b>;
- audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
- "TDMOUT_B IN 1", "FRDDR_B OUT 1",
- "TDMOUT_B IN 2", "FRDDR_C OUT 1",
- "TDM_B Playback", "TDMOUT_B OUT";
-
- assigned-clocks = <&clkc CLKID_MPLL2>,
- <&clkc CLKID_MPLL0>,
- <&clkc CLKID_MPLL1>;
- assigned-clock-parents = <0>, <0>, <0>;
- assigned-clock-rates = <294912000>,
- <270950400>,
- <393216000>;
- status = "okay";
-
- dai-link-0 {
- sound-dai = <&frddr_a>;
- };
-
- dai-link-1 {
- sound-dai = <&frddr_b>;
- };
-
- dai-link-2 {
- sound-dai = <&frddr_c>;
- };
-
- /* 8ch hdmi interface */
- dai-link-3 {
- sound-dai = <&tdmif_b>;
- dai-format = "i2s";
- dai-tdm-slot-tx-mask-0 = <1 1>;
- dai-tdm-slot-tx-mask-1 = <1 1>;
- dai-tdm-slot-tx-mask-2 = <1 1>;
- dai-tdm-slot-tx-mask-3 = <1 1>;
- mclk-fs = <256>;
-
- codec {
- sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
- };
- };
-
- /* hdmi glue */
- dai-link-4 {
- sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
-
- codec {
- sound-dai = <&hdmi_tx>;
- };
- };
- };
-};
-
-&arb {
- status = "okay";
-};
-
-&cec_AO {
- pinctrl-0 = <&cec_ao_a_h_pins>;
- pinctrl-names = "default";
- status = "disabled";
- hdmi-phandle = <&hdmi_tx>;
-};
-
-&cecb_AO {
- pinctrl-0 = <&cec_ao_b_h_pins>;
- pinctrl-names = "default";
- status = "okay";
- hdmi-phandle = <&hdmi_tx>;
-};
-
-&clkc_audio {
- status = "okay";
-};
-
-&cpu0 {
- cpu-supply = <&vddcpu_b>;
- operating-points-v2 = <&cpu_opp_table_0>;
- clocks = <&clkc CLKID_CPU_CLK>;
- clock-latency = <50000>;
-};
-
-&cpu1 {
- cpu-supply = <&vddcpu_b>;
- operating-points-v2 = <&cpu_opp_table_0>;
- clocks = <&clkc CLKID_CPU_CLK>;
- clock-latency = <50000>;
-};
-
-&cpu100 {
- cpu-supply = <&vddcpu_a>;
- operating-points-v2 = <&cpub_opp_table_1>;
- clocks = <&clkc CLKID_CPUB_CLK>;
- clock-latency = <50000>;
-};
-
-&cpu101 {
- cpu-supply = <&vddcpu_a>;
- operating-points-v2 = <&cpub_opp_table_1>;
- clocks = <&clkc CLKID_CPUB_CLK>;
- clock-latency = <50000>;
-};
-
-&cpu102 {
- cpu-supply = <&vddcpu_a>;
- operating-points-v2 = <&cpub_opp_table_1>;
- clocks = <&clkc CLKID_CPUB_CLK>;
- clock-latency = <50000>;
-};
-
-&cpu103 {
- cpu-supply = <&vddcpu_a>;
- operating-points-v2 = <&cpub_opp_table_1>;
- clocks = <&clkc CLKID_CPUB_CLK>;
- clock-latency = <50000>;
-};
-
-&ext_mdio {
- external_phy: ethernet-phy@0 {
- /* Realtek RTL8211F (0x001cc916) */
- reg = <0>;
- max-speed = <1000>;
-
- reset-assert-us = <10000>;
- reset-deassert-us = <30000>;
- reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
-
- interrupt-parent = <&gpio_intc>;
- /* MAC_INTR on GPIOZ_14 */
- interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
- };
-};
-
-&ethmac {
- pinctrl-0 = <&eth_pins>, <&eth_rgmii_pins>;
- pinctrl-names = "default";
- status = "okay";
- phy-mode = "rgmii";
- phy-handle = <&external_phy>;
- amlogic,tx-delay-ns = <2>;
-};
-
-&frddr_a {
- status = "okay";
-};
-
-&frddr_b {
- status = "okay";
-};
-
-&frddr_c {
- status = "okay";
-};
-
-&gpio {
- /*
- * WARNING: The USB Hub on the Odroid-N2 needs a reset signal
- * to be turned high in order to be detected by the USB Controller
- * This signal should be handled by a USB specific power sequence
- * in order to reset the Hub when USB bus is powered down.
- */
- usb-hub {
- gpio-hog;
- gpios = <GPIOH_4 GPIO_ACTIVE_HIGH>;
- output-high;
- line-name = "usb-hub-reset";
- };
-};
-
-&hdmi_tx {
- status = "okay";
- pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
- pinctrl-names = "default";
- hdmi-supply = <&vcc_5v>;
-};
-
-&hdmi_tx_tmds_port {
- hdmi_tx_tmds_out: endpoint {
- remote-endpoint = <&hdmi_connector_in>;
- };
-};
-
-&ir {
- status = "okay";
- pinctrl-0 = <&remote_input_ao_pins>;
- pinctrl-names = "default";
- linux,rc-map-name = "rc-odroid";
-};
-
-&pwm_ab {
- pinctrl-0 = <&pwm_a_e_pins>;
- pinctrl-names = "default";
- clocks = <&xtal>;
- clock-names = "clkin0";
- status = "okay";
-};
-
-&pwm_AO_cd {
- pinctrl-0 = <&pwm_ao_d_e_pins>;
- pinctrl-names = "default";
- clocks = <&xtal>;
- clock-names = "clkin1";
- status = "okay";
-};
-
-/* SD card */
-&sd_emmc_b {
- status = "okay";
- pinctrl-0 = <&sdcard_c_pins>;
- pinctrl-1 = <&sdcard_clk_gate_c_pins>;
- pinctrl-names = "default", "clk-gate";
-
- bus-width = <4>;
- cap-sd-highspeed;
- max-frequency = <50000000>;
- disable-wp;
-
- cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
- vmmc-supply = <&tflash_vdd>;
- vqmmc-supply = <&tf_io>;
-
-};
-
-/* eMMC */
-&sd_emmc_c {
- status = "okay";
- pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>;
- pinctrl-1 = <&emmc_clk_gate_pins>;
- pinctrl-names = "default", "clk-gate";
-
- bus-width = <8>;
- cap-mmc-highspeed;
- mmc-ddr-1_8v;
- mmc-hs200-1_8v;
- max-frequency = <200000000>;
- disable-wp;
-
- mmc-pwrseq = <&emmc_pwrseq>;
- vmmc-supply = <&vcc_3v3>;
- vqmmc-supply = <&flash_1v8>;
-};
-
-/*
- * EMMC_D4, EMMC_D5, EMMC_D6 and EMMC_D7 pins are shared between SPI NOR pins
- * and eMMC Data 4 to 7 pins.
- * Replace emmc_data_8b_pins to emmc_data_4b_pins from sd_emmc_c pinctrl-0,
- * and change bus-width to 4 then spifc can be enabled.
- * The SW1 slide should also be set to the correct position.
- */
-&spifc {
- status = "disabled";
- pinctrl-0 = <&nor_pins>;
- pinctrl-names = "default";
-
- mx25u64: spi-flash@0 {
- #address-cells = <1>;
- #size-cells = <1>;
- compatible = "mxicy,mx25u6435f", "jedec,spi-nor";
- reg = <0>;
- spi-max-frequency = <104000000>;
- };
-};
-
-&tdmif_b {
- status = "okay";
-};
-
-&tdmout_b {
- status = "okay";
-};
-
-&tohdmitx {
- status = "okay";
-};
-
-&uart_AO {
- status = "okay";
- pinctrl-0 = <&uart_ao_a_pins>;
- pinctrl-names = "default";
-};
-
-&usb {
- status = "okay";
- vbus-supply = <&usb_pwr_en>;
-};
-
-&usb2_phy0 {
- phy-supply = <&vcc_5v>;
-};
-
-&usb2_phy1 {
- /* Enable the hub which is connected to this port */
- phy-supply = <&hub_5v>;
};
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi
new file mode 100644
index 000000000000..ce49973678b8
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi
@@ -0,0 +1,500 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 BayLibre, SAS
+ * Author: Neil Armstrong <[email protected]>
+ */
+
+#include "meson-g12b-s922x.dtsi"
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/gpio/meson-g12a-gpio.h>
+#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
+
+/ {
+ aliases {
+ serial0 = &uart_AO;
+ ethernet0 = &ethmac;
+ };
+
+ chosen {
+ stdout-path = "serial0:115200n8";
+ };
+
+ memory@0 {
+ device_type = "memory";
+ reg = <0x0 0x0 0x0 0x40000000>;
+ };
+
+ emmc_pwrseq: emmc-pwrseq {
+ compatible = "mmc-pwrseq-emmc";
+ reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ blue {
+ label = "n2:blue";
+ gpios = <&gpio_ao GPIOAO_11 GPIO_ACTIVE_HIGH>;
+ linux,default-trigger = "heartbeat";
+ };
+ };
+
+ tflash_vdd: regulator-tflash_vdd {
+ compatible = "regulator-fixed";
+
+ regulator-name = "TFLASH_VDD";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+
+ gpio = <&gpio_ao GPIOAO_8 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ regulator-always-on;
+ };
+
+ tf_io: gpio-regulator-tf_io {
+ compatible = "regulator-gpio";
+
+ regulator-name = "TF_IO";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+
+ gpios = <&gpio_ao GPIOAO_9 GPIO_ACTIVE_HIGH>;
+ gpios-states = <0>;
+
+ states = <3300000 0>,
+ <1800000 1>;
+ };
+
+ flash_1v8: regulator-flash_1v8 {
+ compatible = "regulator-fixed";
+ regulator-name = "FLASH_1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ vin-supply = <&vcc_3v3>;
+ regulator-always-on;
+ };
+
+ main_12v: regulator-main_12v {
+ compatible = "regulator-fixed";
+ regulator-name = "12V";
+ regulator-min-microvolt = <12000000>;
+ regulator-max-microvolt = <12000000>;
+ regulator-always-on;
+ };
+
+ vcc_5v: regulator-vcc_5v {
+ compatible = "regulator-fixed";
+ regulator-name = "5V";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ regulator-always-on;
+ vin-supply = <&main_12v>;
+ };
+
+ vcc_1v8: regulator-vcc_1v8 {
+ compatible = "regulator-fixed";
+ regulator-name = "VCC_1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ vin-supply = <&vcc_3v3>;
+ regulator-always-on;
+ };
+
+ vcc_3v3: regulator-vcc_3v3 {
+ compatible = "regulator-fixed";
+ regulator-name = "VCC_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ vin-supply = <&vddao_3v3>;
+ regulator-always-on;
+ /* FIXME: actually controlled by VDDCPU_B_EN */
+ };
+
+ vddcpu_a: regulator-vddcpu-a {
+ /*
+ * MP8756GD Regulator.
+ */
+ compatible = "pwm-regulator";
+
+ regulator-name = "VDDCPU_A";
+ regulator-min-microvolt = <721000>;
+ regulator-max-microvolt = <1022000>;
+
+ vin-supply = <&main_12v>;
+
+ pwms = <&pwm_ab 0 1250 0>;
+ pwm-dutycycle-range = <100 0>;
+
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vddcpu_b: regulator-vddcpu-b {
+ /*
+ * Silergy SY8120B1ABC Regulator.
+ */
+ compatible = "pwm-regulator";
+
+ regulator-name = "VDDCPU_B";
+ regulator-min-microvolt = <721000>;
+ regulator-max-microvolt = <1022000>;
+
+ vin-supply = <&main_12v>;
+
+ pwms = <&pwm_AO_cd 1 1250 0>;
+ pwm-dutycycle-range = <100 0>;
+
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ hub_5v: regulator-hub_5v {
+ compatible = "regulator-fixed";
+ regulator-name = "HUB_5V";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ vin-supply = <&vcc_5v>;
+
+ /* Connected to the Hub CHIPENABLE, LOW sets low power state */
+ gpio = <&gpio GPIOH_5 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ usb_pwr_en: regulator-usb_pwr_en {
+ compatible = "regulator-fixed";
+ regulator-name = "USB_PWR_EN";
+ regulator-min-microvolt = <5000000>;
+ regulator-max-microvolt = <5000000>;
+ vin-supply = <&vcc_5v>;
+
+ /* Connected to the microUSB port power enable */
+ gpio = <&gpio GPIOH_6 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ };
+
+ vddao_1v8: regulator-vddao_1v8 {
+ compatible = "regulator-fixed";
+ regulator-name = "VDDAO_1V8";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ vin-supply = <&vddao_3v3>;
+ regulator-always-on;
+ };
+
+ vddao_3v3: regulator-vddao_3v3 {
+ compatible = "regulator-fixed";
+ regulator-name = "VDDAO_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ vin-supply = <&main_12v>;
+ regulator-always-on;
+ };
+
+ hdmi-connector {
+ compatible = "hdmi-connector";
+ type = "a";
+
+ port {
+ hdmi_connector_in: endpoint {
+ remote-endpoint = <&hdmi_tx_tmds_out>;
+ };
+ };
+ };
+
+ sound {
+ compatible = "amlogic,axg-sound-card";
+ model = "G12B-ODROID-N2";
+ audio-aux-devs = <&tdmout_b>;
+ audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
+ "TDMOUT_B IN 1", "FRDDR_B OUT 1",
+ "TDMOUT_B IN 2", "FRDDR_C OUT 1",
+ "TDM_B Playback", "TDMOUT_B OUT";
+
+ assigned-clocks = <&clkc CLKID_MPLL2>,
+ <&clkc CLKID_MPLL0>,
+ <&clkc CLKID_MPLL1>;
+ assigned-clock-parents = <0>, <0>, <0>;
+ assigned-clock-rates = <294912000>,
+ <270950400>,
+ <393216000>;
+ status = "okay";
+
+ dai-link-0 {
+ sound-dai = <&frddr_a>;
+ };
+
+ dai-link-1 {
+ sound-dai = <&frddr_b>;
+ };
+
+ dai-link-2 {
+ sound-dai = <&frddr_c>;
+ };
+
+ /* 8ch hdmi interface */
+ dai-link-3 {
+ sound-dai = <&tdmif_b>;
+ dai-format = "i2s";
+ dai-tdm-slot-tx-mask-0 = <1 1>;
+ dai-tdm-slot-tx-mask-1 = <1 1>;
+ dai-tdm-slot-tx-mask-2 = <1 1>;
+ dai-tdm-slot-tx-mask-3 = <1 1>;
+ mclk-fs = <256>;
+
+ codec {
+ sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
+ };
+ };
+
+ /* hdmi glue */
+ dai-link-4 {
+ sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
+
+ codec {
+ sound-dai = <&hdmi_tx>;
+ };
+ };
+ };
+};
+
+&arb {
+ status = "okay";
+};
+
+&cec_AO {
+ pinctrl-0 = <&cec_ao_a_h_pins>;
+ pinctrl-names = "default";
+ status = "disabled";
+ hdmi-phandle = <&hdmi_tx>;
+};
+
+&cecb_AO {
+ pinctrl-0 = <&cec_ao_b_h_pins>;
+ pinctrl-names = "default";
+ status = "okay";
+ hdmi-phandle = <&hdmi_tx>;
+};
+
+&clkc_audio {
+ status = "okay";
+};
+
+&cpu0 {
+ cpu-supply = <&vddcpu_b>;
+ operating-points-v2 = <&cpu_opp_table_0>;
+ clocks = <&clkc CLKID_CPU_CLK>;
+ clock-latency = <50000>;
+};
+
+&cpu1 {
+ cpu-supply = <&vddcpu_b>;
+ operating-points-v2 = <&cpu_opp_table_0>;
+ clocks = <&clkc CLKID_CPU_CLK>;
+ clock-latency = <50000>;
+};
+
+&cpu100 {
+ cpu-supply = <&vddcpu_a>;
+ operating-points-v2 = <&cpub_opp_table_1>;
+ clocks = <&clkc CLKID_CPUB_CLK>;
+ clock-latency = <50000>;
+};
+
+&cpu101 {
+ cpu-supply = <&vddcpu_a>;
+ operating-points-v2 = <&cpub_opp_table_1>;
+ clocks = <&clkc CLKID_CPUB_CLK>;
+ clock-latency = <50000>;
+};
+
+&cpu102 {
+ cpu-supply = <&vddcpu_a>;
+ operating-points-v2 = <&cpub_opp_table_1>;
+ clocks = <&clkc CLKID_CPUB_CLK>;
+ clock-latency = <50000>;
+};
+
+&cpu103 {
+ cpu-supply = <&vddcpu_a>;
+ operating-points-v2 = <&cpub_opp_table_1>;
+ clocks = <&clkc CLKID_CPUB_CLK>;
+ clock-latency = <50000>;
+};
+
+&ext_mdio {
+ external_phy: ethernet-phy@0 {
+ /* Realtek RTL8211F (0x001cc916) */
+ reg = <0>;
+ max-speed = <1000>;
+
+ reset-assert-us = <10000>;
+ reset-deassert-us = <30000>;
+ reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
+
+ interrupt-parent = <&gpio_intc>;
+ /* MAC_INTR on GPIOZ_14 */
+ interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
+ };
+};
+
+&ethmac {
+ pinctrl-0 = <&eth_pins>, <&eth_rgmii_pins>;
+ pinctrl-names = "default";
+ status = "okay";
+ phy-mode = "rgmii";
+ phy-handle = <&external_phy>;
+ amlogic,tx-delay-ns = <2>;
+};
+
+&frddr_a {
+ status = "okay";
+};
+
+&frddr_b {
+ status = "okay";
+};
+
+&frddr_c {
+ status = "okay";
+};
+
+&gpio {
+ /*
+ * WARNING: The USB Hub on the Odroid-N2 needs a reset signal
+ * to be turned high in order to be detected by the USB Controller
+ * This signal should be handled by a USB specific power sequence
+ * in order to reset the Hub when USB bus is powered down.
+ */
+ usb-hub {
+ gpio-hog;
+ gpios = <GPIOH_4 GPIO_ACTIVE_HIGH>;
+ output-high;
+ line-name = "usb-hub-reset";
+ };
+};
+
+&hdmi_tx {
+ status = "okay";
+ pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
+ pinctrl-names = "default";
+ hdmi-supply = <&vcc_5v>;
+};
+
+&hdmi_tx_tmds_port {
+ hdmi_tx_tmds_out: endpoint {
+ remote-endpoint = <&hdmi_connector_in>;
+ };
+};
+
+&ir {
+ status = "okay";
+ pinctrl-0 = <&remote_input_ao_pins>;
+ pinctrl-names = "default";
+ linux,rc-map-name = "rc-odroid";
+};
+
+&pwm_ab {
+ pinctrl-0 = <&pwm_a_e_pins>;
+ pinctrl-names = "default";
+ clocks = <&xtal>;
+ clock-names = "clkin0";
+ status = "okay";
+};
+
+&pwm_AO_cd {
+ pinctrl-0 = <&pwm_ao_d_e_pins>;
+ pinctrl-names = "default";
+ clocks = <&xtal>;
+ clock-names = "clkin1";
+ status = "okay";
+};
+
+/* SD card */
+&sd_emmc_b {
+ status = "okay";
+ pinctrl-0 = <&sdcard_c_pins>;
+ pinctrl-1 = <&sdcard_clk_gate_c_pins>;
+ pinctrl-names = "default", "clk-gate";
+
+ bus-width = <4>;
+ cap-sd-highspeed;
+ max-frequency = <50000000>;
+ disable-wp;
+
+ cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
+ vmmc-supply = <&tflash_vdd>;
+ vqmmc-supply = <&tf_io>;
+
+};
+
+/* eMMC */
+&sd_emmc_c {
+ status = "okay";
+ pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>;
+ pinctrl-1 = <&emmc_clk_gate_pins>;
+ pinctrl-names = "default", "clk-gate";
+
+ bus-width = <8>;
+ cap-mmc-highspeed;
+ mmc-ddr-1_8v;
+ mmc-hs200-1_8v;
+ max-frequency = <200000000>;
+ disable-wp;
+
+ mmc-pwrseq = <&emmc_pwrseq>;
+ vmmc-supply = <&vcc_3v3>;
+ vqmmc-supply = <&flash_1v8>;
+};
+
+/*
+ * EMMC_D4, EMMC_D5, EMMC_D6 and EMMC_D7 pins are shared between SPI NOR pins
+ * and eMMC Data 4 to 7 pins.
+ * Replace emmc_data_8b_pins to emmc_data_4b_pins from sd_emmc_c pinctrl-0,
+ * and change bus-width to 4 then spifc can be enabled.
+ * The SW1 slide should also be set to the correct position.
+ */
+&spifc {
+ status = "disabled";
+ pinctrl-0 = <&nor_pins>;
+ pinctrl-names = "default";
+
+ mx25u64: spi-flash@0 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "mxicy,mx25u6435f", "jedec,spi-nor";
+ reg = <0>;
+ spi-max-frequency = <104000000>;
+ };
+};
+
+&tdmif_b {
+ status = "okay";
+};
+
+&tdmout_b {
+ status = "okay";
+};
+
+&tohdmitx {
+ status = "okay";
+};
+
+&uart_AO {
+ status = "okay";
+ pinctrl-0 = <&uart_ao_a_pins>;
+ pinctrl-names = "default";
+};
+
+&usb {
+ status = "okay";
+ vbus-supply = <&usb_pwr_en>;
+};
+
+&usb2_phy0 {
+ phy-supply = <&vcc_5v>;
+};
+
+&usb2_phy1 {
+ /* Enable the hub which is connected to this port */
+ phy-supply = <&hub_5v>;
+};
--
2.17.1

2020-07-19 14:13:35

by Christian Hewitt

[permalink] [raw]
Subject: [PATCH 2/3] dt-bindings: arm: amlogic: add support for the ODROID-N2+

HardKernel ODROID-N2+ uses a revised Amlogic S922X v2 chip that supports
higher cpu clock speeds than the original ODROID-N2.

Signed-off-by: Christian Hewitt <[email protected]>
---
Documentation/devicetree/bindings/arm/amlogic.yaml | 1 +
1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/arm/amlogic.yaml b/Documentation/devicetree/bindings/arm/amlogic.yaml
index 378229fa8310..595bb1d089f7 100644
--- a/Documentation/devicetree/bindings/arm/amlogic.yaml
+++ b/Documentation/devicetree/bindings/arm/amlogic.yaml
@@ -152,6 +152,7 @@ properties:
- azw,gtking
- azw,gtking-pro
- hardkernel,odroid-n2
+ - hardkernel,odroid-n2-plus
- khadas,vim3
- ugoos,am6
- const: amlogic,s922x
--
2.17.1

2020-07-19 14:14:16

by Christian Hewitt

[permalink] [raw]
Subject: [PATCH 3/3] arm64: dts: meson: add support for the ODROID-N2+

HardKernel ODROID-N2+ uses an Amlogic S922X rev. C chip capable of higher
clock speeds than the original ODROID-N2. Hardkernel supports the big cpu
cluster at 2.4GHz and the little cpu cluster at 2.0GHz. Opp points and
regulator changess are from the HardKernel Linux kernel sources.

Suggested-by: Dongjin Kim <[email protected]>
Signed-off-by: Christian Hewitt <[email protected]>
---
arch/arm64/boot/dts/amlogic/Makefile | 1 +
.../dts/amlogic/meson-g12b-odroid-n2-plus.dts | 53 +++++++++++++++++++
2 files changed, 54 insertions(+)
create mode 100644 arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts

diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
index 5cac4d1d487d..6dc508b80133 100644
--- a/arch/arm64/boot/dts/amlogic/Makefile
+++ b/arch/arm64/boot/dts/amlogic/Makefile
@@ -8,6 +8,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-g12b-gtking-pro.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-a311d-khadas-vim3.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-s922x-khadas-vim3.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2.dtb
+dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2-plus.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-g12b-ugoos-am6.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-kii-pro.dtb
dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-nanopi-k2.dtb
diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts
new file mode 100644
index 000000000000..99e96be509f8
--- /dev/null
+++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts
@@ -0,0 +1,53 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2019 BayLibre, SAS
+ * Author: Neil Armstrong <[email protected]>
+ */
+
+/dts-v1/;
+
+#include "meson-g12b-odroid-n2.dtsi"
+
+/ {
+ compatible = "hardkernel,odroid-n2-plus", "amlogic,s922x", "amlogic,g12b";
+ model = "Hardkernel ODROID-N2+";
+
+ vddcpu_a: regulator-vddcpu-a {
+ regulator-min-microvolt = <680000>;
+ regulator-max-microvolt = <1040000>;
+
+ pwms = <&pwm_ab 0 1500 0>;
+ };
+
+ vddcpu_b: regulator-vddcpu-b {
+ regulator-min-microvolt = <680000>;
+ regulator-max-microvolt = <1040000>;
+
+ pwms = <&pwm_AO_cd 1 1500 0>;
+ };
+
+ cpu_opp_table_0: opp-table-0 {
+ opp-1908000000 {
+ opp-hz = /bits/ 64 <1908000000>;
+ opp-microvolt = <1030000>;
+ };
+
+ opp-2016000000 {
+ opp-hz = /bits/ 64 <2016000000>;
+ opp-microvolt = <1040000>;
+ };
+ };
+
+ cpub_opp_table_1: opp-table-1 {
+ opp-2304000000 {
+ opp-hz = /bits/ 64 <2304000000>;
+ opp-microvolt = <1030000>;
+ };
+
+ opp-2400000000 {
+ opp-hz = /bits/ 64 <2400000000>;
+ opp-microvolt = <1040000>;
+ };
+ };
+};
+
--
2.17.1

2020-07-21 08:09:32

by Neil Armstrong

[permalink] [raw]
Subject: Re: [PATCH 1/3] arm64: dts: meson: convert ODROID-N2 to dtsi

On 19/07/2020 16:10, Christian Hewitt wrote:
> Convert the current ODROID-N2 dts into a common dtsi in preparation
> for adding ODROID-N2+ support.
>
> Signed-off-by: Christian Hewitt <[email protected]>
> ---
> .../boot/dts/amlogic/meson-g12b-odroid-n2.dts | 493 +----------------
> .../dts/amlogic/meson-g12b-odroid-n2.dtsi | 500 ++++++++++++++++++
> 2 files changed, 501 insertions(+), 492 deletions(-)
> create mode 100644 arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi
>
> diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts
> index 169ea283d4ee..5fd51a87ae9b 100644
> --- a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts
> +++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dts
> @@ -6,500 +6,9 @@
>
> /dts-v1/;
>
> -#include "meson-g12b-s922x.dtsi"
> -#include <dt-bindings/input/input.h>
> -#include <dt-bindings/gpio/meson-g12a-gpio.h>
> -#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
> +#include "meson-g12b-odroid-n2.dtsi"
>
> / {
> compatible = "hardkernel,odroid-n2", "amlogic,s922x", "amlogic,g12b";
> model = "Hardkernel ODROID-N2";
> -
> - aliases {
> - serial0 = &uart_AO;
> - ethernet0 = &ethmac;
> - };
> -
> - chosen {
> - stdout-path = "serial0:115200n8";
> - };
> -
> - memory@0 {
> - device_type = "memory";
> - reg = <0x0 0x0 0x0 0x40000000>;
> - };
> -
> - emmc_pwrseq: emmc-pwrseq {
> - compatible = "mmc-pwrseq-emmc";
> - reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
> - };
> -
> - leds {
> - compatible = "gpio-leds";
> -
> - blue {
> - label = "n2:blue";
> - gpios = <&gpio_ao GPIOAO_11 GPIO_ACTIVE_HIGH>;
> - linux,default-trigger = "heartbeat";
> - };
> - };
> -
> - tflash_vdd: regulator-tflash_vdd {
> - compatible = "regulator-fixed";
> -
> - regulator-name = "TFLASH_VDD";
> - regulator-min-microvolt = <3300000>;
> - regulator-max-microvolt = <3300000>;
> -
> - gpio = <&gpio_ao GPIOAO_8 GPIO_ACTIVE_HIGH>;
> - enable-active-high;
> - regulator-always-on;
> - };
> -
> - tf_io: gpio-regulator-tf_io {
> - compatible = "regulator-gpio";
> -
> - regulator-name = "TF_IO";
> - regulator-min-microvolt = <1800000>;
> - regulator-max-microvolt = <3300000>;
> -
> - gpios = <&gpio_ao GPIOAO_9 GPIO_ACTIVE_HIGH>;
> - gpios-states = <0>;
> -
> - states = <3300000 0>,
> - <1800000 1>;
> - };
> -
> - flash_1v8: regulator-flash_1v8 {
> - compatible = "regulator-fixed";
> - regulator-name = "FLASH_1V8";
> - regulator-min-microvolt = <1800000>;
> - regulator-max-microvolt = <1800000>;
> - vin-supply = <&vcc_3v3>;
> - regulator-always-on;
> - };
> -
> - main_12v: regulator-main_12v {
> - compatible = "regulator-fixed";
> - regulator-name = "12V";
> - regulator-min-microvolt = <12000000>;
> - regulator-max-microvolt = <12000000>;
> - regulator-always-on;
> - };
> -
> - vcc_5v: regulator-vcc_5v {
> - compatible = "regulator-fixed";
> - regulator-name = "5V";
> - regulator-min-microvolt = <5000000>;
> - regulator-max-microvolt = <5000000>;
> - regulator-always-on;
> - vin-supply = <&main_12v>;
> - };
> -
> - vcc_1v8: regulator-vcc_1v8 {
> - compatible = "regulator-fixed";
> - regulator-name = "VCC_1V8";
> - regulator-min-microvolt = <1800000>;
> - regulator-max-microvolt = <1800000>;
> - vin-supply = <&vcc_3v3>;
> - regulator-always-on;
> - };
> -
> - vcc_3v3: regulator-vcc_3v3 {
> - compatible = "regulator-fixed";
> - regulator-name = "VCC_3V3";
> - regulator-min-microvolt = <3300000>;
> - regulator-max-microvolt = <3300000>;
> - vin-supply = <&vddao_3v3>;
> - regulator-always-on;
> - /* FIXME: actually controlled by VDDCPU_B_EN */
> - };
> -
> - vddcpu_a: regulator-vddcpu-a {
> - /*
> - * MP8756GD Regulator.
> - */
> - compatible = "pwm-regulator";
> -
> - regulator-name = "VDDCPU_A";
> - regulator-min-microvolt = <721000>;
> - regulator-max-microvolt = <1022000>;
> -
> - vin-supply = <&main_12v>;
> -
> - pwms = <&pwm_ab 0 1250 0>;
> - pwm-dutycycle-range = <100 0>;
> -
> - regulator-boot-on;
> - regulator-always-on;
> - };
> -
> - vddcpu_b: regulator-vddcpu-b {
> - /*
> - * Silergy SY8120B1ABC Regulator.
> - */
> - compatible = "pwm-regulator";
> -
> - regulator-name = "VDDCPU_B";
> - regulator-min-microvolt = <721000>;
> - regulator-max-microvolt = <1022000>;
> -
> - vin-supply = <&main_12v>;
> -
> - pwms = <&pwm_AO_cd 1 1250 0>;
> - pwm-dutycycle-range = <100 0>;
> -
> - regulator-boot-on;
> - regulator-always-on;
> - };
> -
> - hub_5v: regulator-hub_5v {
> - compatible = "regulator-fixed";
> - regulator-name = "HUB_5V";
> - regulator-min-microvolt = <5000000>;
> - regulator-max-microvolt = <5000000>;
> - vin-supply = <&vcc_5v>;
> -
> - /* Connected to the Hub CHIPENABLE, LOW sets low power state */
> - gpio = <&gpio GPIOH_5 GPIO_ACTIVE_HIGH>;
> - enable-active-high;
> - };
> -
> - usb_pwr_en: regulator-usb_pwr_en {
> - compatible = "regulator-fixed";
> - regulator-name = "USB_PWR_EN";
> - regulator-min-microvolt = <5000000>;
> - regulator-max-microvolt = <5000000>;
> - vin-supply = <&vcc_5v>;
> -
> - /* Connected to the microUSB port power enable */
> - gpio = <&gpio GPIOH_6 GPIO_ACTIVE_HIGH>;
> - enable-active-high;
> - };
> -
> - vddao_1v8: regulator-vddao_1v8 {
> - compatible = "regulator-fixed";
> - regulator-name = "VDDAO_1V8";
> - regulator-min-microvolt = <1800000>;
> - regulator-max-microvolt = <1800000>;
> - vin-supply = <&vddao_3v3>;
> - regulator-always-on;
> - };
> -
> - vddao_3v3: regulator-vddao_3v3 {
> - compatible = "regulator-fixed";
> - regulator-name = "VDDAO_3V3";
> - regulator-min-microvolt = <3300000>;
> - regulator-max-microvolt = <3300000>;
> - vin-supply = <&main_12v>;
> - regulator-always-on;
> - };
> -
> - hdmi-connector {
> - compatible = "hdmi-connector";
> - type = "a";
> -
> - port {
> - hdmi_connector_in: endpoint {
> - remote-endpoint = <&hdmi_tx_tmds_out>;
> - };
> - };
> - };
> -
> - sound {
> - compatible = "amlogic,axg-sound-card";
> - model = "G12B-ODROID-N2";
> - audio-aux-devs = <&tdmout_b>;
> - audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
> - "TDMOUT_B IN 1", "FRDDR_B OUT 1",
> - "TDMOUT_B IN 2", "FRDDR_C OUT 1",
> - "TDM_B Playback", "TDMOUT_B OUT";
> -
> - assigned-clocks = <&clkc CLKID_MPLL2>,
> - <&clkc CLKID_MPLL0>,
> - <&clkc CLKID_MPLL1>;
> - assigned-clock-parents = <0>, <0>, <0>;
> - assigned-clock-rates = <294912000>,
> - <270950400>,
> - <393216000>;
> - status = "okay";
> -
> - dai-link-0 {
> - sound-dai = <&frddr_a>;
> - };
> -
> - dai-link-1 {
> - sound-dai = <&frddr_b>;
> - };
> -
> - dai-link-2 {
> - sound-dai = <&frddr_c>;
> - };
> -
> - /* 8ch hdmi interface */
> - dai-link-3 {
> - sound-dai = <&tdmif_b>;
> - dai-format = "i2s";
> - dai-tdm-slot-tx-mask-0 = <1 1>;
> - dai-tdm-slot-tx-mask-1 = <1 1>;
> - dai-tdm-slot-tx-mask-2 = <1 1>;
> - dai-tdm-slot-tx-mask-3 = <1 1>;
> - mclk-fs = <256>;
> -
> - codec {
> - sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
> - };
> - };
> -
> - /* hdmi glue */
> - dai-link-4 {
> - sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
> -
> - codec {
> - sound-dai = <&hdmi_tx>;
> - };
> - };
> - };
> -};
> -
> -&arb {
> - status = "okay";
> -};
> -
> -&cec_AO {
> - pinctrl-0 = <&cec_ao_a_h_pins>;
> - pinctrl-names = "default";
> - status = "disabled";
> - hdmi-phandle = <&hdmi_tx>;
> -};
> -
> -&cecb_AO {
> - pinctrl-0 = <&cec_ao_b_h_pins>;
> - pinctrl-names = "default";
> - status = "okay";
> - hdmi-phandle = <&hdmi_tx>;
> -};
> -
> -&clkc_audio {
> - status = "okay";
> -};
> -
> -&cpu0 {
> - cpu-supply = <&vddcpu_b>;
> - operating-points-v2 = <&cpu_opp_table_0>;
> - clocks = <&clkc CLKID_CPU_CLK>;
> - clock-latency = <50000>;
> -};
> -
> -&cpu1 {
> - cpu-supply = <&vddcpu_b>;
> - operating-points-v2 = <&cpu_opp_table_0>;
> - clocks = <&clkc CLKID_CPU_CLK>;
> - clock-latency = <50000>;
> -};
> -
> -&cpu100 {
> - cpu-supply = <&vddcpu_a>;
> - operating-points-v2 = <&cpub_opp_table_1>;
> - clocks = <&clkc CLKID_CPUB_CLK>;
> - clock-latency = <50000>;
> -};
> -
> -&cpu101 {
> - cpu-supply = <&vddcpu_a>;
> - operating-points-v2 = <&cpub_opp_table_1>;
> - clocks = <&clkc CLKID_CPUB_CLK>;
> - clock-latency = <50000>;
> -};
> -
> -&cpu102 {
> - cpu-supply = <&vddcpu_a>;
> - operating-points-v2 = <&cpub_opp_table_1>;
> - clocks = <&clkc CLKID_CPUB_CLK>;
> - clock-latency = <50000>;
> -};
> -
> -&cpu103 {
> - cpu-supply = <&vddcpu_a>;
> - operating-points-v2 = <&cpub_opp_table_1>;
> - clocks = <&clkc CLKID_CPUB_CLK>;
> - clock-latency = <50000>;
> -};
> -
> -&ext_mdio {
> - external_phy: ethernet-phy@0 {
> - /* Realtek RTL8211F (0x001cc916) */
> - reg = <0>;
> - max-speed = <1000>;
> -
> - reset-assert-us = <10000>;
> - reset-deassert-us = <30000>;
> - reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
> -
> - interrupt-parent = <&gpio_intc>;
> - /* MAC_INTR on GPIOZ_14 */
> - interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
> - };
> -};
> -
> -&ethmac {
> - pinctrl-0 = <&eth_pins>, <&eth_rgmii_pins>;
> - pinctrl-names = "default";
> - status = "okay";
> - phy-mode = "rgmii";
> - phy-handle = <&external_phy>;
> - amlogic,tx-delay-ns = <2>;
> -};
> -
> -&frddr_a {
> - status = "okay";
> -};
> -
> -&frddr_b {
> - status = "okay";
> -};
> -
> -&frddr_c {
> - status = "okay";
> -};
> -
> -&gpio {
> - /*
> - * WARNING: The USB Hub on the Odroid-N2 needs a reset signal
> - * to be turned high in order to be detected by the USB Controller
> - * This signal should be handled by a USB specific power sequence
> - * in order to reset the Hub when USB bus is powered down.
> - */
> - usb-hub {
> - gpio-hog;
> - gpios = <GPIOH_4 GPIO_ACTIVE_HIGH>;
> - output-high;
> - line-name = "usb-hub-reset";
> - };
> -};
> -
> -&hdmi_tx {
> - status = "okay";
> - pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
> - pinctrl-names = "default";
> - hdmi-supply = <&vcc_5v>;
> -};
> -
> -&hdmi_tx_tmds_port {
> - hdmi_tx_tmds_out: endpoint {
> - remote-endpoint = <&hdmi_connector_in>;
> - };
> -};
> -
> -&ir {
> - status = "okay";
> - pinctrl-0 = <&remote_input_ao_pins>;
> - pinctrl-names = "default";
> - linux,rc-map-name = "rc-odroid";
> -};
> -
> -&pwm_ab {
> - pinctrl-0 = <&pwm_a_e_pins>;
> - pinctrl-names = "default";
> - clocks = <&xtal>;
> - clock-names = "clkin0";
> - status = "okay";
> -};
> -
> -&pwm_AO_cd {
> - pinctrl-0 = <&pwm_ao_d_e_pins>;
> - pinctrl-names = "default";
> - clocks = <&xtal>;
> - clock-names = "clkin1";
> - status = "okay";
> -};
> -
> -/* SD card */
> -&sd_emmc_b {
> - status = "okay";
> - pinctrl-0 = <&sdcard_c_pins>;
> - pinctrl-1 = <&sdcard_clk_gate_c_pins>;
> - pinctrl-names = "default", "clk-gate";
> -
> - bus-width = <4>;
> - cap-sd-highspeed;
> - max-frequency = <50000000>;
> - disable-wp;
> -
> - cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
> - vmmc-supply = <&tflash_vdd>;
> - vqmmc-supply = <&tf_io>;
> -
> -};
> -
> -/* eMMC */
> -&sd_emmc_c {
> - status = "okay";
> - pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>;
> - pinctrl-1 = <&emmc_clk_gate_pins>;
> - pinctrl-names = "default", "clk-gate";
> -
> - bus-width = <8>;
> - cap-mmc-highspeed;
> - mmc-ddr-1_8v;
> - mmc-hs200-1_8v;
> - max-frequency = <200000000>;
> - disable-wp;
> -
> - mmc-pwrseq = <&emmc_pwrseq>;
> - vmmc-supply = <&vcc_3v3>;
> - vqmmc-supply = <&flash_1v8>;
> -};
> -
> -/*
> - * EMMC_D4, EMMC_D5, EMMC_D6 and EMMC_D7 pins are shared between SPI NOR pins
> - * and eMMC Data 4 to 7 pins.
> - * Replace emmc_data_8b_pins to emmc_data_4b_pins from sd_emmc_c pinctrl-0,
> - * and change bus-width to 4 then spifc can be enabled.
> - * The SW1 slide should also be set to the correct position.
> - */
> -&spifc {
> - status = "disabled";
> - pinctrl-0 = <&nor_pins>;
> - pinctrl-names = "default";
> -
> - mx25u64: spi-flash@0 {
> - #address-cells = <1>;
> - #size-cells = <1>;
> - compatible = "mxicy,mx25u6435f", "jedec,spi-nor";
> - reg = <0>;
> - spi-max-frequency = <104000000>;
> - };
> -};
> -
> -&tdmif_b {
> - status = "okay";
> -};
> -
> -&tdmout_b {
> - status = "okay";
> -};
> -
> -&tohdmitx {
> - status = "okay";
> -};
> -
> -&uart_AO {
> - status = "okay";
> - pinctrl-0 = <&uart_ao_a_pins>;
> - pinctrl-names = "default";
> -};
> -
> -&usb {
> - status = "okay";
> - vbus-supply = <&usb_pwr_en>;
> -};
> -
> -&usb2_phy0 {
> - phy-supply = <&vcc_5v>;
> -};
> -
> -&usb2_phy1 {
> - /* Enable the hub which is connected to this port */
> - phy-supply = <&hub_5v>;
> };
> diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi
> new file mode 100644
> index 000000000000..ce49973678b8
> --- /dev/null
> +++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2.dtsi
> @@ -0,0 +1,500 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright (c) 2019 BayLibre, SAS
> + * Author: Neil Armstrong <[email protected]>
> + */
> +
> +#include "meson-g12b-s922x.dtsi"
> +#include <dt-bindings/input/input.h>
> +#include <dt-bindings/gpio/meson-g12a-gpio.h>
> +#include <dt-bindings/sound/meson-g12a-tohdmitx.h>
> +
> +/ {
> + aliases {
> + serial0 = &uart_AO;
> + ethernet0 = &ethmac;
> + };
> +
> + chosen {
> + stdout-path = "serial0:115200n8";
> + };
> +
> + memory@0 {
> + device_type = "memory";
> + reg = <0x0 0x0 0x0 0x40000000>;
> + };
> +
> + emmc_pwrseq: emmc-pwrseq {
> + compatible = "mmc-pwrseq-emmc";
> + reset-gpios = <&gpio BOOT_12 GPIO_ACTIVE_LOW>;
> + };
> +
> + leds {
> + compatible = "gpio-leds";
> +
> + blue {
> + label = "n2:blue";
> + gpios = <&gpio_ao GPIOAO_11 GPIO_ACTIVE_HIGH>;
> + linux,default-trigger = "heartbeat";
> + };
> + };
> +
> + tflash_vdd: regulator-tflash_vdd {
> + compatible = "regulator-fixed";
> +
> + regulator-name = "TFLASH_VDD";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> +
> + gpio = <&gpio_ao GPIOAO_8 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> + regulator-always-on;
> + };
> +
> + tf_io: gpio-regulator-tf_io {
> + compatible = "regulator-gpio";
> +
> + regulator-name = "TF_IO";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <3300000>;
> +
> + gpios = <&gpio_ao GPIOAO_9 GPIO_ACTIVE_HIGH>;
> + gpios-states = <0>;
> +
> + states = <3300000 0>,
> + <1800000 1>;
> + };
> +
> + flash_1v8: regulator-flash_1v8 {
> + compatible = "regulator-fixed";
> + regulator-name = "FLASH_1V8";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + vin-supply = <&vcc_3v3>;
> + regulator-always-on;
> + };
> +
> + main_12v: regulator-main_12v {
> + compatible = "regulator-fixed";
> + regulator-name = "12V";
> + regulator-min-microvolt = <12000000>;
> + regulator-max-microvolt = <12000000>;
> + regulator-always-on;
> + };
> +
> + vcc_5v: regulator-vcc_5v {
> + compatible = "regulator-fixed";
> + regulator-name = "5V";
> + regulator-min-microvolt = <5000000>;
> + regulator-max-microvolt = <5000000>;
> + regulator-always-on;
> + vin-supply = <&main_12v>;
> + };
> +
> + vcc_1v8: regulator-vcc_1v8 {
> + compatible = "regulator-fixed";
> + regulator-name = "VCC_1V8";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + vin-supply = <&vcc_3v3>;
> + regulator-always-on;
> + };
> +
> + vcc_3v3: regulator-vcc_3v3 {
> + compatible = "regulator-fixed";
> + regulator-name = "VCC_3V3";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + vin-supply = <&vddao_3v3>;
> + regulator-always-on;
> + /* FIXME: actually controlled by VDDCPU_B_EN */
> + };
> +
> + vddcpu_a: regulator-vddcpu-a {
> + /*
> + * MP8756GD Regulator.
> + */
> + compatible = "pwm-regulator";
> +
> + regulator-name = "VDDCPU_A";
> + regulator-min-microvolt = <721000>;
> + regulator-max-microvolt = <1022000>;
> +
> + vin-supply = <&main_12v>;
> +
> + pwms = <&pwm_ab 0 1250 0>;
> + pwm-dutycycle-range = <100 0>;
> +
> + regulator-boot-on;
> + regulator-always-on;
> + };
> +
> + vddcpu_b: regulator-vddcpu-b {
> + /*
> + * Silergy SY8120B1ABC Regulator.
> + */
> + compatible = "pwm-regulator";
> +
> + regulator-name = "VDDCPU_B";
> + regulator-min-microvolt = <721000>;
> + regulator-max-microvolt = <1022000>;
> +
> + vin-supply = <&main_12v>;
> +
> + pwms = <&pwm_AO_cd 1 1250 0>;
> + pwm-dutycycle-range = <100 0>;
> +
> + regulator-boot-on;
> + regulator-always-on;
> + };
> +
> + hub_5v: regulator-hub_5v {
> + compatible = "regulator-fixed";
> + regulator-name = "HUB_5V";
> + regulator-min-microvolt = <5000000>;
> + regulator-max-microvolt = <5000000>;
> + vin-supply = <&vcc_5v>;
> +
> + /* Connected to the Hub CHIPENABLE, LOW sets low power state */
> + gpio = <&gpio GPIOH_5 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> + };
> +
> + usb_pwr_en: regulator-usb_pwr_en {
> + compatible = "regulator-fixed";
> + regulator-name = "USB_PWR_EN";
> + regulator-min-microvolt = <5000000>;
> + regulator-max-microvolt = <5000000>;
> + vin-supply = <&vcc_5v>;
> +
> + /* Connected to the microUSB port power enable */
> + gpio = <&gpio GPIOH_6 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> + };
> +
> + vddao_1v8: regulator-vddao_1v8 {
> + compatible = "regulator-fixed";
> + regulator-name = "VDDAO_1V8";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + vin-supply = <&vddao_3v3>;
> + regulator-always-on;
> + };
> +
> + vddao_3v3: regulator-vddao_3v3 {
> + compatible = "regulator-fixed";
> + regulator-name = "VDDAO_3V3";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + vin-supply = <&main_12v>;
> + regulator-always-on;
> + };
> +
> + hdmi-connector {
> + compatible = "hdmi-connector";
> + type = "a";
> +
> + port {
> + hdmi_connector_in: endpoint {
> + remote-endpoint = <&hdmi_tx_tmds_out>;
> + };
> + };
> + };
> +
> + sound {
> + compatible = "amlogic,axg-sound-card";
> + model = "G12B-ODROID-N2";
> + audio-aux-devs = <&tdmout_b>;
> + audio-routing = "TDMOUT_B IN 0", "FRDDR_A OUT 1",
> + "TDMOUT_B IN 1", "FRDDR_B OUT 1",
> + "TDMOUT_B IN 2", "FRDDR_C OUT 1",
> + "TDM_B Playback", "TDMOUT_B OUT";
> +
> + assigned-clocks = <&clkc CLKID_MPLL2>,
> + <&clkc CLKID_MPLL0>,
> + <&clkc CLKID_MPLL1>;
> + assigned-clock-parents = <0>, <0>, <0>;
> + assigned-clock-rates = <294912000>,
> + <270950400>,
> + <393216000>;
> + status = "okay";
> +
> + dai-link-0 {
> + sound-dai = <&frddr_a>;
> + };
> +
> + dai-link-1 {
> + sound-dai = <&frddr_b>;
> + };
> +
> + dai-link-2 {
> + sound-dai = <&frddr_c>;
> + };
> +
> + /* 8ch hdmi interface */
> + dai-link-3 {
> + sound-dai = <&tdmif_b>;
> + dai-format = "i2s";
> + dai-tdm-slot-tx-mask-0 = <1 1>;
> + dai-tdm-slot-tx-mask-1 = <1 1>;
> + dai-tdm-slot-tx-mask-2 = <1 1>;
> + dai-tdm-slot-tx-mask-3 = <1 1>;
> + mclk-fs = <256>;
> +
> + codec {
> + sound-dai = <&tohdmitx TOHDMITX_I2S_IN_B>;
> + };
> + };
> +
> + /* hdmi glue */
> + dai-link-4 {
> + sound-dai = <&tohdmitx TOHDMITX_I2S_OUT>;
> +
> + codec {
> + sound-dai = <&hdmi_tx>;
> + };
> + };
> + };
> +};
> +
> +&arb {
> + status = "okay";
> +};
> +
> +&cec_AO {
> + pinctrl-0 = <&cec_ao_a_h_pins>;
> + pinctrl-names = "default";
> + status = "disabled";
> + hdmi-phandle = <&hdmi_tx>;
> +};
> +
> +&cecb_AO {
> + pinctrl-0 = <&cec_ao_b_h_pins>;
> + pinctrl-names = "default";
> + status = "okay";
> + hdmi-phandle = <&hdmi_tx>;
> +};
> +
> +&clkc_audio {
> + status = "okay";
> +};
> +
> +&cpu0 {
> + cpu-supply = <&vddcpu_b>;
> + operating-points-v2 = <&cpu_opp_table_0>;
> + clocks = <&clkc CLKID_CPU_CLK>;
> + clock-latency = <50000>;
> +};
> +
> +&cpu1 {
> + cpu-supply = <&vddcpu_b>;
> + operating-points-v2 = <&cpu_opp_table_0>;
> + clocks = <&clkc CLKID_CPU_CLK>;
> + clock-latency = <50000>;
> +};
> +
> +&cpu100 {
> + cpu-supply = <&vddcpu_a>;
> + operating-points-v2 = <&cpub_opp_table_1>;
> + clocks = <&clkc CLKID_CPUB_CLK>;
> + clock-latency = <50000>;
> +};
> +
> +&cpu101 {
> + cpu-supply = <&vddcpu_a>;
> + operating-points-v2 = <&cpub_opp_table_1>;
> + clocks = <&clkc CLKID_CPUB_CLK>;
> + clock-latency = <50000>;
> +};
> +
> +&cpu102 {
> + cpu-supply = <&vddcpu_a>;
> + operating-points-v2 = <&cpub_opp_table_1>;
> + clocks = <&clkc CLKID_CPUB_CLK>;
> + clock-latency = <50000>;
> +};
> +
> +&cpu103 {
> + cpu-supply = <&vddcpu_a>;
> + operating-points-v2 = <&cpub_opp_table_1>;
> + clocks = <&clkc CLKID_CPUB_CLK>;
> + clock-latency = <50000>;
> +};
> +
> +&ext_mdio {
> + external_phy: ethernet-phy@0 {
> + /* Realtek RTL8211F (0x001cc916) */
> + reg = <0>;
> + max-speed = <1000>;
> +
> + reset-assert-us = <10000>;
> + reset-deassert-us = <30000>;
> + reset-gpios = <&gpio GPIOZ_15 (GPIO_ACTIVE_LOW | GPIO_OPEN_DRAIN)>;
> +
> + interrupt-parent = <&gpio_intc>;
> + /* MAC_INTR on GPIOZ_14 */
> + interrupts = <26 IRQ_TYPE_LEVEL_LOW>;
> + };
> +};
> +
> +&ethmac {
> + pinctrl-0 = <&eth_pins>, <&eth_rgmii_pins>;
> + pinctrl-names = "default";
> + status = "okay";
> + phy-mode = "rgmii";
> + phy-handle = <&external_phy>;
> + amlogic,tx-delay-ns = <2>;
> +};
> +
> +&frddr_a {
> + status = "okay";
> +};
> +
> +&frddr_b {
> + status = "okay";
> +};
> +
> +&frddr_c {
> + status = "okay";
> +};
> +
> +&gpio {
> + /*
> + * WARNING: The USB Hub on the Odroid-N2 needs a reset signal
> + * to be turned high in order to be detected by the USB Controller
> + * This signal should be handled by a USB specific power sequence
> + * in order to reset the Hub when USB bus is powered down.
> + */
> + usb-hub {
> + gpio-hog;
> + gpios = <GPIOH_4 GPIO_ACTIVE_HIGH>;
> + output-high;
> + line-name = "usb-hub-reset";
> + };
> +};
> +
> +&hdmi_tx {
> + status = "okay";
> + pinctrl-0 = <&hdmitx_hpd_pins>, <&hdmitx_ddc_pins>;
> + pinctrl-names = "default";
> + hdmi-supply = <&vcc_5v>;
> +};
> +
> +&hdmi_tx_tmds_port {
> + hdmi_tx_tmds_out: endpoint {
> + remote-endpoint = <&hdmi_connector_in>;
> + };
> +};
> +
> +&ir {
> + status = "okay";
> + pinctrl-0 = <&remote_input_ao_pins>;
> + pinctrl-names = "default";
> + linux,rc-map-name = "rc-odroid";
> +};
> +
> +&pwm_ab {
> + pinctrl-0 = <&pwm_a_e_pins>;
> + pinctrl-names = "default";
> + clocks = <&xtal>;
> + clock-names = "clkin0";
> + status = "okay";
> +};
> +
> +&pwm_AO_cd {
> + pinctrl-0 = <&pwm_ao_d_e_pins>;
> + pinctrl-names = "default";
> + clocks = <&xtal>;
> + clock-names = "clkin1";
> + status = "okay";
> +};
> +
> +/* SD card */
> +&sd_emmc_b {
> + status = "okay";
> + pinctrl-0 = <&sdcard_c_pins>;
> + pinctrl-1 = <&sdcard_clk_gate_c_pins>;
> + pinctrl-names = "default", "clk-gate";
> +
> + bus-width = <4>;
> + cap-sd-highspeed;
> + max-frequency = <50000000>;
> + disable-wp;
> +
> + cd-gpios = <&gpio GPIOC_6 GPIO_ACTIVE_LOW>;
> + vmmc-supply = <&tflash_vdd>;
> + vqmmc-supply = <&tf_io>;
> +
> +};
> +
> +/* eMMC */
> +&sd_emmc_c {
> + status = "okay";
> + pinctrl-0 = <&emmc_ctrl_pins>, <&emmc_data_8b_pins>, <&emmc_ds_pins>;
> + pinctrl-1 = <&emmc_clk_gate_pins>;
> + pinctrl-names = "default", "clk-gate";
> +
> + bus-width = <8>;
> + cap-mmc-highspeed;
> + mmc-ddr-1_8v;
> + mmc-hs200-1_8v;
> + max-frequency = <200000000>;
> + disable-wp;
> +
> + mmc-pwrseq = <&emmc_pwrseq>;
> + vmmc-supply = <&vcc_3v3>;
> + vqmmc-supply = <&flash_1v8>;
> +};
> +
> +/*
> + * EMMC_D4, EMMC_D5, EMMC_D6 and EMMC_D7 pins are shared between SPI NOR pins
> + * and eMMC Data 4 to 7 pins.
> + * Replace emmc_data_8b_pins to emmc_data_4b_pins from sd_emmc_c pinctrl-0,
> + * and change bus-width to 4 then spifc can be enabled.
> + * The SW1 slide should also be set to the correct position.
> + */
> +&spifc {
> + status = "disabled";
> + pinctrl-0 = <&nor_pins>;
> + pinctrl-names = "default";
> +
> + mx25u64: spi-flash@0 {
> + #address-cells = <1>;
> + #size-cells = <1>;
> + compatible = "mxicy,mx25u6435f", "jedec,spi-nor";
> + reg = <0>;
> + spi-max-frequency = <104000000>;
> + };
> +};
> +
> +&tdmif_b {
> + status = "okay";
> +};
> +
> +&tdmout_b {
> + status = "okay";
> +};
> +
> +&tohdmitx {
> + status = "okay";
> +};
> +
> +&uart_AO {
> + status = "okay";
> + pinctrl-0 = <&uart_ao_a_pins>;
> + pinctrl-names = "default";
> +};
> +
> +&usb {
> + status = "okay";
> + vbus-supply = <&usb_pwr_en>;
> +};
> +
> +&usb2_phy0 {
> + phy-supply = <&vcc_5v>;
> +};
> +
> +&usb2_phy1 {
> + /* Enable the hub which is connected to this port */
> + phy-supply = <&hub_5v>;
> +};
>

Acked-by: Neil Armstrong <[email protected]>

2020-07-21 08:12:43

by Neil Armstrong

[permalink] [raw]
Subject: Re: [PATCH 3/3] arm64: dts: meson: add support for the ODROID-N2+

On 19/07/2020 16:10, Christian Hewitt wrote:
> HardKernel ODROID-N2+ uses an Amlogic S922X rev. C chip capable of higher
> clock speeds than the original ODROID-N2. Hardkernel supports the big cpu
> cluster at 2.4GHz and the little cpu cluster at 2.0GHz. Opp points and
> regulator changess are from the HardKernel Linux kernel sources.
>
> Suggested-by: Dongjin Kim <[email protected]>
> Signed-off-by: Christian Hewitt <[email protected]>
> ---
> arch/arm64/boot/dts/amlogic/Makefile | 1 +
> .../dts/amlogic/meson-g12b-odroid-n2-plus.dts | 53 +++++++++++++++++++
> 2 files changed, 54 insertions(+)
> create mode 100644 arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts
>
> diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
> index 5cac4d1d487d..6dc508b80133 100644
> --- a/arch/arm64/boot/dts/amlogic/Makefile
> +++ b/arch/arm64/boot/dts/amlogic/Makefile
> @@ -8,6 +8,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-g12b-gtking-pro.dtb
> dtb-$(CONFIG_ARCH_MESON) += meson-g12b-a311d-khadas-vim3.dtb
> dtb-$(CONFIG_ARCH_MESON) += meson-g12b-s922x-khadas-vim3.dtb
> dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2.dtb
> +dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2-plus.dtb
> dtb-$(CONFIG_ARCH_MESON) += meson-g12b-ugoos-am6.dtb
> dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-kii-pro.dtb
> dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-nanopi-k2.dtb
> diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts
> new file mode 100644
> index 000000000000..99e96be509f8
> --- /dev/null
> +++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts
> @@ -0,0 +1,53 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright (c) 2019 BayLibre, SAS
> + * Author: Neil Armstrong <[email protected]>
> + */
> +
> +/dts-v1/;
> +
> +#include "meson-g12b-odroid-n2.dtsi"
> +
> +/ {
> + compatible = "hardkernel,odroid-n2-plus", "amlogic,s922x", "amlogic,g12b";
> + model = "Hardkernel ODROID-N2+";
> +
> + vddcpu_a: regulator-vddcpu-a {
> + regulator-min-microvolt = <680000>;
> + regulator-max-microvolt = <1040000>;
> +
> + pwms = <&pwm_ab 0 1500 0>;
> + };
> +
> + vddcpu_b: regulator-vddcpu-b {
> + regulator-min-microvolt = <680000>;
> + regulator-max-microvolt = <1040000>;
> +
> + pwms = <&pwm_AO_cd 1 1500 0>;
> + };
> +
> + cpu_opp_table_0: opp-table-0 {
> + opp-1908000000 {
> + opp-hz = /bits/ 64 <1908000000>;
> + opp-microvolt = <1030000>;
> + };
> +
> + opp-2016000000 {
> + opp-hz = /bits/ 64 <2016000000>;
> + opp-microvolt = <1040000>;
> + };
> + };
> +
> + cpub_opp_table_1: opp-table-1 {
> + opp-2304000000 {
> + opp-hz = /bits/ 64 <2304000000>;
> + opp-microvolt = <1030000>;
> + };
> +
> + opp-2400000000 {
> + opp-hz = /bits/ 64 <2400000000>;
> + opp-microvolt = <1040000>;
> + };
> + };
> +};
> +
>
Reviewed-by: Neil Armstrong <[email protected]>

2020-07-21 08:21:00

by Neil Armstrong

[permalink] [raw]
Subject: Re: [PATCH 3/3] arm64: dts: meson: add support for the ODROID-N2+

On 21/07/2020 10:10, Neil Armstrong wrote:
> On 19/07/2020 16:10, Christian Hewitt wrote:
>> HardKernel ODROID-N2+ uses an Amlogic S922X rev. C chip capable of higher
>> clock speeds than the original ODROID-N2. Hardkernel supports the big cpu
>> cluster at 2.4GHz and the little cpu cluster at 2.0GHz. Opp points and
>> regulator changess are from the HardKernel Linux kernel sources.
>>
>> Suggested-by: Dongjin Kim <[email protected]>
>> Signed-off-by: Christian Hewitt <[email protected]>
>> ---
>> arch/arm64/boot/dts/amlogic/Makefile | 1 +
>> .../dts/amlogic/meson-g12b-odroid-n2-plus.dts | 53 +++++++++++++++++++
>> 2 files changed, 54 insertions(+)
>> create mode 100644 arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts
>>
>> diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
>> index 5cac4d1d487d..6dc508b80133 100644
>> --- a/arch/arm64/boot/dts/amlogic/Makefile
>> +++ b/arch/arm64/boot/dts/amlogic/Makefile
>> @@ -8,6 +8,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-g12b-gtking-pro.dtb
>> dtb-$(CONFIG_ARCH_MESON) += meson-g12b-a311d-khadas-vim3.dtb
>> dtb-$(CONFIG_ARCH_MESON) += meson-g12b-s922x-khadas-vim3.dtb
>> dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2.dtb
>> +dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2-plus.dtb
>> dtb-$(CONFIG_ARCH_MESON) += meson-g12b-ugoos-am6.dtb
>> dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-kii-pro.dtb
>> dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-nanopi-k2.dtb
>> diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts
>> new file mode 100644
>> index 000000000000..99e96be509f8
>> --- /dev/null
>> +++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts
>> @@ -0,0 +1,53 @@
>> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
>> +/*
>> + * Copyright (c) 2019 BayLibre, SAS
>> + * Author: Neil Armstrong <[email protected]>
>> + */
>> +
>> +/dts-v1/;
>> +
>> +#include "meson-g12b-odroid-n2.dtsi"
>> +
>> +/ {
>> + compatible = "hardkernel,odroid-n2-plus", "amlogic,s922x", "amlogic,g12b";
>> + model = "Hardkernel ODROID-N2+";
>> +
>> + vddcpu_a: regulator-vddcpu-a {
>> + regulator-min-microvolt = <680000>;
>> + regulator-max-microvolt = <1040000>;
>> +
>> + pwms = <&pwm_ab 0 1500 0>;
>> + };
>> +
>> + vddcpu_b: regulator-vddcpu-b {
>> + regulator-min-microvolt = <680000>;
>> + regulator-max-microvolt = <1040000>;
>> +
>> + pwms = <&pwm_AO_cd 1 1500 0>;
>> + };
>> +
>> + cpu_opp_table_0: opp-table-0 {
>> + opp-1908000000 {
>> + opp-hz = /bits/ 64 <1908000000>;
>> + opp-microvolt = <1030000>;
>> + };
>> +
>> + opp-2016000000 {
>> + opp-hz = /bits/ 64 <2016000000>;
>> + opp-microvolt = <1040000>;
>> + };
>> + };
>> +
>> + cpub_opp_table_1: opp-table-1 {
>> + opp-2304000000 {
>> + opp-hz = /bits/ 64 <2304000000>;
>> + opp-microvolt = <1030000>;
>> + };
>> +
>> + opp-2400000000 {
>> + opp-hz = /bits/ 64 <2400000000>;
>> + opp-microvolt = <1040000>;
>> + };
>> + };
>> +};
>> +
>>
> Reviewed-by: Neil Armstrong <[email protected]>
>

Wait no, it should be:

/ {
compatible = "hardkernel,odroid-n2-plus", "amlogic,s922x", "amlogic,g12b";
model = "Hardkernel ODROID-N2+";
};

&vddcpu_a {
regulator-min-microvolt = <680000>;
regulator-max-microvolt = <1040000>;

pwms = <&pwm_ab 0 1500 0>;
};

&vddcpu_b {
regulator-min-microvolt = <680000>;
regulator-max-microvolt = <1040000>;

pwms = <&pwm_AO_cd 1 1500 0>;
};

&cpu_opp_table_0 {
opp-1908000000 {
opp-hz = /bits/ 64 <1908000000>;
opp-microvolt = <1030000>;
};

opp-2016000000 {
opp-hz = /bits/ 64 <2016000000>;
opp-microvolt = <1040000>;
};
};

&cpub_opp_table_1 {
opp-2304000000 {
opp-hz = /bits/ 64 <2304000000>;
opp-microvolt = <1030000>;
};

opp-2400000000 {
opp-hz = /bits/ 64 <2400000000>;
opp-microvolt = <1040000>;
};
};

Neil

2020-07-21 09:14:55

by Jerome Brunet

[permalink] [raw]
Subject: Re: [PATCH 3/3] arm64: dts: meson: add support for the ODROID-N2+


On Sun 19 Jul 2020 at 16:10, Christian Hewitt <[email protected]> wrote:

> HardKernel ODROID-N2+ uses an Amlogic S922X rev. C chip capable of higher
> clock speeds than the original ODROID-N2. Hardkernel supports the big cpu
> cluster at 2.4GHz and the little cpu cluster at 2.0GHz. Opp points and
> regulator changess are from the HardKernel Linux kernel sources.
>
> Suggested-by: Dongjin Kim <[email protected]>
> Signed-off-by: Christian Hewitt <[email protected]>
> ---
> arch/arm64/boot/dts/amlogic/Makefile | 1 +
> .../dts/amlogic/meson-g12b-odroid-n2-plus.dts | 53 +++++++++++++++++++
> 2 files changed, 54 insertions(+)
> create mode 100644 arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts
>
> diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
> index 5cac4d1d487d..6dc508b80133 100644
> --- a/arch/arm64/boot/dts/amlogic/Makefile
> +++ b/arch/arm64/boot/dts/amlogic/Makefile
> @@ -8,6 +8,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-g12b-gtking-pro.dtb
> dtb-$(CONFIG_ARCH_MESON) += meson-g12b-a311d-khadas-vim3.dtb
> dtb-$(CONFIG_ARCH_MESON) += meson-g12b-s922x-khadas-vim3.dtb
> dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2.dtb
> +dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2-plus.dtb
> dtb-$(CONFIG_ARCH_MESON) += meson-g12b-ugoos-am6.dtb
> dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-kii-pro.dtb
> dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-nanopi-k2.dtb
> diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts
> new file mode 100644
> index 000000000000..99e96be509f8
> --- /dev/null
> +++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts
> @@ -0,0 +1,53 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright (c) 2019 BayLibre, SAS
> + * Author: Neil Armstrong <[email protected]>
> + */
> +
> +/dts-v1/;
> +
> +#include "meson-g12b-odroid-n2.dtsi"
> +
> +/ {
> + compatible = "hardkernel,odroid-n2-plus", "amlogic,s922x", "amlogic,g12b";
> + model = "Hardkernel ODROID-N2+";
> +
> + vddcpu_a: regulator-vddcpu-a {
> + regulator-min-microvolt = <680000>;
> + regulator-max-microvolt = <1040000>;
> +
> + pwms = <&pwm_ab 0 1500 0>;
> + };
> +
> + vddcpu_b: regulator-vddcpu-b {
> + regulator-min-microvolt = <680000>;
> + regulator-max-microvolt = <1040000>;
> +
> + pwms = <&pwm_AO_cd 1 1500 0>;
> + };
> +
> + cpu_opp_table_0: opp-table-0 {
> + opp-1908000000 {
> + opp-hz = /bits/ 64 <1908000000>;
> + opp-microvolt = <1030000>;
> + };
> +
> + opp-2016000000 {
> + opp-hz = /bits/ 64 <2016000000>;
> + opp-microvolt = <1040000>;
> + };
> + };
> +
> + cpub_opp_table_1: opp-table-1 {
> + opp-2304000000 {
> + opp-hz = /bits/ 64 <2304000000>;
> + opp-microvolt = <1030000>;
> + };
> +
> + opp-2400000000 {
> + opp-hz = /bits/ 64 <2400000000>;
> + opp-microvolt = <1040000>;
> + };
> + };

Are this opp specific to the N2+ or S922x rev C ?
If it is the latter, shouldn't these be in s922x-revC dtsi ?

> +};
> +

2020-07-21 09:26:26

by Dongjin Kim

[permalink] [raw]
Subject: Re: [PATCH 3/3] arm64: dts: meson: add support for the ODROID-N2+

Can we use "Hardkernel ODROID-N2Plus" instead of "Hardkernel ODROID-N2+"?

Thanks,
Dongjin.



On Tue, Jul 21, 2020 at 5:24 PM Neil Armstrong <[email protected]> wrote:
>
> On 21/07/2020 10:10, Neil Armstrong wrote:
> > On 19/07/2020 16:10, Christian Hewitt wrote:
> >> HardKernel ODROID-N2+ uses an Amlogic S922X rev. C chip capable of higher
> >> clock speeds than the original ODROID-N2. Hardkernel supports the big cpu
> >> cluster at 2.4GHz and the little cpu cluster at 2.0GHz. Opp points and
> >> regulator changess are from the HardKernel Linux kernel sources.
> >>
> >> Suggested-by: Dongjin Kim <[email protected]>
> >> Signed-off-by: Christian Hewitt <[email protected]>
> >> ---
> >> arch/arm64/boot/dts/amlogic/Makefile | 1 +
> >> .../dts/amlogic/meson-g12b-odroid-n2-plus.dts | 53 +++++++++++++++++++
> >> 2 files changed, 54 insertions(+)
> >> create mode 100644 arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts
> >>
> >> diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
> >> index 5cac4d1d487d..6dc508b80133 100644
> >> --- a/arch/arm64/boot/dts/amlogic/Makefile
> >> +++ b/arch/arm64/boot/dts/amlogic/Makefile
> >> @@ -8,6 +8,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-g12b-gtking-pro.dtb
> >> dtb-$(CONFIG_ARCH_MESON) += meson-g12b-a311d-khadas-vim3.dtb
> >> dtb-$(CONFIG_ARCH_MESON) += meson-g12b-s922x-khadas-vim3.dtb
> >> dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2.dtb
> >> +dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2-plus.dtb
> >> dtb-$(CONFIG_ARCH_MESON) += meson-g12b-ugoos-am6.dtb
> >> dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-kii-pro.dtb
> >> dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-nanopi-k2.dtb
> >> diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts
> >> new file mode 100644
> >> index 000000000000..99e96be509f8
> >> --- /dev/null
> >> +++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts
> >> @@ -0,0 +1,53 @@
> >> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> >> +/*
> >> + * Copyright (c) 2019 BayLibre, SAS
> >> + * Author: Neil Armstrong <[email protected]>
> >> + */
> >> +
> >> +/dts-v1/;
> >> +
> >> +#include "meson-g12b-odroid-n2.dtsi"
> >> +
> >> +/ {
> >> + compatible = "hardkernel,odroid-n2-plus", "amlogic,s922x", "amlogic,g12b";
> >> + model = "Hardkernel ODROID-N2+";
> >> +
> >> + vddcpu_a: regulator-vddcpu-a {
> >> + regulator-min-microvolt = <680000>;
> >> + regulator-max-microvolt = <1040000>;
> >> +
> >> + pwms = <&pwm_ab 0 1500 0>;
> >> + };
> >> +
> >> + vddcpu_b: regulator-vddcpu-b {
> >> + regulator-min-microvolt = <680000>;
> >> + regulator-max-microvolt = <1040000>;
> >> +
> >> + pwms = <&pwm_AO_cd 1 1500 0>;
> >> + };
> >> +
> >> + cpu_opp_table_0: opp-table-0 {
> >> + opp-1908000000 {
> >> + opp-hz = /bits/ 64 <1908000000>;
> >> + opp-microvolt = <1030000>;
> >> + };
> >> +
> >> + opp-2016000000 {
> >> + opp-hz = /bits/ 64 <2016000000>;
> >> + opp-microvolt = <1040000>;
> >> + };
> >> + };
> >> +
> >> + cpub_opp_table_1: opp-table-1 {
> >> + opp-2304000000 {
> >> + opp-hz = /bits/ 64 <2304000000>;
> >> + opp-microvolt = <1030000>;
> >> + };
> >> +
> >> + opp-2400000000 {
> >> + opp-hz = /bits/ 64 <2400000000>;
> >> + opp-microvolt = <1040000>;
> >> + };
> >> + };
> >> +};
> >> +
> >>
> > Reviewed-by: Neil Armstrong <[email protected]>
> >
>
> Wait no, it should be:
>
> / {
> compatible = "hardkernel,odroid-n2-plus", "amlogic,s922x", "amlogic,g12b";
> model = "Hardkernel ODROID-N2+";
> };
>
> &vddcpu_a {
> regulator-min-microvolt = <680000>;
> regulator-max-microvolt = <1040000>;
>
> pwms = <&pwm_ab 0 1500 0>;
> };
>
> &vddcpu_b {
> regulator-min-microvolt = <680000>;
> regulator-max-microvolt = <1040000>;
>
> pwms = <&pwm_AO_cd 1 1500 0>;
> };
>
> &cpu_opp_table_0 {
> opp-1908000000 {
> opp-hz = /bits/ 64 <1908000000>;
> opp-microvolt = <1030000>;
> };
>
> opp-2016000000 {
> opp-hz = /bits/ 64 <2016000000>;
> opp-microvolt = <1040000>;
> };
> };
>
> &cpub_opp_table_1 {
> opp-2304000000 {
> opp-hz = /bits/ 64 <2304000000>;
> opp-microvolt = <1030000>;
> };
>
> opp-2400000000 {
> opp-hz = /bits/ 64 <2400000000>;
> opp-microvolt = <1040000>;
> };
> };
>
> Neil
>
> _______________________________________________
> linux-arm-kernel mailing list
> [email protected]
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

2020-07-21 09:58:56

by Christian Hewitt

[permalink] [raw]
Subject: Re: [PATCH 3/3] arm64: dts: meson: add support for the ODROID-N2+


> On 21 Jul 2020, at 12:19 pm, Neil Armstrong <[email protected]> wrote:
>
> On 21/07/2020 10:10, Neil Armstrong wrote:
>> On 19/07/2020 16:10, Christian Hewitt wrote:
>>> HardKernel ODROID-N2+ uses an Amlogic S922X rev. C chip capable of higher
>>> clock speeds than the original ODROID-N2. Hardkernel supports the big cpu
>>> cluster at 2.4GHz and the little cpu cluster at 2.0GHz. Opp points and
>>> regulator changess are from the HardKernel Linux kernel sources.
>>>
>>> Suggested-by: Dongjin Kim <[email protected]>
>>> Signed-off-by: Christian Hewitt <[email protected]>
>>> ---
>>> arch/arm64/boot/dts/amlogic/Makefile | 1 +
>>> .../dts/amlogic/meson-g12b-odroid-n2-plus.dts | 53 +++++++++++++++++++
>>> 2 files changed, 54 insertions(+)
>>> create mode 100644 arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts
>>>
>>> diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
>>> index 5cac4d1d487d..6dc508b80133 100644
>>> --- a/arch/arm64/boot/dts/amlogic/Makefile
>>> +++ b/arch/arm64/boot/dts/amlogic/Makefile
>>> @@ -8,6 +8,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-g12b-gtking-pro.dtb
>>> dtb-$(CONFIG_ARCH_MESON) += meson-g12b-a311d-khadas-vim3.dtb
>>> dtb-$(CONFIG_ARCH_MESON) += meson-g12b-s922x-khadas-vim3.dtb
>>> dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2.dtb
>>> +dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2-plus.dtb
>>> dtb-$(CONFIG_ARCH_MESON) += meson-g12b-ugoos-am6.dtb
>>> dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-kii-pro.dtb
>>> dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-nanopi-k2.dtb
>>> diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts
>>> new file mode 100644
>>> index 000000000000..99e96be509f8
>>> --- /dev/null
>>> +++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts
>>> @@ -0,0 +1,53 @@
>>> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
>>> +/*
>>> + * Copyright (c) 2019 BayLibre, SAS
>>> + * Author: Neil Armstrong <[email protected]>
>>> + */
>>> +
>>> +/dts-v1/;
>>> +
>>> +#include "meson-g12b-odroid-n2.dtsi"
>>> +
>>> +/ {
>>> + compatible = "hardkernel,odroid-n2-plus", "amlogic,s922x", "amlogic,g12b";
>>> + model = "Hardkernel ODROID-N2+";
>>> +
>>> + vddcpu_a: regulator-vddcpu-a {
>>> + regulator-min-microvolt = <680000>;
>>> + regulator-max-microvolt = <1040000>;
>>> +
>>> + pwms = <&pwm_ab 0 1500 0>;
>>> + };
>>> +
>>> + vddcpu_b: regulator-vddcpu-b {
>>> + regulator-min-microvolt = <680000>;
>>> + regulator-max-microvolt = <1040000>;
>>> +
>>> + pwms = <&pwm_AO_cd 1 1500 0>;
>>> + };
>>> +
>>> + cpu_opp_table_0: opp-table-0 {
>>> + opp-1908000000 {
>>> + opp-hz = /bits/ 64 <1908000000>;
>>> + opp-microvolt = <1030000>;
>>> + };
>>> +
>>> + opp-2016000000 {
>>> + opp-hz = /bits/ 64 <2016000000>;
>>> + opp-microvolt = <1040000>;
>>> + };
>>> + };
>>> +
>>> + cpub_opp_table_1: opp-table-1 {
>>> + opp-2304000000 {
>>> + opp-hz = /bits/ 64 <2304000000>;
>>> + opp-microvolt = <1030000>;
>>> + };
>>> +
>>> + opp-2400000000 {
>>> + opp-hz = /bits/ 64 <2400000000>;
>>> + opp-microvolt = <1040000>;
>>> + };
>>> + };
>>> +};
>>> +
>>>
>> Reviewed-by: Neil Armstrong <[email protected]>
>>
>
> Wait no, it should be:
>
> / {
> compatible = "hardkernel,odroid-n2-plus", "amlogic,s922x", "amlogic,g12b";
> model = "Hardkernel ODROID-N2+";
> };
>
> &vddcpu_a {
> regulator-min-microvolt = <680000>;
> regulator-max-microvolt = <1040000>;
>
> pwms = <&pwm_ab 0 1500 0>;
> };
>
> &vddcpu_b {
> regulator-min-microvolt = <680000>;
> regulator-max-microvolt = <1040000>;
>
> pwms = <&pwm_AO_cd 1 1500 0>;
> };
>
> &cpu_opp_table_0 {
> opp-1908000000 {
> opp-hz = /bits/ 64 <1908000000>;
> opp-microvolt = <1030000>;
> };
>
> opp-2016000000 {
> opp-hz = /bits/ 64 <2016000000>;
> opp-microvolt = <1040000>;
> };
> };
>
> &cpub_opp_table_1 {
> opp-2304000000 {
> opp-hz = /bits/ 64 <2304000000>;
> opp-microvolt = <1030000>;
> };
>
> opp-2400000000 {
> opp-hz = /bits/ 64 <2400000000>;
> opp-microvolt = <1040000>;
> };
> };
>
> Neil

Okay, I will send corrected v2 and with model name changed.

Christian

2020-07-21 11:09:25

by Christian Hewitt

[permalink] [raw]
Subject: Re: [PATCH 3/3] arm64: dts: meson: add support for the ODROID-N2+


> On 21 Jul 2020, at 1:14 pm, Jerome Brunet <[email protected]> wrote:
>
> On Sun 19 Jul 2020 at 16:10, Christian Hewitt <[email protected]> wrote:
>
>> HardKernel ODROID-N2+ uses an Amlogic S922X rev. C chip capable of higher
>> clock speeds than the original ODROID-N2. Hardkernel supports the big cpu
>> cluster at 2.4GHz and the little cpu cluster at 2.0GHz. Opp points and
>> regulator changess are from the HardKernel Linux kernel sources.
>>
>> Suggested-by: Dongjin Kim <[email protected]>
>> Signed-off-by: Christian Hewitt <[email protected]>
>> ---
>> arch/arm64/boot/dts/amlogic/Makefile | 1 +
>> .../dts/amlogic/meson-g12b-odroid-n2-plus.dts | 53 +++++++++++++++++++
>> 2 files changed, 54 insertions(+)
>> create mode 100644 arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts
>>
>> diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile
>> index 5cac4d1d487d..6dc508b80133 100644
>> --- a/arch/arm64/boot/dts/amlogic/Makefile
>> +++ b/arch/arm64/boot/dts/amlogic/Makefile
>> @@ -8,6 +8,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-g12b-gtking-pro.dtb
>> dtb-$(CONFIG_ARCH_MESON) += meson-g12b-a311d-khadas-vim3.dtb
>> dtb-$(CONFIG_ARCH_MESON) += meson-g12b-s922x-khadas-vim3.dtb
>> dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2.dtb
>> +dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2-plus.dtb
>> dtb-$(CONFIG_ARCH_MESON) += meson-g12b-ugoos-am6.dtb
>> dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-kii-pro.dtb
>> dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-nanopi-k2.dtb
>> diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts
>> new file mode 100644
>> index 000000000000..99e96be509f8
>> --- /dev/null
>> +++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts
>> @@ -0,0 +1,53 @@
>> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
>> +/*
>> + * Copyright (c) 2019 BayLibre, SAS
>> + * Author: Neil Armstrong <[email protected]>
>> + */
>> +
>> +/dts-v1/;
>> +
>> +#include "meson-g12b-odroid-n2.dtsi"
>> +
>> +/ {
>> + compatible = "hardkernel,odroid-n2-plus", "amlogic,s922x", "amlogic,g12b";
>> + model = "Hardkernel ODROID-N2+";
>> +
>> + vddcpu_a: regulator-vddcpu-a {
>> + regulator-min-microvolt = <680000>;
>> + regulator-max-microvolt = <1040000>;
>> +
>> + pwms = <&pwm_ab 0 1500 0>;
>> + };
>> +
>> + vddcpu_b: regulator-vddcpu-b {
>> + regulator-min-microvolt = <680000>;
>> + regulator-max-microvolt = <1040000>;
>> +
>> + pwms = <&pwm_AO_cd 1 1500 0>;
>> + };
>> +
>> + cpu_opp_table_0: opp-table-0 {
>> + opp-1908000000 {
>> + opp-hz = /bits/ 64 <1908000000>;
>> + opp-microvolt = <1030000>;
>> + };
>> +
>> + opp-2016000000 {
>> + opp-hz = /bits/ 64 <2016000000>;
>> + opp-microvolt = <1040000>;
>> + };
>> + };
>> +
>> + cpub_opp_table_1: opp-table-1 {
>> + opp-2304000000 {
>> + opp-hz = /bits/ 64 <2304000000>;
>> + opp-microvolt = <1030000>;
>> + };
>> +
>> + opp-2400000000 {
>> + opp-hz = /bits/ 64 <2400000000>;
>> + opp-microvolt = <1040000>;
>> + };
>> + };
>
> Are this opp specific to the N2+ or S922x rev C ?
> If it is the latter, shouldn't these be in s922x-revC dtsi ?

N2+ is currently the only known device with RevC chip (and shipping with
a huge heatsink) so we don’t know. I prefer to to put them in the board
dts for now and move to a common dtsi in the future once we’ve seen more
devices in the wild and proven they can handle the overclock.

Christian

2020-07-22 23:06:56

by Stefan Agner

[permalink] [raw]
Subject: Re: [PATCH 3/3] arm64: dts: meson: add support for the ODROID-N2+

Hi Christian,

On 2020-07-19 16:10, Christian Hewitt wrote:
> HardKernel ODROID-N2+ uses an Amlogic S922X rev. C chip capable of higher
> clock speeds than the original ODROID-N2. Hardkernel supports the big cpu
> cluster at 2.4GHz and the little cpu cluster at 2.0GHz. Opp points and
> regulator changess are from the HardKernel Linux kernel sources.

According to the ODROID wiki those values are already in the
overclocking range:
https://wiki.odroid.com/odroid-n2/hardware/overclocking

From what I can tell, for ODROID-N2 upstream Linux so far used defaults
from meson-g12b-s922x.dtsi, which were 1896MHz for the A53 and 1704MHz
for the A73 (so it seems currently the A73 running even 100MHz below
"Stock").

I guess we should pick either Stock or Overclock for the two models.
Unless there is another good reason not to?

--
Stefan

>
> Suggested-by: Dongjin Kim <[email protected]>
> Signed-off-by: Christian Hewitt <[email protected]>
> ---
> arch/arm64/boot/dts/amlogic/Makefile | 1 +
> .../dts/amlogic/meson-g12b-odroid-n2-plus.dts | 53 +++++++++++++++++++
> 2 files changed, 54 insertions(+)
> create mode 100644 arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts
>
> diff --git a/arch/arm64/boot/dts/amlogic/Makefile
> b/arch/arm64/boot/dts/amlogic/Makefile
> index 5cac4d1d487d..6dc508b80133 100644
> --- a/arch/arm64/boot/dts/amlogic/Makefile
> +++ b/arch/arm64/boot/dts/amlogic/Makefile
> @@ -8,6 +8,7 @@ dtb-$(CONFIG_ARCH_MESON) += meson-g12b-gtking-pro.dtb
> dtb-$(CONFIG_ARCH_MESON) += meson-g12b-a311d-khadas-vim3.dtb
> dtb-$(CONFIG_ARCH_MESON) += meson-g12b-s922x-khadas-vim3.dtb
> dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2.dtb
> +dtb-$(CONFIG_ARCH_MESON) += meson-g12b-odroid-n2-plus.dtb
> dtb-$(CONFIG_ARCH_MESON) += meson-g12b-ugoos-am6.dtb
> dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-kii-pro.dtb
> dtb-$(CONFIG_ARCH_MESON) += meson-gxbb-nanopi-k2.dtb
> diff --git a/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts
> b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts
> new file mode 100644
> index 000000000000..99e96be509f8
> --- /dev/null
> +++ b/arch/arm64/boot/dts/amlogic/meson-g12b-odroid-n2-plus.dts
> @@ -0,0 +1,53 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright (c) 2019 BayLibre, SAS
> + * Author: Neil Armstrong <[email protected]>
> + */
> +
> +/dts-v1/;
> +
> +#include "meson-g12b-odroid-n2.dtsi"
> +
> +/ {
> + compatible = "hardkernel,odroid-n2-plus", "amlogic,s922x", "amlogic,g12b";
> + model = "Hardkernel ODROID-N2+";
> +
> + vddcpu_a: regulator-vddcpu-a {
> + regulator-min-microvolt = <680000>;
> + regulator-max-microvolt = <1040000>;
> +
> + pwms = <&pwm_ab 0 1500 0>;
> + };
> +
> + vddcpu_b: regulator-vddcpu-b {
> + regulator-min-microvolt = <680000>;
> + regulator-max-microvolt = <1040000>;
> +
> + pwms = <&pwm_AO_cd 1 1500 0>;
> + };
> +
> + cpu_opp_table_0: opp-table-0 {
> + opp-1908000000 {
> + opp-hz = /bits/ 64 <1908000000>;
> + opp-microvolt = <1030000>;
> + };
> +
> + opp-2016000000 {
> + opp-hz = /bits/ 64 <2016000000>;
> + opp-microvolt = <1040000>;
> + };
> + };
> +
> + cpub_opp_table_1: opp-table-1 {
> + opp-2304000000 {
> + opp-hz = /bits/ 64 <2304000000>;
> + opp-microvolt = <1030000>;
> + };
> +
> + opp-2400000000 {
> + opp-hz = /bits/ 64 <2400000000>;
> + opp-microvolt = <1040000>;
> + };
> + };
> +};
> +

2020-07-23 21:13:37

by Rob Herring

[permalink] [raw]
Subject: Re: [PATCH 2/3] dt-bindings: arm: amlogic: add support for the ODROID-N2+

On Sun, 19 Jul 2020 14:10:33 +0000, Christian Hewitt wrote:
> HardKernel ODROID-N2+ uses a revised Amlogic S922X v2 chip that supports
> higher cpu clock speeds than the original ODROID-N2.
>
> Signed-off-by: Christian Hewitt <[email protected]>
> ---
> Documentation/devicetree/bindings/arm/amlogic.yaml | 1 +
> 1 file changed, 1 insertion(+)
>

Acked-by: Rob Herring <[email protected]>