On Mon, Jan 28, 2019 at 11:07:00PM +0000, Stuart Menefy wrote: > Add support for the RexNos REX-RED board which is based on the > Exynos5260. > > Signed-off-by: Stuart Menefy <stuart.menefy@xxxxxxxxxxxxxxxx> > --- > .../bindings/arm/samsung/samsung-boards.txt | 2 + > .../devicetree/bindings/vendor-prefixes.txt | 1 + > arch/arm/boot/dts/Makefile | 1 + > arch/arm/boot/dts/exynos5260-rexred.dts | 396 +++++++++++++++++++++ > 4 files changed, 400 insertions(+) > create mode 100644 arch/arm/boot/dts/exynos5260-rexred.dts > Hi Stuart, I thought you are going to resend remaining patches because you already started to send v2 of some of them. If not, let me do a quick review here so it will not get lost. > diff --git a/Documentation/devicetree/bindings/arm/samsung/samsung-boards.txt b/Documentation/devicetree/bindings/arm/samsung/samsung-boards.txt > index 56021bf2a916..f7dc2f9e3e57 100644 > --- a/Documentation/devicetree/bindings/arm/samsung/samsung-boards.txt > +++ b/Documentation/devicetree/bindings/arm/samsung/samsung-boards.txt > @@ -70,6 +70,8 @@ Required root node properties: > Octa board. > - "insignal,origen" - for Exynos4210-based Insignal Origen board. > - "insignal,origen4412" - for Exynos4412-based Insignal Origen board. > + * Rexnos > + - "rexnos,rexred" - for Exynos5260-based Rexnos RexRed board. > > > Optional nodes: > diff --git a/Documentation/devicetree/bindings/vendor-prefixes.txt b/Documentation/devicetree/bindings/vendor-prefixes.txt > index 389508584f48..0666385ec11e 100644 > --- a/Documentation/devicetree/bindings/vendor-prefixes.txt > +++ b/Documentation/devicetree/bindings/vendor-prefixes.txt > @@ -328,6 +328,7 @@ raydium Raydium Semiconductor Corp. > rda Unisoc Communications, Inc. > realtek Realtek Semiconductor Corp. > renesas Renesas Electronics Corporation > +rexnos REXNOS Co., Ltd > richtek Richtek Technology Corporation > ricoh Ricoh Co. Ltd. > rikomagic Rikomagic Tech Corp. Ltd > diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile > index bd40148a15b2..2c6190e0834b 100644 > --- a/arch/arm/boot/dts/Makefile > +++ b/arch/arm/boot/dts/Makefile > @@ -191,6 +191,7 @@ dtb-$(CONFIG_ARCH_EXYNOS5) += \ > exynos5250-snow.dtb \ > exynos5250-snow-rev5.dtb \ > exynos5250-spring.dtb \ > + exynos5260-rexred.dtb \ > exynos5260-xyref5260.dtb \ > exynos5410-odroidxu.dtb \ > exynos5410-smdk5410.dtb \ > diff --git a/arch/arm/boot/dts/exynos5260-rexred.dts b/arch/arm/boot/dts/exynos5260-rexred.dts > new file mode 100644 > index 000000000000..46187ad0c696 > --- /dev/null > +++ b/arch/arm/boot/dts/exynos5260-rexred.dts > @@ -0,0 +1,396 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * RexNos REX-RED Exynos5260 board device tree source > + * > + * Copyright (c) 2018 Garrison Technology Limited > + * derived from exynos5260-xyref5260.dts which was: > + * Copyright (c) 2013 Samsung Electronics Co., Ltd. > + */ > + > +/dts-v1/; > +#include <dt-bindings/gpio/gpio.h> > +#include <dt-bindings/input/input.h> > +#include "exynos5260.dtsi" > + > +/ { > + model = "Rexnos RexRed board based on EXYNOS5260"; > + compatible = "rexnos,rexred", "samsung,exynos5260", "samsung,exynos5"; > + > + memory@20000000 { > + device_type = "memory"; > + reg = <0x20000000 0x80000000>; > + }; > + > + chosen { > + bootargs = "console=ttySAC2,115200"; Please use the stdout-path string (with baudrate, like in Arndale). > + }; > + > + gpio_keys { > + compatible = "gpio-keys"; > + > + wakeup { > + label = "SW1"; > + gpios = <&gpx2 7 GPIO_ACTIVE_LOW>; > + linux,code = <KEY_WAKEUP>; > + wakeup-source; > + }; > + > + home { > + label = "S1"; > + gpios = <&gpx0 3 GPIO_ACTIVE_LOW>; > + linux,code = <KEY_HOME>; > + wakeup-source; All keys below do not look like typical wakeup sources. > + }; > + > + back { > + label = "S2"; > + gpios = <&gpx2 0 GPIO_ACTIVE_LOW>; > + linux,code = <KEY_BACK>; > + wakeup-source; > + }; > + > + menu { > + label = "S3"; > + gpios = <&gpx2 1 GPIO_ACTIVE_LOW>; > + linux,code = <KEY_MENU>; > + wakeup-source; > + }; > + > + up { > + label = "S4"; > + gpios = <&gpx2 4 GPIO_ACTIVE_LOW>; > + linux,code = <KEY_UP>; > + wakeup-source; > + }; > + > + down { > + label = "S5"; > + gpios = <&gpx2 5 GPIO_ACTIVE_LOW>; > + linux,code = <KEY_DOWN>; > + wakeup-source; > + }; > + }; > + > + fin_pll: xxti { > + compatible = "fixed-clock"; > + clock-frequency = <24000000>; > + clock-output-names = "fin_pll"; > + #clock-cells = <0>; > + }; > + > + firmware@02073000 { No leading zeros. Compile DTS with W=1, so it will print you the warnings. > + compatible = "samsung,secure-firmware"; > + reg = <0x02073000 0x1000>; > + }; > + > + xrtcxti: xrtcxti { > + compatible = "fixed-clock"; This should go from PMIC. > + clock-frequency = <32768>; > + clock-output-names = "xrtcxti"; > + #clock-cells = <0>; > + }; > +}; > + > +&pinctrl_0 { > + s2mpa01_irq: s2mpa01-irq { > + samsung,pins = "gpx0-2"; > + samsung,pin-function = <EXYNOS_PIN_FUNC_F>; > + samsung,pin-pud = <EXYNOS_PIN_PULL_UP>; > + samaung,pin-drv = <EXYNOS5260_PIN_DRV_LV1>; > + }; > +}; > + > +&uart0 { > + status = "okay"; > +}; > + > +&uart1 { > + status = "okay"; > +}; > + > +&uart2 { > + status = "okay"; > +}; > + > +&uart3 { > + status = "okay"; > +}; > + > +&hsi2c_0 { Please put all the label-nodes (after root {}) in alphabetical order. > + status = "okay"; > + samsung,polling-mode; Not used binding. > + clock-frequency = <100000>; > + > + s2mpa01_pmic@66 { Node name - just pmic because it must be a generic name for class of devices. > + compatible = "samsung,s2mpa01-pmic"; > + reg = <0x66>; > + interrupt-parent = <&gpx0>; > + interrupts = <2 IRQ_TYPE_LEVEL_LOW>; > + pinctrl-names = "default"; > + pinctrl-0 = <&s2mpa01_irq>; > + > + regulators { > + buck1_reg: BUCK1 { > + regulator-name = "vdd_mif range"; The name, just "vdd_mif". Space is unusual. > + regulator-min-microvolt = <600000>; > + regulator-max-microvolt = <1400000>; > + regulator-always-on; > + regulator-boot-on; > + regulator-ramp-delay = <12000>; This does not look like proper value for ramp delay. Please check if it is really used. > + }; > + > + buck2_reg: BUCK2 { > + regulator-name = "vdd_eagle"; > + regulator-min-microvolt = <600000>; > + regulator-max-microvolt = <1400000>; > + regulator-always-on; > + regulator-boot-on; > + regulator-ramp-delay = <12000>; > + }; > + > + buck3_reg: BUCK3 { > + regulator-name = "vdd_int range"; Name - ditto... and in other places as well. > + regulator-min-microvolt = <600000>; > + regulator-max-microvolt = <1200000>; > + regulator-always-on; > + regulator-boot-on; > + regulator-ramp-delay = <12000>; > + }; > + > + buck4_reg: BUCK4 { > + regulator-name = "vdd_g3d range"; > + regulator-min-microvolt = <600000>; > + regulator-max-microvolt = <1400000>; > + regulator-always-on; > + regulator-boot-on; > + regulator-ramp-delay = <12000>; > + }; > + > + buck5_reg: BUCK5 { > + regulator-name = "must-be-on-buck5"; If you have datasheet - please give it proper name. If not, just "buck5" and write a comment that it just has to be on. > + regulator-always-on; > + regulator-boot-on; > + regulator-ramp-delay = <12000>; > + }; > + > + buck6_reg: BUCK6 { > + regulator-name = "vdd_kfc"; > + regulator-min-microvolt = <600000>; > + regulator-max-microvolt = <1400000>; > + regulator-always-on; > + regulator-boot-on; > + regulator-ramp-delay = <12000>; > + }; > + > + buck7_reg: BUCK7 { > + regulator-name = "vdd_disp range"; > + regulator-min-microvolt = <600000>; > + regulator-max-microvolt = <1200000>; > + regulator-always-on; > + regulator-boot-on; > + regulator-ramp-delay = <1000>; > + }; > + > + buck8_reg: BUCK8 { > + regulator-name = "must-be-on-buck8"; Ditto name... and in other places as well. Provide also constraints (voltage) or document why they have to be missing. > + regulator-always-on; > + regulator-boot-on; > + regulator-ramp-delay = <12000>; > + }; > + > + buck9_reg: BUCK9 { > + regulator-name = "must-be-on-buck9"; > + regulator-always-on; > + regulator-boot-on; > + regulator-ramp-delay = <12000>; > + }; > + > + ldo1_reg: LDO1 { > + regulator-name = "must-be-on-ldo1"; > + regulator-min-microvolt = <1000000>; > + regulator-max-microvolt = <1000000>; > + regulator-always-on; > + }; > + > + ldo2_reg: LDO2 { > + regulator-name = "vddq_mmc2"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <3300000>; > + regulator-always-on; > + }; > + > + ldo3_reg: LDO3 { > + regulator-name = "vcc_1.8v_AP"; Don't mix lower case and uppercase, keep lower. The same in other places. > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + regulator-always-on; > + }; > + > + ldo4_reg: LDO4 { > + regulator-name = "must-be-on-ldo4"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + regulator-always-on; > + }; > + > + ldo5_reg: LDO5 { > + regulator-name = "must-be-on-ldo5"; > + regulator-min-microvolt = <1000000>; > + regulator-max-microvolt = <1000000>; > + regulator-always-on; > + }; > + > + ldo6_reg: LDO6 { > + regulator-name = "vcc_1.0v_MIPI"; > + regulator-min-microvolt = <1000000>; > + regulator-max-microvolt = <1000000>; > + regulator-always-on; > + }; > + > + ldo7_reg: LDO7 { > + regulator-name = "vcc_1.8v_MIPI"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + regulator-always-on; > + }; > + > + ldo10_reg: LDO10 { > + regulator-name = "vddq_mmc01"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + regulator-always-on; > + }; > + > + ldo11_reg: LDO11 { > + regulator-name = "vcc_3.3v_LCD"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + regulator-always-on; > + }; > + > + ldo13_reg: LDO13 { > + regulator-name = "vmmc2"; > + regulator-min-microvolt = <2800000>; > + regulator-max-microvolt = <2800000>; > + }; > + > + ldo14_reg: LDO14 { > + regulator-name = "Main Camera IO (1.8V)"; Unify the name style with others. > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + regulator-always-on; > + }; > + > + ldo15_reg: LDO15 { > + regulator-name = "Camera Sensor (2.8V)"; > + regulator-min-microvolt = <2800000>; > + regulator-max-microvolt = <2800000>; > + regulator-always-on; > + }; > + > + ldo16_reg: LDO16 { > + regulator-name = "Main Camera AF (2.8V)"; > + regulator-min-microvolt = <2800000>; > + regulator-max-microvolt = <2800000>; > + regulator-always-on; > + }; > + > + ldo17_reg: LDO17 { > + regulator-name = "VT Camera Core (1.8V)"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + regulator-always-on; > + }; > + > + ldo18_reg: LDO18 { > + regulator-name = "tsp_avdd_3.3v"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + regulator-always-on; > + }; > + > + ldo21_reg: LDO21 { > + regulator-name = "usb_vdd_3.0"; > + regulator-min-microvolt = <3000000>; > + regulator-max-microvolt = <3000000>; > + regulator-always-on; > + }; > + > + ldo22_reg: LDO22 { > + regulator-name = "usb_vdd_3.3"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + regulator-always-on; > + }; > + > + ldo19_reg: LDO19 { > + regulator-name = "vcc_3.0_evt1"; > + regulator-min-microvolt = <3000000>; > + regulator-max-microvolt = <3000000>; > + regulator-always-on; > + }; > + > + ldo20_reg: LDO20 { > + regulator-name = "vcc_1.8_evt1"; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + regulator-always-on; > + }; > + > + ldo24_reg: LDO24 { > + regulator-name = "tsp_io range"; > + regulator-min-microvolt = <2800000>; > + regulator-max-microvolt = <2800000>; > + regulator-always-on; > + }; > + > + ldo25_reg: LDO25 { > + regulator-name = "vcc_1.2v_cam"; > + regulator-min-microvolt = <1200000>; > + regulator-max-microvolt = <1200000>; > + regulator-always-on; > + regulator-boot-on; > + }; > + > + ldo26_reg: LDO26 { > + regulator-name = "vcc_1.2v_usb range"; > + regulator-min-microvolt = <1200000>; > + regulator-max-microvolt = <1200000>; > + regulator-always-on; > + regulator-boot-on; > + }; > + }; > + }; > +}; > + > +&mmc_0 { > + status = "okay"; > + non-removable; > + cap-mmc-highspeed; > + supports-hs200-mode; /* 200 MHz */ Comment not needed. > + card-detect-delay = <200>; > + samsung,dw-mshc-ciu-div = <3>; > + samsung,dw-mshc-sdr-timing = <0 4>; > + samsung,dw-mshc-ddr-timing = <0 2>; > + pinctrl-names = "default"; > + pinctrl-0 = <&sd0_rdqs &sd0_clk &sd0_cmd &sd0_bus1 &sd0_bus4 &sd0_bus8>; > + bus-width = <8>; > + vqmmc-supply = <&ldo10_reg>; Please add vmmc-supply. Probably you also need mmc-hs200-1_8v. > +}; > + > +/* mmc1 is connected to J1 for the SDIO WiFi */ > + > +&mmc_2 { > + status = "okay"; > + cap-sd-highspeed; Optionally you might want to check sd-uhs-sdr50, sd-uhs-ddr50 and few others. However this might require User Manual. Best regards, Krzysztof > + card-detect-delay = <200>; > + samsung,dw-mshc-ciu-div = <3>; > + samsung,dw-mshc-sdr-timing = <2 3>; > + samsung,dw-mshc-ddr-timing = <1 2>; > + pinctrl-names = "default"; > + pinctrl-0 = <&sd2_clk &sd2_cmd &sd2_cd &sd2_bus1 &sd2_bus4>; > + bus-width = <4>; > + disable-wp; > + vmmc-supply = <&ldo13_reg>; > + vqmmc-supply = <&ldo2_reg>; > +}; > -- > 2.13.6 >