Messages in this thread | | | Date | Mon, 12 Feb 2024 19:28:36 +0100 | Subject | Re: [PATCH v1 14/14] ARM: dts: imx6ull-uti260b: Add board | From | Stefan Wahren <> |
| |
Hi Sebastian,
Am 10.02.24 um 02:18 schrieb Sebastian Reichel: > Add UNI-T UTi260b thermal camera board. > > Signed-off-by: Sebastian Reichel <sre@kernel.org> > --- > arch/arm/boot/dts/nxp/imx/Makefile | 1 + > arch/arm/boot/dts/nxp/imx/imx6ull-uti260b.dts | 564 ++++++++++++++++++ > 2 files changed, 565 insertions(+) > create mode 100644 arch/arm/boot/dts/nxp/imx/imx6ull-uti260b.dts > > diff --git a/arch/arm/boot/dts/nxp/imx/Makefile b/arch/arm/boot/dts/nxp/imx/Makefile > index a724d1a7a9a0..47350cf3ddeb 100644 > --- a/arch/arm/boot/dts/nxp/imx/Makefile > +++ b/arch/arm/boot/dts/nxp/imx/Makefile > @@ -349,6 +349,7 @@ dtb-$(CONFIG_SOC_IMX6UL) += \ > imx6ull-tarragon-slavext.dtb \ > imx6ull-tqma6ull2-mba6ulx.dtb \ > imx6ull-tqma6ull2l-mba6ulx.dtb \ > + imx6ull-uti260b.dtb \ > imx6ulz-14x14-evk.dtb \ > imx6ulz-bsh-smm-m2.dtb > dtb-$(CONFIG_SOC_IMX7D) += \ > diff --git a/arch/arm/boot/dts/nxp/imx/imx6ull-uti260b.dts b/arch/arm/boot/dts/nxp/imx/imx6ull-uti260b.dts > new file mode 100644 > index 000000000000..336727895fa4 > --- /dev/null > +++ b/arch/arm/boot/dts/nxp/imx/imx6ull-uti260b.dts > @@ -0,0 +1,564 @@ > +// SPDX-License-Identifier: (GPL-2.0 OR MIT) > +// Copyright (C) 2022 Sebastian Reichel <sre@kernel.org> 2024 ? > + > +/dts-v1/; > +#include "imx6ull.dtsi" > +#include <dt-bindings/gpio/gpio.h> > +#include <dt-bindings/input/input.h> > +#include <dt-bindings/clock/imx6ul-clock.h> > + > +/ { > + model = "UNI-T UTi260B Thermal Camera"; > + compatible = "uni-t,imx6ull-uti260b", "fsl,imx6ull"; > + > + chosen { > + stdout-path = "serial0:115200n8"; > + }; > + > + memory@80000000 { > + device_type = "memory"; > + reg = <0x80000000 0x20000000>; > + }; > + > + leds { > + compatible = "gpio-leds"; > + pinctrl-names = "default"; > + pinctrl-0 = <&mux_led_ctrl>; > + > + led { > + label = "led"; The label property is deprecated, please use color and function instead. > + gpios = <&gpio2 2 GPIO_ACTIVE_HIGH>; > + default-state = "off"; > + }; > + }; > + > + gpio-keys { > + compatible = "gpio-keys"; > + pinctrl-names = "default"; > + pinctrl-0 = <&mux_gpio_keys>; > + autorepeat; > + > + up-key { > + label = "Up"; > + gpios = <&gpio2 11 GPIO_ACTIVE_LOW>; > + linux,code = <KEY_UP>; > + }; > + > + down-key { > + label = "Down"; > + gpios = <&gpio2 12 GPIO_ACTIVE_LOW>; > + linux,code = <KEY_DOWN>; > + }; > + > + left-key { > + label = "Left"; > + gpios = <&gpio2 13 GPIO_ACTIVE_LOW>; > + linux,code = <KEY_LEFT>; > + }; > + > + right-key { > + label = "Right"; > + gpios = <&gpio2 10 GPIO_ACTIVE_LOW>; > + linux,code = <KEY_RIGHT>; > + }; > + > + ok-key { > + label = "Ok"; > + gpios = <&gpio2 9 GPIO_ACTIVE_LOW>; > + linux,code = <KEY_ENTER>; > + }; > + > + return-key { > + label = "Return"; > + gpios = <&gpio2 15 GPIO_ACTIVE_LOW>; > + linux,code = <KEY_ESC>; > + }; > + > + play-key { > + label = "Media"; > + gpios = <&gpio2 8 GPIO_ACTIVE_LOW>; > + linux,code = <KEY_MEDIA>; > + }; > + > + trigger-key { > + label = "Trigger"; > + gpios = <&gpio2 14 GPIO_ACTIVE_LOW>; > + linux,code = <BTN_TRIGGER>; > + }; > + > + power-key { > + label = "Power"; > + gpios = <&gpio2 3 GPIO_ACTIVE_LOW>; > + linux,code = <KEY_POWER>; > + }; > + > + light-key { > + label = "Light"; > + gpios = <&gpio2 1 GPIO_ACTIVE_LOW>; > + linux,code = <KEY_LIGHTS_TOGGLE>; > + }; > + }; > + > + panel_backlight: backlight { > + compatible = "pwm-backlight"; > + brightness-levels = <0 4 8 16 32 64 128 255>; > + default-brightness-level = <6>; > + enable-gpios = <&gpio1 9 GPIO_ACTIVE_LOW>; > + pinctrl-names = "default"; > + pinctrl-0 = <&mux_backlight_enable>; > + power-supply = <®_vsd>; > + pwms = <&pwm1 0 50000 0>; > + }; > + > + reg_vsd: regulator-vsd { i think the node name should be just "regulator" > + compatible = "regulator-fixed"; > + regulator-name = "VSD_3V3"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + }; > + > + reg_vref: regulator-vref-4v2 { dito > + compatible = "regulator-fixed"; > + regulator-name = "VREF_4V2"; > + regulator-min-microvolt = <4200000>; > + regulator-max-microvolt = <4200000>; > + }; > + > + tp5000: charger { > + compatible = "gpio-charger"; > + charger-type = "usb-sdp"; > + gpios = <&gpio1 1 GPIO_ACTIVE_LOW>; > + pinctrl-names = "default"; > + pinctrl-0 = <&mux_charger_stat1>; > + }; > + > + battery: battery { > + compatible = "simple-battery"; > + /* generic 26650 battery */ > + device-chemistry = "lithium-ion"; > + charge-full-design-microamp-hours = <5000000>; > + voltage-max-design-microvolt = <4200000>; > + voltage-min-design-microvolt = <3300000>; > + }; > + > + fuel-gauge { > + compatible = "adc-battery"; > + charged-gpios = <&gpio1 2 GPIO_ACTIVE_LOW>; > + io-channel-names = "voltage"; > + io-channels = <&adc1 7>; > + monitored-battery = <&battery>; > + pinctrl-names = "default"; > + pinctrl-0 = <&mux_charger_stat2>; > + power-supplies = <&tp5000>; > + }; > + > + poweroff { > + compatible = "gpio-poweroff"; > + gpios = <&gpio2 4 GPIO_ACTIVE_LOW>; > + pinctrl-names = "default"; > + pinctrl-0 = <&mux_poweroff>; > + }; > +}; > + > +&gpio1 { > + ir-reset-hog { > + gpio-hog; > + gpios = <3 GPIO_ACTIVE_LOW>; > + line-name = "ir-reset-gpio"; > + output-low; > + pinctrl-0 = <&mux_ir_reset>; Doesn't this miss pinctrl-names = "default" ? > + }; > +}; > + > +&gpio2 { > + /* configuring this to output-high results in poweroff */ > + power-en-hog { > + gpio-hog; > + gpios = <6 GPIO_ACTIVE_HIGH>; > + line-name = "power-en-gpio"; > + output-low; > + pinctrl-0 = <&mux_poweroff2>; > + }; > +}; > + > +&ecspi3 { > + cs-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>; > + pinctrl-names = "default"; > + pinctrl-0 = <&mux_spi3>, <&mux_spi3_cs>; > + status = "okay"; > + > + panel@0 { > + compatible = "inanbo,t28cp45tn89-v17"; > + reg = <0>; > + backlight = <&panel_backlight>; > + power-supply = <®_vsd>; > + spi-cpha; > + spi-cpol; > + spi-max-frequency = <100000>; This seems slow to me. Is this a limitation of the display? > + spi-rx-bus-width = <0>; > + > + port { > + panel_in: endpoint { > + remote-endpoint = <&display_out>; > + }; > + }; > + }; > +}; > + > +&uart1 { > + pinctrl-names = "default"; > + pinctrl-0 = <&mux_uart>; > + status = "okay"; > +}; > + > +&pwm1 { > + pinctrl-names = "default"; > + pinctrl-0 = <&mux_pwm>; > + status = "okay"; > +}; > + > +&i2c1 { > + clock-frequency = <100000>; > + pinctrl-names = "default"; > + pinctrl-0 = <&mux_i2c1>; > + status = "okay"; > + > + camera@21 { > + compatible = "galaxycore,gc0308"; > + reg = <0x21>; > + clocks = <&clks IMX6UL_CLK_CSI>; > + pinctrl-names = "default"; > + pinctrl-0 = <&mux_gc0308>; > + powerdown-gpios = <&gpio1 5 GPIO_ACTIVE_HIGH>; > + reset-gpios = <&gpio1 6 GPIO_ACTIVE_LOW>; > + vdd28-supply = <®_vsd>; > + > + port { > + gc0308_to_parallel: endpoint { > + remote-endpoint = <¶llel_from_gc0308>; > + bus-width = <8>; > + data-shift = <2>; /* lines 9:2 are used */ > + hsync-active = <1>; /* active high */ > + vsync-active = <1>; /* active high */ > + data-active = <1>; /* active high */ > + pclk-sample = <1>; /* sample on rising edge */ > + }; > + }; > + }; > +}; > + > +&csi { > + status = "okay"; > + pinctrl-names = "default"; > + pinctrl-0 = <&mux_csi>; > + > + port { > + parallel_from_gc0308: endpoint { > + remote-endpoint = <&gc0308_to_parallel>; > + }; > + }; > +}; > + > +&i2c2 { > + clock-frequency = <100000>; > + pinctrl-names = "default"; > + pinctrl-0 = <&mux_i2c2>; > + status = "okay"; > + > + rtc@51 { > + compatible = "nxp,pcf8563"; > + reg = <0x51>; > + }; > +}; > + > +&lcdif { > + assigned-clocks = <&clks IMX6UL_CLK_LCDIF_PRE_SEL>; > + assigned-clock-parents = <&clks IMX6UL_CLK_PLL5_VIDEO_DIV>; > + pinctrl-names = "default"; > + pinctrl-0 = <&mux_lcd_data>, <&mux_lcd_ctrl>; > + status = "okay"; > + > + port { > + display_out: endpoint { > + remote-endpoint = <&panel_in>; > + }; > + }; > +}; > + > +&usdhc1 { Would be nice to place a comment above this, which mentions the intended use case: eMMC, SD card, ... > + cd-gpios = <&gpio1 19 GPIO_ACTIVE_LOW>; > + keep-power-in-suspend; > + no-1-8-v; > + pinctrl-names = "default", "state_100mhz", "state_200mhz"; > + pinctrl-0 = <&mux_sdhc1>, <&mux_sdhc1_cd>; > + pinctrl-1 = <&mux_sdhc1_100mhz>, <&mux_sdhc1_cd>; > + pinctrl-2 = <&mux_sdhc1_200mhz>, <&mux_sdhc1_cd>; > + wakeup-source; > + vmmc-supply = <®_vsd>; > + status = "okay"; > +}; > + > +&usdhc2 { dito
Best regards > + keep-power-in-suspend; > + no-1-8-v; > + non-removable; > + pinctrl-names = "default"; > + pinctrl-0 = <&mux_sdhc2>; > + wakeup-source; > + status = "okay"; > +}; > + > +&wdog1 { > + pinctrl-names = "default"; > + pinctrl-0 = <&mux_wdog>; > +}; > + > +&adc1 { > + pinctrl-names = "default"; > + pinctrl-0 = <&mux_adc>; > + vref-supply = <®_vref>; > + #io-channel-cells = <1>; > + status = "okay"; > +}; > + >
| |