From c8bcf1b01847dcb87f79dd7aef472c154f4a84d4 Mon Sep 17 00:00:00 2001 From: Samuel Chee Date: Mon, 24 Feb 2025 22:42:20 +0000 Subject: [PATCH] boards: arm: v2m_beetle: add pinctrl support for v2m_beetle Adds initial pinctrl support to arm v2m_beetle board target. Signed-off-by: Samuel Chee Signed-off-by: Sudan Landge --- boards/arm/v2m_beetle/CMakeLists.txt | 4 - boards/arm/v2m_beetle/pinmux.c | 144 ------------------ boards/arm/v2m_beetle/v2m_beetle-pinctrl.dtsi | 66 ++++++++ boards/arm/v2m_beetle/v2m_beetle.dts | 10 ++ 4 files changed, 76 insertions(+), 148 deletions(-) delete mode 100644 boards/arm/v2m_beetle/CMakeLists.txt delete mode 100644 boards/arm/v2m_beetle/pinmux.c create mode 100644 boards/arm/v2m_beetle/v2m_beetle-pinctrl.dtsi diff --git a/boards/arm/v2m_beetle/CMakeLists.txt b/boards/arm/v2m_beetle/CMakeLists.txt deleted file mode 100644 index 9bc25bae4c6..00000000000 --- a/boards/arm/v2m_beetle/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ -# SPDX-License-Identifier: Apache-2.0 - -zephyr_library() -zephyr_library_sources(pinmux.c) diff --git a/boards/arm/v2m_beetle/pinmux.c b/boards/arm/v2m_beetle/pinmux.c deleted file mode 100644 index 856239761b8..00000000000 --- a/boards/arm/v2m_beetle/pinmux.c +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright (c) 2016 Linaro Limited - * - * SPDX-License-Identifier: Apache-2.0 - */ - -#include -#include -#include -#include -#include -#include - -/** - * @brief Pinmux driver for ARM V2M Beetle Board - * - * The ARM V2M Beetle Board has 4 GPIO controllers. These controllers - * are responsible for pin muxing, input/output, pull-up, etc. - * - * The GPIO controllers 2 and 3 are reserved and therefore not exposed by - * this driver. - * - * All GPIO controller exposed pins are exposed via the following sequence of - * pin numbers: - * Pins 0 - 15 are for GPIO0 - * Pins 16 - 31 are for GPIO1 - * - * For the exposed GPIO controllers ARM V2M Beetle Board follows the Arduino - * compliant pin out. - */ - -#define CMSDK_AHB_GPIO0_DEV \ - ((volatile struct gpio_cmsdk_ahb *)DT_REG_ADDR(DT_NODELABEL(gpio0))) -#define CMSDK_AHB_GPIO1_DEV \ - ((volatile struct gpio_cmsdk_ahb *)DT_REG_ADDR(DT_NODELABEL(gpio1))) - -/* - * This is the mapping from the ARM V2M Beetle Board pins to GPIO - * controllers. - * - * D0 : P0_0 - * D1 : P0_1 - * D2 : P0_2 - * D3 : P0_3 - * D4 : P0_4 - * D5 : P0_5 - * D6 : P0_6 - * D7 : P0_7 - * D8 : P0_8 - * D9 : P0_9 - * D10 : P0_10 - * D11 : P0_11 - * D12 : P0_12 - * D13 : P0_13 - * D14 : P0_14 - * D15 : P0_15 - * D16 : P1_0 - * D17 : P1_1 - * D18 : P1_2 - * D19 : P1_3 - * D20 : P1_4 - * D21 : P1_5 - * D22 : P1_6 - * D23 : P1_7 - * D24 : P1_8 - * D25 : P1_9 - * D26 : P1_10 - * D27 : P1_11 - * D28 : P1_12 - * D29 : P1_13 - * D30 : P1_14 - * D31 : P1_15 - * - * UART_0_RX : D0 - * UART_0_TX : D1 - * SPI_0_CS : D10 - * SPI_0_MOSI : D11 - * SPI_0_MISO : D12 - * SPI_0_SCLK : D13 - * I2C_0_SCL : D14 - * I2C_0_SDA : D15 - * UART_1_RX : D16 - * UART_1_TX : D17 - * SPI_1_CS : D18 - * SPI_1_MOSI : D19 - * SPI_1_MISO : D20 - * SPI_1_SCK : D21 - * I2C_1_SDA : D22 - * I2C_1_SCL : D23 - * - */ -static void arm_v2m_beetle_pinmux_defaults(void) -{ - uint32_t gpio_0 = 0U; - uint32_t gpio_1 = 0U; - - /* Set GPIO Alternate Functions */ - - gpio_0 = (1<<0); /* Shield 0 UART 0 RXD */ - gpio_0 |= (1<<1); /* Shield 0 UART 0 TXD */ - gpio_0 |= (1<<14); /* Shield 0 I2C SDA SBCON2 */ - gpio_0 |= (1<<15); /* Shield 0 I2C SCL SBCON2 */ - gpio_0 |= (1<<10); /* Shield 0 SPI_3 nCS */ - gpio_0 |= (1<<11); /* Shield 0 SPI_3 MOSI */ - gpio_0 |= (1<<12); /* Shield 0 SPI_3 MISO */ - gpio_0 |= (1<<13); /* Shield 0 SPI_3 SCK */ - - CMSDK_AHB_GPIO0_DEV->altfuncset = gpio_0; - - gpio_1 = (1<<0); /* UART 1 RXD */ - gpio_1 |= (1<<1); /* UART 1 TXD */ - gpio_1 |= (1<<6); /* Shield 1 I2C SDA */ - gpio_1 |= (1<<7); /* Shield 1 I2C SCL */ - gpio_1 |= (1<<2); /* ADC SPI_1 nCS */ - gpio_1 |= (1<<3); /* ADC SPI_1 MOSI */ - gpio_1 |= (1<<4); /* ADC SPI_1 MISO */ - gpio_1 |= (1<<5); /* ADC SPI_1 SCK */ - - gpio_1 |= (1<<8); /* QSPI CS 2 */ - gpio_1 |= (1<<9); /* QSPI CS 1 */ - gpio_1 |= (1<<10); /* QSPI IO 0 */ - gpio_1 |= (1<<11); /* QSPI IO 1 */ - gpio_1 |= (1<<12); /* QSPI IO 2 */ - gpio_1 |= (1<<13); /* QSPI IO 3 */ - gpio_1 |= (1<<14); /* QSPI SCK */ - - CMSDK_AHB_GPIO1_DEV->altfuncset = gpio_1; - - /* Set the ARD_PWR_EN GPIO1[15] as an output */ - CMSDK_AHB_GPIO1_DEV->outenableset |= (0x1 << 15); - /* Set on 3v3 (for ARDUINO HDR compliance) */ - CMSDK_AHB_GPIO1_DEV->data |= (0x1 << 15); -} - -static int arm_v2m_beetle_pinmux_init(void) -{ - - arm_v2m_beetle_pinmux_defaults(); - - return 0; -} - -SYS_INIT(arm_v2m_beetle_pinmux_init, PRE_KERNEL_1, - CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); diff --git a/boards/arm/v2m_beetle/v2m_beetle-pinctrl.dtsi b/boards/arm/v2m_beetle/v2m_beetle-pinctrl.dtsi new file mode 100644 index 00000000000..3bd342daac9 --- /dev/null +++ b/boards/arm/v2m_beetle/v2m_beetle-pinctrl.dtsi @@ -0,0 +1,66 @@ +/* + * Copyright 2025 Arm Limited and/or its affiliates + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#include + +&pinctrl { + /omit-if-no-ref/ uart0_default: uart0_default { + group1 { + pinmux = ; + }; + + group2 { + pinmux = ; + input-enable; + }; + }; + + /omit-if-no-ref/ uart1_default: uart1_default { + group1 { + pinmux = ; + }; + + group2 { + pinmux = ; + input-enable; + }; + }; + + /omit-if-no-ref/ spi0_default: spi0_default { + group1 { + pinmux = , , ; + }; + group2 { + pinmux = ; + input-enable; + }; + }; + + /omit-if-no-ref/ spi1_default: spi1_default { + group1 { + pinmux = , , ; + + }; + group2 { + pinmux = ; + input-enable; + }; + }; + + /omit-if-no-ref/ sbcon0_default: sbcon0_default { + group1 { + pinmux = , ; + input-enable; + }; + }; + + /omit-if-no-ref/ sbcon1_default: sbcon1_default { + group1 { + pinmux = , ; + input-enable; + }; + }; +}; diff --git a/boards/arm/v2m_beetle/v2m_beetle.dts b/boards/arm/v2m_beetle/v2m_beetle.dts index abb2687701c..8e8dc71872a 100644 --- a/boards/arm/v2m_beetle/v2m_beetle.dts +++ b/boards/arm/v2m_beetle/v2m_beetle.dts @@ -74,6 +74,8 @@ interrupts = <0 3>; clocks = <&sysclk &syscon>; current-speed = <115200>; + pinctrl-0 = <&uart0_default>; + pinctrl-names = "default"; }; uart1: uart@40005000 { @@ -82,6 +84,8 @@ interrupts = <2 3>; clocks = <&sysclk &syscon>; current-speed = <115200>; + pinctrl-0 = <&uart1_default>; + pinctrl-names = "default"; }; wdog0: wdog@40008000 { @@ -131,9 +135,15 @@ reg = <0x4001f000 0x1000>; #clock-cells = <0>; }; + + pinctrl: pinctrl { + compatible = "arm,mps3-pinctrl"; + status = "okay"; + }; }; }; &nvic { arm,num-irq-priority-bits = <3>; }; +#include "v2m_beetle-pinctrl.dtsi"