* [PATCH 1/5] dt-binding: trivial-devices: add arduino spi mcu interface
2025-11-06 15:31 [PATCH 0/5] arm64: qcom: add support for Arduino UnoQ SBC Riccardo Mereu
@ 2025-11-06 15:31 ` Riccardo Mereu
2025-11-07 7:10 ` Krzysztof Kozlowski
2025-11-07 8:09 ` Krzysztof Kozlowski
2025-11-06 15:31 ` [PATCH 2/5] drivers: spi: spidev: add compatible for " Riccardo Mereu
` (3 subsequent siblings)
4 siblings, 2 replies; 20+ messages in thread
From: Riccardo Mereu @ 2025-11-06 15:31 UTC (permalink / raw)
To: andersson, konradybcio, robh, krzk+dt, conor+dt, broonie
Cc: linux, Jonathan.Cameron, wenswang, naresh.solanki, michal.simek,
nuno.sa, chou.cosmo, grantpeltier93, eajames, farouk.bouabid,
linux-arm-msm, devicetree, linux-kernel, linux-spi, mm.facchin,
Riccardo Mereu
Add spidev item in order to describe in Arduino boards one of the
interfaces between microprocessor and microcontroller.
Signed-off-by: Riccardo Mereu <r.mereu@arduino.cc>
---
Documentation/devicetree/bindings/trivial-devices.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Documentation/devicetree/bindings/trivial-devices.yaml b/Documentation/devicetree/bindings/trivial-devices.yaml
index 2eff6f274302..c44fff4ce2e2 100644
--- a/Documentation/devicetree/bindings/trivial-devices.yaml
+++ b/Documentation/devicetree/bindings/trivial-devices.yaml
@@ -59,6 +59,8 @@ properties:
- adi,lt7182s
# AMS iAQ-Core VOC Sensor
- ams,iaq-core
+ # Arduino microcontroller interface over SPI, e.g. on UnoQ board
+ - arduino,mcu
# Temperature monitoring of Astera Labs PT5161L PCIe retimer
- asteralabs,pt5161l
# i2c h/w elliptic curve crypto module
--
2.51.2
^ permalink raw reply related [flat|nested] 20+ messages in thread* Re: [PATCH 1/5] dt-binding: trivial-devices: add arduino spi mcu interface
2025-11-06 15:31 ` [PATCH 1/5] dt-binding: trivial-devices: add arduino spi mcu interface Riccardo Mereu
@ 2025-11-07 7:10 ` Krzysztof Kozlowski
2025-11-07 8:09 ` Krzysztof Kozlowski
1 sibling, 0 replies; 20+ messages in thread
From: Krzysztof Kozlowski @ 2025-11-07 7:10 UTC (permalink / raw)
To: Riccardo Mereu, andersson, konradybcio, robh, krzk+dt, conor+dt,
broonie
Cc: linux, Jonathan.Cameron, wenswang, naresh.solanki, michal.simek,
nuno.sa, chou.cosmo, grantpeltier93, eajames, farouk.bouabid,
linux-arm-msm, devicetree, linux-kernel, linux-spi, mm.facchin,
Riccardo Mereu
On 06/11/2025 16:31, Riccardo Mereu wrote:
> Add spidev item in order to describe in Arduino boards one of the
> interfaces between microprocessor and microcontroller.
>
> Signed-off-by: Riccardo Mereu <r.mereu@arduino.cc>
> ---
> Documentation/devicetree/bindings/trivial-devices.yaml | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/trivial-devices.yaml b/Documentation/devicetree/bindings/trivial-devices.yaml
> index 2eff6f274302..c44fff4ce2e2 100644
> --- a/Documentation/devicetree/bindings/trivial-devices.yaml
> +++ b/Documentation/devicetree/bindings/trivial-devices.yaml
> @@ -59,6 +59,8 @@ properties:
> - adi,lt7182s
> # AMS iAQ-Core VOC Sensor
> - ams,iaq-core
> + # Arduino microcontroller interface over SPI, e.g. on UnoQ board
> + - arduino,mcu
MCU is so broad it can cover everything, so for sure this is not a
trivial device. It also can be connected over serial, which would not be
covered here. Or can have additional GPIOs connected or supplies - also
not covered here.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 1/5] dt-binding: trivial-devices: add arduino spi mcu interface
2025-11-06 15:31 ` [PATCH 1/5] dt-binding: trivial-devices: add arduino spi mcu interface Riccardo Mereu
2025-11-07 7:10 ` Krzysztof Kozlowski
@ 2025-11-07 8:09 ` Krzysztof Kozlowski
1 sibling, 0 replies; 20+ messages in thread
From: Krzysztof Kozlowski @ 2025-11-07 8:09 UTC (permalink / raw)
To: Riccardo Mereu
Cc: andersson, konradybcio, robh, krzk+dt, conor+dt, broonie, linux,
Jonathan.Cameron, wenswang, naresh.solanki, michal.simek, nuno.sa,
chou.cosmo, grantpeltier93, eajames, farouk.bouabid,
linux-arm-msm, devicetree, linux-kernel, linux-spi, mm.facchin,
Riccardo Mereu
On Thu, Nov 06, 2025 at 04:31:15PM +0100, Riccardo Mereu wrote:
> Add spidev item in order to describe in Arduino boards one of the
> interfaces between microprocessor and microcontroller.
>
> Signed-off-by: Riccardo Mereu <r.mereu@arduino.cc>
Also, now I see warnings, so standard message:
Please run scripts/checkpatch.pl on the patches and fix reported
warnings. After that, run also 'scripts/checkpatch.pl --strict' on the
patches and (probably) fix more warnings. Some warnings can be ignored,
especially from --strict run, but the code here looks like it needs a
fix. Feel free to get in touch if the warning is not clear.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH 2/5] drivers: spi: spidev: add compatible for arduino spi mcu interface
2025-11-06 15:31 [PATCH 0/5] arm64: qcom: add support for Arduino UnoQ SBC Riccardo Mereu
2025-11-06 15:31 ` [PATCH 1/5] dt-binding: trivial-devices: add arduino spi mcu interface Riccardo Mereu
@ 2025-11-06 15:31 ` Riccardo Mereu
2025-11-07 7:13 ` Krzysztof Kozlowski
2025-11-06 15:31 ` [PATCH 3/5] dt-binding: arm: qcom: add arduino unoq codename Riccardo Mereu
` (2 subsequent siblings)
4 siblings, 1 reply; 20+ messages in thread
From: Riccardo Mereu @ 2025-11-06 15:31 UTC (permalink / raw)
To: andersson, konradybcio, robh, krzk+dt, conor+dt, broonie
Cc: linux, Jonathan.Cameron, wenswang, naresh.solanki, michal.simek,
nuno.sa, chou.cosmo, grantpeltier93, eajames, farouk.bouabid,
linux-arm-msm, devicetree, linux-kernel, linux-spi, mm.facchin,
Riccardo Mereu
Add compatible entry in spidev describing in Arduino boards one of the
interfaces between microprocessor and microcontroller.
Signed-off-by: Riccardo Mereu <r.mereu@arduino.cc>
---
drivers/spi/spidev.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c
index 5300c942a2a4..f0dd516c2083 100644
--- a/drivers/spi/spidev.c
+++ b/drivers/spi/spidev.c
@@ -704,6 +704,7 @@ static const struct class spidev_class = {
*/
static const struct spi_device_id spidev_spi_ids[] = {
{ .name = /* abb */ "spi-sensor" },
+ { .name = /* arduino */ "mcu" },
{ .name = /* cisco */ "spi-petra" },
{ .name = /* dh */ "dhcom-board" },
{ .name = /* elgin */ "jg10309-01" },
@@ -737,6 +738,7 @@ static int spidev_of_check(struct device *dev)
static const struct of_device_id spidev_dt_ids[] = {
{ .compatible = "abb,spi-sensor", .data = &spidev_of_check },
+ { .compatible = "arduino,mcu", .data = &spidev_of_check },
{ .compatible = "cisco,spi-petra", .data = &spidev_of_check },
{ .compatible = "dh,dhcom-board", .data = &spidev_of_check },
{ .compatible = "elgin,jg10309-01", .data = &spidev_of_check },
--
2.51.2
^ permalink raw reply related [flat|nested] 20+ messages in thread* Re: [PATCH 2/5] drivers: spi: spidev: add compatible for arduino spi mcu interface
2025-11-06 15:31 ` [PATCH 2/5] drivers: spi: spidev: add compatible for " Riccardo Mereu
@ 2025-11-07 7:13 ` Krzysztof Kozlowski
2025-11-11 13:33 ` Riccardo Mereu Linux Kernel
0 siblings, 1 reply; 20+ messages in thread
From: Krzysztof Kozlowski @ 2025-11-07 7:13 UTC (permalink / raw)
To: Riccardo Mereu, andersson, konradybcio, robh, krzk+dt, conor+dt,
broonie
Cc: linux, Jonathan.Cameron, wenswang, naresh.solanki, michal.simek,
nuno.sa, chou.cosmo, grantpeltier93, eajames, farouk.bouabid,
linux-arm-msm, devicetree, linux-kernel, linux-spi, mm.facchin,
Riccardo Mereu
On 06/11/2025 16:31, Riccardo Mereu wrote:
> Add compatible entry in spidev describing in Arduino boards one of the
> interfaces between microprocessor and microcontroller.
>
> Signed-off-by: Riccardo Mereu <r.mereu@arduino.cc>
Please use subject prefixes matching the subsystem. You can get them for
example with `git log --oneline -- DIRECTORY_OR_FILE` on the directory
your patch is touching. For bindings, the preferred subjects are
explained here:
https://www.kernel.org/doc/html/latest/devicetree/bindings/submitting-patches.html#i-for-patch-submitters
It is almost never "drivers" (with one or two exceptions).
> ---
> drivers/spi/spidev.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c
> index 5300c942a2a4..f0dd516c2083 100644
> --- a/drivers/spi/spidev.c
> +++ b/drivers/spi/spidev.c
> @@ -704,6 +704,7 @@ static const struct class spidev_class = {
> */
> static const struct spi_device_id spidev_spi_ids[] = {
> { .name = /* abb */ "spi-sensor" },
> + { .name = /* arduino */ "mcu" },
> { .name = /* cisco */ "spi-petra" },
> { .name = /* dh */ "dhcom-board" },
> { .name = /* elgin */ "jg10309-01" },
> @@ -737,6 +738,7 @@ static int spidev_of_check(struct device *dev)
>
> static const struct of_device_id spidev_dt_ids[] = {
> { .compatible = "abb,spi-sensor", .data = &spidev_of_check },
> + { .compatible = "arduino,mcu", .data = &spidev_of_check },
That's way too generic, IMO. First, I am not aware of Arduino boards
mounted on top of regular development boards, so basically you are not
describing actual hardware setup but what could be potentially plugged
into box with Linux... and then it is like saying "you can plug
anything" because MCU covers everything, like calling it "Raspberry
Pi-clone".
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: [PATCH 2/5] drivers: spi: spidev: add compatible for arduino spi mcu interface
2025-11-07 7:13 ` Krzysztof Kozlowski
@ 2025-11-11 13:33 ` Riccardo Mereu Linux Kernel
2025-11-11 17:54 ` Conor Dooley
0 siblings, 1 reply; 20+ messages in thread
From: Riccardo Mereu Linux Kernel @ 2025-11-11 13:33 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: andersson, konradybcio, robh, krzk+dt, conor+dt, broonie, linux,
Jonathan.Cameron, wenswang, naresh.solanki, michal.simek, nuno.sa,
chou.cosmo, grantpeltier93, eajames, farouk.bouabid,
linux-arm-msm, devicetree, linux-kernel, linux-spi,
Riccardo Mereu, Martino Facchin
On Fri, Nov 7, 2025 at 8:13 AM Krzysztof Kozlowski <krzk@kernel.org> wrote:
>
> > ---
> > drivers/spi/spidev.c | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c
> > index 5300c942a2a4..f0dd516c2083 100644
> > --- a/drivers/spi/spidev.c
> > +++ b/drivers/spi/spidev.c
> > @@ -704,6 +704,7 @@ static const struct class spidev_class = {
> > */
> > static const struct spi_device_id spidev_spi_ids[] = {
> > { .name = /* abb */ "spi-sensor" },
> > + { .name = /* arduino */ "mcu" },
> > { .name = /* cisco */ "spi-petra" },
> > { .name = /* dh */ "dhcom-board" },
> > { .name = /* elgin */ "jg10309-01" },
> > @@ -737,6 +738,7 @@ static int spidev_of_check(struct device *dev)
> >
> > static const struct of_device_id spidev_dt_ids[] = {
> > { .compatible = "abb,spi-sensor", .data = &spidev_of_check },
> > + { .compatible = "arduino,mcu", .data = &spidev_of_check },
>
> That's way too generic, IMO. First, I am not aware of Arduino boards
> mounted on top of regular development boards, so basically you are not
> describing actual hardware setup but what could be potentially plugged
> into box with Linux... and then it is like saying "you can plug
> anything" because MCU covers everything, like calling it "Raspberry
> Pi-clone".
This is used to describe one of the interfaces between the
microcontroller and the microprocessor on the Arduino UnoQ board.
Since this could be used in other layouts in the future, we thought to
keep it generic enough to reuse it.
If this isn't possible, do you have any suggestions?
>
> Best regards,
> Krzysztof
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: [PATCH 2/5] drivers: spi: spidev: add compatible for arduino spi mcu interface
2025-11-11 13:33 ` Riccardo Mereu Linux Kernel
@ 2025-11-11 17:54 ` Conor Dooley
0 siblings, 0 replies; 20+ messages in thread
From: Conor Dooley @ 2025-11-11 17:54 UTC (permalink / raw)
To: Riccardo Mereu Linux Kernel
Cc: Krzysztof Kozlowski, andersson, konradybcio, robh, krzk+dt,
conor+dt, broonie, linux, Jonathan.Cameron, wenswang,
naresh.solanki, michal.simek, nuno.sa, chou.cosmo, grantpeltier93,
eajames, farouk.bouabid, linux-arm-msm, devicetree, linux-kernel,
linux-spi, Riccardo Mereu, Martino Facchin
[-- Attachment #1: Type: text/plain, Size: 2323 bytes --]
On Tue, Nov 11, 2025 at 02:33:09PM +0100, Riccardo Mereu Linux Kernel wrote:
> On Fri, Nov 7, 2025 at 8:13 AM Krzysztof Kozlowski <krzk@kernel.org> wrote:
> >
> > > ---
> > > drivers/spi/spidev.c | 2 ++
> > > 1 file changed, 2 insertions(+)
> > >
> > > diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c
> > > index 5300c942a2a4..f0dd516c2083 100644
> > > --- a/drivers/spi/spidev.c
> > > +++ b/drivers/spi/spidev.c
> > > @@ -704,6 +704,7 @@ static const struct class spidev_class = {
> > > */
> > > static const struct spi_device_id spidev_spi_ids[] = {
> > > { .name = /* abb */ "spi-sensor" },
> > > + { .name = /* arduino */ "mcu" },
> > > { .name = /* cisco */ "spi-petra" },
> > > { .name = /* dh */ "dhcom-board" },
> > > { .name = /* elgin */ "jg10309-01" },
> > > @@ -737,6 +738,7 @@ static int spidev_of_check(struct device *dev)
> > >
> > > static const struct of_device_id spidev_dt_ids[] = {
> > > { .compatible = "abb,spi-sensor", .data = &spidev_of_check },
> > > + { .compatible = "arduino,mcu", .data = &spidev_of_check },
> >
> > That's way too generic, IMO. First, I am not aware of Arduino boards
> > mounted on top of regular development boards, so basically you are not
> > describing actual hardware setup but what could be potentially plugged
> > into box with Linux... and then it is like saying "you can plug
> > anything" because MCU covers everything, like calling it "Raspberry
> > Pi-clone".
>
> This is used to describe one of the interfaces between the
> microcontroller and the microprocessor on the Arduino UnoQ board.
> Since this could be used in other layouts in the future, we thought to
> keep it generic enough to reuse it.
If it is generic enough to reuse in the future, you can have a fallback
compatible. If it isn't used again with the exact same interface,
congrats you have avoided confusing compatible naming!
> If this isn't possible, do you have any suggestions?
arduino,unoq-mcu?
Then in the future if the duoq board comes along you can do
compatible = "arduino,duoq-mcu", "arduino,unoq-mcu";
btw, thanks for actually introducing a compatible for this, and not
pretending that you have rohm dac that doesn't even exist like a lot of
people :)
Cheers,
Conor.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH 3/5] dt-binding: arm: qcom: add arduino unoq codename
2025-11-06 15:31 [PATCH 0/5] arm64: qcom: add support for Arduino UnoQ SBC Riccardo Mereu
2025-11-06 15:31 ` [PATCH 1/5] dt-binding: trivial-devices: add arduino spi mcu interface Riccardo Mereu
2025-11-06 15:31 ` [PATCH 2/5] drivers: spi: spidev: add compatible for " Riccardo Mereu
@ 2025-11-06 15:31 ` Riccardo Mereu
2025-11-07 7:13 ` Krzysztof Kozlowski
2025-11-06 15:31 ` [PATCH 4/5] arm64: dts: qcom: qcm2290: add uart2 node Riccardo Mereu
2025-11-06 15:31 ` [PATCH 5/5] arm64: dts: qcom: unoq: add dts for arduino unoq Riccardo Mereu
4 siblings, 1 reply; 20+ messages in thread
From: Riccardo Mereu @ 2025-11-06 15:31 UTC (permalink / raw)
To: andersson, konradybcio, robh, krzk+dt, conor+dt, broonie
Cc: linux, Jonathan.Cameron, wenswang, naresh.solanki, michal.simek,
nuno.sa, chou.cosmo, grantpeltier93, eajames, farouk.bouabid,
linux-arm-msm, devicetree, linux-kernel, linux-spi, mm.facchin,
Riccardo Mereu, Riccardo Mereu
From: Riccardo Mereu <r.mereu.kernel@arduino.cc>
Document Arduino UnoQ. Arduino UnoQ is a single-board computer
combining Qualcomm Dragonwing™ QRB2210 microprocessor with
STMicroelectronics STM32U585 microcontroller.
Signed-off-by: Riccardo Mereu <r.mereu@arduino.cc>
---
Documentation/devicetree/bindings/arm/qcom.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/arm/qcom.yaml b/Documentation/devicetree/bindings/arm/qcom.yaml
index d84bd3bca201..1af19245b1d5 100644
--- a/Documentation/devicetree/bindings/arm/qcom.yaml
+++ b/Documentation/devicetree/bindings/arm/qcom.yaml
@@ -336,6 +336,7 @@ properties:
- description: Qualcomm Technologies, Inc. Robotics RB1
items:
- enum:
+ - arduino,imola
- qcom,qrb2210-rb1
- const: qcom,qrb2210
- const: qcom,qcm2290
--
2.51.2
^ permalink raw reply related [flat|nested] 20+ messages in thread* Re: [PATCH 3/5] dt-binding: arm: qcom: add arduino unoq codename
2025-11-06 15:31 ` [PATCH 3/5] dt-binding: arm: qcom: add arduino unoq codename Riccardo Mereu
@ 2025-11-07 7:13 ` Krzysztof Kozlowski
2025-11-11 12:27 ` Dmitry Baryshkov
0 siblings, 1 reply; 20+ messages in thread
From: Krzysztof Kozlowski @ 2025-11-07 7:13 UTC (permalink / raw)
To: Riccardo Mereu, andersson, konradybcio, robh, krzk+dt, conor+dt,
broonie
Cc: linux, Jonathan.Cameron, wenswang, naresh.solanki, michal.simek,
nuno.sa, chou.cosmo, grantpeltier93, eajames, farouk.bouabid,
linux-arm-msm, devicetree, linux-kernel, linux-spi, mm.facchin,
Riccardo Mereu
On 06/11/2025 16:31, Riccardo Mereu wrote:
> From: Riccardo Mereu <r.mereu.kernel@arduino.cc>
>
> Document Arduino UnoQ. Arduino UnoQ is a single-board computer
compatible says imola, not unoq.
> combining Qualcomm Dragonwing™ QRB2210 microprocessor with
> STMicroelectronics STM32U585 microcontroller.
>
> Signed-off-by: Riccardo Mereu <r.mereu@arduino.cc>
> ---
Please use subject prefixes matching the subsystem. You can get them for
example with `git log --oneline -- DIRECTORY_OR_FILE` on the directory
your patch is touching. For bindings, the preferred subjects are
explained here:
https://www.kernel.org/doc/html/latest/devicetree/bindings/submitting-patches.html#i-for-patch-submitters
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 3/5] dt-binding: arm: qcom: add arduino unoq codename
2025-11-07 7:13 ` Krzysztof Kozlowski
@ 2025-11-11 12:27 ` Dmitry Baryshkov
2025-11-11 16:18 ` Bjorn Andersson
2025-11-12 7:35 ` Krzysztof Kozlowski
0 siblings, 2 replies; 20+ messages in thread
From: Dmitry Baryshkov @ 2025-11-11 12:27 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Riccardo Mereu, andersson, konradybcio, robh, krzk+dt, conor+dt,
broonie, linux, Jonathan.Cameron, wenswang, naresh.solanki,
michal.simek, nuno.sa, chou.cosmo, grantpeltier93, eajames,
farouk.bouabid, linux-arm-msm, devicetree, linux-kernel,
linux-spi, mm.facchin, Riccardo Mereu
On Fri, Nov 07, 2025 at 08:13:48AM +0100, Krzysztof Kozlowski wrote:
> On 06/11/2025 16:31, Riccardo Mereu wrote:
> > From: Riccardo Mereu <r.mereu.kernel@arduino.cc>
> >
> > Document Arduino UnoQ. Arduino UnoQ is a single-board computer
>
> compatible says imola, not unoq.
And compatibles for various ChromeBooks also use codenames. I think it's
not the first time the vendor uses a codename instead of the marketing
name inside the compat string.
>
> > combining Qualcomm Dragonwing™ QRB2210 microprocessor with
> > STMicroelectronics STM32U585 microcontroller.
> >
> > Signed-off-by: Riccardo Mereu <r.mereu@arduino.cc>
> > ---
>
>
> Please use subject prefixes matching the subsystem. You can get them for
> example with `git log --oneline -- DIRECTORY_OR_FILE` on the directory
> your patch is touching. For bindings, the preferred subjects are
> explained here:
> https://www.kernel.org/doc/html/latest/devicetree/bindings/submitting-patches.html#i-for-patch-submitters
>
>
> Best regards,
> Krzysztof
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 3/5] dt-binding: arm: qcom: add arduino unoq codename
2025-11-11 12:27 ` Dmitry Baryshkov
@ 2025-11-11 16:18 ` Bjorn Andersson
2025-11-12 7:35 ` Krzysztof Kozlowski
1 sibling, 0 replies; 20+ messages in thread
From: Bjorn Andersson @ 2025-11-11 16:18 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: Krzysztof Kozlowski, Riccardo Mereu, konradybcio, robh, krzk+dt,
conor+dt, broonie, linux, Jonathan.Cameron, wenswang,
naresh.solanki, michal.simek, nuno.sa, chou.cosmo, grantpeltier93,
eajames, farouk.bouabid, linux-arm-msm, devicetree, linux-kernel,
linux-spi, mm.facchin, Riccardo Mereu
On Tue, Nov 11, 2025 at 02:27:03PM +0200, Dmitry Baryshkov wrote:
> On Fri, Nov 07, 2025 at 08:13:48AM +0100, Krzysztof Kozlowski wrote:
> > On 06/11/2025 16:31, Riccardo Mereu wrote:
> > > From: Riccardo Mereu <r.mereu.kernel@arduino.cc>
> > >
> > > Document Arduino UnoQ. Arduino UnoQ is a single-board computer
> >
> > compatible says imola, not unoq.
>
> And compatibles for various ChromeBooks also use codenames. I think it's
> not the first time the vendor uses a codename instead of the marketing
> name inside the compat string.
>
I appreciate the use of the codename, but both subject and commit
message is talking about "UnoQ" only and then "imola" shows up only in
the patch.
@Riccardo, please introduce "imola" in the commit message, so we know
what it is.
Regards,
Bjorn
> >
> > > combining Qualcomm Dragonwing™ QRB2210 microprocessor with
> > > STMicroelectronics STM32U585 microcontroller.
> > >
> > > Signed-off-by: Riccardo Mereu <r.mereu@arduino.cc>
> > > ---
> >
> >
> > Please use subject prefixes matching the subsystem. You can get them for
> > example with `git log --oneline -- DIRECTORY_OR_FILE` on the directory
> > your patch is touching. For bindings, the preferred subjects are
> > explained here:
> > https://www.kernel.org/doc/html/latest/devicetree/bindings/submitting-patches.html#i-for-patch-submitters
> >
> >
> > Best regards,
> > Krzysztof
>
> --
> With best wishes
> Dmitry
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 3/5] dt-binding: arm: qcom: add arduino unoq codename
2025-11-11 12:27 ` Dmitry Baryshkov
2025-11-11 16:18 ` Bjorn Andersson
@ 2025-11-12 7:35 ` Krzysztof Kozlowski
1 sibling, 0 replies; 20+ messages in thread
From: Krzysztof Kozlowski @ 2025-11-12 7:35 UTC (permalink / raw)
To: Dmitry Baryshkov
Cc: Riccardo Mereu, andersson, konradybcio, robh, krzk+dt, conor+dt,
broonie, linux, Jonathan.Cameron, wenswang, naresh.solanki,
michal.simek, nuno.sa, chou.cosmo, grantpeltier93, eajames,
farouk.bouabid, linux-arm-msm, devicetree, linux-kernel,
linux-spi, mm.facchin, Riccardo Mereu
On 11/11/2025 13:27, Dmitry Baryshkov wrote:
> On Fri, Nov 07, 2025 at 08:13:48AM +0100, Krzysztof Kozlowski wrote:
>> On 06/11/2025 16:31, Riccardo Mereu wrote:
>>> From: Riccardo Mereu <r.mereu.kernel@arduino.cc>
>>>
>>> Document Arduino UnoQ. Arduino UnoQ is a single-board computer
>>
>> compatible says imola, not unoq.
>
> And compatibles for various ChromeBooks also use codenames. I think it's
> not the first time the vendor uses a codename instead of the marketing
> name inside the compat string.
And that's why we have commit msg to explain anything which is not
obvious...
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH 4/5] arm64: dts: qcom: qcm2290: add uart2 node
2025-11-06 15:31 [PATCH 0/5] arm64: qcom: add support for Arduino UnoQ SBC Riccardo Mereu
` (2 preceding siblings ...)
2025-11-06 15:31 ` [PATCH 3/5] dt-binding: arm: qcom: add arduino unoq codename Riccardo Mereu
@ 2025-11-06 15:31 ` Riccardo Mereu
2025-11-06 16:27 ` Konrad Dybcio
2025-11-11 12:27 ` Dmitry Baryshkov
2025-11-06 15:31 ` [PATCH 5/5] arm64: dts: qcom: unoq: add dts for arduino unoq Riccardo Mereu
4 siblings, 2 replies; 20+ messages in thread
From: Riccardo Mereu @ 2025-11-06 15:31 UTC (permalink / raw)
To: andersson, konradybcio, robh, krzk+dt, conor+dt, broonie
Cc: linux, Jonathan.Cameron, wenswang, naresh.solanki, michal.simek,
nuno.sa, chou.cosmo, grantpeltier93, eajames, farouk.bouabid,
linux-arm-msm, devicetree, linux-kernel, linux-spi, mm.facchin,
Riccardo Mereu
uart2 is used in Arduino UnoQ as an interface between microprocessor and
microcontroller.
Signed-off-by: Riccardo Mereu <r.mereu@arduino.cc>
---
arch/arm64/boot/dts/qcom/agatti.dtsi | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/agatti.dtsi b/arch/arm64/boot/dts/qcom/agatti.dtsi
index 8bf5c5583fc2..32d58e66f57d 100644
--- a/arch/arm64/boot/dts/qcom/agatti.dtsi
+++ b/arch/arm64/boot/dts/qcom/agatti.dtsi
@@ -562,6 +562,13 @@ qup_uart1_default: qup-uart1-default-state {
bias-disable;
};
+ qup_uart2_default: qup-uart2-default-state {
+ pins = "gpio6", "gpio7", "gpio71", "gpio80";
+ function = "qup2";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
qup_uart3_default: qup-uart3-default-state {
pins = "gpio8", "gpio9", "gpio10", "gpio11";
function = "qup3";
@@ -1315,6 +1322,23 @@ &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
status = "disabled";
};
+ uart2: serial@4a88000 {
+ compatible = "qcom,geni-uart";
+ reg = <0x0 0x04a88000 0x0 0x4000>;
+ interrupts = <GIC_SPI 329 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&gcc GCC_QUPV3_WRAP0_S2_CLK>;
+ clock-names = "se";
+ pinctrl-0 = <&qup_uart2_default>;
+ pinctrl-names = "default";
+ interconnects = <&qup_virt MASTER_QUP_CORE_0 RPM_ALWAYS_TAG
+ &qup_virt SLAVE_QUP_CORE_0 RPM_ALWAYS_TAG>,
+ <&bimc MASTER_APPSS_PROC RPM_ALWAYS_TAG
+ &config_noc MASTER_APPSS_PROC RPM_ALWAYS_TAG>;
+ interconnect-names = "qup-core",
+ "qup-config";
+ status = "disabled";
+ };
+
i2c3: i2c@4a8c000 {
compatible = "qcom,geni-i2c";
reg = <0x0 0x04a8c000 0x0 0x4000>;
--
2.51.2
^ permalink raw reply related [flat|nested] 20+ messages in thread* Re: [PATCH 4/5] arm64: dts: qcom: qcm2290: add uart2 node
2025-11-06 15:31 ` [PATCH 4/5] arm64: dts: qcom: qcm2290: add uart2 node Riccardo Mereu
@ 2025-11-06 16:27 ` Konrad Dybcio
2025-11-11 12:27 ` Dmitry Baryshkov
1 sibling, 0 replies; 20+ messages in thread
From: Konrad Dybcio @ 2025-11-06 16:27 UTC (permalink / raw)
To: Riccardo Mereu, andersson, konradybcio, robh, krzk+dt, conor+dt,
broonie
Cc: linux, Jonathan.Cameron, wenswang, naresh.solanki, michal.simek,
nuno.sa, chou.cosmo, grantpeltier93, eajames, farouk.bouabid,
linux-arm-msm, devicetree, linux-kernel, linux-spi, mm.facchin,
Riccardo Mereu
On 11/6/25 4:31 PM, Riccardo Mereu wrote:
> uart2 is used in Arduino UnoQ as an interface between microprocessor and
> microcontroller.
>
> Signed-off-by: Riccardo Mereu <r.mereu@arduino.cc>
> ---
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Konrad
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 4/5] arm64: dts: qcom: qcm2290: add uart2 node
2025-11-06 15:31 ` [PATCH 4/5] arm64: dts: qcom: qcm2290: add uart2 node Riccardo Mereu
2025-11-06 16:27 ` Konrad Dybcio
@ 2025-11-11 12:27 ` Dmitry Baryshkov
1 sibling, 0 replies; 20+ messages in thread
From: Dmitry Baryshkov @ 2025-11-11 12:27 UTC (permalink / raw)
To: Riccardo Mereu
Cc: andersson, konradybcio, robh, krzk+dt, conor+dt, broonie, linux,
Jonathan.Cameron, wenswang, naresh.solanki, michal.simek, nuno.sa,
chou.cosmo, grantpeltier93, eajames, farouk.bouabid,
linux-arm-msm, devicetree, linux-kernel, linux-spi, mm.facchin,
Riccardo Mereu
On Thu, Nov 06, 2025 at 04:31:18PM +0100, Riccardo Mereu wrote:
> uart2 is used in Arduino UnoQ as an interface between microprocessor and
> microcontroller.
>
> Signed-off-by: Riccardo Mereu <r.mereu@arduino.cc>
> ---
> arch/arm64/boot/dts/qcom/agatti.dtsi | 24 ++++++++++++++++++++++++
> 1 file changed, 24 insertions(+)
>
Reviewed-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH 5/5] arm64: dts: qcom: unoq: add dts for arduino unoq
2025-11-06 15:31 [PATCH 0/5] arm64: qcom: add support for Arduino UnoQ SBC Riccardo Mereu
` (3 preceding siblings ...)
2025-11-06 15:31 ` [PATCH 4/5] arm64: dts: qcom: qcm2290: add uart2 node Riccardo Mereu
@ 2025-11-06 15:31 ` Riccardo Mereu
2025-11-06 16:29 ` Konrad Dybcio
2025-11-11 16:14 ` Bjorn Andersson
4 siblings, 2 replies; 20+ messages in thread
From: Riccardo Mereu @ 2025-11-06 15:31 UTC (permalink / raw)
To: andersson, konradybcio, robh, krzk+dt, conor+dt, broonie
Cc: linux, Jonathan.Cameron, wenswang, naresh.solanki, michal.simek,
nuno.sa, chou.cosmo, grantpeltier93, eajames, farouk.bouabid,
linux-arm-msm, devicetree, linux-kernel, linux-spi, mm.facchin,
Riccardo Mereu, Riccardo Mereu
From: Riccardo Mereu <r.mereu.kernel@arduino.cc>
Arduino UnoQ is a single-board computer combining Qualcomm
Dragonwing™ QRB2210 microprocessor with STMicroelectronics STM32U585
microcontroller.
Support to a simply boot to shell environment includes:
- UART, I2C, SPI
- onboard LEDS
- eMMC
- WLAN and BT
Signed-off-by: Riccardo Mereu <r.mereu@arduino.cc>
---
arch/arm64/boot/dts/qcom/Makefile | 1 +
.../boot/dts/qcom/qrb2210-arduino-imola.dts | 456 ++++++++++++++++++
2 files changed, 457 insertions(+)
create mode 100644 arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
index 6f34d5ed331c..9f98a7f2cbb4 100644
--- a/arch/arm64/boot/dts/qcom/Makefile
+++ b/arch/arm64/boot/dts/qcom/Makefile
@@ -143,6 +143,7 @@ dtb-$(CONFIG_ARCH_QCOM) += qcs8550-aim300-aiot.dtb
dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride.dtb
dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride-r3.dtb
dtb-$(CONFIG_ARCH_QCOM) += qdu1000-idp.dtb
+dtb-$(CONFIG_ARCH_QCOM) += qrb2210-arduino-imola.dtb
dtb-$(CONFIG_ARCH_QCOM) += qrb2210-rb1.dtb
dtb-$(CONFIG_ARCH_QCOM) += qrb4210-rb2.dtb
dtb-$(CONFIG_ARCH_QCOM) += qrb5165-rb5.dtb
diff --git a/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts b/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts
new file mode 100644
index 000000000000..83e7f3e9da76
--- /dev/null
+++ b/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts
@@ -0,0 +1,456 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
+/*
+ * Copyright (c) 2025, Arduino SA
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/leds/common.h>
+#include "agatti.dtsi"
+#include "pm4125.dtsi"
+
+/delete-node/ &cont_splash_memory;
+
+/ {
+ model = "Arduino UnoQ";
+ compatible = "arduino,imola", "qcom,qrb2210", "qcom,qcm2290";
+
+ aliases {
+ serial0 = &uart4;
+ serial1 = &uart2;
+ serial2 = &uart3;
+ sdhc1 = &sdhc_1;
+ };
+
+ chosen {
+ stdout-path = "serial0:115200n8";
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+ label = "gpio-keys";
+
+ pinctrl-0 = <&key_volp_n>, <&key_vold_n>;
+ pinctrl-names = "default";
+
+ key-volume-up {
+ label = "Volume Up";
+ linux,code = <KEY_VOLUMEUP>;
+ gpios = <&tlmm 96 GPIO_ACTIVE_LOW>;
+ debounce-interval = <15>;
+ linux,can-disable;
+ wakeup-source;
+ };
+
+ key-volume-down {
+ label = "Volume Down";
+ linux,code = <KEY_VOLUMEDOWN>;
+ gpios = <&tlmm 36 GPIO_ACTIVE_LOW>;
+ debounce-interval = <15>;
+ linux,can-disable;
+ wakeup-source;
+ };
+ };
+
+ leds: leds {
+ compatible = "gpio-leds";
+
+ ledpanic: led-panic {
+ label = "red:panic";
+ function = LED_FUNCTION_INDICATOR;
+ color = <LED_COLOR_ID_RED>;
+ gpios = <&tlmm 39 GPIO_ACTIVE_HIGH>;
+ linux,default-trigger = "none";
+ default-state = "off";
+ panic-indicator;
+ };
+
+ ledwlan: led-wlan {
+ label = "green:wlan";
+ function = LED_FUNCTION_WLAN;
+ color = <LED_COLOR_ID_GREEN>;
+ gpios = <&tlmm 40 GPIO_ACTIVE_HIGH>;
+ linux,default-trigger = "phy0tx";
+ default-state = "off";
+ };
+
+ ledbt: led-bt {
+ label = "blue:bt";
+ function = LED_FUNCTION_BLUETOOTH;
+ color = <LED_COLOR_ID_BLUE>;
+ gpios = <&tlmm 47 GPIO_ACTIVE_HIGH>;
+ linux,default-trigger = "bluetooth-power";
+ default-state = "off";
+ };
+
+ ledr: led-user-red {
+ gpios = <&tlmm 41 GPIO_ACTIVE_HIGH>;
+ color = <LED_COLOR_ID_RED>;
+ };
+
+ ledg: led-user-green {
+ gpios = <&tlmm 42 GPIO_ACTIVE_HIGH>;
+ color = <LED_COLOR_ID_GREEN>;
+ };
+
+ ledb: led-user-blue {
+ gpios = <&tlmm 60 GPIO_ACTIVE_HIGH>;
+ color = <LED_COLOR_ID_BLUE>;
+ };
+ };
+
+ multi-led {
+ compatible = "leds-group-multicolor";
+ color = <LED_COLOR_ID_RGB>;
+ function = LED_FUNCTION_INDICATOR;
+ leds = <&ledr>, <&ledg>, <&ledb>;
+ };
+
+ /* PM4125 charger out, supplied by VBAT */
+ vph_pwr: regulator-vph-pwr {
+ compatible = "regulator-fixed";
+ regulator-name = "vph_pwr";
+ regulator-min-microvolt = <3700000>;
+ regulator-max-microvolt = <3700000>;
+ regulator-always-on;
+ regulator-boot-on;
+ };
+};
+
+&gpi_dma0 {
+ status = "okay";
+};
+
+&gpu {
+ status = "okay";
+};
+
+&gpu_zap_shader {
+ firmware-name = "qcom/qcm2290/a702_zap.mbn";
+};
+
+&pm4125_vbus {
+ regulator-min-microamp = <500000>;
+ regulator-max-microamp = <500000>;
+
+ status = "okay";
+};
+
+&qupv3_id_0 {
+ status = "okay";
+};
+
+&remoteproc_adsp {
+ firmware-name = "qcom/qcm2290/adsp.mbn";
+
+ status = "okay";
+};
+
+&remoteproc_mpss {
+ firmware-name = "qcom/qcm2290/modem.mbn";
+
+ status = "okay";
+};
+
+&rpm_requests {
+ regulators {
+ compatible = "qcom,rpm-pm2250-regulators";
+ vdd_s3-supply = <&vph_pwr>;
+ vdd_s4-supply = <&vph_pwr>;
+ vdd_l1_l2_l3_l5_l6_l7_l8_l9_l10_l11_l12-supply = <&pm4125_s3>;
+ vdd_l4_l17_l18_l19_l20_l21_l22-supply = <&vph_pwr>;
+ vdd_l13_l14_l15_l16-supply = <&pm4125_s4>;
+
+ pm4125_s3: s3 {
+ /* 0.4V-1.6625V -> 1.3V (Power tree requirements) */
+ regulator-min-microvolt = <1352000>;
+ regulator-max-microvolt = <1352000>;
+ regulator-boot-on;
+ };
+
+ pm4125_s4: s4 {
+ /* 1.2V-2.35V -> 2.05V (Power tree requirements) */
+ regulator-min-microvolt = <2072000>;
+ regulator-max-microvolt = <2072000>;
+ regulator-boot-on;
+ };
+
+ pm4125_l2: l2 {
+ /* LPDDR4X VDD2 */
+ regulator-min-microvolt = <1136000>;
+ regulator-max-microvolt = <1136000>;
+ regulator-always-on;
+ regulator-boot-on;
+ };
+
+ pm4125_l3: l3 {
+ /* LPDDR4X VDDQ */
+ regulator-min-microvolt = <616000>;
+ regulator-max-microvolt = <616000>;
+ regulator-always-on;
+ regulator-boot-on;
+ };
+
+ pm4125_l4: l4 {
+ /* max = 3.05V -> max = 2.7 to disable 3V signaling (SDHCI2) */
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <2700000>;
+ regulator-allow-set-load;
+ };
+
+ pm4125_l5: l5 {
+ /* CSI/DSI */
+ regulator-min-microvolt = <1232000>;
+ regulator-max-microvolt = <1232000>;
+ regulator-allow-set-load;
+ regulator-boot-on;
+ };
+
+ pm4125_l6: l6 {
+ /* DRAM PLL */
+ regulator-min-microvolt = <928000>;
+ regulator-max-microvolt = <928000>;
+ regulator-always-on;
+ regulator-boot-on;
+ };
+
+ pm4125_l7: l7 {
+ /* Wi-Fi CX */
+ regulator-min-microvolt = <664000>;
+ regulator-max-microvolt = <664000>;
+ };
+
+ pm4125_l10: l10 {
+ /* Wi-Fi RFA */
+ regulator-min-microvolt = <1304000>;
+ regulator-max-microvolt = <1304000>;
+ };
+
+ pm4125_l11: l11 {
+ /* ANX7625 DVDD1P0V/AVDD1P0V */
+ regulator-min-microvolt = <1000000>;
+ regulator-max-microvolt = <1000000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ pm4125_l12: l12 {
+ /* USB PHYs */
+ regulator-min-microvolt = <928000>;
+ regulator-max-microvolt = <928000>;
+ regulator-allow-set-load;
+ regulator-boot-on;
+ };
+
+ pm4125_l13: l13 {
+ /* USB/QFPROM/PLLs */
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-allow-set-load;
+ regulator-boot-on;
+ };
+
+ pm4125_l14: l14 {
+ /* SDHCI1 EMMC VCCQ */
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-allow-set-load;
+ /* Broken hardware, never turn it off! */
+ regulator-always-on;
+ };
+
+ pm4125_l15: l15 {
+ /* VDDIO */
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-allow-set-load;
+ regulator-always-on;
+ regulator-boot-on;
+ };
+
+ pm4125_l20: l20 {
+ /* SDHCI1 EMMC */
+ regulator-min-microvolt = <2400000>;
+ regulator-max-microvolt = <3600000>;
+ regulator-allow-set-load;
+ };
+
+ pm4125_l21: l21 {
+ /* USB HS */
+ regulator-min-microvolt = <2960000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-allow-set-load;
+ regulator-boot-on;
+ };
+
+ pm4125_l22: l22 {
+ /* Wi-Fi VDD */
+ regulator-min-microvolt = <3312000>;
+ regulator-max-microvolt = <3312000>;
+ };
+ };
+};
+
+&sdhc_1 {
+ vmmc-supply = <&pm4125_l20>;
+ vqmmc-supply = <&pm4125_l14>;
+ pinctrl-0 = <&sdc1_state_on>;
+ pinctrl-1 = <&sdc1_state_off>;
+ pinctrl-names = "default", "sleep";
+ mmc-hs400-1_8v;
+ mmc-hs200-1_8v;
+ non-removable;
+ supports-cqe;
+ no-sdio;
+ no-sd;
+
+ status = "okay";
+};
+
+&tlmm {
+ spidev_cs: spidev-cs-state {
+ pins = "gpio17";
+ function = "gpio";
+ drive-strength = <16>;
+ };
+
+ jmisc_gpio18: jmisc-gpio18-state {
+ pins = "gpio18";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ jmisc_gpio28: jmisc-gpio28-state {
+ pins = "gpio28";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ key_vold_n: key-vold-n-state {
+ pins = "gpio36";
+ function = "gpio";
+ bias-pull-up;
+ output-disable;
+ };
+
+ key_volp_n: key-volp-n-state {
+ pins = "gpio96";
+ function = "gpio";
+ bias-pull-up;
+ output-disable;
+ };
+
+ jmisc_gpio98: jmisc-gpio98-state {
+ pins = "gpio98";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ jmisc_gpio99: jmisc-gpio99-state {
+ pins = "gpio99";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ jmisc_gpio100: jmisc-gpio100-state {
+ pins = "gpio100";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+
+ jmisc_gpio101: jmisc-gpio101-state {
+ pins = "gpio101";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-pull-down;
+ };
+};
+
+&i2c0 {
+ clock-frequency = <100000>;
+
+ status = "okay";
+};
+
+&i2c1 {
+ clock-frequency = <100000>;
+
+ status = "okay";
+};
+
+&uart2 {
+ status = "okay";
+};
+
+/* UART connected to Bluetooth */
+&uart3 {
+ status = "okay";
+
+ bluetooth {
+ compatible = "qcom,wcn3988-bt";
+
+ vddio-supply = <&pm4125_l15>;
+ vddxo-supply = <&pm4125_l13>;
+ vddrf-supply = <&pm4125_l10>;
+ vddch0-supply = <&pm4125_l22>;
+ enable-gpios = <&tlmm 87 GPIO_ACTIVE_HIGH>;
+ max-speed = <3000000>;
+ };
+};
+
+/* UART connected to JCTL */
+&uart4 {
+ compatible = "qcom,geni-debug-uart";
+
+ status = "okay";
+};
+
+&spi5 {
+ status = "okay";
+
+ spidev@0 {
+ reg = <0>;
+ compatible = "arduino,mcu";
+ pinctrl-0 = <&spidev_cs>;
+ pinctrl-names = "default";
+ };
+};
+
+&usb {
+ status = "okay";
+};
+
+&usb_hsphy {
+ vdd-supply = <&pm4125_l12>;
+ vdda-pll-supply = <&pm4125_l13>;
+ vdda-phy-dpdm-supply = <&pm4125_l21>;
+
+ status = "okay";
+};
+
+&usb_qmpphy {
+ vdda-phy-supply = <&pm4125_l12>;
+ vdda-pll-supply = <&pm4125_l13>;
+
+ status = "okay";
+};
+
+&wifi {
+ vdd-0.8-cx-mx-supply = <&pm4125_l7>;
+ vdd-1.8-xo-supply = <&pm4125_l13>;
+ vdd-1.3-rfa-supply = <&pm4125_l10>;
+ vdd-3.3-ch0-supply = <&pm4125_l22>;
+ qcom,ath10k-calibration-variant = "Arduino_UnoQ";
+ firmware-name = "qcm2290";
+
+ status = "okay";
+};
+
+&xo_board {
+ clock-frequency = <38400000>;
+};
--
2.51.2
^ permalink raw reply related [flat|nested] 20+ messages in thread* Re: [PATCH 5/5] arm64: dts: qcom: unoq: add dts for arduino unoq
2025-11-06 15:31 ` [PATCH 5/5] arm64: dts: qcom: unoq: add dts for arduino unoq Riccardo Mereu
@ 2025-11-06 16:29 ` Konrad Dybcio
2025-11-11 12:28 ` Dmitry Baryshkov
2025-11-11 16:14 ` Bjorn Andersson
1 sibling, 1 reply; 20+ messages in thread
From: Konrad Dybcio @ 2025-11-06 16:29 UTC (permalink / raw)
To: Riccardo Mereu, andersson, konradybcio, robh, krzk+dt, conor+dt,
broonie
Cc: linux, Jonathan.Cameron, wenswang, naresh.solanki, michal.simek,
nuno.sa, chou.cosmo, grantpeltier93, eajames, farouk.bouabid,
linux-arm-msm, devicetree, linux-kernel, linux-spi, mm.facchin,
Riccardo Mereu
On 11/6/25 4:31 PM, Riccardo Mereu wrote:
> From: Riccardo Mereu <r.mereu.kernel@arduino.cc>
>
> Arduino UnoQ is a single-board computer combining Qualcomm
> Dragonwing™ QRB2210 microprocessor with STMicroelectronics STM32U585
> microcontroller.
> Support to a simply boot to shell environment includes:
> - UART, I2C, SPI
> - onboard LEDS
> - eMMC
> - WLAN and BT
>
> Signed-off-by: Riccardo Mereu <r.mereu@arduino.cc>
> ---
[...]
> + leds: leds {
> + compatible = "gpio-leds";
> +
> + ledpanic: led-panic {
> + label = "red:panic";
> + function = LED_FUNCTION_INDICATOR;
> + color = <LED_COLOR_ID_RED>;
> + gpios = <&tlmm 39 GPIO_ACTIVE_HIGH>;
> + linux,default-trigger = "none";
> + default-state = "off";
> + panic-indicator;
> + };
> +
> + ledwlan: led-wlan {
> + label = "green:wlan";
> + function = LED_FUNCTION_WLAN;
> + color = <LED_COLOR_ID_GREEN>;
> + gpios = <&tlmm 40 GPIO_ACTIVE_HIGH>;
> + linux,default-trigger = "phy0tx";
> + default-state = "off";
> + };
> +
> + ledbt: led-bt {
The labels (label: node-name@unit-addr {}) for the above 3 LEDs and
the group are not used, please drop them
Looks good otherwise
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Konrad
^ permalink raw reply [flat|nested] 20+ messages in thread* Re: [PATCH 5/5] arm64: dts: qcom: unoq: add dts for arduino unoq
2025-11-06 16:29 ` Konrad Dybcio
@ 2025-11-11 12:28 ` Dmitry Baryshkov
0 siblings, 0 replies; 20+ messages in thread
From: Dmitry Baryshkov @ 2025-11-11 12:28 UTC (permalink / raw)
To: Konrad Dybcio
Cc: Riccardo Mereu, andersson, konradybcio, robh, krzk+dt, conor+dt,
broonie, linux, Jonathan.Cameron, wenswang, naresh.solanki,
michal.simek, nuno.sa, chou.cosmo, grantpeltier93, eajames,
farouk.bouabid, linux-arm-msm, devicetree, linux-kernel,
linux-spi, mm.facchin, Riccardo Mereu
On Thu, Nov 06, 2025 at 05:29:47PM +0100, Konrad Dybcio wrote:
> On 11/6/25 4:31 PM, Riccardo Mereu wrote:
> > From: Riccardo Mereu <r.mereu.kernel@arduino.cc>
> >
> > Arduino UnoQ is a single-board computer combining Qualcomm
> > Dragonwing™ QRB2210 microprocessor with STMicroelectronics STM32U585
> > microcontroller.
> > Support to a simply boot to shell environment includes:
> > - UART, I2C, SPI
> > - onboard LEDS
> > - eMMC
> > - WLAN and BT
> >
> > Signed-off-by: Riccardo Mereu <r.mereu@arduino.cc>
> > ---
>
> [...]
>
> > + leds: leds {
> > + compatible = "gpio-leds";
> > +
> > + ledpanic: led-panic {
> > + label = "red:panic";
> > + function = LED_FUNCTION_INDICATOR;
> > + color = <LED_COLOR_ID_RED>;
> > + gpios = <&tlmm 39 GPIO_ACTIVE_HIGH>;
> > + linux,default-trigger = "none";
> > + default-state = "off";
> > + panic-indicator;
> > + };
> > +
> > + ledwlan: led-wlan {
> > + label = "green:wlan";
> > + function = LED_FUNCTION_WLAN;
> > + color = <LED_COLOR_ID_GREEN>;
> > + gpios = <&tlmm 40 GPIO_ACTIVE_HIGH>;
> > + linux,default-trigger = "phy0tx";
> > + default-state = "off";
> > + };
> > +
> > + ledbt: led-bt {
>
> The labels (label: node-name@unit-addr {}) for the above 3 LEDs and
> the group are not used, please drop them
Also, I think the nodes here should be sorted alphanumerically.
Otherwise LGTM.
>
> Looks good otherwise
>
> Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
>
> Konrad
>
--
With best wishes
Dmitry
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 5/5] arm64: dts: qcom: unoq: add dts for arduino unoq
2025-11-06 15:31 ` [PATCH 5/5] arm64: dts: qcom: unoq: add dts for arduino unoq Riccardo Mereu
2025-11-06 16:29 ` Konrad Dybcio
@ 2025-11-11 16:14 ` Bjorn Andersson
1 sibling, 0 replies; 20+ messages in thread
From: Bjorn Andersson @ 2025-11-11 16:14 UTC (permalink / raw)
To: Riccardo Mereu
Cc: konradybcio, robh, krzk+dt, conor+dt, broonie, linux,
Jonathan.Cameron, wenswang, naresh.solanki, michal.simek, nuno.sa,
chou.cosmo, grantpeltier93, eajames, farouk.bouabid,
linux-arm-msm, devicetree, linux-kernel, linux-spi, mm.facchin,
Riccardo Mereu
On Thu, Nov 06, 2025 at 04:31:19PM +0100, Riccardo Mereu wrote:
> From: Riccardo Mereu <r.mereu.kernel@arduino.cc>
Please make the subject:
"arm64: dts: qcom: qrb2210: Add Arduino UnoQ board"
>
> Arduino UnoQ is a single-board computer combining Qualcomm
> Dragonwing™ QRB2210 microprocessor with STMicroelectronics STM32U585
> microcontroller.
> Support to a simply boot to shell environment includes:
> - UART, I2C, SPI
> - onboard LEDS
> - eMMC
> - WLAN and BT
>
Nice, some small things to improve below (and above).
> Signed-off-by: Riccardo Mereu <r.mereu@arduino.cc>
> ---
> arch/arm64/boot/dts/qcom/Makefile | 1 +
> .../boot/dts/qcom/qrb2210-arduino-imola.dts | 456 ++++++++++++++++++
> 2 files changed, 457 insertions(+)
> create mode 100644 arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts
>
> diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile
> index 6f34d5ed331c..9f98a7f2cbb4 100644
> --- a/arch/arm64/boot/dts/qcom/Makefile
> +++ b/arch/arm64/boot/dts/qcom/Makefile
> @@ -143,6 +143,7 @@ dtb-$(CONFIG_ARCH_QCOM) += qcs8550-aim300-aiot.dtb
> dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride.dtb
> dtb-$(CONFIG_ARCH_QCOM) += qcs9100-ride-r3.dtb
> dtb-$(CONFIG_ARCH_QCOM) += qdu1000-idp.dtb
> +dtb-$(CONFIG_ARCH_QCOM) += qrb2210-arduino-imola.dtb
> dtb-$(CONFIG_ARCH_QCOM) += qrb2210-rb1.dtb
> dtb-$(CONFIG_ARCH_QCOM) += qrb4210-rb2.dtb
> dtb-$(CONFIG_ARCH_QCOM) += qrb5165-rb5.dtb
> diff --git a/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts b/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts
> new file mode 100644
> index 000000000000..83e7f3e9da76
> --- /dev/null
> +++ b/arch/arm64/boot/dts/qcom/qrb2210-arduino-imola.dts
> @@ -0,0 +1,456 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
> +/*
> + * Copyright (c) 2025, Arduino SA
> + */
> +
> +/dts-v1/;
> +
> +#include <dt-bindings/leds/common.h>
> +#include "agatti.dtsi"
> +#include "pm4125.dtsi"
> +
> +/delete-node/ &cont_splash_memory;
> +
> +/ {
> + model = "Arduino UnoQ";
> + compatible = "arduino,imola", "qcom,qrb2210", "qcom,qcm2290";
chassis-type = "embedded";
> +
> + aliases {
> + serial0 = &uart4;
> + serial1 = &uart2;
> + serial2 = &uart3;
> + sdhc1 = &sdhc_1;
> + };
> +
> + chosen {
> + stdout-path = "serial0:115200n8";
> + };
> +
> + gpio-keys {
> + compatible = "gpio-keys";
> + label = "gpio-keys";
> +
> + pinctrl-0 = <&key_volp_n>, <&key_vold_n>;
> + pinctrl-names = "default";
> +
> + key-volume-up {
> + label = "Volume Up";
> + linux,code = <KEY_VOLUMEUP>;
> + gpios = <&tlmm 96 GPIO_ACTIVE_LOW>;
> + debounce-interval = <15>;
> + linux,can-disable;
> + wakeup-source;
> + };
> +
> + key-volume-down {
> + label = "Volume Down";
> + linux,code = <KEY_VOLUMEDOWN>;
> + gpios = <&tlmm 36 GPIO_ACTIVE_LOW>;
> + debounce-interval = <15>;
> + linux,can-disable;
> + wakeup-source;
> + };
> + };
> +
> + leds: leds {
> + compatible = "gpio-leds";
> +
> + ledpanic: led-panic {
> + label = "red:panic";
> + function = LED_FUNCTION_INDICATOR;
> + color = <LED_COLOR_ID_RED>;
> + gpios = <&tlmm 39 GPIO_ACTIVE_HIGH>;
> + linux,default-trigger = "none";
> + default-state = "off";
> + panic-indicator;
> + };
> +
> + ledwlan: led-wlan {
> + label = "green:wlan";
> + function = LED_FUNCTION_WLAN;
> + color = <LED_COLOR_ID_GREEN>;
> + gpios = <&tlmm 40 GPIO_ACTIVE_HIGH>;
> + linux,default-trigger = "phy0tx";
> + default-state = "off";
> + };
> +
> + ledbt: led-bt {
> + label = "blue:bt";
> + function = LED_FUNCTION_BLUETOOTH;
> + color = <LED_COLOR_ID_BLUE>;
> + gpios = <&tlmm 47 GPIO_ACTIVE_HIGH>;
> + linux,default-trigger = "bluetooth-power";
> + default-state = "off";
> + };
> +
> + ledr: led-user-red {
> + gpios = <&tlmm 41 GPIO_ACTIVE_HIGH>;
> + color = <LED_COLOR_ID_RED>;
> + };
> +
> + ledg: led-user-green {
> + gpios = <&tlmm 42 GPIO_ACTIVE_HIGH>;
> + color = <LED_COLOR_ID_GREEN>;
> + };
> +
> + ledb: led-user-blue {
> + gpios = <&tlmm 60 GPIO_ACTIVE_HIGH>;
> + color = <LED_COLOR_ID_BLUE>;
> + };
> + };
> +
> + multi-led {
> + compatible = "leds-group-multicolor";
> + color = <LED_COLOR_ID_RGB>;
> + function = LED_FUNCTION_INDICATOR;
> + leds = <&ledr>, <&ledg>, <&ledb>;
> + };
> +
> + /* PM4125 charger out, supplied by VBAT */
> + vph_pwr: regulator-vph-pwr {
> + compatible = "regulator-fixed";
> + regulator-name = "vph_pwr";
> + regulator-min-microvolt = <3700000>;
> + regulator-max-microvolt = <3700000>;
> + regulator-always-on;
> + regulator-boot-on;
> + };
> +};
> +
> +&gpi_dma0 {
> + status = "okay";
> +};
> +
> +&gpu {
> + status = "okay";
> +};
> +
> +&gpu_zap_shader {
> + firmware-name = "qcom/qcm2290/a702_zap.mbn";
> +};
> +
> +&pm4125_vbus {
> + regulator-min-microamp = <500000>;
> + regulator-max-microamp = <500000>;
> +
> + status = "okay";
> +};
> +
> +&qupv3_id_0 {
> + status = "okay";
> +};
> +
> +&remoteproc_adsp {
> + firmware-name = "qcom/qcm2290/adsp.mbn";
> +
> + status = "okay";
> +};
> +
> +&remoteproc_mpss {
> + firmware-name = "qcom/qcm2290/modem.mbn";
> +
> + status = "okay";
> +};
> +
> +&rpm_requests {
> + regulators {
> + compatible = "qcom,rpm-pm2250-regulators";
> + vdd_s3-supply = <&vph_pwr>;
> + vdd_s4-supply = <&vph_pwr>;
> + vdd_l1_l2_l3_l5_l6_l7_l8_l9_l10_l11_l12-supply = <&pm4125_s3>;
> + vdd_l4_l17_l18_l19_l20_l21_l22-supply = <&vph_pwr>;
> + vdd_l13_l14_l15_l16-supply = <&pm4125_s4>;
> +
> + pm4125_s3: s3 {
> + /* 0.4V-1.6625V -> 1.3V (Power tree requirements) */
> + regulator-min-microvolt = <1352000>;
> + regulator-max-microvolt = <1352000>;
> + regulator-boot-on;
> + };
> +
> + pm4125_s4: s4 {
> + /* 1.2V-2.35V -> 2.05V (Power tree requirements) */
> + regulator-min-microvolt = <2072000>;
> + regulator-max-microvolt = <2072000>;
> + regulator-boot-on;
> + };
> +
> + pm4125_l2: l2 {
> + /* LPDDR4X VDD2 */
> + regulator-min-microvolt = <1136000>;
> + regulator-max-microvolt = <1136000>;
> + regulator-always-on;
> + regulator-boot-on;
> + };
> +
> + pm4125_l3: l3 {
> + /* LPDDR4X VDDQ */
> + regulator-min-microvolt = <616000>;
> + regulator-max-microvolt = <616000>;
> + regulator-always-on;
> + regulator-boot-on;
> + };
> +
> + pm4125_l4: l4 {
> + /* max = 3.05V -> max = 2.7 to disable 3V signaling (SDHCI2) */
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <2700000>;
> + regulator-allow-set-load;
> + };
> +
> + pm4125_l5: l5 {
> + /* CSI/DSI */
> + regulator-min-microvolt = <1232000>;
> + regulator-max-microvolt = <1232000>;
> + regulator-allow-set-load;
> + regulator-boot-on;
> + };
> +
> + pm4125_l6: l6 {
> + /* DRAM PLL */
> + regulator-min-microvolt = <928000>;
> + regulator-max-microvolt = <928000>;
> + regulator-always-on;
> + regulator-boot-on;
> + };
> +
> + pm4125_l7: l7 {
> + /* Wi-Fi CX */
> + regulator-min-microvolt = <664000>;
> + regulator-max-microvolt = <664000>;
> + };
> +
> + pm4125_l10: l10 {
> + /* Wi-Fi RFA */
> + regulator-min-microvolt = <1304000>;
> + regulator-max-microvolt = <1304000>;
> + };
> +
> + pm4125_l11: l11 {
> + /* ANX7625 DVDD1P0V/AVDD1P0V */
> + regulator-min-microvolt = <1000000>;
> + regulator-max-microvolt = <1000000>;
> + regulator-boot-on;
> + regulator-always-on;
> + };
> +
> + pm4125_l12: l12 {
> + /* USB PHYs */
> + regulator-min-microvolt = <928000>;
> + regulator-max-microvolt = <928000>;
> + regulator-allow-set-load;
> + regulator-boot-on;
> + };
> +
> + pm4125_l13: l13 {
> + /* USB/QFPROM/PLLs */
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-allow-set-load;
> + regulator-boot-on;
> + };
> +
> + pm4125_l14: l14 {
> + /* SDHCI1 EMMC VCCQ */
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-allow-set-load;
> + /* Broken hardware, never turn it off! */
> + regulator-always-on;
> + };
> +
> + pm4125_l15: l15 {
> + /* VDDIO */
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-allow-set-load;
> + regulator-always-on;
> + regulator-boot-on;
> + };
> +
> + pm4125_l20: l20 {
> + /* SDHCI1 EMMC */
> + regulator-min-microvolt = <2400000>;
> + regulator-max-microvolt = <3600000>;
> + regulator-allow-set-load;
> + };
> +
> + pm4125_l21: l21 {
> + /* USB HS */
> + regulator-min-microvolt = <2960000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-allow-set-load;
> + regulator-boot-on;
> + };
> +
> + pm4125_l22: l22 {
> + /* Wi-Fi VDD */
> + regulator-min-microvolt = <3312000>;
> + regulator-max-microvolt = <3312000>;
> + };
> + };
> +};
> +
> +&sdhc_1 {
> + vmmc-supply = <&pm4125_l20>;
> + vqmmc-supply = <&pm4125_l14>;
> + pinctrl-0 = <&sdc1_state_on>;
> + pinctrl-1 = <&sdc1_state_off>;
> + pinctrl-names = "default", "sleep";
> + mmc-hs400-1_8v;
> + mmc-hs200-1_8v;
> + non-removable;
> + supports-cqe;
> + no-sdio;
> + no-sd;
> +
> + status = "okay";
> +};
> +
> +&tlmm {
> + spidev_cs: spidev-cs-state {
> + pins = "gpio17";
> + function = "gpio";
> + drive-strength = <16>;
> + };
> +
> + jmisc_gpio18: jmisc-gpio18-state {
> + pins = "gpio18";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-pull-down;
> + };
> +
> + jmisc_gpio28: jmisc-gpio28-state {
> + pins = "gpio28";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-pull-down;
> + };
> +
> + key_vold_n: key-vold-n-state {
> + pins = "gpio36";
> + function = "gpio";
> + bias-pull-up;
> + output-disable;
> + };
> +
> + key_volp_n: key-volp-n-state {
> + pins = "gpio96";
> + function = "gpio";
> + bias-pull-up;
> + output-disable;
> + };
> +
> + jmisc_gpio98: jmisc-gpio98-state {
> + pins = "gpio98";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-pull-down;
> + };
> +
> + jmisc_gpio99: jmisc-gpio99-state {
> + pins = "gpio99";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-pull-down;
> + };
> +
> + jmisc_gpio100: jmisc-gpio100-state {
> + pins = "gpio100";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-pull-down;
> + };
> +
> + jmisc_gpio101: jmisc-gpio101-state {
> + pins = "gpio101";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-pull-down;
> + };
> +};
> +
> +&i2c0 {
Please see the "ordering of Nodes" section in
Documentation/devicetree/bindings/dts-coding-style.rst
Regards,
Bjorn
> + clock-frequency = <100000>;
> +
> + status = "okay";
> +};
> +
> +&i2c1 {
> + clock-frequency = <100000>;
> +
> + status = "okay";
> +};
> +
> +&uart2 {
> + status = "okay";
> +};
> +
> +/* UART connected to Bluetooth */
> +&uart3 {
> + status = "okay";
> +
> + bluetooth {
> + compatible = "qcom,wcn3988-bt";
> +
> + vddio-supply = <&pm4125_l15>;
> + vddxo-supply = <&pm4125_l13>;
> + vddrf-supply = <&pm4125_l10>;
> + vddch0-supply = <&pm4125_l22>;
> + enable-gpios = <&tlmm 87 GPIO_ACTIVE_HIGH>;
> + max-speed = <3000000>;
> + };
> +};
> +
> +/* UART connected to JCTL */
> +&uart4 {
> + compatible = "qcom,geni-debug-uart";
> +
> + status = "okay";
> +};
> +
> +&spi5 {
> + status = "okay";
> +
> + spidev@0 {
> + reg = <0>;
> + compatible = "arduino,mcu";
> + pinctrl-0 = <&spidev_cs>;
> + pinctrl-names = "default";
> + };
> +};
> +
> +&usb {
> + status = "okay";
> +};
> +
> +&usb_hsphy {
> + vdd-supply = <&pm4125_l12>;
> + vdda-pll-supply = <&pm4125_l13>;
> + vdda-phy-dpdm-supply = <&pm4125_l21>;
> +
> + status = "okay";
> +};
> +
> +&usb_qmpphy {
> + vdda-phy-supply = <&pm4125_l12>;
> + vdda-pll-supply = <&pm4125_l13>;
> +
> + status = "okay";
> +};
> +
> +&wifi {
> + vdd-0.8-cx-mx-supply = <&pm4125_l7>;
> + vdd-1.8-xo-supply = <&pm4125_l13>;
> + vdd-1.3-rfa-supply = <&pm4125_l10>;
> + vdd-3.3-ch0-supply = <&pm4125_l22>;
> + qcom,ath10k-calibration-variant = "Arduino_UnoQ";
> + firmware-name = "qcm2290";
> +
> + status = "okay";
> +};
> +
> +&xo_board {
> + clock-frequency = <38400000>;
> +};
> --
> 2.51.2
>
^ permalink raw reply [flat|nested] 20+ messages in thread