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. > +... > + > + 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 = <®_3p3v>; > + AVDD-supply = <®_3p3v>; > + IOVDD-supply = <®_3p3v>; > + DVDD-supply = <®_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 ... > + > +&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 = <®_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? https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation > + compatible = "ti,wl1835"; > + reg = <2>; Best regards, Krzysztof