File 0004-imx-imx93-91-frdm-add-board-version-print.patch of Package uboot-imx
From 36b2627dfd409d2103267e911c6a4ca172194dc6 Mon Sep 17 00:00:00 2001
From: "haidong.zheng" <haidong.zheng@nxp.com>
Date: Tue, 24 Sep 2024 16:31:17 +0800
Subject: [PATCH 4/4] imx: imx93/91 frdm add board version print
Signed-off-by: haidong.zheng <haidong.zheng@nxp.com>
---
board/freescale/imx91_frdm/imx91_frdm.c | 48 +++++++++++++++++++++++++
board/freescale/imx93_frdm/imx93_frdm.c | 47 ++++++++++++++++++++++++
2 files changed, 95 insertions(+)
diff --git a/board/freescale/imx91_frdm/imx91_frdm.c b/board/freescale/imx91_frdm/imx91_frdm.c
index b8498168533..a5faa55d9c9 100644
--- a/board/freescale/imx91_frdm/imx91_frdm.c
+++ b/board/freescale/imx91_frdm/imx91_frdm.c
@@ -21,6 +21,7 @@
#include <usb.h>
#include <dwc3-uboot.h>
#include <asm/gpio.h>
+#include <adc.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -289,8 +290,55 @@ static void board_gpio_init(void)
dm_gpio_set_value(&ext_pwren_desc, 1);
}
+static int print_board_version(void)
+{
+ int i, ret;
+ struct udevice *dev;
+ unsigned int rev[2];
+ unsigned int data[2];
+
+ ret = uclass_first_device_check(UCLASS_ADC, &dev);
+
+ if (dev) {
+ ret = adc_channel_single_shot(dev->name, 2, &data[0]);
+ if (ret) {
+ printf("BOARD: unknown\n");
+ return 0;
+ }
+ ret = adc_channel_single_shot(dev->name, 3, &data[1]);
+ if (ret) {
+ printf("BOARD: unknown\n");
+ return 0;
+ }
+
+ for (i = 0; i < 2; i++) {
+ if (data[i] < 500)
+ rev[i] = 0;
+ else if (data[i] < 700)
+ rev[i] = 1;
+ else if (data[i] < 1500)
+ rev[i] = 2;
+ else if (data[i] < 2300)
+ rev[i] = 3;
+ else if (data[i] < 3000)
+ rev[i] = 4;
+ else if (data[i] < 3600)
+ rev[i] = 5;
+ else
+ rev[i] = 6;
+ }
+ printf("BOARD: V%d.%d(ADC2:%d,ADC3:%d)\n", rev[0], rev[1], data[0], data[1]);
+ } else {
+ printf("BOARD: unknown\n");
+ }
+
+ return 0;
+}
+
int board_init(void)
{
+ print_board_version();
+
#ifdef CONFIG_USB_TCPC
setup_typec();
#endif
diff --git a/board/freescale/imx93_frdm/imx93_frdm.c b/board/freescale/imx93_frdm/imx93_frdm.c
index 37667d0c06b..1f514faf625 100644
--- a/board/freescale/imx93_frdm/imx93_frdm.c
+++ b/board/freescale/imx93_frdm/imx93_frdm.c
@@ -21,6 +21,7 @@
#include <usb.h>
#include <dwc3-uboot.h>
#include <asm/gpio.h>
+#include <adc.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -263,11 +264,57 @@ static void board_gpio_init(void)
dm_gpio_set_value(&desc, 1);
}
+static int print_board_version(void)
+{
+ int i, ret;
+ struct udevice *dev;
+ unsigned int rev[2];
+ unsigned int data[2];
+
+ ret = uclass_first_device_check(UCLASS_ADC, &dev);
+
+ if (dev) {
+ ret = adc_channel_single_shot(dev->name, 2, &data[0]);
+ if (ret) {
+ printf("BOARD: unknown\n");
+ return 0;
+ }
+ ret = adc_channel_single_shot(dev->name, 3, &data[1]);
+ if (ret) {
+ printf("BOARD: unknown\n");
+ return 0;
+ }
+
+ for (i = 0; i < 2; i++) {
+ if (data[i] < 500)
+ rev[i] = 0;
+ else if (data[i] < 700)
+ rev[i] = 1;
+ else if (data[i] < 1500)
+ rev[i] = 2;
+ else if (data[i] < 2300)
+ rev[i] = 3;
+ else if (data[i] < 3000)
+ rev[i] = 4;
+ else if (data[i] < 3600)
+ rev[i] = 5;
+ else
+ rev[i] = 6;
+ }
+ printf("BOARD: V%d.%d(ADC2:%d,ADC3:%d)\n", rev[0], rev[1], data[0], data[1]);
+ } else {
+ printf("BOARD: unknown\n");
+ }
+
+ return 0;
+}
+
int board_init(void)
{
#ifdef CONFIG_USB_TCPC
setup_typec();
#endif
+ print_board_version();
if (IS_ENABLED(CONFIG_FEC_MXC))
setup_fec();
--
2.25.1