From 94abb1f7fb43b8fe64470c372f18b70a18a017a6 Mon Sep 17 00:00:00 2001 From: Gustavo Denardin Date: Mon, 3 Apr 2017 15:38:40 -0300 Subject: [PATCH] arm: Support for new ARM board FRDM-KL25Z In order to allow the use of such board, a very preliminar port was developed. It consists of board files, as well as pinmux, uart, gpio, spi drivers and device tree files. Change-Id: I5753064e39e0b023cf4481744c176de26d8dbebb Signed-off-by: Gustavo Denardin Signed-off-by: Kumar Gala --- boards/arm/frdm_kl25z/Kconfig.board | 11 ++ boards/arm/frdm_kl25z/Kconfig.defconfig | 108 +++++++++++++ boards/arm/frdm_kl25z/Makefile | 10 ++ boards/arm/frdm_kl25z/board.h | 44 ++++++ boards/arm/frdm_kl25z/doc/frdm_kl25z.jpg | Bin 0 -> 15127 bytes boards/arm/frdm_kl25z/doc/frdm_kl25z.rst | 173 +++++++++++++++++++++ boards/arm/frdm_kl25z/frdm_kl25z_defconfig | 12 ++ boards/arm/frdm_kl25z/pinmux.c | 70 +++++++++ dts/arm/Makefile | 1 + dts/arm/frdm_kl25z.dts | 23 +++ dts/arm/frdm_kl25z.fixup | 1 + dts/arm/nxp/nxp_kl25z.dtsi | 32 ++++ scripts/sanity_chk/arches/arm.ini | 2 +- 13 files changed, 486 insertions(+), 1 deletion(-) create mode 100644 boards/arm/frdm_kl25z/Kconfig.board create mode 100644 boards/arm/frdm_kl25z/Kconfig.defconfig create mode 100644 boards/arm/frdm_kl25z/Makefile create mode 100644 boards/arm/frdm_kl25z/board.h create mode 100644 boards/arm/frdm_kl25z/doc/frdm_kl25z.jpg create mode 100644 boards/arm/frdm_kl25z/doc/frdm_kl25z.rst create mode 100644 boards/arm/frdm_kl25z/frdm_kl25z_defconfig create mode 100644 boards/arm/frdm_kl25z/pinmux.c create mode 100644 dts/arm/frdm_kl25z.dts create mode 100644 dts/arm/frdm_kl25z.fixup create mode 100644 dts/arm/nxp/nxp_kl25z.dtsi diff --git a/boards/arm/frdm_kl25z/Kconfig.board b/boards/arm/frdm_kl25z/Kconfig.board new file mode 100644 index 00000000000..954cf64c7e4 --- /dev/null +++ b/boards/arm/frdm_kl25z/Kconfig.board @@ -0,0 +1,11 @@ +# Kconfig - FRDM-KL25Z board +# +# Copyright (c) 2017, NXP +# +# SPDX-License-Identifier: Apache-2.0 +# + +config BOARD_FRDM_KL25Z + bool "NXP FRDM-KL25Z" + depends on SOC_SERIES_KINETIS_KL2X + select SOC_PART_NUMBER_MKL25Z128VLK4 diff --git a/boards/arm/frdm_kl25z/Kconfig.defconfig b/boards/arm/frdm_kl25z/Kconfig.defconfig new file mode 100644 index 00000000000..5f8e2a005d8 --- /dev/null +++ b/boards/arm/frdm_kl25z/Kconfig.defconfig @@ -0,0 +1,108 @@ +# Kconfig - FRDM-KL25Z board +# +# Copyright (c) 2017, NXP +# +# SPDX-License-Identifier: Apache-2.0 +# + +if BOARD_FRDM_KL25Z + +config BOARD + default frdm_kl25z + +config OSC_XTAL0_FREQ + default 8000000 + +config MCG_PRDIV0 + default 0x01 + +config MCG_VDIV0 + default 0x00 + +config MCG_FRDIV + default 5 + +config MCG_FCRDIV + default 0 + +config PINMUX + def_bool y + +if PINMUX_MCUX + +config PINMUX_MCUX_PORTA + def_bool y + +config PINMUX_MCUX_PORTB + def_bool y + +config PINMUX_MCUX_PORTC + def_bool y if SPI_0 + +config PINMUX_MCUX_PORTD + def_bool y + +config PINMUX_MCUX_PORTE + def_bool y if I2C_0 + +endif # PINMUX_MCUX + +if GPIO_MCUX + +config GPIO_MCUX_PORTA + def_bool y + +config GPIO_MCUX_PORTB + def_bool y + +config GPIO_MCUX_PORTC + def_bool n + +config GPIO_MCUX_PORTD + def_bool y + +config GPIO_MCUX_PORTE + def_bool n + +endif # GPIO_MCUX + +if UART_MCUX_LPSCI + +config UART_MCUX_LPSCI_0 + def_bool y if UART_CONSOLE + +endif # UART_MCUX_LPSCI + +if I2C + +config I2C_0 + def_bool y + +if I2C_0 + +config I2C_0_DEFAULT_CFG + default 0x12 + +config I2C_0_IRQ_PRI + default 0 + +endif # I2C_0 + +endif # I2C + +if SPI + +config SPI_0 + def_bool y + +if SPI_0 + +config SPI_0_IRQ_PRI + default 0 + +endif # SPI_0 + +endif # SPI + + +endif # BOARD_FRDM_KL25Z diff --git a/boards/arm/frdm_kl25z/Makefile b/boards/arm/frdm_kl25z/Makefile new file mode 100644 index 00000000000..1e47c1fca7e --- /dev/null +++ b/boards/arm/frdm_kl25z/Makefile @@ -0,0 +1,10 @@ +# Makefile - FRDM-KL25Z board +# +# Copyright (c) 2017, NXP +# +# SPDX-License-Identifier: Apache-2.0 +# + +ccflags-y +=-I$(srctree)/drivers + +obj-$(CONFIG_PINMUX_MCUX) += pinmux.o diff --git a/boards/arm/frdm_kl25z/board.h b/boards/arm/frdm_kl25z/board.h new file mode 100644 index 00000000000..cde0e67b712 --- /dev/null +++ b/boards/arm/frdm_kl25z/board.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2017, NXP + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#ifndef __INC_BOARD_H +#define __INC_BOARD_H + +#include + +/* Push button switch for test purposes */ +#define SW0_TEST_GPIO_NAME CONFIG_GPIO_MCUX_PORTA_NAME +#define SW0_TEST_GPIO_PIN 16 + +/* Push button switch for test purposes */ +#define SW1_TEST_GPIO_NAME CONFIG_GPIO_MCUX_PORTA_NAME +#define SW1_TEST_GPIO_PIN 17 + +/* Red LED */ +#define RED_GPIO_NAME CONFIG_GPIO_MCUX_PORTB_NAME +#define RED_GPIO_PIN 18 + +/* Green LED */ +#define GREEN_GPIO_NAME CONFIG_GPIO_MCUX_PORTB_NAME +#define GREEN_GPIO_PIN 19 + +/* Blue LED */ +#define BLUE_GPIO_NAME CONFIG_GPIO_MCUX_PORTD_NAME +#define BLUE_GPIO_PIN 1 + +/* LED0. There is no physical LED on the board with this name, so create an + * alias to the green LED to make the basic blinky sample work. + */ +#define LED0_GPIO_PORT GREEN_GPIO_NAME +#define LED0_GPIO_PIN GREEN_GPIO_PIN + +/* Push button switch 0. There is no physical switch on the board, + * so an push button must be added to such pins for basic button sample work. + */ +#define SW0_GPIO_NAME SW0_TEST_GPIO_NAME +#define SW0_GPIO_PIN SW0_TEST_GPIO_PIN + +#endif /* __INC_BOARD_H */ diff --git a/boards/arm/frdm_kl25z/doc/frdm_kl25z.jpg b/boards/arm/frdm_kl25z/doc/frdm_kl25z.jpg new file mode 100644 index 0000000000000000000000000000000000000000..29b9e212556d9a01a15c6fe3bf67730b8350631e GIT binary patch literal 15127 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 +#include +#include + +static int frdm_kl25z_pinmux_init(struct device *dev) +{ + ARG_UNUSED(dev); + +#ifdef CONFIG_PINMUX_MCUX_PORTA + struct device *porta = + device_get_binding(CONFIG_PINMUX_MCUX_PORTA_NAME); +#endif +#ifdef CONFIG_PINMUX_MCUX_PORTB + struct device *portb = + device_get_binding(CONFIG_PINMUX_MCUX_PORTB_NAME); +#endif +#if defined(CONFIG_PINMUX_MCUX_PORTC) + struct device *portc = + device_get_binding(CONFIG_PINMUX_MCUX_PORTC_NAME); +#endif +#ifdef CONFIG_PINMUX_MCUX_PORTD + struct device *portd = + device_get_binding(CONFIG_PINMUX_MCUX_PORTD_NAME); +#endif +#if defined(CONFIG_PINMUX_MCUX_PORTE) + struct device *porte = + device_get_binding(CONFIG_PINMUX_MCUX_PORTE_NAME); +#endif + +#ifdef CONFIG_UART_MCUX_LPSCI_0 + /* UART0 RX, TX */ + pinmux_pin_set(porta, 1, PORT_PCR_MUX(kPORT_MuxAlt2)); + pinmux_pin_set(porta, 2, PORT_PCR_MUX(kPORT_MuxAlt2)); +#endif + + /* SW0 and SW1 */ + pinmux_pin_set(porta, 16, PORT_PCR_MUX(kPORT_MuxAsGpio)); + pinmux_pin_set(porta, 17, PORT_PCR_MUX(kPORT_MuxAsGpio)); + + /* Red, green, blue LEDs. */ + pinmux_pin_set(portd, 1, PORT_PCR_MUX(kPORT_MuxAsGpio)); + pinmux_pin_set(portb, 18, PORT_PCR_MUX(kPORT_MuxAsGpio)); + pinmux_pin_set(portb, 19, PORT_PCR_MUX(kPORT_MuxAsGpio)); + +#if defined(CONFIG_SPI_0) + /* SPI0 CLK, MOSI, MISO */ + pinmux_pin_set(portc, 4, PORT_PCR_MUX(kPORT_MuxAlt2)); + pinmux_pin_set(portc, 5, PORT_PCR_MUX(kPORT_MuxAlt2)); + pinmux_pin_set(portc, 6, PORT_PCR_MUX(kPORT_MuxAlt2)); + pinmux_pin_set(portc, 7, PORT_PCR_MUX(kPORT_MuxAlt2)); +#endif + +#if defined(CONFIG_I2C_0) + /* I2C0 SCL, SDA */ + pinmux_pin_set(porte, 24, PORT_PCR_MUX(kPORT_MuxAlt5) + | PORT_PCR_PS_MASK); + pinmux_pin_set(porte, 25, PORT_PCR_MUX(kPORT_MuxAlt5) + | PORT_PCR_PS_MASK); +#endif + + return 0; +} + +SYS_INIT(frdm_kl25z_pinmux_init, PRE_KERNEL_1, CONFIG_PINMUX_INIT_PRIORITY); diff --git a/dts/arm/Makefile b/dts/arm/Makefile index b980b726ba9..67d7c332d9a 100644 --- a/dts/arm/Makefile +++ b/dts/arm/Makefile @@ -1,6 +1,7 @@ ifeq ($(CONFIG_HAS_DTS),y) dtb-$(CONFIG_BOARD_FRDM_K64F) = frdm_k64f.dts_compiled dtb-$(CONFIG_BOARD_FRDM_KW41Z) = frdm_kw41z.dts_compiled +dtb-$(CONFIG_BOARD_FRDM_KL25Z) = frdm_kl25z.dts_compiled dtb-$(CONFIG_BOARD_HEXIWEAR_K64) = hexiwear_k64.dts_compiled dtb-$(CONFIG_BOARD_HEXIWEAR_KW40Z) = hexiwear_kw40z.dts_compiled dtb-$(CONFIG_BOARD_CC3200_LAUNCHXL) = cc3200_launchxl.dts_compiled diff --git a/dts/arm/frdm_kl25z.dts b/dts/arm/frdm_kl25z.dts new file mode 100644 index 00000000000..d8f358fddb5 --- /dev/null +++ b/dts/arm/frdm_kl25z.dts @@ -0,0 +1,23 @@ +/dts-v1/; + +#include + +/ { + model = "NXP Freedom KL25Z board"; + compatible = "nxp,frdm-kl25z", "nxp,kl25z", "nxp,mkl25z4"; + + aliases { + uart_0 = &uart0; + }; + + chosen { + zephyr,sram = &sram0; + zephyr,flash = &flash0; + zephyr,console = &uart0; + }; +}; + +&uart0 { + status = "ok"; + current-speed = <115200>; +}; diff --git a/dts/arm/frdm_kl25z.fixup b/dts/arm/frdm_kl25z.fixup new file mode 100644 index 00000000000..1627806ea7b --- /dev/null +++ b/dts/arm/frdm_kl25z.fixup @@ -0,0 +1 @@ +#define CONFIG_NUM_IRQ_PRIO_BITS ARM_V6M_NVIC_E000E100_ARM_NUM_IRQ_PRIORITY_BITS diff --git a/dts/arm/nxp/nxp_kl25z.dtsi b/dts/arm/nxp/nxp_kl25z.dtsi new file mode 100644 index 00000000000..e43895f682c --- /dev/null +++ b/dts/arm/nxp/nxp_kl25z.dtsi @@ -0,0 +1,32 @@ +#include "armv6-m.dtsi" + +/ { + cpus { + cpu@0 { + compatible = "arm,cortex-m0+"; + }; + }; + + sram0: memory { + compatible = "mmio-sram"; + reg = <0x1FFFF000 0x4000>; + }; + + soc { + flash0: flash@0 { + reg = <0 0x20000>; + }; + + uart0: uart@4006A000 { + compatible = "nxp,kinetis-lpsci"; + reg = <0x4006A000 0xc>; + interrupts = <12 0>; + + status = "disabled"; + }; + }; +}; + +&nvic { + arm,num-irq-priority-bits = <2>; +}; diff --git a/scripts/sanity_chk/arches/arm.ini b/scripts/sanity_chk/arches/arm.ini index 0ce81048ff6..67902c4a56b 100644 --- a/scripts/sanity_chk/arches/arm.ini +++ b/scripts/sanity_chk/arches/arm.ini @@ -7,7 +7,7 @@ platforms = qemu_cortex_m3 frdm_k64f arduino_due nucleo_f103rb stm32_mini_a15 v2m_beetle nucleo_l476rg nrf52840_pca10056 nucleo_f411re stm3210c_eval nucleo_f334r8 stm32373c_eval mps2_an385 frdm_kw41z sam_e70_xplained curie_ble nrf52_blenano2 hexiwear_kw40z - cc3220sf_launchxl + cc3220sf_launchxl frdm_kl25z supported_toolchains = zephyr gccarmemb