mbox series

[v4,00/16] UNI-T UTi260B support

Message ID 20240224213240.1854709-1-sre@kernel.org
Headers show
Series UNI-T UTi260B support | expand

Message

Sebastian Reichel Feb. 24, 2024, 9:29 p.m. UTC
From: Sebastian Reichel <sebastian.reichel@collabora.com>

Hi,

This adds adds support for the UNI-T UTi260B thermal camera, which is based
on i.MX6ULL. Patches 1-14 clean up all warnings reported by CHECK_DTBS for
i.MX6ULL (i.e. for an empty board). They are not specific to the UTi260B and
in fact that machine has most of the IP handled by these patches marked as
disabled. Then patches 15+16 introduce the vendor and board compatible DT
bindings. Finally the last patches adds support for the thermal camera itself.

The DT is based on reverse engineered information. More information about
the device can be found in this presentation from Embedded Recipes 2023:

 * https://embedded-recipes.org/2023/wp-content/uploads/2023/10/Running-FOSS-on-a-Thermal-Camera-Sebastian-Reichel-compressed.pdf
 * https://www.youtube.com/watch?v=uvObsCG-Cqo

I also prepared a branch with these patches (and a minimal kernel config)
and published it here:

https://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-misc.git/log/?h=uti260b-v4

Changes since PATCHv3:
 * https://lore.kernel.org/all/20240216223654.1312880-1-sre@kernel.org/
  - weim binding: use " instead of '
  - weim binding: use "if: not: required: - foo" instead of "if: properties: foo: false"
  - imx6ull-uti260b.dts: merge ecspi3_csgrp into ecspi3grp
  - collect Reviewed-by from Krzysztof Kozlowski

Changes since PATCHv2:
 * https://lore.kernel.org/all/20240213010347.1075251-1-sre@kernel.org/
  - drop fsl,imx-asrc YAML binding conversion (merged)
  - collect a bunch of Reviewed-by/Acked-by tags
  - weim DT binding: fix issue with requirements
  - xnur-gpio -> xnur-gpios change: Improve patch long description

Changes since PATCHv1:
 * https://lore.kernel.org/all/20240210012114.489102-1-sre@kernel.org/
  - uni-t,imx6ull-uti260b -> uni-t,uti260b
  - add Acked-by for uni-t vendor prefix
  - add Acked-by for HDMI audio index fix
  - add Acked-by for LCDIF power-domain requirement drop
  - anatop DT binding: Fixed indentation in example
  - anatop DT binding: Described IRQs
  - touchscreen DT binding: change tsc@ to touchscreen@ in example
  - touchscreen DT binding: change xnur-gpio to xnur-gpios
  - weim DT binding: drop acme,whatever example
  - weim DT binding: use flash@ instead of nor@
  - weim DT binding: update weim.txt reference in arcx,anybus-controller.txt
  - weim DT binding: switch to memory-controller binding
  - fsl,imx-asrc DT binding: fix ASoC patch subject prefix
  - fsl,imx-asrc DT binding: add constraints
  - add new patch fixing xnur-gpio(s) in all i.MX6UL board DT files
  - add new patch fixing touchscreen nodename in i.MX6UL SoC DT file
  - add new patch fixing weim nodename in all i.MX SoC DT files
  - device DTS: use color/functions for the led
  - device DTS: increase SPI speed
  - device DTS: add comment for SD / eMMC node

Unadressed feedback from PATCHv1:
  - anatop phandle vs parent: technically it makes sense to just use the
    parent, but this driver is only used by i.MX6. The current code makes
	use of the phandle, so we cannot drop it because of backwards
	compatibility. So I don't see a point in deprecating this property.
  - touchscreen binding: I kept measure-delay-time and pre-charge-time
    values in hex, since that is being used everywhere and the unit
	is unknown. The values are directly written into HW registers and
	the i.MX6UL TRM does not provide any hints about the unit. I do not
	have an i.MX6UL device with a touchsreen, so I cannot test either.
  - regulator name in DT: I did not rename the regulators to just
    "regulator", since the nodename must be unique.

Greetings,

-- Sebastian

Sebastian Reichel (16):
  dt-bindings: pinctrl: fsl,imx6ul-pinctrl: convert to YAML
  dt-bindings: bus: imx-weim: convert to YAML
  dt-bindings: input: touchscreen: fsl,imx6ul-tsc convert to YAML
  dt-bindings: soc: imx: fsl,imx-anatop: add binding
  dt-bindings: soc: imx: fsl,imx-iomuxc-gpr: add imx6
  dt-bindings: lcdif: Do not require power-domains for i.MX6ULL
  dt-bindings: fsl-imx-sdma: fix HDMI audio index
  ARM: dts: imx6ull: fix pinctrl node name
  ARM: dts: imx6ul: Remove fsl,anatop from usbotg1
  ARM: dts: imx6ul: add missing #thermal-sensor-cells
  ARM: dts: nxp: imx6ul: xnur-gpio -> xnur-gpios
  ARM: dts: nxp: imx6ul: fix touchscreen node name
  ARM: dts: nxp: imx: fix weim node name
  dt-bindings: vendor-prefixes: add UNI-T
  dt-bindings: arm: add UNI-T UTi260B
  ARM: dts: imx6ull-uti260b: Add board

 .../devicetree/bindings/arm/fsl.yaml          |   1 +
 .../devicetree/bindings/bus/imx-weim.txt      | 117 ----
 .../bindings/display/fsl,lcdif.yaml           |   8 +-
 .../devicetree/bindings/dma/fsl,imx-sdma.yaml |   3 +-
 .../input/touchscreen/fsl,imx6ul-tsc.yaml     |  97 +++
 .../bindings/input/touchscreen/imx6ul_tsc.txt |  38 --
 .../fsl/fsl,imx-weim-peripherals.yaml         |  31 +
 .../memory-controllers/fsl/fsl,imx-weim.yaml  | 204 +++++++
 .../mc-peripheral-props.yaml                  |   1 +
 .../bindings/pinctrl/fsl,imx6ul-pinctrl.txt   |  37 --
 .../bindings/pinctrl/fsl,imx6ul-pinctrl.yaml  | 116 ++++
 .../bindings/soc/imx/fsl,imx-anatop.yaml      | 128 ++++
 .../bindings/soc/imx/fsl,imx-iomuxc-gpr.yaml  |  18 +-
 .../devicetree/bindings/vendor-prefixes.yaml  |   2 +
 arch/arm/boot/dts/nxp/imx/Makefile            |   1 +
 arch/arm/boot/dts/nxp/imx/imx1.dtsi           |   2 +-
 arch/arm/boot/dts/nxp/imx/imx27.dtsi          |   2 +-
 arch/arm/boot/dts/nxp/imx/imx31.dtsi          |   2 +-
 arch/arm/boot/dts/nxp/imx/imx35.dtsi          |   2 +-
 arch/arm/boot/dts/nxp/imx/imx51.dtsi          |   2 +-
 arch/arm/boot/dts/nxp/imx/imx6qdl.dtsi        |   2 +-
 arch/arm/boot/dts/nxp/imx/imx6sl.dtsi         |   2 +-
 arch/arm/boot/dts/nxp/imx/imx6sx.dtsi         |   2 +-
 .../boot/dts/nxp/imx/imx6ul-14x14-evk.dtsi    |   2 +-
 arch/arm/boot/dts/nxp/imx/imx6ul-geam.dts     |   2 +-
 .../nxp/imx/imx6ul-imx6ull-opos6uldev.dtsi    |   2 +-
 arch/arm/boot/dts/nxp/imx/imx6ul.dtsi         |   6 +-
 .../boot/dts/nxp/imx/imx6ull-dhcom-som.dtsi   |   2 +-
 arch/arm/boot/dts/nxp/imx/imx6ull-uti260b.dts | 567 ++++++++++++++++++
 arch/arm/boot/dts/nxp/imx/imx6ull.dtsi        |   2 +-
 .../fieldbus/arcx,anybus-controller.txt       |   2 +-
 31 files changed, 1191 insertions(+), 212 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/bus/imx-weim.txt
 create mode 100644 Documentation/devicetree/bindings/input/touchscreen/fsl,imx6ul-tsc.yaml
 delete mode 100644 Documentation/devicetree/bindings/input/touchscreen/imx6ul_tsc.txt
 create mode 100644 Documentation/devicetree/bindings/memory-controllers/fsl/fsl,imx-weim-peripherals.yaml
 create mode 100644 Documentation/devicetree/bindings/memory-controllers/fsl/fsl,imx-weim.yaml
 delete mode 100644 Documentation/devicetree/bindings/pinctrl/fsl,imx6ul-pinctrl.txt
 create mode 100644 Documentation/devicetree/bindings/pinctrl/fsl,imx6ul-pinctrl.yaml
 create mode 100644 Documentation/devicetree/bindings/soc/imx/fsl,imx-anatop.yaml
 create mode 100644 arch/arm/boot/dts/nxp/imx/imx6ull-uti260b.dts

Comments

Fabio Estevam Feb. 25, 2024, 1:11 a.m. UTC | #1
On Sat, Feb 24, 2024 at 6:33 PM Sebastian Reichel <sre@kernel.org> wrote:

> +&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-names = "default";
> +               pinctrl-0 = <&mux_poweroff2>;
> +       };
> +};
> +
> +&ecspi3 {

It is recommended to put the nodes in alphabetical order (except
iomuxc, which is the last one).

> +       mux_gc0308: gc0308grp {
> +               fsl,pins = <
> +                       MX6UL_PAD_CSI_MCLK__CSI_MCLK                    0x1e038
> +                       MX6UL_PAD_GPIO1_IO05__GPIO1_IO05                0x1b088
> +                       MX6UL_PAD_GPIO1_IO06__GPIO1_IO06                0x1b088
> +               >;
> +       };
> +
> +

There is an extra blank line here.

Reviewed-by: Fabio Estevam <festevam@gmail.com>
Shawn Guo Feb. 25, 2024, 1:53 p.m. UTC | #2
On Sat, Feb 24, 2024 at 10:29:42PM +0100, Sebastian Reichel wrote:
> Fix the following warning found via CHECK_DTBS:
> 
> tempmon: '#thermal-sensor-cells' is a required property
> 
> Signed-off-by: Sebastian Reichel <sre@kernel.org>

Thanks for the patch!  But I had picked up the one [1] from Alexander
Stein.

Shawn

[1] https://lore.kernel.org/linux-arm-kernel/ZcCNdrQPb10i4rl2@t480/T/
Shawn Guo Feb. 25, 2024, 1:54 p.m. UTC | #3
On Sat, Feb 24, 2024 at 10:29:40PM +0100, Sebastian Reichel wrote:
> pinctrl node name must be either pinctrl or pinmux.
> 
> Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> Signed-off-by: Sebastian Reichel <sre@kernel.org>

Applied, thanks!
Shawn Guo Feb. 25, 2024, 1:55 p.m. UTC | #4
On Sat, Feb 24, 2024 at 10:29:41PM +0100, Sebastian Reichel wrote:
> fsl,anatop should only be added to the usbphy nodes.
> 
> Signed-off-by: Sebastian Reichel <sre@kernel.org>

Applied, thanks!
Shawn Guo Feb. 25, 2024, 1:55 p.m. UTC | #5
On Sat, Feb 24, 2024 at 10:29:43PM +0100, Sebastian Reichel wrote:
> Replace all "xnur-gpio" with "xnur-gpios" in the i.MX6UL(L) Touchscreen
> node, since the -gpio suffix is deprecated. All known implementations of
> this binding can handle -gpio and -gpios since day 1, so this should be
> fully backwards compatible.
> 
> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> Signed-off-by: Sebastian Reichel <sre@kernel.org>

Applied, thanks!
Shawn Guo Feb. 25, 2024, 1:56 p.m. UTC | #6
On Sat, Feb 24, 2024 at 10:29:44PM +0100, Sebastian Reichel wrote:
> The canonical node name for touchscreens is "touchscreen",
> so update the i.MX6UL "tsc" node accordingly.
> 
> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> Signed-off-by: Sebastian Reichel <sre@kernel.org>

Applied, thanks!
Shawn Guo Feb. 25, 2024, 1:56 p.m. UTC | #7
On Sat, Feb 24, 2024 at 10:29:45PM +0100, Sebastian Reichel wrote:
> DT node names should be generic, so replace "weim" node name with
> "memory-controller" in all i.MX SoC DT files.
> 
> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> Signed-off-by: Sebastian Reichel <sre@kernel.org>

Applied, thanks!
Shawn Guo Feb. 25, 2024, 2:15 p.m. UTC | #8
On Sat, Feb 24, 2024 at 10:29:48PM +0100, Sebastian Reichel wrote:
> Add UNI-T UTi260b thermal camera board.
> 
> Reviewed-by: Stefan Wahren <wahrenst@gmx.net>
> Signed-off-by: Sebastian Reichel <sre@kernel.org>

Can we change the patch subject to something like below?

  ARM: dts: imx: Add UNI-T UTi260b thermal camera board

Shawn