All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Haoning Cheng" <Haoning.CHENG@cn.bosch.com>
Cc: devicetree@vger.kernel.org, imx@lists.linux.dev, robh@kernel.org,
	conor+dt@kernel.org, Frank.Li@kernel.org
Subject: Re: [PATCH 10/10] ARM: dts: imx6ulz: Add SPI display and touch overlay for BSH SMM-M2
Date: Wed, 04 Nov 2026 07:55:20 +0000	[thread overview]
Message-ID: <sashiko-outbox-196840@kernel.org> (raw)
In-Reply-To: <20261104-add-bsh-smm-m2-v1-10-369f0a77e021@cn.bosch.com>

Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
- [High] ARM: dts: imx6ulz: active-high pendown-gpio breaks ads7846 touch
- [Medium] ARM: dts: imx6ulz: backlight pad mux placed on display@0 instead of backlight
- [Low] ARM: dts: imx6ulz: open-coded fragment and __overlay__ nodes in overlay
--

commit bebf64c08aefd84526e08136a534cf0657beb477
Author: Simon Holesch <simon.holesch@bshg.com>

ARM: dts: imx6ulz: Add SPI display and touch overlay for BSH SMM-M2

This commit adds a Devicetree overlay for an SPI-connected ILI9486 display
and ADS7846 touchscreen on the BSH SMM-M2 board.

> diff --git a/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2-ws13506-ads7846.dtso b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2-ws13506-ads7846.dtso
> new file mode 100644
> index 0000000000000..869443dd648e8
> --- /dev/null
> +++ b/arch/arm/boot/dts/nxp/imx/imx6ulz-bsh-smm-m2-ws13506-ads7846.dtso
> @@ -0,0 +1,99 @@
> +// SPDX-License-Identifier: (GPL-2.0+)
> +/*
> + * Copyright 2024 BSH Hausgeraete GmbH
> + */
> +
> +/dts-v1/;
> +/plugin/;
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/interrupt-controller/arm-gic.h>
> +#include "imx6ul-pinfunc.h"
> +
> +/ {
> +	fragment@0 {
> +		target-path = "/";
> +		__overlay__ {

[Severity: Low]
This isn't a bug, but could this overlay use the standard DTC target
reference syntax (&{/}, &ecspi1, and &iomuxc) rather than open-coding
fragment@0, fragment@1, fragment@2 and __overlay__ nodes, matching
Documentation/devicetree/overlay-notes.rst and other .dtso files in
arch/arm/boot/dts/?

> +			backlight: backlight {
> +				compatible = "gpio-backlight";
> +				gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
> +			};
> +		};
> +	};
> +
> +	fragment@1 {
> +		target = <&ecspi1>;
> +		__overlay__ {
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&pinctrl_ecspi1>;
> +			cs-gpios = <&gpio3 26 GPIO_ACTIVE_LOW>,
> +				<&gpio2 15 GPIO_ACTIVE_LOW>;
> +			status = "okay";
> +
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +
> +			display@0 {
> +				compatible = "waveshare,rpi-lcd-35", "ilitek,ili9486";
> +				pinctrl-names = "default";
> +				pinctrl-0 = <&pinctrl_lcd>;
> +				reg = <0>;
> +				spi-max-frequency = <32000000>;
> +				dc-gpios = <&gpio1 31 GPIO_ACTIVE_HIGH>;
> +				reset-gpios = <&gpio3 6 GPIO_ACTIVE_HIGH>;
> +				backlight = <&backlight>;
> +				rotation = <180>;
> +			};
> +
> +			touchscreen@1 {
> +				compatible = "ti,ads7846";
> +				pinctrl-names = "default";
> +				pinctrl-0 = <&pinctrl_touchscreen>;
> +				reg = <1>;
> +				interrupt-parent = <&gpio3>;
> +				interrupts = <18 IRQ_TYPE_EDGE_FALLING>;
> +				pendown-gpio = <&gpio3 18 GPIO_ACTIVE_HIGH>;

[Severity: High]
Should pendown-gpio in touchscreen@1 use GPIO_ACTIVE_LOW instead of
GPIO_ACTIVE_HIGH?

The ADS7846 PENIRQ line is active-low (pulled low when touched), which
matches the 100k pull-up in pinctrl_touchscreen (0x1b0b0) and
IRQ_TYPE_EDGE_FALLING.

In drivers/input/touchscreen/ads7846.c, ads7846_setup_pendown() requests
the descriptor via devm_gpiod_get(&spi->dev, "pendown", GPIOD_IN), and
get_pendown_state() calls gpiod_get_value(), which applies the Devicetree
polarity flag:

drivers/input/touchscreen/ads7846.c:get_pendown_state() {
	if (ts->get_pendown_state)
		return ts->get_pendown_state();

	return gpiod_get_value(ts->gpio_pendown);
}

drivers/input/touchscreen/ads7846.c:ads7846_hard_irq() {
	struct ads7846 *ts = handle;

	return get_pendown_state(ts) ? IRQ_WAKE_THREAD : IRQ_HANDLED;
}

With GPIO_ACTIVE_HIGH, gpiod_get_value() returns 0 while GPIO3_IO18 is
physically asserted low on touch, causing ads7846_hard_irq() to return
IRQ_HANDLED without waking the threaded IRQ handler ads7846_irq().

[ ... ]

> +	fragment@2 {
> +		target = <&iomuxc>;
> +		__overlay__ {
> +			pinctrl_ecspi1: ecspi1grp {
> +				fsl,pins = <
> +					MX6UL_PAD_LCD_DATA20__ECSPI1_SCLK    0x100b1
> +					MX6UL_PAD_LCD_DATA22__ECSPI1_MOSI    0x100b1
> +					MX6UL_PAD_LCD_DATA23__ECSPI1_MISO    0x100b1
> +					MX6UL_PAD_LCD_DATA21__GPIO3_IO26     0x0b0b1     /* SPI CS.0 */
> +					MX6UL_PAD_ENET2_RX_ER__GPIO2_IO15    0x0b0b1     /* SPI CS.1 */
> +				>;
> +			};
> +
> +			pinctrl_lcd: lcdgrp {
> +				fsl,pins = <
> +					MX6UL_PAD_LCD_DATA01__GPIO3_IO06       0x180b1     /* LCD_RST */
> +					MX6UL_PAD_UART5_RX_DATA__GPIO1_IO31    0x180b1     /* LCD_DC */
> +					MX6UL_PAD_LCD_DATA16__GPIO3_IO21       0x180b1     /* backlight */
> +				>;
> +			};

[Severity: Medium]
Should MX6UL_PAD_LCD_DATA16__GPIO3_IO21 be moved into its own pinctrl group
and referenced via pinctrl-0 on the backlight node rather than on display@0?

In drivers/gpu/drm/tiny/ili9486.c, ili9486_probe() calls
devm_of_find_backlight(dev) and defers with -EPROBE_DEFER until the
backlight device has finished probing. On i.MX6UL, imx_pmx_ops in
drivers/pinctrl/freescale/pinctrl-imx.c does not implement
.gpio_request_enable, so requesting GPIO3_IO21 in gpio_backlight_probe()
does not mux the pad or apply its pad configuration.

As a result, when gpio_backlight_probe() in
drivers/video/backlight/gpio_backlight.c runs before display@0 binds
pinctrl_lcd:

drivers/video/backlight/gpio_backlight.c:gpio_backlight_probe() {
	...
	if (!of_node || !of_node->phandle)
		/* Not booted with device tree or no phandle link to the node */
		bl->props.power = def_value ? BACKLIGHT_POWER_ON
					    : BACKLIGHT_POWER_OFF;
	else if (gpiod_get_value_cansleep(gbl->gpiod) == 0)
		bl->props.power = BACKLIGHT_POWER_OFF;
	else
		bl->props.power = BACKLIGHT_POWER_ON;

	ret = gpiod_direction_output(gbl->gpiod, !bl->props.power);
	...
}

gpiod_get_value_cansleep() and gpiod_direction_output() execute while
MX6UL_PAD_LCD_DATA16 is still unmuxed and unconfigured.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261104-add-bsh-smm-m2-v1-0-369f0a77e021@cn.bosch.com?part=10

      reply	other threads:[~2026-11-04  7:55 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-04  7:35 [PATCH 00/10] Update BSH SystemMaster device trees and add SMM-M2B support Haoning Cheng
2026-11-04  7:35 ` [PATCH 01/10] dt-bindings: arm: fsl: Add BSH SMM-M2B board Haoning Cheng
2026-11-04  7:35 ` [PATCH 02/10] dts: imx: Use minimum NAND ECC strength on BSH boards Haoning Cheng
2026-11-04  7:49   ` sashiko-bot
2026-11-04  7:35 ` [PATCH 03/10] ARM: dts: imx6ulz: Enable RNGB on BSH SMM-M2 Haoning Cheng
2026-11-04  7:45   ` sashiko-bot
2026-11-04  7:35 ` [PATCH 04/10] ARM: dts: imx6ulz: Adjust BSH SMM-M2 Wi-Fi and Bluetooth pin settings Haoning Cheng
2026-11-04  7:35 ` [PATCH 05/10] ARM: dts: imx6ulz: Fix BSH SMM-M2 WLAN host wake configuration Haoning Cheng
2026-11-04  7:35 ` [PATCH 06/10] ARM: dts: imx6ulz: Factor out BSH SMM-M2 common device tree Haoning Cheng
2026-11-04  7:35 ` [PATCH 07/10] ARM: dts: imx6ulz: Add BSH SMM-M2B board support Haoning Cheng
2026-11-04  7:44   ` sashiko-bot
2026-11-04  7:35 ` [PATCH 08/10] ARM: dts: imx6ulz: Configure UART2 pins on BSH SMM-M2 variants Haoning Cheng
2026-11-04  7:35 ` [PATCH 09/10] dts: imx: Enable USB OTG mode on BSH SMM-M2 and SMM-S2 Haoning Cheng
2026-11-04  7:35 ` [PATCH 10/10] ARM: dts: imx6ulz: Add SPI display and touch overlay for BSH SMM-M2 Haoning Cheng
2026-11-04  7:55   ` sashiko-bot [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=sashiko-outbox-196840@kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=Frank.Li@kernel.org \
    --cc=Haoning.CHENG@cn.bosch.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=imx@lists.linux.dev \
    --cc=robh@kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.