diff --git a/board/toradex/smarc-imx8mp/smarc-imx8mp.c b/board/toradex/smarc-imx8mp/smarc-imx8mp.c
new file mode 100644
index 0000000..bbe3715
--- /dev/null
+++ b/board/toradex/smarc-imx8mp/smarc-imx8mp.c
@@ -0,0 +1,85 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+/* Copyright (C) 2024 Toradex */
+
+#include <init.h>
+#include <asm/global_data.h>
+#include <asm-generic/gpio.h>
+#include <linux/errno.h>
+
+#include "../common/tdx-cfg-block.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+int board_init(void)
+{
+	return 0;
+}
+
+int board_phys_sdram_size(phys_size_t *size)
+{
+	if (!size)
+		return -EINVAL;
+
+	*size = get_ram_size((void *)PHYS_SDRAM, PHYS_SDRAM_SIZE + PHYS_SDRAM_2_SIZE);
+
+	return 0;
+}
+
+#if IS_ENABLED(CONFIG_OF_LIBFDT) && IS_ENABLED(CONFIG_OF_BOARD_SETUP)
+static bool board_has_wifi(void)
+{
+	struct gpio_desc *desc;
+
+	if (!gpio_hog_lookup_name("BT_UART_RXD_GPIO", &desc))
+		return !!dm_gpio_get_value(desc);
+
+	return true;
+}
+
+/*
+ * Module variants with a Wi-Fi/Bluetooth module use UART3 for Bluetooth,
+ * those without use UART3 as the SMARC SER3 UART.
+ * Test for a Wi-Fi module and if none found reassign UART3 interface to
+ * the SMARC SER3 pins.
+ */
+static void ft_board_assign_uart(void *blob)
+{
+	const char *uart_path = "/soc@0/bus@30800000/spba-bus@30800000/serial@30880000";
+	const char *pinctrl_path = "/soc@0/bus@30000000/pinctrl@30330000/uart3grp";
+	int pinctrl_offset;
+	int uart_offset;
+	int bt_offset;
+	u32 phandle;
+
+	if (board_has_wifi())
+		return;
+
+	uart_offset = fdt_path_offset(blob, uart_path);
+	if (uart_offset < 0)
+		return;
+
+	fdt_delprop(blob, uart_offset, "uart-has-rtscts");
+	bt_offset = fdt_subnode_offset(blob, uart_offset, "bluetooth");
+	if (bt_offset < 0)
+		return;
+
+	fdt_del_node(blob, bt_offset);
+
+	pinctrl_offset = fdt_path_offset(blob, pinctrl_path);
+	if (pinctrl_offset < 0)
+		return;
+
+	phandle = fdt_get_phandle(blob, pinctrl_offset);
+	if (phandle < 0)
+		return;
+
+	fdt_setprop_u32(blob, uart_offset, "pinctrl-0", phandle);
+}
+
+int ft_board_setup(void *blob, struct bd_info *bd)
+{
+	ft_board_assign_uart(blob);
+
+	return ft_common_board_setup(blob, bd);
+}
+#endif
