boards: mm_feather: add board support for Feather
Add new board to support Madmachine Feather. Signed-off-by: Frank Li <lgl88911@163.com>
This commit is contained in:
parent
5c8f7bf874
commit
335982b112
12 changed files with 1018 additions and 0 deletions
10
boards/arm/mm_feather/CMakeLists.txt
Normal file
10
boards/arm/mm_feather/CMakeLists.txt
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
#
|
||||||
|
# Copyright (c) 2021 MADMACHINE LIMITED
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
#
|
||||||
|
|
||||||
|
zephyr_library()
|
||||||
|
zephyr_library_sources(pinmux.c)
|
||||||
|
zephyr_sources_ifdef(CONFIG_BOOT_FLEXSPI_NOR flexspi_nor_config.c)
|
||||||
|
zephyr_sources_ifdef(CONFIG_DEVICE_CONFIGURATION_DATA mmfeather_sdram_ini_dcd.c)
|
10
boards/arm/mm_feather/Kconfig.board
Normal file
10
boards/arm/mm_feather/Kconfig.board
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
#
|
||||||
|
# Copyright (c) 2021, MADMACHINE LIMITED
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
#
|
||||||
|
|
||||||
|
config BOARD_MM_FEATHER
|
||||||
|
bool "MM MM-FEATHER"
|
||||||
|
depends on SOC_SERIES_IMX_RT
|
||||||
|
select SOC_PART_NUMBER_MIMXRT1062DVL6A
|
18
boards/arm/mm_feather/Kconfig.defconfig
Normal file
18
boards/arm/mm_feather/Kconfig.defconfig
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
# MM-FEATHER board
|
||||||
|
|
||||||
|
# Copyright (c) 2021, MADMACHINE LIMITED
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
if BOARD_MM_FEATHER
|
||||||
|
|
||||||
|
config BOARD
|
||||||
|
default "mm_feather"
|
||||||
|
|
||||||
|
choice CODE_LOCATION
|
||||||
|
default CODE_FLEXSPI
|
||||||
|
endchoice
|
||||||
|
|
||||||
|
config DISK_DRIVER_SDMMC
|
||||||
|
default y if DISK_DRIVERS
|
||||||
|
|
||||||
|
endif # BOARD_MM_FEATHER
|
12
boards/arm/mm_feather/board.cmake
Normal file
12
boards/arm/mm_feather/board.cmake
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
#
|
||||||
|
# Copyright (c) 2021, MADMACHINE LIMITED
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
#
|
||||||
|
|
||||||
|
board_set_debugger_ifnset(pyocd)
|
||||||
|
board_set_flasher_ifnset(pyocd)
|
||||||
|
|
||||||
|
board_runner_args(pyocd "--target=mimxrt1050_quadspi")
|
||||||
|
|
||||||
|
include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake)
|
239
boards/arm/mm_feather/doc/index.rst
Normal file
239
boards/arm/mm_feather/doc/index.rst
Normal file
|
@ -0,0 +1,239 @@
|
||||||
|
.. _mm_feather:
|
||||||
|
|
||||||
|
MadMachine SwiftIO Feather
|
||||||
|
##########################
|
||||||
|
|
||||||
|
Overview
|
||||||
|
********
|
||||||
|
|
||||||
|
The SwiftIO Feather board, designed by MadMachine is
|
||||||
|
designed with support for the modern `Swift language
|
||||||
|
<https://docs.swift.org/swift-book/>`_. Zephyr provides basic
|
||||||
|
low-level capabilities for the SwiftIO Feather board. Swift application would
|
||||||
|
run on top of Zephyr. More information about the board can be found
|
||||||
|
at:
|
||||||
|
|
||||||
|
- `MadMachine Homepage`_
|
||||||
|
- `SwiftIO API Reference`_
|
||||||
|
|
||||||
|
.. image:: ./mm_feather.jpg
|
||||||
|
:width: 720px
|
||||||
|
:align: center
|
||||||
|
:alt: SwiftIO Feather Board
|
||||||
|
|
||||||
|
Hardware
|
||||||
|
********
|
||||||
|
|
||||||
|
- MIMXRT1062DVL6B MCU (Cortex-M7 at 600MHz, 2048KB on-chip memory)
|
||||||
|
|
||||||
|
- Memory
|
||||||
|
|
||||||
|
- 8MB QSPI Flash
|
||||||
|
- 32MB SDRAM
|
||||||
|
- TF socket for SD card
|
||||||
|
|
||||||
|
- USB
|
||||||
|
|
||||||
|
- USB-C 2.0 OTG connector
|
||||||
|
|
||||||
|
- Power
|
||||||
|
|
||||||
|
- 5V USB power
|
||||||
|
- 4.2V DC jack
|
||||||
|
|
||||||
|
- Debug
|
||||||
|
|
||||||
|
- SWD connector
|
||||||
|
|
||||||
|
|
||||||
|
- RGB LED
|
||||||
|
|
||||||
|
|
||||||
|
Supported Features
|
||||||
|
==================
|
||||||
|
|
||||||
|
The mm_feather board configuration supports the following hardware
|
||||||
|
features:
|
||||||
|
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| Interface | Controller | Driver/Component |
|
||||||
|
+===========+============+=====================================+
|
||||||
|
| NVIC | on-chip | nested vector interrupt controller |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| SYSTICK | on-chip | systick |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| DISPLAY | on-chip | display |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| GPIO | on-chip | gpio |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| I2C | on-chip | i2c |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| SPI | on-chip | spi |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| UART | on-chip | serial port-polling; |
|
||||||
|
| | | serial port-interrupt |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| I2S | on-chip | I2S |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
| USB | on-chip | USB device |
|
||||||
|
+-----------+------------+-------------------------------------+
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Connections and IOs
|
||||||
|
===================
|
||||||
|
|
||||||
|
Note:
|
||||||
|
The following SwiftIO Feather pinout diagram is used for Swift programming.
|
||||||
|
The Swift ID is not the same as the Zephyr driver ID.
|
||||||
|
|
||||||
|
+-----------+---------------+----------+---------------+--------------------------+
|
||||||
|
| Name | GPIO | Other peripherals |
|
||||||
|
+===========+===============+==========+===============+==========+===============+
|
||||||
|
| Swift ID | Pin name | Swift ID | Zephyr driver | Swift ID | Zephyr driver |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| P0 | GPIO_AD_B1_04 | D0 | GPIO1_IO20 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| P1 | GPIO_AD_B1_08 | D1 | GPIO1_IO24 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| P2 | GPIO_AD_B1_09 | D2 | GPIO1_IO25 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| P3 | GPIO_AD_B1_10 | D3 | GPIO1_IO26 | | |
|
||||||
|
+-----------+---------------+----------+---------------+ UART1 | UART_8 |
|
||||||
|
| P4 | GPIO_AD_B1_11 | D4 | GPIO1_IO27 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| P5 | GPIO_AD_B1_12 | D5 | GPIO1_IO28 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| P6 | GPIO_AD_B1_15 | D6 | GPIO1_IO31 | | |
|
||||||
|
+-----------+---------------+----------+---------------+ | |
|
||||||
|
| P7 | GPIO_AD_B1_14 | D7 | GPIO1_IO30 | SPI0 | SPI_3 |
|
||||||
|
+-----------+---------------+----------+---------------+ | |
|
||||||
|
| P8 | GPIO_AD_B1_13 | D8 | GPIO1_IO29 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| P9 | GPIO_AD_B1_03 | D9 | GPIO1_IO19 | | |
|
||||||
|
+-----------+---------------+----------+---------------+ UART0 | UART_2 |
|
||||||
|
| P10 | GPIO_AD_B1_02 | D10 | GPIO1_IO18 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| P11 | GPIO_AD_B1_05 | D11 | GPIO1_IO21 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| P12 | GPIO_AD_B0_14 | D12 | GPIO1_IO14 | | |
|
||||||
|
+-----------+---------------+----------+---------------+ CAN0 | CAN_3 |
|
||||||
|
| P13 | GPIO_AD_B0_15 | D13 | GPIO1_IO15 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| P14 | GPIO_B0_00 | D14 | GPIO2_IO00 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| P15 | GPIO_B1_03 | D15 | GPIO2_IO19 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| P16 | GPIO_B1_02 | D16 | GPIO2_IO18 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| P17 | GPIO_B1_01 | D17 | GPIO2_IO17 | | |
|
||||||
|
+-----------+---------------+----------+---------------+ UART2 | UART_4 |
|
||||||
|
| P18 | GPIO_B1_00 | D18 | GPIO2_IO16 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| P19 | GPIO_B1_15 | D19 | GPIO2_IO31 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| P20 | GPIO_B1_14 | D20 | GPIO2_IO30 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| P21 | GPIO_B0_03 | D21 | GPIO2_IO03 | | |
|
||||||
|
+-----------+---------------+----------+---------------+ | |
|
||||||
|
| P22 | GPIO_B0_02 | D22 | GPIO2_IO02 | SPI1 | SPI_4 |
|
||||||
|
+-----------+---------------+----------+---------------+ | |
|
||||||
|
| P23 | GPIO_B0_01 | D23 | GPIO2_IO01 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| P24 | GPIO_B0_04 | D24 | GPIO2_IO04 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| P25 | GPIO_B0_05 | D25 | GPIO2_IO05 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| P26 | GPIO_B0_06 | D26 | GPIO2_IO06 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| P27 | GPIO_B0_07 | D27 | GPIO2_IO07 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| P28 | GPIO_B0_08 | D28 | GPIO2_IO08 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| P29 | GPIO_B0_09 | D29 | GPIO2_IO09 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| P30 | GPIO_B0_10 | D30 | GPIO2_IO10 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| P31 | GPIO_B0_11 | D31 | GPIO2_IO11 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| P32 | GPIO_B0_12 | D32 | GPIO2_IO12 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| P33 | GPIO_B0_13 | D33 | GPIO2_IO13 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| P34 | GPIO_B0_14 | D34 | GPIO2_IO14 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| P35 | GPIO_B0_15 | D35 | GPIO2_IO15 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| | GPIO_AD_B1_07 | | GPIO1_IO23 | | |
|
||||||
|
+-----------+---------------+----------+---------------+ I2C0 | I2C_3 |
|
||||||
|
| | GPIO_AD_B1_06 | | GPIO1_IO22 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
| | GPIO_AD_B1_00 | | GPIO1_IO16 | | |
|
||||||
|
+-----------+---------------+----------+---------------+ I2C1 | I2C_1 |
|
||||||
|
| | GPIO_AD_B1_00 | | GPIO1_IO17 | | |
|
||||||
|
+-----------+---------------+----------+---------------+----------+---------------+
|
||||||
|
|
||||||
|
|
||||||
|
Programming and Flash
|
||||||
|
*************************
|
||||||
|
|
||||||
|
Build and flash applications as usual (see :ref:`build_an_application` and
|
||||||
|
:ref:`application_run` for more details).
|
||||||
|
|
||||||
|
Configuring a Console
|
||||||
|
=====================
|
||||||
|
|
||||||
|
Connect a USB-to-serial adapter from your PC to corresponding UART pins of SwiftIO Feather.
|
||||||
|
|
||||||
|
Use the following settings with your serial terminal of choice (minicom, putty,
|
||||||
|
etc.):
|
||||||
|
|
||||||
|
- Speed: 115200
|
||||||
|
- Data: 8 bits
|
||||||
|
- Parity: None
|
||||||
|
- Stop bits: 1
|
||||||
|
|
||||||
|
Flashing
|
||||||
|
========
|
||||||
|
|
||||||
|
Here is an example for the :ref:`hello_world` application.
|
||||||
|
|
||||||
|
Connect a DAPLink debuger from your PC to corresponding SWD pins of SwiftIO Feather.
|
||||||
|
|
||||||
|
.. zephyr-app-commands::
|
||||||
|
:zephyr-app: samples/hello_world
|
||||||
|
:board: mm_feather
|
||||||
|
:goals: flash
|
||||||
|
|
||||||
|
Open a serial terminal, reset the board (press the "reset" button), and you should
|
||||||
|
see the following message in the terminal:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
*** Booting Zephyr OS build v2.6.0-rc1-301-gd9c666a5abf8 ***
|
||||||
|
Hello World! mm_feather
|
||||||
|
|
||||||
|
Debugging
|
||||||
|
=========
|
||||||
|
|
||||||
|
Here is an example for the :ref:`hello_world` application.
|
||||||
|
|
||||||
|
.. zephyr-app-commands::
|
||||||
|
:zephyr-app: samples/hello_world
|
||||||
|
:board: mm_feather
|
||||||
|
:goals: debug
|
||||||
|
|
||||||
|
Open a serial terminal, step through the application in your debugger, and you
|
||||||
|
should see the following message in the terminal:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
*** Booting Zephyr OS build v2.6.0-rc1-301-gd9c666a5abf8 ***
|
||||||
|
Hello World! mm_feather
|
||||||
|
|
||||||
|
|
||||||
|
.. _MadMachine Homepage:
|
||||||
|
https://madmachine.io
|
||||||
|
|
||||||
|
.. _SwiftIO API Reference:
|
||||||
|
https://swiftioapi.madmachine.io
|
BIN
boards/arm/mm_feather/doc/mm_feather.jpg
Normal file
BIN
boards/arm/mm_feather/doc/mm_feather.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 91 KiB |
43
boards/arm/mm_feather/flexspi_nor_config.c
Normal file
43
boards/arm/mm_feather/flexspi_nor_config.c
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2019, MADMACHINE LIMITED
|
||||||
|
*
|
||||||
|
* refer to hal_nxp board file
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <flexspi_nor_config.h>
|
||||||
|
|
||||||
|
#ifdef CONFIG_NXP_IMX_RT_BOOT_HEADER
|
||||||
|
#if defined(__CC_ARM) || defined(__ARMCC_VERSION) || defined(__GNUC__)
|
||||||
|
__attribute__((section(".boot_hdr.conf")))
|
||||||
|
#elif defined(__ICCARM__)
|
||||||
|
#pragma location = ".boot_hdr.conf"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const struct flexspi_nor_config_t Qspiflash_config = {
|
||||||
|
.memConfig = {
|
||||||
|
.tag = FLEXSPI_CFG_BLK_TAG,
|
||||||
|
.version = FLEXSPI_CFG_BLK_VERSION,
|
||||||
|
.readSampleClkSrc =
|
||||||
|
kFlexSPIReadSampleClk_LoopbackFromDqsPad,
|
||||||
|
.csHoldTime = 3u,
|
||||||
|
.csSetupTime = 3u,
|
||||||
|
.sflashPadType = kSerialFlash_4Pads,
|
||||||
|
.serialClkFreq = kFlexSpiSerialClk_100MHz,
|
||||||
|
.sflashA1Size = 8u * 1024u * 1024u,
|
||||||
|
.lookupTable = {
|
||||||
|
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),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
.pageSize = 256u,
|
||||||
|
.sectorSize = 4u * 1024u,
|
||||||
|
.blockSize = 256u * 1024u,
|
||||||
|
.isUniformBlockSize = false,
|
||||||
|
};
|
||||||
|
#endif /* CONFIG_NXP_IMX_RT_BOOT_HEADER */
|
159
boards/arm/mm_feather/mm_feather.dts
Normal file
159
boards/arm/mm_feather/mm_feather.dts
Normal file
|
@ -0,0 +1,159 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2021, MADMACHINE LIMITED
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
/dts-v1/;
|
||||||
|
|
||||||
|
#include <nxp/nxp_rt1060.dtsi>
|
||||||
|
|
||||||
|
/ {
|
||||||
|
model = "MM MM-FEATHER board";
|
||||||
|
compatible = "nxp,mimxrt1062";
|
||||||
|
|
||||||
|
aliases {
|
||||||
|
led0 = &green_led;
|
||||||
|
led1 = &red_led;
|
||||||
|
led2 = &blue_led;
|
||||||
|
};
|
||||||
|
|
||||||
|
chosen {
|
||||||
|
zephyr,sram = &sdram0;
|
||||||
|
zephyr,itcm = &itcm;
|
||||||
|
zephyr,dtcm = &dtcm;
|
||||||
|
zephyr,console = &lpuart1;
|
||||||
|
zephyr,shell-uart = &lpuart1;
|
||||||
|
};
|
||||||
|
|
||||||
|
sdram0: memory@80000000 {
|
||||||
|
/* Micron MT48LC16M16A2B4-6AIT:G */
|
||||||
|
device_type = "memory";
|
||||||
|
reg = <0x80000000 DT_SIZE_M(32)>;
|
||||||
|
};
|
||||||
|
|
||||||
|
leds {
|
||||||
|
compatible = "gpio-leds";
|
||||||
|
red_led: led_0 {
|
||||||
|
gpios = <&gpio1 9 0>;
|
||||||
|
label = "RGB R";
|
||||||
|
};
|
||||||
|
|
||||||
|
green_led: led_1 {
|
||||||
|
gpios = <&gpio1 10 0>;
|
||||||
|
label = "RGB G";
|
||||||
|
};
|
||||||
|
|
||||||
|
blue_led: led_2 {
|
||||||
|
gpios = <&gpio1 11 0>;
|
||||||
|
label = "RGB B";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
&flexspi {
|
||||||
|
reg = <0x402a8000 0x4000>, <0x60000000 DT_SIZE_M(8)>;
|
||||||
|
is25wp064: is25wp064@0 {
|
||||||
|
compatible = "nxp,imx-flexspi-nor";
|
||||||
|
size = <67108864>;
|
||||||
|
label = "IS25WP064";
|
||||||
|
reg = <0>;
|
||||||
|
spi-max-frequency = <133000000>;
|
||||||
|
status = "okay";
|
||||||
|
jedec-id = [9d 70 17];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
&lpuart1 {
|
||||||
|
status = "okay";
|
||||||
|
current-speed = <115200>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&lpuart2 {
|
||||||
|
status = "okay";
|
||||||
|
current-speed = <115200>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&lpuart3 {
|
||||||
|
status = "okay";
|
||||||
|
current-speed = <115200>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&lpuart4 {
|
||||||
|
status = "okay";
|
||||||
|
current-speed = <115200>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&lpuart8 {
|
||||||
|
status = "okay";
|
||||||
|
current-speed = <115200>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&lpi2c1 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&lpi2c3 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&lpspi3 {
|
||||||
|
status = "okay";
|
||||||
|
pcs-sck-delay = <2>;
|
||||||
|
sck-pcs-delay = <2>;
|
||||||
|
transfer-delay = <2>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&lpspi4 {
|
||||||
|
status = "okay";
|
||||||
|
pcs-sck-delay = <2>;
|
||||||
|
sck-pcs-delay = <2>;
|
||||||
|
transfer-delay = <2>;
|
||||||
|
};
|
||||||
|
|
||||||
|
&flexpwm1_pwm3 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&flexpwm2_pwm0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&flexpwm2_pwm1 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&flexpwm2_pwm2 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&flexpwm2_pwm3 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&flexpwm4_pwm0 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&flexpwm4_pwm1 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&flexpwm4_pwm2 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&flexpwm4_pwm3 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usb1 {
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
|
||||||
|
&usdhc1 {
|
||||||
|
status = "okay";
|
||||||
|
cd-gpios = <&gpio2 28 GPIO_ACTIVE_LOW>;
|
||||||
|
no-1-8-v;
|
||||||
|
};
|
25
boards/arm/mm_feather/mm_feather.yaml
Normal file
25
boards/arm/mm_feather/mm_feather.yaml
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
#
|
||||||
|
# Copyright (c) 2021, MADMACHINE LIMITED
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
#
|
||||||
|
|
||||||
|
identifier: mm_feather
|
||||||
|
name: MM MM-FEATHER
|
||||||
|
type: mcu
|
||||||
|
arch: arm
|
||||||
|
toolchain:
|
||||||
|
- zephyr
|
||||||
|
- gnuarmemb
|
||||||
|
- xtools
|
||||||
|
ram: 32768
|
||||||
|
flash: 8192
|
||||||
|
supported:
|
||||||
|
- counter
|
||||||
|
- sdhc
|
||||||
|
- gpio
|
||||||
|
- i2c
|
||||||
|
- dma
|
||||||
|
- uart
|
||||||
|
- pwm
|
||||||
|
- spi
|
16
boards/arm/mm_feather/mm_feather_defconfig
Normal file
16
boards/arm/mm_feather/mm_feather_defconfig
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
#
|
||||||
|
# Copyright (c) 2021, MADMACHINE LIMITED
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
|
#
|
||||||
|
|
||||||
|
CONFIG_SOC_MIMXRT1062=y
|
||||||
|
CONFIG_SOC_SERIES_IMX_RT=y
|
||||||
|
CONFIG_CONSOLE=y
|
||||||
|
CONFIG_UART_CONSOLE=y
|
||||||
|
CONFIG_SERIAL=y
|
||||||
|
CONFIG_CORTEX_M_SYSTICK=y
|
||||||
|
CONFIG_GPIO=y
|
||||||
|
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=600000000
|
||||||
|
CONFIG_ARM_MPU=y
|
||||||
|
CONFIG_HW_STACK_PROTECTION=y
|
294
boards/arm/mm_feather/mmfeather_sdram_ini_dcd.c
Normal file
294
boards/arm/mm_feather/mmfeather_sdram_ini_dcd.c
Normal file
|
@ -0,0 +1,294 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2021, MADMACHINE LIMITED
|
||||||
|
*
|
||||||
|
* refer to hal_nxp board file
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <zephyr/types.h>
|
||||||
|
|
||||||
|
#if defined(XIP_BOOT_HEADER_ENABLE) && (XIP_BOOT_HEADER_ENABLE == 1)
|
||||||
|
#if defined(XIP_BOOT_HEADER_DCD_ENABLE) && (XIP_BOOT_HEADER_DCD_ENABLE == 1)
|
||||||
|
#if defined(__CC_ARM) || defined(__ARMCC_VERSION) || defined(__GNUC__)
|
||||||
|
__attribute__((section(".boot_hdr.dcd_data")))
|
||||||
|
#elif defined(__ICCARM__)
|
||||||
|
#pragma location = ".boot_hdr.dcd_data"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
const uint8_t dcd_data[] = {
|
||||||
|
0xD2,
|
||||||
|
|
||||||
|
0x04, 0x30,
|
||||||
|
|
||||||
|
0x41,
|
||||||
|
|
||||||
|
0xCC, 0x03, 0xAC, 0x04,
|
||||||
|
|
||||||
|
0x40, 0x0F, 0xC0, 0x68, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
|
||||||
|
0x40, 0x0F, 0xC0, 0x6C, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
|
||||||
|
0x40, 0x0F, 0xC0, 0x70, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
|
||||||
|
0x40, 0x0F, 0xC0, 0x74, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
|
||||||
|
0x40, 0x0F, 0xC0, 0x78, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
|
||||||
|
0x40, 0x0F, 0xC0, 0x7C, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
|
||||||
|
0x40, 0x0F, 0xC0, 0x80, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||||
|
|
||||||
|
0x40, 0x0D, 0x80, 0x30, 0x00, 0x00, 0x20, 0x01,
|
||||||
|
|
||||||
|
0x40, 0x0D, 0x81, 0x00, 0x00, 0x1D, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x0F, 0xC0, 0x14, 0x00, 0x01, 0x0D, 0x40,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x1C, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x24, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x28, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x2C, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x34, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x38, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x3C, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x44, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x48, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x4C, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x50, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x54, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x58, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x40, 0x1F, 0x80, 0x5C, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
0x40, 0x1F, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x64, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x68, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x6C, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x70, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x74, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x78, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x7C, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x84, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x88, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x8C, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x90, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x94, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x98, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0x9C, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0xA0, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0xA4, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0xA8, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0xAC, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0xB0, 0x00, 0x00, 0x00, 0x10,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0xB4, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x80, 0xB8, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x04, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x08, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x0C, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x10, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x14, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x18, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x1C, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x20, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x24, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x28, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x2C, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x30, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x34, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x38, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x3C, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x40, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x44, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x48, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x4C, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x50, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x54, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x58, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x5C, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x60, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x64, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x68, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x6C, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x70, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x74, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x78, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x7C, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x80, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x84, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x88, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x8C, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x90, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x94, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x98, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0x9C, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0xA0, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0xA4, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x1F, 0x82, 0xA8, 0x00, 0x01, 0x10, 0xF9,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x00, 0x10, 0x00, 0x00, 0x04,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x08, 0x00, 0x03, 0x05, 0x24,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x0C, 0x06, 0x03, 0x05, 0x24,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x10, 0x80, 0x00, 0x00, 0x1B,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x14, 0x82, 0x00, 0x00, 0x1B,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x18, 0x84, 0x00, 0x00, 0x1B,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x1C, 0x86, 0x00, 0x00, 0x1B,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x20, 0x90, 0x00, 0x00, 0x21,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x24, 0xA0, 0x00, 0x00, 0x19,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x28, 0xA8, 0x00, 0x00, 0x17,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x2C, 0xA9, 0x00, 0x00, 0x1B,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x30, 0x00, 0x00, 0x00, 0x21,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x04, 0x00, 0x00, 0x79, 0xA8,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x40, 0x00, 0x00, 0x0F, 0x31,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x44, 0x00, 0x65, 0x29, 0x22,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x48, 0x00, 0x01, 0x09, 0x20,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x4C, 0x50, 0x21, 0x0A, 0x08,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x80, 0x00, 0x00, 0x00, 0x21,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x84, 0x00, 0x88, 0x88, 0x88,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x94, 0x00, 0x00, 0x00, 0x02,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x90, 0x80, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x9C, 0xA5, 0x5A, 0x00, 0x0F,
|
||||||
|
|
||||||
|
0xCF, 0x00, 0x0C, 0x1C, 0x40, 0x2F, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x01,
|
||||||
|
|
||||||
|
0xCC, 0x00, 0x14, 0x04,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x90, 0x80, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x9C, 0xA5, 0x5A, 0x00, 0x0C,
|
||||||
|
|
||||||
|
0xCF, 0x00, 0x0C, 0x1C, 0x40, 0x2F, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x01,
|
||||||
|
|
||||||
|
0xCC, 0x00, 0x14, 0x04,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x90, 0x80, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x9C, 0xA5, 0x5A, 0x00, 0x0C,
|
||||||
|
|
||||||
|
0xCF, 0x00, 0x0C, 0x1C, 0x40, 0x2F, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x01,
|
||||||
|
|
||||||
|
0xCC, 0x00, 0x1C, 0x04,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x33,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x90, 0x80, 0x00, 0x00, 0x00,
|
||||||
|
|
||||||
|
0x40, 0x2F, 0x00, 0x9C, 0xA5, 0x5A, 0x00, 0x0A,
|
||||||
|
|
||||||
|
0xCF, 0x00, 0x0C, 0x1C, 0x40, 0x2F, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x01,
|
||||||
|
|
||||||
|
0xCC, 0x00, 0x0C, 0x04, 0x40, 0x2F, 0x00, 0x4C, 0x50, 0x21, 0x0A, 0x09
|
||||||
|
};
|
||||||
|
|
||||||
|
#else
|
||||||
|
const uint8_t dcd_data[] = { 0x00 };
|
||||||
|
#endif
|
||||||
|
#endif
|
192
boards/arm/mm_feather/pinmux.c
Normal file
192
boards/arm/mm_feather/pinmux.c
Normal file
|
@ -0,0 +1,192 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2021, MADMACHINE LIMITED
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <init.h>
|
||||||
|
#include <fsl_iomuxc.h>
|
||||||
|
#include <fsl_gpio.h>
|
||||||
|
#include <soc.h>
|
||||||
|
|
||||||
|
#if DT_NODE_HAS_STATUS(DT_NODELABEL(enet), okay)
|
||||||
|
static gpio_pin_config_t enet_gpio_config = {
|
||||||
|
.direction = kGPIO_DigitalOutput,
|
||||||
|
.outputLogic = 0,
|
||||||
|
.interruptMode = kGPIO_NoIntmode
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if DT_NODE_HAS_STATUS(DT_NODELABEL(usdhc1), okay) && CONFIG_DISK_DRIVER_SDMMC
|
||||||
|
|
||||||
|
/*Drive Strength Field: R0(260 Ohm @ 3.3V, 150 Ohm@1.8V, 240 Ohm for DDR)
|
||||||
|
*Speed Field: medium(100MHz)
|
||||||
|
*Open Drain Enable Field: Open Drain Disabled
|
||||||
|
*Pull / Keep Enable Field: Pull/Keeper Enabled
|
||||||
|
*Pull / Keep Select Field: Pull
|
||||||
|
*Pull Up / Down Config. Field: 47K Ohm Pull Up
|
||||||
|
*Hyst. Enable Field: Hysteresis Enabled.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static void mm_feather_usdhc_pinmux(
|
||||||
|
uint16_t nusdhc, bool init,
|
||||||
|
uint32_t speed, uint32_t strength)
|
||||||
|
{
|
||||||
|
uint32_t cmd_data = IOMUXC_SW_PAD_CTL_PAD_SPEED(speed) |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_SRE_MASK |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_PKE_MASK |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_PUE_MASK |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_HYS_MASK |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_PUS(1) |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_DSE(strength);
|
||||||
|
uint32_t clk = IOMUXC_SW_PAD_CTL_PAD_SPEED(speed) |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_SRE_MASK |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_HYS_MASK |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_PUS(0) |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_DSE(strength);
|
||||||
|
|
||||||
|
if (nusdhc == 0) {
|
||||||
|
if (init) {
|
||||||
|
IOMUXC_SetPinMux(
|
||||||
|
IOMUXC_GPIO_AD_B0_05_GPIO1_IO05,
|
||||||
|
0U);
|
||||||
|
IOMUXC_SetPinMux(/*SD_CD*/
|
||||||
|
IOMUXC_GPIO_B1_12_GPIO2_IO28,
|
||||||
|
0U);
|
||||||
|
IOMUXC_SetPinMux(
|
||||||
|
IOMUXC_GPIO_SD_B0_00_USDHC1_CMD,
|
||||||
|
0U);
|
||||||
|
IOMUXC_SetPinMux(
|
||||||
|
IOMUXC_GPIO_SD_B0_01_USDHC1_CLK,
|
||||||
|
0U);
|
||||||
|
IOMUXC_SetPinMux(
|
||||||
|
IOMUXC_GPIO_SD_B0_02_USDHC1_DATA0,
|
||||||
|
0U);
|
||||||
|
IOMUXC_SetPinMux(
|
||||||
|
IOMUXC_GPIO_SD_B0_03_USDHC1_DATA1,
|
||||||
|
0U);
|
||||||
|
IOMUXC_SetPinMux(
|
||||||
|
IOMUXC_GPIO_SD_B0_04_USDHC1_DATA2,
|
||||||
|
0U);
|
||||||
|
IOMUXC_SetPinMux(
|
||||||
|
IOMUXC_GPIO_SD_B0_05_USDHC1_DATA3,
|
||||||
|
0U);
|
||||||
|
|
||||||
|
IOMUXC_SetPinConfig(
|
||||||
|
IOMUXC_GPIO_AD_B0_05_GPIO1_IO05,
|
||||||
|
0x10B0u);
|
||||||
|
IOMUXC_SetPinConfig(/*SD0_CD_SW*/
|
||||||
|
IOMUXC_GPIO_B1_12_GPIO2_IO28,
|
||||||
|
0x017089u);
|
||||||
|
}
|
||||||
|
|
||||||
|
IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B0_00_USDHC1_CMD,
|
||||||
|
cmd_data);
|
||||||
|
IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B0_01_USDHC1_CLK,
|
||||||
|
clk);
|
||||||
|
IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B0_02_USDHC1_DATA0,
|
||||||
|
cmd_data);
|
||||||
|
IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B0_03_USDHC1_DATA1,
|
||||||
|
cmd_data);
|
||||||
|
IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B0_04_USDHC1_DATA2,
|
||||||
|
cmd_data);
|
||||||
|
IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B0_05_USDHC1_DATA3,
|
||||||
|
cmd_data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static int mm_feather_init(const struct device *dev)
|
||||||
|
{
|
||||||
|
ARG_UNUSED(dev);
|
||||||
|
|
||||||
|
CLOCK_EnableClock(kCLOCK_Iomuxc);
|
||||||
|
CLOCK_EnableClock(kCLOCK_IomuxcSnvs);
|
||||||
|
|
||||||
|
|
||||||
|
/* LED */
|
||||||
|
IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B0_09_GPIO1_IO09, 0);
|
||||||
|
|
||||||
|
IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B0_09_GPIO1_IO09,
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_PKE_MASK |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_SPEED(2) |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_DSE(6));
|
||||||
|
|
||||||
|
IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B0_10_GPIO1_IO10, 0);
|
||||||
|
|
||||||
|
IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B0_10_GPIO1_IO10,
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_PKE_MASK |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_SPEED(2) |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_DSE(6));
|
||||||
|
|
||||||
|
IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B0_11_GPIO1_IO11, 0);
|
||||||
|
|
||||||
|
IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B0_11_GPIO1_IO11,
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_PKE_MASK |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_SPEED(2) |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_DSE(6));
|
||||||
|
|
||||||
|
|
||||||
|
#if DT_NODE_HAS_STATUS(DT_NODELABEL(lpuart1), okay) && CONFIG_SERIAL
|
||||||
|
/* LPUART1 TX/RX */
|
||||||
|
IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B0_12_LPUART1_TX, 0);
|
||||||
|
IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B0_13_LPUART1_RX, 0);
|
||||||
|
|
||||||
|
IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B0_12_LPUART1_TX,
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_PKE_MASK |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_SPEED(2) |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_DSE(6));
|
||||||
|
|
||||||
|
IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B0_13_LPUART1_RX,
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_PKE_MASK |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_SPEED(2) |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_DSE(6));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if DT_NODE_HAS_STATUS(DT_NODELABEL(lpi2c1), okay) && CONFIG_I2C
|
||||||
|
IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B1_00_LPI2C1_SCL, 1);
|
||||||
|
IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B1_01_LPI2C1_SDA, 1);
|
||||||
|
|
||||||
|
IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B1_00_LPI2C1_SCL,
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_PUS(3) |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_PKE_MASK |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_ODE_MASK |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_SPEED(2) |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_DSE(6));
|
||||||
|
|
||||||
|
IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B1_01_LPI2C1_SDA,
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_PUS(3) |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_PKE_MASK |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_ODE_MASK |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_SPEED(2) |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_DSE(6));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if DT_NODE_HAS_STATUS(DT_NODELABEL(lpi2c3), okay) && CONFIG_I2C
|
||||||
|
IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B1_07_LPI2C3_SCL, 1);
|
||||||
|
IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B1_06_LPI2C3_SDA, 1);
|
||||||
|
|
||||||
|
IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B1_07_LPI2C3_SCL,
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_PUS(3) |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_PKE_MASK |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_ODE_MASK |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_SPEED(2) |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_DSE(6));
|
||||||
|
|
||||||
|
IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B1_06_LPI2C3_SDA,
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_PUS(3) |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_PKE_MASK |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_ODE_MASK |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_SPEED(2) |
|
||||||
|
IOMUXC_SW_PAD_CTL_PAD_DSE(6));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if DT_NODE_HAS_STATUS(DT_NODELABEL(usdhc1), okay) && CONFIG_DISK_DRIVER_SDMMC
|
||||||
|
mm_feather_usdhc_pinmux(0, true, 2, 1);
|
||||||
|
imxrt_usdhc_pinmux_cb_register(mm_feather_usdhc_pinmux);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
SYS_INIT(mm_feather_init, PRE_KERNEL_1, 0);
|
Loading…
Add table
Add a link
Reference in a new issue