Re: [PATCH 1/2] ARM: dts: imx6qdl: Add Variscite VAR-SOM-MX6 SoM support

From: James Hilliard
Date: Wed Jul 19 2023 - 14:57:56 EST


On Wed, Jul 19, 2023 at 11:16 AM Krzysztof Kozlowski
<krzysztof.kozlowski@xxxxxxxxxx> wrote:
>
> On 19/07/2023 18:00, James Hilliard wrote:
> > This patch adds support for the Variscite VAR_SOM-MX6 SoM with :
> > - i.MX6 Quad or Dual Lite SoC
> > - 256 – 4096 MB DDR3
> > - 4-64 GB eMMC
> > - 128 – 1024 MB SLC NAND
> > - Camera Interface
> > - HDMI+CEC interface
> > - LVDS / DSI / Parallel RGB interfaces
> > - Ethernet RGMII interface
> > - On-SoM Wi-Fi/Bluetooth with WiLink wl183x SDIO Module
> > - SD/MMC/SDIO interface
> > - USB Host + USB OTG interface
> > - I2C interfaces
> > - SPI interfaces
> > - PCI-Express 2.0 interface
> > - on-SoM Audio Codec with HP/Line-In interfaces + DMIC interface
> > - Digital Audio interface
> > - S/PDIF interface
> >
> > Product website : https://www.variscite.com/product/system-on-module-som/cortex-a9/var-som-mx6-cpu-freescale-imx6/
> >
> > Support is handled with a SoM-centric dtsi exporting the default interfaces
> > along the default pinmuxing to be enabled by the board dts file.
> >
> > This file is based on the one 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>
> > ---
> > arch/arm/boot/dts/imx6qdl-var-som.dtsi | 547 +++++++++++++++++++++++++
> > 1 file changed, 547 insertions(+)
> > create mode 100644 arch/arm/boot/dts/imx6qdl-var-som.dtsi
> >
> > diff --git a/arch/arm/boot/dts/imx6qdl-var-som.dtsi b/arch/arm/boot/dts/imx6qdl-var-som.dtsi
> > new file mode 100644
> > index 000000000000..e93dae59624e
> > --- /dev/null
> > +++ b/arch/arm/boot/dts/imx6qdl-var-som.dtsi
> > @@ -0,0 +1,547 @@
> > +// SPDX-License-Identifier: GPL-2.0+
> > +/*
> > + * Support for Variscite VAR-SOM-MX6 Module
> > + *
> > + * Copyright 2011 Linaro Ltd.
> > + * Copyright 2012 Freescale Semiconductor, Inc.
> > + * Copyright (C) 2014-2016 Variscite, Ltd.
> > + * Author: Donio Ron <ron.d@xxxxxxxxxxxxx>
> > + * Copyright 2022 Bootlin
> > + */
> > +
> > +/dts-v1/;
> > +
> > +#include "imx6q.dtsi"
> > +#include <dt-bindings/clock/imx6qdl-clock.h>
> > +#include <dt-bindings/gpio/gpio.h>
> > +#include <dt-bindings/sound/fsl-imx-audmux.h>
> > +
> > +/ {
> > + model = "Variscite i.MX6 QUAD/DUAL VAR-SOM-MX6";
> > + compatible = "fsl,imx6q";
>
> That's not correct compatible. It's not Imx6 soc. It's a som.

I'm confused, AFAIU the VAR-SOM-MX6 uses an imx6q SoC.

>
> > +...
> > +
> > + sound: sound {
> > + compatible = "simple-audio-card";
> > + simple-audio-card,name = "var-som-audio";
> > + simple-audio-card,format = "i2s";
> > + simple-audio-card,bitclock-master = <&sound_codec>;
> > + simple-audio-card,frame-master = <&sound_codec>;
> > + simple-audio-card,widgets = "Headphone", "Headphone Jack",
> > + "Line", "Line In", "Microphone", "Mic Jack";
> > + simple-audio-card,routing = "Headphone Jack", "HPLOUT",
> > + "Headphone Jack", "HPROUT",
> > + "LINE1L", "Line In",
> > + "LINE1R", "Line In";
> > +
> > + sound_cpu: simple-audio-card,cpu {
> > + sound-dai = <&ssi2>;
> > + };
> > +
> > + sound_codec: simple-audio-card,codec {
> > + sound-dai = <&tlv320aic3106>;
> > + clocks = <&clks IMX6QDL_CLK_CKO>;
> > + };
> > + };
> > +
> > + wlan_bt_rfkill {
>
> No underscores in node names.
>
> Just "rfkill"
>
>
> > + compatible = "rfkill-gpio";
> > + name = "wlan_bt_rfkill";
> > + type = <2>; /* bluetooth */
> > + gpios = <&gpio6 18 GPIO_ACTIVE_HIGH>;
> > + };
> > +};
> > +
>
> ...
>
> > + tlv320aic3106: codec@1b {
> > + compatible = "ti,tlv320aic3106";
> > + reg = <0x1b>;
> > + #sound-dai-cells = <0>;
> > + DRVDD-supply = <&reg_3p3v>;
> > + AVDD-supply = <&reg_3p3v>;
> > + IOVDD-supply = <&reg_3p3v>;
> > + DVDD-supply = <&reg_3p3v>;
> > + ai3x-ocmv = <0>;
> > + reset-gpios = <&gpio4 5 GPIO_ACTIVE_LOW>;
> > + ai3x-gpio-func = <
> > + 0 /* AIC3X_GPIO1_FUNC_DISABLED */
> > + 5 /* AIC3X_GPIO2_FUNC_DIGITAL_MIC_INPUT */
> > + >;
> > + };
> > +};
> > +
> > +&iomuxc {
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&pinctrl_hog>;
> > +
> > + imx6qdl-var-som-mx6 {
> > + pinctrl_hog: hoggrp {
> > + fsl,pins = <
> > + /* CTW6120 IRQ */
> > + MX6QDL_PAD_EIM_DA7__GPIO3_IO07 0x80000000
> > + /* SDMMC2 CD/WP */
> > + MX6QDL_PAD_KEY_COL4__GPIO4_IO14 0x80000000
> > + MX6QDL_PAD_KEY_ROW4__GPIO4_IO15 0x80000000
> > + >;
> > + };
> > +
> > + pinctrl_audmux: audmux {
>
> It does not look like you tested the DTS against bindings. Please run
> `make dtbs_check` (see
> Documentation/devicetree/bindings/writing-schema.rst or
> https://www.linaro.org/blog/tips-and-tricks-for-validating-devicetree-sources-with-the-devicetree-schema/
> for instructions).
>
> AFAIR, all of them end with grp

Ah, that's def throwing a bunch of warnings, although quite a few look
to be existing
issues in dependent dtsi files. I'll clean up what I can there.

>
>
> ...
>
> > +
> > +&usdhc3 {
> > + pinctrl-names = "default", "state_100mhz", "state_200mhz";
> > + pinctrl-0 = <&pinctrl_usdhc3>;
> > + pinctrl-1 = <&pinctrl_usdhc3_100mhz>;
> > + pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
> > + bus-width = <4>;
> > + vmmc-supply = <&reg_wl18xx_vmmc>;
> > + non-removable;
> > + wakeup-source;
> > + keep-power-in-suspend;
> > + cap-power-off-card;
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > + status = "okay";
> > +
> > + wlcore: wlcore@0 {
>
> Generic node names. Is this wifi?

I think it also supports bluetooth technically, although that might be
under a different node.

>
> https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation
>
> > + compatible = "ti,wl1835";
> > + reg = <2>;
>
>
> Best regards,
> Krzysztof
>