lkml.org 
[lkml]   [2024]   [Feb]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [PATCH v1 14/14] ARM: dts: imx6ull-uti260b: Add board
From
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 = <&reg_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 = <&reg_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 = <&reg_vsd>;
> +
> + port {
> + gc0308_to_parallel: endpoint {
> + remote-endpoint = <&parallel_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 = <&reg_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 = <&reg_vref>;
> + #io-channel-cells = <1>;
> + status = "okay";
> +};
> +
>

\
 
 \ /
  Last update: 2024-05-27 14:59    [W:0.274 / U:1.348 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site