Re: [PATCH v2 2/2] ARM: dts: imx6q: Add Variscite MX6 Custom board support

From: James Hilliard
Date: Thu Jul 20 2023 - 08:22:26 EST


On Thu, Jul 20, 2023 at 5:39 AM Krzysztof Kozlowski
<krzysztof.kozlowski@xxxxxxxxxx> wrote:
>
> On 20/07/2023 12:49, James Hilliard wrote:
> > On Thu, Jul 20, 2023 at 12:15 AM Krzysztof Kozlowski
> > <krzysztof.kozlowski@xxxxxxxxxx> wrote:
> >>
> >> On 20/07/2023 00:41, James Hilliard wrote:
> >>> This patch adds support for the Variscite MX6 SoM Carrier Board.
> >>>
> >>> This Carrier-Board has the following :
> >>> - LVDS interface for the VLCD-CAP-GLD-LVDS 7" LCD 800 x 480 touch display
> >>> - HDMI Connector
> >>> - USB Host + USB OTG Connector
> >>> - 10/100/1000 Mbps Ethernet
> >>> - miniPCI-Express slot
> >>> - SD Card connector
> >>> - Audio Headphone/Line In jack connectors
> >>> - S-ATA
> >>> - On-board DMIC
> >>> - RS485 Header
> >>> - CAN bus header
> >>> - SPI header
> >>> - Camera Interfaces header
> >>> - OnBoard RTC with Coin Backup battery socket
> >>> - RS232 Debug Header (IDC10)
> >>> - RS232 DTE
> >>>
> >>> Product Page : https://www.variscite.com/product/single-board-computers/var-mx6customboard
> >>>
> >>> The dts file based on the ones provided by Variscite on their own
> >>> kernel, but adapted for mainline.
> >>>
> >>> Signed-off-by: Gregory CLEMENT <gregory.clement@xxxxxxxxxxx>
> >>> Signed-off-by: James Hilliard <james.hilliard1@xxxxxxxxx>
> >>> ---
> >>> .../devicetree/bindings/arm/fsl.yaml | 1 +
> >>
> >> Please run scripts/checkpatch.pl and fix reported warnings. Some
> >> warnings can be ignored, but the code here looks like it needs a fix.
> >> Feel free to get in touch if the warning is not clear.
> >>
> >>> arch/arm/boot/dts/Makefile | 1 +
> >>> .../arm/boot/dts/imx6q-var-mx6customboard.dts | 279 ++++++++++++++++++
> >>> 3 files changed, 281 insertions(+)
> >>> create mode 100644 arch/arm/boot/dts/imx6q-var-mx6customboard.dts
> >>>
> >>> diff --git a/Documentation/devicetree/bindings/arm/fsl.yaml b/Documentation/devicetree/bindings/arm/fsl.yaml
> >>> index 15d411084065..0f583852de8a 100644
> >>> --- a/Documentation/devicetree/bindings/arm/fsl.yaml
> >>> +++ b/Documentation/devicetree/bindings/arm/fsl.yaml
> >>> @@ -298,6 +298,7 @@ properties:
> >>> - udoo,imx6q-udoo # Udoo i.MX6 Quad Board
> >>> - uniwest,imx6q-evi # Uniwest Evi
> >>> - variscite,dt6customboard
> >>> + - variscite,mx6customboard
> >>> - wand,imx6q-wandboard # Wandboard i.MX6 Quad Board
> >>> - ysoft,imx6q-yapp4-crux # i.MX6 Quad Y Soft IOTA Crux board
> >>> - ysoft,imx6q-yapp4-pegasus # i.MX6 Quad Y Soft IOTA Pegasus board
> >>> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> >>> index 59829fc90315..9cfc3d3e91ea 100644
> >>> --- a/arch/arm/boot/dts/Makefile
> >>> +++ b/arch/arm/boot/dts/Makefile
> >>> @@ -665,6 +665,7 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
> >>> imx6q-udoo.dtb \
> >>> imx6q-utilite-pro.dtb \
> >>> imx6q-var-dt6customboard.dtb \
> >>> + imx6q-var-mx6customboard.dtb \
> >>> imx6q-vicut1.dtb \
> >>> imx6q-wandboard.dtb \
> >>> imx6q-wandboard-revb1.dtb \
> >>> diff --git a/arch/arm/boot/dts/imx6q-var-mx6customboard.dts b/arch/arm/boot/dts/imx6q-var-mx6customboard.dts
> >>> new file mode 100644
> >>> index 000000000000..66047dff11ec
> >>> --- /dev/null
> >>> +++ b/arch/arm/boot/dts/imx6q-var-mx6customboard.dts
> >>> @@ -0,0 +1,279 @@
> >>> +// SPDX-License-Identifier: GPL-2.0+
> >>> +/*
> >>> + * Support for Variscite MX6 Carrier-board
> >>> + *
> >>> + * Copyright 2016 Variscite, Ltd. All Rights Reserved
> >>> + * Copyright 2022 Bootlin
> >>> + */
> >>> +
> >>> +/dts-v1/;
> >>> +
> >>> +#include "imx6qdl-var-som.dtsi"
> >>> +#include <dt-bindings/pwm/pwm.h>
> >>> +
> >>> +/ {
> >>> + model = "Variscite i.MX6 QUAD/DUAL VAR-SOM-MX6 Custom Board";
> >>> + compatible = "variscite,mx6customboard", "fsl,imx6q";
> >>
> >> Where is the SoM compatible?
> >
> > I mostly just copied this from the DART-MX6 device tree which is
> > another variscite
> > imx6q based modular SoM custom board combination:
> > https://github.com/torvalds/linux/blob/v6.5-rc2/arch/arm/boot/dts/nxp/imx/imx6q-var-dt6customboard.dts#L17
> >
> > The terminology is a bit confusing in general here, variscite has 2
> > families of pin2pin
> > modules, the "VAR-SOM" and the "DART" family.
> > https://www.variscite.com/variscite-pin2pin-system-on-module-families/
>
> I know, I am familiar with them.
>
>
> >
> > Within each connector family there are then multiple SoM boards that
> > can be used with the same carrier boards(ie the Custom Board carrier board
> > like the evaluation kit) although they are often bundled together with specific
> > boards in practice.
>
> No, they are being shipped to the customers which then use them in their
> products. Having common compatible can be useful, although it depends
> what's in the common part. For example for IMX8 it was quite a lot, thus
> it made sense.
>
> >
> > So the existing DART-MX6 I think uses the same SoC but is in a different
> > family and as such has a different carrier board. However as the relation
> > between the SoM and the carrier board is effectively the same, I just copied
> > the way compatibile is being set there for the VAR-SOM-MX6 from the
> > existing DART-MX6 custom board device tree.
> >
> > I think this roughly represents the SoM board device tree associations as I'm
> > understanding them:
> >
> > pin2pin Family: DART
> > SoM: https://www.variscite.com/product/system-on-module-som/cortex-a9/dart-mx6-cpu-freescale-imx6/
> > SoM part: DART-MX6
> > SoM device tree: imx6qdl-var-dart.dtsi
> > SoM SoC: imx6q
> > Board: https://www.variscite.com/product/single-board-computers/dt6customboard/
> > Board device tree: imx6q-var-dt6customboard.dts
> > Board compatible: compatible = "variscite,dt6customboard", "fsl,imx6q";
> >
> > pin2pin Family: VAR-SOM
> > SoM: https://www.variscite.com/product/system-on-module-som/cortex-a9/var-som-mx6-cpu-freescale-imx6/
> > SoM part: VAR-SOM-MX6
> > SoM device tree: imx6qdl-var-som.dtsi
> > SoM SoC: imx6q
> > Board: mx6customboard
> > https://www.variscite.com/product/single-board-computers/var-mx6customboard/
> > Board device tree: imx6q-var-mx6customboard.dts
> > Board compatible: compatible = "variscite,mx6customboard", "fsl,imx6q";
> >
> > What's confusing here is that the DART-MX6 is also described as a SoM:
> > "DART-MX6 from Variscite is the smallest System on Module (SoM) / Computer
> > on Module (CoM) supporting NXP/Freescale’s i.MX6 Quad and Dual-core
> > Cortex-A9™ processor"
>
> It is not confusing. It is a SoM.
>
> >
> > So we have a "DART-MX6" SoM part which corresponds to the "VAR-SOM-MX6"
> > SoM part, with both being SoM's but only one("VAR-SOM-MX6") having SoM in
> > the actual part name.
>
> Vendor naming is one thing, but true meaning is second. These are
> System-on-Modules.
>
> >
> > Does the compatible section for imx6qdl-var-dart.dtsi look correct?
> >
> > I'm not sure what exactly a "SoM compatible" should look like here as SoM is
> > both a generic term(used to describe by both the "DART-MX6" and
> > "VAR-SOM-MX6" parts) as well as term used within a part(used in the
> > part for "VAR-SOM-MX6" as well as other SoM's in the "VAR-SOM" family
> > but not the "DART-MX6" part or other SoM's in the "DART" family).
>
> Take a look at IMX8 Variscite SoMs.

Oh, I see what you mean now, so it looks like this is missing for the dart-mx6
device tree.

imx8mm-var-som.dtsi: compatible = "variscite,var-som-mx8mm", "fsl,imx8mm";
imx8mm-var-som-symphony.dts: compatible =
"variscite,var-som-mx8mm-symphony", "variscite,var-som-mx8mm",
"fsl,imx8mm";

imx6q-var-dt6customboard.dts: compatible =
"variscite,dt6customboard", "fsl,imx6q";

So the DART-MX6 is missing a compatible along the lines of
"variscite,dart-imx6q"
for the dart SoM I guess?

And for VAR-SOM-MX6 I guess I should use something like
"variscite,var-som-imx6q"
for the SoM right?

>
> Best regards,
> Krzysztof
>