From 2a38807ea38df5f8da0f2424a8aacabb6948e363 Mon Sep 17 00:00:00 2001 From: guowenxue <guowenxue@gmail.com> Date: Sun, 26 Dec 2021 14:23:24 +0800 Subject: [PATCH] add yocto meta layer --- yocto/meta-igkboard/conf/layer.conf | 13 yocto/meta-igkboard/recipes-core/base-files/base-files_3.0.14.bbappend | 17 yocto/meta-igkboard/recipes-kernel/linux/linux-imx_5.10.bbappend | 15 yocto/meta-igkboard/recipes-bsp/u-boot/files/uboot-imx-igkboard.patch | 402 ++++++++++ yocto/meta-igkboard/recipes-misc/expand-rootfs/files/expand_rootfs | 30 yocto/meta-igkboard/recipes-misc/packagegroups/packagegroup-misc-utils.bb | 6 yocto/meta-igkboard/recipes-misc/wpa-conf/wpa-conf_1.0.bb | 17 yocto/meta-igkboard/recipes-misc/wpa-conf/files/wpa-conf.service | 15 yocto/meta-igkboard/recipes-kernel/linux/files/linux-imx-igkboard.patch | 1237 +++++++++++++++++++++++++++++++ yocto/meta-igkboard/recipes-misc/sshswitch/sshswitch_1.0.bb | 17 yocto/meta-igkboard/conf/bblayers.conf | 36 yocto/meta-igkboard/recipes-misc/sshswitch/files/sshswitch.service | 11 yocto/meta-igkboard/recipes-hello/hello/src/hello.c | 21 yocto/meta-igkboard/conf/machine/igkboard.conf | 30 yocto/meta-igkboard/recipes-kernel/linux/linux-imx-headers_5.10.bbappend | 4 yocto/meta-igkboard/recipes-images/igkboard/linuxsys-image.bb | 50 + yocto/meta-igkboard/recipes-misc/expand-rootfs/expand-rootfs_1.0.bb | 15 yocto/meta-igkboard/conf/local.conf | 24 yocto/meta-igkboard/recipes-bsp/u-boot/u-boot-imx_2021.04.bbappend | 10 yocto/meta-igkboard/recipes-drivers/drivers/src/Makefile | 25 yocto/meta-igkboard/tools/igkboard-setup.sh | 178 ++++ yocto/meta-igkboard/recipes-hello/hello/src/Makefile | 9 yocto/meta-igkboard/recipes-drivers/drivers/drivers-mods_1.0.bb | 19 yocto/meta-igkboard/recipes-drivers/drivers/src/hello.c | 34 yocto/meta-igkboard/COPYING.MIT | 17 yocto/meta-igkboard/README | 41 + yocto/meta-igkboard/recipes-hello/hello/hello-apps_1.0.bb | 44 + 27 files changed, 2,337 insertions(+), 0 deletions(-) diff --git a/yocto/meta-igkboard/COPYING.MIT b/yocto/meta-igkboard/COPYING.MIT new file mode 100644 index 0000000..fb950dc --- /dev/null +++ b/yocto/meta-igkboard/COPYING.MIT @@ -0,0 +1,17 @@ +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/yocto/meta-igkboard/README b/yocto/meta-igkboard/README new file mode 100644 index 0000000..62bd791 --- /dev/null +++ b/yocto/meta-igkboard/README @@ -0,0 +1,41 @@ +This README file contains information on the contents of the meta-igkboard layer. + +Please see the corresponding sections below for details. + +Dependencies +============ + + URI: <first dependency> + branch: <branch name> + + URI: <second dependency> + branch: <branch name> + + . + . + . + +Patches +======= + +Please submit any patches against the meta-igkboard layer to the xxxx mailing list (xxxx@zzzz.org) +and cc: the maintainer: + +Maintainer: XXX YYYYYY <xxx.yyyyyy@zzzzz.com> + +Table of Contents +================= + + I. Adding the meta-igkboard layer to your build + II. Misc + + +I. Adding the meta-igkboard layer to your build +================================================= + +Run 'bitbake-layers add-layer meta-igkboard' + +II. Misc +======== + +--- replace with specific information about the meta-igkboard layer --- diff --git a/yocto/meta-igkboard/conf/bblayers.conf b/yocto/meta-igkboard/conf/bblayers.conf new file mode 100644 index 0000000..1d70578 --- /dev/null +++ b/yocto/meta-igkboard/conf/bblayers.conf @@ -0,0 +1,36 @@ +LCONF_VERSION = "6" + +BBPATH = "${TOPDIR}" +BSPDIR := "${@os.path.abspath(os.path.dirname(d.getVar('FILE', True)) + '/../..')}" + +BBFILES ?= "" +BBLAYERS = " \ + ${BSPDIR}/sources/poky/meta \ + ${BSPDIR}/sources/poky/meta-poky \ + \ + ${BSPDIR}/sources/meta-openembedded/meta-oe \ + ${BSPDIR}/sources/meta-openembedded/meta-multimedia \ + ${BSPDIR}/sources/meta-openembedded/meta-python \ + \ + ${BSPDIR}/sources/meta-freescale \ + ${BSPDIR}/sources/meta-freescale-3rdparty \ + ${BSPDIR}/sources/meta-freescale-distro \ +" + +# i.MX Yocto Project Release layers +BBLAYERS += "${BSPDIR}/sources/meta-imx/meta-bsp" +BBLAYERS += "${BSPDIR}/sources/meta-imx/meta-sdk" +BBLAYERS += "${BSPDIR}/sources/meta-imx/meta-ml" +BBLAYERS += "${BSPDIR}/sources/meta-imx/meta-v2x" +BBLAYERS += "${BSPDIR}/sources/meta-nxp-demo-experience" + +BBLAYERS += "${BSPDIR}/sources/meta-browser/meta-chromium" +BBLAYERS += "${BSPDIR}/sources/meta-clang" +BBLAYERS += "${BSPDIR}/sources/meta-openembedded/meta-gnome" +BBLAYERS += "${BSPDIR}/sources/meta-openembedded/meta-networking" +BBLAYERS += "${BSPDIR}/sources/meta-openembedded/meta-filesystems" +BBLAYERS += "${BSPDIR}/sources/meta-qt5" +BBLAYERS += "${BSPDIR}/sources/meta-python2" + +# Add IoT Gateway Kit Board Yocto Project Release layers +BBLAYERS += "${BSPDIR}/sources/meta-igkboard" diff --git a/yocto/meta-igkboard/conf/layer.conf b/yocto/meta-igkboard/conf/layer.conf new file mode 100644 index 0000000..b5c658e --- /dev/null +++ b/yocto/meta-igkboard/conf/layer.conf @@ -0,0 +1,13 @@ +# We have a conf and classes directory, add to BBPATH +BBPATH .= ":${LAYERDIR}" + +# We have recipes-* directories, add to BBFILES +BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \ + ${LAYERDIR}/recipes-*/*/*.bbappend" + +BBFILE_COLLECTIONS += "meta-igkboard" +BBFILE_PATTERN_meta-igkboard = "^${LAYERDIR}/" +BBFILE_PRIORITY_meta-igkboard = "9" + +LAYERDEPENDS_meta-igkboard = "core" +LAYERSERIES_COMPAT_meta-igkboard = "hardknott" diff --git a/yocto/meta-igkboard/conf/local.conf b/yocto/meta-igkboard/conf/local.conf new file mode 100644 index 0000000..56fce7c --- /dev/null +++ b/yocto/meta-igkboard/conf/local.conf @@ -0,0 +1,24 @@ +MACHINE ??= 'igkboard' +DISTRO ?= 'fsl-imx-wayland' +PACKAGE_CLASSES ?= 'package_rpm' +EXTRA_IMAGE_FEATURES ?= "debug-tweaks" +USER_CLASSES ?= "buildstats image-mklibs image-prelink" +PATCHRESOLVE = "noop" +BB_DISKMON_DIRS ??= "\ + STOPTASKS,${TMPDIR},1G,100K \ + STOPTASKS,${DL_DIR},1G,100K \ + STOPTASKS,${SSTATE_DIR},1G,100K \ + STOPTASKS,/tmp,100M,100K \ + ABORT,${TMPDIR},100M,1K \ + ABORT,${DL_DIR},100M,1K \ + ABORT,${SSTATE_DIR},100M,1K \ + ABORT,/tmp,10M,1K" +PACKAGECONFIG_append_pn-qemu-system-native = " sdl" +CONF_VERSION = "1" + +DL_DIR ?= "${BSPDIR}/../hardknott_packets/" +ACCEPT_FSL_EULA = "1" + +# Switch to Debian packaging and include package-management in the image +PACKAGE_CLASSES = "package_deb" +EXTRA_IMAGE_FEATURES += "package-management" diff --git a/yocto/meta-igkboard/conf/machine/igkboard.conf b/yocto/meta-igkboard/conf/machine/igkboard.conf new file mode 100644 index 0000000..479cfbc --- /dev/null +++ b/yocto/meta-igkboard/conf/machine/igkboard.conf @@ -0,0 +1,30 @@ +#@TYPE: Machine +#@NAME: LingYun IoT Gateway Kit Board +#@SOC: i.MX6ULL +#@DESCRIPTION: Machine configuration for LingYun IoT Gateway Kit Board +#@MAINTAINER: Guo Wenxue <guowenxue@gmail.com> + +# Add new machine igkboard +MACHINEOVERRIDES =. "mx6:mx6ul:mx6ull:igkboard:" + +include conf/machine/include/imx-base.inc +include conf/machine/include/tune-cortexa7.inc + +KERNEL_DEVICETREE = "igkboard-emmc.dtb" + +UBOOT_CONFIG ??= "sd" +UBOOT_CONFIG[sd] = "igkboard_defconfig,sdcard" + +IMAGE_BOOT_FILES = " \ + ${KERNEL_IMAGETYPE} \ + ${KERNEL_DEVICETREE} \ +" + +# Remove unused optee bcm4339 bcm43455 +MACHINE_FEATURES += "wifi bluetooth" + +# /etc/hostname +hostname_pn-base-files = "igkboard" + +# Refer to linux-imx/drivers/tty/serial/imx.c +SERIAL_CONSOLES = "115200;ttymxc0" diff --git a/yocto/meta-igkboard/recipes-bsp/u-boot/files/uboot-imx-igkboard.patch b/yocto/meta-igkboard/recipes-bsp/u-boot/files/uboot-imx-igkboard.patch new file mode 100644 index 0000000..451bb3c --- /dev/null +++ b/yocto/meta-igkboard/recipes-bsp/u-boot/files/uboot-imx-igkboard.patch @@ -0,0 +1,402 @@ +diff -Nuar uboot-imx/arch/arm/dts/imx6ul-14x14-evk.dtsi uboot-imx-igkboard/arch/arm/dts/imx6ul-14x14-evk.dtsi +--- uboot-imx/arch/arm/dts/imx6ul-14x14-evk.dtsi 2021-09-06 16:48:23.000000000 +0800 ++++ uboot-imx-igkboard/arch/arm/dts/imx6ul-14x14-evk.dtsi 2021-12-16 17:12:11.714490021 +0800 +@@ -21,7 +21,6 @@ + regulator-name = "VSD_3V3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; +- gpio = <&gpio1 9 GPIO_ACTIVE_HIGH>; + off-on-delay-us = <20000>; + enable-active-high; + }; +@@ -83,6 +82,9 @@ + pinctrl-0 = <&pinctrl_enet1>; + phy-mode = "rmii"; + phy-handle = <ðphy0>; ++ phy-reset-gpios = <&gpio5 7 GPIO_ACTIVE_LOW>; ++ phy-reset-duration = <50>; ++ phy-reset-post-delay = <15>; + status = "okay"; + }; + +@@ -91,14 +93,17 @@ + pinctrl-0 = <&pinctrl_enet2>; + phy-mode = "rmii"; + phy-handle = <ðphy1>; ++ phy-reset-gpios = <&gpio5 4 GPIO_ACTIVE_LOW>; ++ phy-reset-duration = <50>; ++ phy-reset-post-delay = <15>; + status = "okay"; + + mdio { + #address-cells = <1>; + #size-cells = <0>; + +- ethphy0: ethernet-phy@2 { +- reg = <2>; ++ ethphy0: ethernet-phy@0 { ++ reg = <0>; + micrel,led-mode = <1>; + clocks = <&clks IMX6UL_CLK_ENET_REF>; + clock-names = "rmii-ref"; +@@ -151,21 +156,21 @@ + status = "okay"; + + display0: display@0 { +- bits-per-pixel = <24>; +- bus-width = <24>; ++ bits-per-pixel = <16>; ++ bus-width = <16>; + + display-timings { + native-mode = <&timing0>; + timing0: timing0 { +- clock-frequency = <9200000>; +- hactive = <480>; +- vactive = <272>; +- hfront-porch = <8>; +- hback-porch = <4>; +- hsync-len = <41>; +- vback-porch = <2>; +- vfront-porch = <4>; +- vsync-len = <10>; ++ clock-frequency = <30000000>; ++ hactive = <800>; ++ vactive = <480>; ++ hfront-porch = <40>; ++ hback-porch = <88>; ++ hsync-len = <48>; ++ vback-porch = <32>; ++ vfront-porch = <13>; ++ vsync-len = <3>; + + hsync-active = <0>; + vsync-active = <0>; +@@ -312,6 +317,7 @@ + MX6UL_PAD_ENET1_TX_DATA0__ENET1_TDATA00 0x1b0b0 + MX6UL_PAD_ENET1_TX_DATA1__ENET1_TDATA01 0x1b0b0 + MX6UL_PAD_ENET1_TX_CLK__ENET1_REF_CLK1 0x4001b031 ++ MX6UL_PAD_SNVS_TAMPER7__GPIO5_IO07 0x10B0 /* ENET1 RESET */ + >; + }; + +@@ -327,6 +333,7 @@ + MX6UL_PAD_ENET2_TX_DATA0__ENET2_TDATA00 0x1b0b0 + MX6UL_PAD_ENET2_TX_DATA1__ENET2_TDATA01 0x1b0b0 + MX6UL_PAD_ENET2_TX_CLK__ENET2_REF_CLK2 0x4001b031 ++ MX6UL_PAD_SNVS_TAMPER4__GPIO5_IO04 0x10B0 /* ENET2 RESET */ + >; + }; + +@@ -423,7 +430,6 @@ + MX6UL_PAD_JTAG_TRST_B__SAI2_TX_DATA 0x11088 + MX6UL_PAD_JTAG_TCK__SAI2_RX_DATA 0x11088 + MX6UL_PAD_JTAG_TMS__SAI2_MCLK 0x17088 +- MX6UL_PAD_SNVS_TAMPER4__GPIO5_IO04 0x17059 + >; + }; + +@@ -448,7 +454,6 @@ + fsl,pins = < + MX6UL_PAD_BOOT_MODE0__GPIO5_IO10 0x70a1 + MX6UL_PAD_BOOT_MODE1__GPIO5_IO11 0x70a1 +- MX6UL_PAD_SNVS_TAMPER7__GPIO5_IO07 0x70a1 + MX6UL_PAD_SNVS_TAMPER8__GPIO5_IO08 0x80000000 + >; + }; +@@ -492,9 +497,7 @@ + MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x17059 + MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x17059 + MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x17059 +- MX6UL_PAD_UART1_RTS_B__GPIO1_IO19 0x17059 /* SD1 CD */ +- MX6UL_PAD_GPIO1_IO05__USDHC1_VSELECT 0x17059 /* SD1 VSELECT */ +- MX6UL_PAD_GPIO1_IO09__GPIO1_IO09 0x17059 /* SD1 RESET */ ++ MX6UL_PAD_UART1_RTS_B__GPIO1_IO19 0x17059 /* SD1 CD */ + >; + }; + +diff -Nuar uboot-imx/configs/igkboard_defconfig uboot-imx-igkboard/configs/igkboard_defconfig +--- uboot-imx/configs/igkboard_defconfig 1970-01-01 08:00:00.000000000 +0800 ++++ uboot-imx-igkboard/configs/igkboard_defconfig 2021-12-16 17:25:11.551447847 +0800 +@@ -0,0 +1,96 @@ ++CONFIG_ARM=y ++CONFIG_ARCH_MX6=y ++CONFIG_NR_DRAM_BANKS=1 ++CONFIG_SYS_MEMTEST_START=0x80000000 ++CONFIG_SYS_MEMTEST_END=0x88000000 ++CONFIG_ENV_SIZE=0x2000 ++CONFIG_ENV_OFFSET=0xE0000 ++CONFIG_MX6ULL=y ++CONFIG_TARGET_MX6ULL_14X14_EVK=y ++CONFIG_DM_GPIO=y ++# CONFIG_CMD_QSPIHDR is not set ++CONFIG_DEFAULT_DEVICE_TREE="imx6ull-14x14-evk" ++# CONFIG_LOCALVERSION_AUTO is not set ++CONFIG_SUPPORT_RAW_INITRD=y ++CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6ullevk/imximage.cfg" ++CONFIG_BOOTDELAY=3 ++CONFIG_BOARD_EARLY_INIT_F=y ++CONFIG_HUSH_PARSER=y ++CONFIG_SYS_PROMPT="[u-boot@igkboard]# " ++CONFIG_CMD_BOOTZ=y ++# CONFIG_BOOTM_NETBSD is not set ++# CONFIG_BOOTM_PLAN9 is not set ++# CONFIG_BOOTM_RTEMS is not set ++# CONFIG_BOOTM_VXWORKS is not set ++# CONFIG_CMD_BOOTEFI is not set ++# CONFIG_CMD_ELF is not set ++# CONFIG_CMD_XIMG is not set ++# CONFIG_CMD_EDITENV is not set ++CONFIG_CMD_MEMTEST=y ++CONFIG_CMD_GPIO=y ++CONFIG_CMD_I2C=y ++CONFIG_CMD_MMC=y ++CONFIG_CMD_USB=y ++CONFIG_CMD_USB_MASS_STORAGE=y ++CONFIG_CMD_DHCP=y ++CONFIG_CMD_PING=y ++CONFIG_CMD_BMP=y ++CONFIG_CMD_CACHE=y ++CONFIG_CMD_EXT2=y ++CONFIG_CMD_EXT4=y ++CONFIG_CMD_EXT4_WRITE=y ++CONFIG_CMD_FAT=y ++CONFIG_CMD_FS_GENERIC=y ++CONFIG_OF_CONTROL=y ++CONFIG_ENV_OVERWRITE=y ++CONFIG_ENV_IS_IN_MMC=y ++CONFIG_SYS_RELOC_GD_ENV_ADDR=y ++CONFIG_SYS_MMC_ENV_DEV=1 ++CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y ++CONFIG_NET_RANDOM_ETHADDR=y ++CONFIG_BOUNCE_BUFFER=y ++CONFIG_USB_FUNCTION_FASTBOOT=y ++CONFIG_FASTBOOT_BUF_ADDR=0x83800000 ++CONFIG_FASTBOOT_BUF_SIZE=0x40000000 ++CONFIG_FASTBOOT_FLASH=y ++CONFIG_DM_74X164=y ++CONFIG_DM_I2C=y ++CONFIG_DM_MMC=y ++CONFIG_FSL_USDHC=y ++CONFIG_MTD=y ++CONFIG_DM_SPI_FLASH=y ++CONFIG_SF_DEFAULT_MODE=0 ++CONFIG_SF_DEFAULT_SPEED=40000000 ++CONFIG_SPI_FLASH_STMICRO=y ++CONFIG_PHYLIB=y ++CONFIG_PHY_MICREL=y ++CONFIG_PHY_MICREL_KSZ8XXX=y ++CONFIG_DM_ETH=y ++CONFIG_DM_ETH_PHY=y ++CONFIG_FEC_MXC=y ++CONFIG_MII=y ++CONFIG_PINCTRL=y ++CONFIG_PINCTRL_IMX6=y ++CONFIG_DM_REGULATOR=y ++CONFIG_DM_REGULATOR_FIXED=y ++CONFIG_DM_REGULATOR_GPIO=y ++CONFIG_MXC_UART=y ++CONFIG_SPI=y ++CONFIG_DM_SPI=y ++CONFIG_FSL_QSPI=y ++CONFIG_SOFT_SPI=y ++CONFIG_IMX_THERMAL=y ++CONFIG_USB=y ++CONFIG_DM_USB=y ++CONFIG_USB_STORAGE=y ++CONFIG_USB_GADGET=y ++CONFIG_USB_GADGET_MANUFACTURER="FSL" ++CONFIG_USB_GADGET_VENDOR_NUM=0x0525 ++CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5 ++CONFIG_CI_UDC=y ++CONFIG_USB_HOST_ETHER=y ++CONFIG_USB_ETHER_ASIX=y ++CONFIG_DM_VIDEO=y ++CONFIG_SYS_WHITE_ON_BLACK=y ++CONFIG_SPLASH_SCREEN=y ++CONFIG_SPLASH_SCREEN_ALIGN=y +diff -Nuar uboot-imx/drivers/net/phy/phy.c uboot-imx-igkboard/drivers/net/phy/phy.c +--- uboot-imx/drivers/net/phy/phy.c 2021-09-06 16:48:23.000000000 +0800 ++++ uboot-imx-igkboard/drivers/net/phy/phy.c 2021-12-16 17:12:11.714490021 +0800 +@@ -182,6 +182,9 @@ + { + int result; + ++ /* add Soft Reset the PHY by guowenxue, 2021.11.14 */ ++ phy_reset(phydev); ++ + if (phydev->autoneg != AUTONEG_ENABLE) + return genphy_setup_forced(phydev); + +diff -Nuar uboot-imx/include/configs/mx6ullevk.h uboot-imx-igkboard/include/configs/mx6ullevk.h +--- uboot-imx/include/configs/mx6ullevk.h 2021-09-06 16:48:23.000000000 +0800 ++++ uboot-imx-igkboard/include/configs/mx6ullevk.h 2021-12-16 17:12:11.714490021 +0800 +@@ -100,124 +100,39 @@ + + #else + #define CONFIG_EXTRA_ENV_SETTINGS \ +- CONFIG_MFG_ENV_SETTINGS \ +- TEE_ENV \ ++ "emmc_dev=1\0"\ ++ "emmc_ack=1\0"\ + "script=boot.scr\0" \ + "image=zImage\0" \ + "console=ttymxc0\0" \ +- "fdt_high=0xffffffff\0" \ +- "initrd_high=0xffffffff\0" \ +- "fdt_file=undefined\0" \ ++ "fdt_file=igkboard-emmc.dtb\0" \ + "fdt_addr=0x83000000\0" \ +- "tee_addr=0x84000000\0" \ +- "tee_file=undefined\0" \ +- "boot_fdt=try\0" \ +- "ip_dyn=yes\0" \ + "splashimage=0x8c000000\0" \ ++ "ipaddr=192.168.2.22\0" \ ++ "serverip=192.168.2.2\0" \ + "mmcdev="__stringify(CONFIG_SYS_MMC_ENV_DEV)"\0" \ + "mmcpart=" __stringify(CONFIG_SYS_MMC_IMG_LOAD_PART) "\0" \ + "mmcroot=" CONFIG_MMCROOT " rootwait rw\0" \ +- "mmcautodetect=yes\0" \ +- "mmcargs=setenv bootargs console=${console},${baudrate} " \ +- BOOTARGS_CMA_SIZE \ +- "root=${mmcroot}\0" \ +- "loadbootscript=" \ +- "fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \ +- "bootscript=echo Running bootscript from mmc ...; " \ +- "source\0" \ ++ "mmcargs=setenv bootargs console=${console},${baudrate} root=${mmcroot}\0" \ ++ "loadbootscript=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \ ++ "bootscript=echo Running bootscript from mmc ...; source\0" \ + "loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \ + "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \ +- "loadtee=fatload mmc ${mmcdev}:${mmcpart} ${tee_addr} ${tee_file}\0" \ ++ "bdtb=tftp $fdt_addr $fdt_file && fatwrite mmc 1:1 $fdt_addr $fdt_file $filesize\0" \ ++ "bker=tftp $loadaddr $image&& fatwrite mmc 1:1 $loadaddr $image $filesize\0" \ ++ "bsys=run bdtb && run bker\0" \ + "mmcboot=echo Booting from mmc ...; " \ ++ "mmc dev ${mmcdev}; " \ ++ "run loadimage; run loadfdt; " \ + "run mmcargs; " \ +- "if test ${tee} = yes; then " \ +- "run loadfdt; run loadtee; bootm ${tee_addr} - ${fdt_addr}; " \ +- "else " \ +- "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \ +- "if run loadfdt; then " \ +- "bootz ${loadaddr} - ${fdt_addr}; " \ +- "else " \ +- "if test ${boot_fdt} = try; then " \ +- "bootz; " \ +- "else " \ +- "echo WARN: Cannot load the DT; " \ +- "fi; " \ +- "fi; " \ +- "else " \ +- "bootz; " \ +- "fi; " \ +- "fi;\0" \ +- "netargs=setenv bootargs console=${console},${baudrate} " \ +- BOOTARGS_CMA_SIZE \ +- "root=/dev/nfs " \ +- "ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \ +- "netboot=echo Booting from net ...; " \ +- "${usb_net_cmd}; " \ +- "run netargs; " \ +- "if test ${ip_dyn} = yes; then " \ +- "setenv get_cmd dhcp; " \ +- "else " \ +- "setenv get_cmd tftp; " \ +- "fi; " \ +- "${get_cmd} ${image}; " \ +- "if test ${tee} = yes; then " \ +- "${get_cmd} ${tee_addr} ${tee_file}; " \ +- "${get_cmd} ${fdt_addr} ${fdt_file}; " \ +- "bootm ${tee_addr} - ${fdt_addr}; " \ +- "else " \ +- "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \ +- "if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \ +- "bootz ${loadaddr} - ${fdt_addr}; " \ +- "else " \ +- "if test ${boot_fdt} = try; then " \ +- "bootz; " \ +- "else " \ +- "echo WARN: Cannot load the DT; " \ +- "fi; " \ +- "fi; " \ +- "else " \ +- "bootz; " \ +- "fi; " \ +- "fi;\0" \ +- "findfdt="\ +- "if test $fdt_file = undefined; then " \ +- "if test $board_name = ULZ-EVK && test $board_rev = 14X14; then " \ +- "setenv fdt_file imx6ulz-14x14-evk.dtb; fi; " \ +- "if test $board_name = EVK && test $board_rev = 9X9; then " \ +- "setenv fdt_file imx6ull-9x9-evk.dtb; fi; " \ +- "if test $board_name = EVK && test $board_rev = 14X14; then " \ +- "setenv fdt_file imx6ull-14x14-evk.dtb; fi; " \ +- "if test $fdt_file = undefined; then " \ +- "echo WARNING: Could not determine dtb to use; " \ +- "fi; " \ +- "fi;\0" \ +- "findtee="\ +- "if test $tee_file = undefined; then " \ +- "if test $board_name = ULZ-EVK && test $board_rev = 14X14; then " \ +- "setenv tee_file uTee-6ulzevk; fi; " \ +- "if test $board_name = EVK && test $board_rev = 9X9; then " \ +- "setenv tee_file uTee-6ullevk; fi; " \ +- "if test $board_name = EVK && test $board_rev = 14X14; then " \ +- "setenv tee_file uTee-6ullevk; fi; " \ +- "if test $tee_file = undefined; then " \ +- "echo WARNING: Could not determine tee to use; " \ +- "fi; " \ +- "fi;\0" \ +- +-#define CONFIG_BOOTCOMMAND \ +- "run findfdt;" \ +- "run findtee;" \ +- "mmc dev ${mmcdev};" \ +- "mmc dev ${mmcdev}; if mmc rescan; then " \ +- "if run loadbootscript; then " \ +- "run bootscript; " \ +- "else " \ +- "if run loadimage; then " \ +- "run mmcboot; " \ +- "else run netboot; " \ +- "fi; " \ +- "fi; " \ +- "else run netboot; fi" ++ "run loadbootscript; run bootscript; " \ ++ "bootz ${loadaddr} - ${fdt_addr}\0" \ ++ "netboot=echo Booting from net ...; " \ ++ "tftp $loadaddr $image; tftp $fdt_addr ${fdt_file};" \ ++ "run mmcargs; " \ ++ "bootz ${loadaddr} - ${fdt_addr}\0" \ ++ "bootcmd=run mmcboot\0" \ ++ "bbl=tftp ${loadaddr} u-boot-igkboard-emmc.imx && mmc dev ${mmcdev} 1 && mmc write ${loadaddr} 2 0x500\0" + #endif + + /* Miscellaneous configurable options */ +@@ -238,7 +153,9 @@ + (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET) + + /* environment organization */ ++#ifndef CONFIG_SYS_MMC_ENV_DEV + #define CONFIG_SYS_MMC_ENV_DEV 1 /* USDHC2 */ ++#endif + #define CONFIG_MMCROOT "/dev/mmcblk1p2" /* USDHC2 */ + + #define CONFIG_IOMUX_LPSR +diff -Nuar uboot-imx/Makefile uboot-imx-igkboard/Makefile +--- uboot-imx/Makefile 2021-09-06 16:48:23.000000000 +0800 ++++ uboot-imx-igkboard/Makefile 2021-12-16 17:23:36.221057260 +0800 +@@ -263,6 +263,9 @@ + CROSS_COMPILE ?= + endif + ++ARCH=arm ++CROSS_COMPILE?=/opt/buildroot/cortexA7/bin/arm-linux- ++ + KCONFIG_CONFIG ?= .config + export KCONFIG_CONFIG + diff --git a/yocto/meta-igkboard/recipes-bsp/u-boot/u-boot-imx_2021.04.bbappend b/yocto/meta-igkboard/recipes-bsp/u-boot/u-boot-imx_2021.04.bbappend new file mode 100644 index 0000000..18ae719 --- /dev/null +++ b/yocto/meta-igkboard/recipes-bsp/u-boot/u-boot-imx_2021.04.bbappend @@ -0,0 +1,10 @@ +COMPATIBLE_MACHINE = "(mx6)" + +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" + +LOCALVERSION = "_5.10.52_2.1.0" +SRCREV = "1c0116f3da250c5a52858c53efb8b38c0963f477" + +FILESEXTRAPATHS_prepend := "${THISDIR}/files:" +SRC_URI_append = " file://uboot-imx-igkboard.patch " diff --git a/yocto/meta-igkboard/recipes-core/base-files/base-files_3.0.14.bbappend b/yocto/meta-igkboard/recipes-core/base-files/base-files_3.0.14.bbappend new file mode 100644 index 0000000..0445ce1 --- /dev/null +++ b/yocto/meta-igkboard/recipes-core/base-files/base-files_3.0.14.bbappend @@ -0,0 +1,17 @@ +SUMMARY = "Update system configure files" + +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://licenses/GPL-2;md5=94d55d512a9ba36caa9b7df079bae19f" + +do_install_basefilesissue_append() { + # Overwrite /etc/issue with a custom string + printf "Welcome to LingYun IoT Gateway Kit Board GNU/Linux Yocto System, Default Password '12345'.\n" > ${D}${sysconfdir}/issue + + # Overwrite /etc/issue.net with a custom string + printf "Welcome to LingYun IoT Gateway Kit Board GNU/Linux Yocto System, Default Password '12345'.\n" > ${D}${sysconfdir}/issue.net +} + +do_install_append() { + # add alias for ls with color display + printf "alias ls='ls --color=auto'\n" >> ${D}${sysconfdir}/profile +} diff --git a/yocto/meta-igkboard/recipes-drivers/drivers/drivers-mods_1.0.bb b/yocto/meta-igkboard/recipes-drivers/drivers/drivers-mods_1.0.bb new file mode 100644 index 0000000..eeaf769 --- /dev/null +++ b/yocto/meta-igkboard/recipes-drivers/drivers/drivers-mods_1.0.bb @@ -0,0 +1,19 @@ +SUMMARY = "Linux kernel hello module" +DESCRIPTION = "${SUMMARY}" +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" + +inherit module + +FILESEXTRAPATHS_prepend := "${THISDIR}/src:" +SRC_URI = "file://Makefile \ + file://hello.c \ + " + +S = "${WORKDIR}" + +# The inherit of module.bbclass will automatically name module packages with +# "kernel-module-" prefix as required by the oe-core build environment. + +EXTRA_OEMAKE += "-C ${STAGING_KERNEL_BUILDDIR} M=${S}" +EXTRA_OEMAKE_append_task-install = "-C ${STAGING_KERNEL_DIR} M=${S}" diff --git a/yocto/meta-igkboard/recipes-drivers/drivers/src/Makefile b/yocto/meta-igkboard/recipes-drivers/drivers/src/Makefile new file mode 100644 index 0000000..dfd7ff0 --- /dev/null +++ b/yocto/meta-igkboard/recipes-drivers/drivers/src/Makefile @@ -0,0 +1,25 @@ +#********************************************************************************* +# Copyright: (C) 2021 LingYun IoT System Studio +# All rights reserved. +# +# Filename: Makefile +# Description: This Makefile used to compile the hello module here +# +# Version: 1.0.0(18/12/2021~) +# Author: Guo Wenxue <guowenxue@gmail.com> +# ChangeLog: 1, Release initial version on "18/12/2021 01:29:33 PM" +# +#********************************************************************************/ + +SRC := $(shell pwd) + +obj-m += hello.o + +all: + @$(MAKE) -C $(KERNEL_SRC) M=$(SRC) + +modules_install: + $(MAKE) -C $(KERNEL_SRC) M=$(SRC) modules_install + +clean: + @rm -f *.o *.mod* .*.cmd *.symvers *.order diff --git a/yocto/meta-igkboard/recipes-drivers/drivers/src/hello.c b/yocto/meta-igkboard/recipes-drivers/drivers/src/hello.c new file mode 100644 index 0000000..b202079 --- /dev/null +++ b/yocto/meta-igkboard/recipes-drivers/drivers/src/hello.c @@ -0,0 +1,34 @@ +/********************************************************************************* + * Copyright: (C) 2021 LingYun IoT System Studio + * All rights reserved. + * + * Filename: hello.c + * Description: This file is the linux kernel sample hello module + * + * Version: 1.0.0(12/23/2021) + * Author: Guo Wenxue <guowenxue@gmail.com> + * ChangeLog: 1, Release initial version on "12/23/2021 04:36:57 PM" + * + ********************************************************************************/ + +#include <linux/init.h> +#include <linux/module.h> +#include <linux/kernel.h> + +static __init int hello_init(void) +{ + printk(KERN_ALERT "Hello, LingYun IoT System Studio!\n"); + return 0; +} + +static __exit void hello_exit(void) +{ + printk(KERN_ALERT "Goodbye, I have found a good job!\n"); +} + +module_init(hello_init); +module_exit(hello_exit); + +MODULE_AUTHOR("GuoWenxue <guowenxue@gmail.com>"); +MODULE_DESCRIPTION("Linux Kernel hello module"); +MODULE_LICENSE("Dual BSD/GPL"); diff --git a/yocto/meta-igkboard/recipes-hello/hello/hello-apps_1.0.bb b/yocto/meta-igkboard/recipes-hello/hello/hello-apps_1.0.bb new file mode 100644 index 0000000..e86181b --- /dev/null +++ b/yocto/meta-igkboard/recipes-hello/hello/hello-apps_1.0.bb @@ -0,0 +1,44 @@ +SUMMARY = "A simple Hello application" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302" + +python do_display_banner() { + bb.plain("***********************************************"); + bb.plain("* *"); + bb.plain("* Example recipe for hello application *"); + bb.plain("* *"); + bb.plain("***********************************************"); +} + +# An example to add a new task +addtask display_banner before do_build + +# Source file list, will auto search in the subdir + +FILESEXTRAPATHS_prepend := "${THISDIR}/src:" +SRC_URI = "file://hello.c \ + file://Makefile \ + " + +# Application version and reversion +PV = "1" +PR = "r0" + +# Must add this line, or throw error: No GNU_HASH +TARGET_CC_ARCH += "${LDFLAGS}" + +S = "${WORKDIR}" + +do_compile() { + make +} + +# There is /usr/bin/hello in lmbench: dpkg-query -S hello +do_install() { + install -d ${D}${sbindir} + install -m 0755 ${S}/hello ${D}${sbindir} +} + +# Install application to image file +FILES_${PN} = "${sbindir}/hello" diff --git a/yocto/meta-igkboard/recipes-hello/hello/src/Makefile b/yocto/meta-igkboard/recipes-hello/hello/src/Makefile new file mode 100644 index 0000000..18ad1ef --- /dev/null +++ b/yocto/meta-igkboard/recipes-hello/hello/src/Makefile @@ -0,0 +1,9 @@ +APP_NAME=hello + +${APP_NAME}: + ${CC} -o $@ $@.c + +.PHONY: clean + +clean: + rm -rf ${APP_NAME} diff --git a/yocto/meta-igkboard/recipes-hello/hello/src/hello.c b/yocto/meta-igkboard/recipes-hello/hello/src/hello.c new file mode 100644 index 0000000..7da3bed --- /dev/null +++ b/yocto/meta-igkboard/recipes-hello/hello/src/hello.c @@ -0,0 +1,21 @@ +/********************************************************************************* + * Copyright: (C) 2021 LingYun IoT System Studio + * All rights reserved. + * + * Filename: hello.c + * Description: This file is a simple C programming language source file. + * + * Version: 1.0.0(12/23/2021) + * Author: Guo Wenxue <guowenxue@gmail.com> + * ChangeLog: 1, Release initial version on "12/23/2021 03:14:49 PM" + * + ********************************************************************************/ + +#include <stdio.h> + +int main (int argc, char **argv) +{ + printf("Hello, LingYun IoT System Studio!\n"); + + return 0; +} diff --git a/yocto/meta-igkboard/recipes-images/igkboard/linuxsys-image.bb b/yocto/meta-igkboard/recipes-images/igkboard/linuxsys-image.bb new file mode 100644 index 0000000..24a4d6b --- /dev/null +++ b/yocto/meta-igkboard/recipes-images/igkboard/linuxsys-image.bb @@ -0,0 +1,50 @@ +SUMMARY = "Yocto Linux System Image for LingYun IoT Kit Gateway Board" +LICENSE = "MIT" + +inherit core-image + +# additional free disk space created in Kbytes +IMAGE_OVERHEAD_FACTOR = "1.0" +IMAGE_ROOTFS_EXTRA_SPACE = "512000" + +## Select Image Features +IMAGE_FEATURES += " \ + ssh-server-openssh \ + package-management \ +" + +CORE_IMAGE_EXTRA_INSTALL += " \ + packagegroup-core-full-cmdline \ + packagegroup-tools-bluetooth \ + packagegroup-fsl-tools-audio \ + packagegroup-fsl-gstreamer1.0 \ + packagegroup-fsl-gstreamer1.0-full \ + packagegroup-qt5-imx \ + packagegroup-misc-utils \ + firmwared \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'weston-init', '', d)} \ +" + +CORE_IMAGE_EXTRA_INSTALL_append = " \ + drivers-mods \ + hello-apps \ + gnupg \ + e2fsprogs \ + e2fsprogs-resize2fs \ + parted \ + v4l-utils \ + sudo \ + nano \ + hostapd \ + evtest \ + mtd-utils \ + i2c-tools \ + spitools \ + xz \ + udev-extraconf \ +" + +inherit extrausers +EXTRA_USERS_PARAMS = "\ + usermod -P 12345 root; \ +" diff --git a/yocto/meta-igkboard/recipes-kernel/linux/files/linux-imx-igkboard.patch b/yocto/meta-igkboard/recipes-kernel/linux/files/linux-imx-igkboard.patch new file mode 100644 index 0000000..2614c3a --- /dev/null +++ b/yocto/meta-igkboard/recipes-kernel/linux/files/linux-imx-igkboard.patch @@ -0,0 +1,1237 @@ +diff -Nuar -x include-prefixes -x logo_linux_clut224.ppm linux-imx/arch/arm/boot/dts/igkboard-emmc.dts linux-imx-igkboard/arch/arm/boot/dts/igkboard-emmc.dts +--- linux-imx/arch/arm/boot/dts/igkboard-emmc.dts 1970-01-01 08:00:00.000000000 +0800 ++++ linux-imx-igkboard/arch/arm/boot/dts/igkboard-emmc.dts 2021-12-22 19:31:56.922407534 +0800 +@@ -0,0 +1,10 @@ ++/* ++ * LingYun IoT System Studio IGK(IoT Gateway Kit) Board device tree ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License ++ * as published by the Free Software Foundation; either version 2 ++ * of the License, or (at your option) any later version. ++ */ ++ ++#include "imx6ul-14x14-evk-emmc.dts" +diff -Nuar -x include-prefixes -x logo_linux_clut224.ppm linux-imx/arch/arm/boot/dts/imx6ul-14x14-evk.dtsi linux-imx-igkboard/arch/arm/boot/dts/imx6ul-14x14-evk.dtsi +--- linux-imx/arch/arm/boot/dts/imx6ul-14x14-evk.dtsi 2021-09-08 18:41:11.000000000 +0800 ++++ linux-imx-igkboard/arch/arm/boot/dts/imx6ul-14x14-evk.dtsi 2021-12-18 21:41:22.474200827 +0800 +@@ -31,7 +31,41 @@ + brightness-levels = <0 4 8 16 32 64 128 255>; + default-brightness-level = <6>; + status = "okay"; +- }; ++ }; ++ ++ buzzer: pwm-buzzer { ++ compatible = "pwm-beeper"; ++ pwms = <&pwm2 0 500000>; ++ status = "okay"; ++ }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_gpio_leds>; ++ status = "okay"; ++ ++ sysled { ++ lable = "sysled"; ++ gpios = <&gpio4 16 GPIO_ACTIVE_HIGH>; ++ linux,default-trigger = "heartbeat"; ++ default-state = "off"; ++ }; ++ }; ++ ++ keys { ++ compatible = "gpio-keys"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_gpio_keys>; ++ autorepeat; ++ status = "okay"; ++ ++ key_user { ++ lable = "key_user"; ++ gpios = <&gpio4 14 GPIO_ACTIVE_LOW>; ++ linux,code = <KEY_ENTER>; ++ }; ++ }; + + pxp_v4l2 { + compatible = "fsl,imx6ul-pxp-v4l2", "fsl,imx6sx-pxp-v4l2", "fsl,imx6sl-pxp-v4l2"; +@@ -43,19 +77,16 @@ + regulator-name = "VSD_3V3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; +- gpio = <&gpio1 9 GPIO_ACTIVE_HIGH>; + off-on-delay-us = <20000>; + enable-active-high; + }; + + reg_peri_3v3: regulator-peri-3v3 { + compatible = "regulator-fixed"; +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_peri_3v3>; + regulator-name = "VPERI_3V3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; +- gpio = <&gpio5 2 GPIO_ACTIVE_LOW>; ++ + /* + * If you want to want to make this dynamic please + * check schematics and test all affected peripherals: +@@ -78,6 +109,24 @@ + gpios = <&gpio_spi 3 GPIO_ACTIVE_LOW>; + }; + ++ reg_3p3v: 3p3v { ++ compatible = "regulator-fixed"; ++ regulator-name = "3P3V"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-boot-on; ++ regulator-always-on; ++ }; ++ ++ reg_1p8v: 1p8v { ++ compatible = "regulator-fixed"; ++ regulator-name = "1P8V"; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-boot-on; ++ regulator-always-on; ++ }; ++ + sound { + compatible = "simple-audio-card"; + simple-audio-card,name = "mx6ul-wm8960"; +@@ -115,6 +164,15 @@ + }; + }; + ++ sound-mqs { ++ compatible = "fsl,imx-audio-mqs"; ++ model = "mqs-audio"; ++ cpu-dai = <&sai1>; ++ asrc-controller = <&asrc>; ++ audio-codec = <&mqs>; ++ status = "okay"; ++ }; ++ + sound-wm8960 { + compatible = "fsl,imx6ul-evk-wm8960", + "fsl,imx-audio-wm8960"; +@@ -142,7 +200,7 @@ + compatible = "spi-gpio"; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_spi4>; +- status = "okay"; ++ status = "disabled"; /* MX6UL_PAD_SNVS_TAMPER7__GPIO5_IO07 conflict with fec1 reset pin */ + pinctrl-assert-gpios = <&gpio5 8 GPIO_ACTIVE_LOW>; + gpio-sck = <&gpio5 11 0>; + gpio-mosi = <&gpio5 10 0>; +@@ -169,7 +227,7 @@ + }; + + &csi { +- status = "disabled"; ++ status = "okay"; + + port { + csi1_ep: endpoint { +@@ -184,6 +242,26 @@ + pinctrl-0 = <&pinctrl_i2c2>; + status = "okay"; + ++ gt9xx@5d { ++ compatible = "goodix,gt9147"; ++ reg = <0x5d>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_ts_pins>; ++ ++ irq-gpios = <&gpio5 2 GPIO_ACTIVE_HIGH>; ++ reset-gpios = <&gpio5 3 GPIO_ACTIVE_HIGH>; ++ interrupt-parent = <&gpio5>; ++ interrupts = <2 IRQ_TYPE_EDGE_FALLING>; ++ ++ status = "okay"; ++ }; ++ ++ rtc@6f { ++ compatible = "isil,isl1208"; ++ reg = <0x6f>; ++ status = "okay"; ++ }; ++ + codec: wm8960@1a { + #sound-dai-cells = <0>; + compatible = "wlf,wm8960"; +@@ -192,7 +270,8 @@ + wlf,hp-cfg = <3 2 3>; + wlf,gpio-cfg = <1 3>; + clocks = <&clks IMX6UL_CLK_SAI2>; +- clock-names = "mclk"; ++ clock-names = "mclk"; ++ status = "disabled"; + }; + + ov5640: ov5640@3c { +@@ -202,12 +281,19 @@ + pinctrl-0 = <&pinctrl_csi1>; + clocks = <&clks IMX6UL_CLK_CSI>; + clock-names = "csi_mclk"; +- pwn-gpios = <&gpio_spi 6 1>; +- rst-gpios = <&gpio_spi 5 0>; ++ ++ DOVDD-supply = <®_3p3v>; ++ VDD-supply = <®_1p8v>; ++ AVDD-supply = <®_3p3v>; ++ DVDD-supply = <®_3p3v>; ++ ++ pwn-gpios = <&gpio5 6 GPIO_ACTIVE_HIGH>; ++ rst-gpios = <&gpio5 5 GPIO_ACTIVE_LOW>; + csi_id = <0>; + mclk = <24000000>; + mclk_source = <0>; +- status = "disabled"; ++ /* rotation = <180>; */ ++ status = "okay"; + port { + ov5640_ep: endpoint { + remote-endpoint = <&csi1_ep>; +@@ -222,6 +308,9 @@ + phy-mode = "rmii"; + phy-handle = <ðphy0>; + phy-supply = <®_peri_3v3>; ++ phy-reset-gpios = <&gpio5 7 GPIO_ACTIVE_LOW>; /* MX6UL_PAD_SNVS_TAMPER7__GPIO5_IO07 conflict with spi4 */ ++ phy-reset-duration = <50>; ++ phy-reset-post-delay = <15>; + status = "okay"; + }; + +@@ -231,14 +320,17 @@ + phy-mode = "rmii"; + phy-handle = <ðphy1>; + phy-supply = <®_peri_3v3>; ++ phy-reset-gpios = <&gpio5 4 GPIO_ACTIVE_LOW>; /* MX6UL_PAD_SNVS_TAMPER4__GPIO5_IO04 conflict with sai2 */ ++ phy-reset-duration = <50>; ++ phy-reset-post-delay = <15>; + status = "okay"; + + mdio { + #address-cells = <1>; + #size-cells = <0>; + +- ethphy0: ethernet-phy@2 { +- reg = <2>; ++ ethphy0: ethernet-phy@0 { ++ reg = <0>; + micrel,led-mode = <1>; + clocks = <&clks IMX6UL_CLK_ENET_REF>; + clock-names = "rmii-ref"; +@@ -301,21 +393,21 @@ + + display0: display@0 { + bits-per-pixel = <16>; +- bus-width = <24>; ++ bus-width = <16>; + + display-timings { + native-mode = <&timing0>; + + timing0: timing0 { +- clock-frequency = <9200000>; +- hactive = <480>; +- vactive = <272>; +- hfront-porch = <8>; +- hback-porch = <4>; +- hsync-len = <41>; +- vback-porch = <2>; +- vfront-porch = <4>; +- vsync-len = <10>; ++ clock-frequency = <30000000>; ++ hactive = <800>; ++ vactive = <480>; ++ hfront-porch = <40>; ++ hback-porch = <88>; ++ hsync-len = <48>; ++ vback-porch = <32>; ++ vfront-porch = <13>; ++ vsync-len = <3>; + hsync-active = <0>; + vsync-active = <0>; + de-active = <1>; +@@ -332,6 +424,13 @@ + status = "okay"; + }; + ++&pwm2 { ++ #pwm-cells = <2>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_pwm2>; ++ status = "okay"; ++}; ++ + &pxp { + status = "okay"; + }; +@@ -339,7 +438,7 @@ + &qspi { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_qspi>; +- status = "okay"; ++ status = "disabled"; /* disable it for the pins conflict with GPIO Led and Key */ + + flash0: n25q256a@0 { + #address-cells = <1>; +@@ -352,6 +451,24 @@ + }; + }; + ++&mqs { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_mqs>; ++ clocks = <&clks IMX6UL_CLK_SAI1>; ++ clock-names = "mclk"; ++ status = "okay"; ++}; ++ ++ ++&sai1 { ++ assigned-clocks = <&clks IMX6UL_CLK_SAI1_SEL>, ++ <&clks IMX6UL_CLK_SAI1>; ++ assigned-clock-parents = <&clks IMX6UL_CLK_PLL4_AUDIO_DIV>; ++ assigned-clock-rates = <0>, <24576000>; ++ fsl,sai-mclk-direction-output; ++ status = "okay"; ++}; ++ + &sai2 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_sai2>; +@@ -360,7 +477,7 @@ + assigned-clock-parents = <&clks IMX6UL_CLK_PLL4_AUDIO_DIV>; + assigned-clock-rates = <0>, <12288000>; + fsl,sai-mclk-direction-output; +- status = "okay"; ++ status = "disabled"; /* MX6UL_PAD_SNVS_TAMPER4__GPIO5_IO04 conflict with fec2 reset pin */ + }; + + &snvs_poweroff { +@@ -384,7 +501,7 @@ + pinctrl-assert-gpios = <&gpio4 23 GPIO_ACTIVE_HIGH>; + port = <1>; + sven_low_active; +- status = "okay"; ++ status = "disabled"; + }; + + &tsc { +@@ -439,6 +556,7 @@ + pinctrl-1 = <&pinctrl_usdhc1_100mhz>; + pinctrl-2 = <&pinctrl_usdhc1_200mhz>; + cd-gpios = <&gpio1 19 GPIO_ACTIVE_LOW>; ++ no-1-8-v; + keep-power-in-suspend; + wakeup-source; + vmmc-supply = <®_sd1_vmmc>; +@@ -446,8 +564,8 @@ + }; + + &usdhc2 { +- pinctrl-names = "default"; +- pinctrl-0 = <&pinctrl_usdhc2>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&pinctrl_usdhc2>; + non-removable; + keep-power-in-suspend; + wakeup-source; +@@ -463,6 +581,32 @@ + &iomuxc { + pinctrl-names = "default"; + ++ pinctrl_gpio_leds: gpio-leds { ++ fsl,pins = < ++ MX6UL_PAD_NAND_DQS__GPIO4_IO16 0x17059 /* led run */ ++ >; ++ }; ++ ++ pinctrl_gpio_keys: gpio-keys { ++ fsl,pins = < ++ MX6UL_PAD_NAND_CE1_B__GPIO4_IO14 0x17059 /* gpio key */ ++ >; ++ }; ++ ++ pinctrl_mqs: pinctrl-mqs-pins { ++ fsl,pins = < ++ MX6UL_PAD_JTAG_TDI__MQS_LEFT 0x11088 /* MQS Left */ ++ MX6UL_PAD_JTAG_TDO__MQS_RIGHT 0x11088 /* MQS Right */ ++ >; ++ }; ++ ++ pinctrl_ts_pins: pinctrl-ts-pins { ++ fsl,pins = < ++ MX6UL_PAD_SNVS_TAMPER2__GPIO5_IO02 0x17059 /* TouchScreen IRQ */ ++ MX6UL_PAD_SNVS_TAMPER3__GPIO5_IO03 0x17059 /* TouchScreen RST */ ++ >; ++ }; ++ + pinctrl_csi1: csi1grp { + fsl,pins = < + MX6UL_PAD_CSI_MCLK__CSI_MCLK 0x1b088 +@@ -490,6 +634,7 @@ + MX6UL_PAD_ENET1_TX_DATA0__ENET1_TDATA00 0x1b0b0 + MX6UL_PAD_ENET1_TX_DATA1__ENET1_TDATA01 0x1b0b0 + MX6UL_PAD_ENET1_TX_CLK__ENET1_REF_CLK1 0x4001b031 ++ MX6UL_PAD_SNVS_TAMPER7__GPIO5_IO07 0x10B0 /* ENET1 RESET conflict with pinctrl_spi4 */ + >; + }; + +@@ -505,6 +650,7 @@ + MX6UL_PAD_ENET2_TX_DATA0__ENET2_TDATA00 0x1b0b0 + MX6UL_PAD_ENET2_TX_DATA1__ENET2_TDATA01 0x1b0b0 + MX6UL_PAD_ENET2_TX_CLK__ENET2_REF_CLK2 0x4001b031 ++ MX6UL_PAD_SNVS_TAMPER4__GPIO5_IO04 0x10B0 /* ENET2 RESET conflict with pinctrl_sai2 */ + >; + }; + +@@ -594,19 +740,18 @@ + MX6UL_PAD_JTAG_TRST_B__SAI2_TX_DATA 0x11088 + MX6UL_PAD_JTAG_TCK__SAI2_RX_DATA 0x11088 + MX6UL_PAD_JTAG_TMS__SAI2_MCLK 0x17088 +- MX6UL_PAD_SNVS_TAMPER4__GPIO5_IO04 0x17059 + >; + }; + +- pinctrl_peri_3v3: peri3v3grp { ++ pinctrl_pwm1: pwm1grp { + fsl,pins = < +- MX6UL_PAD_SNVS_TAMPER2__GPIO5_IO02 0x1b0b0 ++ MX6UL_PAD_GPIO1_IO08__PWM1_OUT 0x110b0 + >; + }; + +- pinctrl_pwm1: pwm1grp { ++ pinctrl_pwm2: pwm2grp { + fsl,pins = < +- MX6UL_PAD_GPIO1_IO08__PWM1_OUT 0x110b0 ++ MX6UL_PAD_GPIO1_IO09__PWM2_OUT 0x110b0 + >; + }; + +@@ -625,7 +770,6 @@ + fsl,pins = < + MX6UL_PAD_BOOT_MODE0__GPIO5_IO10 0x70a1 + MX6UL_PAD_BOOT_MODE1__GPIO5_IO11 0x70a1 +- MX6UL_PAD_SNVS_TAMPER7__GPIO5_IO07 0x70a1 + MX6UL_PAD_SNVS_TAMPER8__GPIO5_IO08 0x80000000 + >; + }; +@@ -678,9 +822,7 @@ + MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x17059 + MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x17059 + MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x17059 +- MX6UL_PAD_UART1_RTS_B__GPIO1_IO19 0x17059 /* SD1 CD */ +- MX6UL_PAD_GPIO1_IO05__USDHC1_VSELECT 0x17059 /* SD1 VSELECT */ +- MX6UL_PAD_GPIO1_IO09__GPIO1_IO09 0x17059 /* SD1 RESET */ ++ MX6UL_PAD_UART1_RTS_B__GPIO1_IO19 0x17059 /* SD1 CD */ + >; + }; + +diff -Nuar -x include-prefixes -x logo_linux_clut224.ppm linux-imx/arch/arm/boot/dts/imx6ul.dtsi linux-imx-igkboard/arch/arm/boot/dts/imx6ul.dtsi +--- linux-imx/arch/arm/boot/dts/imx6ul.dtsi 2021-09-08 18:41:11.000000000 +0800 ++++ linux-imx-igkboard/arch/arm/boot/dts/imx6ul.dtsi 2021-12-18 21:41:22.474200827 +0800 +@@ -727,6 +727,7 @@ + offset = <0x34>; + interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>; ++ status = "disabled"; /* disable CPU builtin RTC and will use ISL1208 */ + }; + + snvs_poweroff: snvs-poweroff { +@@ -791,6 +792,12 @@ + reg = <0x020e4000 0x4000>; + }; + ++ mqs: mqs { ++ compatible = "fsl,imx6sx-mqs"; ++ gpr = <&gpr>; ++ status = "disabled"; ++ }; ++ + gpt2: timer@20e8000 { + compatible = "fsl,imx6ul-gpt", "fsl,imx6sx-gpt"; + reg = <0x020e8000 0x4000>; +diff -Nuar -x include-prefixes -x logo_linux_clut224.ppm linux-imx/arch/arm/boot/dts/Makefile linux-imx-igkboard/arch/arm/boot/dts/Makefile +--- linux-imx/arch/arm/boot/dts/Makefile 2021-09-08 18:41:11.000000000 +0800 ++++ linux-imx-igkboard/arch/arm/boot/dts/Makefile 2021-12-22 19:41:12.058569872 +0800 +@@ -678,6 +678,7 @@ + imx6ul-tx6ul-0010.dtb \ + imx6ul-tx6ul-0011.dtb \ + imx6ul-tx6ul-mainboard.dtb \ ++ igkboard-emmc.dtb \ + imx6ull-14x14-evk.dtb \ + imx6ull-14x14-evk-emmc.dtb \ + imx6ull-14x14-evk-btwifi.dtb \ +diff -Nuar -x include-prefixes -x logo_linux_clut224.ppm linux-imx/arch/arm/configs/igkboard_defconfig linux-imx-igkboard/arch/arm/configs/igkboard_defconfig +--- linux-imx/arch/arm/configs/igkboard_defconfig 1970-01-01 08:00:00.000000000 +0800 ++++ linux-imx-igkboard/arch/arm/configs/igkboard_defconfig 2021-12-22 19:45:31.209601680 +0800 +@@ -0,0 +1,722 @@ ++CONFIG_KERNEL_LZO=y ++CONFIG_SYSVIPC=y ++CONFIG_POSIX_MQUEUE=y ++CONFIG_NO_HZ=y ++CONFIG_HIGH_RES_TIMERS=y ++CONFIG_PREEMPT=y ++CONFIG_IKCONFIG=y ++CONFIG_IKCONFIG_PROC=y ++CONFIG_LOG_BUF_SHIFT=18 ++CONFIG_CGROUPS=y ++CONFIG_MEMCG=y ++CONFIG_CGROUP_PIDS=y ++CONFIG_CGROUP_FREEZER=y ++CONFIG_CGROUP_DEVICE=y ++CONFIG_NAMESPACES=y ++CONFIG_USER_NS=y ++CONFIG_RELAY=y ++CONFIG_BLK_DEV_INITRD=y ++CONFIG_EXPERT=y ++CONFIG_PERF_EVENTS=y ++# CONFIG_SLUB_DEBUG is not set ++# CONFIG_COMPAT_BRK is not set ++CONFIG_ARCH_MXC=y ++CONFIG_SOC_IMX6Q=y ++CONFIG_SOC_IMX6SL=y ++CONFIG_SOC_IMX6SLL=y ++CONFIG_SOC_IMX6SX=y ++CONFIG_SOC_IMX6UL=y ++CONFIG_SOC_IMX7D=y ++CONFIG_SOC_IMX7ULP=y ++CONFIG_SMP=y ++CONFIG_VMSPLIT_2G=y ++CONFIG_ARM_PSCI=y ++CONFIG_HIGHMEM=y ++CONFIG_FORCE_MAX_ZONEORDER=14 ++CONFIG_CMDLINE="noinitrd console=ttymxc0,115200" ++CONFIG_KEXEC=y ++CONFIG_CPU_FREQ=y ++CONFIG_CPU_FREQ_STAT=y ++CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y ++CONFIG_CPU_FREQ_GOV_POWERSAVE=y ++CONFIG_CPU_FREQ_GOV_USERSPACE=y ++CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y ++CONFIG_CPUFREQ_DT=y ++CONFIG_ARM_IMX6Q_CPUFREQ=y ++CONFIG_ARM_IMX_CPUFREQ_DT=y ++CONFIG_CPU_IDLE=y ++CONFIG_ARM_CPUIDLE=y ++CONFIG_ARM_PSCI_CPUIDLE=y ++CONFIG_VFP=y ++CONFIG_NEON=y ++CONFIG_PM_DEBUG=y ++CONFIG_PM_TEST_SUSPEND=y ++CONFIG_MODULES=y ++CONFIG_MODULE_UNLOAD=y ++CONFIG_MODVERSIONS=y ++CONFIG_MODULE_SRCVERSION_ALL=y ++# CONFIG_BLK_DEV_BSG is not set ++CONFIG_CMA=y ++CONFIG_NET=y ++CONFIG_PACKET=y ++CONFIG_UNIX=y ++CONFIG_INET=y ++CONFIG_IP_MULTICAST=y ++CONFIG_IP_PNP=y ++CONFIG_IP_PNP_DHCP=y ++CONFIG_NETFILTER=y ++CONFIG_VLAN_8021Q=m ++CONFIG_LLC2=y ++CONFIG_CAN=y ++CONFIG_CAN_FLEXCAN=y ++CONFIG_BT=y ++CONFIG_BT_RFCOMM=y ++CONFIG_BT_RFCOMM_TTY=y ++CONFIG_BT_BNEP=y ++CONFIG_BT_BNEP_MC_FILTER=y ++CONFIG_BT_BNEP_PROTO_FILTER=y ++CONFIG_BT_HIDP=y ++CONFIG_BT_HCIBTUSB=y ++CONFIG_BT_HCIUART=y ++CONFIG_BT_HCIUART_BCSP=y ++CONFIG_BT_HCIUART_LL=y ++CONFIG_BT_HCIUART_3WIRE=y ++CONFIG_BT_HCIUART_MRVL=y ++CONFIG_BT_HCIVHCI=y ++CONFIG_BT_MRVL=y ++CONFIG_BT_MRVL_SDIO=y ++CONFIG_CFG80211=y ++CONFIG_NL80211_TESTMODE=y ++CONFIG_CFG80211_WEXT=y ++CONFIG_MAC80211=y ++CONFIG_PCI=y ++CONFIG_PCI_MSI=y ++CONFIG_PCI_IMX6_HOST=y ++CONFIG_PCI_IMX6_EP=y ++CONFIG_PCI_ENDPOINT=y ++CONFIG_PCI_ENDPOINT_CONFIGFS=y ++CONFIG_PCI_EPF_TEST=y ++CONFIG_DEVTMPFS=y ++CONFIG_DEVTMPFS_MOUNT=y ++# CONFIG_STANDALONE is not set ++CONFIG_FW_LOADER_USER_HELPER=y ++CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y ++CONFIG_IMX_WEIM=y ++CONFIG_CONNECTOR=y ++CONFIG_MTD=y ++CONFIG_MTD_CMDLINE_PARTS=y ++CONFIG_MTD_BLOCK=y ++CONFIG_MTD_CFI=y ++CONFIG_MTD_JEDECPROBE=y ++CONFIG_MTD_CFI_INTELEXT=y ++CONFIG_MTD_CFI_AMDSTD=y ++CONFIG_MTD_CFI_STAA=y ++CONFIG_MTD_PHYSMAP=y ++CONFIG_MTD_PHYSMAP_OF=y ++CONFIG_MTD_DATAFLASH=y ++CONFIG_MTD_SST25L=y ++CONFIG_MTD_RAW_NAND=y ++CONFIG_MTD_NAND_GPMI_NAND=y ++CONFIG_MTD_NAND_MXC=y ++CONFIG_MTD_SPI_NOR=y ++# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set ++CONFIG_MTD_UBI=y ++CONFIG_MTD_UBI_FASTMAP=y ++CONFIG_MTD_UBI_BLOCK=y ++CONFIG_OF_OVERLAY=y ++CONFIG_BLK_DEV_LOOP=y ++CONFIG_BLK_DEV_RAM=y ++CONFIG_BLK_DEV_RAM_SIZE=65536 ++CONFIG_SENSORS_FXOS8700=y ++CONFIG_SENSORS_FXAS2100X=y ++CONFIG_PCI_ENDPOINT_TEST=y ++CONFIG_EEPROM_AT24=y ++CONFIG_EEPROM_AT25=y ++# CONFIG_SCSI_PROC_FS is not set ++CONFIG_BLK_DEV_SD=y ++CONFIG_SCSI_CONSTANTS=y ++CONFIG_SCSI_LOGGING=y ++CONFIG_SCSI_SCAN_ASYNC=y ++# CONFIG_SCSI_LOWLEVEL is not set ++CONFIG_ATA=y ++CONFIG_SATA_AHCI_PLATFORM=y ++CONFIG_AHCI_IMX=y ++CONFIG_PATA_IMX=y ++CONFIG_NETDEVICES=y ++# CONFIG_NET_VENDOR_BROADCOM is not set ++CONFIG_CS89x0=y ++CONFIG_CS89x0_PLATFORM=y ++# CONFIG_NET_VENDOR_FARADAY is not set ++# CONFIG_NET_VENDOR_INTEL is not set ++# CONFIG_NET_VENDOR_MARVELL is not set ++# CONFIG_NET_VENDOR_MICREL is not set ++# CONFIG_NET_VENDOR_MICROCHIP is not set ++# CONFIG_NET_VENDOR_NATSEMI is not set ++# CONFIG_NET_VENDOR_SEEQ is not set ++CONFIG_SMC91X=y ++CONFIG_SMC911X=y ++CONFIG_SMSC911X=y ++# CONFIG_NET_VENDOR_STMICRO is not set ++CONFIG_MICREL_PHY=y ++CONFIG_AT803X_PHY=y ++CONFIG_USB_RTL8150=y ++CONFIG_USB_RTL8152=y ++CONFIG_USB_LAN78XX=y ++CONFIG_USB_USBNET=y ++# CONFIG_USB_NET_AX8817X is not set ++# CONFIG_USB_NET_AX88179_178A is not set ++CONFIG_USB_NET_CDC_EEM=y ++CONFIG_USB_NET_DM9601=y ++CONFIG_USB_NET_SMSC75XX=y ++CONFIG_USB_NET_SMSC95XX=y ++# CONFIG_USB_NET_NET1080 is not set ++CONFIG_USB_NET_MCS7830=y ++# CONFIG_USB_NET_ZAURUS is not set ++CONFIG_USB_IPHETH=y ++# CONFIG_WLAN_VENDOR_ADMTEK is not set ++# CONFIG_WLAN_VENDOR_ATH is not set ++# CONFIG_WLAN_VENDOR_ATMEL is not set ++# CONFIG_WLAN_VENDOR_BROADCOM is not set ++# CONFIG_WLAN_VENDOR_CISCO is not set ++# CONFIG_WLAN_VENDOR_INTEL is not set ++# CONFIG_WLAN_VENDOR_INTERSIL is not set ++# CONFIG_WLAN_VENDOR_MARVELL is not set ++CONFIG_MT7601U=y ++CONFIG_MT76x0U=y ++CONFIG_MT76x2U=y ++CONFIG_MT7663U=y ++# CONFIG_WLAN_VENDOR_MICROCHIP is not set ++# CONFIG_WLAN_VENDOR_RALINK is not set ++CONFIG_RTL8187=y ++CONFIG_RTL8192CE=y ++CONFIG_RTL8188EE=y ++CONFIG_RTL8192EE=y ++CONFIG_RTL8821AE=y ++CONFIG_RTL8192CU=y ++CONFIG_RTL8XXXU=y ++CONFIG_RTL8XXXU_UNTESTED=y ++# CONFIG_WLAN_VENDOR_RSI is not set ++# CONFIG_WLAN_VENDOR_ST is not set ++# CONFIG_WLAN_VENDOR_TI is not set ++# CONFIG_WLAN_VENDOR_ZYDAS is not set ++# CONFIG_WLAN_VENDOR_QUANTENNA is not set ++CONFIG_INPUT_MOUSEDEV=y ++CONFIG_INPUT_MOUSEDEV_PSAUX=y ++CONFIG_INPUT_EVDEV=y ++CONFIG_KEYBOARD_GPIO=y ++CONFIG_KEYBOARD_RPMSG=y ++CONFIG_KEYBOARD_IMX=y ++# CONFIG_INPUT_MOUSE is not set ++CONFIG_INPUT_TOUCHSCREEN=y ++# CONFIG_TOUCHSCREEN_CT36X_WLD is not set ++CONFIG_TOUCHSCREEN_GOODIX=y ++# CONFIG_TOUCHSCREEN_SYNAPTICS_DSX is not set ++# CONFIG_SERIO_SERPORT is not set ++# CONFIG_LEGACY_PTYS is not set ++CONFIG_SERIAL_IMX=y ++CONFIG_SERIAL_IMX_CONSOLE=y ++CONFIG_SERIAL_FSL_LPUART=y ++CONFIG_SERIAL_FSL_LPUART_CONSOLE=y ++CONFIG_SERIAL_DEV_BUS=y ++# CONFIG_I2C_COMPAT is not set ++CONFIG_I2C_CHARDEV=y ++CONFIG_I2C_MUX=y ++CONFIG_I2C_MUX_GPIO=y ++# CONFIG_I2C_HELPER_AUTO is not set ++CONFIG_I2C_ALGOPCF=m ++CONFIG_I2C_ALGOPCA=m ++CONFIG_I2C_GPIO=y ++CONFIG_I2C_IMX=y ++CONFIG_I2C_IMX_LPI2C=y ++CONFIG_SPI=y ++CONFIG_SPI_FSL_LPSPI=y ++CONFIG_SPI_FSL_QUADSPI=y ++CONFIG_SPI_GPIO=y ++CONFIG_SPI_IMX=y ++CONFIG_SPI_SPIDEV=y ++CONFIG_SPI_SLAVE=y ++CONFIG_SPI_SLAVE_TIME=y ++CONFIG_SPI_SLAVE_SYSTEM_CONTROL=y ++CONFIG_GPIO_SYSFS=y ++CONFIG_GPIO_MXC=y ++CONFIG_GPIO_SIOX=m ++CONFIG_GPIO_IMX_RPMSG=y ++CONFIG_GPIO_MAX732X=y ++CONFIG_GPIO_PCA953X=y ++CONFIG_GPIO_PCF857X=y ++CONFIG_GPIO_STMPE=y ++CONFIG_GPIO_74X164=y ++CONFIG_POWER_RESET=y ++CONFIG_POWER_RESET_SYSCON=y ++CONFIG_POWER_RESET_SYSCON_POWEROFF=y ++CONFIG_POWER_SUPPLY=y ++CONFIG_SENSORS_MC13783_ADC=y ++CONFIG_SENSORS_GPIO_FAN=y ++CONFIG_SENSORS_IIO_HWMON=y ++CONFIG_SENSORS_MAX17135=y ++CONFIG_SENSORS_MAG3110=y ++CONFIG_THERMAL=y ++CONFIG_THERMAL_STATISTICS=y ++CONFIG_THERMAL_WRITABLE_TRIPS=y ++CONFIG_CPU_THERMAL=y ++CONFIG_IMX_THERMAL=y ++CONFIG_DEVICE_THERMAL=y ++CONFIG_WATCHDOG=y ++CONFIG_DA9062_WATCHDOG=y ++CONFIG_RN5T618_WATCHDOG=y ++CONFIG_IMX2_WDT=y ++CONFIG_IMX7ULP_WDT=y ++CONFIG_MFD_DA9052_I2C=y ++CONFIG_MFD_DA9062=y ++CONFIG_MFD_DA9063=y ++CONFIG_MFD_MC13XXX_SPI=y ++CONFIG_MFD_MC13XXX_I2C=y ++CONFIG_MFD_MAX17135=y ++CONFIG_MFD_RN5T618=y ++CONFIG_MFD_SI476X_CORE=y ++CONFIG_MFD_STMPE=y ++CONFIG_MFD_WM8994=y ++CONFIG_REGULATOR=y ++CONFIG_REGULATOR_FIXED_VOLTAGE=y ++CONFIG_REGULATOR_ANATOP=y ++CONFIG_REGULATOR_DA9052=y ++CONFIG_REGULATOR_DA9062=y ++CONFIG_REGULATOR_DA9063=y ++CONFIG_REGULATOR_GPIO=y ++CONFIG_REGULATOR_MAX17135=y ++CONFIG_REGULATOR_MC13783=y ++CONFIG_REGULATOR_MC13892=y ++CONFIG_REGULATOR_PF1550_RPMSG=y ++CONFIG_REGULATOR_PFUZE100=y ++CONFIG_REGULATOR_RN5T618=y ++CONFIG_RC_CORE=y ++CONFIG_RC_DEVICES=y ++CONFIG_IR_GPIO_CIR=y ++CONFIG_MEDIA_SUPPORT=y ++CONFIG_MEDIA_USB_SUPPORT=y ++CONFIG_USB_VIDEO_CLASS=y ++CONFIG_USB_GSPCA=y ++# CONFIG_RADIO_ADAPTERS is not set ++CONFIG_V4L_PLATFORM_DRIVERS=y ++CONFIG_VIDEO_MUX=y ++CONFIG_VIDEO_MXC_CAPTURE=y ++CONFIG_VIDEO_MXC_OUTPUT=y ++CONFIG_VIDEO_MXC_CSI_CAMERA=y ++CONFIG_MXC_VADC=y ++CONFIG_MXC_MIPI_CSI=y ++CONFIG_MXC_CAMERA_OV5640_V2=y ++CONFIG_MXC_CAMERA_OV5640_MIPI_V2=y ++CONFIG_MXC_IPU_DEVICE_QUEUE_SDC=y ++CONFIG_VIDEO_MXC_IPU_OUTPUT=y ++CONFIG_VIDEO_MXC_PXP_V4L2=y ++CONFIG_V4L_MEM2MEM_DRIVERS=y ++CONFIG_VIDEO_CODA=m ++CONFIG_VIDEO_IMX_PXP=y ++# CONFIG_VIDEO_IR_I2C is not set ++# CONFIG_CXD2880_SPI_DRV is not set ++# CONFIG_MEDIA_TUNER_SIMPLE is not set ++# CONFIG_MEDIA_TUNER_TDA18250 is not set ++# CONFIG_MEDIA_TUNER_TDA8290 is not set ++# CONFIG_MEDIA_TUNER_TDA827X is not set ++# CONFIG_MEDIA_TUNER_TDA18271 is not set ++# CONFIG_MEDIA_TUNER_TDA9887 is not set ++# CONFIG_MEDIA_TUNER_TEA5761 is not set ++# CONFIG_MEDIA_TUNER_TEA5767 is not set ++# CONFIG_MEDIA_TUNER_MSI001 is not set ++# CONFIG_MEDIA_TUNER_MT20XX is not set ++# CONFIG_MEDIA_TUNER_MT2060 is not set ++# CONFIG_MEDIA_TUNER_MT2063 is not set ++# CONFIG_MEDIA_TUNER_MT2266 is not set ++# CONFIG_MEDIA_TUNER_MT2131 is not set ++# CONFIG_MEDIA_TUNER_QT1010 is not set ++# CONFIG_MEDIA_TUNER_XC2028 is not set ++# CONFIG_MEDIA_TUNER_XC5000 is not set ++# CONFIG_MEDIA_TUNER_XC4000 is not set ++# CONFIG_MEDIA_TUNER_MXL5005S is not set ++# CONFIG_MEDIA_TUNER_MXL5007T is not set ++# CONFIG_MEDIA_TUNER_MC44S803 is not set ++# CONFIG_MEDIA_TUNER_MAX2165 is not set ++# CONFIG_MEDIA_TUNER_TDA18218 is not set ++# CONFIG_MEDIA_TUNER_FC0011 is not set ++# CONFIG_MEDIA_TUNER_FC0012 is not set ++# CONFIG_MEDIA_TUNER_FC0013 is not set ++# CONFIG_MEDIA_TUNER_TDA18212 is not set ++# CONFIG_MEDIA_TUNER_E4000 is not set ++# CONFIG_MEDIA_TUNER_FC2580 is not set ++# CONFIG_MEDIA_TUNER_M88RS6000T is not set ++# CONFIG_MEDIA_TUNER_TUA9001 is not set ++# CONFIG_MEDIA_TUNER_SI2157 is not set ++# CONFIG_MEDIA_TUNER_IT913X is not set ++# CONFIG_MEDIA_TUNER_R820T is not set ++# CONFIG_MEDIA_TUNER_MXL301RF is not set ++# CONFIG_MEDIA_TUNER_QM1D1C0042 is not set ++# CONFIG_MEDIA_TUNER_QM1D1B0004 is not set ++# CONFIG_DVB_STB0899 is not set ++# CONFIG_DVB_STB6100 is not set ++# CONFIG_DVB_STV090x is not set ++# CONFIG_DVB_STV0910 is not set ++# CONFIG_DVB_STV6110x is not set ++# CONFIG_DVB_STV6111 is not set ++# CONFIG_DVB_MXL5XX is not set ++# CONFIG_DVB_M88DS3103 is not set ++# CONFIG_DVB_DRXK is not set ++# CONFIG_DVB_TDA18271C2DD is not set ++# CONFIG_DVB_SI2165 is not set ++# CONFIG_DVB_MN88472 is not set ++# CONFIG_DVB_MN88473 is not set ++# CONFIG_DVB_CX24110 is not set ++# CONFIG_DVB_CX24123 is not set ++# CONFIG_DVB_MT312 is not set ++# CONFIG_DVB_ZL10036 is not set ++# CONFIG_DVB_ZL10039 is not set ++# CONFIG_DVB_S5H1420 is not set ++# CONFIG_DVB_STV0288 is not set ++# CONFIG_DVB_STB6000 is not set ++# CONFIG_DVB_STV0299 is not set ++# CONFIG_DVB_STV6110 is not set ++# CONFIG_DVB_STV0900 is not set ++# CONFIG_DVB_TDA8083 is not set ++# CONFIG_DVB_TDA10086 is not set ++# CONFIG_DVB_TDA8261 is not set ++# CONFIG_DVB_VES1X93 is not set ++# CONFIG_DVB_TUNER_ITD1000 is not set ++# CONFIG_DVB_TUNER_CX24113 is not set ++# CONFIG_DVB_TDA826X is not set ++# CONFIG_DVB_TUA6100 is not set ++# CONFIG_DVB_CX24116 is not set ++# CONFIG_DVB_CX24117 is not set ++# CONFIG_DVB_CX24120 is not set ++# CONFIG_DVB_SI21XX is not set ++# CONFIG_DVB_TS2020 is not set ++# CONFIG_DVB_DS3000 is not set ++# CONFIG_DVB_MB86A16 is not set ++# CONFIG_DVB_TDA10071 is not set ++# CONFIG_DVB_SP8870 is not set ++# CONFIG_DVB_SP887X is not set ++# CONFIG_DVB_CX22700 is not set ++# CONFIG_DVB_CX22702 is not set ++# CONFIG_DVB_S5H1432 is not set ++# CONFIG_DVB_DRXD is not set ++# CONFIG_DVB_L64781 is not set ++# CONFIG_DVB_TDA1004X is not set ++# CONFIG_DVB_NXT6000 is not set ++# CONFIG_DVB_MT352 is not set ++# CONFIG_DVB_ZL10353 is not set ++# CONFIG_DVB_DIB3000MB is not set ++# CONFIG_DVB_DIB3000MC is not set ++# CONFIG_DVB_DIB7000M is not set ++# CONFIG_DVB_DIB7000P is not set ++# CONFIG_DVB_DIB9000 is not set ++# CONFIG_DVB_TDA10048 is not set ++# CONFIG_DVB_AF9013 is not set ++# CONFIG_DVB_EC100 is not set ++# CONFIG_DVB_STV0367 is not set ++# CONFIG_DVB_CXD2820R is not set ++# CONFIG_DVB_CXD2841ER is not set ++# CONFIG_DVB_RTL2830 is not set ++# CONFIG_DVB_RTL2832 is not set ++# CONFIG_DVB_RTL2832_SDR is not set ++# CONFIG_DVB_SI2168 is not set ++# CONFIG_DVB_ZD1301_DEMOD is not set ++# CONFIG_DVB_CXD2880 is not set ++# CONFIG_DVB_VES1820 is not set ++# CONFIG_DVB_TDA10021 is not set ++# CONFIG_DVB_TDA10023 is not set ++# CONFIG_DVB_STV0297 is not set ++# CONFIG_DVB_NXT200X is not set ++# CONFIG_DVB_OR51211 is not set ++# CONFIG_DVB_OR51132 is not set ++# CONFIG_DVB_BCM3510 is not set ++# CONFIG_DVB_LGDT330X is not set ++# CONFIG_DVB_LGDT3305 is not set ++# CONFIG_DVB_LGDT3306A is not set ++# CONFIG_DVB_LG2160 is not set ++# CONFIG_DVB_S5H1409 is not set ++# CONFIG_DVB_AU8522_DTV is not set ++# CONFIG_DVB_AU8522_V4L is not set ++# CONFIG_DVB_S5H1411 is not set ++# CONFIG_DVB_S921 is not set ++# CONFIG_DVB_DIB8000 is not set ++# CONFIG_DVB_MB86A20S is not set ++# CONFIG_DVB_TC90522 is not set ++# CONFIG_DVB_MN88443X is not set ++# CONFIG_DVB_PLL is not set ++# CONFIG_DVB_TUNER_DIB0070 is not set ++# CONFIG_DVB_TUNER_DIB0090 is not set ++# CONFIG_DVB_DRX39XYJ is not set ++# CONFIG_DVB_LNBH25 is not set ++# CONFIG_DVB_LNBH29 is not set ++# CONFIG_DVB_LNBP21 is not set ++# CONFIG_DVB_LNBP22 is not set ++# CONFIG_DVB_ISL6405 is not set ++# CONFIG_DVB_ISL6421 is not set ++# CONFIG_DVB_ISL6423 is not set ++# CONFIG_DVB_A8293 is not set ++# CONFIG_DVB_LGS8GL5 is not set ++# CONFIG_DVB_LGS8GXX is not set ++# CONFIG_DVB_ATBM8830 is not set ++# CONFIG_DVB_TDA665x is not set ++# CONFIG_DVB_IX2505V is not set ++# CONFIG_DVB_M88RS2000 is not set ++# CONFIG_DVB_AF9033 is not set ++# CONFIG_DVB_HORUS3A is not set ++# CONFIG_DVB_ASCOT2E is not set ++# CONFIG_DVB_HELENE is not set ++# CONFIG_DVB_CXD2099 is not set ++# CONFIG_DVB_SP2 is not set ++CONFIG_DRM=y ++CONFIG_DRM_PANEL_LVDS=y ++CONFIG_DRM_PANEL_SIMPLE=y ++CONFIG_DRM_PANEL_SEIKO_43WVF1G=y ++CONFIG_DRM_TI_TFP410=y ++CONFIG_FB_MXS=y ++CONFIG_FB_MXC_SYNC_PANEL=y ++CONFIG_FB_MXC_OVERLAY=y ++CONFIG_FB_MXC_MIPI_DSI_NORTHWEST=y ++CONFIG_FB_MXC_ADV7535=y ++CONFIG_FB_MXC_TRULY_PANEL_TFT3P5581E=y ++CONFIG_FB_MXC_TRULY_WVGA_SYNC_PANEL=y ++CONFIG_FB_MXC_RK_PANEL_RK055AHD042=y ++CONFIG_FB_MXC_RK_PANEL_RK055IQH042=y ++CONFIG_FB_MXC_MIPI_DSI_SAMSUNG=y ++CONFIG_FB_MXC_MIPI_DSI=y ++CONFIG_FB_MXC_LDB=y ++CONFIG_FB_MXC_EINK_PANEL=y ++CONFIG_FB_MXC_EINK_V2_PANEL=y ++CONFIG_FB_MXC_HDMI=y ++CONFIG_FB_MXS_SII902X=y ++CONFIG_FB_MXC_DCIC=y ++CONFIG_LCD_CLASS_DEVICE=y ++CONFIG_LCD_L4F00242T03=y ++CONFIG_LCD_PLATFORM=y ++CONFIG_BACKLIGHT_PWM=y ++CONFIG_BACKLIGHT_GPIO=y ++CONFIG_FRAMEBUFFER_CONSOLE=y ++CONFIG_LOGO=y ++CONFIG_SOUND=y ++CONFIG_SND=y ++# CONFIG_SND_DRIVERS is not set ++# CONFIG_SND_PCI is not set ++# CONFIG_SND_ARM is not set ++# CONFIG_SND_SPI is not set ++# CONFIG_SND_USB is not set ++CONFIG_SND_SOC=y ++CONFIG_SND_SOC_FSL_ASRC=y ++CONFIG_SND_SOC_FSL_SAI=y ++CONFIG_SND_SOC_FSL_MQS=y ++CONFIG_SND_SOC_FSL_RPMSG=y ++CONFIG_SND_IMX_SOC=y ++CONFIG_SND_SIMPLE_CARD=y ++CONFIG_HID_MULTITOUCH=y ++CONFIG_USB=y ++CONFIG_USB_ANNOUNCE_NEW_DEVICES=y ++CONFIG_USB_EHCI_HCD=y ++CONFIG_USB_EHCI_MXC=y ++CONFIG_USB_HCD_TEST_MODE=y ++CONFIG_USB_ACM=m ++CONFIG_USB_STORAGE=y ++CONFIG_USB_CHIPIDEA=y ++CONFIG_USB_CHIPIDEA_UDC=y ++CONFIG_USB_CHIPIDEA_HOST=y ++CONFIG_USB_SERIAL=m ++CONFIG_USB_SERIAL_GENERIC=y ++CONFIG_USB_SERIAL_FTDI_SIO=m ++CONFIG_USB_SERIAL_OPTION=m ++CONFIG_USB_TEST=m ++CONFIG_USB_EHSET_TEST_FIXTURE=m ++CONFIG_NOP_USB_XCEIV=y ++CONFIG_USB_MXS_PHY=y ++CONFIG_USB_GADGET=y ++CONFIG_USB_FSL_USB2=y ++CONFIG_USB_CONFIGFS=y ++CONFIG_USB_CONFIGFS_SERIAL=y ++CONFIG_USB_CONFIGFS_ACM=y ++CONFIG_USB_CONFIGFS_OBEX=y ++CONFIG_USB_CONFIGFS_NCM=y ++CONFIG_USB_CONFIGFS_ECM=y ++CONFIG_USB_CONFIGFS_ECM_SUBSET=y ++CONFIG_USB_CONFIGFS_RNDIS=y ++CONFIG_USB_CONFIGFS_EEM=y ++CONFIG_USB_CONFIGFS_MASS_STORAGE=y ++CONFIG_USB_CONFIGFS_F_LB_SS=y ++CONFIG_USB_CONFIGFS_F_FS=y ++CONFIG_USB_CONFIGFS_F_UAC1=y ++CONFIG_USB_CONFIGFS_F_UAC2=y ++CONFIG_USB_CONFIGFS_F_MIDI=y ++CONFIG_USB_CONFIGFS_F_HID=y ++CONFIG_USB_CONFIGFS_F_UVC=y ++CONFIG_USB_CONFIGFS_F_PRINTER=y ++CONFIG_USB_ZERO=m ++CONFIG_USB_AUDIO=m ++CONFIG_USB_ETH=m ++CONFIG_USB_G_NCM=m ++CONFIG_USB_GADGETFS=m ++CONFIG_USB_FUNCTIONFS=m ++CONFIG_USB_MASS_STORAGE=m ++CONFIG_USB_G_SERIAL=m ++CONFIG_MMC=y ++CONFIG_MMC_SDHCI=y ++CONFIG_MMC_SDHCI_PLTFM=y ++CONFIG_MMC_SDHCI_ESDHC_IMX=y ++CONFIG_NEW_LEDS=y ++CONFIG_LEDS_CLASS=y ++CONFIG_LEDS_GPIO=y ++CONFIG_LEDS_PWM=y ++CONFIG_LEDS_TRIGGERS=y ++CONFIG_LEDS_TRIGGER_TIMER=y ++CONFIG_LEDS_TRIGGER_ONESHOT=y ++CONFIG_LEDS_TRIGGER_HEARTBEAT=y ++CONFIG_LEDS_TRIGGER_BACKLIGHT=y ++CONFIG_LEDS_TRIGGER_GPIO=y ++CONFIG_LEDS_TRIGGER_DEFAULT_ON=y ++CONFIG_RTC_CLASS=y ++CONFIG_RTC_INTF_DEV_UIE_EMUL=y ++CONFIG_RTC_DRV_DS1307=y ++CONFIG_RTC_DRV_ISL1208=y ++CONFIG_RTC_DRV_PCF8523=y ++CONFIG_RTC_DRV_PCF8563=y ++CONFIG_RTC_DRV_M41T80=y ++CONFIG_RTC_DRV_RC5T619=y ++CONFIG_RTC_DRV_DA9063=y ++CONFIG_RTC_DRV_MC13XXX=y ++CONFIG_RTC_DRV_MXC=y ++CONFIG_RTC_DRV_MXC_V2=y ++CONFIG_RTC_DRV_SNVS=y ++CONFIG_RTC_DRV_IMX_RPMSG=y ++CONFIG_DMADEVICES=y ++CONFIG_FSL_EDMA=y ++CONFIG_IMX_SDMA=y ++CONFIG_MXS_DMA=y ++CONFIG_MXC_PXP_V2=y ++CONFIG_MXC_PXP_V3=y ++CONFIG_DMATEST=m ++CONFIG_STAGING=y ++CONFIG_STAGING_MEDIA=y ++CONFIG_COMMON_CLK_PWM=y ++CONFIG_MAILBOX=y ++CONFIG_REMOTEPROC=y ++CONFIG_IMX_REMOTEPROC=y ++CONFIG_EXTCON_USB_GPIO=y ++CONFIG_IIO=y ++CONFIG_IMX7D_ADC=y ++CONFIG_RN5T618_ADC=y ++CONFIG_VF610_ADC=y ++CONFIG_PWM=y ++CONFIG_PWM_FSL_FTM=y ++CONFIG_PWM_IMX27=y ++CONFIG_PWM_IMX_TPM=y ++CONFIG_PHY_MIXEL_LVDS=y ++CONFIG_PHY_MIXEL_LVDS_COMBO=y ++CONFIG_NVMEM_IMX_OCOTP=y ++CONFIG_NVMEM_SNVS_LPGPR=y ++CONFIG_TEE=y ++CONFIG_OPTEE=y ++CONFIG_MUX_MMIO=y ++CONFIG_SIOX=m ++CONFIG_SIOX_BUS_GPIO=m ++CONFIG_MXC_SIM=y ++CONFIG_MXC_IPU=y ++CONFIG_MXC_SIMv2=y ++CONFIG_MXC_MLB150=y ++CONFIG_MXC_IPU_V3_PRE=y ++CONFIG_MXC_HDMI_CEC=y ++CONFIG_MXC_MIPI_CSI2=y ++CONFIG_EXT2_FS=y ++CONFIG_EXT2_FS_XATTR=y ++CONFIG_EXT2_FS_POSIX_ACL=y ++CONFIG_EXT2_FS_SECURITY=y ++CONFIG_EXT3_FS=y ++CONFIG_EXT3_FS_POSIX_ACL=y ++CONFIG_EXT3_FS_SECURITY=y ++CONFIG_QUOTA=y ++CONFIG_QUOTA_NETLINK_INTERFACE=y ++# CONFIG_PRINT_QUOTA_WARNING is not set ++CONFIG_AUTOFS4_FS=y ++CONFIG_FUSE_FS=y ++CONFIG_OVERLAY_FS=y ++CONFIG_MSDOS_FS=y ++CONFIG_VFAT_FS=y ++CONFIG_EXFAT_FS=y ++CONFIG_NTFS_FS=y ++CONFIG_NTFS_RW=y ++CONFIG_TMPFS=y ++CONFIG_TMPFS_POSIX_ACL=y ++CONFIG_NFS_FS=y ++CONFIG_NFS_V3_ACL=y ++CONFIG_NFS_V4=y ++CONFIG_NFS_V4_1=y ++CONFIG_NFS_V4_2=y ++CONFIG_ROOT_NFS=y ++CONFIG_NLS_DEFAULT="cp437" ++CONFIG_NLS_CODEPAGE_437=y ++CONFIG_NLS_ASCII=y ++CONFIG_NLS_ISO8859_1=y ++CONFIG_NLS_ISO8859_15=m ++CONFIG_NLS_UTF8=y ++CONFIG_SECURITYFS=y ++CONFIG_CRYPTO_USER=y ++CONFIG_CRYPTO_TEST=m ++CONFIG_CRYPTO_ECHAINIV=m ++CONFIG_CRYPTO_TLS=m ++CONFIG_CRYPTO_CFB=m ++CONFIG_CRYPTO_CTS=m ++CONFIG_CRYPTO_LRW=m ++CONFIG_CRYPTO_OFB=m ++CONFIG_CRYPTO_PCBC=m ++CONFIG_CRYPTO_ESSIV=m ++CONFIG_CRYPTO_XCBC=m ++CONFIG_CRYPTO_VMAC=m ++CONFIG_CRYPTO_MD4=m ++CONFIG_CRYPTO_MD5=m ++CONFIG_CRYPTO_MICHAEL_MIC=y ++CONFIG_CRYPTO_RMD128=m ++CONFIG_CRYPTO_RMD160=m ++CONFIG_CRYPTO_RMD256=m ++CONFIG_CRYPTO_RMD320=m ++CONFIG_CRYPTO_SHA512=m ++CONFIG_CRYPTO_SHA3=m ++CONFIG_CRYPTO_SM3=m ++CONFIG_CRYPTO_STREEBOG=m ++CONFIG_CRYPTO_TGR192=m ++CONFIG_CRYPTO_WP512=m ++CONFIG_CRYPTO_ANUBIS=m ++CONFIG_CRYPTO_ARC4=m ++CONFIG_CRYPTO_BLOWFISH=m ++CONFIG_CRYPTO_CAMELLIA=m ++CONFIG_CRYPTO_CAST5=m ++CONFIG_CRYPTO_CAST6=m ++CONFIG_CRYPTO_DES=m ++CONFIG_CRYPTO_FCRYPT=m ++CONFIG_CRYPTO_KHAZAD=m ++CONFIG_CRYPTO_SALSA20=m ++CONFIG_CRYPTO_SEED=m ++CONFIG_CRYPTO_SERPENT=m ++CONFIG_CRYPTO_SM4=m ++CONFIG_CRYPTO_TEA=m ++CONFIG_CRYPTO_TWOFISH=m ++CONFIG_CRYPTO_DEFLATE=y ++CONFIG_CRYPTO_LZO=y ++CONFIG_CRYPTO_ZSTD=y ++CONFIG_CRYPTO_ANSI_CPRNG=m ++CONFIG_CRYPTO_USER_API_RNG=m ++CONFIG_CRYPTO_DEV_FSL_CAAM_SECVIO=m ++CONFIG_CRYPTO_DEV_FSL_CAAM=m ++CONFIG_CRYPTO_DEV_FSL_CAAM_SM_TEST=m ++CONFIG_CRYPTO_DEV_SAHARA=y ++CONFIG_CRYPTO_DEV_MXS_DCP=y ++CONFIG_CRC_CCITT=m ++CONFIG_CRC_T10DIF=y ++CONFIG_CRC_ITU_T=m ++CONFIG_CRC7=m ++CONFIG_LIBCRC32C=m ++CONFIG_DMA_CMA=y ++CONFIG_FONTS=y ++CONFIG_FONT_8x8=y ++CONFIG_FONT_8x16=y ++CONFIG_PRINTK_TIME=y ++# CONFIG_DEBUG_BUGVERBOSE is not set ++CONFIG_MAGIC_SYSRQ=y ++CONFIG_DEBUG_FS=y ++# CONFIG_SCHED_DEBUG is not set ++# CONFIG_DEBUG_PREEMPT is not set ++# CONFIG_FTRACE is not set +diff -Nuar -x include-prefixes -x logo_linux_clut224.ppm linux-imx/Makefile linux-imx-igkboard/Makefile +--- linux-imx/Makefile 2021-09-08 18:41:11.000000000 +0800 ++++ linux-imx-igkboard/Makefile 2021-12-22 19:45:15.333652470 +0800 +@@ -367,7 +367,8 @@ + # Alternatively CROSS_COMPILE can be set in the environment. + # Default value for CROSS_COMPILE is not to prefix executables + # Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile +-ARCH ?= $(SUBARCH) ++ARCH ?= arm ++CROSS_COMPILE?=/opt/buildroot/cortexA7/bin/arm-linux- + + # Architecture as present in compile.h + UTS_MACHINE := $(ARCH) +diff -Nuar -x include-prefixes -x logo_linux_clut224.ppm linux-imx/sound/soc/fsl/fsl_mqs.c linux-imx-igkboard/sound/soc/fsl/fsl_mqs.c +--- linux-imx/sound/soc/fsl/fsl_mqs.c 2021-09-08 18:41:11.000000000 +0800 ++++ linux-imx-igkboard/sound/soc/fsl/fsl_mqs.c 2021-12-18 21:41:22.474200827 +0800 +@@ -247,6 +247,8 @@ + &fsl_mqs_dai, 1); + if (ret) + goto err_free_gpr_np; ++ ++ printk("NXP mqs sound card driver register ok\n"); + return 0; + + err_free_gpr_np: +diff -Nuar -x include-prefixes -x logo_linux_clut224.ppm linux-imx/sound/soc/fsl/fsl_sai.c linux-imx-igkboard/sound/soc/fsl/fsl_sai.c +--- linux-imx/sound/soc/fsl/fsl_sai.c 2021-09-08 18:41:11.000000000 +0800 ++++ linux-imx-igkboard/sound/soc/fsl/fsl_sai.c 2021-12-18 21:41:22.474200827 +0800 +@@ -1349,7 +1349,7 @@ + sai->bus_clk = NULL; + } + +- for (i = 0; i < FSL_SAI_MCLK_MAX; i++) { ++ for (i = 1; i < FSL_SAI_MCLK_MAX; i++) { + sprintf(tmp, "mclk%d", i); + sai->mclk_clk[i] = devm_clk_get(&pdev->dev, tmp); + if (IS_ERR(sai->mclk_clk[i])) { diff --git a/yocto/meta-igkboard/recipes-kernel/linux/linux-imx-headers_5.10.bbappend b/yocto/meta-igkboard/recipes-kernel/linux/linux-imx-headers_5.10.bbappend new file mode 100644 index 0000000..4841d47 --- /dev/null +++ b/yocto/meta-igkboard/recipes-kernel/linux/linux-imx-headers_5.10.bbappend @@ -0,0 +1,4 @@ +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" + +SRCREV = "a11753a89ec610768301d4070e10b8bd60fde8cd" diff --git a/yocto/meta-igkboard/recipes-kernel/linux/linux-imx_5.10.bbappend b/yocto/meta-igkboard/recipes-kernel/linux/linux-imx_5.10.bbappend new file mode 100644 index 0000000..aa901d7 --- /dev/null +++ b/yocto/meta-igkboard/recipes-kernel/linux/linux-imx_5.10.bbappend @@ -0,0 +1,15 @@ +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" + +require recipes-kernel/linux/linux-yocto.inc + +SRCREV = "a11753a89ec610768301d4070e10b8bd60fde8cd" + +FILESEXTRAPATHS_prepend := "${THISDIR}/files:" +SRC_URI += " file://linux-imx-igkboard.patch " +PATCHTOOL = "patch" + +do_copy_defconfig_append() { + cp ${S}/arch/arm/configs/igkboard_defconfig ${WORKDIR}/defconfig + cp ${S}/arch/arm/configs/igkboard_defconfig ${B}/.config +} diff --git a/yocto/meta-igkboard/recipes-misc/expand-rootfs/expand-rootfs_1.0.bb b/yocto/meta-igkboard/recipes-misc/expand-rootfs/expand-rootfs_1.0.bb new file mode 100644 index 0000000..f817127 --- /dev/null +++ b/yocto/meta-igkboard/recipes-misc/expand-rootfs/expand-rootfs_1.0.bb @@ -0,0 +1,15 @@ +DESCRIPTION = "Expand rootfs space on MMC" + +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" + +FILESEXTRAPATHS_prepend := "${THISDIR}/files:" +SRC_URI += " file://expand_rootfs " +FILES_${PN} += "${sbindir}/expand_rootfs" + +do_install() { + install -d ${D}/${sbindir}/ + install -m 0755 ${WORKDIR}/expand_rootfs ${D}/${sbindir}/ +} + +RDEPENDS_expand-rootfs = "bash e2fsprogs util-linux" diff --git a/yocto/meta-igkboard/recipes-misc/expand-rootfs/files/expand_rootfs b/yocto/meta-igkboard/recipes-misc/expand-rootfs/files/expand_rootfs new file mode 100644 index 0000000..755f0c5 --- /dev/null +++ b/yocto/meta-igkboard/recipes-misc/expand-rootfs/files/expand_rootfs @@ -0,0 +1,30 @@ +#!/bin/bash + +set -e +set -u + +# find the root partition information +ROOT_PART="$(mount | sed -n 's|^/dev/\(.*\) on / .*|\1|p')" +ROOT_DEV="/dev/$(lsblk -no pkname /dev/${ROOT_PART})" +PART_NUM="$(echo $ROOT_PART | grep -o "[[:digit:]]*$")" + +# Get the starting offset of the root partition +PART_START=$(fdisk -l $ROOT_DEV | grep $ROOT_PART | awk '{print $2}') +[ "$PART_START" ] || return 1 ; + +fdisk "$ROOT_DEV" > /dev/null 2>&1 <<EOF +p +d +$PART_NUM +n +p +$PART_NUM +$PART_START + +p +w +EOF + +resize2fs /dev/$ROOT_PART > /dev/null 2>&1 + +echo "Expand rootfs size successfully, it will be enlarged upon the next reboot." diff --git a/yocto/meta-igkboard/recipes-misc/packagegroups/packagegroup-misc-utils.bb b/yocto/meta-igkboard/recipes-misc/packagegroups/packagegroup-misc-utils.bb new file mode 100644 index 0000000..90ca4b8 --- /dev/null +++ b/yocto/meta-igkboard/recipes-misc/packagegroups/packagegroup-misc-utils.bb @@ -0,0 +1,6 @@ +SUMMARY = "Useradd system service and system shell scripts tools package" +PR = "r1" + +inherit packagegroup + +RDEPENDS_${PN} = "expand-rootfs sshswitch wpa-conf" diff --git a/yocto/meta-igkboard/recipes-misc/sshswitch/files/sshswitch.service b/yocto/meta-igkboard/recipes-misc/sshswitch/files/sshswitch.service new file mode 100644 index 0000000..c6470fc --- /dev/null +++ b/yocto/meta-igkboard/recipes-misc/sshswitch/files/sshswitch.service @@ -0,0 +1,11 @@ +[Unit] +Description=Turn on SSH if /run/media/mmcblk1p1/ssh is present +ConditionPathExists=/run/media/mmcblk1p1/ssh +After=weston.service + +[Service] +Type=oneshot +ExecStart=/bin/sh -c "/bin/sed -i 's/^#PermitRootLogin.*/PermitRootLogin yes/g' /etc/ssh/sshd_config && rm -f /run/media/mmcblk1p1/ssh" + +[Install] +WantedBy=multi-user.target diff --git a/yocto/meta-igkboard/recipes-misc/sshswitch/sshswitch_1.0.bb b/yocto/meta-igkboard/recipes-misc/sshswitch/sshswitch_1.0.bb new file mode 100644 index 0000000..47cebd0 --- /dev/null +++ b/yocto/meta-igkboard/recipes-misc/sshswitch/sshswitch_1.0.bb @@ -0,0 +1,17 @@ +DESCRIPTION = "Turn on SSH if /boot/ssh is present" + +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" + +inherit systemd + +SYSTEMD_AUTO_ENABLE = "enable" +SYSTEMD_SERVICE_${PN} = "sshswitch.service" + +SRC_URI += " file://sshswitch.service " +FILES_${PN} += "${systemd_unitdir}/system/sshswitch.service" + +do_install() { + install -d ${D}/${systemd_unitdir}/system + install -m 0644 ${WORKDIR}/sshswitch.service ${D}/${systemd_unitdir}/system +} diff --git a/yocto/meta-igkboard/recipes-misc/wpa-conf/files/wpa-conf.service b/yocto/meta-igkboard/recipes-misc/wpa-conf/files/wpa-conf.service new file mode 100644 index 0000000..b994d23 --- /dev/null +++ b/yocto/meta-igkboard/recipes-misc/wpa-conf/files/wpa-conf.service @@ -0,0 +1,15 @@ +[Unit] +Description=Copy user wpa_supplicant.conf +ConditionPathExists=/run/media/mmcblk1p1/wpa_supplicant.conf +After=weston.service + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStartPre=/bin/mkdir -p /etc/wpa_supplicant/ +ExecStart=/bin/mv /run/media/mmcblk1p1/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant-wlan0.conf +ExecStartPost=/bin/chmod 600 /etc/wpa_supplicant/wpa_supplicant-wlan0.conf +ExecStartPost=/bin/sh -c "systemctl enable --now wpa_supplicant@wlan0" + +[Install] +WantedBy=multi-user.target diff --git a/yocto/meta-igkboard/recipes-misc/wpa-conf/wpa-conf_1.0.bb b/yocto/meta-igkboard/recipes-misc/wpa-conf/wpa-conf_1.0.bb new file mode 100644 index 0000000..b9f8288 --- /dev/null +++ b/yocto/meta-igkboard/recipes-misc/wpa-conf/wpa-conf_1.0.bb @@ -0,0 +1,17 @@ +DESCRIPTION = "Copy user wpa_supplicant.conf" + +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6" + +inherit systemd + +SYSTEMD_AUTO_ENABLE = "enable" +SYSTEMD_SERVICE_${PN} = "wpa-conf.service" + +SRC_URI += " file://wpa-conf.service " +FILES_${PN} += "${systemd_unitdir}/system/wpa-conf.service" + +do_install() { + install -d ${D}/${systemd_unitdir}/system + install -m 0644 ${WORKDIR}/wpa-conf.service ${D}/${systemd_unitdir}/system +} diff --git a/yocto/meta-igkboard/tools/igkboard-setup.sh b/yocto/meta-igkboard/tools/igkboard-setup.sh new file mode 100644 index 0000000..c7c587b --- /dev/null +++ b/yocto/meta-igkboard/tools/igkboard-setup.sh @@ -0,0 +1,178 @@ +#!/bin/bash + +CWD=$(pwd) + +function log_error(){ + echo -ne "\e[31m $1 \e[0m\n" +} + +function usage(){ + echo "Usage:" + echo " MACHINE=<machine> source igkboard-setup.sh <build-dir>" + echo "Options:" + echo " <machine> machine name" + echo " - igkboard" + echo " * [-b build-dir]: Build directory, if unspecified script uses 'build' as output directory" + echo " * [-h]: help" + echo "Examples: " + echo "$ MACHINE=igkboard source sources/meta-igkboard/tools/igkboard-setup.sh -b igkboard" + echo +} + +function cleanup_EULA(){ + cd $CWD/sources/meta-freescale + if [ -h EULA ]; then + echo Cleanup meta-freescale/EULA... + git checkout -- EULA + fi + if [ ! -f classes/fsl-eula-unpack.bbclass ]; then + echo Cleanup meta-freescale/classes/fsl-eula-unpack.bbclass... + git checkout -- classes/fsl-eula-unpack.bbclass + fi + cd - +} + +function file_override() { + source_path=$1 + override_root=$2 + if [ -f $source_path ]; then + override_path=$override_root/`basename $source_path` + if [ -f $override_path ]; then + echo "\ + +WARNING: The file '$CWD/$source_path' is replacing the upstream file '$CWD/$override_path'. \ +Overrides by file replacement are error-prone and discouraged. Please find an \ +alternative override mechanism that uses meta-data only. +" + rm $override_path + fi + fi +} + +function machine_overrides() { + layer=$1 + upstream_layer=$2 + machines="../sources/$layer/conf/machine/*" + machine_includes="../sources/$layer/conf/machine/include/*" + for machine in $machines; do + file_override $machine ../sources/$upstream_layer/conf/machine + done + for machine_include in $machine_includes; do + file_override $machine_include ../sources/$upstream_layer/conf/machine/include + done +} + +function bbclass_overrides() { + layer=$1 + upstream_layer=$2 + bbclasses="../sources/$layer/classes/*" + for bbclass in $bbclasses; do + file_override $bbclass ../sources/$upstream_layer/classes + done +} + +function hook_in_layer() { + layer=$1 + shift + if [ "$1" = "" ]; then + upstream_layers="meta-freescale" + else + upstream_layers="$@" + fi + + # echo "BBLAYERS += \"\${BSPDIR}/sources/$layer\"" >> conf/bblayers.conf + for upstream_layer in $upstream_layers; do + machine_overrides $layer $upstream_layer + bbclass_overrides $layer $upstream_layer + done +} + +function igkboard_conf_set(){ + local build_dir=$1 + if [ $MACHINE == "igkboard" ];then + cp $CWD/sources/meta-igkboard/conf/local.conf $CWD/${build_dir}/conf/local.conf + cp $CWD/sources/meta-igkboard/conf/bblayers.conf $CWD/${build_dir}/conf/bblayers.conf + fi +} + +function run(){ + local build_dir=$1 + local oeroot=$CWD/sources/poky + if [ -e $CWD/sources/oe-core ]; then + oeroot=$CWD/sources/oe-core + fi + . $oeroot/oe-init-build-env $CWD/$build_dir > /dev/null + if [ ! -e conf/local.conf ]; then + log_error "oe-init-build-env does not generated." + exit -1 + fi + igkboard_conf_set $build_dir + + # Clean up PATH, because if it includes tokens to current directories somehow, + # wrong binaries can be used instead of the expected ones during task execution + export PATH="`echo $PATH | sed 's/\(:.\|:\)*:/:/g;s/^.\?://;s/:.\?$//'`" + + cat <<EOF + Welcome LingYun IoT Gateway Kit Board Yocto BSP + + The Yocto Project has extensive documentation about OE including a + reference manual which can be found at: + http://yoctoproject.org/documentation + + You can now run 'bitbake <target>' + + Common targets are: + linuxsys-image + core-image-minimal + imx-image-full + +EOF + + hook_in_layer meta-imx/meta-bsp + hook_in_layer meta-imx/meta-sdk + hook_in_layer meta-nxp-demo-experience +} + +function start(){ + if [ "$(whoami)" = "root" ]; then + echo "ERROR: do not use the BSP as root. Exiting..." + exit -1 + fi + local BUILD_DIR; + local OLD_OPTIND=$OPTIND + + while getopts "b:h" fsl_setup_flag + do + case $fsl_setup_flag in + b) + BUILD_DIR="$OPTARG"; + echo -e "\n Build directory is " $BUILD_DIR + ;; + h) + usage + exit -1 + ;; + \?) + usage + exit -1;; + esac + done + shift $((OPTIND-1)) + + OPTIND=$OLD_OPTIND + + if [ -z "$BUILD_DIR" ]; then + BUILD_DIR='build' + fi + if [ -z "$MACHINE" ]; then + echo setting to default machine + MACHINE='igkboard' + fi + cleanup_EULA; + + mkdir -p $BUILD_DIR + run $BUILD_DIR +} + +start $@ + -- Gitblit v1.9.1