You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by da...@apache.org on 2021/04/14 21:57:36 UTC

[incubator-nuttx] branch master updated (0030c20 -> 7813b4f)

This is an automated email from the ASF dual-hosted git repository.

davids5 pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git.


    from 0030c20  boards/esp32-wrover-kit: Remove deprecated README documentation
     new 33b071e  MIMXRT1064-EVK support
     new 4e50ba1  Removing some none existing configurations from the default
     new f5d22cc  Change ALL copyright from Greg and David to apache since they already sign SGA or ICLA
     new a4857d7  Removing some none existing initialization.
     new 2f92ecc  Fixed comment lengths
     new 0c4d66d  FlexSPI NOR driver added
     new e250006  FlexSPI NOR missing config and pin iomux
     new e32d186  Removing MMCEN pin setting from LPSPI1
     new c12ccfc  Copy .ARM.exidx together with .text to make linker happy
     new 61b0e53  Default config without flexspi and mtd
     new 7813b4f  Refreshing default configs

The 11 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 arch/arm/include/imxrt/chip.h                      |    6 +-
 arch/arm/src/imxrt/Kconfig                         |   10 +
 boards/Kconfig                                     |   14 +
 .../imxrt1020-evk/src/imxrt_flexspi_nor_flash.c    |    3 +-
 .../imxrt1020-evk/src/imxrt_flexspi_nor_flash.h    |    2 +-
 .../imxrt1050-evk/src/imxrt_flexspi_nor_flash.c    |    2 +-
 .../imxrt1050-evk/src/imxrt_flexspi_nor_flash.h    |    2 +-
 .../imxrt1060-evk/src/imxrt_flexspi_nor_flash.c    |    2 +-
 .../imxrt1060-evk/src/imxrt_flexspi_nor_flash.h    |    2 +-
 boards/arm/imxrt/imxrt1064-evk/Kconfig             |   27 +
 boards/arm/imxrt/imxrt1064-evk/README.txt          |  363 ++++++
 .../arm/imxrt/imxrt1064-evk/configs/can/defconfig  |   78 ++
 .../imxrt/imxrt1064-evk/configs/canfd/defconfig    |   79 ++
 .../configs/knsh/Make.defs                         |    0
 .../arm/imxrt/imxrt1064-evk/configs/knsh/defconfig |   44 +
 .../configs/libcxxtest/Make.defs                   |    0
 .../imxrt1064-evk/configs/libcxxtest/defconfig     |   40 +
 .../arm/imxrt/imxrt1064-evk/configs/lvgl/defconfig |   62 +
 .../imxrt/imxrt1064-evk/configs/netnsh/defconfig   |   72 ++
 .../arm/imxrt/imxrt1064-evk/configs/nsh/defconfig  |   38 +
 .../imxrt/imxrt1064-evk/configs/nshocram/defconfig |   43 +
 boards/arm/imxrt/imxrt1064-evk/include/board.h     |  372 ++++++
 boards/arm/imxrt/imxrt1064-evk/kernel/Makefile     |  103 ++
 .../imxrt/imxrt1064-evk/kernel/imxrt_userspace.c   |  116 ++
 boards/arm/imxrt/imxrt1064-evk/scripts/Make.defs   |   83 ++
 .../arm/imxrt/imxrt1064-evk/scripts/flash-ocram.ld |  186 +++
 boards/arm/imxrt/imxrt1064-evk/scripts/flash.ld    |  139 +++
 .../imxrt/imxrt1064-evk/scripts/kernel-space.ld    |  104 ++
 boards/arm/imxrt/imxrt1064-evk/scripts/memory.ld   |   67 +
 .../arm/imxrt/imxrt1064-evk/scripts/user-space.ld  |  120 ++
 boards/arm/imxrt/imxrt1064-evk/src/Makefile        |   89 ++
 boards/arm/imxrt/imxrt1064-evk/src/imxrt1064-evk.h |  321 +++++
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_adc.c     |  140 +++
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_appinit.c |   91 ++
 .../arm/imxrt/imxrt1064-evk/src/imxrt_autoleds.c   |  165 +++
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_boot.c    |  117 ++
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_bringup.c |  292 +++++
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_buttons.c |  177 +++
 .../arm/imxrt/imxrt1064-evk/src/imxrt_ethernet.c   |  275 ++++
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexcan.c |   83 ++
 .../imxrt/imxrt1064-evk/src/imxrt_flexspi_nor.c    |  701 +++++++++++
 .../imxrt1064-evk/src/imxrt_flexspi_nor_boot.c     |   58 +
 .../imxrt1064-evk/src/imxrt_flexspi_nor_boot.h     |  168 +++
 .../imxrt1064-evk/src/imxrt_flexspi_nor_flash.c    |  120 ++
 .../src/imxrt_flexspi_nor_flash.h                  |   62 +-
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_ft5x06.c  |  258 ++++
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_gpio.c    |  236 ++++
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_lcd.c     |   93 ++
 .../arm/imxrt/imxrt1064-evk/src/imxrt_mmcsd_spi.c  |  124 ++
 .../imxrt/imxrt1064-evk/src/imxrt_sdram_ini_dcd.c  | 1313 ++++++++++++++++++++
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_spi.c     |  212 ++++
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_usbhost.c |  299 +++++
 .../arm/imxrt/imxrt1064-evk/src/imxrt_userleds.c   |   84 ++
 tools/ci/testlist/arm-02.dat                       |    1 +
 54 files changed, 7621 insertions(+), 37 deletions(-)
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/Kconfig
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/README.txt
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/configs/can/defconfig
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/configs/canfd/defconfig
 copy boards/arm/imxrt/{imxrt1060-evk => imxrt1064-evk}/configs/knsh/Make.defs (100%)
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/configs/knsh/defconfig
 copy boards/arm/imxrt/{imxrt1060-evk => imxrt1064-evk}/configs/libcxxtest/Make.defs (100%)
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/configs/libcxxtest/defconfig
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/configs/lvgl/defconfig
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/configs/netnsh/defconfig
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/configs/nsh/defconfig
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/configs/nshocram/defconfig
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/include/board.h
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/kernel/Makefile
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/kernel/imxrt_userspace.c
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/scripts/Make.defs
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/scripts/flash-ocram.ld
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/scripts/flash.ld
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/scripts/kernel-space.ld
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/scripts/memory.ld
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/scripts/user-space.ld
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/src/Makefile
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/src/imxrt1064-evk.h
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/src/imxrt_adc.c
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/src/imxrt_appinit.c
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/src/imxrt_autoleds.c
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/src/imxrt_boot.c
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/src/imxrt_bringup.c
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/src/imxrt_buttons.c
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/src/imxrt_ethernet.c
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexcan.c
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor.c
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_boot.c
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_boot.h
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_flash.c
 copy boards/arm/imxrt/{imxrt1060-evk => imxrt1064-evk}/src/imxrt_flexspi_nor_flash.h (86%)
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/src/imxrt_ft5x06.c
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/src/imxrt_gpio.c
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/src/imxrt_lcd.c
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/src/imxrt_mmcsd_spi.c
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/src/imxrt_sdram_ini_dcd.c
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/src/imxrt_spi.c
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/src/imxrt_usbhost.c
 create mode 100644 boards/arm/imxrt/imxrt1064-evk/src/imxrt_userleds.c

[incubator-nuttx] 09/11: Copy .ARM.exidx together with .text to make linker happy

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

davids5 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit c12ccfc80b4ab64489f8fa523e127ca77bf47df4
Author: jturnsek <je...@gmail.com>
AuthorDate: Tue Apr 13 08:18:32 2021 +0200

    Copy .ARM.exidx together with .text to make linker happy
---
 boards/arm/imxrt/imxrt1064-evk/scripts/flash-ocram.ld | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/boards/arm/imxrt/imxrt1064-evk/scripts/flash-ocram.ld b/boards/arm/imxrt/imxrt1064-evk/scripts/flash-ocram.ld
index 3685e8b..eb31e64 100644
--- a/boards/arm/imxrt/imxrt1064-evk/scripts/flash-ocram.ld
+++ b/boards/arm/imxrt/imxrt1064-evk/scripts/flash-ocram.ld
@@ -129,14 +129,14 @@ SECTIONS
     .ARM.extab :
     {
         *(.ARM.extab*)
-    } > flash
+    } > sram AT > flash
 
     .ARM.exidx :
     {
         __exidx_start = ABSOLUTE(.);
         *(.ARM.exidx*)
         __exidx_end = ABSOLUTE(.);
-    } > flash
+    } > sram AT > flash
 
     _eronly = ABSOLUTE(.);
 

[incubator-nuttx] 08/11: Removing MMCEN pin setting from LPSPI1

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

davids5 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit e32d18673974fd7502b9746a02d80d9b563e8df4
Author: jturnsek <je...@gmail.com>
AuthorDate: Mon Apr 12 14:09:28 2021 +0200

    Removing MMCEN pin setting from LPSPI1
---
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_spi.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_spi.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_spi.c
index 241785e..b87f35d 100644
--- a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_spi.c
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_spi.c
@@ -59,7 +59,6 @@ void weak_function imxrt_spidev_initialize(void)
 {
 #ifdef CONFIG_IMXRT_LPSPI1
   imxrt_config_gpio(GPIO_LPSPI1_CS); /* LPSPI1 chip select */
-  imxrt_config_gpio(GPIO_MMCSD_EN);
 #endif
 #ifdef CONFIG_IMXRT_LPSPI3
   imxrt_config_gpio(GPIO_LPSPI3_CS); /* LPSPI3 chip select */

[incubator-nuttx] 01/11: MIMXRT1064-EVK support

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

davids5 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit 33b071ecb9c998521d390c46cf194f5049cfeae0
Author: jturnsek <je...@gmail.com>
AuthorDate: Tue Apr 6 21:19:41 2021 +0200

    MIMXRT1064-EVK support
---
 arch/arm/include/imxrt/chip.h                      |    6 +-
 arch/arm/src/imxrt/Kconfig                         |   10 +
 boards/Kconfig                                     |   14 +
 .../imxrt1020-evk/src/imxrt_flexspi_nor_flash.c    |    3 +-
 .../imxrt1020-evk/src/imxrt_flexspi_nor_flash.h    |    2 +-
 .../imxrt1050-evk/src/imxrt_flexspi_nor_flash.c    |    2 +-
 .../imxrt1050-evk/src/imxrt_flexspi_nor_flash.h    |    2 +-
 .../imxrt1060-evk/src/imxrt_flexspi_nor_flash.c    |    2 +-
 .../imxrt1060-evk/src/imxrt_flexspi_nor_flash.h    |    2 +-
 boards/arm/imxrt/imxrt1064-evk/Kconfig             |   27 +
 boards/arm/imxrt/imxrt1064-evk/README.txt          |  363 ++++++
 .../arm/imxrt/imxrt1064-evk/configs/can/defconfig  |   79 ++
 .../imxrt/imxrt1064-evk/configs/canfd/defconfig    |   80 ++
 .../arm/imxrt/imxrt1064-evk/configs/knsh/Make.defs |   77 ++
 .../arm/imxrt/imxrt1064-evk/configs/knsh/defconfig |   45 +
 .../imxrt1064-evk/configs/libcxxtest/Make.defs     |  104 ++
 .../imxrt1064-evk/configs/libcxxtest/defconfig     |   41 +
 .../arm/imxrt/imxrt1064-evk/configs/lvgl/defconfig |   63 +
 .../imxrt/imxrt1064-evk/configs/netnsh/defconfig   |   73 ++
 .../arm/imxrt/imxrt1064-evk/configs/nsh/defconfig  |   42 +
 .../imxrt/imxrt1064-evk/configs/nshocram/defconfig |   44 +
 boards/arm/imxrt/imxrt1064-evk/include/board.h     |  372 ++++++
 boards/arm/imxrt/imxrt1064-evk/kernel/Makefile     |  103 ++
 .../imxrt/imxrt1064-evk/kernel/imxrt_userspace.c   |  131 ++
 boards/arm/imxrt/imxrt1064-evk/scripts/Make.defs   |   83 ++
 .../arm/imxrt/imxrt1064-evk/scripts/flash-ocram.ld |  202 +++
 boards/arm/imxrt/imxrt1064-evk/scripts/flash.ld    |  139 ++
 .../imxrt/imxrt1064-evk/scripts/kernel-space.ld    |  120 ++
 boards/arm/imxrt/imxrt1064-evk/scripts/memory.ld   |   83 ++
 .../arm/imxrt/imxrt1064-evk/scripts/user-space.ld  |  136 ++
 boards/arm/imxrt/imxrt1064-evk/src/Makefile        |   85 ++
 boards/arm/imxrt/imxrt1064-evk/src/imxrt1064-evk.h |  337 +++++
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_adc.c     |  167 +++
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_appinit.c |  107 ++
 .../arm/imxrt/imxrt1064-evk/src/imxrt_autoleds.c   |  181 +++
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_boot.c    |  133 ++
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_bringup.c |  307 +++++
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_buttons.c |  177 +++
 .../arm/imxrt/imxrt1064-evk/src/imxrt_ethernet.c   |  291 +++++
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexcan.c |   83 ++
 .../imxrt1064-evk/src/imxrt_flexspi_nor_boot.c     |   73 ++
 .../imxrt1064-evk/src/imxrt_flexspi_nor_boot.h     |  184 +++
 .../imxrt1064-evk/src/imxrt_flexspi_nor_flash.c    |  136 ++
 .../src/imxrt_flexspi_nor_flash.h                  |  102 +-
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_ft5x06.c  |  258 ++++
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_gpio.c    |  236 ++++
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_lcd.c     |  108 ++
 .../arm/imxrt/imxrt1064-evk/src/imxrt_mmcsd_spi.c  |  138 ++
 .../imxrt/imxrt1064-evk/src/imxrt_sdram_ini_dcd.c  | 1326 ++++++++++++++++++++
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_spi.c     |  229 ++++
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_usbhost.c |  314 +++++
 .../arm/imxrt/imxrt1064-evk/src/imxrt_userleds.c   |  100 ++
 52 files changed, 7473 insertions(+), 49 deletions(-)

diff --git a/arch/arm/include/imxrt/chip.h b/arch/arm/include/imxrt/chip.h
index 6c3422d..66d6148 100644
--- a/arch/arm/include/imxrt/chip.h
+++ b/arch/arm/include/imxrt/chip.h
@@ -64,11 +64,15 @@
 #elif defined(CONFIG_ARCH_CHIP_MIMXRT1061DVL6A) || \
       defined(CONFIG_ARCH_CHIP_MIMXRT1061CVL5A) || \
       defined(CONFIG_ARCH_CHIP_MIMXRT1062DVL6A) || \
-      defined(CONFIG_ARCH_CHIP_MIMXRT1062CVL5A)
+      defined(CONFIG_ARCH_CHIP_MIMXRT1062CVL5A) || \
+      defined(CONFIG_ARCH_CHIP_MIMXRT1064DVL6A) || \
+      defined(CONFIG_ARCH_CHIP_MIMXRT1064CVL5A)
 /* MIMXRT1061CVL5A - Industrial, Reduced Features, 528MHz
  * MIMXRT1061DVL6A - Consumer, Reduced Features, 600MHz
  * MIMXRT1062CVL5A - Industrial, Full Feature, 528MHz
  * MIMXRT1062DVL6A - Consumer, Full Feature, 600MHz
+ * MIMXRT1064CVL5A - Industrial, Full Feature, 528MHz
+ * MIMXRT1064DVL6A - Consumer, Full Feature, 600MHz
  */
 
 #  define IMXRT_OCRAM_SIZE            (1024 * 1024) /* 1024Kb OCRAM */
diff --git a/arch/arm/src/imxrt/Kconfig b/arch/arm/src/imxrt/Kconfig
index f7e026b..4cff2b4 100644
--- a/arch/arm/src/imxrt/Kconfig
+++ b/arch/arm/src/imxrt/Kconfig
@@ -64,6 +64,16 @@ config ARCH_CHIP_MIMXRT1062CVL5A
 	select ARCH_FAMILY_MIMXRT106xCVL5A
 	select IMXRT_HAVE_LCD
 
+config ARCH_CHIP_MIMXRT1064DVL6A
+	bool "MIMXRT1064DVL6A"
+	select ARCH_FAMILY_MXRT106xDVL6A
+	select IMXRT_HAVE_LCD
+
+config ARCH_CHIP_MIMXRT1064CVL5A
+	bool "MIMXRT1064DVL6A"
+	select ARCH_FAMILY_MIMXRT106xCVL5A
+	select IMXRT_HAVE_LCD
+
 endchoice # i.MX RT Chip Selection
 
 # i.MX RT Families
diff --git a/boards/Kconfig b/boards/Kconfig
index e229027..643ccaa 100644
--- a/boards/Kconfig
+++ b/boards/Kconfig
@@ -401,6 +401,16 @@ config ARCH_BOARD_IMXRT1060_EVK
 		This is the board configuration for the port of NuttX to the NXP i.MXRT
 		evaluation kit, MIMXRT1060-EVK.  This board features the MIMXRT1062DVL6A MCU.
 
+config ARCH_BOARD_IMXRT1064_EVK
+	bool "NXP i.MX RT 1064 EVK"
+	depends on ARCH_CHIP_MIMXRT1064DVL6A
+	select ARCH_HAVE_LEDS
+	select ARCH_HAVE_BUTTONS
+	select ARCH_HAVE_IRQBUTTONS
+	---help---
+		This is the board configuration for the port of NuttX to the NXP i.MXRT
+		evaluation kit, MIMXRT1064-EVK.  This board features the MIMXRT1064DVL6A MCU.
+
 config ARCH_BOARD_LC823450_XGEVK
 	bool "ON Semiconductor LC823450-XGEVK development board"
 	depends on ARCH_CHIP_LC823450
@@ -2281,6 +2291,7 @@ config ARCH_BOARD
 	default "imxrt1020-evk"            if ARCH_BOARD_IMXRT1020_EVK
 	default "imxrt1050-evk"            if ARCH_BOARD_IMXRT1050_EVK
 	default "imxrt1060-evk"            if ARCH_BOARD_IMXRT1060_EVK
+	default "imxrt1064-evk"            if ARCH_BOARD_IMXRT1064_EVK
 	default "kwikstik-k40"             if ARCH_BOARD_KWIKSTIK_K40
 	default "launchxl-cc1310"          if ARCH_BOARD_LAUNCHXL_CC1310
 	default "launchxl-cc1312r1"        if ARCH_BOARD_LAUNCHXL_CC1312R1
@@ -2558,6 +2569,9 @@ endif
 if ARCH_BOARD_IMXRT1060_EVK
 source "boards/arm/imxrt/imxrt1060-evk/Kconfig"
 endif
+if ARCH_BOARD_IMXRT1064_EVK
+source "boards/arm/imxrt/imxrt1064-evk/Kconfig"
+endif
 if ARCH_BOARD_TEENSY_4X
 source "boards/arm/imxrt/teensy-4.x/Kconfig"
 endif
diff --git a/boards/arm/imxrt/imxrt1020-evk/src/imxrt_flexspi_nor_flash.c b/boards/arm/imxrt/imxrt1020-evk/src/imxrt_flexspi_nor_flash.c
index f916b22..e19673d 100644
--- a/boards/arm/imxrt/imxrt1020-evk/src/imxrt_flexspi_nor_flash.c
+++ b/boards/arm/imxrt/imxrt1020-evk/src/imxrt_flexspi_nor_flash.c
@@ -65,8 +65,7 @@ const struct flexspi_nor_config_s g_flash_config =
   {
     .tag                     = FLEXSPI_CFG_BLK_TAG,
     .version                 = FLEXSPI_CFG_BLK_VERSION,
-    .read_sample_clksrc      =
-                    FLASH_READ_SAMPLE_CLK_EXTERNALINPUT_FROM_DQSPAD,
+    .read_sample_clksrc      = FLASH_READ_SAMPLE_CLK_EXT_INPUT_FROM_DQSPAD,
     .cs_hold_time            = 3u,
     .cs_setup_time           = 3u,
     .column_address_width    = 3u,
diff --git a/boards/arm/imxrt/imxrt1020-evk/src/imxrt_flexspi_nor_flash.h b/boards/arm/imxrt/imxrt1020-evk/src/imxrt_flexspi_nor_flash.h
index c7987da..1ccc4f8 100644
--- a/boards/arm/imxrt/imxrt1020-evk/src/imxrt_flexspi_nor_flash.h
+++ b/boards/arm/imxrt/imxrt1020-evk/src/imxrt_flexspi_nor_flash.h
@@ -224,7 +224,7 @@ enum flash_read_sample_clk_e
   FLASH_READ_SAMPLE_CLK_LOOPBACK_INTERNELLY = 0,
   FLASH_READ_SAMPLE_CLK_LOOPBACK_FROM_DQSPAD = 1,
   FLASH_READ_SAMPLE_CLK_LOOPBACK_FROM_SCKPAD = 2,
-  FLASH_READ_SAMPLE_CLK_EXTERNALINPUT_FROM_DQSPAD = 3,
+  FLASH_READ_SAMPLE_CLK_EXT_INPUT_FROM_DQSPAD = 3,
 };
 
 /*  Misc feature bit definitions */
diff --git a/boards/arm/imxrt/imxrt1050-evk/src/imxrt_flexspi_nor_flash.c b/boards/arm/imxrt/imxrt1050-evk/src/imxrt_flexspi_nor_flash.c
index 524dfd1..0851358 100644
--- a/boards/arm/imxrt/imxrt1050-evk/src/imxrt_flexspi_nor_flash.c
+++ b/boards/arm/imxrt/imxrt1050-evk/src/imxrt_flexspi_nor_flash.c
@@ -36,7 +36,7 @@ const struct flexspi_nor_config_s g_flash_config =
   {
     .tag                   = FLEXSPI_CFG_BLK_TAG,
     .version               = FLEXSPI_CFG_BLK_VERSION,
-    .read_sample_clksrc    = FLASH_READ_SAMPLE_CLK_EXTERNALINPUT_FROM_DQSPAD,
+    .read_sample_clksrc    = FLASH_READ_SAMPLE_CLK_EXT_INPUT_FROM_DQSPAD,
     .cs_hold_time          = 3u,
     .cs_setup_time         = 3u,
     .column_address_width  = 3u,
diff --git a/boards/arm/imxrt/imxrt1050-evk/src/imxrt_flexspi_nor_flash.h b/boards/arm/imxrt/imxrt1050-evk/src/imxrt_flexspi_nor_flash.h
index 3f31942..71dc5b4 100644
--- a/boards/arm/imxrt/imxrt1050-evk/src/imxrt_flexspi_nor_flash.h
+++ b/boards/arm/imxrt/imxrt1050-evk/src/imxrt_flexspi_nor_flash.h
@@ -222,7 +222,7 @@ enum flash_read_sample_clk_e
   FLASH_READ_SAMPLE_CLK_LOOPBACK_INTERNELLY = 0,
   FLASH_READ_SAMPLE_CLK_LOOPBACK_FROM_DQSPAD = 1,
   FLASH_READ_SAMPLE_CLK_LOOPBACK_FROM_SCKPAD = 2,
-  FLASH_READ_SAMPLE_CLK_EXTERNALINPUT_FROM_DQSPAD = 3,
+  FLASH_READ_SAMPLE_CLK_EXT_INPUT_FROM_DQSPAD = 3,
 };
 
 /*  Misc feature bit definitions */
diff --git a/boards/arm/imxrt/imxrt1060-evk/src/imxrt_flexspi_nor_flash.c b/boards/arm/imxrt/imxrt1060-evk/src/imxrt_flexspi_nor_flash.c
index c051bc8..801c131 100644
--- a/boards/arm/imxrt/imxrt1060-evk/src/imxrt_flexspi_nor_flash.c
+++ b/boards/arm/imxrt/imxrt1060-evk/src/imxrt_flexspi_nor_flash.c
@@ -36,7 +36,7 @@ const struct flexspi_nor_config_s g_flash_config =
   {
     .tag                   = FLEXSPI_CFG_BLK_TAG,
     .version               = FLEXSPI_CFG_BLK_VERSION,
-    .read_sample_clksrc    = FLASH_READ_SAMPLE_CLK_EXTERNALINPUT_FROM_DQSPAD,
+    .read_sample_clksrc    = FLASH_READ_SAMPLE_CLK_EXT_INPUT_FROM_DQSPAD,
     .cs_hold_time          = 3u,
     .cs_setup_time         = 3u,
     .column_address_width  = 3u,
diff --git a/boards/arm/imxrt/imxrt1060-evk/src/imxrt_flexspi_nor_flash.h b/boards/arm/imxrt/imxrt1060-evk/src/imxrt_flexspi_nor_flash.h
index ded676e..45a5b1d 100644
--- a/boards/arm/imxrt/imxrt1060-evk/src/imxrt_flexspi_nor_flash.h
+++ b/boards/arm/imxrt/imxrt1060-evk/src/imxrt_flexspi_nor_flash.h
@@ -224,7 +224,7 @@ enum flash_read_sample_clk_e
   FLASH_READ_SAMPLE_CLK_LOOPBACK_INTERNELLY = 0,
   FLASH_READ_SAMPLE_CLK_LOOPBACK_FROM_DQSPAD = 1,
   FLASH_READ_SAMPLE_CLK_LOOPBACK_FROM_SCKPAD = 2,
-  FLASH_READ_SAMPLE_CLK_EXTERNALINPUT_FROM_DQSPAD = 3,
+  FLASH_READ_SAMPLE_CLK_EXT_INPUT_FROM_DQSPAD = 3,
 };
 
 /*  Misc feature bit definitions */
diff --git a/boards/arm/imxrt/imxrt1064-evk/Kconfig b/boards/arm/imxrt/imxrt1064-evk/Kconfig
new file mode 100644
index 0000000..119d7a7
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/Kconfig
@@ -0,0 +1,27 @@
+#
+# For a description of the syntax of this configuration file,
+# see the file kconfig-language.txt in the NuttX tools repository.
+#
+
+if ARCH_BOARD_IMXRT1064_EVK
+
+choice
+	prompt "Boot Flash"
+	default IMXRT1064_EVK_QSPI_FLASH
+
+config IMXRT1064_EVK_HYPER_FLASH
+	bool "HYPER Flash"
+
+config IMXRT1064_EVK_QSPI_FLASH
+	bool "QSPI Flash"
+
+endchoice # Boot Flash
+
+config IMXRT1064_EVK_SDRAM
+	bool "Enable SDRAM"
+	default n
+	select IMXRT_SEMC_INIT_DONE
+	---help---
+		Activate DCD configuration of SDRAM
+
+endif
diff --git a/boards/arm/imxrt/imxrt1064-evk/README.txt b/boards/arm/imxrt/imxrt1064-evk/README.txt
new file mode 100644
index 0000000..0947793
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/README.txt
@@ -0,0 +1,363 @@
+README
+======
+
+  This README file provides information about the port of NuttX to the NXP
+  i.MXRT evaluation kit, MIMXRT1064-EVK.  This board features the
+  MIMXRT1064DVL6A MCU.  Some of the features of this board include:
+
+    o Processor
+
+      - MIMXRT1066DVL6A processor
+
+    o Memory
+
+      - 1 Mb OCRAM memory
+      - 256 Mb SDRAM memory
+      - 512 Mb Hyper Flash - Populated but 0 ohm DNP
+      - 64 Mb QSPI Flash
+      - TF socket for SD card
+
+    o Display and Audio
+
+      - Parallel LCD connector
+      - Camera connector
+      - Audio CODEC
+      - 4-pole audio headphone jack
+      - External speaker connection
+      - Microphone
+      - SPDIF connector
+
+    o Connectivity
+
+      - Micro USB host and OTG connectors
+      - Ethernet (10/100T) connector
+      - CAN transceivers
+      - Arduino® interface
+
+    o Sensors
+
+      - FXOS8700CQ 6-Axis Ecompass (3-Axis Mag, 3-Axis Accel)
+
+Contents
+========
+
+  o Serial Console
+  o LEDs and buttons
+  o J-Link External Debug Probe
+  o Configurations
+    - Configuration sub-directories
+
+Serial Console
+==============
+
+  Virtual console port provided by OpenSDA:
+
+           UART1_TXD   GPIO_AD_B0_12  LPUART1_TX
+           UART1_RXD   GPIO_AD_B0_13  LPUART1_RX
+
+  Arduino RS-232 Shield:
+
+    J22 D0 UART_RX/D0  GPIO_AD_B1_07  LPUART3_RX
+    J22 D1 UART_TX/D1  GPIO_AD_B1_06  LPUART3_TX
+
+LEDs and buttons
+================
+
+  LEDs
+  ----
+
+  There are four LED status indicators located on the EVK Board.  The
+  functions of these LEDs include:
+
+    - Main Power Supply(D3)
+      Green: DC 5V main supply is normal.
+      Red:   J2 input voltage is over 5.6V.
+      Off:   The board is not powered.
+    - Reset RED LED(D21)
+    - OpenSDA LED(D20)
+    - USER LED(D18)
+
+  Only a single LED, D18, is under software control.  It connects to
+  GPIO_AD_B0_09 which is shared with JTAG_TDI and ENET_RST
+
+  This LED is not used by the board port unless CONFIG_ARCH_LEDS is
+  defined.  In that case, the usage by the board port is defined in
+  include/board.h and src/imxrt_autoleds.c. The LED is used to encode
+  OS-related events as follows:
+
+    ------------------- ----------------------- ------
+    SYMBOL              Meaning                 LED
+    ------------------- ----------------------- ------
+    LED_STARTED         NuttX has been started  OFF
+    LED_HEAPALLOCATE    Heap has been allocated OFF
+    LED_IRQSENABLED     Interrupts enabled      OFF
+    LED_STACKCREATED    Idle stack created      ON
+    LED_INIRQ           In an interrupt         N/C
+    LED_SIGNAL          In a signal handler     N/C
+    LED_ASSERTION       An assertion failed     N/C
+    LED_PANIC           The system has crashed  FLASH
+
+  Thus if the LED is statically on, NuttX has successfully  booted and is,
+  apparently, running normally.  If the LED is flashing at approximately
+  2Hz, then a fatal error has been detected and the system has halted.
+
+  Buttons
+  -------
+
+  There are four user interface switches on the MIMXRT1050 EVK Board:
+
+    - SW1: Power Switch (slide switch fir power from J2)
+    - SW2: ON/OFF Button
+    - SW3: Power-on Reset button state forces to reset the system power except
+           SNVS domain
+    - SW9: Reset button
+    - SW8: User button GPIO5-00
+
+  Only the user button is available to the software.  It is sensed on the
+  WAKEUP pin which will be pulled low when the button is pressed.
+
+
+J-Link External Debug Probe
+===========================
+
+  Install the J-Link Debug Host Tools and make sure they are in your search path.
+
+  Attach a J-Link 20-pin connector to J21. Check that jumpers J47 and J48 are
+  off (they are on by default when boards ship from the factory) to ensure SWD
+  signals are disconnected from the OpenSDA microcontroller.
+
+Configurations
+==============
+
+  Information Common to All Configurations
+  ----------------------------------------
+  Each i.MX RT 1064 configuration is maintained in a sub-directory and
+  can be selected as follow:
+
+    tools/configure.sh [OPTIONS] imxrt1064-evk:<subdir>
+
+  Where typical options are -l to configure to build on Linux or -c to
+  configure for Cygwin under Linux.  'tools/configure.sh -h' will show
+  you all of the options.
+
+  Before building, make sure the PATH environment variable include the
+  correct path to the directory than holds your toolchain binaries.
+
+  And then build NuttX by simply typing the following.  At the conclusion of
+  the make, the nuttx binary will reside in an ELF file called, simply, nuttx.
+
+    make
+
+  The <subdir> that is provided above as an argument to the tools/configure.sh
+  must be is one of the following.
+
+  NOTES:
+
+  1. These configurations use the mconf-based configuration tool.  To
+    change any of these configurations using that tool, you should:
+
+    a. Build and install the kconfig-mconf tool.  See nuttx/README.txt
+       see additional README.txt files in the NuttX tools repository.
+
+    b. Execute 'make menuconfig' in nuttx/ in order to start the
+       reconfiguration process.
+
+  2. Unless stated otherwise, all configurations generate console
+     output on UART3 (i.e., for the Arduino serial shield).
+
+  3. All of these configurations are set up to build under Windows using the
+     "GNU Tools for ARM Embedded Processors" that is maintained by ARM
+     (unless stated otherwise in the description of the configuration).
+
+       https://developer.arm.com/open-source/gnu-toolchain/gnu-rm
+
+     That toolchain selection can easily be reconfigured using
+     'make menuconfig'.  Here are the relevant current settings:
+
+     Build Setup:
+       CONFIG_HOST_WINDOWS=y               : Window environment
+       CONFIG_WINDOWS_CYGWIN=y             : Cywin under Windows
+
+     System Type -> Toolchain:
+       CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIW=y : GNU ARM EABI toolchain
+
+Configuration sub-directories
+-----------------------------
+
+  can:
+
+    This is an nsh configuration (see below) with added support of CAN driver.
+    FlexCAN3 is chosen as default, the change can be made at System type peripheral
+    selection. Please note that only FlexCAN3 and FlexCAN2 is available on this board.
+
+    Bitrate and sample point can be also changed at System type peripheral selection,
+    basic values are 1 MHz for bitrate and 0.80 for sample point. The FlexCAN driver
+    for imxrt runs at 80 MHz clock frequency.
+
+    The configuration also includes CAN utilities as candump and cansend.
+
+  canfd:
+
+    This is an nsh configuration (see below) with added support of CAN_FD driver.
+    FlexCAN3 is chosen as default, please note that only FlexCAN3 is capable of
+    providing CAN_FD support.
+
+    Bitrate and sample point can be also changed at System type peripheral selection,
+    basic values are 1 MHz for bitrate and 0.80 for sample point for arbitration phase
+    and 4 MHz (bitrate) and 0.90 (sample point) for data phase. The FlexCAN driver
+    for imxrt runs at 80 MHz clock frequency.
+
+    The configuration also includes CAN utilities as candump and cansend.
+
+  knsh:
+
+    This is identical to the nsh configuration below except that NuttX
+    is built as a protected mode, monolithic module and the user applications
+    are built separately.  It is recommends to use a special make command;
+    not just 'make' but make with the following two arguments:
+
+        make pass1 pass2
+
+    In the normal case (just 'make'), make will attempt to build both user-
+    and kernel-mode blobs more or less interleaved.  This actual works!
+    However, for me it is very confusing so I prefer the above make command:
+    Make the user-space binaries first (pass1), then make the kernel-space
+    binaries (pass2)
+
+    NOTES:
+
+    1. At the end of the build, there will be several files in the top-level
+       NuttX build directory:
+
+       PASS1:
+         nuttx_user.elf    - The pass1 user-space ELF file
+         nuttx_user.hex    - The pass1 Intel HEX format file (selected in defconfig)
+         User.map          - Symbols in the user-space ELF file
+
+       PASS2:
+         nuttx             - The pass2 kernel-space ELF file
+         nuttx.hex         - The pass2 Intel HEX file (selected in defconfig)
+         System.map        - Symbols in the kernel-space ELF file
+
+       The J-Link programmer will except files in .hex, .mot, .srec, and .bin
+       formats.
+
+    2. Combining .hex files.  If you plan to use the .hex files with your
+       debugger or FLASH utility, then you may need to combine the two hex
+       files into a single .hex file.  Here is how you can do that.
+
+       a. The 'tail' of the nuttx.hex file should look something like this
+          (with my comments added beginning with #):
+
+            $ tail nuttx.hex
+            #xx xxxx 00 data records
+            ...
+            :10 C93C 00 000000000040184000C2010000000000 90
+            :10 C94C 00 2400080000801B4000C01B4000001C40 5D
+            :10 C95C 00 00401C4000000C4050BF0060FF000100 74
+            #xx xxxx 05 Start Linear Address Record
+            :04 0000 05 6000 02C1 D4
+            #xx xxxx 01 End Of File record
+            :00 0000 01 FF
+
+          Use an editor such as vi to remove the 05 and 01 records.
+
+       b. The 'head' of the nuttx_user.hex file should look something like
+          this (again with my comments added beginning with #):
+
+            $ head nuttx_user.hex
+            #xx xxxx 04 Extended Linear Address Record
+            :02 0000 04 6020 7A
+            #xx xxxx 00 data records
+            :10 0000 00 8905206030002060F2622060FC622060 80
+            :10 0010 00 0000242008002420080024205C012420 63
+            :10 0020 00 140024203D0020603100206071052060 14
+            ...
+
+          Nothing needs to be done here.  The nuttx_user.hex file should
+          be fine.
+
+       c. Combine the edited nuttx.hex and un-edited nuttx_user.hex
+          file to produce a single combined hex file:
+
+          $ cat nuttx.hex nuttx_user.hex >combined.hex
+
+       Then use the combined.hex file with the to write the FLASH image.
+       If you do this a lot, you will probably want to invest a little time
+       to develop a tool to automate these steps.
+
+    STATUS:  This configuration was added on 8 June 2018 primarily to assure
+    that all of the components are in place to support the PROTECTED mode
+    build.  This configuration, however, has not been verified as of this
+    writing.
+
+  netnsh:
+
+    This configuration is similar to the nsh configuration except that is
+    has networking enabled, both IPv4 and IPv6.  This NSH configuration is
+    focused on network-related testing.
+
+    NOTES:
+
+    1. LED support is disabled because there is a conflict between the LED
+       GPIO and PHY pin usage.
+
+    2. Telnet is enabled.  But since both IPv4 and IPv6 are enabled, it
+       will default to IPv6.  That means that to connect a Telnet session
+       from a PC, you will need to use the IPv6 address which by defaault
+       is:
+
+         telnet fc00::2
+
+       Or, disable IPv4 support so that only IPv4 addressing is used.
+
+    3. The network monitor is not enabled in this configuration.  As a
+       result, the Ethernet cable must be connected when the board is
+       powered up.  Otherwise, it will stall for a long period of time
+       before the NSH prompt appears and you will not be able to used
+       the board.
+
+       The following configuration options should be added to your
+       configuration in order to use the network monitor:
+
+         CONFIG_IMXRT_ENET_PHYINIT=y
+         CONFIG_IMXRT_GPIO1_0_15_IRQ=y
+         CONFIG_IMXRT_GPIO_IRQ=y
+         CONFIG_NETDEV_IOCTL=y
+         CONFIG_NETDEV_PHY_IOCTL=y
+         CONFIG_NSH_NETINIT_MONITOR=y
+         CONFIG_NSH_NETINIT_RETRYMSEC=2000
+         CONFIG_NSH_NETINIT_SIGNO=18
+         CONFIG_NSH_NETINIT_THREAD=y
+         CONFIG_NSH_NETINIT_THREAD_PRIORITY=80
+         CONFIG_NSH_NETINIT_THREAD_STACKSIZE=1568
+
+  nsh:
+
+    Configures the NuttShell (nsh) located at examples/nsh.  This NSH
+    configuration is focused on low level, command-line driver testing.
+    Built-in applications are supported, but none are enabled.  This
+    configuration does not support a network.
+
+  lvgl:
+
+    Configures the Littlev graphic library (lvgl) demo located under
+    examples/lvgldemo. This configuration needs the optional LCD model
+    RK043FN02H-CT from NXP. The LCD panel comes with the integrated
+    capacitive touchscreen sensor FT5336GQQ connected to the LPI2C1 bus,
+    address 0x38. NuttX support such touchscreen device via the driver
+    ft5x06 (drivers/input/ft5x06.c). At the moment only the polling
+    method is available, the board features an interrupt line connected
+    to the touchscreen sensor IC.
+
+    IMXRT1062 MCU provides the integrated LCD driver.
+
+    The LCD panel features:
+    - size 4.3"
+    - resolution 480×272 RGB
+    - backlight driver
+    - dimensions [mm]: 105.5 (W) x 67.2(H) x 4.35(D) Max.
+
+    To run the lvgl demo please type "lvgldemo" at nsh prompt:
+
+    nsh> lvgldemo
diff --git a/boards/arm/imxrt/imxrt1064-evk/configs/can/defconfig b/boards/arm/imxrt/imxrt1064-evk/configs/can/defconfig
new file mode 100644
index 0000000..c6e6981
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/configs/can/defconfig
@@ -0,0 +1,79 @@
+#
+# This file is autogenerated: PLEASE DO NOT EDIT IT.
+#
+# You can use "make menuconfig" to make any modifications to the installed .config file.
+# You can then do "make savedefconfig" to generate a new defconfig file that includes your
+# modifications.
+#
+# CONFIG_NET_CAN_CANFD is not set
+# CONFIG_NET_ETHERNET is not set
+# CONFIG_NET_IPv4 is not set
+CONFIG_ARCH="arm"
+CONFIG_ARCH_BOARD="imxrt1064-evk"
+CONFIG_ARCH_BOARD_IMXRT1064_EVK=y
+CONFIG_ARCH_CHIP="imxrt"
+CONFIG_ARCH_CHIP_IMXRT=y
+CONFIG_ARCH_CHIP_MIMXRT1064DVL6A=y
+CONFIG_ARCH_STACKDUMP=y
+CONFIG_ARMV7M_DCACHE=y
+CONFIG_ARMV7M_DCACHE_WRITETHROUGH=y
+CONFIG_ARMV7M_ICACHE=y
+CONFIG_ARMV7M_USEBASEPRI=y
+CONFIG_BOARD_LOOPSPERMSEC=104926
+CONFIG_BUILTIN=y
+CONFIG_CAN=y
+CONFIG_CANUTILS_CANDUMP=y
+CONFIG_CANUTILS_CANSEND=y
+CONFIG_DEBUG_BINFMT=y
+CONFIG_DEBUG_BINFMT_ERROR=y
+CONFIG_DEBUG_BINFMT_INFO=y
+CONFIG_DEBUG_BINFMT_WARN=y
+CONFIG_DEBUG_CAN=y
+CONFIG_DEBUG_CAN_ERROR=y
+CONFIG_DEBUG_CAN_INFO=y
+CONFIG_DEBUG_CAN_WARN=y
+CONFIG_DEBUG_ERROR=y
+CONFIG_DEBUG_FEATURES=y
+CONFIG_DEBUG_FULLOPT=y
+CONFIG_DEBUG_INFO=y
+CONFIG_DEBUG_IRQ=y
+CONFIG_DEBUG_IRQ_ERROR=y
+CONFIG_DEBUG_IRQ_INFO=y
+CONFIG_DEBUG_IRQ_WARN=y
+CONFIG_DEBUG_NET=y
+CONFIG_DEBUG_NET_ERROR=y
+CONFIG_DEBUG_NET_INFO=y
+CONFIG_DEBUG_NET_WARN=y
+CONFIG_DEBUG_SYMBOLS=y
+CONFIG_DEBUG_WARN=y
+CONFIG_FS_PROCFS=y
+CONFIG_IDLETHREAD_STACKSIZE=2048
+CONFIG_IMXRT_FLEXCAN3=y
+CONFIG_IMXRT_LPUART1=y
+CONFIG_INTELHEX_BINARY=y
+CONFIG_LPUART1_SERIAL_CONSOLE=y
+CONFIG_MAX_TASKS=16
+CONFIG_NET=y
+CONFIG_NETDEVICES=y
+CONFIG_NETDEV_IFINDEX=y
+CONFIG_NETDEV_LATEINIT=y
+CONFIG_NETDEV_STATISTICS=y
+CONFIG_NET_CAN=y
+CONFIG_NET_CAN_NOTIFIER=y
+CONFIG_NET_SOCKOPTS=y
+CONFIG_NET_STATISTICS=y
+CONFIG_NET_TIMESTAMP=y
+CONFIG_NFILE_DESCRIPTORS=8
+CONFIG_NSH_ARCHINIT=y
+CONFIG_NSH_BUILTIN_APPS=y
+CONFIG_NSH_FILEIOSIZE=512
+CONFIG_NSH_LINELEN=64
+CONFIG_NSH_READLINE=y
+CONFIG_RAM_SIZE=1048576
+CONFIG_RAM_START=0x20200000
+CONFIG_SCHED_HPWORK=y
+CONFIG_SIG_DEFAULT=y
+CONFIG_START_DAY=14
+CONFIG_START_MONTH=3
+CONFIG_SYSTEM_NSH=y
+CONFIG_USER_ENTRYPOINT="nsh_main"
diff --git a/boards/arm/imxrt/imxrt1064-evk/configs/canfd/defconfig b/boards/arm/imxrt/imxrt1064-evk/configs/canfd/defconfig
new file mode 100644
index 0000000..6f431f0
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/configs/canfd/defconfig
@@ -0,0 +1,80 @@
+#
+# This file is autogenerated: PLEASE DO NOT EDIT IT.
+#
+# You can use "make menuconfig" to make any modifications to the installed .config file.
+# You can then do "make savedefconfig" to generate a new defconfig file that includes your
+# modifications.
+#
+# CONFIG_NET_ETHERNET is not set
+# CONFIG_NET_IPv4 is not set
+CONFIG_ARCH="arm"
+CONFIG_ARCH_BOARD="imxrt1064-evk"
+CONFIG_ARCH_BOARD_IMXRT1064_EVK=y
+CONFIG_ARCH_CHIP="imxrt"
+CONFIG_ARCH_CHIP_IMXRT=y
+CONFIG_ARCH_CHIP_MIMXRT1064DVL6A=y
+CONFIG_ARCH_STACKDUMP=y
+CONFIG_ARMV7M_DCACHE=y
+CONFIG_ARMV7M_DCACHE_WRITETHROUGH=y
+CONFIG_ARMV7M_ICACHE=y
+CONFIG_ARMV7M_USEBASEPRI=y
+CONFIG_BOARD_LOOPSPERMSEC=104926
+CONFIG_BUILTIN=y
+CONFIG_CAN=y
+CONFIG_CANUTILS_CANDUMP=y
+CONFIG_CANUTILS_CANSEND=y
+CONFIG_CAN_EXTID=y
+CONFIG_CAN_FD=y
+CONFIG_DEBUG_BINFMT=y
+CONFIG_DEBUG_BINFMT_ERROR=y
+CONFIG_DEBUG_BINFMT_INFO=y
+CONFIG_DEBUG_BINFMT_WARN=y
+CONFIG_DEBUG_CAN=y
+CONFIG_DEBUG_CAN_ERROR=y
+CONFIG_DEBUG_CAN_INFO=y
+CONFIG_DEBUG_CAN_WARN=y
+CONFIG_DEBUG_ERROR=y
+CONFIG_DEBUG_FEATURES=y
+CONFIG_DEBUG_FULLOPT=y
+CONFIG_DEBUG_INFO=y
+CONFIG_DEBUG_IRQ=y
+CONFIG_DEBUG_IRQ_ERROR=y
+CONFIG_DEBUG_IRQ_INFO=y
+CONFIG_DEBUG_IRQ_WARN=y
+CONFIG_DEBUG_NET=y
+CONFIG_DEBUG_NET_ERROR=y
+CONFIG_DEBUG_NET_INFO=y
+CONFIG_DEBUG_NET_WARN=y
+CONFIG_DEBUG_SYMBOLS=y
+CONFIG_DEBUG_WARN=y
+CONFIG_FS_PROCFS=y
+CONFIG_IDLETHREAD_STACKSIZE=2048
+CONFIG_IMXRT_FLEXCAN3=y
+CONFIG_IMXRT_LPUART1=y
+CONFIG_INTELHEX_BINARY=y
+CONFIG_LPUART1_SERIAL_CONSOLE=y
+CONFIG_MAX_TASKS=16
+CONFIG_NET=y
+CONFIG_NETDEVICES=y
+CONFIG_NETDEV_IFINDEX=y
+CONFIG_NETDEV_LATEINIT=y
+CONFIG_NETDEV_STATISTICS=y
+CONFIG_NET_CAN=y
+CONFIG_NET_CAN_NOTIFIER=y
+CONFIG_NET_CAN_SOCK_OPTS=y
+CONFIG_NET_STATISTICS=y
+CONFIG_NET_TIMESTAMP=y
+CONFIG_NFILE_DESCRIPTORS=8
+CONFIG_NSH_ARCHINIT=y
+CONFIG_NSH_BUILTIN_APPS=y
+CONFIG_NSH_FILEIOSIZE=512
+CONFIG_NSH_LINELEN=64
+CONFIG_NSH_READLINE=y
+CONFIG_RAM_SIZE=1048576
+CONFIG_RAM_START=0x20200000
+CONFIG_SCHED_HPWORK=y
+CONFIG_SIG_DEFAULT=y
+CONFIG_START_DAY=14
+CONFIG_START_MONTH=3
+CONFIG_SYSTEM_NSH=y
+CONFIG_USER_ENTRYPOINT="nsh_main"
diff --git a/boards/arm/imxrt/imxrt1064-evk/configs/knsh/Make.defs b/boards/arm/imxrt/imxrt1064-evk/configs/knsh/Make.defs
new file mode 100644
index 0000000..c1a94e7
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/configs/knsh/Make.defs
@@ -0,0 +1,77 @@
+############################################################################
+# boards/arm/imxrt/imxrt1060-evk/configs/knsh/Make.defs
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.  The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+############################################################################
+
+include $(TOPDIR)/.config
+include $(TOPDIR)/tools/Config.mk
+include $(TOPDIR)/arch/arm/src/armv7-m/Toolchain.defs
+
+LDSCRIPT1 = memory.ld
+LDSCRIPT2 = kernel-space.ld
+
+ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
+  ARCHSCRIPT = -T "${shell cygpath -w $(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT1)}"
+  ARCHSCRIPT += -T "${shell cygpath -w $(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT2)}"
+else
+  ARCHSCRIPT = -T$(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT1)
+  ARCHSCRIPT += -T$(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT2)
+endif
+
+ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
+  ARCHOPTIMIZATION = -g
+endif
+
+ifneq ($(CONFIG_DEBUG_NOOPT),y)
+  ARCHOPTIMIZATION += $(MAXOPTIMIZATION)
+endif
+
+ARCHCFLAGS = -fno-builtin
+ARCHCXXFLAGS = -fno-builtin -fno-exceptions -fcheck-new -fno-rtti
+ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow -Wundef -fno-strict-aliasing
+ARCHWARNINGSXX = -Wall -Wshadow -Wundef
+ARCHPICFLAGS = -fpic -msingle-pic-base -mpic-register=r10
+
+CFLAGS := $(ARCHCFLAGS) $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe
+CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
+CXXFLAGS := $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe
+CXXPICFLAGS = $(ARCHPICFLAGS) $(CXXFLAGS)
+CPPFLAGS := $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
+AFLAGS := $(CFLAGS) -D__ASSEMBLY__
+
+NXFLATLDFLAGS1 = -r -d -warn-common
+NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat-pcrel.ld -no-check-sections
+LDNXFLATFLAGS = -e main -s 2048
+
+# Loadable module definitions
+
+CMODULEFLAGS = $(CFLAGS) -mlong-calls # --target1-abs
+
+LDMODULEFLAGS = -r -e module_initialize
+ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
+  LDMODULEFLAGS += -T "${shell cygpath -w $(TOPDIR)/libs/libc/modlib/gnu-elf.ld}"
+else
+  LDMODULEFLAGS += -T $(TOPDIR)/libs/libc/modlib/gnu-elf.ld
+endif
+
+ifneq ($(CROSSDEV),arm-nuttx-elf-)
+  LDFLAGS += -nostartfiles -nodefaultlibs
+endif
+ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
+  LDFLAGS += -g
+endif
diff --git a/boards/arm/imxrt/imxrt1064-evk/configs/knsh/defconfig b/boards/arm/imxrt/imxrt1064-evk/configs/knsh/defconfig
new file mode 100644
index 0000000..f914c66
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/configs/knsh/defconfig
@@ -0,0 +1,45 @@
+#
+# This file is autogenerated: PLEASE DO NOT EDIT IT.
+#
+# You can use "make menuconfig" to make any modifications to the installed .config file.
+# You can then do "make savedefconfig" to generate a new defconfig file that includes your
+# modifications.
+#
+# CONFIG_ARCH_RAMFUNCS is not set
+CONFIG_ARCH="arm"
+CONFIG_ARCH_BOARD="imxrt1064-evk"
+CONFIG_ARCH_BOARD_IMXRT1064_EVK=y
+CONFIG_ARCH_CHIP="imxrt"
+CONFIG_ARCH_CHIP_IMXRT=y
+CONFIG_ARCH_CHIP_MIMXRT1064DVL6A=y
+CONFIG_ARCH_STACKDUMP=y
+CONFIG_ARMV7M_DCACHE=y
+CONFIG_ARMV7M_DCACHE_WRITETHROUGH=y
+CONFIG_ARMV7M_ICACHE=y
+CONFIG_ARMV7M_LAZYFPU=y
+CONFIG_ARMV7M_USEBASEPRI=y
+CONFIG_ARM_MPU=y
+CONFIG_BOARD_LOOPSPERMSEC=104926
+CONFIG_BUILD_PROTECTED=y
+CONFIG_FS_PROCFS=y
+CONFIG_IDLETHREAD_STACKSIZE=2048
+CONFIG_IMXRT_LPUART1=y
+CONFIG_INTELHEX_BINARY=y
+CONFIG_LPUART1_SERIAL_CONSOLE=y
+CONFIG_MAX_TASKS=16
+CONFIG_NFILE_DESCRIPTORS=8
+CONFIG_NSH_ARCHINIT=y
+CONFIG_NSH_DISABLE_MKRD=y
+CONFIG_NSH_FILEIOSIZE=512
+CONFIG_NSH_LINELEN=64
+CONFIG_NSH_READLINE=y
+CONFIG_NUTTX_USERSPACE=0x60200000
+CONFIG_PASS1_BUILDIR="boards/arm/imxrt/imxrt1060-evk/kernel"
+CONFIG_RAM_SIZE=1048576
+CONFIG_RAM_START=0x20200000
+CONFIG_SCHED_WAITPID=y
+CONFIG_START_DAY=8
+CONFIG_START_MONTH=6
+CONFIG_SYSTEM_NSH=y
+CONFIG_SYS_RESERVED=8
+CONFIG_USER_ENTRYPOINT="nsh_main"
diff --git a/boards/arm/imxrt/imxrt1064-evk/configs/libcxxtest/Make.defs b/boards/arm/imxrt/imxrt1064-evk/configs/libcxxtest/Make.defs
new file mode 100644
index 0000000..c4c2110
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/configs/libcxxtest/Make.defs
@@ -0,0 +1,104 @@
+############################################################################
+# boards/arm/imxrt/imxrt1060-evk/configs/libcxxtest/Make.defs
+#
+#   Copyright (C) 2018 Gregory Nutt. All rights reserved.
+#   Author: Gregory Nutt <gn...@nuttx.org>
+#           Daniel Pereira Volpato <dp...@certi.org.br>
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+#
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in
+#    the documentation and/or other materials provided with the
+#    distribution.
+# 3. Neither the name NuttX nor the names of its contributors may be
+#    used to endorse or promote products derived from this software
+#    without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+############################################################################
+
+include $(TOPDIR)/.config
+include $(TOPDIR)/tools/Config.mk
+include $(TOPDIR)/arch/arm/src/armv7-m/Toolchain.defs
+
+ifeq ($(CONFIG_ARMV7M_DTCM),y)
+  LDSCRIPT = flash-dtcm.ld
+else
+  LDSCRIPT = flash-ocram.ld
+endif
+
+ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
+  ARCHSCRIPT = -T "${shell cygpath -w $(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT)}"
+else
+  ARCHSCRIPT = -T$(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT)
+endif
+
+ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
+  ARCHOPTIMIZATION = -g
+endif
+
+ifneq ($(CONFIG_DEBUG_NOOPT),y)
+  ARCHOPTIMIZATION += $(MAXOPTIMIZATION) -fno-strict-aliasing \
+                      -fno-strength-reduce -fomit-frame-pointer
+endif
+
+ARCHCFLAGS = -fno-builtin
+ifeq ($(CONFIG_CXX_EXCEPTION),y)
+  ARCHCPUFLAGSXX = -fno-builtin
+else
+  ARCHCPUFLAGSXX = -fno-builtin -fno-exceptions -fcheck-new
+endif
+ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow -Wundef #-fno-strict-aliasing
+ARCHWARNINGSXX = -Wall -Wshadow -Wundef
+ARCHPICFLAGS = -fpic -msingle-pic-base -mpic-register=r10
+
+
+CFLAGS := $(ARCHCFLAGS) $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe
+CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
+CXXFLAGS  = $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) \
+            $(ARCHCPUFLAGS) $(ARCHXXINCLUDES)
+CXXFLAGS += $(ARCHDEFINES) $(EXTRAFLAGS) -pipe -std=c++11
+CXXFLAGS += -fno-builtin -fno-exceptions -fcheck-new -fno-rtti
+CXXFLAGS += -pedantic -D_DEBUG -D_LIBCPP_BUILD_STATIC -D_LIBCPP_NO_EXCEPTIONS
+CXXPICFLAGS = $(ARCHPICFLAGS) $(CXXFLAGS)
+CPPFLAGS := $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
+AFLAGS := $(CFLAGS) -D__ASSEMBLY__
+
+NXFLATLDFLAGS1 = -r -d -warn-common
+NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat-pcrel.ld -no-check-sections
+LDNXFLATFLAGS = -e main -s 2048
+
+# Loadable module definitions
+
+CMODULEFLAGS = $(CFLAGS) -mlong-calls # --target1-abs
+
+LDMODULEFLAGS = -r -e module_initialize
+ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
+  LDMODULEFLAGS += -T "${shell cygpath -w $(TOPDIR)/libs/libc/modlib/gnu-elf.ld}"
+else
+  LDMODULEFLAGS += -T $(TOPDIR)/libs/libc/modlib/gnu-elf.ld
+endif
+
+ifneq ($(CROSSDEV),arm-nuttx-elf-)
+  LDFLAGS += -nostartfiles -nodefaultlibs
+endif
+ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
+  LDFLAGS += -g
+endif
diff --git a/boards/arm/imxrt/imxrt1064-evk/configs/libcxxtest/defconfig b/boards/arm/imxrt/imxrt1064-evk/configs/libcxxtest/defconfig
new file mode 100644
index 0000000..c2f0fb8
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/configs/libcxxtest/defconfig
@@ -0,0 +1,41 @@
+#
+# This file is autogenerated: PLEASE DO NOT EDIT IT.
+#
+# You can use "make menuconfig" to make any modifications to the installed .config file.
+# You can then do "make savedefconfig" to generate a new defconfig file that includes your
+# modifications.
+#
+CONFIG_ARCH="arm"
+CONFIG_ARCH_BOARD="imxrt1064-evk"
+CONFIG_ARCH_BOARD_IMXRT1064_EVK=y
+CONFIG_ARCH_CHIP="imxrt"
+CONFIG_ARCH_CHIP_IMXRT=y
+CONFIG_ARCH_CHIP_MIMXRT1064DVL6A=y
+CONFIG_ARCH_STACKDUMP=y
+CONFIG_BOARD_LATE_INITIALIZE=y
+CONFIG_BOARD_LOOPSPERMSEC=20000
+CONFIG_BUILTIN=y
+CONFIG_C99_BOOL8=y
+CONFIG_FS_PROCFS=y
+CONFIG_HAVE_CXX=y
+CONFIG_IDLETHREAD_STACKSIZE=2048
+CONFIG_IMXRT_LPUART1=y
+CONFIG_INTELHEX_BINARY=y
+CONFIG_LIBCXX=y
+CONFIG_LIBC_FLOATINGPOINT=y
+CONFIG_LIBC_LOCALTIME=y
+CONFIG_LIBM=y
+CONFIG_LPUART1_SERIAL_CONSOLE=y
+CONFIG_MAX_TASKS=16
+CONFIG_NFILE_DESCRIPTORS=8
+CONFIG_NSH_BUILTIN_APPS=y
+CONFIG_NSH_FILEIOSIZE=512
+CONFIG_NSH_LINELEN=64
+CONFIG_NSH_READLINE=y
+CONFIG_RAM_SIZE=1048576
+CONFIG_RAM_START=0x20200000
+CONFIG_SCHED_CPULOAD=y
+CONFIG_START_DAY=14
+CONFIG_START_MONTH=3
+CONFIG_SYSTEM_NSH=y
+CONFIG_USER_ENTRYPOINT="nsh_main"
diff --git a/boards/arm/imxrt/imxrt1064-evk/configs/lvgl/defconfig b/boards/arm/imxrt/imxrt1064-evk/configs/lvgl/defconfig
new file mode 100644
index 0000000..ab54b01
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/configs/lvgl/defconfig
@@ -0,0 +1,63 @@
+#
+# This file is autogenerated: PLEASE DO NOT EDIT IT.
+#
+# You can use "make menuconfig" to make any modifications to the installed .config file.
+# You can then do "make savedefconfig" to generate a new defconfig file that includes your
+# modifications.
+#
+CONFIG_ARCH="arm"
+CONFIG_ARCH_BOARD="imxrt1064-evk"
+CONFIG_ARCH_BOARD_IMXRT1064_EVK=y
+CONFIG_ARCH_CHIP="imxrt"
+CONFIG_ARCH_CHIP_IMXRT=y
+CONFIG_ARCH_CHIP_MIMXRT1064DVL6A=y
+CONFIG_ARCH_STACKDUMP=y
+CONFIG_ARMV7M_DCACHE=y
+CONFIG_ARMV7M_DCACHE_WRITETHROUGH=y
+CONFIG_ARMV7M_ICACHE=y
+CONFIG_ARMV7M_USEBASEPRI=y
+CONFIG_BOARD_LOOPSPERMSEC=104926
+CONFIG_BUILTIN=y
+CONFIG_DRIVERS_VIDEO=y
+CONFIG_EXAMPLES_LVGLDEMO=y
+CONFIG_FS_PROCFS=y
+CONFIG_FT5X06_NPOLLWAITERS=8
+CONFIG_FT5X06_POLLMODE=y
+CONFIG_FT5X06_SINGLEPOINT=y
+CONFIG_FT5X06_SWAPXY=y
+CONFIG_FT5X06_THRESHX=9
+CONFIG_FT5X06_THRESHY=15
+CONFIG_GRAPHICS_LVGL=y
+CONFIG_IDLETHREAD_STACKSIZE=2048
+CONFIG_IMXRT_GPIO1_0_15_IRQ=y
+CONFIG_IMXRT_GPIO_IRQ=y
+CONFIG_IMXRT_LCD=y
+CONFIG_IMXRT_LCD_HBACKPORCH=43
+CONFIG_IMXRT_LCD_HFRONTPORCH=8
+CONFIG_IMXRT_LCD_VBACKPORCH=12
+CONFIG_IMXRT_LCD_VRAMBASE=0x20240000
+CONFIG_IMXRT_LPI2C1=y
+CONFIG_IMXRT_LPUART1=y
+CONFIG_INPUT=y
+CONFIG_INPUT_FT5X06=y
+CONFIG_INTELHEX_BINARY=y
+CONFIG_LPUART1_SERIAL_CONSOLE=y
+CONFIG_LV_HOR_RES=480
+CONFIG_LV_VER_RES=272
+CONFIG_MAX_TASKS=16
+CONFIG_MOTOROLA_SREC=y
+CONFIG_NFILE_DESCRIPTORS=8
+CONFIG_NSH_ARCHINIT=y
+CONFIG_NSH_BUILTIN_APPS=y
+CONFIG_NSH_DISABLE_IFUPDOWN=y
+CONFIG_NSH_FILEIOSIZE=512
+CONFIG_NSH_LINELEN=64
+CONFIG_NSH_READLINE=y
+CONFIG_RAM_SIZE=1048576
+CONFIG_RAM_START=0x20200000
+CONFIG_SCHED_HPWORK=y
+CONFIG_START_DAY=14
+CONFIG_START_MONTH=3
+CONFIG_SYSTEM_NSH=y
+CONFIG_USER_ENTRYPOINT="nsh_main"
+CONFIG_VIDEO_FB=y
diff --git a/boards/arm/imxrt/imxrt1064-evk/configs/netnsh/defconfig b/boards/arm/imxrt/imxrt1064-evk/configs/netnsh/defconfig
new file mode 100644
index 0000000..d4726bf
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/configs/netnsh/defconfig
@@ -0,0 +1,73 @@
+#
+# This file is autogenerated: PLEASE DO NOT EDIT IT.
+#
+# You can use "make menuconfig" to make any modifications to the installed .config file.
+# You can then do "make savedefconfig" to generate a new defconfig file that includes your
+# modifications.
+#
+# CONFIG_ARCH_LEDS is not set
+CONFIG_ARCH="arm"
+CONFIG_ARCH_BOARD="imxrt1064-evk"
+CONFIG_ARCH_BOARD_IMXRT1064_EVK=y
+CONFIG_ARCH_CHIP="imxrt"
+CONFIG_ARCH_CHIP_IMXRT=y
+CONFIG_ARCH_CHIP_MIMXRT1064DVL6A=y
+CONFIG_ARCH_STACKDUMP=y
+CONFIG_ARMV7M_DCACHE=y
+CONFIG_ARMV7M_DCACHE_WRITETHROUGH=y
+CONFIG_ARMV7M_ICACHE=y
+CONFIG_ARMV7M_USEBASEPRI=y
+CONFIG_BOARD_LOOPSPERMSEC=104926
+CONFIG_BUILTIN=y
+CONFIG_ETH0_PHY_KSZ8081=y
+CONFIG_EXAMPLES_IPERF=y
+CONFIG_EXAMPLES_IPERFTEST_DEVNAME="eth0"
+CONFIG_FS_PROCFS=y
+CONFIG_IDLETHREAD_STACKSIZE=2048
+CONFIG_IMXRT_ENET=y
+CONFIG_IMXRT_LPUART1=y
+CONFIG_INTELHEX_BINARY=y
+CONFIG_IOB_NBUFFERS=128
+CONFIG_LIB_HOSTNAME="i.MXRT1060 EVK"
+CONFIG_LPUART1_SERIAL_CONSOLE=y
+CONFIG_MAX_TASKS=16
+CONFIG_NET=y
+CONFIG_NETDB_DNSCLIENT=y
+CONFIG_NETDEV_STATISTICS=y
+CONFIG_NETINIT_NOMAC=y
+CONFIG_NETUTILS_TELNETD=y
+CONFIG_NET_ARP_SEND=y
+CONFIG_NET_BROADCAST=y
+CONFIG_NET_ETH_PKTSIZE=1514
+CONFIG_NET_GUARDSIZE=4
+CONFIG_NET_ICMP=y
+CONFIG_NET_ICMP_SOCKET=y
+CONFIG_NET_ICMPv6=y
+CONFIG_NET_ICMPv6_NEIGHBOR=y
+CONFIG_NET_ICMPv6_SOCKET=y
+CONFIG_NET_IPv6=y
+CONFIG_NET_SOCKOPTS=y
+CONFIG_NET_STATISTICS=y
+CONFIG_NET_TCP=y
+CONFIG_NET_TCPBACKLOG=y
+CONFIG_NET_TCP_WRITE_BUFFERS=y
+CONFIG_NET_UDP=y
+CONFIG_NET_UDP_WRITE_BUFFERS=y
+CONFIG_NFILE_DESCRIPTORS=8
+CONFIG_NSH_ARCHINIT=y
+CONFIG_NSH_BUILTIN_APPS=y
+CONFIG_NSH_FILEIOSIZE=512
+CONFIG_NSH_LINELEN=64
+CONFIG_NSH_READLINE=y
+CONFIG_RAM_SIZE=1048576
+CONFIG_RAM_START=0x20200000
+CONFIG_READLINE_CMD_HISTORY=y
+CONFIG_RR_INTERVAL=200
+CONFIG_SCHED_LPWORK=y
+CONFIG_START_DAY=14
+CONFIG_START_MONTH=3
+CONFIG_SYSTEM_DHCPC_RENEW=y
+CONFIG_SYSTEM_NSH=y
+CONFIG_SYSTEM_PING6=y
+CONFIG_SYSTEM_PING=y
+CONFIG_USER_ENTRYPOINT="nsh_main"
diff --git a/boards/arm/imxrt/imxrt1064-evk/configs/nsh/defconfig b/boards/arm/imxrt/imxrt1064-evk/configs/nsh/defconfig
new file mode 100644
index 0000000..e748f20
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/configs/nsh/defconfig
@@ -0,0 +1,42 @@
+#
+# This file is autogenerated: PLEASE DO NOT EDIT IT.
+#
+# You can use "make menuconfig" to make any modifications to the installed .config file.
+# You can then do "make savedefconfig" to generate a new defconfig file that includes your
+# modifications.
+#
+CONFIG_ARCH="arm"
+CONFIG_ARCH_BOARD="imxrt1064-evk"
+CONFIG_ARCH_BOARD_IMXRT1064_EVK=y
+CONFIG_ARCH_CHIP="imxrt"
+CONFIG_ARCH_CHIP_IMXRT=y
+CONFIG_ARCH_CHIP_MIMXRT1064DVL6A=y
+CONFIG_ARCH_STACKDUMP=y
+CONFIG_ARMV7M_DCACHE=y
+CONFIG_ARMV7M_DCACHE_WRITETHROUGH=y
+CONFIG_ARMV7M_ICACHE=y
+CONFIG_ARMV7M_USEBASEPRI=y
+CONFIG_BOARD_LOOPSPERMSEC=104926
+CONFIG_BUILTIN=y
+CONFIG_FS_PROCFS=y
+CONFIG_IDLETHREAD_STACKSIZE=2048
+CONFIG_IMXRT_LPUART1=y
+CONFIG_INTELHEX_BINARY=y
+CONFIG_LPUART1_SERIAL_CONSOLE=y
+CONFIG_MAX_TASKS=16
+CONFIG_NFILE_DESCRIPTORS=8
+CONFIG_NSH_ARCHINIT=y
+CONFIG_NSH_BUILTIN_APPS=y
+CONFIG_NSH_DISABLE_IFUPDOWN=y
+CONFIG_NSH_FILEIOSIZE=512
+CONFIG_NSH_LINELEN=64
+CONFIG_NSH_READLINE=y
+CONFIG_RAM_SIZE=1048576
+CONFIG_RAM_START=0x20200000
+CONFIG_START_DAY=14
+CONFIG_START_MONTH=3
+CONFIG_SYSTEM_NSH=y
+CONFIG_USER_ENTRYPOINT="nsh_main"
+CONFIG_IMXRT_FLEXSPI1=y
+CONFIG_MTD=y
+CONFIG_MTD_FLEXSPI_NOR=y
diff --git a/boards/arm/imxrt/imxrt1064-evk/configs/nshocram/defconfig b/boards/arm/imxrt/imxrt1064-evk/configs/nshocram/defconfig
new file mode 100644
index 0000000..b5a5ca4
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/configs/nshocram/defconfig
@@ -0,0 +1,44 @@
+#
+# This file is autogenerated: PLEASE DO NOT EDIT IT.
+#
+# You can use "make menuconfig" to make any modifications to the installed .config file.
+# You can then do "make savedefconfig" to generate a new defconfig file that includes your
+# modifications.
+#
+CONFIG_ARCH="arm"
+CONFIG_ARCH_BOARD="imxrt1064-evk"
+CONFIG_ARCH_BOARD_IMXRT1064_EVK=y
+CONFIG_ARCH_CHIP="imxrt"
+CONFIG_ARCH_CHIP_IMXRT=y
+CONFIG_ARCH_CHIP_MIMXRT1064DVL6A=y
+CONFIG_ARCH_STACKDUMP=y
+CONFIG_ARMV7M_DCACHE=y
+CONFIG_ARMV7M_DCACHE_WRITETHROUGH=y
+CONFIG_ARMV7M_DTCM=y
+CONFIG_ARMV7M_ICACHE=y
+CONFIG_ARMV7M_USEBASEPRI=y
+CONFIG_BOARD_LOOPSPERMSEC=104926
+CONFIG_BOOT_RUNFROMISRAM=y
+CONFIG_BUILTIN=y
+CONFIG_FS_PROCFS=y
+CONFIG_IDLETHREAD_STACKSIZE=2048
+CONFIG_IMXRT_BOOTLOADER_HEAP=y
+CONFIG_IMXRT_DTCM_HEAP=y
+CONFIG_IMXRT_LPUART1=y
+CONFIG_INTELHEX_BINARY=y
+CONFIG_LPUART1_SERIAL_CONSOLE=y
+CONFIG_MAX_TASKS=16
+CONFIG_MM_REGIONS=3
+CONFIG_NFILE_DESCRIPTORS=8
+CONFIG_NSH_ARCHINIT=y
+CONFIG_NSH_BUILTIN_APPS=y
+CONFIG_NSH_DISABLE_IFUPDOWN=y
+CONFIG_NSH_FILEIOSIZE=512
+CONFIG_NSH_LINELEN=64
+CONFIG_NSH_READLINE=y
+CONFIG_RAM_SIZE=786432
+CONFIG_RAM_START=0x20200000
+CONFIG_START_DAY=14
+CONFIG_START_MONTH=3
+CONFIG_SYSTEM_NSH=y
+CONFIG_USER_ENTRYPOINT="nsh_main"
diff --git a/boards/arm/imxrt/imxrt1064-evk/include/board.h b/boards/arm/imxrt/imxrt1064-evk/include/board.h
new file mode 100644
index 0000000..d318b31
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/include/board.h
@@ -0,0 +1,372 @@
+/****************************************************************************
+ * boards/arm/imxrt/imxrt1064-evk/include/board.h
+ *
+ *   Copyright (C) 2018-2019 Gregory Nutt. All rights reserved.
+ *   Authors: Gregory Nutt <gn...@nuttx.org>
+ *            David Sidrane <da...@nscdg.com>
+ *            Dave Marples <da...@marples.net>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+#ifndef __BOARDS_ARM_IMXRT_IMXRT1064_EVK_INCLUDE_BOARD_H
+#define __BOARDS_ARM_IMXRT_IMXRT1064_EVK_INCLUDE_BOARD_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+/* Do not include i.MXRT header files here. */
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+/* Clocking *****************************************************************/
+
+/* Set VDD_SOC to 1.25V */
+
+#define IMXRT_VDD_SOC (0x12)
+
+/* Set Arm PLL (PLL1) to  fOut    = (24Mhz * ARM_PLL_DIV_SELECT/2) /
+ *                                  ARM_PODF_DIVISOR
+ *                        600Mhz  = (24Mhz * ARM_PLL_DIV_SELECT/2) /
+ *                                  ARM_PODF_DIVISOR
+ *                        ARM_PLL_DIV_SELECT = 100
+ *                        ARM_PODF_DIVISOR   = 2
+ *                        600Mhz  = (24Mhz * 100/2) / 2
+ *
+ *     AHB_CLOCK_ROOT             = PLL1fOut / IMXRT_AHB_PODF_DIVIDER
+ *     1Hz to 600 MHz             = 600Mhz / IMXRT_ARM_CLOCK_DIVIDER
+ *                        IMXRT_ARM_CLOCK_DIVIDER = 1
+ *                        600Mhz  = 600Mhz / 1
+ *
+ *     PRE_PERIPH_CLK_SEL         = PRE_PERIPH_CLK_SEL_PLL1
+ *     PERIPH_CLK_SEL             = 1 (0 select PERIPH_CLK2_PODF,
+ *                                     1 select PRE_PERIPH_CLK_SEL_PLL1)
+ *     PERIPH_CLK                 = 600Mhz
+ *
+ *     IPG_CLOCK_ROOT             = AHB_CLOCK_ROOT / IMXRT_IPG_PODF_DIVIDER
+ *                       IMXRT_IPG_PODF_DIVIDER = 4
+ *                       150Mhz = 600Mhz / 4
+ *
+ *     PRECLK_CLOCK_ROOT          = IPG_CLOCK_ROOT /
+ *                                  IMXRT_PERCLK_PODF_DIVIDER
+ *                       IMXRT_PERCLK_PODF_DIVIDER = 9
+ *                       16.6Mhz  = 150Mhz / 9
+ *
+ *     SEMC_CLK_ROOT              = 600Mhz / IMXRT_SEMC_PODF_DIVIDER
+ *                                  (labeled AIX_PODF in 18.2)
+ *                       IMXRT_SEMC_PODF_DIVIDER = 8
+ *                       75Mhz    = 600Mhz / 8
+ *
+ * Set Sys PLL (PLL2) to  fOut    = (24Mhz * (20+(2*(DIV_SELECT)))
+ *                        528Mhz  = (24Mhz * (20+(2*(1)))
+ *
+ * Set USB1 PLL (PLL3) to fOut    = (24Mhz * 20)
+ *                         480Mhz = (24Mhz * 20)
+ *
+ * Set LPSPI PLL3 PFD0 to fOut    = (480Mhz / 12 * 18)
+ *                        720Mhz  = (480Mhz / 12 * 18)
+ *                         90Mhz  = (720Mhz / LSPI_PODF_DIVIDER)
+ *
+ * Set LPI2C PLL3 / 8 to   fOut   = (480Mhz / 8)
+ *                         60Mhz  = (480Mhz / 8)
+ *                         12Mhz  = (60Mhz / LSPI_PODF_DIVIDER)
+ *
+ * These clock frequencies can be verified via the CCM_CLKO1 pin and sending
+ * the appropriate clock to it with something like;
+ *
+ *   putreg32( <Clk number> | CCM_CCOSR_CLKO1_EN ,   IMXRT_CCM_CCOSR);
+ *   imxrt_config_gpio(GPIO_CCM_CLKO1);
+ */
+
+#define BOARD_XTAL_FREQUENCY       24000000
+#define IMXRT_PRE_PERIPH_CLK_SEL   CCM_CBCMR_PRE_PERIPH_CLK_SEL_PLL1
+#define IMXRT_PERIPH_CLK_SEL       CCM_CBCDR_PERIPH_CLK_SEL_PRE_PERIPH
+#define IMXRT_ARM_PLL_DIV_SELECT   100
+#define IMXRT_ARM_PODF_DIVIDER     2
+#define IMXRT_AHB_PODF_DIVIDER     1
+#define IMXRT_IPG_PODF_DIVIDER     4
+#define IMXRT_PERCLK_CLK_SEL       CCM_CSCMR1_PERCLK_CLK_SEL_IPG_CLK_ROOT
+#define IMXRT_PERCLK_PODF_DIVIDER  9
+#define IMXRT_SEMC_PODF_DIVIDER    8
+
+#define IMXRT_LPSPI_CLK_SELECT     CCM_CBCMR_LPSPI_CLK_SEL_PLL3_PFD0
+#define IMXRT_LSPI_PODF_DIVIDER    8
+
+#define IMXRT_LPI2C_CLK_SELECT     CCM_CSCDR2_LPI2C_CLK_SEL_PLL3_60M
+#define IMXRT_LSI2C_PODF_DIVIDER   5
+
+#define IMXRT_CAN_CLK_SELECT       CCM_CSCMR2_CAN_CLK_SEL_PLL3_SW_80
+#define IMXRT_CAN_PODF_DIVIDER     1
+
+#define IMXRT_SYS_PLL_SELECT       CCM_ANALOG_PLL_SYS_DIV_SELECT_22
+
+#define IMXRT_USB1_PLL_DIV_SELECT  CCM_ANALOG_PLL_USB1_DIV_SELECT_20
+
+#define BOARD_CPU_FREQUENCY \
+  (BOARD_XTAL_FREQUENCY * (IMXRT_ARM_PLL_DIV_SELECT / 2)) / IMXRT_ARM_PODF_DIVIDER
+
+/* Define this to enable tracing */
+
+#if 0
+#  define IMXRT_TRACE_PODF_DIVIDER 1
+#  define IMXRT_TRACE_CLK_SELECT   CCM_CBCMR_TRACE_CLK_SEL_PLL2_PFD0
+#endif
+
+/* LED definitions **********************************************************/
+
+/* There are four LED status indicators located on the EVK Board.
+ * The functions of these LEDs include:
+ *
+ *   - Main Power Supply(D3)
+ *     Green: DC 5V main supply is normal.
+ *     Red:   J2 input voltage is over 5.6V.
+ *     Off:   The board is not powered.
+ *   - Reset RED LED(D15)
+ *   - OpenSDA LED(D16)
+ *   - USER LED(D18)
+ *
+ * Only a single LED, D18, is under software control.
+ */
+
+/* LED index values for use with board_userled() */
+
+#define BOARD_USERLED     0
+#define BOARD_NLEDS       1
+
+/* LED bits for use with board_userled_all() */
+
+#define BOARD_USERLED_BIT (1 << BOARD_USERLED)
+
+/* This LED is not used by the board port unless CONFIG_ARCH_LEDS is
+ * defined.  In that case, the usage by the board port is defined in
+ * include/board.h and src/imxrt_autoleds.c. The LED is used to encode
+ * OS-related events as follows:
+ *
+ *   -------------------- ----------------------------- ------
+ *   SYMBOL                   Meaning                   LED
+ *   -------------------- ----------------------------- ------
+ */
+
+#define LED_STARTED       0  /* NuttX has been started  OFF    */
+#define LED_HEAPALLOCATE  0  /* Heap has been allocated OFF    */
+#define LED_IRQSENABLED   0  /* Interrupts enabled      OFF    */
+#define LED_STACKCREATED  1  /* Idle stack created      ON     */
+#define LED_INIRQ         2  /* In an interrupt         N/C    */
+#define LED_SIGNAL        2  /* In a signal handler     N/C    */
+#define LED_ASSERTION     2  /* An assertion failed     N/C    */
+#define LED_PANIC         3  /* The system has crashed  FLASH  */
+#undef  LED_IDLE             /* Not used                       */
+
+/* Thus if the LED is statically on, NuttX has successfully  booted and is,
+ * apparently, running normally.  If the LED is flashing at approximately
+ * 2Hz, then a fatal error has been detected and the system has halted.
+ */
+
+/* Button definitions *******************************************************/
+
+/* The IMXRT board has one external user button
+ *
+ * 1. SW8 (IRQ88)   GPIO5-00
+ */
+
+#define BUTTON_SW8        0
+#define NUM_BUTTONS       1
+
+#define BUTTON_SW8_BIT    (1 << BUTTON_SW8)
+
+/* SDIO *********************************************************************/
+
+/* Pin drive characteristics - drive strength in particular may need tuning
+ * for specific boards, but has been checked by scope on the EVKB to make
+ * sure shapes are square with minimal ringing.
+ */
+
+#define PIN_USDHC1_D0     (GPIO_USDHC1_DATA0_1 | IOMUX_USDHC1_DATAX_DEFAULT)
+#define PIN_USDHC1_D1     (GPIO_USDHC1_DATA1_1 | IOMUX_USDHC1_DATAX_DEFAULT)
+#define PIN_USDHC1_D2     (GPIO_USDHC1_DATA2_1 | IOMUX_USDHC1_DATAX_DEFAULT)
+#define PIN_USDHC1_D3     (GPIO_USDHC1_DATA3_1 | IOMUX_USDHC1_DATAX_DEFAULT)
+#define PIN_USDHC1_DCLK   (GPIO_USDHC1_CLK_1   | IOMUX_USDHC1_CLK_DEFAULT)
+#define PIN_USDHC1_CMD    (GPIO_USDHC1_CMD_1   | IOMUX_USDHC1_CMD_DEFAULT)
+#define PIN_USDHC1_CD     (GPIO_USDHC1_CD_2    | IOMUX_USDHC1_CLK_DEFAULT)
+
+/* 386 KHz for initial inquiry stuff */
+
+#define BOARD_USDHC_IDMODE_PRESCALER    USDHC_SYSCTL_SDCLKFS_DIV256
+#define BOARD_USDHC_IDMODE_DIVISOR      USDHC_SYSCTL_DVS_DIV(2)
+
+/* 24.8MHz for other modes */
+
+#define BOARD_USDHC_MMCMODE_PRESCALER   USDHC_SYSCTL_SDCLKFS_DIV8
+#define BOARD_USDHC_MMCMODE_DIVISOR     USDHC_SYSCTL_DVS_DIV(1)
+
+#define BOARD_USDHC_SD1MODE_PRESCALER   USDHC_SYSCTL_SDCLKFS_DIV8
+#define BOARD_USDHC_SD1MODE_DIVISOR     USDHC_SYSCTL_DVS_DIV(1)
+
+#define BOARD_USDHC_SD4MODE_PRESCALER   USDHC_SYSCTL_SDCLKFS_DIV8
+#define BOARD_USDHC_SD4MODE_DIVISOR     USDHC_SYSCTL_DVS_DIV(1)
+
+/* LCD **********************************************************************/
+
+#ifdef CONFIG_IMXRT_LCD
+/* LCD controller */
+
+#  define GPIO_LCD_DATA23    (GPIO_LCD_DATA23_1 | IOMUX_LCD_DEFAULT)
+#  define GPIO_LCD_DATA22    (GPIO_LCD_DATA22_1 | IOMUX_LCD_DEFAULT)
+#  define GPIO_LCD_DATA21    (GPIO_LCD_DATA21_1 | IOMUX_LCD_DEFAULT)
+#  define GPIO_LCD_DATA20    (GPIO_LCD_DATA20_1 | IOMUX_LCD_DEFAULT)
+#  define GPIO_LCD_DATA19    (GPIO_LCD_DATA19_1 | IOMUX_LCD_DEFAULT)
+#  define GPIO_LCD_DATA18    (GPIO_LCD_DATA18_1 | IOMUX_LCD_DEFAULT)
+#  define GPIO_LCD_DATA17    (GPIO_LCD_DATA17_1 | IOMUX_LCD_DEFAULT)
+#  define GPIO_LCD_DATA16    (GPIO_LCD_DATA16_1 | IOMUX_LCD_DEFAULT)
+#  define GPIO_LCD_DATA15    (GPIO_LCD_DATA15_1 | IOMUX_LCD_DEFAULT)
+#  define GPIO_LCD_DATA14    (GPIO_LCD_DATA14_1 | IOMUX_LCD_DEFAULT)
+#  define GPIO_LCD_DATA13    (GPIO_LCD_DATA13_1 | IOMUX_LCD_DEFAULT)
+#  define GPIO_LCD_DATA12    (GPIO_LCD_DATA12_1 | IOMUX_LCD_DEFAULT)
+#  define GPIO_LCD_DATA11    (GPIO_LCD_DATA11_1 | IOMUX_LCD_DEFAULT)
+#  define GPIO_LCD_DATA10    (GPIO_LCD_DATA10_1 | IOMUX_LCD_DEFAULT)
+#  define GPIO_LCD_DATA09    (GPIO_LCD_DATA09_1 | IOMUX_LCD_DEFAULT)
+#  define GPIO_LCD_DATA08    (GPIO_LCD_DATA08_1 | IOMUX_LCD_DEFAULT)
+#  define GPIO_LCD_DATA07    (GPIO_LCD_DATA07_1 | IOMUX_LCD_DEFAULT)
+#  define GPIO_LCD_DATA06    (GPIO_LCD_DATA06_1 | IOMUX_LCD_DEFAULT)
+#  define GPIO_LCD_DATA05    (GPIO_LCD_DATA05_1 | IOMUX_LCD_DEFAULT)
+#  define GPIO_LCD_DATA04    (GPIO_LCD_DATA04_1 | IOMUX_LCD_DEFAULT)
+#  define GPIO_LCD_DATA03    (GPIO_LCD_DATA03_1 | IOMUX_LCD_DEFAULT)
+#  define GPIO_LCD_DATA02    (GPIO_LCD_DATA02_1 | IOMUX_LCD_DEFAULT)
+#  define GPIO_LCD_DATA01    (GPIO_LCD_DATA01_1 | IOMUX_LCD_DEFAULT)
+#  define GPIO_LCD_DATA00    (GPIO_LCD_DATA00_1 | IOMUX_LCD_DEFAULT)
+#  define GPIO_LCD_ENABLE    (GPIO_LCD_ENABLE_1 | IOMUX_LCD_DEFAULT)
+#  define GPIO_LCD_HSYNC     (GPIO_LCD_HSYNC_1 | IOMUX_LCD_DEFAULT)
+#  define GPIO_LCD_VSYNC     (GPIO_LCD_VSYNC_1 | IOMUX_LCD_DEFAULT)
+#  define GPIO_LCD_CLK       (GPIO_LCD_CLK_1 | IOMUX_LCD_DEFAULT)
+#endif
+
+/* ETH Disambiguation *******************************************************/
+
+#define GPIO_ENET_TX_DATA00  (GPIO_ENET_TX_DATA00_1| \
+                              IOMUX_ENET_DATA_DEFAULT)                    /* GPIO_B1_07 */
+#define GPIO_ENET_TX_DATA01  (GPIO_ENET_TX_DATA01_1| \
+                              IOMUX_ENET_DATA_DEFAULT)                    /* GPIO_B1_08 */
+#define GPIO_ENET_RX_DATA00  (GPIO_ENET_RX_DATA00_1| \
+                              IOMUX_ENET_DATA_DEFAULT)                    /* GPIO_B1_04 */
+#define GPIO_ENET_RX_DATA01  (GPIO_ENET_RX_DATA01_1| \
+                              IOMUX_ENET_DATA_DEFAULT)                    /* GPIO_B1_05 */
+#define GPIO_ENET_MDIO       (GPIO_ENET_MDIO_3|IOMUX_ENET_MDIO_DEFAULT)   /* GPIO_EMC_41 */
+#define GPIO_ENET_MDC        (GPIO_ENET_MDC_3|IOMUX_ENET_MDC_DEFAULT)     /* GPIO_EMC_40 */
+#define GPIO_ENET_RX_EN      (GPIO_ENET_RX_EN_1|IOMUX_ENET_EN_DEFAULT)    /* GPIO_B1_06 */
+#define GPIO_ENET_RX_ER      (GPIO_ENET_RX_ER_1|IOMUX_ENET_RXERR_DEFAULT) /* GPIO_B1_11 */
+#define GPIO_ENET_TX_CLK     (GPIO_ENET_REF_CLK_2|\
+                              IOMUX_ENET_TX_CLK_DEFAULT)                  /* GPIO_B1_10 */
+#define GPIO_ENET_TX_EN      (GPIO_ENET_TX_EN_1|IOMUX_ENET_EN_DEFAULT)    /* GPIO_B1_09 */
+
+/* PIO Disambiguation *******************************************************/
+
+/* LPUARTs
+ *
+ * Virtual console port provided by OpenSDA on UART1 and
+ * Arduino RS-232 Shield on UART3.
+ *
+ */
+
+#define GPIO_LPUART1_RX      (GPIO_LPUART1_RX_1|IOMUX_UART_DEFAULT) /* GPIO_AD_B0_13 */
+#define GPIO_LPUART1_TX      (GPIO_LPUART1_TX_1|IOMUX_UART_DEFAULT) /* GPIO_AD_B0_12 */
+#define GPIO_LPUART3_RX      (GPIO_LPUART3_RX_1|IOMUX_UART_DEFAULT) /* GPIO_AD_B1_07 */
+#define GPIO_LPUART3_TX      (GPIO_LPUART3_TX_1|IOMUX_UART_DEFAULT) /* GPIO_AD_B1_06 */
+
+/* LPI2Cs
+ *
+ * Arduino Connector LPI2C1 and audio/gyro IO on LPI2C3.
+ */
+
+#define GPIO_LPI2C1_SDA      (GPIO_LPI2C1_SDA_2|IOMUX_LPI2C_DEFAULT) /* GPIO_AD_B1_01 */
+#define GPIO_LPI2C1_SCL      (GPIO_LPI2C1_SCL_2|IOMUX_LPI2C_DEFAULT) /* GPIO_AD_B1_00 */
+#define GPIO_LPI2C3_SDA      (GPIO_LPI2C3_SDA_2|IOMUX_LPI2C_DEFAULT) /* GPIO_AD_B1_01 */
+#define GPIO_LPI2C3_SCL      (GPIO_LPI2C3_SCL_2|IOMUX_LPI2C_DEFAULT) /* GPIO_AD_B1_00 */
+
+/* LPSPI
+ *
+ * Arduino Connector
+ *
+ *   J24 D09   GPIO_AD_B0_02  LPSPI3_SDI
+ *   J24 D14   GPIO_AD_B0_01  LPSPI3_SDO
+ *   J24 D15   GPIO_AD_B0_00  LPSPI3_SCK
+ */
+
+#define GPIO_LPSPI3_SCK      (GPIO_LPSPI3_SCK_2|IOMUX_LPSPI_DEFAULT) /* GPIO_AD_B0_00 */
+#define GPIO_LPSPI3_MISO     (GPIO_LPSPI3_SDI_2|IOMUX_LPSPI_DEFAULT) /* GPIO_AD_B0_02 */
+#define GPIO_LPSPI3_MOSI     (GPIO_LPSPI3_SDO_2|IOMUX_LPSPI_DEFAULT) /* GPIO_AD_B0_01 */
+
+/* FlexCAN */
+
+#define GPIO_FLEXCAN2_TX     (GPIO_FLEXCAN2_TX_3|IOMUX_CAN_DEFAULT)
+#define GPIO_FLEXCAN2_RX     (GPIO_FLEXCAN2_RX_3|IOMUX_CAN_DEFAULT)
+
+#define GPIO_FLEXCAN3_TX     (GPIO_FLEXCAN3_TX_2|IOMUX_CAN_DEFAULT)
+#define GPIO_FLEXCAN3_RX     (GPIO_FLEXCAN3_RX_2|IOMUX_CAN_DEFAULT)
+
+/* FLEXSPI */
+
+#define GPIO_FLEXSPI_DQS     (GPIO_FLEXSPIA_DQS_2|IOMUX_FLEXSPI_DEFAULT)
+#define GPIO_FLEXSPI_CS      (GPIO_FLEXSPIA_SS0_2|IOMUX_FLEXSPI_DEFAULT)
+#define GPIO_FLEXSPI_IO0     (GPIO_FLEXSPIA_DATA00_2|IOMUX_FLEXSPI_DEFAULT)
+#define GPIO_FLEXSPI_IO1     (GPIO_FLEXSPIA_DATA01_2|IOMUX_FLEXSPI_DEFAULT)
+#define GPIO_FLEXSPI_IO2     (GPIO_FLEXSPIA_DATA02_2|IOMUX_FLEXSPI_DEFAULT)
+#define GPIO_FLEXSPI_IO3     (GPIO_FLEXSPIA_DATA03_2|IOMUX_FLEXSPI_DEFAULT)
+#define GPIO_FLEXSPI_SCK     (GPIO_FLEXSPIA_SCLK_2|IOMUX_FLEXSPI_DEFAULT)
+
+/****************************************************************************
+ * Public Types
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public Data
+ ****************************************************************************/
+
+#ifndef __ASSEMBLY__
+
+#undef EXTERN
+#if defined(__cplusplus)
+#define EXTERN extern "C"
+extern "C"
+{
+#else
+#define EXTERN extern
+#endif
+
+#undef EXTERN
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* __ASSEMBLY__ */
+#endif /* __BOARDS_ARM_IMXRT_IMXRT1064_EVK_INCLUDE_BOARD_H */
diff --git a/boards/arm/imxrt/imxrt1064-evk/kernel/Makefile b/boards/arm/imxrt/imxrt1064-evk/kernel/Makefile
new file mode 100644
index 0000000..301e7d5
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/kernel/Makefile
@@ -0,0 +1,103 @@
+############################################################################
+# boards/arm/imxrt/imxrt1064-evk/kernel/Makefile
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.  The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+############################################################################
+
+include $(TOPDIR)/Make.defs
+
+# The entry point name (if none is provided in the .config file)
+
+CONFIG_USER_ENTRYPOINT ?= user_start
+ENTRYPT = $(patsubst "%",%,$(CONFIG_USER_ENTRYPOINT))
+
+# Get the paths to the libraries and the links script path in format that
+# is appropriate for the host OS
+
+ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
+  # Windows-native toolchains
+  USER_LIBPATHS = ${shell for path in $(USERLIBS); do dir=`dirname $(TOPDIR)$(DELIM)$$path`;echo "-L\"`cygpath -w $$dir`\"";done}
+  USER_LDSCRIPT = -T "${shell cygpath -w $(BOARD_DIR)$(DELIM)scripts$(DELIM)memory.ld}"
+  USER_LDSCRIPT += -T "${shell cygpath -w $(BOARD_DIR)$(DELIM)scripts$(DELIM)user-space.ld}"
+  USER_HEXFILE += "${shell cygpath -w $(TOPDIR)$(DELIM)nuttx_user.hex}"
+  USER_SRECFILE += "${shell cygpath -w $(TOPDIR)$(DELIM)nuttx_user.srec}"
+  USER_BINFILE += "${shell cygpath -w $(TOPDIR)$(DELIM)nuttx_user.bin}"
+else
+  # Linux/Cygwin-native toolchain
+  USER_LIBPATHS = $(addprefix -L$(TOPDIR)$(DELIM),$(dir $(USERLIBS)))
+  USER_LDSCRIPT = -T$(BOARD_DIR)$(DELIM)scripts$(DELIM)memory.ld
+  USER_LDSCRIPT += -T$(BOARD_DIR)$(DELIM)scripts$(DELIM)user-space.ld
+  USER_HEXFILE += "$(TOPDIR)$(DELIM)nuttx_user.hex"
+  USER_SRECFILE += "$(TOPDIR)$(DELIM)nuttx_user.srec"
+  USER_BINFILE += "$(TOPDIR)$(DELIM)nuttx_user.bin"
+endif
+
+USER_LDFLAGS = --undefined=$(ENTRYPT) --entry=$(ENTRYPT) $(USER_LDSCRIPT)
+USER_LDLIBS = $(patsubst lib%,-l%,$(basename $(notdir $(USERLIBS))))
+USER_LIBGCC = "${shell "$(CC)" $(ARCHCPUFLAGS) -print-libgcc-file-name}"
+
+# Source files
+
+CSRCS = imxrt_userspace.c
+COBJS = $(CSRCS:.c=$(OBJEXT))
+OBJS  = $(COBJS)
+
+# Targets:
+
+all: $(TOPDIR)$(DELIM)nuttx_user.elf $(TOPDIR)$(DELIM)User.map
+.PHONY: nuttx_user.elf depend clean distclean
+
+$(COBJS): %$(OBJEXT): %.c
+	$(call COMPILE, $<, $@)
+
+# Create the nuttx_user.elf file containing all of the user-mode code
+
+nuttx_user.elf: $(OBJS)
+	$(Q) $(LD) -o $@ $(USER_LDFLAGS) $(USER_LIBPATHS) $(OBJS) --start-group $(USER_LDLIBS) --end-group $(USER_LIBGCC)
+
+$(TOPDIR)$(DELIM)nuttx_user.elf: nuttx_user.elf
+	@echo "LD: nuttx_user.elf"
+	$(Q) cp -a nuttx_user.elf $(TOPDIR)$(DELIM)nuttx_user.elf
+ifeq ($(CONFIG_INTELHEX_BINARY),y)
+	@echo "CP: nuttx_user.hex"
+	$(Q) $(OBJCOPY) $(OBJCOPYARGS) -O ihex nuttx_user.elf $(USER_HEXFILE)
+endif
+ifeq ($(CONFIG_MOTOROLA_SREC),y)
+	@echo "CP: nuttx_user.srec"
+	$(Q) $(OBJCOPY) $(OBJCOPYARGS) -O srec nuttx_user.elf $(USER_SRECFILE)
+endif
+ifeq ($(CONFIG_RAW_BINARY),y)
+	@echo "CP: nuttx_user.bin"
+	$(Q) $(OBJCOPY) $(OBJCOPYARGS) -O binary nuttx_user.elf $(USER_BINFILE)
+endif
+
+$(TOPDIR)$(DELIM)User.map: nuttx_user.elf
+	@echo "MK: User.map"
+	$(Q) $(NM) nuttx_user.elf >$(TOPDIR)$(DELIM)User.map
+	$(Q) $(CROSSDEV)size nuttx_user.elf
+
+.depend:
+
+depend: .depend
+
+clean:
+	$(call DELFILE, nuttx_user.elf)
+	$(call DELFILE, "$(TOPDIR)$(DELIM)nuttx_user.*")
+	$(call DELFILE, "$(TOPDIR)$(DELIM)User.map")
+	$(call CLEAN)
+
+distclean: clean
diff --git a/boards/arm/imxrt/imxrt1064-evk/kernel/imxrt_userspace.c b/boards/arm/imxrt/imxrt1064-evk/kernel/imxrt_userspace.c
new file mode 100644
index 0000000..7486a8e
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/kernel/imxrt_userspace.c
@@ -0,0 +1,131 @@
+/****************************************************************************
+ * boards/arm/imxrt/imxrt1064-evk/kernel/imxrt_userspace.c
+ *
+ *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
+ *   Author: Gregory Nutt <gn...@nuttx.org>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <stdlib.h>
+
+#include <nuttx/userspace.h>
+#include <nuttx/wqueue.h>
+#include <nuttx/mm/mm.h>
+
+#if defined(CONFIG_BUILD_PROTECTED) && !defined(__KERNEL__)
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+/* Configuration ************************************************************/
+
+#ifndef CONFIG_NUTTX_USERSPACE
+#  error "CONFIG_NUTTX_USERSPACE not defined"
+#endif
+
+#if CONFIG_NUTTX_USERSPACE != 0x60200000
+#  error "CONFIG_NUTTX_USERSPACE must be 0x60200000 to match user-space.ld"
+#endif
+
+/****************************************************************************
+ * Public Data
+ ****************************************************************************/
+
+/* These 'addresses' of these values are setup by the linker script.
+ * They are not actual uint32_t storage locations!
+ * They are only used meaningfully in the following way:
+ *
+ *  - The linker script defines, for example, the symbol_sdata.
+ *  - The declareion extern uint32_t _sdata; makes C happy.  C will believe
+ *    that the value _sdata is the address of a uint32_t variable _data (it
+ *    is not!).
+ *  - We can recoved the linker value then by simply taking the address of
+ *    of _data.  like:  uint32_t *pdata = &_sdata;
+ */
+
+extern uint32_t _stext;           /* Start of .text */
+extern uint32_t _etext;           /* End_1 of .text + .rodata */
+extern const uint32_t _eronly;    /* End+1 of read only section (.text + .rodata) */
+extern uint32_t _sdata;           /* Start of .data */
+extern uint32_t _edata;           /* End+1 of .data */
+extern uint32_t _sbss;            /* Start of .bss */
+extern uint32_t _ebss;            /* End+1 of .bss */
+
+/* This is the user space entry point */
+
+int CONFIG_USER_ENTRYPOINT(int argc, char *argv[]);
+
+const struct userspace_s userspace __attribute__ ((section (".userspace"))) =
+{
+  /* General memory map */
+
+  .us_entrypoint    = (main_t)CONFIG_USER_ENTRYPOINT,
+  .us_textstart     = (uintptr_t)&_stext,
+  .us_textend       = (uintptr_t)&_etext,
+  .us_datasource    = (uintptr_t)&_eronly,
+  .us_datastart     = (uintptr_t)&_sdata,
+  .us_dataend       = (uintptr_t)&_edata,
+  .us_bssstart      = (uintptr_t)&_sbss,
+  .us_bssend        = (uintptr_t)&_ebss,
+
+  /* Memory manager heap structure */
+
+  .us_heap          = &g_mmheap,
+
+  /* Task/thread startup routines */
+
+  .task_startup     = nxtask_startup,
+#ifndef CONFIG_DISABLE_PTHREAD
+  .pthread_startup  = pthread_startup,
+#endif
+
+  /* Signal handler trampoline */
+
+  .signal_handler   = up_signal_handler,
+
+  /* User-space work queue support (declared in include/nuttx/wqueue.h) */
+
+#ifdef CONFIG_LIB_USRWORK
+  .work_usrstart    = work_usrstart,
+#endif
+};
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+#endif /* CONFIG_BUILD_PROTECTED && !__KERNEL__ */
diff --git a/boards/arm/imxrt/imxrt1064-evk/scripts/Make.defs b/boards/arm/imxrt/imxrt1064-evk/scripts/Make.defs
new file mode 100644
index 0000000..576e034
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/scripts/Make.defs
@@ -0,0 +1,83 @@
+############################################################################
+# boards/arm/imxrt/imxrt1064-evk/scripts/Make.defs
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.  The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+############################################################################
+
+include $(TOPDIR)/.config
+include $(TOPDIR)/tools/Config.mk
+include $(TOPDIR)/arch/arm/src/armv7-m/Toolchain.defs
+
+ifeq ($(CONFIG_BOOT_RUNFROMFLASH),y)
+  LDSCRIPT = flash.ld
+else ifeq ($(CONFIG_BOOT_RUNFROMISRAM),y)
+  LDSCRIPT = flash-ocram.ld
+endif
+
+ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
+  ARCHSCRIPT = -T "${shell cygpath -w $(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT)}"
+else
+  ARCHSCRIPT = -T$(BOARD_DIR)$(DELIM)scripts$(DELIM)$(LDSCRIPT)
+endif
+
+ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
+  ARCHOPTIMIZATION = -g
+endif
+
+ifneq ($(CONFIG_DEBUG_NOOPT),y)
+  ARCHOPTIMIZATION += $(MAXOPTIMIZATION)
+endif
+
+ARCHCFLAGS = -fno-builtin
+ARCHCXXFLAGS = -fno-builtin -fno-exceptions -fcheck-new -fno-rtti
+ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow -Wundef -fno-strict-aliasing
+ARCHWARNINGSXX = -Wall -Wshadow -Wundef
+ARCHPICFLAGS = -fpic -msingle-pic-base -mpic-register=r10
+
+CFLAGS := $(ARCHCFLAGS) $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe
+CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS)
+CXXFLAGS := $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe
+CXXPICFLAGS = $(ARCHPICFLAGS) $(CXXFLAGS)
+CPPFLAGS := $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS)
+AFLAGS := $(CFLAGS) -D__ASSEMBLY__
+
+NXFLATLDFLAGS1 = -r -d -warn-common
+NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat-pcrel.ld -no-check-sections
+LDNXFLATFLAGS = -e main -s 2048
+
+# Loadable module definitions
+
+CMODULEFLAGS = $(CFLAGS) -mlong-calls # --target1-abs
+
+LDMODULEFLAGS = -r -e module_initialize
+ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
+  LDMODULEFLAGS += -T "${shell cygpath -w $(TOPDIR)/libs/libc/modlib/gnu-elf.ld}"
+else
+  LDMODULEFLAGS += -T $(TOPDIR)/libs/libc/modlib/gnu-elf.ld
+endif
+
+ifneq ($(CROSSDEV),arm-nuttx-elf-)
+  LDFLAGS += -nostartfiles -nodefaultlibs
+ifeq ($(CONFIG_CYGWIN_WINTOOL),y)
+  LDFLAGS += -Map="${shell cygpath -w $(TOPDIR)/nuttx.map}"
+else
+  LDFLAGS += -Map=$(TOPDIR)/nuttx.map
+endif
+endif
+ifeq ($(CONFIG_DEBUG_SYMBOLS),y)
+  LDFLAGS += -g
+endif
diff --git a/boards/arm/imxrt/imxrt1064-evk/scripts/flash-ocram.ld b/boards/arm/imxrt/imxrt1064-evk/scripts/flash-ocram.ld
new file mode 100644
index 0000000..81bb550
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/scripts/flash-ocram.ld
@@ -0,0 +1,202 @@
+/****************************************************************************
+ * boards/arm/imxrt/imxrt1064-evk/scripts/flash-ocram.ld
+ *
+ *   Copyright (C) 2018, 2020 Gregory Nutt. All rights reserved.
+ *   Authors: Ivan Ucherdzhiev <iv...@gmail.com>
+ *            David Sidrane <da...@nscdg.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/* Specify the memory areas */
+
+/* The imxrt1064-evk has 8MiB of QSPI FLASH beginning at address,
+ * 0x0060:0000, Upto 512Kb of DTCM RAM beginning at 0x2000:0000, and 1MiB OCRAM
+ * beginning at 0x2020:0000.  Neither DTCM or SDRAM are used in this
+ * configuration.
+ *
+ * The default flexram setting on the iMXRT 1064 is
+ * 256Kib to OCRRAM, 128Kib ITCM and 128Kib DTCM.
+ * This can be changed by using a dcd by minipulating
+ * IOMUX GPR16 and GPR17.
+ * The configuartion we will use is 384Kib to OCRRAM, 0Kib ITCM and
+ * 128Kib DTCM.
+ *
+ * This is the OCRAM inker script.
+ * The NXP ROM bootloader will move the FLASH image to OCRAM.
+ * We must reserve 32K for the bootloader' OCRAM usage from  the OCRAM Size
+ * and an additinal 8K for the ivt_s which is IVT_SIZE(8K) This 40K can be
+ * reused once the application is running.
+ *
+ *      0x2020:A000 to 0x202d:ffff - The application Image's vector table
+ *      0x2020:8000 to 0x2020:A000 - IVT
+ *      0x2020:0000 to 0x2020:7fff - NXP ROM bootloader.
+ *
+ * We artificially split the FLASH to allow locating sections that we do not
+ * want loaded inoto OCRAM. This is to save on OCRAM where the speen of the
+ * code does not matter.
+ *
+ */
+
+MEMORY
+{
+  flash    (rx)  : ORIGIN = 0x70000000, LENGTH = 3M
+  flashxip (rx)  : ORIGIN = 0x70300000, LENGTH = 1M
+  /*                     Vectors @ boot+ivt   OCRAM2   Flex RAM     Boot  IVT */
+  sram     (rwx) : ORIGIN = 0x2020A000, LENGTH = 512K + 256K + 128K - (32K + 8K)
+  itcm     (rwx) : ORIGIN = 0x00000000, LENGTH = 0K
+  dtcm     (rwx) : ORIGIN = 0x20000000, LENGTH = 128K
+}
+
+OUTPUT_ARCH(arm)
+EXTERN(_vectors)
+EXTERN(g_flash_config)
+EXTERN(g_image_vector_table)
+EXTERN(g_boot_data)
+EXTERN(g_dcd_data)
+
+ENTRY(_stext)
+
+SECTIONS
+{
+    /* Image Vector Table and Boot Data for booting from external flash */
+
+    .boot_hdr : ALIGN(4)
+    {
+        FILL(0xff)
+        __boot_hdr_start__ = ABSOLUTE(.) ;
+        KEEP(*(.boot_hdr.conf))
+        . = 0x1000 ;
+        KEEP(*(.boot_hdr.ivt))
+        . = 0x1020 ;
+        KEEP(*(.boot_hdr.boot_data))
+        . = 0x1030 ;
+        KEEP(*(.boot_hdr.dcd_data))
+        __boot_hdr_end__ = ABSOLUTE(.) ;
+        . = 0x2000 ;
+    } > flash
+
+	/* Catch all the section we want not in OCRAM so that the *(.text .text.*) in flash does not */
+
+    .flashxip : ALIGN(4)
+	{
+		FILL(0xff)
+
+		/* Order matters */
+
+		imxrt_start.o(.text)
+		imxrt_boot.o(.text)
+
+		*(.slow_memory)
+		*(.rodata .rodata.*)
+		KEEP(*(__param*))
+		*(.fixup)
+		*(.gnu.warning)
+		*(.gnu.linkonce.t.*)
+		*(.glue_7)
+		*(.glue_7t)
+		*(.got)
+		*(.gcc_except_table)
+		*(.gnu.linkonce.r.*)
+
+    } > flashxip
+
+    .text :
+    {
+        _stext = ABSOLUTE(.);
+        *(.vectors)
+        *(.text .text.*)
+        _etext = ABSOLUTE(.);
+    } > sram AT > flash
+
+    .init_section :
+    {
+        _sinit = ABSOLUTE(.);
+        *(.init_array .init_array.*)
+        _einit = ABSOLUTE(.);
+    } > flash
+
+    .ARM.extab :
+    {
+        *(.ARM.extab*)
+    } > flash
+
+    .ARM.exidx :
+    {
+        __exidx_start = ABSOLUTE(.);
+        *(.ARM.exidx*)
+        __exidx_end = ABSOLUTE(.);
+    } > flash
+
+    _eronly = ABSOLUTE(.);
+
+    .data :
+    {
+        _sdata = ABSOLUTE(.);
+        *(.data .data.*)
+        *(.gnu.linkonce.d.*)
+        CONSTRUCTORS
+        . = ALIGN(4);
+        _edata = ABSOLUTE(.);
+    } > sram AT > flash
+
+    .ramfunc ALIGN(4):
+    {
+        _sramfuncs = ABSOLUTE(.);
+        *(.ramfunc  .ramfunc.*)
+        _eramfuncs = ABSOLUTE(.);
+    } > sram AT > flash
+
+    _framfuncs = LOADADDR(.ramfunc);
+
+    .bss :
+    {
+        _sbss = ABSOLUTE(.);
+        *(.bss .bss.*)
+        *(.gnu.linkonce.b.*)
+        *(COMMON)
+        . = ALIGN(4);
+        _ebss = ABSOLUTE(.);
+    } > sram
+
+    /* Stabs debugging sections. */
+
+    .stab 0 : { *(.stab) }
+    .stabstr 0 : { *(.stabstr) }
+    .stab.excl 0 : { *(.stab.excl) }
+    .stab.exclstr 0 : { *(.stab.exclstr) }
+    .stab.index 0 : { *(.stab.index) }
+    .stab.indexstr 0 : { *(.stab.indexstr) }
+    .comment 0 : { *(.comment) }
+    .debug_abbrev 0 : { *(.debug_abbrev) }
+    .debug_info 0 : { *(.debug_info) }
+    .debug_line 0 : { *(.debug_line) }
+    .debug_pubnames 0 : { *(.debug_pubnames) }
+    .debug_aranges 0 : { *(.debug_aranges) }
+}
diff --git a/boards/arm/imxrt/imxrt1064-evk/scripts/flash.ld b/boards/arm/imxrt/imxrt1064-evk/scripts/flash.ld
new file mode 100644
index 0000000..d233d15
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/scripts/flash.ld
@@ -0,0 +1,139 @@
+/****************************************************************************
+ * boards/arm/imxrt/imxrt1064-evk/scripts/flash.ld
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+
+/* Specify the memory areas */
+
+MEMORY
+{
+  flash (rx)  : ORIGIN = 0x70000000, LENGTH = 4M
+  sram  (rwx) : ORIGIN = 0x20200000, LENGTH = 512M
+  itcm  (rwx) : ORIGIN = 0x00000000, LENGTH = 128K
+  dtcm  (rwx) : ORIGIN = 0x20000000, LENGTH = 128K
+}
+
+OUTPUT_ARCH(arm)
+EXTERN(_vectors)
+EXTERN(g_flash_config)
+EXTERN(g_image_vector_table)
+EXTERN(g_boot_data)
+
+ENTRY(_stext)
+
+SECTIONS
+{
+    /* Image Vector Table and Boot Data for booting from external flash */
+
+    .boot_hdr : ALIGN(4)
+    {
+        FILL(0xff)
+        __boot_hdr_start__ = ABSOLUTE(.) ;
+        KEEP(*(.boot_hdr.conf))
+        . = 0x1000 ;
+        KEEP(*(.boot_hdr.ivt))
+        . = 0x1020 ;
+        KEEP(*(.boot_hdr.boot_data))
+        . = 0x1030 ;
+        KEEP(*(.boot_hdr.dcd_data))
+        __boot_hdr_end__ = ABSOLUTE(.) ;
+        . = 0x2000 ;
+    } >flash
+
+    .text :
+    {
+        _stext = ABSOLUTE(.);
+        *(.vectors)
+        *(.text .text.*)
+        *(.fixup)
+        *(.gnu.warning)
+        *(.rodata .rodata.*)
+        *(.gnu.linkonce.t.*)
+        *(.glue_7)
+        *(.glue_7t)
+        *(.got)
+        *(.gcc_except_table)
+        *(.gnu.linkonce.r.*)
+        _etext = ABSOLUTE(.);
+    } > flash
+
+    .init_section :
+    {
+        _sinit = ABSOLUTE(.);
+        *(.init_array .init_array.*)
+        _einit = ABSOLUTE(.);
+    } > flash
+
+    .ARM.extab :
+    {
+        *(.ARM.extab*)
+    } > flash
+
+    .ARM.exidx :
+    {
+        __exidx_start = ABSOLUTE(.);
+        *(.ARM.exidx*)
+        __exidx_end = ABSOLUTE(.);
+    } > flash
+
+    _eronly = ABSOLUTE(.);
+
+    .data :
+    {
+        _sdata = ABSOLUTE(.);
+        *(.data .data.*)
+        *(.gnu.linkonce.d.*)
+        CONSTRUCTORS
+        . = ALIGN(4);
+        _edata = ABSOLUTE(.);
+    } > sram AT > flash
+
+    .ramfunc ALIGN(4):
+    {
+        _sramfuncs = ABSOLUTE(.);
+        *(.ramfunc  .ramfunc.*)
+        _eramfuncs = ABSOLUTE(.);
+    } > sram AT > flash
+
+    _framfuncs = LOADADDR(.ramfunc);
+
+    .bss :
+    {
+        _sbss = ABSOLUTE(.);
+        *(.bss .bss.*)
+        *(.gnu.linkonce.b.*)
+        *(COMMON)
+        . = ALIGN(4);
+        _ebss = ABSOLUTE(.);
+    } > sram
+
+    /* Stabs debugging sections. */
+
+    .stab 0 : { *(.stab) }
+    .stabstr 0 : { *(.stabstr) }
+    .stab.excl 0 : { *(.stab.excl) }
+    .stab.exclstr 0 : { *(.stab.exclstr) }
+    .stab.index 0 : { *(.stab.index) }
+    .stab.indexstr 0 : { *(.stab.indexstr) }
+    .comment 0 : { *(.comment) }
+    .debug_abbrev 0 : { *(.debug_abbrev) }
+    .debug_info 0 : { *(.debug_info) }
+    .debug_line 0 : { *(.debug_line) }
+    .debug_pubnames 0 : { *(.debug_pubnames) }
+    .debug_aranges 0 : { *(.debug_aranges) }
+}
diff --git a/boards/arm/imxrt/imxrt1064-evk/scripts/kernel-space.ld b/boards/arm/imxrt/imxrt1064-evk/scripts/kernel-space.ld
new file mode 100644
index 0000000..d6f04d2
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/scripts/kernel-space.ld
@@ -0,0 +1,120 @@
+/****************************************************************************
+ * boards/arm/imxrt/imxrt1064-evk/scripts/kernel-space.ld
+ *
+ *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
+ *   Authors: Gregory Nutt <gn...@nuttx.org>
+ *            David Sidrane <da...@nscdg.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/* NOTE:  This depends on the memory.ld script having been included prior to
+ * this script.
+ */
+
+OUTPUT_ARCH(arm)
+EXTERN(_vectors)
+ENTRY(_stext)
+
+SECTIONS
+{
+  .text :
+  {
+    _stext = ABSOLUTE(.);
+    *(.vectors)
+    *(.text .text.*)
+    *(.fixup)
+    *(.gnu.warning)
+    *(.rodata .rodata.*)
+    *(.gnu.linkonce.t.*)
+    *(.glue_7)
+    *(.glue_7t)
+    *(.got)
+    *(.gcc_except_table)
+    *(.gnu.linkonce.r.*)
+    _etext = ABSOLUTE(.);
+  } > kflash
+
+  .init_section :
+  {
+    _sinit = ABSOLUTE(.);
+    KEEP(*(.init_array .init_array.*))
+    _einit = ABSOLUTE(.);
+  } > kflash
+
+  .ARM.extab :
+  {
+    *(.ARM.extab*)
+  } > kflash
+
+  __exidx_start = ABSOLUTE(.);
+  .ARM.exidx :
+  {
+    *(.ARM.exidx*)
+  } > kflash
+
+  __exidx_end = ABSOLUTE(.);
+
+  _eronly = ABSOLUTE(.);
+
+  .data :
+  {
+    _sdata = ABSOLUTE(.);
+    *(.data .data.*)
+    *(.gnu.linkonce.d.*)
+    CONSTRUCTORS
+    . = ALIGN(4);
+    _edata = ABSOLUTE(.);
+  } > kocram AT > kflash
+
+  .bss :
+  {
+    _sbss = ABSOLUTE(.);
+    *(.bss .bss.*)
+    *(.gnu.linkonce.b.*)
+    *(COMMON)
+    . = ALIGN(4);
+    _ebss = ABSOLUTE(.);
+  } > kocram
+
+  /* Stabs debugging sections */
+
+  .stab 0 : { *(.stab) }
+  .stabstr 0 : { *(.stabstr) }
+  .stab.excl 0 : { *(.stab.excl) }
+  .stab.exclstr 0 : { *(.stab.exclstr) }
+  .stab.index 0 : { *(.stab.index) }
+  .stab.indexstr 0 : { *(.stab.indexstr) }
+  .comment 0 : { *(.comment) }
+  .debug_abbrev 0 : { *(.debug_abbrev) }
+  .debug_info 0 : { *(.debug_info) }
+  .debug_line 0 : { *(.debug_line) }
+  .debug_pubnames 0 : { *(.debug_pubnames) }
+  .debug_aranges 0 : { *(.debug_aranges) }
+}
diff --git a/boards/arm/imxrt/imxrt1064-evk/scripts/memory.ld b/boards/arm/imxrt/imxrt1064-evk/scripts/memory.ld
new file mode 100644
index 0000000..bf053f1
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/scripts/memory.ld
@@ -0,0 +1,83 @@
+/****************************************************************************
+ * boards/arm/imxrt/imxrt1064-evk/scripts/memory.ld
+ *
+ *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
+ *   Authors: Gregory Nutt <gn...@nuttx.org>
+ *            David Sidrane <da...@nscdg.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/* The i.MXRT1064-EVK has 8MiB of Hyper FLASH beginning at address,
+ * 0x0060:0000, Up to 512Kb of DTCM RAM beginning at 0x2000:0000, and 1MiB OCRAM
+ * beginning at 0x2020:0000.  Neither DTCM or SDRAM are used in this
+ * configuration.
+ *
+ * The user and kernel space partitions will be spanned with a single
+ * region of size 2**n bytes.  As a consequence, as the partitions increase
+ * in size, the alignment requirement also increases.  The sizes below give
+ * the largest possible user address spaces (but leave far too much for the
+ * OS).
+ *
+ * The solution to this wasted memory is to (1) use more than one region to
+ * span the user spaces, or (2) poke holes in a larger region (via sub-
+ * regions) to trim it to fit better.
+ *
+ * A detailed memory map for the 512KB SRAM region is as follows:
+ *
+ *   0x2020 0000:  Kernel .data region.  Typical size: 0.1KB
+ *   ------ ----   Kernel .bss  region.  Typical size: 1.8KB
+ *   0x2020 0800:  Kernel IDLE thread stack (approximate).  Size is
+ *                 determined by CONFIG_IDLETHREAD_STACKSIZE and
+ *                 adjustments for alignment.  Typical is 1KB.
+ *   ------ ----   Padded to 4KB
+ *   0x2040 0000:  User .data region.  Size is variable.
+ *   ------- ----  User .bss region  Size is variable.
+ *   0x2042 0000:  Beginning of kernel heap.  Size determined by
+ *                 CONFIG_MM_KERNEL_HEAPSIZE.
+ *   ------ ----   Beginning of user heap.  Can vary with other settings.
+ *   0x2080 0000:  End+1 of mappable OCRAM
+ */
+
+/* Specify the memory areas */
+
+MEMORY
+{
+  /* 8MiB of HyperFLASH */
+
+  kflash (rx)  : ORIGIN = 0x60000000, LENGTH = 1M
+  uflash (rx)  : ORIGIN = 0x60200000, LENGTH = 1M
+  flash  (rx)  : ORIGIN = 0x60400000, LENGTH = 6M
+
+  /* 1MiB of OCRAM */
+
+  dtcm   (rwx) : ORIGIN = 0x20000000, LENGTH = 512K
+  kocram (rwx) : ORIGIN = 0x20200000, LENGTH = 512K
+  uocram (rwx) : ORIGIN = 0x20240000, LENGTH = 512K
+}
diff --git a/boards/arm/imxrt/imxrt1064-evk/scripts/user-space.ld b/boards/arm/imxrt/imxrt1064-evk/scripts/user-space.ld
new file mode 100644
index 0000000..c4d8428
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/scripts/user-space.ld
@@ -0,0 +1,136 @@
+/****************************************************************************
+ * boards/arm/imxrt/imxrt1064-evk/scripts/user-space.ld
+ *
+ *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
+ *   Authors: Gregory Nutt <gn...@nuttx.org>
+ *            David Sidrane <da...@nscdg.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/* NOTE:  This depends on the memory.ld script having been included prior to
+ * this script.
+ */
+
+/* Make sure that the critical memory management functions are in user-space.
+ * the user heap memory manager will reside in user-space but be usable both
+ * by kernel- and user-space code
+ */
+
+EXTERN(umm_initialize)
+EXTERN(umm_addregion)
+EXTERN(umm_trysemaphore)
+EXTERN(umm_givesemaphore)
+
+EXTERN(malloc)
+EXTERN(realloc)
+EXTERN(zalloc)
+EXTERN(free)
+
+OUTPUT_ARCH(arm)
+SECTIONS
+{
+  .userspace :
+  {
+    *(.userspace)
+  } > uflash
+
+  .text :
+  {
+    _stext = ABSOLUTE(.);
+    *(.text .text.*)
+    *(.fixup)
+    *(.gnu.warning)
+    *(.rodata .rodata.*)
+    *(.gnu.linkonce.t.*)
+    *(.glue_7)
+    *(.glue_7t)
+    *(.got)
+    *(.gcc_except_table)
+    *(.gnu.linkonce.r.*)
+    _etext = ABSOLUTE(.);
+  } > uflash
+
+  .init_section :
+  {
+    _sinit = ABSOLUTE(.);
+    KEEP(*(.init_array .init_array.*))
+    _einit = ABSOLUTE(.);
+  } > uflash
+
+  .ARM.extab :
+  {
+    *(.ARM.extab*)
+  } > uflash
+
+  __exidx_start = ABSOLUTE(.);
+  .ARM.exidx :
+  {
+    *(.ARM.exidx*)
+  } > uflash
+
+  __exidx_end = ABSOLUTE(.);
+
+  _eronly = ABSOLUTE(.);
+
+  .data :
+  {
+    _sdata = ABSOLUTE(.);
+    *(.data .data.*)
+    *(.gnu.linkonce.d.*)
+    CONSTRUCTORS
+    . = ALIGN(4);
+    _edata = ABSOLUTE(.);
+  } > uocram AT > uflash
+
+  .bss :
+  {
+    _sbss = ABSOLUTE(.);
+    *(.bss .bss.*)
+    *(.gnu.linkonce.b.*)
+    *(COMMON)
+    . = ALIGN(4);
+    _ebss = ABSOLUTE(.);
+  } > uocram
+
+  /* Stabs debugging sections */
+
+  .stab 0 : { *(.stab) }
+  .stabstr 0 : { *(.stabstr) }
+  .stab.excl 0 : { *(.stab.excl) }
+  .stab.exclstr 0 : { *(.stab.exclstr) }
+  .stab.index 0 : { *(.stab.index) }
+  .stab.indexstr 0 : { *(.stab.indexstr) }
+  .comment 0 : { *(.comment) }
+  .debug_abbrev 0 : { *(.debug_abbrev) }
+  .debug_info 0 : { *(.debug_info) }
+  .debug_line 0 : { *(.debug_line) }
+  .debug_pubnames 0 : { *(.debug_pubnames) }
+  .debug_aranges 0 : { *(.debug_aranges) }
+}
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/Makefile b/boards/arm/imxrt/imxrt1064-evk/src/Makefile
new file mode 100644
index 0000000..87d012d
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/src/Makefile
@@ -0,0 +1,85 @@
+############################################################################
+# boards/arm/imxrt/imxrt1064-evk/src/Makefile
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.  The
+# ASF licenses this file to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance with the
+# License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+############################################################################
+
+include $(TOPDIR)/Make.defs
+
+CSRCS = imxrt_boot.c imxrt_flexspi_nor_boot.c imxrt_flexspi_nor_flash.c
+
+ifeq ($(CONFIG_IMXRT_SDRAMC),y)
+CSRCS += imxrt_sdram.c
+endif
+
+ifeq ($(CONFIG_LIB_BOARDCTL),y)
+CSRCS += imxrt_appinit.c imxrt_bringup.c
+else ifeq ($(CONFIG_BOARD_LATE_INITIALIZE),y)
+CSRCS += imxrt_bringup.c
+endif
+
+ifeq ($(CONFIG_ARCH_LEDS),y)
+CSRCS += imxrt_autoleds.c
+else
+CSRCS += imxrt_userleds.c
+endif
+
+ifeq ($(CONFIG_ARCH_BUTTONS),y)
+CSRCS += imxrt_buttons.c
+endif
+
+ifeq ($(CONFIG_IMXRT_ENET),y)
+CSRCS += imxrt_ethernet.c
+endif
+
+ifeq ($(CONFIG_IMXRT_LPSPI),y)
+CSRCS += imxrt_spi.c
+endif
+
+ifeq ($(CONFIG_MMCSD_SPI),y)
+CSRCS += imxrt_mmcsd_spi.c
+endif
+
+ifeq ($(CONFIG_DEV_GPIO),y)
+CSRCS += imxrt_gpio.c
+endif
+
+ifeq ($(CONFIG_IMXRT_ADC),y)
+CSRCS += imxrt_adc.c
+endif
+
+ifeq ($(CONFIG_INPUT_FT5X06),y)
+CSRCS += imxrt_ft5x06.c
+endif
+
+ifeq ($(CONFIG_IMXRT_LCD),y)
+CSRCS += imxrt_lcd.c
+endif
+
+ifeq ($(CONFIG_IMXRT_USBOTG),y)
+CSRCS += imxrt_usbhost.c
+endif
+
+ifeq ($(CONFIG_IMXRT_FLEXCAN),y)
+CSRCS += imxrt_flexcan.c
+endif
+
+ifeq ($(CONFIG_IMXRT1064_EVK_SDRAM),y)
+CSRCS += imxrt_sdram_ini_dcd.c
+endif
+
+include $(TOPDIR)/boards/Board.mk
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt1064-evk.h b/boards/arm/imxrt/imxrt1064-evk/src/imxrt1064-evk.h
new file mode 100644
index 0000000..a2dd519
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt1064-evk.h
@@ -0,0 +1,337 @@
+/****************************************************************************
+ * boards/arm/imxrt/imxrt1064-evk/src/imxrt1064-evk.h
+ *
+ *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
+ *   Authors: Gregory Nutt <gn...@nuttx.org>
+ *            David Sidrane <da...@nscdg.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+#ifndef __BOARDS_ARM_IMXRT_IMXRT1064_EVK_SRC_IMXRT1064_EVK_H
+#define __BOARDS_ARM_IMXRT_IMXRT1064_EVK_SRC_IMXRT1064_EVK_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <stdint.h>
+#include <stdbool.h>
+
+#include <arch/irq.h>
+#include <nuttx/irq.h>
+
+#include "imxrt_gpio.h"
+#include "imxrt_iomuxc.h"
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+/* Touchscreen definitions **************************************************/
+
+/* The IMXRT 1050/1060 have connectors for the LCD model RK043FN02H-CT.
+ * It comes with the FT5336GQQ (FT5X06) touchscreen chip integrated.
+ * FT5X06 is connected to the LPI2C1 bus.
+ */
+
+/* LPI2C address of the FT5336GQQ touchscreen chip */
+
+#define FT5X06_I2C_ADDRESS  0x38
+
+/* i.MX RT 1060 GPIO Pin Definitions ****************************************/
+
+/* LEDs */
+
+/* There are four LED status indicators located on the EVK Board.
+ * The functions of these LEDs include:
+ *
+ *   - Main Power Supply(D3)
+ *     Green: DC 5V main supply is normal.
+ *     Red:   J2 input voltage is over 5.6V.
+ *     Off:   The board is not powered.
+ *   - Reset RED LED(D15)
+ *   - OpenSDA LED(D16)
+ *   - USER LED(D18)
+ *
+ * Only a single LED, D18, is under software control.
+ */
+
+#define GPIO_LED        (GPIO_OUTPUT | IOMUX_LED_DEFAULT | \
+                         GPIO_OUTPUT_ZERO | GPIO_PORT1 | GPIO_PIN9)  /* AD_BO_09 */
+
+#define LED_DRIVER_PATH "/dev/userleds"
+
+/* Buttons ******************************************************************/
+
+/* The IMXRT board has one external user button
+ *
+ * 1. SW8 (IRQ88)   GPIO5-00
+ */
+
+#define GPIO_SW8       (GPIO_INTERRUPT | GPIO_INTBOTH_EDGES | \
+                        IOMUX_SW_DEFAULT | \
+                        GPIO_PORT5 | GPIO_PIN0)    /* WAKEUP */
+
+#define GPIO_SW8_INT   (_IMXRT_GPIO5_0_15_BASE+0)
+
+/* LCD Backlight */
+
+#define GPIO_LCD_BL     (GPIO_OUTPUT | GPIO_OUTPUT_ZERO | GPIO_PORT2 | \
+                         GPIO_PIN31 | IOMUX_LCD_BL_DEFAULT)
+
+/* Ethernet */
+
+/* Ethernet Interrupt: GPIOAD_B0_10
+ *
+ * This pin has a week pull-up within the PHY, is open-drain, and requires
+ * an external 1k ohm pull-up resistor (present on the EVK).  A falling
+ * edge then indicates a change in state of the PHY.
+ */
+
+#define GPIO_ENET_INT   (IOMUX_ENET_INT_DEFAULT | \
+                         GPIO_PORT1 | GPIO_PIN10)    /* AD_B0_10 */
+#define GPIO_ENET_IRQ   IMXRT_IRQ_GPIO1_10
+
+/* Ethernet Reset:  GPIOAD_B0_09
+ *
+ * The #RST uses inverted logic.  The initial value of zero will put the
+ * PHY into the reset state.
+ */
+
+#define GPIO_ENET_RST   (GPIO_OUTPUT | GPIO_OUTPUT_ZERO | \
+                         GPIO_PORT1 | GPIO_PIN9 | IOMUX_ENET_RST_DEFAULT) /* AD_B0_09 */
+
+#ifdef CONFIG_ETH0_PHY_KSZ8081
+#  ifdef GPIO_LED
+#    warning LED interferes with ETH reset unless R323 is removed.
+#  endif
+#endif
+
+/* LPSPI1 CS:  GPIO_SD_B0_01 */
+
+#define IOMUX_LPSPI1_CS (IOMUX_SLEW_FAST | IOMUX_DRIVE_50OHM | \
+                         IOMUX_SPEED_MEDIUM | IOMUX_PULL_UP_100K | \
+                         _IOMUX_PULL_ENABLE)
+#define GPIO_LPSPI1_CS  (GPIO_OUTPUT | GPIO_OUTPUT_ONE | \
+                         GPIO_PORT3 | GPIO_PIN13 | IOMUX_LPSPI1_CS)
+
+/* LPSPI3 CS:  GPIO_AD_B0_03 */
+
+#define IOMUX_LPSPI3_CS      (IOMUX_SLEW_FAST | IOMUX_DRIVE_50OHM | \
+                              IOMUX_SPEED_MEDIUM | IOMUX_PULL_UP_100K | \
+                              _IOMUX_PULL_ENABLE)
+#define GPIO_LPSPI3_CS       (GPIO_OUTPUT | GPIO_OUTPUT_ONE | \
+                              GPIO_PORT1 | GPIO_PIN3 | IOMUX_LPSPI3_CS) /* GPIO_AD_B0_03 */
+
+/* MMC/SD */
+
+#define IOMUX_MMCSD_EN       (IOMUX_SLEW_FAST | IOMUX_DRIVE_50OHM | \
+                              IOMUX_SPEED_MEDIUM | IOMUX_PULL_UP_100K | \
+                              _IOMUX_PULL_ENABLE)
+#define GPIO_MMCSD_EN        (GPIO_OUTPUT | GPIO_OUTPUT_ZERO | \
+                              GPIO_PORT3 | GPIO_PIN2 | IOMUX_MMCSD_EN)
+
+/* Touchscreen
+ *
+ * Interrupt line: GPIO_AD_B0_11
+ *
+ * The interrupt line coming from the touchscreen FT5336GQQ IC.
+ * The touchscreen IC is integrated into the optional RK043FN02H-CT LCD panel
+ * and it's connected to the LPI2C1 bus.
+ *
+ * Reset line: GPIO_AD_B0_02
+ *
+ * The reset line is active low.
+ */
+
+#define GPIO_FT5X06_INTR     IMXRT_IRQ_GPIO1_11
+
+#define IOMUX_FT5X06_RST     (IOMUX_PULL_NONE | IOMUX_CMOS_OUTPUT | \
+                              IOMUX_DRIVE_40OHM | IOMUX_SPEED_MEDIUM | \
+                              IOMUX_SLEW_SLOW)                            /* AD_B0_11 */
+#define GPIO_FT5X06_CTRST_N  (GPIO_OUTPUT | GPIO_OUTPUT_ZERO | \
+                              GPIO_PORT1 | GPIO_PIN2 | IOMUX_FT5X06_RST)  /* AD_B0_02 */
+
+/* Test Pins ****************************************************************/
+
+#define BOARD_NGPIOIN   0 /* Amount of GPIO Input pins */
+#define BOARD_NGPIOOUT  4 /* Amount of GPIO Output pins */
+#define BOARD_NGPIOINT  0 /* Amount of GPIO Input w/ Interruption pins */
+
+#define GPIO_GOUT1      (GPIO_OUTPUT | GPIO_OUTPUT_ZERO | IOMUX_GOUT_DEFAULT | \
+                         GPIO_PORT1 | GPIO_PIN19)
+
+#define GPIO_GOUT2      (GPIO_OUTPUT | GPIO_OUTPUT_ZERO | IOMUX_GOUT_DEFAULT | \
+                         GPIO_PIN18 | GPIO_PORT1)
+
+#define GPIO_GOUT3      (GPIO_OUTPUT | GPIO_OUTPUT_ZERO | IOMUX_GOUT_DEFAULT | \
+                         GPIO_PIN10 | GPIO_PORT1)
+
+#define GPIO_GOUT4      (GPIO_OUTPUT | GPIO_OUTPUT_ZERO | IOMUX_GOUT_DEFAULT | \
+                         GPIO_PIN9 | GPIO_PORT1)
+
+/* USB OTG ID Pin: GPIO_AD_B1_02 */
+
+#define GPIO_USBOTG_ID  (GPIO_USB_OTG1_ID_1 | IOMUX_USBOTG_ID_DEFAULT)      /* AD_B1_02 */
+
+/****************************************************************************
+ * Public Types
+ ****************************************************************************/
+
+/****************************************************************************
+ * Public data
+ ****************************************************************************/
+
+#ifndef __ASSEMBLY__
+
+/****************************************************************************
+ * Name: imxrt_bringup
+ *
+ * Description:
+ *   Bring up board features
+ *
+ ****************************************************************************/
+
+#if defined(CONFIG_LIB_BOARDCTL) || defined(CONFIG_BOARD_LATE_INITIALIZE)
+int imxrt_bringup(void);
+#endif
+
+/****************************************************************************
+ * Name: imxrt_spidev_initialize
+ *
+ * Description:
+ *   Called to configure SPI chip select GPIO pins for the i.MXRT1050 EVK.
+ *
+ ****************************************************************************/
+
+void imxrt_spidev_initialize(void);
+
+/****************************************************************************
+ * Name: imxrt_mmcsd_spi_initialize
+ *
+ * Description:
+ *   Initialize SPI-based SD card and card detect thread.
+ *
+ ****************************************************************************/
+
+#ifdef CONFIG_MMCSD_SPI
+int imxrt_mmcsd_spi_initialize(int minor)
+#endif
+
+/****************************************************************************
+ * Name: imxrt_autoled_initialize
+ *
+ * Description:
+ *   Initialize NuttX-controlled LED logic
+ *
+ * Input Parameters:
+ *   None
+ *
+ * Returned Value:
+ *   None
+ *
+ ****************************************************************************/
+
+#ifdef CONFIG_ARCH_LEDS
+void imxrt_autoled_initialize(void);
+#endif
+
+/****************************************************************************
+ * Name: imxrt_gpio_initialize
+ *
+ * Description:
+ *   Initialize GPIO drivers for use with /apps/examples/gpio
+ *
+ ****************************************************************************/
+
+#ifdef CONFIG_DEV_GPIO
+int imxrt_gpio_initialize(void);
+#endif
+
+/****************************************************************************
+ * Name: imxrt_can_setup
+ *
+ * Description:
+ *  Initialize CAN and register the CAN device
+ *
+ ****************************************************************************/
+
+#ifdef CONFIG_IMXRT_FLEXCAN
+int imxrt_can_setup(void);
+#endif
+
+/****************************************************************************
+ * Name: imxrt_adc_initialize
+ *
+ * Description:
+ *   Initialize ADC drivers
+ *
+ ****************************************************************************/
+
+#ifdef CONFIG_IMXRT_ADC
+int imxrt_adc_initialize(void);
+#endif
+
+/****************************************************************************
+ * Name: imxrt_ft5x06_register
+ *
+ * Description:
+ *   Initialize ft5x06 IC touchscreen driver
+ *
+ ****************************************************************************/
+
+#ifdef CONFIG_INPUT_FT5X06
+int imxrt_ft5x06_register(void);
+#endif
+
+/****************************************************************************
+ * Name: imxrt_backlight
+ *
+ * Description:
+ *   Initialize the backlight pins of the LCD and turn it ON
+ *
+ ****************************************************************************/
+
+#ifdef CONFIG_IMXRT_LCD
+void imxrt_lcd_initialize(void);
+#endif
+
+#if defined(CONFIG_IMXRT_USBOTG) || defined(CONFIG_USBHOST)
+int imxrt_usbhost_initialize(void);
+#endif
+
+#ifdef CONFIG_MTD_FLEXSPI_NOR
+int imxrt_flexspi_nor_setup(void);
+#endif
+
+#endif /* __ASSEMBLY__ */
+#endif /* __BOARDS_ARM_IMXRT_IMXRT1064_EVK_SRC_IMXRT1064_EVK_H */
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_adc.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_adc.c
new file mode 100644
index 0000000..6b91141
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_adc.c
@@ -0,0 +1,167 @@
+/****************************************************************************
+ * boards/arm/imxrt/imxrt1064-evk/src/imxrt_adc.c
+ *
+ *   Copyright (C) 2020 Actia Nordic AB. All rights reserved.
+ *   Author: Thomas Axelsson <th...@actia.se>
+ *
+ * Based on boards/arm/lpc17xx_40xx/mbed/src/lpc17_40_adc.c
+ *
+ * Based on boards/zkit-arm-176/src/up-adc
+ *
+ *   Copyright (C) 2013 Zilogic Systems. All rights reserved.
+ *   Author: Kannan <co...@nuttx.org>
+ *
+ * Based on boards/lpc1720g-eval/src/lpc17_40_adc.c
+ *
+ *   Copyright (C) 2012, 2014, 2016 Gregory Nutt. All rights reserved.
+ *   Author: Gregory Nutt <gn...@nuttx.org>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <errno.h>
+#include <debug.h>
+
+#include <nuttx/board.h>
+#include <nuttx/analog/adc.h>
+#include <arch/board/board.h>
+
+#include "chip.h"
+#include "arm_arch.h"
+
+#include "imxrt_adc.h"
+
+#ifdef CONFIG_IMXRT_ADC
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+/* Configuration ************************************************************/
+
+#define ADC1_NCHANNELS 3
+#define ADC2_NCHANNELS 3
+
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static const uint8_t g_chanlist1[ADC1_NCHANNELS] =
+  {
+    /* Arduino Interface pins A0 to A2 */
+
+    15,
+    0,
+    9,
+  };
+
+static const uint8_t g_chanlist2[ADC2_NCHANNELS] =
+  {
+    /* Arduino Interface pins A3 to A5 */
+
+    10,
+    6,
+    5
+  };
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: imxrt_adc_setup
+ *
+ * Description:
+ *   Initialize ADC and register the ADC driver.
+ *
+ ****************************************************************************/
+
+int imxrt_adc_initialize(void)
+{
+  static bool initialized = false;
+  struct adc_dev_s *adc;
+  int ret;
+
+  /* Check if we have already initialized */
+
+  if (!initialized)
+    {
+      /* Call imxrt_adcinitialize() to get an instance of the ADC interface */
+
+#ifdef CONFIG_IMXRT_ADC1
+      adc = imxrt_adcinitialize(1, g_chanlist1, ADC1_NCHANNELS);
+      if (adc == NULL)
+        {
+          aerr("ERROR: Failed to get ADC interface for ADC1\n");
+          return -ENODEV;
+        }
+
+      /* Register the ADC driver at "/dev/adc1" */
+
+      ret = adc_register("/dev/adc1", adc);
+      if (ret < 0)
+        {
+          aerr("ERROR: adc_register adc1 failed: %d\n", ret);
+          return ret;
+        }
+#endif
+
+#ifdef CONFIG_IMXRT_ADC2
+      adc = imxrt_adcinitialize(2, g_chanlist2, ADC2_NCHANNELS);
+      if (adc == NULL)
+        {
+          aerr("ERROR: Failed to get ADC interface for ADC2\n");
+          return -ENODEV;
+        }
+
+      /* Register the ADC driver at "/dev/adc2" */
+
+      ret = adc_register("/dev/adc2", adc);
+      if (ret < 0)
+        {
+          aerr("ERROR: adc_register adc2 failed: %d\n", ret);
+          return ret;
+        }
+#endif
+
+      /* Now we are initialized */
+
+      initialized = true;
+    }
+
+  return OK;
+}
+
+#endif /* CONFIG_ADC */
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_appinit.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_appinit.c
new file mode 100644
index 0000000..8850cfc
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_appinit.c
@@ -0,0 +1,107 @@
+/****************************************************************************
+ * boards/arm/imxrt/imxrt1064-evk/src/imxrt_appinit.c
+ *
+ *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
+ *   Authors: Gregory Nutt <gn...@nuttx.org>
+ *            David Sidrane <da...@nscdg.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+#include <syslog.h>
+#include <sys/types.h>
+
+#include <nuttx/board.h>
+
+#include "imxrt1064-evk.h"
+
+#if !defined(CONFIG_ARCH_LEDS) && defined(CONFIG_USERLED_LOWER)
+#  define HAVE_LEDS 0
+#endif
+
+#ifdef CONFIG_LIB_BOARDCTL
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: board_app_initialize
+ *
+ * Description:
+ *   Perform application specific initialization.  This function is never
+ *   called directly from application code, but only indirectly via the
+ *   (non-standard) boardctl() interface using the command BOARDIOC_INIT.
+ *
+ * Input Parameters:
+ *   arg - The boardctl() argument is passed to the board_app_initialize()
+ *         implementation without modification.  The argument has no
+ *         meaning to NuttX; the meaning of the argument is a contract
+ *         between the board-specific initialization logic and the
+ *         matching application logic.  The value could be such things as a
+ *         mode enumeration value, a set of DIP switch switch settings, a
+ *         pointer to configuration data read from a file or serial FLASH,
+ *         or whatever you would like to do with it.  Every implementation
+ *         should accept zero/NULL as a default configuration.
+ *
+ * Returned Value:
+ *   Zero (OK) is returned on success; a negated errno value is returned on
+ *   any failure to indicate the nature of the failure.
+ *
+ ****************************************************************************/
+
+int board_app_initialize(uintptr_t arg)
+{
+#ifdef HAVE_LEDS
+  /* Register the LED driver */
+
+  int ret;
+  ret = userled_lower_initialize(LED_DRIVER_PATH);
+  if (ret < 0)
+    {
+      syslog(LOG_ERR, "ERROR: userled_lower_initialize() failed: %d\n", ret);
+      return ret;
+    }
+#endif
+
+#ifndef CONFIG_BOARD_LATE_INITIALIZE
+  /* Perform board initialization */
+
+  return imxrt_bringup();
+#else
+  return OK;
+#endif
+}
+
+#endif /* CONFIG_LIB_BOARDCTL */
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_autoleds.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_autoleds.c
new file mode 100644
index 0000000..564d179
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_autoleds.c
@@ -0,0 +1,181 @@
+/****************************************************************************
+ * boards/arm/imxrt/imxrt1064-evk/src/imxrt_autoleds.c
+ *
+ *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
+ *   Authors: Gregory Nutt <gn...@nuttx.org>
+ *            David Sidrane <da...@nscdg.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/* There are four LED status indicators located on the EVK Board.  The
+ * functions of these LEDs include:
+ *
+ *   - Main Power Supply(D3)
+ *     Green: DC 5V main supply is normal.
+ *     Red:   J2 input voltage is over 5.6V.
+ *     Off:   The board is not powered.
+ *   - Reset RED LED(D21)
+ *   - OpenSDA LED(D20)
+ *   - USER LED(D18)
+ *
+ * Only a single LED, D18, is under software control.
+ *
+ * This LED is not used by the board port unless CONFIG_ARCH_LEDS is
+ * defined.  In that case, the usage by the board port is defined in
+ * include/board.h and src/imxrt_autoleds.c. The LED is used to encode
+ * OS-related events as follows:
+ *
+ *   -------------------- ----------------------- ------
+ *   SYMBOL               Meaning                 LED
+ *   -------------------- ----------------------- ------
+ *
+ *   LED_STARTED       0  NuttX has been started  OFF
+ *   LED_HEAPALLOCATE  0  Heap has been allocated OFF
+ *   LED_IRQSENABLED   0  Interrupts enabled      OFF
+ *   LED_STACKCREATED  1  Idle stack created      ON
+ *   LED_INIRQ         2  In an interrupt         N/C
+ *   LED_SIGNAL        2  In a signal handler     N/C
+ *   LED_ASSERTION     2  An assertion failed     N/C
+ *   LED_PANIC         3  The system has crashed  FLASH
+ *   LED_IDLE             Not used
+ *
+ * Thus if the LED is statically on, NuttX has successfully  booted and is,
+ * apparently, running normally.  If the LED is flashing at approximately
+ * 2Hz, then a fatal error has been detected and the system has halted.
+ */
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <nuttx/board.h>
+
+#include "imxrt_gpio.h"
+#include "imxrt_iomuxc.h"
+#include <arch/board/board.h>
+#include "imxrt1064-evk.h"
+
+#ifdef CONFIG_ARCH_LEDS
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: imxrt_autoled_initialize
+ *
+ * Description:
+ *   Initialize NuttX-controlled LED logic
+ *
+ * Input Parameters:
+ *   None
+ *
+ * Returned Value:
+ *   None
+ *
+ ****************************************************************************/
+
+void imxrt_autoled_initialize(void)
+{
+  /* Configure LED GPIO for output */
+
+  imxrt_config_gpio(GPIO_LED);
+}
+
+/****************************************************************************
+ * Name: board_autoled_on
+ *
+ * Description:
+ *   Turn on the "logical" LED state
+ *
+ * Input Parameters:
+ *   led - Identifies the "logical" LED state (see definitions in
+ *         include/board.h)
+ *
+ * Returned Value:
+ *   None
+ *
+ ****************************************************************************/
+
+void board_autoled_on(int led)
+{
+  bool ledoff = false;
+
+  switch (led)
+    {
+      case 0:  /* LED Off */
+        ledoff = true;
+        break;
+
+      case 2:  /* LED No change */
+        return;
+
+      case 1:  /* LED On */
+      case 3:  /* LED On */
+        break;
+    }
+
+  imxrt_gpio_write(GPIO_LED, ledoff); /* Low illuminates */
+}
+
+/****************************************************************************
+ * Name: board_autoled_off
+ *
+ * Description:
+ *   Turn off the "logical" LED state
+ *
+ * Input Parameters:
+ *   led - Identifies the "logical" LED state (see definitions in
+ *         include/board.h)
+ *
+ * Returned Value:
+ *   None
+ *
+ ****************************************************************************/
+
+void board_autoled_off(int led)
+{
+  switch (led)
+    {
+      case 0:  /* LED Off */
+      case 1:  /* LED Off */
+      case 3:  /* LED Off */
+        break;
+
+      case 2:  /* LED No change */
+        return;
+    }
+
+  imxrt_gpio_write(GPIO_LED, true); /* Low illuminates */
+}
+
+#endif /* CONFIG_ARCH_LEDS */
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_boot.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_boot.c
new file mode 100644
index 0000000..19cbcc2
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_boot.c
@@ -0,0 +1,133 @@
+/****************************************************************************
+ * boards/arm/imxrt/imxrt1064-evk/src/imxrt_boot.c
+ *
+ *   Copyright (C) 2015-2018 Gregory Nutt. All rights reserved.
+ *   Authors: Gregory Nutt <gn...@nuttx.org>
+ *            David Sidrane <da...@nscdg.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <nuttx/board.h>
+#include <arch/board/board.h>
+
+#include "imxrt_start.h"
+#include "imxrt1064-evk.h"
+#include "arm_arch.h"
+#include "imxrt_flexspi_nor_boot.h"
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: imxrt_ocram_initialize
+ *
+ * Description:
+ *   Called off reset vector to reconfigure the flexRAM
+ *   and finish the FLASH to RAM Copy.
+ *
+ ****************************************************************************/
+
+void imxrt_ocram_initialize(void)
+{
+  const uint32_t *src;
+  uint32_t *dest;
+  uint32_t regval;
+
+  /* Reallocate 128K of Flex RAM from ITCM to OCRAM
+   * Final Configuration is
+   *    128 DTCM
+   *
+   *    128 FlexRAM OCRAM  (202C:0000-202D:ffff)
+   *    256 FlexRAM OCRAM  (2028:0000-202B:ffff)
+   *    512 System  OCRAM2 (2020:0000-2027:ffff)
+   * */
+
+  putreg32(0xaa555555, IMXRT_IOMUXC_GPR_GPR17);
+  regval = getreg32(IMXRT_IOMUXC_GPR_GPR16);
+  putreg32(regval | GPR_GPR16_FLEXRAM_BANK_CFG_SELF, IMXRT_IOMUXC_GPR_GPR16);
+
+  src = (uint32_t *) (LOCATE_IN_SRC(g_boot_data.start) + g_boot_data.size);
+  dest = (uint32_t *) (g_boot_data.start + g_boot_data.size);
+
+  while (dest < (uint32_t *) &_etext)
+    {
+      *dest++ = *src++;
+    }
+}
+
+/****************************************************************************
+ * Name: imxrt_boardinitialize
+ *
+ * Description:
+ *   All i.MX RT architectures must provide the following entry point.  This
+ *   entry point is called early in the initialization -- after clocking and
+ *   memory have been configured but before caches have been enabled and
+ *   before any devices have been initialized.
+ *
+ ****************************************************************************/
+
+void imxrt_boardinitialize(void)
+{
+  /* Configure on-board LEDs if LED support has been selected. */
+
+#ifdef CONFIG_ARCH_LEDS
+  imxrt_autoled_initialize();
+#endif
+}
+
+/****************************************************************************
+ * Name: board_late_initialize
+ *
+ * Description:
+ *   If CONFIG_BOARD_LATE_INITIALIZE is selected, then an additional
+ *   initialization call will be performed in the boot-up sequence to a
+ *   function called board_late_initialize().  board_late_initialize() will
+ *   be called immediately after up_intitialize() is called and just before
+ *   the initial application is started.  This additional initialization
+ *   phase may be used, for example, to initialize board-specific device
+ *   drivers.
+ *
+ ****************************************************************************/
+
+#ifdef CONFIG_BOARD_LATE_INITIALIZE
+void board_late_initialize(void)
+{
+  /* Perform board initialization */
+
+  imxrt_bringup();
+}
+#endif /* CONFIG_BOARD_LATE_INITIALIZE */
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_bringup.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_bringup.c
new file mode 100644
index 0000000..d522f49
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_bringup.c
@@ -0,0 +1,307 @@
+/****************************************************************************
+ * boards/arm/imxrt/imxrt1064-evk/src/imxrt_bringup.c
+ *
+ *   Copyright (C) 2018, 2020 Gregory Nutt. All rights reserved.
+ *   Authors: Gregory Nutt <gn...@nuttx.org>
+ *            David Sidrane <da...@nscdg.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <sys/types.h>
+#include <debug.h>
+
+#include <syslog.h>
+#include <nuttx/fs/fs.h>
+#include <nuttx/i2c/i2c_master.h>
+#include <nuttx/video/fb.h>
+#include <imxrt_lpi2c.h>
+#include <imxrt_lpspi.h>
+#include <nuttx/input/buttons.h>
+
+#ifdef CONFIG_IMXRT_USDHC
+#  include "imxrt_usdhc.h"
+#endif
+
+#ifdef CONFIG_USBMONITOR
+#  include <nuttx/usb/usbmonitor.h>
+#endif
+
+#ifdef CONFIG_PL2303
+#  include <nuttx/usb/pl2303.h>
+#endif
+
+#include "imxrt_enet.h"
+#include "imxrt1064-evk.h"
+
+#include <arch/board/board.h>  /* Must always be included last */
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+/* Checking needed by MMC/SDCard */
+
+#ifdef CONFIG_NSH_MMCSDMINOR
+#  define MMCSD_MINOR CONFIG_NSH_MMCSDMINOR
+#else
+#  define MMCSD_MINOR 0
+#endif
+
+/****************************************************************************
+ * Private Functions
+ ****************************************************************************/
+
+#if defined(CONFIG_I2C_DRIVER) && defined(CONFIG_IMXRT_LPI2C)
+static void imxrt_i2c_register(int bus)
+{
+  FAR struct i2c_master_s *i2c;
+  int ret;
+
+  i2c = imxrt_i2cbus_initialize(bus);
+  if (i2c == NULL)
+    {
+      serr("ERROR: Failed to get I2C%d interface\n", bus);
+    }
+  else
+    {
+      ret = i2c_register(i2c, bus);
+      if (ret < 0)
+        {
+          serr("ERROR: Failed to register I2C%d driver: %d\n", bus, ret);
+          imxrt_i2cbus_uninitialize(i2c);
+        }
+    }
+}
+#endif
+
+#ifdef CONFIG_IMXRT_USDHC
+static int nsh_sdmmc_initialize(void)
+{
+  struct sdio_dev_s *sdmmc;
+  int ret = 0;
+
+  /* Get an instance of the SDIO interface */
+
+  sdmmc = imxrt_usdhc_initialize(0);
+  if (!sdmmc)
+    {
+      syslog(LOG_ERR, "ERROR: Failed to initialize SD/MMC\n");
+    }
+  else
+    {
+      /* Bind the SDIO interface to the MMC/SD driver */
+
+      ret = mmcsd_slotinitialize(0, sdmmc);
+      if (ret != OK)
+        {
+          syslog(LOG_ERR,
+                 "ERROR: Failed to bind SDIO to the MMC/SD driver: %d\n",
+                 ret);
+        }
+
+      imxrt_usdhc_set_sdio_card_isr(sdmmc, NULL, NULL);
+    }
+
+  return OK;
+}
+#else
+#  define nsh_sdmmc_initialize() (OK)
+#endif
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: imxrt_bringup
+ *
+ * Description:
+ *   Bring up board features
+ *
+ ****************************************************************************/
+
+int imxrt_bringup(void)
+{
+  int ret;
+
+  /* If we got here then perhaps not all initialization was successful, but
+   * at least enough succeeded to bring-up NSH with perhaps reduced
+   * capabilities.
+   */
+
+#ifdef CONFIG_FS_PROCFS
+  /* Mount the procfs file system */
+
+  ret = nx_mount(NULL, "/proc", "procfs", 0, NULL);
+  if (ret < 0)
+    {
+      syslog(LOG_ERR, "ERROR: Failed to mount procfs at /proc: %d\n", ret);
+    }
+#endif
+
+#if defined(CONFIG_I2C_DRIVER) && defined(CONFIG_IMXRT_LPI2C1)
+  imxrt_i2c_register(1);
+#endif
+
+#ifdef CONFIG_IMXRT_USDHC
+  /* Initialize SDHC-base MMC/SD card support */
+
+  nsh_sdmmc_initialize();
+#endif
+
+#ifdef CONFIG_MMCSD_SPI
+  /* Initialize SPI-based MMC/SD card support */
+
+  imxrt_spidev_initialize();
+
+  ret = imxrt_mmcsd_spi_initialize(MMCSD_MINOR);
+  if (ret < 0)
+    {
+      syslog(LOG_ERR, "ERROR: Failed to initialize SD slot %d: %d\n", ret);
+    }
+#endif
+
+#if defined(CONFIG_IMXRT_USBOTG) || defined(CONFIG_USBHOST)
+  ret = imxrt_usbhost_initialize();
+  if (ret != OK)
+    {
+      syslog(LOG_ERR, "ERROR: Failed to start USB host services: %d\n", ret);
+      return ret;
+    }
+#endif
+
+#ifdef CONFIG_USBMONITOR
+  /* Start the USB Monitor */
+
+  ret = usbmonitor_start();
+  if (ret != OK)
+    {
+      syslog(LOG_ERR, "ERROR: Failed to start USB monitor: %d\n", ret);
+    }
+#endif
+
+#if defined(CONFIG_IMXRT_ENET) && defined(CONFIG_NETDEV_LATEINIT)
+  ret = imxrt_netinitialize(0);
+#endif
+
+#ifdef CONFIG_IMXRT_FLEXCAN
+  ret = imxrt_can_setup();
+  if (ret < 0)
+    {
+      syslog(LOG_ERR, "ERROR: imxrt_can_setup() failed: %d\n", ret);
+      return ret;
+    }
+#endif
+
+#ifdef CONFIG_DEV_GPIO
+  /* Initialize the GPIO driver */
+
+  ret = imxrt_gpio_initialize();
+  if (ret < 0)
+    {
+      syslog(LOG_ERR, "Failed to initialize GPIO Driver: %d\n", ret);
+      return ret;
+    }
+#endif
+
+#ifdef CONFIG_IMXRT_ADC
+  /* Initialize ADC and register the ADC driver. */
+
+  ret = imxrt_adc_initialize();
+  if (ret < 0)
+    {
+      syslog(LOG_ERR, "ERROR: imxrt_adc_initialize() failed: %d\n", ret);
+    }
+#endif
+
+#ifdef CONFIG_INPUT_FT5X06
+  /* Initialize the FT5X06 touchscreen driver */
+
+  ret = imxrt_ft5x06_register();
+  if (ret < 0)
+    {
+      syslog(LOG_ERR, "ERROR: imxrt_ft5x06_register() failed: %d\n", ret);
+    }
+#endif
+
+#ifdef CONFIG_IMXRT_LCD
+  /* Initialize the backlight pin and turn it to ON. */
+
+  imxrt_lcd_initialize();
+#endif
+
+#ifdef CONFIG_BUTTONS
+#ifdef CONFIG_BUTTONS_LOWER
+  /* Register the BUTTON driver */
+
+  ret = btn_lower_initialize("/dev/buttons");
+  if (ret != OK)
+    {
+      syslog(LOG_ERR, "ERROR: btn_lower_initialize() failed: %d\n", ret);
+      return ret;
+    }
+#else
+  /* Enable BUTTON support for some other purpose */
+
+  board_button_initialize();
+#endif /* CONFIG_BUTTONS_LOWER */
+#endif /* CONFIG_BUTTONS */
+
+#ifdef CONFIG_VIDEO_FB
+  /* Initialize and register the framebuffer driver */
+
+  ret = fb_register(0, 0);
+  if (ret < 0)
+    {
+      syslog(LOG_ERR, "ERROR: fb_register() failed: %d\n", ret);
+    }
+#endif
+
+#ifdef CONFIG_PL2303
+  usbdev_serialinitialize(0);
+#endif
+
+#ifdef CONFIG_MTD_FLEXSPI_NOR
+  ret = imxrt_flexspi_nor_setup();
+  if (ret < 0)
+    {
+      syslog(LOG_ERR, "ERROR: imxrt_flexspi_nor_setup failed: %d\n", ret);
+    }
+#endif
+
+  UNUSED(ret);
+  return OK;
+}
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_buttons.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_buttons.c
new file mode 100644
index 0000000..66f4762
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_buttons.c
@@ -0,0 +1,177 @@
+/****************************************************************************
+ * boards/arm/imxrt/imxrt1064-evk/src/imxrt_buttons.c
+ *
+ *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
+ *   Authors: Gregory Nutt <gn...@nuttx.org>
+ *            David Sidrane <da...@nscdg.com>
+ *            Dave Marples <da...@marples.net>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <sys/types.h>
+#include <errno.h>
+
+#include <nuttx/arch.h>
+#include <nuttx/irq.h>
+#include <arch/board/board.h>
+
+#include "arm_arch.h"
+
+#include "imxrt_config.h"
+#include "imxrt_irq.h"
+#include "imxrt_gpio.h"
+#include "imxrt1064-evk.h"
+
+#ifdef CONFIG_ARCH_BUTTONS
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+/* The IMXRT has 1 user button (SW8)):
+ *
+ * 1. SW8 (IRQ88)   GPIO5-00
+ */
+
+const uint32_t gpio_pins[NUM_BUTTONS]     =
+                                            {
+                                              GPIO_SW8
+                                            };
+const uint32_t gpio_pins_int[NUM_BUTTONS] =
+                                            {
+                                              GPIO_SW8_INT
+                                            };
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: board_button_initialize
+ *
+ * Description:
+ *   board_button_initialize() must be called to initialize button resources.
+ *   After that, board_buttons() may be called to collect the current state
+ *   of all buttons or board_button_irq() may be called to register button
+ *   interrupt handlers.
+ *
+ ****************************************************************************/
+
+uint32_t board_button_initialize(void)
+{
+  uint32_t i;
+
+  /* Configure the buttons as input */
+
+  for (i = 0; i < NUM_BUTTONS; i++)
+    {
+      imxrt_config_gpio(gpio_pins[i]);
+    }
+
+  return NUM_BUTTONS;
+}
+
+/****************************************************************************
+ * Name: board_buttons
+ *
+ * Description:
+ *   After board_button_initialize() has been called, board_buttons() may be
+ *   called to collect the state of all buttons.  board_buttons() returns an
+ *   8-bit bit set with each bit associated with a button.  See the
+ *   BUTTON_*_BIT  definitions in board.h for the meaning of each bit.
+ *
+ ****************************************************************************/
+
+uint8_t board_buttons(void)
+{
+  uint8_t ret = 0;
+  uint8_t i   = 0;
+
+  for (i = 0; i < NUM_BUTTONS; i++)
+    {
+      ret |= ((!imxrt_gpio_read(gpio_pins[i])) << i);
+    }
+
+  return ret;
+}
+
+/****************************************************************************
+ * Name: board_button_irq
+ *
+ * Description:
+ *   board_button_irq() may be called to register an interrupt handler that
+ *   will be called when a button is depressed or released.  The ID value is
+ *   a button enumeration value that uniquely identifies a button resource.
+ *   See the BUTTON_* definitions in board.h for the meaning of enumeration
+ *   value.
+ *
+ ****************************************************************************/
+
+#ifdef CONFIG_ARCH_IRQBUTTONS
+int board_button_irq(int id, xcpt_t irqhandler, FAR void *arg)
+{
+  int ret = -EINVAL;
+
+  /* The button has already been configured as an interrupting input (by
+   * board_button_initialize() above).
+   *
+   * Attach the new button handler.
+   */
+
+  if (id < NUM_BUTTONS)
+    {
+      uint32_t irqnum = gpio_pins_int[id];
+      if (irqhandler)
+        {
+          ret = irq_attach(irqnum, irqhandler, arg);
+          imxrt_gpioirq_enable (irqnum);
+
+          /* Then make sure that interrupts are enabled on the pin */
+
+          up_enable_irq(irqnum);
+        }
+      else
+        {
+          up_disable_irq(irqnum);
+          imxrt_gpioirq_disable(irqnum);
+          ret = OK;
+        }
+    }
+
+  return ret;
+}
+#endif
+#endif /* CONFIG_ARCH_BUTTONS */
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_ethernet.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_ethernet.c
new file mode 100644
index 0000000..b5762fa
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_ethernet.c
@@ -0,0 +1,291 @@
+/****************************************************************************
+ * boards/arm/imxrt/imxrt1064-evk/src/imxrt_ethernet.c
+ *
+ *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
+ *   Authors: Gregory Nutt <gn...@nuttx.org>
+ *            David Sidrane <da...@nscdg.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+/* Force verbose debug on in this file only to support unit-level testing. */
+
+#ifdef CONFIG_NETDEV_PHY_DEBUG
+#  undef  CONFIG_DEBUG_INFO
+#  define CONFIG_DEBUG_INFO 1
+#  undef  CONFIG_DEBUG_NET
+#  define CONFIG_DEBUG_NET 1
+#endif
+
+#include <string.h>
+#include <assert.h>
+#include <errno.h>
+#include <debug.h>
+
+#include <nuttx/irq.h>
+#include <nuttx/arch.h>
+
+#include "imxrt_gpio.h"
+#include "imxrt_enet.h"
+
+#include "imxrt1064-evk.h"
+
+#ifdef CONFIG_IMXRT_ENET
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+#define IMXRT_ENET_DEVNAME "eth0"
+
+/* Debug ********************************************************************/
+
+/* Extra, in-depth debug output that is only available if
+ * CONFIG_NETDEV_PHY_DEBUG us defined.
+ */
+
+#ifdef CONFIG_NETDEV_PHY_DEBUG
+#  define phyerr    _err
+#  define phywarn   _warn
+#  define phyinfo   _info
+#else
+#  define phyerr(x...)
+#  define phywarn(x...)
+#  define phyinfo(x...)
+#endif
+
+/****************************************************************************
+ * Private Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: imxrt_enet_phy_enable
+ ****************************************************************************/
+
+#ifdef CONFIG_IMXRT_GPIO1_0_15_IRQ
+static void imxrt_enet_phy_enable(bool enable)
+{
+  phyinfo("IRQ%d: enable=%d\n", GPIO_ENET_INT, enable);
+
+  if (enable)
+    {
+      up_enable_irq(GPIO_ENET_IRQ);
+    }
+  else
+    {
+      up_disable_irq(GPIO_ENET_IRQ);
+    }
+}
+#endif
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Function: imxrt_phy_boardinitialize
+ *
+ * Description:
+ *   Some boards require specialized initialization of the PHY before it can
+ *   be used.  This may include such things as configuring GPIOs, resetting
+ *   the PHY, etc.
+ *   If CONFIG_IMXRT_ENET_PHYINIT is defined in the configuration then the
+ *   board specific logic must provide imxrt_phyinitialize();
+ *   The i.MX RT Ethernet driver will call this function one time before it
+ *   first uses the PHY.
+ *
+ * Input Parameters:
+ *   intf - Always zero for now.
+ *
+ * Returned Value:
+ *   OK on success; Negated errno on failure.
+ *
+ ****************************************************************************/
+
+int imxrt_phy_boardinitialize(int intf)
+{
+#ifdef CONFIG_IMXRT_GPIO1_0_15_IRQ
+  /* Configure the PHY interrupt pin */
+
+  phyinfo("Configuring interrupt: %08x\n", GPIO_ENET_INT);
+  imxrt_config_gpio(GPIO_ENET_INT);
+#endif
+
+  /* Configure the PHY reset pin.
+   *
+   * The #RST uses inverted logic.  The initial value of zero will put the
+   * PHY into the reset state.
+   */
+
+  phyinfo("Configuring reset: %08x\n", GPIO_ENET_RST);
+  imxrt_config_gpio(GPIO_ENET_RST);
+
+  /* Take the PHY out of reset. */
+
+  imxrt_gpio_write(GPIO_ENET_RST, true);
+  return OK;
+}
+
+/****************************************************************************
+ * Name: arch_phy_irq
+ *
+ * Description:
+ *   This function may be called to register an interrupt handler that will
+ *   be called when a PHY interrupt occurs.  This function both attaches
+ *   the interrupt handler and enables the interrupt if 'handler' is non-
+ *   NULL.  If handler is NULL, then the interrupt is detached and disabled
+ *   instead.
+ *
+ *   The PHY interrupt is always disabled upon return.  The caller must
+ *   call back through the enable function point to control the state of
+ *   the interrupt.
+ *
+ *   This interrupt may or may not be available on a given platform depending
+ *   on how the network hardware architecture is implemented.  In a typical
+ *   case, the PHY interrupt is provided to board-level logic as a GPIO
+ *   interrupt (in which case this is a board-specific interface and really
+ *   should be called board_phy_irq()); In other cases, the PHY interrupt
+ *   may be cause by the chip's MAC logic (in which case arch_phy_irq()) is
+ *   an appropriate name.  Other other boards, there may be no PHY interrupts
+ *   available at all.  If client attachable PHY interrupts are available
+ *   from the board or from the chip, then CONFIG_ARCH_PHY_INTERRUPT should
+ *   be defined to indicate that fact.
+ *
+ *   Typical usage:
+ *   a. OS service logic (not application logic*) attaches to the PHY
+ *      PHY interrupt and enables the PHY interrupt.
+ *   b. When the PHY interrupt occurs:  (1) the interrupt should be
+ *      disabled and () work should be scheduled on the worker thread (or
+ *      perhaps a dedicated application thread).
+ *   c. That worker thread should use the SIOCGMIIPHY, SIOCGMIIREG,
+ *      and SIOCSMIIREG ioctl calls** to communicate with the PHY,
+ *      determine what network event took place (Link Up/Down?), and
+ *      take the appropriate actions.
+ *   d. It should then interact the PHY to clear any pending
+ *      interrupts, then re-enable the PHY interrupt.
+ *
+ *    * This is an OS internal interface and should not be used from
+ *      application space.  Rather applications should use the SIOCMIISIG
+ *      ioctl to receive a signal when a PHY event occurs.
+ *   ** This interrupt is really of no use if the Ethernet MAC driver
+ *      does not support these ioctl calls.
+ *
+ * Input Parameters:
+ *   intf    - Identifies the network interface.  For example "eth0".  Only
+ *             useful on platforms that support multiple Ethernet interfaces
+ *             and, hence, multiple PHYs and PHY interrupts.
+ *   handler - The client interrupt handler to be invoked when the PHY
+ *             asserts an interrupt.  Must reside in OS space, but can
+ *             signal tasks in user space.  A value of NULL can be passed
+ *             in order to detach and disable the PHY interrupt.
+ *   arg     - The argument that will accompany the interrupt
+ *   enable  - A function pointer that be unused to enable or disable the
+ *             PHY interrupt.
+ *
+ * Returned Value:
+ *   Zero (OK) returned on success; a negated errno value is returned on
+ *   failure.
+ *
+ ****************************************************************************/
+
+#ifdef CONFIG_IMXRT_GPIO1_0_15_IRQ
+int arch_phy_irq(FAR const char *intf, xcpt_t handler, void *arg,
+                 phy_enable_t *enable)
+{
+  irqstate_t flags;
+  phy_enable_t enabler;
+  int irq;
+
+  DEBUGASSERT(intf);
+
+  ninfo("%s: handler=%p\n", intf, handler);
+  phyinfo("EMAC: devname=%s\n", IMXRT_ENET_DEVNAME);
+
+  if (strcmp(intf, IMXRT_ENET_DEVNAME) == 0)
+    {
+      irq     = GPIO_ENET_IRQ;
+      enabler = imxrt_enet_phy_enable;
+    }
+  else
+    {
+      nerr("ERROR: Unsupported interface: %s\n", intf);
+      return -EINVAL;
+    }
+
+  /* Disable interrupts until we are done.  This guarantees that the
+   * following operations are atomic.
+   */
+
+  flags = spin_lock_irqsave(NULL);
+
+  /* Configure the interrupt */
+
+  if (handler)
+    {
+      /* The interrupt pin has already been configured as an interrupting
+       * input (by imxrt_phy_boardinitialize() above).
+       *
+       * Attach the new button handler.
+       */
+
+      phyinfo("Attach IRQ%d\n", irq);
+      irq_attach(irq, handler, arg);
+    }
+  else
+    {
+      phyinfo("Detach IRQ%d\n", irq);
+      irq_detach(irq);
+      enabler = NULL;
+    }
+
+  /* Return with the interrupt disabled in either case */
+
+  up_disable_irq(GPIO_ENET_IRQ);
+
+  /* Return the enabling function pointer */
+
+  if (enable)
+    {
+      *enable = enabler;
+    }
+
+  /* Return the old handler (so that it can be restored) */
+
+  spin_unlock_irqrestore(NULL, flags);
+  return OK;
+}
+#endif /* CONFIG_IMXRT_GPIO1_0_15_IRQ */
+
+#endif /* CONFIG_IMXRT_ENET */
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexcan.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexcan.c
new file mode 100644
index 0000000..635b819
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexcan.c
@@ -0,0 +1,83 @@
+/****************************************************************************
+ * boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexcan.c
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <stdbool.h>
+#include <errno.h>
+#include <debug.h>
+
+#include <nuttx/can/can.h>
+
+#include "imxrt_flexcan.h"
+#include "imxrt1064-evk.h"
+
+#ifdef CONFIG_IMXRT_FLEXCAN
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: imxrt_can_setup
+ *
+ * Description:
+ *  Initialize CAN and register the CAN device
+ *
+ ****************************************************************************/
+
+int imxrt_can_setup(void)
+{
+  int ret;
+#if defined(CONFIG_IMXRT_FLEXCAN3) && defined(CONFIG_IMXRT_FLEXCAN2)
+  canerr("ERROR: Only one FlexCAN can be defined at the same time\n");
+  return -ENODEV;
+#endif
+
+#ifdef CONFIG_IMXRT_FLEXCAN3
+  /* Call arm_caninitialize() to get an instance of the CAN interface */
+
+  ret = imxrt_caninitialize(3);
+  if (ret < 0)
+    {
+      canerr("ERROR: Failed to get CAN interface\n");
+      return -ENODEV;
+    }
+#elif CONFIG_IMXRT_FLEXCAN2
+  ret = imxrt_caninitialize(2);
+  if (ret < 0)
+    {
+      canerr("ERROR: Failed to get CAN interface\n");
+      return -ENODEV;
+    }
+#elif CONFIG_IMXRT_FLEXCAN1
+  canerr("ERROR: FlexCAN1 is not available on imxrt1060-evk\n");
+  return -ENODEV;
+#else
+  return -ENODEV;
+#endif
+  return OK;
+}
+
+#endif /* CONFIG_IMXRT_FLEXCAN */
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_boot.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_boot.c
new file mode 100644
index 0000000..2e0457b
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_boot.c
@@ -0,0 +1,73 @@
+/****************************************************************************
+ * boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_boot.c
+ *
+ *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
+ *   Author: Ivan Ucherdzhiev <iv...@gmail.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include "imxrt_flexspi_nor_boot.h"
+
+/****************************************************************************
+ * Public Data
+ ****************************************************************************/
+
+__attribute__((section(".boot_hdr.ivt")))
+const struct ivt_s g_image_vector_table =
+{
+  IVT_HEADER,                         /* IVT Header */
+  IMAGE_ENTRY_ADDRESS,                /* Image  Entry Function */
+  IVT_RSVD,                           /* Reserved = 0 */
+  (uint32_t)DCD_ADDRESS,              /* Address where DCD information is stored */
+  (uint32_t)BOOT_DATA_ADDRESS,        /* Address where BOOT Data Structure is stored */
+  (uint32_t)IMAG_VECTOR_TABLE,        /* Pointer to IVT Self (absolute address */
+  (uint32_t)CSF_ADDRESS,              /* Address where CSF file is stored */
+  IVT_RSVD                            /* Reserved = 0 */
+};
+
+__attribute__((section(".boot_hdr.boot_data")))
+const struct boot_data_s g_boot_data =
+{
+  IMAGE_DEST,                         /* boot start location */
+  (IMAGE_DEST_END - IMAGE_DEST),      /* size */
+  PLUGIN_FLAG,                        /* Plugin flag */
+  0xffffffff                          /* empty - extra data word */
+};
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/* None */
+
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_boot.h b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_boot.h
new file mode 100644
index 0000000..9387ec1
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_boot.h
@@ -0,0 +1,184 @@
+/****************************************************************************
+ * boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_boot.h
+ *
+ *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
+ *   Authors: Ivan Ucherdzhiev <iv...@gmail.com>
+ *            David Sidrane <da...@nscdg.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+#ifndef __BOARDS_ARM_IMXRT_IMXRT1060_EVK_SRC_IMXRT_FLEXSPI_NOR_BOOT_H
+#define __BOARDS_ARM_IMXRT_IMXRT1060_EVK_SRC_IMXRT_FLEXSPI_NOR_BOOT_H
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <stdint.h>
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+/* IVT Data */
+
+#define IVT_MAJOR_VERSION           0x4
+#define IVT_MAJOR_VERSION_SHIFT     0x4
+#define IVT_MAJOR_VERSION_MASK      0xf
+#define IVT_MINOR_VERSION           0x1
+#define IVT_MINOR_VERSION_SHIFT     0x0
+#define IVT_MINOR_VERSION_MASK      0xf
+
+#define IVT_VERSION(major, minor)   \
+  ((((major) & IVT_MAJOR_VERSION_MASK) << IVT_MAJOR_VERSION_SHIFT) |  \
+  (((minor) & IVT_MINOR_VERSION_MASK) << IVT_MINOR_VERSION_SHIFT))
+
+#define IVT_TAG_HEADER              (0xd1)       /* Image Vector Table */
+#define IVT_SIZE                    0x2000
+#define IVT_PAR                     IVT_VERSION(IVT_MAJOR_VERSION, IVT_MINOR_VERSION)
+
+#define IVT_HEADER                  (IVT_TAG_HEADER | (IVT_SIZE << 8) | (IVT_PAR << 24))
+#define IVT_RSVD                    (uint32_t)(0x00000000)
+
+/* DCD Data */
+
+#define DCD_TAG_HEADER              (0xd2)
+#define DCD_TAG_HEADER_SHIFT        (24)
+#define DCD_VERSION                 (0x40)
+#define DCD_ARRAY_SIZE              1
+
+#define FLASH_BASE                  0x70000000
+#define FLASH_END                   0x70400000
+
+/* This needs to take into account  the memory configuration at boot
+ * bootloader
+ */
+
+#define ROM_BOOTLOADER_OCRAM_RES    0x8000
+#define OCRAM_BASE                  (0x20200000 + ROM_BOOTLOADER_OCRAM_RES)
+#define OCRAM_END                   (OCRAM_BASE + (512 * 1024) + (256 * 1024) \
+                                     - ROM_BOOTLOADER_OCRAM_RES)
+
+#define SCLK 1
+#if defined(CONFIG_BOOT_RUNFROMFLASH)
+#  define IMAGE_DEST                FLASH_BASE
+#  define IMAGE_DEST_END            FLASH_END
+#  define IMAGE_DEST_OFFSET         0
+#else
+#  define IMAGE_DEST                OCRAM_BASE
+#  define IMAGE_DEST_END            OCRAM_END
+#  define IMAGE_DEST_OFFSET         IVT_SIZE
+#endif
+
+#define LOCATE_IN_DEST(x)           (((uint32_t)(x)) - FLASH_BASE + IMAGE_DEST)
+#define LOCATE_IN_SRC(x)            (((uint32_t)(x)) - IMAGE_DEST + FLASH_BASE)
+
+#ifdef CONFIG_IMXRT1064_EVK_SDRAM
+#  define DCD_ADDRESS               &g_dcd_data
+#else
+#  define DCD_ADDRESS               0
+#endif
+#define BOOT_DATA_ADDRESS           LOCATE_IN_DEST(&g_boot_data)
+#define CSF_ADDRESS                 0
+#define PLUGIN_FLAG                 (uint32_t)0
+
+/* Located in Destination Memory */
+
+#define IMAGE_ENTRY_ADDRESS        ((uint32_t)&_vectors)
+#define IMAG_VECTOR_TABLE           LOCATE_IN_DEST(&g_image_vector_table)
+
+/****************************************************************************
+ * Public Types
+ ****************************************************************************/
+
+/* IVT Data */
+
+struct ivt_s
+{
+  /* Header with tag #HAB_TAG_IVT, length and HAB version fields
+   * (see data)
+   */
+
+  uint32_t hdr;
+
+  /* Absolute address of the first instruction to execute from the
+   * image
+   */
+
+  uint32_t entry;
+
+  /* Reserved in this version of HAB: should be NULL. */
+
+  uint32_t reserved1;
+
+  /* Absolute address of the image DCD: may be NULL. */
+
+  uint32_t dcd;
+
+  /* Absolute address of the Boot Data: may be NULL, but not interpreted
+   * any further by HAB
+   */
+
+  uint32_t boot_data;
+
+  /* Absolute address of the IVT. */
+
+  uint32_t self;
+
+  /* Absolute address of the image CSF. */
+
+  uint32_t csf;
+
+  /* Reserved in this version of HAB: should be zero. */
+
+  uint32_t reserved2;
+};
+
+/* Boot Data */
+
+struct boot_data_s
+{
+  uint32_t start;           /* boot start location */
+  uint32_t size;            /* size */
+  uint32_t plugin;          /* plugin flag - 1 if downloaded application is plugin */
+  uint32_t placeholder;     /* placeholder to make even 0x10 size */
+};
+
+/****************************************************************************
+ * Public Data
+ ****************************************************************************/
+
+extern const struct boot_data_s g_boot_data;
+#ifdef CONFIG_IMXRT1064_EVK_SDRAM
+extern const uint8_t g_dcd_data[];
+#endif
+extern  const uint32_t  _vectors[];
+
+#endif /* __BOARDS_ARM_IMXRT_IMXRT1060_EVK_SRC_IMXRT_FLEXSPI_NOR_BOOT_H */
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_flash.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_flash.c
new file mode 100644
index 0000000..4e6bef2
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_flash.c
@@ -0,0 +1,136 @@
+/****************************************************************************
+ * boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_flash.c
+ *
+ *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
+ *   Authors: Ivan Ucherdzhiev <iv...@gmail.com>
+ *            David Sidrane <da...@nscdg.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include "imxrt_flexspi_nor_flash.h"
+
+/****************************************************************************
+ * Public Data
+ ****************************************************************************/
+
+#if defined (CONFIG_IMXRT1060_EVK_HYPER_FLASH)
+__attribute__((section(".boot_hdr.conf")))
+const struct flexspi_nor_config_s g_flash_config =
+{
+  .mem_config               =
+  {
+    .tag                    = FLEXSPI_CFG_BLK_TAG,
+    .version                = FLEXSPI_CFG_BLK_VERSION,
+    .read_sample_clksrc     = FLASH_READ_SAMPLE_CLK_EXT_INPUT_FROM_DQSPAD,
+    .cs_hold_time           = 3u,
+    .cs_setup_time          = 3u,
+    .column_address_width   = 3u,
+
+  /* Enable DDR mode, Word addassable, Safe configuration,
+   * Differential clock
+   */
+
+    .controller_misc_option =
+        (1u << FLEXSPIMISC_OFFSET_DDR_MODE_EN) |
+        (1u << FLEXSPIMISC_OFFSET_WORD_ADDRESSABLE_EN) |
+        (1u << FLEXSPIMISC_OFFSET_SAFECONFIG_FREQ_EN) |
+        (1u << FLEXSPIMISC_OFFSET_DIFFCLKEN),
+    .sflash_pad_type        = SERIAL_FLASH_8PADS,
+    .serial_clk_freq        = FLEXSPI_SERIAL_CLKFREQ_133MHz,
+    .sflash_a1size          = 64u * 1024u * 1024u,
+    .data_valid_time        =
+                              {
+                                16u, 16u
+                              },
+    .lookup_table           =
+    {
+      /* Read LUTs */
+
+      FLEXSPI_LUT_SEQ(CMD_DDR, FLEXSPI_8PAD, 0xa0, RADDR_DDR,
+                      FLEXSPI_8PAD, 0x18),
+      FLEXSPI_LUT_SEQ(CADDR_DDR, FLEXSPI_8PAD, 0x10, DUMMY_DDR,
+                      FLEXSPI_8PAD, 0x06),
+      FLEXSPI_LUT_SEQ(READ_DDR, FLEXSPI_8PAD, 0x04, STOP,
+                      FLEXSPI_1PAD, 0x0),
+    },
+  },
+  .page_size                = 512u,
+  .sector_size              = 256u * 1024u,
+  .blocksize                = 256u * 1024u,
+  .is_uniform_blocksize     = 1,
+};
+
+#elif defined (CONFIG_IMXRT1064_EVK_QSPI_FLASH)
+__attribute__((section(".boot_hdr.conf")))
+const struct flexspi_nor_config_s g_flash_config =
+{
+  .mem_config =
+  {
+    .tag                    = FLEXSPI_CFG_BLK_TAG,
+    .version                = FLEXSPI_CFG_BLK_VERSION,
+    .read_sample_clksrc     = FLASH_READ_SAMPLE_CLK_LOOPBACK_FROM_DQSPAD,
+    .cs_hold_time           = 3u,
+    .cs_setup_time          = 3u,
+    .column_address_width   = 0u,
+    .device_type            = FLEXSPI_DEVICE_TYPE_SERIAL_NOR,
+    .sflash_pad_type        = SERIAL_FLASH_4PADS,
+    .serial_clk_freq        = FLEXSPI_SERIAL_CLKFREQ_100MHz,
+    .sflash_a1size          = 4u * 1024u * 1024u,
+    .data_valid_time        =
+                              {
+                                16u, 16u
+                              },
+    .lookup_table           =
+    {
+      /* LUTs */
+
+      FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xeb, RADDR_SDR,
+                      FLEXSPI_4PAD, 0x18),
+      FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, 0x06, READ_SDR,
+                      FLEXSPI_4PAD, 0x04),
+    },
+  },
+
+  .page_size                = 256u,
+  .sector_size              = 4u * 1024u,
+  .blocksize                = 64u * 1024u,
+  .is_uniform_blocksize     = false,
+};
+#else
+# error Boot Flash type not chosen!
+#endif
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
diff --git a/boards/arm/imxrt/imxrt1060-evk/src/imxrt_flexspi_nor_flash.h b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_flash.h
similarity index 75%
copy from boards/arm/imxrt/imxrt1060-evk/src/imxrt_flexspi_nor_flash.h
copy to boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_flash.h
index ded676e..7d3a809 100644
--- a/boards/arm/imxrt/imxrt1060-evk/src/imxrt_flexspi_nor_flash.h
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_flash.h
@@ -1,25 +1,41 @@
 /****************************************************************************
- * boards/arm/imxrt/imxrt1060-evk/src/imxrt_flexspi_nor_flash.h
+ * boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_flash.h
  *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.  The
- * ASF licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the
- * License.  You may obtain a copy of the License at
+ *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
+ *   Authors: Ivan Ucherdzhiev <iv...@gmail.com>
+ *            David Sidrane <da...@nscdg.com>
  *
- *   http://www.apache.org/licenses/LICENSE-2.0
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
  *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
- * License for the specific language governing permissions and limitations
- * under the License.
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
  *
  ****************************************************************************/
 
-#ifndef __BOARDS_ARM_IMXRT_IMXRT1060_EVK_SRC_IMXRT_FLEXSPI_NOR_FLASH_H
-#define __BOARDS_ARM_IMXRT_IMXRT1060_EVK_SRC_IMXRT_FLEXSPI_NOR_FLASH_H
+#ifndef __BOARDS_ARM_IMXRT_IMXRT1064_EVK_SRC_IMXRT_FLEXSPI_NOR_FLASH_H
+#define __BOARDS_ARM_IMXRT_IMXRT1064_EVK_SRC_IMXRT_FLEXSPI_NOR_FLASH_H
 
 /****************************************************************************
  * Included Files
@@ -142,9 +158,7 @@
 
 #define NOR_CMD_LUT_SEQ_IDX_READSTATUS CMD_LUT_SEQ_IDX_READSTATUS
 
-/* 2  Read status DPI/QPI/OPI sequence id in lookupTable stored in config
- * block
- */
+/* 2  Read status DPI/QPI/OPI sequence id in LUT stored in config block */
 
 #define NOR_CMD_LUT_SEQ_IDX_READSTATUS_XPI 2
 
@@ -152,9 +166,7 @@
 
 #define NOR_CMD_LUT_SEQ_IDX_WRITEENABLE CMD_LUT_SEQ_IDX_WRITEENABLE
 
-/* 4  Write Enable DPI/QPI/OPI sequence id in lookupTable stored in config
- * block
- */
+/* 4  Write Enable DPI/QPI/OPI sequence id in LUT stored in config block */
 
 #define NOR_CMD_LUT_SEQ_IDX_WRITEENABLE_XPI 4
 
@@ -178,15 +190,11 @@
 
 #define NOR_CMD_LUT_SEQ_IDX_READ_SFDP 13
 
-/* 14 Restore 0-4-4/0-8-8 mode sequence id in lookupTable stored in config
- * block
- */
+/* 14 Restore 0-4-4/0-8-8 mode sequence id in LUT stored in config block */
 
 #define NOR_CMD_LUT_SEQ_IDX_RESTORE_NOCMD 14
 
-/* 15 Exit 0-4-4/0-8-8 mode sequence id in lookupTable stored in config
- * blobk
- */
+/* 15 Exit 0-4-4/0-8-8 mode sequence id in LUT stored in config blobk */
 
 #define NOR_CMD_LUT_SEQ_IDX_EXIT_NOCMD 15
 
@@ -224,7 +232,7 @@ enum flash_read_sample_clk_e
   FLASH_READ_SAMPLE_CLK_LOOPBACK_INTERNELLY = 0,
   FLASH_READ_SAMPLE_CLK_LOOPBACK_FROM_DQSPAD = 1,
   FLASH_READ_SAMPLE_CLK_LOOPBACK_FROM_SCKPAD = 2,
-  FLASH_READ_SAMPLE_CLK_EXTERNALINPUT_FROM_DQSPAD = 3,
+  FLASH_READ_SAMPLE_CLK_EXT_INPUT_FROM_DQSPAD = 3,
 };
 
 /*  Misc feature bit definitions */
@@ -336,18 +344,30 @@ struct flexspi_mem_config_s
 
 struct flexspi_nor_config_s
 {
-  struct flexspi_mem_config_s mem_config; /* Common memory configuration info via FlexSPI */
-  uint32_t page_size;                     /* Page size of Serial NOR */
-  uint32_t sector_size;                   /* Sector size of Serial NOR */
-  uint8_t ipcmd_serial_clkfreq;           /* Clock frequency for IP command */
-  uint8_t is_uniform_blocksize;           /* Sector/Block size is the same */
-  uint8_t reserved0[2];                   /* Reserved for future use */
-  uint8_t serial_nor_type;                /* Serial NOR Flash type: 0/1/2/3 */
-  uint8_t need_exit_nocmdmode;            /* Need to exit NoCmd mode before other IP command */
-  uint8_t halfclk_for_nonreadcmd;         /* Half the Serial Clock for non-read command: true/false */
-  uint8_t need_restore_nocmdmode;         /* Need to Restore NoCmd mode after IP command execution */
-  uint32_t blocksize;                     /* Block size */
-  uint32_t reserve2[11];                  /* Reserved for future use */
+  struct flexspi_mem_config_s mem_config; /* Common memory configuration info
+                                           * via FlexSPI
+                                           */
+
+  uint32_t page_size;                  /* Page size of Serial NOR */
+  uint32_t sector_size;                /* Sector size of Serial NOR */
+  uint8_t ipcmd_serial_clkfreq;        /* Clock frequency for IP command */
+  uint8_t is_uniform_blocksize;        /* Sector/Block size is the same */
+  uint8_t reserved0[2];                /* Reserved for future use */
+  uint8_t serial_nor_type;             /* Serial NOR Flash type: 0/1/2/3 */
+  uint8_t need_exit_nocmdmode;         /* Need to exit NoCmd mode before
+                                        * other IP command
+                                        */
+
+  uint8_t halfclk_for_nonreadcmd;      /* Half the Serial Clock for non-read
+                                        * command: true/false
+                                        */
+
+  uint8_t need_restore_nocmdmode;      /* Need to Restore NoCmd mode after IP
+                                        * command execution
+                                        */
+
+  uint32_t blocksize;                  /* Block size */
+  uint32_t reserve2[11];               /* Reserved for future use */
 };
 
-#endif /* __BOARDS_ARM_IMXRT_IMXRT1060_EVK_SRC_IMXRT_FLEXSPI_NOR_FLASH_H */
+#endif /* __BOARDS_ARM_IMXRT_IMXRT1064_EVK_SRC_IMXRT_FLEXSPI_NOR_FLASH_H */
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_ft5x06.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_ft5x06.c
new file mode 100644
index 0000000..94f13cd
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_ft5x06.c
@@ -0,0 +1,258 @@
+/****************************************************************************
+ * boards/arm/imxrt/imxrt1064-evk/src/imxrt_ft5x06.c
+ *
+ *   Copyright 2019 ElFaro LAB S.L. All rights reserved.
+ *   Author: Fabio Balzano <fa...@elfarolab.com>
+ *
+ * Based on boards/arm/lpc54xx/lpcxpresso-lpc54628/src/lpc54_ft5x06.c
+ *   Copyright (C) 2017 Gregory Nutt. All rights reserved.
+ *   Author: Gregory Nutt <gn...@nuttx.org>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <syslog.h>
+#include <errno.h>
+
+#include <nuttx/arch.h>
+#include <nuttx/i2c/i2c_master.h>
+#include <nuttx/input/ft5x06.h>
+
+#include "imxrt_config.h"
+#include "imxrt_gpio.h"
+#include "imxrt_lpi2c.h"
+
+#include "imxrt1064-evk.h"
+
+#include <arch/board/board.h>
+
+#ifdef CONFIG_INPUT_FT5X06
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+#define FT5X06_FREQUENCY 400000
+
+/****************************************************************************
+ * Private Function Ptototypes
+ ****************************************************************************/
+
+#ifndef CONFIG_FT5X06_POLLMODE
+static int  imxrt_ft5x06_attach(FAR const struct ft5x06_config_s *config,
+              xcpt_t isr, FAR void *arg);
+static void imxrt_ft5x06_enable(FAR const struct ft5x06_config_s *config,
+              bool enable);
+static void imxrt_ft5x06_clear(FAR const struct ft5x06_config_s *config);
+#endif
+
+static void imxrt_ft5x06_wakeup(FAR const struct ft5x06_config_s *config);
+static void imxrt_ft5x06_nreset(FAR const struct ft5x06_config_s *config,
+              bool state);
+
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static const struct ft5x06_config_s g_ft5x06_config =
+{
+  .address   = FT5X06_I2C_ADDRESS,
+  .frequency = FT5X06_FREQUENCY,
+#ifndef CONFIG_FT5X06_POLLMODE
+  .attach    = imxrt_ft5x06_attach,
+  .enable    = imxrt_ft5x06_enable,
+  .clear     = imxrt_ft5x06_clear,
+#endif
+  .wakeup    = imxrt_ft5x06_wakeup,
+  .nreset    = imxrt_ft5x06_nreset
+};
+
+#ifndef CONFIG_FT5X06_POLLMODE
+static uint8_t g_ft5x06_irq;
+#endif
+
+/****************************************************************************
+ * Private Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: imxrt_ft5x06_attach
+ *
+ * Description:
+ *   Attach an FT5X06 interrupt handler to a GPIO interrupt
+ *
+ ****************************************************************************/
+
+#ifndef CONFIG_FT5X06_POLLMODE
+static int imxrt_ft5x06_attach(FAR const struct ft5x06_config_s *config,
+                               xcpt_t isr, FAR void *arg)
+{
+  return irq_attach(g_ft5x06_irq, isr, arg);
+}
+#endif
+
+/****************************************************************************
+ * Name: imxrt_ft5x06_enable
+ *
+ * Description:
+ *   Enable or disable a GPIO interrupt
+ *
+ ****************************************************************************/
+
+#ifndef CONFIG_FT5X06_POLLMODE
+static void imxrt_ft5x06_enable(FAR const struct ft5x06_config_s *config,
+                                bool enable)
+{
+  if (enable)
+    {
+      up_enable_irq(g_ft5x06_irq);
+    }
+  else
+    {
+      up_disable_irq(g_ft5x06_irq);
+    }
+}
+#endif
+
+/****************************************************************************
+ * Name: imxrt_ft5x06_clear
+ *
+ * Description:
+ *   Acknowledge/clear any pending GPIO interrupt
+ *
+ ****************************************************************************/
+
+#ifndef CONFIG_FT5X06_POLLMODE
+static void imxrt_ft5x06_clear(FAR const struct ft5x06_config_s *config)
+{
+  imxrt_gpio_ackedge(g_ft5x06_irq);
+}
+#endif
+
+/****************************************************************************
+ * Name: imxrt_ft5x06_wakeup
+ *
+ * Description:
+ *   Issue WAKE interrupt to FT5X06 to change the FT5X06 from Hibernate to
+ *   Active mode.
+ *
+ ****************************************************************************/
+
+static void imxrt_ft5x06_wakeup(FAR const struct ft5x06_config_s *config)
+{
+  /* We do not have access to the WAKE pin in the implementation */
+}
+
+/****************************************************************************
+ * Name: imxrt_ft5x06_nreset
+ *
+ * Description:
+ *   Control the chip reset pin (active low)
+ *
+ ****************************************************************************/
+
+static void imxrt_ft5x06_nreset(FAR const struct ft5x06_config_s *config,
+                                bool nstate)
+{
+  imxrt_gpio_write(GPIO_FT5X06_CTRST_N, nstate);
+}
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: imxrt_ft5x06_register
+ *
+ * Description:
+ *   Register the FT5X06 touch panel driver
+ *
+ ****************************************************************************/
+
+int imxrt_ft5x06_register(void)
+{
+  FAR struct i2c_master_s *i2c;
+  int ret;
+
+  /* Initialize CTRSTn pin */
+
+  imxrt_config_gpio(GPIO_FT5X06_CTRST_N);
+
+#ifndef CONFIG_FT5X06_POLLMODE
+  int irq;
+
+  /* Initialize GPIO interrupt pin. */
+
+  imxrt_gpio_config(GPIO_FT5X06_INTR);
+  irq = imxrt_gpio_irqno(GPIO_FT5X06_INTR);
+  DEBUGASSERT(irq > 0 && irq < UINT8_MAX);
+  g_ft5x06_irq = (uint8_t)irq;
+
+  /* Make sure that the interrupt is disabled at the NVIC */
+
+  imxrt_gpio_ackedge(irq);
+  up_disable_irq(irq);
+#endif
+
+  /* Take the FT5X06 out of reset */
+
+  imxrt_gpio_write(GPIO_FT5X06_CTRST_N, true);
+
+  /* The FT5X06 is on LPI2C1.  Get the handle and register the F5x06 device */
+
+  i2c = imxrt_i2cbus_initialize(1);
+  if (i2c == NULL)
+    {
+      syslog(LOG_ERR, "ERROR: Failed to get LPI2C1 interface\n");
+      return -ENODEV;
+    }
+  else
+    {
+      ret = ft5x06_register(i2c, &g_ft5x06_config, 0);
+      if (ret < 0)
+        {
+          syslog(LOG_ERR, "ERROR: Failed to register FT5X06 driver: %d\n",
+                 ret);
+
+          imxrt_gpio_write(GPIO_FT5X06_CTRST_N, false);
+          imxrt_i2cbus_uninitialize(i2c);
+          return ret;
+        }
+    }
+
+  return OK;
+}
+
+#endif /* CONFIG_INPUT_FT5X06*/
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_gpio.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_gpio.c
new file mode 100644
index 0000000..3070925
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_gpio.c
@@ -0,0 +1,236 @@
+/****************************************************************************
+ * boards/arm/imxrt/imxrt1064-evk/src/imxrt_gpio.c
+ *
+ *   Copyright (C) 2017-2018 Gregory Nutt. All rights reserved.
+ *   Copyright (C) 2017 Alan Carvalho de Assis. All rights reserved.
+ *   Author:  Alan Carvalho de Assis <ac...@gmail.com>
+ *
+ * Based on: boards/imxrt1050-evk/src/imxrt_gpio.c
+ *
+ *   Author:  Pavlina Koleva <pa...@gmail.com>
+ *   Modified by: Ivan Ucherdzhiev <iv...@gmail.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <stdbool.h>
+#include <assert.h>
+#include <debug.h>
+
+#include <nuttx/clock.h>
+#include <nuttx/wdog.h>
+#include <nuttx/ioexpander/gpio.h>
+
+#include <arch/board/board.h>
+
+#include "chip.h"
+
+#include <imxrt_gpio.h>
+#include "imxrt1064-evk.h"
+
+#if defined(CONFIG_DEV_GPIO) && !defined(CONFIG_GPIO_LOWER_HALF)
+
+/****************************************************************************
+ * Private Types
+ ****************************************************************************/
+
+struct imxrtgpio_dev_s
+{
+  struct gpio_dev_s gpio;
+  uint8_t id;
+};
+
+/****************************************************************************
+ * Private Function Prototypes
+ ****************************************************************************/
+
+#if BOARD_NGPIOIN > 0
+static int gpin_read(FAR struct gpio_dev_s *dev, FAR bool *value);
+#endif
+
+#if BOARD_NGPIOOUT > 0
+static int gpout_read(FAR struct gpio_dev_s *dev, FAR bool *value);
+static int gpout_write(FAR struct gpio_dev_s *dev, bool value);
+#endif
+
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+ #if BOARD_NGPIOIN > 0
+static const struct gpio_operations_s gpin_ops =
+{
+  .go_read   = gpin_read,
+  .go_write  = NULL,
+  .go_attach = NULL,
+  .go_enable = NULL,
+};
+
+/* This array maps the GPIO pins used as INPUT */
+
+static const uint32_t g_gpioinputs[BOARD_NGPIOIN] =
+{
+  GPIO_IN1,
+};
+
+static struct imxrtgpio_dev_s g_gpin[BOARD_NGPIOIN];
+#endif
+
+#if BOARD_NGPIOOUT > 0
+
+static const struct gpio_operations_s gpout_ops =
+{
+  .go_read   = gpout_read,
+  .go_write  = gpout_write,
+  .go_attach = NULL,
+  .go_enable = NULL,
+};
+
+/* This array maps the GPIO pins used as OUTPUT */
+
+static const uint32_t g_gpiooutputs[BOARD_NGPIOOUT] =
+{
+  GPIO_GOUT1,
+  GPIO_GOUT2,
+  GPIO_GOUT3,
+  GPIO_GOUT4,
+};
+
+static struct imxrtgpio_dev_s g_gpout[BOARD_NGPIOOUT];
+#endif
+
+/****************************************************************************
+ * Private Functions
+ ****************************************************************************/
+
+#if BOARD_NGPIOIN > 0
+static int gpin_read(FAR struct gpio_dev_s *dev, FAR bool *value)
+{
+  FAR struct imxrtgpio_dev_s *imxrtgpio = (FAR struct imxrtgpio_dev_s *)dev;
+
+  DEBUGASSERT(imxrtgpio != NULL && value != NULL);
+  DEBUGASSERT(imxrtgpio->id < BOARD_NGPIOIN);
+  gpioinfo("Reading...\n");
+
+  *value = imxrt_gpio_read(g_gpioinputs[imxrtgpio->id]);
+  return OK;
+}
+#endif
+
+#if BOARD_NGPIOOUT > 0
+static int gpout_read(FAR struct gpio_dev_s *dev, FAR bool *value)
+{
+  FAR struct imxrtgpio_dev_s *imxrtgpio = (FAR struct imxrtgpio_dev_s *)dev;
+
+  DEBUGASSERT(imxrtgpio != NULL && value != NULL);
+  DEBUGASSERT(imxrtgpio->id < BOARD_NGPIOOUT);
+  gpioinfo("Reading...\n");
+
+  *value = imxrt_gpio_read(g_gpiooutputs[imxrtgpio->id]);
+  return OK;
+}
+
+static int gpout_write(FAR struct gpio_dev_s *dev, bool value)
+{
+  FAR struct imxrtgpio_dev_s *imxrtgpio = (FAR struct imxrtgpio_dev_s *)dev;
+
+  DEBUGASSERT(imxrtgpio != NULL);
+  DEBUGASSERT(imxrtgpio->id < BOARD_NGPIOOUT);
+  gpioinfo("Writing %d\n", (int)value);
+
+  imxrt_gpio_write(g_gpiooutputs[imxrtgpio->id], value);
+  return OK;
+}
+#endif
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: imxrt_gpio_initialize
+ *
+ * Description:
+ *   Initialize GPIO drivers for use with /apps/examples/gpio
+ *
+ ****************************************************************************/
+
+int imxrt_gpio_initialize(void)
+{
+  int pincount = 0;
+  int i;
+
+#if BOARD_NGPIOIN > 0
+  for (i = 0; i < BOARD_NGPIOIN; i++)
+    {
+      /* Setup and register the GPIO pin */
+
+      g_gpin[i].gpio.gp_pintype = GPIO_INPUT_PIN;
+      g_gpin[i].gpio.gp_ops     = &gpin_ops;
+      g_gpin[i].id              = i;
+
+      gpio_pin_register(&g_gpin[i].gpio, pincount);
+
+      /* Configure the pin that will be used as input */
+
+      imxrt_config_gpio(g_gpioinputs[i]);
+
+      pincount++;
+    }
+#endif
+
+#if BOARD_NGPIOOUT > 0
+  for (i = 0; i < BOARD_NGPIOOUT; i++)
+    {
+      /* Setup and register the GPIO pin */
+
+      g_gpout[i].gpio.gp_pintype = GPIO_OUTPUT_PIN;
+      g_gpout[i].gpio.gp_ops     = &gpout_ops;
+      g_gpout[i].id              = i;
+
+      gpio_pin_register(&g_gpout[i].gpio, pincount);
+
+      /* Configure the pin that will be used as output */
+
+      imxrt_gpio_write(g_gpiooutputs[i], 0);
+      imxrt_config_gpio(g_gpiooutputs[i]);
+
+      pincount++;
+    }
+#endif
+
+  return 0;
+}
+#endif /* CONFIG_DEV_GPIO && !CONFIG_GPIO_LOWER_HALF */
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_lcd.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_lcd.c
new file mode 100644
index 0000000..a1dea3a
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_lcd.c
@@ -0,0 +1,108 @@
+/****************************************************************************
+ * boards/arm/imxrt/imxrt1064-evk/src/imxrt_lcd.c
+ *
+ *   Copyright (C) 2019 Gregory Nutt. All rights reserved.
+ *   Author: Gregory Nutt <gn...@nuttx.org>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <stdbool.h>
+#include <debug.h>
+
+#include "imxrt_lcd.h"
+#include "imxrt_gpio.h"
+
+#include "imxrt1064-evk.h"
+
+#include <arch/board/board.h>
+
+#ifdef CONFIG_IMXRT_LCD
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: imxrt_lcd_bkl_pin_setup
+ *
+ * Description:
+ *   Setup backlight pin (initially off)
+ *
+ ****************************************************************************/
+
+void imxrt_lcd_pkl_pin_setup(void)
+{
+  imxrt_config_gpio(GPIO_LCD_BL);
+}
+
+/****************************************************************************
+ * Name: imxrt_backlight
+ *
+ * Description:
+ *   If CONFIG_IMXRT_LCD_BACKLIGHT is defined, then the board-specific
+ *   logic must provide this interface to turn the backlight on and off.
+ *
+ ****************************************************************************/
+
+#ifdef CONFIG_IMXRT_LCD_BACKLIGHT
+void imxrt_backlight(bool blon)
+{
+  imxrt_gpio_write(GPIO_LCD_BL, blon); /* High illuminates */
+}
+#endif
+
+/****************************************************************************
+ * Name: imxrt_lcd_initialize
+ *
+ * Description:
+ *   Initialization of the LCD blackligt and pin for the imxrt_bringup().
+ *
+ ****************************************************************************/
+
+void imxrt_lcd_initialize(void)
+{
+  /* Setup the backlight pin */
+
+  imxrt_lcd_pkl_pin_setup();
+
+#ifdef CONFIG_IMXRT_LCD_BACKLIGHT
+  /* Turn ON the backlight */
+
+  imxrt_backlight(true);
+#endif
+}
+
+#endif /* CONFIG_IMXRT_LCD */
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_mmcsd_spi.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_mmcsd_spi.c
new file mode 100644
index 0000000..a41400a
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_mmcsd_spi.c
@@ -0,0 +1,138 @@
+/****************************************************************************
+ * boards/arm/imxrt/imxrt1064-evk/src/imxrt_mmcsd_spi.c
+ *
+ *   Copyright (C) 2018 Greg Nutt. All rights reserved.
+ *   Author: ivan Ucherdzhiev <iv...@gmail.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <debug.h>
+#include <nuttx/config.h>
+#include <nuttx/mmcsd.h>
+#include <stdint.h>
+#include <stdbool.h>
+
+#include <nuttx/spi/spi.h>
+#include <arch/board/board.h>
+
+#include "arm_arch.h"
+#include "chip.h"
+#include "imxrt_lpspi.h"
+
+#ifdef CONFIG_MMCSD_SPI
+
+/****************************************************************************
+ * Pre-processor Definitions
+ ****************************************************************************/
+
+#ifndef CONFIG_IMXRT_LPSPI1
+#  error "SD driver requires CONFIG_IMXRT_LPSPI1 to be enabled"
+#endif
+
+#ifdef CONFIG_DISABLE_MOUNTPOINT
+#  error "SD driver requires CONFIG_DISABLE_MOUNTPOINT to be disabled"
+#endif
+
+/****************************************************************************
+ * Private Definitions
+ ****************************************************************************/
+
+static const int SD_SPI_PORT = CONFIG_NSH_MMCSDSPIPORTNO; /* SD is connected
+                                                           * to SPI1 port
+                                                           */
+
+static const int SD_SLOT_NO  = 0; /* There is only one SD slot */
+
+/****************************************************************************
+ * Private Functions
+ ****************************************************************************/
+
+/* NOTE:  We are using a SDCard adapter/module without Card Detect pin!
+ * Then we don't need to Card Detect callback here.
+ */
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: imxrt_spi1register
+ *
+ * Description:
+ *   Registers media change callback
+ ****************************************************************************/
+
+#ifdef CONFIG_IMXRT_LPSPI1
+int imxrt_lpspi1register(struct spi_dev_s *dev, spi_mediachange_t callback,
+                       void *arg)
+{
+  spiinfo("INFO: Registering spi1 device\n");
+  return OK;
+}
+#endif
+
+/****************************************************************************
+ * Name: imxrt_mmcsd_spi_initialize
+ *
+ * Description:
+ *   Initialize SPI-based SD card and card detect thread.
+ *
+ ****************************************************************************/
+
+int imxrt_mmcsd_spi_initialize(int minor)
+{
+  struct spi_dev_s *spi;
+  int rv;
+
+  mcinfo("INFO: Initializing mmcsd card\n");
+
+  spi = imxrt_lpspibus_initialize(SD_SPI_PORT);
+  if (spi == NULL)
+    {
+      mcerr("ERROR: Failed to initialize SPI port %d\n", SD_SPI_PORT);
+      return -ENODEV;
+    }
+
+  rv = mmcsd_spislotinitialize(minor, SD_SLOT_NO, spi);
+  if (rv < 0)
+    {
+      mcerr("ERROR: Failed to bind SPI port %d to SD slot %d\n",
+            SD_SPI_PORT, SD_SLOT_NO);
+      return rv;
+    }
+
+  spiinfo("INFO: mmcsd card has been initialized successfully\n");
+  return OK;
+}
+
+#endif /* CONFIG_MMCSD_SPI */
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_sdram_ini_dcd.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_sdram_ini_dcd.c
new file mode 100644
index 0000000..a9d1e9d
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_sdram_ini_dcd.c
@@ -0,0 +1,1326 @@
+/****************************************************************************
+ * boards/arm/imxrt/imxrt1064-evk/src/imxrt_sdram_ini_dcd.c
+ *
+ *   Copyright (C) 2017, NXP Semiconductors, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include "imxrt_flexspi_nor_boot.h"
+
+__attribute__((section(".boot_hdr.dcd_data")))
+
+/****************************************************************************
+ * Public Data
+ ****************************************************************************/
+
+const uint8_t g_dcd_data[] =
+{
+  /* 0000 */
+
+  DCD_TAG_HEADER,
+  0x04,
+  0x30,
+  0x41,
+  0xcc,
+  0x03,
+  0xac,
+  0x04,
+  0x40,
+  0x0f,
+  0xc0,
+  0x68,
+  0xff,
+  0xff,
+  0xff,
+  0xff,
+
+  /* 0010 */
+
+  0x40,
+  0x0f,
+  0xc0,
+  0x6c,
+  0xff,
+  0xff,
+  0xff,
+  0xff,
+  0x40,
+  0x0f,
+  0xc0,
+  0x70,
+  0xff,
+  0xff,
+  0xff,
+  0xff,
+
+  /* 0020 */
+
+  0x40,
+  0x0f,
+  0xc0,
+  0x74,
+  0xff,
+  0xff,
+  0xff,
+  0xff,
+  0x40,
+  0x0f,
+  0xc0,
+  0x78,
+  0xff,
+  0xff,
+  0xff,
+  0xff,
+
+  /* 0030 */
+
+  0x40,
+  0x0f,
+  0xc0,
+  0x7c,
+  0xff,
+  0xff,
+  0xff,
+  0xff,
+  0x40,
+  0x0f,
+  0xc0,
+  0x80,
+  0xff,
+  0xff,
+  0xff,
+  0xff,
+
+  /* 0040 */
+
+  0x40,
+  0x0d,
+  0x80,
+  0x30,
+  0x00,
+  0x00,
+  0x20,
+  0x01,
+  0x40,
+  0x0d,
+  0x81,
+  0x00,
+  0x00,
+  0x1d,
+  0x00,
+  0x00,
+
+  /* 0050 */
+
+  0x40,
+  0x0f,
+  0xc0,
+  0x14,
+  0x00,
+  0x01,
+  0x0d,
+  0x40,
+  0x40,
+  0x1f,
+  0x80,
+  0x14,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+
+  /* 0060 */
+
+  0x40,
+  0x1f,
+  0x80,
+  0x18,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+  0x40,
+  0x1f,
+  0x80,
+  0x1c,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+
+  /* 0070 */
+
+  0x40,
+  0x1f,
+  0x80,
+  0x20,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+  0x40,
+  0x1f,
+  0x80,
+  0x24,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+
+  /* 0080 */
+
+  0x40,
+  0x1f,
+  0x80,
+  0x28,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+  0x40,
+  0x1f,
+  0x80,
+  0x2c,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+
+  /* 0090 */
+
+  0x40,
+  0x1f,
+  0x80,
+  0x30,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+  0x40,
+  0x1f,
+  0x80,
+  0x34,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+
+  /* 00a0 */
+
+  0x40,
+  0x1f,
+  0x80,
+  0x38,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+  0x40,
+  0x1f,
+  0x80,
+  0x3c,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+
+  /* 00b0 */
+
+  0x40,
+  0x1f,
+  0x80,
+  0x40,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+  0x40,
+  0x1f,
+  0x80,
+  0x44,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+
+  /* 00c0 */
+
+  0x40,
+  0x1f,
+  0x80,
+  0x48,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+  0x40,
+  0x1f,
+  0x80,
+  0x4c,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+
+  /* 00d0 */
+
+  0x40,
+  0x1f,
+  0x80,
+  0x50,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+  0x40,
+  0x1f,
+  0x80,
+  0x54,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+
+  /* 00e0 */
+
+  0x40,
+  0x1f,
+  0x80,
+  0x58,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+  0x40,
+  0x1f,
+  0x80,
+  0x5c,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+
+  /* 00f0 */
+
+  0x40,
+  0x1f,
+  0x80,
+  0x60,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+  0x40,
+  0x1f,
+  0x80,
+  0x64,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+
+  /* 0100 */
+
+  0x40,
+  0x1f,
+  0x80,
+  0x68,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+  0x40,
+  0x1f,
+  0x80,
+  0x6c,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+
+  /* 0110 */
+
+  0x40,
+  0x1f,
+  0x80,
+  0x70,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+  0x40,
+  0x1f,
+  0x80,
+  0x74,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+
+  /* 0120 */
+
+  0x40,
+  0x1f,
+  0x80,
+  0x78,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+  0x40,
+  0x1f,
+  0x80,
+  0x7c,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+
+  /* 0130 */
+
+  0x40,
+  0x1f,
+  0x80,
+  0x80,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+  0x40,
+  0x1f,
+  0x80,
+  0x84,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+
+  /* 0140 */
+
+  0x40,
+  0x1f,
+  0x80,
+  0x88,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+  0x40,
+  0x1f,
+  0x80,
+  0x8c,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+
+  /* 0150 */
+
+  0x40,
+  0x1f,
+  0x80,
+  0x90,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+  0x40,
+  0x1f,
+  0x80,
+  0x94,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+
+  /* 0160 */
+
+  0x40,
+  0x1f,
+  0x80,
+  0x98,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+  0x40,
+  0x1f,
+  0x80,
+  0x9c,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+
+  /* 0170 */
+
+  0x40,
+  0x1f,
+  0x80,
+  0xa0,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+  0x40,
+  0x1f,
+  0x80,
+  0xa4,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+
+  /* 0180 */
+
+  0x40,
+  0x1f,
+  0x80,
+  0xa8,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+  0x40,
+  0x1f,
+  0x80,
+  0xac,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+
+  /* 0190 */
+
+  0x40,
+  0x1f,
+  0x80,
+  0xb0,
+  0x00,
+  0x00,
+  0x00,
+  0x10,
+  0x40,
+  0x1f,
+  0x80,
+  0xb4,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+
+  /* 01a0 */
+
+  0x40,
+  0x1f,
+  0x80,
+  0xb8,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+  0x40,
+  0x1f,
+  0x82,
+  0x04,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+
+  /* 01b0 */
+
+  0x40,
+  0x1f,
+  0x82,
+  0x08,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+  0x40,
+  0x1f,
+  0x82,
+  0x0c,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+
+  /* 01c0 */
+
+  0x40,
+  0x1f,
+  0x82,
+  0x10,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+  0x40,
+  0x1f,
+  0x82,
+  0x14,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+
+  /* 01d0 */
+
+  0x40,
+  0x1f,
+  0x82,
+  0x18,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+  0x40,
+  0x1f,
+  0x82,
+  0x1c,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+
+  /* 01e0 */
+
+  0x40,
+  0x1f,
+  0x82,
+  0x20,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+  0x40,
+  0x1f,
+  0x82,
+  0x24,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+
+  /* 01f0 */
+
+  0x40,
+  0x1f,
+  0x82,
+  0x28,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+  0x40,
+  0x1f,
+  0x82,
+  0x2c,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+
+  /* 0200 */
+
+  0x40,
+  0x1f,
+  0x82,
+  0x30,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+  0x40,
+  0x1f,
+  0x82,
+  0x34,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+
+  /* 0210 */
+
+  0x40,
+  0x1f,
+  0x82,
+  0x38,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+  0x40,
+  0x1f,
+  0x82,
+  0x3c,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+
+  /* 0220 */
+
+  0x40,
+  0x1f,
+  0x82,
+  0x40,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+  0x40,
+  0x1f,
+  0x82,
+  0x44,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+
+  /* 0230 */
+
+  0x40,
+  0x1f,
+  0x82,
+  0x48,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+  0x40,
+  0x1f,
+  0x82,
+  0x4c,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+
+  /* 0240 */
+
+  0x40,
+  0x1f,
+  0x82,
+  0x50,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+  0x40,
+  0x1f,
+  0x82,
+  0x54,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+
+  /* 0250 */
+
+  0x40,
+  0x1f,
+  0x82,
+  0x58,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+  0x40,
+  0x1f,
+  0x82,
+  0x5c,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+
+  /* 0260 */
+
+  0x40,
+  0x1f,
+  0x82,
+  0x60,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+  0x40,
+  0x1f,
+  0x82,
+  0x64,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+
+  /* 0270 */
+
+  0x40,
+  0x1f,
+  0x82,
+  0x68,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+  0x40,
+  0x1f,
+  0x82,
+  0x6c,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+
+  /* 0280 */
+
+  0x40,
+  0x1f,
+  0x82,
+  0x70,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+  0x40,
+  0x1f,
+  0x82,
+  0x74,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+
+  /* 0290 */
+
+  0x40,
+  0x1f,
+  0x82,
+  0x78,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+  0x40,
+  0x1f,
+  0x82,
+  0x7c,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+
+  /* 02a0 */
+
+  0x40,
+  0x1f,
+  0x82,
+  0x80,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+  0x40,
+  0x1f,
+  0x82,
+  0x84,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+
+  /* 02b0 */
+
+  0x40,
+  0x1f,
+  0x82,
+  0x88,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+  0x40,
+  0x1f,
+  0x82,
+  0x8c,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+
+  /* 02c0 */
+
+  0x40,
+  0x1f,
+  0x82,
+  0x90,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+  0x40,
+  0x1f,
+  0x82,
+  0x94,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+
+  /* 02d0 */
+
+  0x40,
+  0x1f,
+  0x82,
+  0x98,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+  0x40,
+  0x1f,
+  0x82,
+  0x9c,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+
+  /* 02e0 */
+
+  0x40,
+  0x1f,
+  0x82,
+  0xa0,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+  0x40,
+  0x1f,
+  0x82,
+  0xa4,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+
+  /* 02f0 */
+
+  0x40,
+  0x1f,
+  0x82,
+  0xa8,
+  0x00,
+  0x01,
+  0x10,
+  0xf9,
+  0x40,
+  0x2f,
+  0x00,
+  0x00,
+  0x10,
+  0x00,
+  0x00,
+  0x04,
+
+  /* 0300 */
+
+  0x40,
+  0x2f,
+  0x00,
+  0x08,
+  0x00,
+  0x03,
+  0x05,
+  0x24,
+  0x40,
+  0x2f,
+  0x00,
+  0x0c,
+  0x06,
+  0x03,
+  0x05,
+  0x24,
+
+  /* 0310 */
+
+  0x40,
+  0x2f,
+  0x00,
+  0x10,
+  0x80,
+  0x00,
+  0x00,
+  0x1b,
+  0x40,
+  0x2f,
+  0x00,
+  0x14,
+  0x82,
+  0x00,
+  0x00,
+  0x1b,
+
+  /* 0320 */
+
+  0x40,
+  0x2f,
+  0x00,
+  0x18,
+  0x84,
+  0x00,
+  0x00,
+  0x1b,
+  0x40,
+  0x2f,
+  0x00,
+  0x1c,
+  0x86,
+  0x00,
+  0x00,
+  0x1b,
+
+  /* 0330 */
+
+  0x40,
+  0x2f,
+  0x00,
+  0x20,
+  0x90,
+  0x00,
+  0x00,
+  0x21,
+  0x40,
+  0x2f,
+  0x00,
+  0x24,
+  0xa0,
+  0x00,
+  0x00,
+  0x19,
+
+  /*  0340 */
+
+  0x40,
+  0x2f,
+  0x00,
+  0x28,
+  0xa8,
+  0x00,
+  0x00,
+  0x17,
+  0x40,
+  0x2f,
+  0x00,
+  0x2c,
+  0xa9,
+  0x00,
+  0x00,
+  0x1b,
+
+  /*  0350 */
+
+  0x40,
+  0x2f,
+  0x00,
+  0x30,
+  0x00,
+  0x00,
+  0x00,
+  0x21,
+  0x40,
+  0x2f,
+  0x00,
+  0x04,
+  0x00,
+  0x00,
+  0x79,
+  0xa8,
+
+  /* 0360  */
+
+  0x40,
+  0x2f,
+  0x00,
+  0x40,
+  0x00,
+  0x00,
+  0x0f,
+  0x31,
+  0x40,
+  0x2f,
+  0x00,
+  0x44,
+  0x00,
+  0x65,
+  0x29,
+  0x22,
+
+  /* 0370  */
+
+  0x40,
+  0x2f,
+  0x00,
+  0x48,
+  0x00,
+  0x01,
+  0x09,
+  0x20,
+  0x40,
+  0x2f,
+  0x00,
+  0x4c,
+  0x50,
+  0x21,
+  0x0a,
+  0x08,
+
+  /* 0380  */
+
+  0x40,
+  0x2f,
+  0x00,
+  0x80,
+  0x00,
+  0x00,
+  0x00,
+  0x21,
+  0x40,
+  0x2f,
+  0x00,
+  0x84,
+  0x00,
+  0x88,
+  0x88,
+  0x88,
+
+  /* 0390  */
+
+  0x40,
+  0x2f,
+  0x00,
+  0x94,
+  0x00,
+  0x00,
+  0x00,
+  0x02,
+  0x40,
+  0x2f,
+  0x00,
+  0x98,
+  0x00,
+  0x00,
+  0x00,
+  0x00,
+
+  /* 03a0  */
+
+  0x40,
+  0x2f,
+  0x00,
+  0x90,
+  0x80,
+  0x00,
+  0x00,
+  0x00,
+  0x40,
+  0x2f,
+  0x00,
+  0x9c,
+  0xa5,
+  0x5a,
+  0x00,
+  0x0f,
+
+  /* 03b0 */
+
+  0xcf,
+  0x00,
+  0x0c,
+  0x1c,
+  0x40,
+  0x2f,
+  0x00,
+  0x3c,
+  0x00,
+  0x00,
+  0x00,
+  0x01,
+  0xcc,
+  0x00,
+  0x14,
+  0x04,
+
+  /* 03c0 */
+
+  0x40,
+  0x2f,
+  0x00,
+  0x90,
+  0x80,
+  0x00,
+  0x00,
+  0x00,
+  0x40,
+  0x2f,
+  0x00,
+  0x9c,
+  0xa5,
+  0x5a,
+  0x00,
+  0x0c,
+
+  /* 03d0 */
+
+  0xcf,
+  0x00,
+  0x0c,
+  0x1c,
+  0x40,
+  0x2f,
+  0x00,
+  0x3c,
+  0x00,
+  0x00,
+  0x00,
+  0x01,
+  0xcc,
+  0x00,
+  0x14,
+  0x04,
+
+  /* 03e0 */
+
+  0x40,
+  0x2f,
+  0x00,
+  0x90,
+  0x80,
+  0x00,
+  0x00,
+  0x00,
+  0x40,
+  0x2f,
+  0x00,
+  0x9c,
+  0xa5,
+  0x5a,
+  0x00,
+  0x0c,
+
+  /* 03f0 */
+
+  0xcf,
+  0x00,
+  0x0c,
+  0x1c,
+  0x40,
+  0x2f,
+  0x00,
+  0x3c,
+  0x00,
+  0x00,
+  0x00,
+  0x01,
+  0xcc,
+  0x00,
+  0x1c,
+  0x04,
+
+  /* 0400 */
+
+  0x40,
+  0x2f,
+  0x00,
+  0xa0,
+  0x00,
+  0x00,
+  0x00,
+  0x33,
+  0x40,
+  0x2f,
+  0x00,
+  0x90,
+  0x80,
+  0x00,
+  0x00,
+  0x00,
+
+  /* 0410 */
+
+  0x40,
+  0x2f,
+  0x00,
+  0x9c,
+  0xa5,
+  0x5a,
+  0x00,
+  0x0a,
+  0xcf,
+  0x00,
+  0x0c,
+  0x1c,
+  0x40,
+  0x2f,
+  0x00,
+  0x3c,
+
+  /* 0420 */
+
+  0x00,
+  0x00,
+  0x00,
+  0x01,
+  0xcc,
+  0x00,
+  0x0c,
+  0x04,
+  0x40,
+  0x2f,
+  0x00,
+  0x4c,
+  0x50,
+  0x21,
+  0x0a,
+  0x09,
+};
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/* None */
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_spi.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_spi.c
new file mode 100644
index 0000000..24365c4
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_spi.c
@@ -0,0 +1,229 @@
+/****************************************************************************
+ * boards/arm/imxrt/imxrt1064-evk/src/imxrt_spi.c
+ *
+ *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
+ *   Authors: Ivan Ucherdzhiev <iv...@gmail.com>
+ *            David Sidrane <da...@nscdg.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <stdint.h>
+#include <stdbool.h>
+#include <errno.h>
+#include <debug.h>
+
+#include <nuttx/spi/spi.h>
+#include <arch/board/board.h>
+
+#include "arm_arch.h"
+
+#include "imxrt_config.h"
+#include "imxrt_lpspi.h"
+#include "imxrt_gpio.h"
+#include "imxrt1064-evk.h"
+
+#if defined(CONFIG_IMXRT_LPSPI1) || defined(CONFIG_IMXRT_LPSPI2) || \
+    defined(CONFIG_IMXRT_LPSPI3) || defined(CONFIG_IMXRT_LPSPI4)
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: imxrt_spidev_initialize
+ *
+ * Description:
+ *   Called to configure SPI chip select GPIO pins for the imxrt1060-evk
+ *   board.
+ *
+ ****************************************************************************/
+
+void weak_function imxrt_spidev_initialize(void)
+{
+#ifdef CONFIG_IMXRT_LPSPI1
+  imxrt_config_gpio(GPIO_LPSPI1_CS); /* LPSPI1 chip select */
+  imxrt_config_gpio(GPIO_MMCSD_EN);
+#endif
+#ifdef CONFIG_IMXRT_LPSPI3
+  imxrt_config_gpio(GPIO_LPSPI3_CS); /* LPSPI3 chip select */
+#endif
+}
+
+/****************************************************************************
+ * Name:  imxrt_lpspi1/2/3select and imxrt_lpspi1/2/3status
+ *
+ * Description:
+ *  The external functions, imxrt_lpspi1/2/3select and imxrt_lpspi1/2/3status
+ *  must be provided by board-specific logic.
+ *  They are implementations of the select and status methods of the SPI
+ *  interface defined by struct spi_ops_s (see include/nuttx/spi/spi.h).
+ *  All other methods (including imxrt_lpspibus_initialize())
+ *  are provided by common STM32 logic.
+ *  To use this common SPI logic on your board:
+ *
+ *   1. Provide logic in imxrt_boardinitialize() to configure SPI chip select
+ *      pins.
+ *   2. Provide imxrt_lpspi1/2/3select() and imxrt_lpspi1/2/3status()
+ *      functions in your board-specific logic.
+ *      These functions will perform chip selection and status operations
+ *      using GPIOs in the way your board is configured.
+ *   3. Add a calls to imxrt_lpspibus_initialize() in your low level
+ *      application initialization logic
+ *   4. The handle returned by imxrt_lpspibus_initialize() may then be used
+ *      to bind the SPI driver to higher level logic (e.g., calling
+ *      mmcsd_spislotinitialize(), for example, will bind the SPI driver to
+ *      the SPI MMC/SD driver).
+ *
+ ****************************************************************************/
+
+#ifdef CONFIG_IMXRT_LPSPI1
+void imxrt_lpspi1select(FAR struct spi_dev_s *dev, uint32_t devid,
+                        bool selected)
+{
+  spiinfo("devid: %d CS: %s\n", (int)devid,
+          selected ? "assert" : "de-assert");
+
+  imxrt_gpio_write(GPIO_LPSPI1_CS, !selected);
+}
+
+uint8_t imxrt_lpspi1status(FAR struct spi_dev_s *dev, uint32_t devid)
+{
+  return 0;
+}
+#endif
+
+#ifdef CONFIG_IMXRT_LPSPI2
+void imxrt_lpspi2select(FAR struct spi_dev_s *dev, uint32_t devid,
+                        bool selected)
+{
+  spiinfo("devid: %d CS: %s\n", (int)devid,
+          selected ? "assert" : "de-assert");
+
+  imxrt_gpio_write(GPIO_LPSPI2_CS, !selected);
+}
+
+uint8_t imxrt_lpspi2status(FAR struct spi_dev_s *dev, uint32_t devid)
+{
+  return 0;
+}
+#endif
+
+#ifdef CONFIG_IMXRT_LPSPI3
+void imxrt_lpspi3select(FAR struct spi_dev_s *dev, uint32_t devid,
+                        bool selected)
+{
+  spiinfo("devid: %d CS: %s\n", (int)devid,
+          selected ? "assert" : "de-assert");
+
+  imxrt_gpio_write(GPIO_LPSPI3_CS, !selected);
+}
+
+uint8_t imxrt_lpspi3status(FAR struct spi_dev_s *dev, uint32_t devid)
+{
+  return 0;
+}
+#endif
+
+#ifdef CONFIG_IMXRT_LPSPI4
+void imxrt_lpspi4select(FAR struct spi_dev_s *dev, uint32_t devid,
+                        bool selected)
+{
+  spiinfo("devid: %d CS: %s\n", (int)devid,
+          selected ? "assert" : "de-assert");
+
+  imxrt_gpio_write(GPIO_LPSPI4_CS, !selected);
+}
+
+uint8_t imxrt_lpspi4status(FAR struct spi_dev_s *dev, uint32_t devid)
+{
+  return 0;
+}
+#endif
+
+/****************************************************************************
+ * Name: imxrt_lpspi1cmddata
+ *
+ * Description:
+ *   Set or clear the SH1101A A0 or SD1306 D/C n bit to select data (true)
+ *   or command (false). This function must be provided by platform-specific
+ *   logic. This is an implementation of the cmddata method of the SPI
+ *   interface defined by struct spi_ops_s (see include/nuttx/spi/spi.h).
+ *
+ * Input Parameters:
+ *
+ *   spi - SPI device that controls the bus the device that requires the CMD/
+ *         DATA selection.
+ *   devid - If there are multiple devices on the bus, this selects which one
+ *         to select cmd or data.  NOTE:  This design restricts, for example,
+ *         one one SPI display per SPI bus.
+ *   cmd - true: select command; false: select data
+ *
+ * Returned Value:
+ *   None
+ *
+ ****************************************************************************/
+
+#ifdef CONFIG_SPI_CMDDATA
+#ifdef CONFIG_IMXRT_LPSPI1
+int imxrt_lpspi1cmddata(FAR struct spi_dev_s *dev, uint32_t devid, bool cmd)
+{
+  return -ENODEV;
+}
+#endif
+
+#ifdef CONFIG_IMXRT_LPSPI2
+int imxrt_lpspi2cmddata(FAR struct spi_dev_s *dev, uint32_t devid, bool cmd)
+{
+  return -ENODEV;
+}
+#endif
+
+#ifdef CONFIG_IMXRT_LPSPI3
+int imxrt_lpspi3cmddata(FAR struct spi_dev_s *dev, uint32_t devid, bool cmd)
+{
+  return -ENODEV;
+}
+#endif
+
+#ifdef CONFIG_IMXRT_LPSPI4
+int imxrt_lpspi4cmddata(FAR struct spi_dev_s *dev, uint32_t devid, bool cmd)
+{
+  return -ENODEV;
+}
+#endif
+#endif /* CONFIG_SPI_CMDDATA */
+
+#endif /* CONFIG_IMXRT_LPSPI1 || CONFIG_IMXRT_LPSPI2 */
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_usbhost.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_usbhost.c
new file mode 100644
index 0000000..08e6444
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_usbhost.c
@@ -0,0 +1,314 @@
+/*****************************************************************************
+ * boards/arm/imxrt/imxrt1064-evk/src/imxrt_usbhost.c
+ *
+ *   Copyright (C) 2013, 2015-2017 Gregory Nutt. All rights reserved.
+ *   Author: Gregory Nutt <gn...@nuttx.org>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Included Files
+ *****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <sys/types.h>
+#include <stdint.h>
+#include <stdbool.h>
+#include <sched.h>
+#include <errno.h>
+#include <assert.h>
+#include <debug.h>
+
+#include <nuttx/irq.h>
+#include <nuttx/kthread.h>
+#include <nuttx/usb/usbdev.h>
+#include <nuttx/usb/usbhost.h>
+#include <nuttx/usb/usbdev_trace.h>
+#include <nuttx/usb/ehci.h>
+
+#include <imxrt_ehci.h>
+
+#include "hardware/imxrt_pinmux.h"
+#include "hardware/imxrt_usbotg.h"
+#include "imxrt_periphclks.h"
+#include "imxrt1064-evk.h"
+
+#include <arch/board/board.h>  /* Must always be included last */
+
+#if defined(CONFIG_IMXRT_USBOTG) || defined(CONFIG_USBHOST)
+
+/*****************************************************************************
+ * Pre-processor Definitions
+ *****************************************************************************/
+
+#ifndef CONFIG_USBHOST_DEFPRIO
+#  define CONFIG_USBHOST_DEFPRIO 50
+#endif
+
+#ifndef CONFIG_USBHOST_STACKSIZE
+#  ifdef CONFIG_USBHOST_HUB
+#    define CONFIG_USBHOST_STACKSIZE 1536
+#  else
+#    define CONFIG_USBHOST_STACKSIZE 1024
+#  endif
+#endif
+
+/*****************************************************************************
+ * Private Data
+ *****************************************************************************/
+
+/* Retained device driver handle */
+
+static struct usbhost_connection_s *g_ehciconn;
+
+/*****************************************************************************
+ * Private Functions
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Name: ehci_waiter
+ *
+ * Description:
+ *   Wait for USB devices to be connected to the EHCI root hub.
+ *
+ *****************************************************************************/
+
+static int ehci_waiter(int argc, char *argv[])
+{
+  FAR struct usbhost_hubport_s *hport;
+
+  uinfo("ehci_waiter:  Running\n");
+  for (; ; )
+    {
+      /* Wait for the device to change state */
+
+      DEBUGVERIFY(CONN_WAIT(g_ehciconn, &hport));
+      syslog(LOG_INFO, "ehci_waiter: %s\n",
+             hport->connected ? "connected" : "disconnected");
+
+      /* Did we just become connected? */
+
+      if (hport->connected)
+        {
+          /* Yes.. enumerate the newly connected device */
+
+          CONN_ENUMERATE(g_ehciconn, hport);
+        }
+    }
+
+  /* Keep the compiler from complaining */
+
+  return 0;
+}
+
+/*****************************************************************************
+ * Public Functions
+ *****************************************************************************/
+
+/*****************************************************************************
+ * Name: imxrt_usbhost_initialize
+ *
+ * Description:
+ *   Called at application startup time to initialize the USB host
+ *   functionality.
+ *   This function will start a thread that will monitor for device
+ *   connection/disconnection events.
+ *
+ *****************************************************************************/
+
+int imxrt_usbhost_initialize(void)
+{
+  pid_t pid;
+  int ret;
+
+  imxrt_clockall_usboh3();
+
+  /* Make sure we don't accidentally switch on USB bus power */
+
+  *((uint32_t *)IMXRT_USBNC_USB_OTG1_CTRL) = USBNC_PWR_POL;
+  *((uint32_t *)0x400d9030)                = (1 << 21);
+  *((uint32_t *)0x400d9000)                = 0;
+
+  /* Setup pins, with power initially off */
+
+  imxrt_config_gpio(GPIO_USBOTG_ID);
+
+  /* First, register all of the class drivers needed to support the drivers
+   * that we care about
+   */
+
+#ifdef CONFIG_USBHOST_HUB
+  /* Initialize USB hub support */
+
+  ret = usbhost_hub_initialize();
+  if (ret < 0)
+    {
+      syslog(LOG_ERR, "ERROR: usbhost_hub_initialize failed: %d\n", ret);
+    }
+#endif
+
+#ifdef CONFIG_USBHOST_MSC
+  /* Register the USB host Mass Storage Class */
+
+  ret = usbhost_msc_initialize();
+  if (ret != OK)
+    {
+      syslog(LOG_ERR,
+             "ERROR: Failed to register the mass storage class: %d\n", ret);
+    }
+#endif
+
+#ifdef CONFIG_USBHOST_CDCACM
+  /* Register the CDC/ACM serial class */
+
+  ret = usbhost_cdcacm_initialize();
+  if (ret != OK)
+    {
+      uerr("ERROR: Failed to register the CDC/ACM serial class\n");
+    }
+#endif
+
+#ifdef CONFIG_USBHOST_HIDKBD
+  /* Register the USB host HID keyboard class driver */
+
+  ret = usbhost_kbdinit();
+  if (ret != OK)
+    {
+      uerr("ERROR: Failed to register the KBD class\n");
+    }
+#endif
+
+  /* Then get an instance of the USB EHCI interface. */
+
+  g_ehciconn = imxrt_ehci_initialize(0);
+
+  if (!g_ehciconn)
+    {
+      uerr("ERROR: imxrt_ehci_initialize failed\n");
+      return -ENODEV;
+    }
+
+  /* Start a thread to handle device connection. */
+
+  pid = kthread_create("EHCI Monitor", CONFIG_USBHOST_DEFPRIO,
+                       CONFIG_USBHOST_STACKSIZE,
+                       (main_t)ehci_waiter, (FAR char * const *)NULL);
+  if (pid < 0)
+    {
+      uerr("ERROR: Failed to create ehci_waiter task: %d\n", ret);
+      return -ENODEV;
+    }
+
+  return OK;
+}
+
+/*****************************************************************************
+ * Name: imxrt_usbhost_vbusdrive
+ *
+ * Description:
+ *   Enable/disable driving of VBUS 5V output.  This function must be
+ *   provided by each platform that implements the OHCI or EHCI host
+ *   interface
+ *
+ * Input Parameters:
+ *   rhport - Selects root hub port to be powered host interface.
+ *            Since the IMXRT has only a downstream port, zero is
+ *            the only possible value for this parameter.
+ *   enable - true: enable VBUS power; false: disable VBUS power
+ *
+ * Returned Value:
+ *   None
+ *
+ *****************************************************************************/
+
+#define HCOR ((volatile struct ehci_hcor_s *)IMXRT_USBOTG_HCOR_BASE)
+
+void imxrt_usbhost_vbusdrive(int rhport, bool enable)
+{
+  uint32_t regval;
+
+  uinfo("RHPort%d: enable=%d\n", rhport + 1, enable);
+
+  /* The IMXRT has only a single root hub port */
+
+  if (rhport == 0)
+    {
+      /* Then enable or disable VBUS power */
+
+      regval = HCOR->portsc[rhport];
+      regval &= ~EHCI_PORTSC_PP;
+      if (enable)
+        {
+          regval |= EHCI_PORTSC_PP;
+        }
+
+      HCOR->portsc[rhport] = regval;
+    }
+}
+
+/*****************************************************************************
+ * Name: imxrt_setup_overcurrent
+ *
+ * Description:
+ *   Setup to receive an interrupt-level callback if an overcurrent condition
+ *   is detected.
+ *
+ * Input Parameters:
+ *   handler - New overcurrent interrupt handler
+ *   arg     - The argument that will accompany the interrupt
+ *
+ * Returned Value:
+ *   Zero (OK) returned on success; a negated errno value is returned on
+ *   failure.
+ *
+ *****************************************************************************/
+
+#if 0 /* Not ready yet */
+int imxrt_setup_overcurrent(xcpt_t handler, void *arg)
+{
+  irqstate_t flags;
+
+  /* Disable interrupts until we are done.  This guarantees that the
+   * following operations are atomic.
+   */
+
+  flags = enter_critical_section();
+
+  /* Configure the interrupt */
+
+#warning Missing logic
+
+  leave_critical_section(flags);
+  return OK;
+}
+#endif /* 0 */
+
+#endif /* CONFIG_IMXRT_USBOTG || CONFIG_USBHOST */
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_userleds.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_userleds.c
new file mode 100644
index 0000000..56c0963
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_userleds.c
@@ -0,0 +1,100 @@
+/****************************************************************************
+ * boards/arm/imxrt/imxrt1064-evk/src/imxrt_userleds.c
+ *
+ *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
+ *   Authors: Gregory Nutt <gn...@nuttx.org>
+ *            David Sidrane <da...@nscdg.com>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ * 3. Neither the name NuttX nor the names of its contributors may be
+ *    used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ ****************************************************************************/
+
+/* There are four LED status indicators located on the EVK Board.  The
+ * functions of these LEDs include:
+ *
+ *   - Main Power Supply(D3)
+ *     Green: DC 5V main supply is normal.
+ *     Red:   J2 input voltage is over 5.6V.
+ *     Off:   The board is not powered.
+ *   - Reset RED LED(D15)
+ *   - OpenSDA LED(D16)
+ *   - USER LED(D18)
+ *
+ * Only a single LED, D18, is under software control.
+ */
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include "imxrt_gpio.h"
+#include "imxrt_iomuxc.h"
+#include <arch/board/board.h>
+#include "imxrt1064-evk.h"
+
+#ifndef CONFIG_ARCH_LEDS
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: board_userled_initialize
+ ****************************************************************************/
+
+uint32_t board_userled_initialize(void)
+{
+  /* Configure LED GPIO for output */
+
+  imxrt_config_gpio(GPIO_LED);
+  return BOARD_NLEDS;
+}
+
+/****************************************************************************
+ * Name: board_userled
+ ****************************************************************************/
+
+void board_userled(int led, bool ledon)
+{
+  imxrt_gpio_write(GPIO_LED, !ledon);  /* Low illuminates */
+}
+
+/****************************************************************************
+ * Name: board_userled_all
+ ****************************************************************************/
+
+void board_userled_all(uint32_t ledset)
+{
+  /* Low illuminates */
+
+  imxrt_gpio_write(GPIO_LED, (ledset & BOARD_USERLED_BIT) == 0);
+}
+
+#endif /* !CONFIG_ARCH_LEDS */

[incubator-nuttx] 02/11: Removing some none existing configurations from the default

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

davids5 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit 4e50ba14e847c416c2f8a0bd4661e8be15c6073d
Author: jturnsek <je...@gmail.com>
AuthorDate: Wed Apr 7 07:46:32 2021 +0200

    Removing some none existing configurations from the default
---
 boards/arm/imxrt/imxrt1064-evk/configs/nsh/defconfig | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/boards/arm/imxrt/imxrt1064-evk/configs/nsh/defconfig b/boards/arm/imxrt/imxrt1064-evk/configs/nsh/defconfig
index e748f20..1d7f1bb 100644
--- a/boards/arm/imxrt/imxrt1064-evk/configs/nsh/defconfig
+++ b/boards/arm/imxrt/imxrt1064-evk/configs/nsh/defconfig
@@ -37,6 +37,3 @@ CONFIG_START_DAY=14
 CONFIG_START_MONTH=3
 CONFIG_SYSTEM_NSH=y
 CONFIG_USER_ENTRYPOINT="nsh_main"
-CONFIG_IMXRT_FLEXSPI1=y
-CONFIG_MTD=y
-CONFIG_MTD_FLEXSPI_NOR=y

[incubator-nuttx] 04/11: Removing some none existing initialization.

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

davids5 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit a4857d78b96bc816e0af481916c5077598ad4a3b
Author: jturnsek <je...@gmail.com>
AuthorDate: Wed Apr 7 08:26:32 2021 +0200

    Removing some none existing initialization.
---
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_bringup.c | 8 --------
 1 file changed, 8 deletions(-)

diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_bringup.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_bringup.c
index 6216685..0014941 100644
--- a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_bringup.c
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_bringup.c
@@ -278,14 +278,6 @@ int imxrt_bringup(void)
   usbdev_serialinitialize(0);
 #endif
 
-#ifdef CONFIG_MTD_FLEXSPI_NOR
-  ret = imxrt_flexspi_nor_setup();
-  if (ret < 0)
-    {
-      syslog(LOG_ERR, "ERROR: imxrt_flexspi_nor_setup failed: %d\n", ret);
-    }
-#endif
-
   UNUSED(ret);
   return OK;
 }

[incubator-nuttx] 11/11: Refreshing default configs

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

davids5 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit 7813b4f88afc4b5be6c78733d9cf20392a701125
Author: jturnsek <je...@gmail.com>
AuthorDate: Wed Apr 14 20:26:21 2021 +0200

    Refreshing default configs
---
 boards/arm/imxrt/imxrt1064-evk/configs/can/defconfig        | 1 -
 boards/arm/imxrt/imxrt1064-evk/configs/canfd/defconfig      | 1 -
 boards/arm/imxrt/imxrt1064-evk/configs/knsh/defconfig       | 1 -
 boards/arm/imxrt/imxrt1064-evk/configs/libcxxtest/defconfig | 1 -
 boards/arm/imxrt/imxrt1064-evk/configs/lvgl/defconfig       | 1 -
 boards/arm/imxrt/imxrt1064-evk/configs/netnsh/defconfig     | 1 -
 boards/arm/imxrt/imxrt1064-evk/configs/nsh/defconfig        | 1 -
 boards/arm/imxrt/imxrt1064-evk/configs/nshocram/defconfig   | 1 -
 8 files changed, 8 deletions(-)

diff --git a/boards/arm/imxrt/imxrt1064-evk/configs/can/defconfig b/boards/arm/imxrt/imxrt1064-evk/configs/can/defconfig
index c6e6981..dbe25bc 100644
--- a/boards/arm/imxrt/imxrt1064-evk/configs/can/defconfig
+++ b/boards/arm/imxrt/imxrt1064-evk/configs/can/defconfig
@@ -63,7 +63,6 @@ CONFIG_NET_CAN_NOTIFIER=y
 CONFIG_NET_SOCKOPTS=y
 CONFIG_NET_STATISTICS=y
 CONFIG_NET_TIMESTAMP=y
-CONFIG_NFILE_DESCRIPTORS=8
 CONFIG_NSH_ARCHINIT=y
 CONFIG_NSH_BUILTIN_APPS=y
 CONFIG_NSH_FILEIOSIZE=512
diff --git a/boards/arm/imxrt/imxrt1064-evk/configs/canfd/defconfig b/boards/arm/imxrt/imxrt1064-evk/configs/canfd/defconfig
index 6f431f0..9d1e92f 100644
--- a/boards/arm/imxrt/imxrt1064-evk/configs/canfd/defconfig
+++ b/boards/arm/imxrt/imxrt1064-evk/configs/canfd/defconfig
@@ -64,7 +64,6 @@ CONFIG_NET_CAN_NOTIFIER=y
 CONFIG_NET_CAN_SOCK_OPTS=y
 CONFIG_NET_STATISTICS=y
 CONFIG_NET_TIMESTAMP=y
-CONFIG_NFILE_DESCRIPTORS=8
 CONFIG_NSH_ARCHINIT=y
 CONFIG_NSH_BUILTIN_APPS=y
 CONFIG_NSH_FILEIOSIZE=512
diff --git a/boards/arm/imxrt/imxrt1064-evk/configs/knsh/defconfig b/boards/arm/imxrt/imxrt1064-evk/configs/knsh/defconfig
index f914c66..1c0ed8c 100644
--- a/boards/arm/imxrt/imxrt1064-evk/configs/knsh/defconfig
+++ b/boards/arm/imxrt/imxrt1064-evk/configs/knsh/defconfig
@@ -27,7 +27,6 @@ CONFIG_IMXRT_LPUART1=y
 CONFIG_INTELHEX_BINARY=y
 CONFIG_LPUART1_SERIAL_CONSOLE=y
 CONFIG_MAX_TASKS=16
-CONFIG_NFILE_DESCRIPTORS=8
 CONFIG_NSH_ARCHINIT=y
 CONFIG_NSH_DISABLE_MKRD=y
 CONFIG_NSH_FILEIOSIZE=512
diff --git a/boards/arm/imxrt/imxrt1064-evk/configs/libcxxtest/defconfig b/boards/arm/imxrt/imxrt1064-evk/configs/libcxxtest/defconfig
index c2f0fb8..c751349 100644
--- a/boards/arm/imxrt/imxrt1064-evk/configs/libcxxtest/defconfig
+++ b/boards/arm/imxrt/imxrt1064-evk/configs/libcxxtest/defconfig
@@ -27,7 +27,6 @@ CONFIG_LIBC_LOCALTIME=y
 CONFIG_LIBM=y
 CONFIG_LPUART1_SERIAL_CONSOLE=y
 CONFIG_MAX_TASKS=16
-CONFIG_NFILE_DESCRIPTORS=8
 CONFIG_NSH_BUILTIN_APPS=y
 CONFIG_NSH_FILEIOSIZE=512
 CONFIG_NSH_LINELEN=64
diff --git a/boards/arm/imxrt/imxrt1064-evk/configs/lvgl/defconfig b/boards/arm/imxrt/imxrt1064-evk/configs/lvgl/defconfig
index ab54b01..57b2e64 100644
--- a/boards/arm/imxrt/imxrt1064-evk/configs/lvgl/defconfig
+++ b/boards/arm/imxrt/imxrt1064-evk/configs/lvgl/defconfig
@@ -46,7 +46,6 @@ CONFIG_LV_HOR_RES=480
 CONFIG_LV_VER_RES=272
 CONFIG_MAX_TASKS=16
 CONFIG_MOTOROLA_SREC=y
-CONFIG_NFILE_DESCRIPTORS=8
 CONFIG_NSH_ARCHINIT=y
 CONFIG_NSH_BUILTIN_APPS=y
 CONFIG_NSH_DISABLE_IFUPDOWN=y
diff --git a/boards/arm/imxrt/imxrt1064-evk/configs/netnsh/defconfig b/boards/arm/imxrt/imxrt1064-evk/configs/netnsh/defconfig
index d4726bf..2561ed6 100644
--- a/boards/arm/imxrt/imxrt1064-evk/configs/netnsh/defconfig
+++ b/boards/arm/imxrt/imxrt1064-evk/configs/netnsh/defconfig
@@ -53,7 +53,6 @@ CONFIG_NET_TCPBACKLOG=y
 CONFIG_NET_TCP_WRITE_BUFFERS=y
 CONFIG_NET_UDP=y
 CONFIG_NET_UDP_WRITE_BUFFERS=y
-CONFIG_NFILE_DESCRIPTORS=8
 CONFIG_NSH_ARCHINIT=y
 CONFIG_NSH_BUILTIN_APPS=y
 CONFIG_NSH_FILEIOSIZE=512
diff --git a/boards/arm/imxrt/imxrt1064-evk/configs/nsh/defconfig b/boards/arm/imxrt/imxrt1064-evk/configs/nsh/defconfig
index 1d7f1bb..c5d6843 100644
--- a/boards/arm/imxrt/imxrt1064-evk/configs/nsh/defconfig
+++ b/boards/arm/imxrt/imxrt1064-evk/configs/nsh/defconfig
@@ -24,7 +24,6 @@ CONFIG_IMXRT_LPUART1=y
 CONFIG_INTELHEX_BINARY=y
 CONFIG_LPUART1_SERIAL_CONSOLE=y
 CONFIG_MAX_TASKS=16
-CONFIG_NFILE_DESCRIPTORS=8
 CONFIG_NSH_ARCHINIT=y
 CONFIG_NSH_BUILTIN_APPS=y
 CONFIG_NSH_DISABLE_IFUPDOWN=y
diff --git a/boards/arm/imxrt/imxrt1064-evk/configs/nshocram/defconfig b/boards/arm/imxrt/imxrt1064-evk/configs/nshocram/defconfig
index b5a5ca4..98c187d 100644
--- a/boards/arm/imxrt/imxrt1064-evk/configs/nshocram/defconfig
+++ b/boards/arm/imxrt/imxrt1064-evk/configs/nshocram/defconfig
@@ -29,7 +29,6 @@ CONFIG_INTELHEX_BINARY=y
 CONFIG_LPUART1_SERIAL_CONSOLE=y
 CONFIG_MAX_TASKS=16
 CONFIG_MM_REGIONS=3
-CONFIG_NFILE_DESCRIPTORS=8
 CONFIG_NSH_ARCHINIT=y
 CONFIG_NSH_BUILTIN_APPS=y
 CONFIG_NSH_DISABLE_IFUPDOWN=y

[incubator-nuttx] 10/11: Default config without flexspi and mtd

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

davids5 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit 61b0e530b0571c6050ed571e0e316b1a0be8966f
Author: jturnsek <je...@gmail.com>
AuthorDate: Tue Apr 13 19:36:50 2021 +0200

    Default config without flexspi and mtd
---
 boards/arm/imxrt/imxrt1064-evk/configs/nsh/defconfig | 2 --
 tools/ci/testlist/arm-02.dat                         | 1 +
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/boards/arm/imxrt/imxrt1064-evk/configs/nsh/defconfig b/boards/arm/imxrt/imxrt1064-evk/configs/nsh/defconfig
index 210debd..1d7f1bb 100644
--- a/boards/arm/imxrt/imxrt1064-evk/configs/nsh/defconfig
+++ b/boards/arm/imxrt/imxrt1064-evk/configs/nsh/defconfig
@@ -37,5 +37,3 @@ CONFIG_START_DAY=14
 CONFIG_START_MONTH=3
 CONFIG_SYSTEM_NSH=y
 CONFIG_USER_ENTRYPOINT="nsh_main"
-CONFIG_IMXRT_FLEXSPI1=y
-CONFIG_MTD=y
diff --git a/tools/ci/testlist/arm-02.dat b/tools/ci/testlist/arm-02.dat
index 1562c2d..f5c6f97 100644
--- a/tools/ci/testlist/arm-02.dat
+++ b/tools/ci/testlist/arm-02.dat
@@ -1,3 +1,4 @@
 /arm/[i-k]*,CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL
 -imxrt1050-evk:libcxxtest
 -imxrt1060-evk:libcxxtest
+-imxrt1064-evk:libcxxtest

[incubator-nuttx] 06/11: FlexSPI NOR driver added

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

davids5 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit 0c4d66dcf07f0b8e32508dc425c8804f6659ca6e
Author: jturnsek <je...@gmail.com>
AuthorDate: Mon Apr 12 09:12:16 2021 +0200

    FlexSPI NOR driver added
---
 .../arm/imxrt/imxrt1064-evk/configs/nsh/defconfig  |   2 +
 boards/arm/imxrt/imxrt1064-evk/src/imxrt1064-evk.h |   4 +-
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_bringup.c |   9 +
 .../imxrt/imxrt1064-evk/src/imxrt_flexspi_nor.c    | 701 +++++++++++++++++++++
 4 files changed, 714 insertions(+), 2 deletions(-)

diff --git a/boards/arm/imxrt/imxrt1064-evk/configs/nsh/defconfig b/boards/arm/imxrt/imxrt1064-evk/configs/nsh/defconfig
index 1d7f1bb..210debd 100644
--- a/boards/arm/imxrt/imxrt1064-evk/configs/nsh/defconfig
+++ b/boards/arm/imxrt/imxrt1064-evk/configs/nsh/defconfig
@@ -37,3 +37,5 @@ CONFIG_START_DAY=14
 CONFIG_START_MONTH=3
 CONFIG_SYSTEM_NSH=y
 CONFIG_USER_ENTRYPOINT="nsh_main"
+CONFIG_IMXRT_FLEXSPI1=y
+CONFIG_MTD=y
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt1064-evk.h b/boards/arm/imxrt/imxrt1064-evk/src/imxrt1064-evk.h
index f6b16a3..8376c5d 100644
--- a/boards/arm/imxrt/imxrt1064-evk/src/imxrt1064-evk.h
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt1064-evk.h
@@ -313,8 +313,8 @@ void imxrt_lcd_initialize(void);
 int imxrt_usbhost_initialize(void);
 #endif
 
-#ifdef CONFIG_MTD_FLEXSPI_NOR
-int imxrt_flexspi_nor_setup(void);
+#ifdef CONFIG_IMXRT_FLEXSPI
+int imxrt_flexspi_nor_initialize(void);
 #endif
 
 #endif /* __ASSEMBLY__ */
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_bringup.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_bringup.c
index 0014941..1d8dfd6 100644
--- a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_bringup.c
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_bringup.c
@@ -278,6 +278,15 @@ int imxrt_bringup(void)
   usbdev_serialinitialize(0);
 #endif
 
+#ifdef CONFIG_IMXRT_FLEXSPI
+  ret = imxrt_flexspi_nor_initialize();
+  if (ret < 0)
+    {
+      syslog(LOG_ERR,
+              "ERROR: imxrt_flexspi_nor_initialize failed: %d\n", ret);
+    }
+#endif /* CONFIG_IMXRT_FLEXSPI */
+
   UNUSED(ret);
   return OK;
 }
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor.c
new file mode 100644
index 0000000..07df334
--- /dev/null
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor.c
@@ -0,0 +1,701 @@
+/****************************************************************************
+ * boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor.c
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
+ *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Included Files
+ ****************************************************************************/
+
+#include <nuttx/config.h>
+
+#include <stdbool.h>
+#include <errno.h>
+#include <debug.h>
+
+#include <nuttx/kmalloc.h>
+#include <nuttx/signal.h>
+#include <nuttx/fs/fs.h>
+#include <nuttx/mtd/mtd.h>
+
+#include "imxrt_flexspi.h"
+#include "imxrt1064-evk.h"
+#include "hardware/imxrt_pinmux.h"
+
+#ifdef CONFIG_IMXRT_FLEXSPI
+
+#define NOR_PAGE_SIZE   0x0100U
+#define NOR_SECTOR_SIZE 0x1000U
+
+#define MIN(a, b) (((a) < (b)) ? (a) : (b))
+
+enum
+{
+  /* SPI instructions */
+
+  READ_ID,
+  READ_STATUS_REG,
+  WRITE_STATUS_REG,
+  WRITE_ENABLE,
+  ERASE_SECTOR,
+  ERASE_CHIP,
+
+  /* Quad SPI instructions */
+
+  READ_FAST_QUAD_OUTPUT,
+  PAGE_PROGRAM_QUAD_INPUT,
+  ENTER_QPI,
+};
+
+static const uint32_t g_flexspi_nor_lut[][4] =
+{
+  [READ_ID] =
+  {
+    FLEXSPI_LUT_SEQ(FLEXSPI_COMMAND_SDR,       FLEXSPI_1PAD, 0x9f,
+        FLEXSPI_COMMAND_READ_SDR,  FLEXSPI_1PAD, 0x04),
+  },
+
+  [READ_STATUS_REG] =
+  {
+    FLEXSPI_LUT_SEQ(FLEXSPI_COMMAND_SDR,       FLEXSPI_1PAD, 0x05,
+        FLEXSPI_COMMAND_READ_SDR,  FLEXSPI_1PAD, 0x04),
+  },
+
+  [WRITE_STATUS_REG] =
+  {
+    FLEXSPI_LUT_SEQ(FLEXSPI_COMMAND_SDR,       FLEXSPI_1PAD, 0x01,
+        FLEXSPI_COMMAND_WRITE_SDR, FLEXSPI_1PAD, 0x04),
+  },
+
+  [WRITE_ENABLE] =
+  {
+    FLEXSPI_LUT_SEQ(FLEXSPI_COMMAND_SDR,       FLEXSPI_1PAD, 0x06,
+        FLEXSPI_COMMAND_STOP,      FLEXSPI_1PAD, 0),
+  },
+
+  [ERASE_SECTOR] =
+  {
+    FLEXSPI_LUT_SEQ(FLEXSPI_COMMAND_SDR,       FLEXSPI_1PAD, 0x20,
+        FLEXSPI_COMMAND_RADDR_SDR, FLEXSPI_1PAD, 0x18),
+  },
+
+  [ERASE_CHIP] =
+  {
+    FLEXSPI_LUT_SEQ(FLEXSPI_COMMAND_SDR,       FLEXSPI_1PAD, 0xc7,
+        FLEXSPI_COMMAND_STOP,      FLEXSPI_1PAD, 0),
+  },
+
+  [READ_FAST_QUAD_OUTPUT] =
+  {
+    FLEXSPI_LUT_SEQ(FLEXSPI_COMMAND_SDR,       FLEXSPI_1PAD, 0x6b,
+        FLEXSPI_COMMAND_RADDR_SDR, FLEXSPI_1PAD, 0x18),
+    FLEXSPI_LUT_SEQ(FLEXSPI_COMMAND_DUMMY_SDR, FLEXSPI_4PAD, 0x08,
+        FLEXSPI_COMMAND_READ_SDR,  FLEXSPI_4PAD, 0x04),
+  },
+
+  [PAGE_PROGRAM_QUAD_INPUT] =
+  {
+    FLEXSPI_LUT_SEQ(FLEXSPI_COMMAND_SDR,       FLEXSPI_1PAD, 0x32,
+        FLEXSPI_COMMAND_RADDR_SDR, FLEXSPI_1PAD, 0x18),
+    FLEXSPI_LUT_SEQ(FLEXSPI_COMMAND_WRITE_SDR, FLEXSPI_4PAD, 0x04,
+        FLEXSPI_COMMAND_STOP,      FLEXSPI_1PAD, 0),
+  },
+
+  [ENTER_QPI] =
+  {
+    FLEXSPI_LUT_SEQ(FLEXSPI_COMMAND_SDR,       FLEXSPI_1PAD, 0x35,
+        FLEXSPI_COMMAND_STOP,      FLEXSPI_1PAD, 0),
+  },
+};
+
+/****************************************************************************
+ * Private Types
+ ****************************************************************************/
+
+/* FlexSPI NOR device private data */
+
+struct imxrt_flexspi_nor_dev_s
+{
+  struct mtd_dev_s mtd;
+  struct flexspi_dev_s *flexspi;   /* Saved FlexSPI interface instance */
+  uint8_t *ahb_base;
+  enum flexspi_port_e port;
+  struct flexspi_device_config_s *config;
+};
+
+/****************************************************************************
+ * Private Functions Prototypes
+ ****************************************************************************/
+
+/* MTD driver methods */
+
+static int imxrt_flexspi_nor_erase(FAR struct mtd_dev_s *dev,
+                                   off_t startblock,
+                                   size_t nblocks);
+static ssize_t imxrt_flexspi_nor_read(FAR struct mtd_dev_s *dev,
+                                      off_t offset,
+                                      size_t nbytes,
+                                      FAR uint8_t *buffer);
+static ssize_t imxrt_flexspi_nor_bread(FAR struct mtd_dev_s *dev,
+                                       off_t startblock,
+                                       size_t nblocks,
+                                       FAR uint8_t *buffer);
+static ssize_t imxrt_flexspi_nor_bwrite(FAR struct mtd_dev_s *dev,
+                                        off_t startblock,
+                                        size_t nblocks,
+                                        FAR const uint8_t *buffer);
+static int imxrt_flexspi_nor_ioctl(FAR struct mtd_dev_s *dev,
+                                   int cmd,
+                                   unsigned long arg);
+
+/****************************************************************************
+ * Private Data
+ ****************************************************************************/
+
+static struct flexspi_device_config_s g_flexspi_device_config =
+{
+  .flexspi_root_clk = 120000000,
+  .flash_size = 8192,
+  .cs_interval_unit = FLEXSPI_CS_INTERVAL_UNIT1_SCK_CYCLE,
+  .cs_interval = 0,
+  .cs_hold_time = 3,
+  .cs_setup_time = 3,
+  .data_valid_time = 0,
+  .columnspace = 0,
+  .enable_word_address = 0,
+  .awr_seq_index = 0,
+  .awr_seq_number = 0,
+  .ard_seq_index = READ_FAST_QUAD_OUTPUT,
+  .ard_seq_number = 1,
+  .ahb_write_wait_unit = FLEXSPI_AHB_WRITE_WAIT_UNIT2_AHB_CYCLE,
+  .ahb_write_wait_interval = 0
+};
+
+static struct imxrt_flexspi_nor_dev_s g_flexspi_nor =
+{
+  .mtd =
+          {
+            .erase  = imxrt_flexspi_nor_erase,
+            .bread  = imxrt_flexspi_nor_bread,
+            .bwrite = imxrt_flexspi_nor_bwrite,
+            .read   = imxrt_flexspi_nor_read,
+            .ioctl  = imxrt_flexspi_nor_ioctl,
+#ifdef CONFIG_MTD_BYTE_WRITE
+            .write  = NULL,
+#endif
+            .name   = "imxrt_flexspi_nor"
+          },
+  .flexspi = (void *)0,
+  .ahb_base = (uint8_t *) 0x60000000,
+  .port = FLEXSPI_PORT_A1,
+  .config = &g_flexspi_device_config
+};
+
+/****************************************************************************
+ * Private Functions
+ ****************************************************************************/
+
+static int imxrt_flexspi_nor_get_vendor_id(
+                const struct imxrt_flexspi_nor_dev_s *dev,
+    uint8_t *vendor_id)
+{
+  uint32_t buffer = 0;
+  int stat;
+
+  struct flexspi_transfer_s transfer =
+  {
+    .device_address = 0,
+    .port = dev->port,
+    .cmd_type = FLEXSPI_READ,
+    .seq_number = 1,
+    .seq_index = READ_ID,
+    .data = &buffer,
+    .data_size = 1,
+  };
+
+  stat = FLEXSPI_TRANSFER(dev->flexspi, &transfer);
+  if (stat != 0)
+    {
+      return -EIO;
+    }
+
+  *vendor_id = buffer;
+
+  return 0;
+}
+
+static int imxrt_flexspi_nor_read_status(
+                const struct imxrt_flexspi_nor_dev_s *dev,
+                uint32_t *status)
+{
+  int stat;
+
+  struct flexspi_transfer_s transfer =
+  {
+    .device_address = 0,
+    .port = dev->port,
+    .cmd_type = FLEXSPI_READ,
+    .seq_number = 1,
+    .seq_index = READ_STATUS_REG,
+    .data = status,
+    .data_size = 1,
+  };
+
+  stat = FLEXSPI_TRANSFER(dev->flexspi, &transfer);
+  if (stat != 0)
+    {
+      return -EIO;
+    }
+
+  return 0;
+}
+
+static int imxrt_flexspi_nor_write_status(
+                const struct imxrt_flexspi_nor_dev_s *dev,
+    uint32_t *status)
+{
+  int stat;
+
+  struct flexspi_transfer_s transfer =
+  {
+    .device_address = 0,
+    .port = dev->port,
+    .cmd_type = FLEXSPI_WRITE,
+    .seq_number = 1,
+    .seq_index = WRITE_STATUS_REG,
+    .data = status,
+    .data_size = 1,
+  };
+
+  stat = FLEXSPI_TRANSFER(dev->flexspi, &transfer);
+  if (stat != 0)
+    {
+      return -EIO;
+    }
+
+  return 0;
+}
+
+static int imxrt_flexspi_nor_write_enable(
+                const struct imxrt_flexspi_nor_dev_s *dev)
+{
+  int stat;
+
+  struct flexspi_transfer_s transfer =
+  {
+    .device_address = 0,
+    .port = dev->port,
+    .cmd_type = FLEXSPI_COMMAND,
+    .seq_number = 1,
+    .seq_index = WRITE_ENABLE,
+    .data = NULL,
+    .data_size = 0,
+  };
+
+  stat = FLEXSPI_TRANSFER(dev->flexspi, &transfer);
+  if (stat != 0)
+    {
+      return -EIO;
+    }
+
+  return 0;
+}
+
+static int imxrt_flexspi_nor_erase_sector(
+                const struct imxrt_flexspi_nor_dev_s *dev,
+  off_t offset)
+{
+  int stat;
+
+  struct flexspi_transfer_s transfer =
+  {
+    .device_address = offset,
+    .port = dev->port,
+    .cmd_type = FLEXSPI_COMMAND,
+    .seq_number = 1,
+    .seq_index = ERASE_SECTOR,
+    .data = NULL,
+    .data_size = 0,
+  };
+
+  stat = FLEXSPI_TRANSFER(dev->flexspi, &transfer);
+  if (stat != 0)
+    {
+      return -EIO;
+    }
+
+  return 0;
+}
+
+static int imxrt_flexspi_nor_erase_chip(
+                const struct imxrt_flexspi_nor_dev_s *dev)
+{
+  int stat;
+
+  struct flexspi_transfer_s transfer =
+  {
+    .device_address = 0,
+    .port = dev->port,
+    .cmd_type = FLEXSPI_COMMAND,
+    .seq_number = 1,
+    .seq_index = ERASE_CHIP,
+    .data = NULL,
+    .data_size = 0,
+  };
+
+  stat = FLEXSPI_TRANSFER(dev->flexspi, &transfer);
+  if (stat != 0)
+    {
+      return -EIO;
+    }
+
+  return 0;
+}
+
+static int imxrt_flexspi_nor_page_program(
+                      const struct imxrt_flexspi_nor_dev_s *dev,
+                      off_t offset,
+                      const void *buffer,
+                      size_t len)
+{
+  int stat;
+
+  struct flexspi_transfer_s transfer =
+  {
+    .device_address = offset,
+    .port = dev->port,
+    .cmd_type = FLEXSPI_WRITE,
+    .seq_number = 1,
+    .seq_index = PAGE_PROGRAM_QUAD_INPUT,
+    .data = (uint32_t *) buffer,
+    .data_size = len,
+  };
+
+  stat = FLEXSPI_TRANSFER(dev->flexspi, &transfer);
+  if (stat != 0)
+    {
+      return -EIO;
+    }
+
+  return 0;
+}
+
+static int imxrt_flexspi_nor_wait_bus_busy(
+                const struct imxrt_flexspi_nor_dev_s *dev)
+{
+  uint32_t status = 0;
+  int ret;
+
+  do
+    {
+      ret = imxrt_flexspi_nor_read_status(dev, &status);
+      if (ret)
+        {
+          return ret;
+        }
+    }
+  while (status & 1);
+
+  return 0;
+}
+
+static int imxrt_flexspi_nor_enable_quad_mode(
+                const struct imxrt_flexspi_nor_dev_s *dev)
+{
+  uint32_t status = 0x40;
+
+  imxrt_flexspi_nor_write_status(dev, &status);
+  imxrt_flexspi_nor_wait_bus_busy(dev);
+  FLEXSPI_SOFTWARE_RESET(dev->flexspi);
+
+  return 0;
+}
+
+static ssize_t imxrt_flexspi_nor_read(FAR struct mtd_dev_s *dev,
+                                      off_t offset,
+                                      size_t nbytes,
+                                      FAR uint8_t *buffer)
+{
+  FAR struct imxrt_flexspi_nor_dev_s *priv =
+                  (FAR struct imxrt_flexspi_nor_dev_s *)dev;
+  uint8_t *src;
+
+  finfo("offset: %08lx nbytes: %d\n", (long)offset, (int)nbytes);
+
+  if (priv->port >= FLEXSPI_PORT_COUNT)
+    {
+      return -EIO;
+    }
+
+  src = priv->ahb_base + offset;
+
+  memcpy(buffer, src, nbytes);
+
+  finfo("return nbytes: %d\n", (int)nbytes);
+  return (ssize_t)nbytes;
+}
+
+static ssize_t imxrt_flexspi_nor_bread(FAR struct mtd_dev_s *dev,
+                                       off_t startblock,
+                                       size_t nblocks,
+                                       FAR uint8_t *buffer)
+{
+  ssize_t nbytes;
+
+  finfo("startblock: %08lx nblocks: %d\n", (long)startblock, (int)nblocks);
+
+  /* On this device, we can handle the block read just like the byte-oriented
+   * read
+   */
+
+  nbytes = imxrt_flexspi_nor_read(dev, startblock * NOR_PAGE_SIZE,
+                                  nblocks * NOR_PAGE_SIZE, buffer);
+  if (nbytes > 0)
+    {
+      nbytes /= NOR_PAGE_SIZE;
+    }
+
+  return nbytes;
+}
+
+static ssize_t imxrt_flexspi_nor_bwrite(FAR struct mtd_dev_s *dev,
+                                        off_t startblock,
+                                        size_t nblocks,
+                                        FAR const uint8_t *buffer)
+{
+  FAR struct imxrt_flexspi_nor_dev_s *priv =
+                  (FAR struct imxrt_flexspi_nor_dev_s *)dev;
+  size_t len = nblocks * NOR_PAGE_SIZE;
+  off_t offset = startblock * NOR_PAGE_SIZE;
+  uint8_t *src = (uint8_t *) buffer;
+  uint8_t *dst = priv->ahb_base + startblock * NOR_PAGE_SIZE;
+  int i;
+
+  finfo("startblock: %08lx nblocks: %d\n", (long)startblock, (int)nblocks);
+
+  while (len)
+    {
+      i = MIN(NOR_PAGE_SIZE, len);
+      imxrt_flexspi_nor_write_enable(priv);
+      imxrt_flexspi_nor_page_program(priv, offset, src, i);
+      imxrt_flexspi_nor_wait_bus_busy(priv);
+      FLEXSPI_SOFTWARE_RESET(priv->flexspi);
+      offset += i;
+      len -= i;
+    }
+
+#ifdef CONFIG_ARMV7M_DCACHE
+  up_invalidate_dcache((uintptr_t)dst,
+                       (uintptr_t)dst + nblocks * NOR_PAGE_SIZE);
+#endif
+
+  return nblocks;
+}
+
+static int imxrt_flexspi_nor_erase(FAR struct mtd_dev_s *dev,
+                                   off_t startblock,
+                                   size_t nblocks)
+{
+  FAR struct imxrt_flexspi_nor_dev_s *priv =
+                  (FAR struct imxrt_flexspi_nor_dev_s *)dev;
+  size_t blocksleft = nblocks;
+  uint8_t *dst = priv->ahb_base + startblock * NOR_SECTOR_SIZE;
+
+  finfo("startblock: %08lx nblocks: %d\n", (long)startblock, (int)nblocks);
+
+  while (blocksleft-- > 0)
+    {
+      /* Erase each sector */
+
+      imxrt_flexspi_nor_write_enable(priv);
+      imxrt_flexspi_nor_erase_sector(priv, startblock * NOR_SECTOR_SIZE);
+      imxrt_flexspi_nor_wait_bus_busy(priv);
+      FLEXSPI_SOFTWARE_RESET(priv->flexspi);
+      startblock++;
+    }
+
+#ifdef CONFIG_ARMV7M_DCACHE
+  up_invalidate_dcache((uintptr_t)dst,
+                       (uintptr_t)dst + nblocks * NOR_SECTOR_SIZE);
+#endif
+
+  return (int)nblocks;
+}
+
+static int imxrt_flexspi_nor_ioctl(FAR struct mtd_dev_s *dev,
+                                   int cmd,
+                                   unsigned long arg)
+{
+  FAR struct imxrt_flexspi_nor_dev_s *priv =
+                  (FAR struct imxrt_flexspi_nor_dev_s *)dev;
+  int ret = -EINVAL; /* Assume good command with bad parameters */
+
+  finfo("cmd: %d \n", cmd);
+
+  switch (cmd)
+    {
+      case MTDIOC_GEOMETRY:
+        {
+          FAR struct mtd_geometry_s *geo =
+            (FAR struct mtd_geometry_s *)((uintptr_t)arg);
+
+          if (geo)
+            {
+              /* Populate the geometry structure with information need to
+               * know the capacity and how to access the device.
+               *
+               * NOTE:
+               * that the device is treated as though it where just an array
+               * of fixed size blocks.  That is most likely not true, but the
+               * client will expect the device logic to do whatever is
+               * necessary to make it appear so.
+               */
+
+              geo->blocksize    = (NOR_PAGE_SIZE);
+              geo->erasesize    = (NOR_SECTOR_SIZE);
+              geo->neraseblocks = 2048; /* 8MB only */
+
+              ret               = OK;
+
+              finfo("blocksize: %lu erasesize: %lu neraseblocks: %lu\n",
+                    geo->blocksize, geo->erasesize, geo->neraseblocks);
+            }
+        }
+        break;
+
+      case MTDIOC_BULKERASE:
+        {
+          /* Erase the entire device */
+
+          imxrt_flexspi_nor_write_enable(priv);
+          imxrt_flexspi_nor_erase_chip(priv);
+          imxrt_flexspi_nor_wait_bus_busy(priv);
+          FLEXSPI_SOFTWARE_RESET(priv->flexspi);
+        }
+        break;
+
+      case MTDIOC_PROTECT:
+
+        /* TODO */
+
+        break;
+
+      case MTDIOC_UNPROTECT:
+
+        /* TODO */
+
+        break;
+
+      default:
+        ret = -ENOTTY; /* Bad/unsupported command */
+        break;
+    }
+
+  finfo("return %d\n", ret);
+  return ret;
+}
+
+/****************************************************************************
+ * Public Functions
+ ****************************************************************************/
+
+/****************************************************************************
+ * Name: imxrt_flexspi_nor_initialize
+ *
+ * Description:
+ *  This function is called by board-bringup logic to configure the
+ *  flash device.
+ *
+ * Returned Value:
+ *   Zero is returned on success.  Otherwise, a negated errno value is
+ *   returned to indicate the nature of the failure.
+ *
+ ****************************************************************************/
+
+int imxrt_flexspi_nor_initialize(void)
+{
+  uint8_t vendor_id;
+#ifdef CONFIG_FS_LITTLEFS
+  FAR struct mtd_dev_s *mtd_dev = &g_flexspi_nor.mtd;
+  int ret = -1;
+#endif
+  /* Configure multiplexed pins as connected on the board */
+
+  imxrt_config_gpio(GPIO_FLEXSPI_DQS);
+  imxrt_config_gpio(GPIO_FLEXSPI_CS);
+  imxrt_config_gpio(GPIO_FLEXSPI_IO0);
+  imxrt_config_gpio(GPIO_FLEXSPI_IO1);
+  imxrt_config_gpio(GPIO_FLEXSPI_IO2);
+  imxrt_config_gpio(GPIO_FLEXSPI_IO3);
+  imxrt_config_gpio(GPIO_FLEXSPI_SCK);
+
+  g_flexspi_nor.flexspi = imxrt_flexspi_initialize(0);
+  if (!g_flexspi_nor.flexspi)
+    {
+      return -1;
+    }
+
+  FLEXSPI_SET_DEVICE_CONFIG(g_flexspi_nor.flexspi,
+                            g_flexspi_nor.config,
+                            g_flexspi_nor.port);
+  FLEXSPI_UPDATE_LUT(g_flexspi_nor.flexspi,
+                     0,
+                     (const uint32_t *)g_flexspi_nor_lut,
+                     sizeof(g_flexspi_nor_lut) / 4);
+  FLEXSPI_SOFTWARE_RESET(g_flexspi_nor.flexspi);
+
+  if (imxrt_flexspi_nor_get_vendor_id(&g_flexspi_nor, &vendor_id))
+    {
+      return -EIO;
+    }
+
+  if (imxrt_flexspi_nor_enable_quad_mode(&g_flexspi_nor))
+    {
+      return -EIO;
+    }
+
+#ifdef CONFIG_FS_LITTLEFS
+  /* Register the MTD driver so that it can be accessed from the
+   * VFS.
+   */
+
+  ret = register_mtddriver("/dev/nor", mtd_dev, 0755, NULL);
+  if (ret < 0)
+    {
+      syslog(LOG_ERR, "ERROR: Failed to register MTD driver: %d\n",
+             ret);
+    }
+
+  /* mtd_dev->ioctl(mtd_dev, MTDIOC_BULKERASE, 0); */
+
+  /* Mount the LittleFS file system */
+
+  ret = nx_mount("/dev/nor", "/mnt/lfs", "littlefs", 0,
+                 "autoformat");
+  if (ret < 0)
+    {
+      syslog(LOG_ERR,
+             "ERROR: Failed to mount LittleFS at /mnt/lfs: %d\n",
+             ret);
+    }
+#endif
+
+  return 0;
+}
+
+#endif /* CONFIG_IMXRT_FLEXSPI */

[incubator-nuttx] 07/11: FlexSPI NOR missing config and pin iomux

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

davids5 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit e250006b1e7b8c497a009f0cf5fe87d7c8f82cae
Author: jturnsek <je...@gmail.com>
AuthorDate: Mon Apr 12 09:50:47 2021 +0200

    FlexSPI NOR missing config and pin iomux
---
 boards/arm/imxrt/imxrt1064-evk/src/Makefile | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/boards/arm/imxrt/imxrt1064-evk/src/Makefile b/boards/arm/imxrt/imxrt1064-evk/src/Makefile
index 87d012d..45fd5f5 100644
--- a/boards/arm/imxrt/imxrt1064-evk/src/Makefile
+++ b/boards/arm/imxrt/imxrt1064-evk/src/Makefile
@@ -82,4 +82,8 @@ ifeq ($(CONFIG_IMXRT1064_EVK_SDRAM),y)
 CSRCS += imxrt_sdram_ini_dcd.c
 endif
 
+ifeq ($(CONFIG_IMXRT_FLEXSPI),y)
+CSRCS += imxrt_flexspi_nor.c
+endif
+
 include $(TOPDIR)/boards/Board.mk

[incubator-nuttx] 05/11: Fixed comment lengths

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

davids5 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit 2f92ecc7d62fd7f098a40e9a4883541d18783822
Author: jturnsek <je...@gmail.com>
AuthorDate: Wed Apr 7 09:05:30 2021 +0200

    Fixed comment lengths
---
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_usbhost.c | 36 +++++++++++-----------
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_usbhost.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_usbhost.c
index ba64763..925bba4 100644
--- a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_usbhost.c
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_usbhost.c
@@ -18,9 +18,9 @@
  *
  ****************************************************************************/
 
-/*****************************************************************************
+/****************************************************************************
  * Included Files
- *****************************************************************************/
+ ****************************************************************************/
 
 #include <nuttx/config.h>
 
@@ -50,9 +50,9 @@
 
 #if defined(CONFIG_IMXRT_USBOTG) || defined(CONFIG_USBHOST)
 
-/*****************************************************************************
+/****************************************************************************
  * Pre-processor Definitions
- *****************************************************************************/
+ ****************************************************************************/
 
 #ifndef CONFIG_USBHOST_DEFPRIO
 #  define CONFIG_USBHOST_DEFPRIO 50
@@ -66,25 +66,25 @@
 #  endif
 #endif
 
-/*****************************************************************************
+/****************************************************************************
  * Private Data
- *****************************************************************************/
+ ****************************************************************************/
 
 /* Retained device driver handle */
 
 static struct usbhost_connection_s *g_ehciconn;
 
-/*****************************************************************************
+/****************************************************************************
  * Private Functions
- *****************************************************************************/
+ ****************************************************************************/
 
-/*****************************************************************************
+/****************************************************************************
  * Name: ehci_waiter
  *
  * Description:
  *   Wait for USB devices to be connected to the EHCI root hub.
  *
- *****************************************************************************/
+ ****************************************************************************/
 
 static int ehci_waiter(int argc, char *argv[])
 {
@@ -114,11 +114,11 @@ static int ehci_waiter(int argc, char *argv[])
   return 0;
 }
 
-/*****************************************************************************
+/****************************************************************************
  * Public Functions
- *****************************************************************************/
+ ****************************************************************************/
 
-/*****************************************************************************
+/****************************************************************************
  * Name: imxrt_usbhost_initialize
  *
  * Description:
@@ -127,7 +127,7 @@ static int ehci_waiter(int argc, char *argv[])
  *   This function will start a thread that will monitor for device
  *   connection/disconnection events.
  *
- *****************************************************************************/
+ ****************************************************************************/
 
 int imxrt_usbhost_initialize(void)
 {
@@ -215,7 +215,7 @@ int imxrt_usbhost_initialize(void)
   return OK;
 }
 
-/*****************************************************************************
+/****************************************************************************
  * Name: imxrt_usbhost_vbusdrive
  *
  * Description:
@@ -232,7 +232,7 @@ int imxrt_usbhost_initialize(void)
  * Returned Value:
  *   None
  *
- *****************************************************************************/
+ ****************************************************************************/
 
 #define HCOR ((volatile struct ehci_hcor_s *)IMXRT_USBOTG_HCOR_BASE)
 
@@ -259,7 +259,7 @@ void imxrt_usbhost_vbusdrive(int rhport, bool enable)
     }
 }
 
-/*****************************************************************************
+/****************************************************************************
  * Name: imxrt_setup_overcurrent
  *
  * Description:
@@ -274,7 +274,7 @@ void imxrt_usbhost_vbusdrive(int rhport, bool enable)
  *   Zero (OK) returned on success; a negated errno value is returned on
  *   failure.
  *
- *****************************************************************************/
+ ****************************************************************************/
 
 #if 0 /* Not ready yet */
 int imxrt_setup_overcurrent(xcpt_t handler, void *arg)

[incubator-nuttx] 03/11: Change ALL copyright from Greg and David to apache since they already sign SGA or ICLA

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

davids5 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit f5d22ccd032e5586e0a304b786128c9c0e35e640
Author: jturnsek <je...@gmail.com>
AuthorDate: Wed Apr 7 08:23:55 2021 +0200

    Change ALL copyright from Greg and David to apache since they already sign SGA or ICLA
---
 .../imxrt/imxrt1064-evk/kernel/imxrt_userspace.c   | 39 +++++------------
 .../arm/imxrt/imxrt1064-evk/scripts/flash-ocram.ld | 40 +++++------------
 .../imxrt/imxrt1064-evk/scripts/kernel-space.ld    | 40 +++++------------
 boards/arm/imxrt/imxrt1064-evk/scripts/memory.ld   | 40 +++++------------
 .../arm/imxrt/imxrt1064-evk/scripts/user-space.ld  | 40 +++++------------
 boards/arm/imxrt/imxrt1064-evk/src/imxrt1064-evk.h | 44 ++++++-------------
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_adc.c     | 51 +++++-----------------
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_appinit.c | 40 +++++------------
 .../arm/imxrt/imxrt1064-evk/src/imxrt_autoleds.c   | 44 ++++++-------------
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_boot.c    | 40 +++++------------
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_bringup.c | 40 +++++------------
 .../arm/imxrt/imxrt1064-evk/src/imxrt_ethernet.c   | 40 +++++------------
 .../imxrt1064-evk/src/imxrt_flexspi_nor_boot.c     | 39 +++++------------
 .../imxrt1064-evk/src/imxrt_flexspi_nor_boot.h     | 40 +++++------------
 .../imxrt1064-evk/src/imxrt_flexspi_nor_flash.c    | 40 +++++------------
 .../imxrt1064-evk/src/imxrt_flexspi_nor_flash.h    | 40 +++++------------
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_lcd.c     | 39 +++++------------
 .../arm/imxrt/imxrt1064-evk/src/imxrt_mmcsd_spi.c  | 38 +++++-----------
 .../imxrt/imxrt1064-evk/src/imxrt_sdram_ini_dcd.c  | 37 +++++-----------
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_spi.c     | 40 +++++------------
 boards/arm/imxrt/imxrt1064-evk/src/imxrt_usbhost.c | 43 ++++++------------
 .../arm/imxrt/imxrt1064-evk/src/imxrt_userleds.c   | 40 +++++------------
 22 files changed, 270 insertions(+), 624 deletions(-)

diff --git a/boards/arm/imxrt/imxrt1064-evk/kernel/imxrt_userspace.c b/boards/arm/imxrt/imxrt1064-evk/kernel/imxrt_userspace.c
index 7486a8e..9ef183f 100644
--- a/boards/arm/imxrt/imxrt1064-evk/kernel/imxrt_userspace.c
+++ b/boards/arm/imxrt/imxrt1064-evk/kernel/imxrt_userspace.c
@@ -1,35 +1,20 @@
 /****************************************************************************
  * boards/arm/imxrt/imxrt1064-evk/kernel/imxrt_userspace.c
  *
- *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
- *   Author: Gregory Nutt <gn...@nuttx.org>
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- *    used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
  *
  ****************************************************************************/
 
diff --git a/boards/arm/imxrt/imxrt1064-evk/scripts/flash-ocram.ld b/boards/arm/imxrt/imxrt1064-evk/scripts/flash-ocram.ld
index 81bb550..3685e8b 100644
--- a/boards/arm/imxrt/imxrt1064-evk/scripts/flash-ocram.ld
+++ b/boards/arm/imxrt/imxrt1064-evk/scripts/flash-ocram.ld
@@ -1,36 +1,20 @@
 /****************************************************************************
  * boards/arm/imxrt/imxrt1064-evk/scripts/flash-ocram.ld
  *
- *   Copyright (C) 2018, 2020 Gregory Nutt. All rights reserved.
- *   Authors: Ivan Ucherdzhiev <iv...@gmail.com>
- *            David Sidrane <da...@nscdg.com>
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- *    used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
  *
  ****************************************************************************/
 
diff --git a/boards/arm/imxrt/imxrt1064-evk/scripts/kernel-space.ld b/boards/arm/imxrt/imxrt1064-evk/scripts/kernel-space.ld
index d6f04d2..d91918c 100644
--- a/boards/arm/imxrt/imxrt1064-evk/scripts/kernel-space.ld
+++ b/boards/arm/imxrt/imxrt1064-evk/scripts/kernel-space.ld
@@ -1,36 +1,20 @@
 /****************************************************************************
  * boards/arm/imxrt/imxrt1064-evk/scripts/kernel-space.ld
  *
- *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
- *   Authors: Gregory Nutt <gn...@nuttx.org>
- *            David Sidrane <da...@nscdg.com>
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- *    used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
  *
  ****************************************************************************/
 
diff --git a/boards/arm/imxrt/imxrt1064-evk/scripts/memory.ld b/boards/arm/imxrt/imxrt1064-evk/scripts/memory.ld
index bf053f1..22849f0 100644
--- a/boards/arm/imxrt/imxrt1064-evk/scripts/memory.ld
+++ b/boards/arm/imxrt/imxrt1064-evk/scripts/memory.ld
@@ -1,36 +1,20 @@
 /****************************************************************************
  * boards/arm/imxrt/imxrt1064-evk/scripts/memory.ld
  *
- *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
- *   Authors: Gregory Nutt <gn...@nuttx.org>
- *            David Sidrane <da...@nscdg.com>
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- *    used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
  *
  ****************************************************************************/
 
diff --git a/boards/arm/imxrt/imxrt1064-evk/scripts/user-space.ld b/boards/arm/imxrt/imxrt1064-evk/scripts/user-space.ld
index c4d8428..f0f40a0 100644
--- a/boards/arm/imxrt/imxrt1064-evk/scripts/user-space.ld
+++ b/boards/arm/imxrt/imxrt1064-evk/scripts/user-space.ld
@@ -1,36 +1,20 @@
 /****************************************************************************
  * boards/arm/imxrt/imxrt1064-evk/scripts/user-space.ld
  *
- *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
- *   Authors: Gregory Nutt <gn...@nuttx.org>
- *            David Sidrane <da...@nscdg.com>
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- *    used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
  *
  ****************************************************************************/
 
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt1064-evk.h b/boards/arm/imxrt/imxrt1064-evk/src/imxrt1064-evk.h
index a2dd519..f6b16a3 100644
--- a/boards/arm/imxrt/imxrt1064-evk/src/imxrt1064-evk.h
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt1064-evk.h
@@ -1,36 +1,20 @@
 /****************************************************************************
  * boards/arm/imxrt/imxrt1064-evk/src/imxrt1064-evk.h
  *
- *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
- *   Authors: Gregory Nutt <gn...@nuttx.org>
- *            David Sidrane <da...@nscdg.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- *    used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
  *
  ****************************************************************************/
 
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_adc.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_adc.c
index 6b91141..d1999c8 100644
--- a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_adc.c
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_adc.c
@@ -1,47 +1,20 @@
 /****************************************************************************
  * boards/arm/imxrt/imxrt1064-evk/src/imxrt_adc.c
  *
- *   Copyright (C) 2020 Actia Nordic AB. All rights reserved.
- *   Author: Thomas Axelsson <th...@actia.se>
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
  *
- * Based on boards/arm/lpc17xx_40xx/mbed/src/lpc17_40_adc.c
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- * Based on boards/zkit-arm-176/src/up-adc
- *
- *   Copyright (C) 2013 Zilogic Systems. All rights reserved.
- *   Author: Kannan <co...@nuttx.org>
- *
- * Based on boards/lpc1720g-eval/src/lpc17_40_adc.c
- *
- *   Copyright (C) 2012, 2014, 2016 Gregory Nutt. All rights reserved.
- *   Author: Gregory Nutt <gn...@nuttx.org>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- *    used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
  *
  ****************************************************************************/
 
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_appinit.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_appinit.c
index 8850cfc..fa67a2b 100644
--- a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_appinit.c
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_appinit.c
@@ -1,36 +1,20 @@
 /****************************************************************************
  * boards/arm/imxrt/imxrt1064-evk/src/imxrt_appinit.c
  *
- *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
- *   Authors: Gregory Nutt <gn...@nuttx.org>
- *            David Sidrane <da...@nscdg.com>
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- *    used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
  *
  ****************************************************************************/
 
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_autoleds.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_autoleds.c
index 564d179..ca4d432 100644
--- a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_autoleds.c
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_autoleds.c
@@ -1,36 +1,20 @@
 /****************************************************************************
  * boards/arm/imxrt/imxrt1064-evk/src/imxrt_autoleds.c
  *
- *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
- *   Authors: Gregory Nutt <gn...@nuttx.org>
- *            David Sidrane <da...@nscdg.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- *    used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
  *
  ****************************************************************************/
 
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_boot.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_boot.c
index 19cbcc2..977d11e 100644
--- a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_boot.c
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_boot.c
@@ -1,36 +1,20 @@
 /****************************************************************************
  * boards/arm/imxrt/imxrt1064-evk/src/imxrt_boot.c
  *
- *   Copyright (C) 2015-2018 Gregory Nutt. All rights reserved.
- *   Authors: Gregory Nutt <gn...@nuttx.org>
- *            David Sidrane <da...@nscdg.com>
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- *    used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
  *
  ****************************************************************************/
 
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_bringup.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_bringup.c
index d522f49..6216685 100644
--- a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_bringup.c
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_bringup.c
@@ -1,36 +1,20 @@
 /****************************************************************************
  * boards/arm/imxrt/imxrt1064-evk/src/imxrt_bringup.c
  *
- *   Copyright (C) 2018, 2020 Gregory Nutt. All rights reserved.
- *   Authors: Gregory Nutt <gn...@nuttx.org>
- *            David Sidrane <da...@nscdg.com>
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- *    used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
  *
  ****************************************************************************/
 
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_ethernet.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_ethernet.c
index b5762fa..abbd5cb 100644
--- a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_ethernet.c
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_ethernet.c
@@ -1,36 +1,20 @@
 /****************************************************************************
  * boards/arm/imxrt/imxrt1064-evk/src/imxrt_ethernet.c
  *
- *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
- *   Authors: Gregory Nutt <gn...@nuttx.org>
- *            David Sidrane <da...@nscdg.com>
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- *    used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
  *
  ****************************************************************************/
 
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_boot.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_boot.c
index 2e0457b..dfaf005 100644
--- a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_boot.c
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_boot.c
@@ -1,35 +1,20 @@
 /****************************************************************************
  * boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_boot.c
  *
- *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
- *   Author: Ivan Ucherdzhiev <iv...@gmail.com>
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- *    used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
  *
  ****************************************************************************/
 
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_boot.h b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_boot.h
index 9387ec1..6cf8eae 100644
--- a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_boot.h
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_boot.h
@@ -1,36 +1,20 @@
 /****************************************************************************
  * boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_boot.h
  *
- *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
- *   Authors: Ivan Ucherdzhiev <iv...@gmail.com>
- *            David Sidrane <da...@nscdg.com>
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- *    used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
  *
  ****************************************************************************/
 
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_flash.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_flash.c
index 4e6bef2..a72ff4d 100644
--- a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_flash.c
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_flash.c
@@ -1,36 +1,20 @@
 /****************************************************************************
  * boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_flash.c
  *
- *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
- *   Authors: Ivan Ucherdzhiev <iv...@gmail.com>
- *            David Sidrane <da...@nscdg.com>
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- *    used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
  *
  ****************************************************************************/
 
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_flash.h b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_flash.h
index 7d3a809..26d61a2 100644
--- a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_flash.h
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_flash.h
@@ -1,36 +1,20 @@
 /****************************************************************************
  * boards/arm/imxrt/imxrt1064-evk/src/imxrt_flexspi_nor_flash.h
  *
- *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
- *   Authors: Ivan Ucherdzhiev <iv...@gmail.com>
- *            David Sidrane <da...@nscdg.com>
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- *    used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
  *
  ****************************************************************************/
 
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_lcd.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_lcd.c
index a1dea3a..6ed3a0c 100644
--- a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_lcd.c
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_lcd.c
@@ -1,35 +1,20 @@
 /****************************************************************************
  * boards/arm/imxrt/imxrt1064-evk/src/imxrt_lcd.c
  *
- *   Copyright (C) 2019 Gregory Nutt. All rights reserved.
- *   Author: Gregory Nutt <gn...@nuttx.org>
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- *    used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
  *
  ****************************************************************************/
 
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_mmcsd_spi.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_mmcsd_spi.c
index a41400a..156b88d 100644
--- a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_mmcsd_spi.c
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_mmcsd_spi.c
@@ -1,35 +1,21 @@
 /****************************************************************************
  * boards/arm/imxrt/imxrt1064-evk/src/imxrt_mmcsd_spi.c
  *
- *   Copyright (C) 2018 Greg Nutt. All rights reserved.
- *   Author: ivan Ucherdzhiev <iv...@gmail.com>
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- *    used to endorse or promote products derived from this software
- *    without specific prior written permission.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
  *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
  ****************************************************************************/
 
 /****************************************************************************
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_sdram_ini_dcd.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_sdram_ini_dcd.c
index a9d1e9d..2aa831a 100644
--- a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_sdram_ini_dcd.c
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_sdram_ini_dcd.c
@@ -1,34 +1,21 @@
 /****************************************************************************
  * boards/arm/imxrt/imxrt1064-evk/src/imxrt_sdram_ini_dcd.c
  *
- *   Copyright (C) 2017, NXP Semiconductors, Inc.
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- *    used to endorse or promote products derived from this software
- *    without specific prior written permission.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
  *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
  ****************************************************************************/
 
 /****************************************************************************
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_spi.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_spi.c
index 24365c4..241785e 100644
--- a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_spi.c
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_spi.c
@@ -1,36 +1,20 @@
 /****************************************************************************
  * boards/arm/imxrt/imxrt1064-evk/src/imxrt_spi.c
  *
- *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
- *   Authors: Ivan Ucherdzhiev <iv...@gmail.com>
- *            David Sidrane <da...@nscdg.com>
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- *    used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
  *
  ****************************************************************************/
 
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_usbhost.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_usbhost.c
index 08e6444..ba64763 100644
--- a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_usbhost.c
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_usbhost.c
@@ -1,37 +1,22 @@
-/*****************************************************************************
+/****************************************************************************
  * boards/arm/imxrt/imxrt1064-evk/src/imxrt_usbhost.c
  *
- *   Copyright (C) 2013, 2015-2017 Gregory Nutt. All rights reserved.
- *   Author: Gregory Nutt <gn...@nuttx.org>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
  *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- *    used to endorse or promote products derived from this software
- *    without specific prior written permission.
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
  *
- *****************************************************************************/
+ ****************************************************************************/
 
 /*****************************************************************************
  * Included Files
diff --git a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_userleds.c b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_userleds.c
index 56c0963..47928ca 100644
--- a/boards/arm/imxrt/imxrt1064-evk/src/imxrt_userleds.c
+++ b/boards/arm/imxrt/imxrt1064-evk/src/imxrt_userleds.c
@@ -1,36 +1,20 @@
 /****************************************************************************
  * boards/arm/imxrt/imxrt1064-evk/src/imxrt_userleds.c
  *
- *   Copyright (C) 2018 Gregory Nutt. All rights reserved.
- *   Authors: Gregory Nutt <gn...@nuttx.org>
- *            David Sidrane <da...@nscdg.com>
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.  The
+ * ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the
+ * License.  You may obtain a copy of the License at
  *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- * 3. Neither the name NuttX nor the names of its contributors may be
- *    used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
- * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
- * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
- * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
- * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
+ * License for the specific language governing permissions and limitations
+ * under the License.
  *
  ****************************************************************************/