Merge tag 'u-boot-stm32-20210113' of https://gitlab.denx.de/u-boot/custodians/u-boot-stm
- Enable logging features for stm32mp15 boards - Update MAINTAINERS emails for STI and STM32 - Activate OF_LIVE for ST stm32mp15 boards - Switch to MCO2 for PHY 50 MHz clock for DHCOM boards - Correction in stm32prog command on uart: always flush DFU on start command - Update USB-C power detection algorithm on DK boards
This commit is contained in:
@@ -47,28 +47,28 @@
|
||||
config-1 {
|
||||
/* DT+SoM+board model */
|
||||
description = "dh,stm32mp15xx-dhcom-pdk2_somrev0_boardrev0";
|
||||
loadables = "uboot";
|
||||
firmware = "uboot";
|
||||
fdt = "fdt-1";
|
||||
};
|
||||
|
||||
config-2 {
|
||||
/* DT+SoM+board model */
|
||||
description = "dh,stm32mp15xx-dhcom-pdk2_somrev1_boardrev0";
|
||||
loadables = "uboot";
|
||||
firmware = "uboot";
|
||||
fdt = "fdt-1";
|
||||
};
|
||||
|
||||
config-3 {
|
||||
/* DT+SoM+board model */
|
||||
description = "dh,stm32mp15xx-dhcom-drc02_somrev0_boardrev0";
|
||||
loadables = "uboot";
|
||||
firmware = "uboot";
|
||||
fdt = "fdt-2";
|
||||
};
|
||||
|
||||
config-4 {
|
||||
/* DT+SoM+board model */
|
||||
description = "dh,stm32mp15xx-dhcom-drc02_somrev1_boardrev0";
|
||||
loadables = "uboot";
|
||||
firmware = "uboot";
|
||||
fdt = "fdt-2";
|
||||
};
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
config-1 {
|
||||
/* DT+SoM+board model */
|
||||
description = "arrow,stm32mp15xx-avenger96_somrev0_boardrev1";
|
||||
loadables = "uboot";
|
||||
firmware = "uboot";
|
||||
fdt = "fdt-1";
|
||||
};
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
ST BOARDS
|
||||
M: Patrick Delaunay <patrick.delaunay@st.com>
|
||||
M: Patrick Delaunay <patrick.delaunay@foss.st.com>
|
||||
L: uboot-stm32@st-md-mailman.stormreply.com (moderated for non-subscribers)
|
||||
T: git https://gitlab.denx.de/u-boot/custodians/u-boot-stm.git
|
||||
S: Maintained
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include <dm.h>
|
||||
#include <dfu.h>
|
||||
#include <env.h>
|
||||
#include <log.h>
|
||||
#include <memalign.h>
|
||||
#include <misc.h>
|
||||
#include <mtd.h>
|
||||
@@ -199,7 +200,7 @@ static int dfu_pmic_read(u64 offset, u8 *buffer, long *size)
|
||||
ret = 0;
|
||||
}
|
||||
#else
|
||||
pr_err("PMIC update not supported");
|
||||
log_err("PMIC update not supported");
|
||||
ret = -EOPNOTSUPP;
|
||||
#endif
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include <dm.h>
|
||||
#include <env.h>
|
||||
#include <env_internal.h>
|
||||
#include <log.h>
|
||||
#include <mtd.h>
|
||||
#include <mtd_node.h>
|
||||
#include <tee.h>
|
||||
@@ -117,7 +118,7 @@ void board_mtdparts_default(const char **mtdids, const char **mtdparts)
|
||||
for (uclass_first_device(UCLASS_MTD, &dev);
|
||||
dev;
|
||||
uclass_next_device(&dev)) {
|
||||
pr_debug("mtd device = %s\n", dev->name);
|
||||
log_debug("mtd device = %s\n", dev->name);
|
||||
}
|
||||
|
||||
if (nor || nand) {
|
||||
@@ -163,5 +164,5 @@ void board_mtdparts_default(const char **mtdids, const char **mtdparts)
|
||||
mtd_initialized = true;
|
||||
*mtdids = ids;
|
||||
*mtdparts = parts;
|
||||
debug("%s:mtdids=%s & mtdparts=%s\n", __func__, ids, parts);
|
||||
log_debug("mtdids=%s & mtdparts=%s\n", ids, parts);
|
||||
}
|
||||
|
||||
@@ -3,8 +3,11 @@
|
||||
* Copyright (C) 2020, STMicroelectronics - All Rights Reserved
|
||||
*/
|
||||
|
||||
#define LOG_CATEGORY LOGC_BOARD
|
||||
|
||||
#include <common.h>
|
||||
#include <dm.h>
|
||||
#include <log.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/arch/ddr.h>
|
||||
#include <linux/bitops.h>
|
||||
@@ -202,7 +205,7 @@ void stpmic1_init(u32 voltage_mv)
|
||||
|
||||
/* Check if debug is enabled to program PMIC according to the bit */
|
||||
if (readl(TAMP_BOOT_CONTEXT) & TAMP_BOOT_DEBUG_ON) {
|
||||
printf("Keep debug unit ON\n");
|
||||
log_info("Keep debug unit ON\n");
|
||||
|
||||
pmic_clrsetbits(dev, STPMIC1_BUCKS_MRST_CR,
|
||||
STPMIC1_MRST_BUCK_DEBUG,
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
* Copyright (C) 2020, STMicroelectronics - All Rights Reserved
|
||||
*/
|
||||
|
||||
#define LOG_CATEGORY UCLASS_I2C_GENERIC
|
||||
|
||||
#include <common.h>
|
||||
#include <dm.h>
|
||||
#include <i2c.h>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
STIH410-B2260 BOARD
|
||||
M: Patrice Chotard <patrice.chotard@st.com>
|
||||
M: Patrice Chotard <patrice.chotard@foss.st.com>
|
||||
S: Maintained
|
||||
F: board/st/stih410-b2260/
|
||||
F: include/configs/stih410-b2260.h
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
# Copyright (C) 2017, STMicroelectronics - All Rights Reserved
|
||||
# Author(s): Patrice CHOTARD, <patrice.chotard@st.com> for STMicroelectronics.
|
||||
# Author(s): Patrice CHOTARD, <patrice.chotard@foss.st.com> for STMicroelectronics.
|
||||
|
||||
obj-y = board.o
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
STM32F429-EVALUATION BOARD
|
||||
M: Patrice Chotard <patrice.chotard@st.com>
|
||||
M: Patrice Chotard <patrice.chotard@foss.st.com>
|
||||
S: Maintained
|
||||
F: board/st/stm32f429-evaluation/
|
||||
F: include/configs/stm32f429-evaluation.h
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
# Copyright (C) 2018, STMicroelectronics - All Rights Reserved
|
||||
# Author(s): Patrice CHOTARD, <patrice.chotard@st.com> for STMicroelectronics.
|
||||
# Author(s): Patrice CHOTARD, <patrice.chotard@foss.st.com> for STMicroelectronics.
|
||||
|
||||
obj-y := stm32f429-evaluation.o
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
STM32F469-DISCOVERY BOARD
|
||||
M: Patrice Chotard <patrice.chotard@st.com>
|
||||
M: Patrice Chotard <patrice.chotard@foss.st.com>
|
||||
S: Maintained
|
||||
F: board/st/stm32f469-discovery/
|
||||
F: include/configs/stm32f469-discovery.h
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
# Copyright (C) STMicroelectronics SA 2017
|
||||
# Author(s): Patrice CHOTARD, <patrice.chotard@st.com> for STMicroelectronics.
|
||||
# Author(s): Patrice CHOTARD, <patrice.chotard@foss.st.com> for STMicroelectronics.
|
||||
|
||||
obj-y := stm32f469-discovery.o
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
STM32H743 DISCOVERY BOARD
|
||||
M: Patrice Chotard <patrice.chotard@st.com>
|
||||
M: Patrice Chotard <patrice.chotard@foss.st.com>
|
||||
S: Maintained
|
||||
F: board/st/stm32h743-disco
|
||||
F: include/configs/stm32h743-disco.h
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
# Copyright (C) 2017, STMicroelectronics - All Rights Reserved
|
||||
# Author(s): Patrice CHOTARD, <patrice.chotard@st.com> for STMicroelectronics.
|
||||
# Author(s): Patrice CHOTARD, <patrice.chotard@foss.st.com> for STMicroelectronics.
|
||||
|
||||
obj-y := stm32h743-disco.o
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
STM32H743 EVALUATION BOARD
|
||||
M: Patrice Chotard <patrice.chotard@st.com>
|
||||
M: Patrice Chotard <patrice.chotard@foss.st.com>
|
||||
S: Maintained
|
||||
F: board/st/stm32h743-eval
|
||||
F: include/configs/stm32h743-eval.h
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# SPDX-License-Identifier: GPL-2.0+
|
||||
#
|
||||
# Copyright (C) 2017, STMicroelectronics - All Rights Reserved
|
||||
# Author(s): Patrice CHOTARD, <patrice.chotard@st.com> for STMicroelectronics.
|
||||
# Author(s): Patrice CHOTARD, <patrice.chotard@foss.st.com> for STMicroelectronics.
|
||||
|
||||
obj-y := stm32h743-eval.o
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
STM32MP1 BOARD
|
||||
M: Patrick Delaunay <patrick.delaunay@st.com>
|
||||
M: Patrick Delaunay <patrick.delaunay@foss.st.com>
|
||||
L: uboot-stm32@st-md-mailman.stormreply.com (moderated for non-subscribers)
|
||||
T: git https://gitlab.denx.de/u-boot/custodians/u-boot-stm.git
|
||||
S: Maintained
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
/*
|
||||
* Copyright (C) 2018, STMicroelectronics - All Rights Reserved
|
||||
*/
|
||||
|
||||
#define LOG_CATEGORY LOGC_BOARD
|
||||
|
||||
#include <common.h>
|
||||
#include <adc.h>
|
||||
#include <bootm.h>
|
||||
@@ -106,12 +109,11 @@ int checkboard(void)
|
||||
else
|
||||
mode = "basic";
|
||||
|
||||
printf("Board: stm32mp1 in %s mode", mode);
|
||||
fdt_compat = fdt_getprop(gd->fdt_blob, 0, "compatible",
|
||||
&fdt_compat_len);
|
||||
if (fdt_compat && fdt_compat_len)
|
||||
printf(" (%s)", fdt_compat);
|
||||
puts("\n");
|
||||
|
||||
log_info("Board: stm32mp1 in %s mode (%s)\n", mode,
|
||||
fdt_compat && fdt_compat_len ? fdt_compat : "");
|
||||
|
||||
/* display the STMicroelectronics board identification */
|
||||
if (CONFIG_IS_ENABLED(CMD_STBOARD)) {
|
||||
@@ -122,12 +124,12 @@ int checkboard(void)
|
||||
ret = misc_read(dev, STM32_BSEC_SHADOW(BSEC_OTP_BOARD),
|
||||
&otp, sizeof(otp));
|
||||
if (ret > 0 && otp)
|
||||
printf("Board: MB%04x Var%d.%d Rev.%c-%02d\n",
|
||||
otp >> 16,
|
||||
(otp >> 12) & 0xF,
|
||||
(otp >> 4) & 0xF,
|
||||
((otp >> 8) & 0xF) - 1 + 'A',
|
||||
otp & 0xF);
|
||||
log_info("Board: MB%04x Var%d.%d Rev.%c-%02d\n",
|
||||
otp >> 16,
|
||||
(otp >> 12) & 0xF,
|
||||
(otp >> 4) & 0xF,
|
||||
((otp >> 8) & 0xF) - 1 + 'A',
|
||||
otp & 0xF);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -144,17 +146,16 @@ static void board_key_check(void)
|
||||
|
||||
node = ofnode_path("/config");
|
||||
if (!ofnode_valid(node)) {
|
||||
debug("%s: no /config node?\n", __func__);
|
||||
log_debug("no /config node?\n");
|
||||
return;
|
||||
}
|
||||
if (IS_ENABLED(CONFIG_FASTBOOT)) {
|
||||
if (gpio_request_by_name_nodev(node, "st,fastboot-gpios", 0,
|
||||
&gpio, GPIOD_IS_IN)) {
|
||||
debug("%s: could not find a /config/st,fastboot-gpios\n",
|
||||
__func__);
|
||||
log_debug("could not find a /config/st,fastboot-gpios\n");
|
||||
} else {
|
||||
if (dm_gpio_get_value(&gpio)) {
|
||||
puts("Fastboot key pressed, ");
|
||||
log_notice("Fastboot key pressed, ");
|
||||
boot_mode = BOOT_FASTBOOT;
|
||||
}
|
||||
|
||||
@@ -164,18 +165,17 @@ static void board_key_check(void)
|
||||
if (IS_ENABLED(CONFIG_CMD_STM32PROG)) {
|
||||
if (gpio_request_by_name_nodev(node, "st,stm32prog-gpios", 0,
|
||||
&gpio, GPIOD_IS_IN)) {
|
||||
debug("%s: could not find a /config/st,stm32prog-gpios\n",
|
||||
__func__);
|
||||
log_debug("could not find a /config/st,stm32prog-gpios\n");
|
||||
} else {
|
||||
if (dm_gpio_get_value(&gpio)) {
|
||||
puts("STM32Programmer key pressed, ");
|
||||
log_notice("STM32Programmer key pressed, ");
|
||||
boot_mode = BOOT_STM32PROG;
|
||||
}
|
||||
dm_gpio_free(NULL, &gpio);
|
||||
}
|
||||
}
|
||||
if (boot_mode != BOOT_NORMAL) {
|
||||
puts("entering download mode...\n");
|
||||
log_notice("entering download mode...\n");
|
||||
clrsetbits_le32(TAMP_BOOT_CONTEXT,
|
||||
TAMP_BOOT_FORCED_MASK,
|
||||
boot_mode);
|
||||
@@ -198,8 +198,10 @@ int g_dnl_board_usb_cable_connected(void)
|
||||
ret = uclass_get_device_by_driver(UCLASS_USB_GADGET_GENERIC,
|
||||
DM_DRIVER_GET(dwc2_udc_otg),
|
||||
&dwc2_udc_otg);
|
||||
if (!ret)
|
||||
debug("dwc2_udc_otg init failed\n");
|
||||
if (ret) {
|
||||
log_debug("dwc2_udc_otg init failed\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
return dwc2_udc_B_session_valid(dwc2_udc_otg);
|
||||
}
|
||||
@@ -231,13 +233,12 @@ static int get_led(struct udevice **dev, char *led_string)
|
||||
|
||||
led_name = fdtdec_get_config_string(gd->fdt_blob, led_string);
|
||||
if (!led_name) {
|
||||
pr_debug("%s: could not find %s config string\n",
|
||||
__func__, led_string);
|
||||
log_debug("could not find %s config string\n", led_string);
|
||||
return -ENOENT;
|
||||
}
|
||||
ret = led_get_by_label(led_name, dev);
|
||||
if (ret) {
|
||||
debug("%s: get=%d\n", __func__, ret);
|
||||
log_debug("get=%d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -288,24 +289,66 @@ static void __maybe_unused led_error_blink(u32 nb_blink)
|
||||
hang();
|
||||
}
|
||||
|
||||
static int board_check_usb_power(void)
|
||||
static int adc_measurement(ofnode node, int adc_count, int *min_uV, int *max_uV)
|
||||
{
|
||||
struct ofnode_phandle_args adc_args;
|
||||
struct udevice *adc;
|
||||
ofnode node;
|
||||
unsigned int raw;
|
||||
int ret, uV;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < adc_count; i++) {
|
||||
if (ofnode_parse_phandle_with_args(node, "st,adc_usb_pd",
|
||||
"#io-channel-cells", 0, i,
|
||||
&adc_args)) {
|
||||
log_debug("can't find /config/st,adc_usb_pd\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
ret = uclass_get_device_by_ofnode(UCLASS_ADC, adc_args.node,
|
||||
&adc);
|
||||
|
||||
if (ret) {
|
||||
log_err("Can't get adc device(%d)\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = adc_channel_single_shot(adc->name, adc_args.args[0],
|
||||
&raw);
|
||||
if (ret) {
|
||||
log_err("single shot failed for %s[%d]!\n",
|
||||
adc->name, adc_args.args[0]);
|
||||
return ret;
|
||||
}
|
||||
/* Convert to uV */
|
||||
if (!adc_raw_to_uV(adc, raw, &uV)) {
|
||||
if (uV > *max_uV)
|
||||
*max_uV = uV;
|
||||
if (uV < *min_uV)
|
||||
*min_uV = uV;
|
||||
log_debug("%s[%02d] = %u, %d uV\n",
|
||||
adc->name, adc_args.args[0], raw, uV);
|
||||
} else {
|
||||
log_err("Can't get uV value for %s[%d]\n",
|
||||
adc->name, adc_args.args[0]);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int board_check_usb_power(void)
|
||||
{
|
||||
ofnode node;
|
||||
int max_uV = 0;
|
||||
int min_uV = USB_START_HIGH_THRESHOLD_UV;
|
||||
int ret, uV, adc_count;
|
||||
int adc_count, ret;
|
||||
u32 nb_blink;
|
||||
u8 i;
|
||||
|
||||
if (!IS_ENABLED(CONFIG_ADC))
|
||||
return -ENODEV;
|
||||
|
||||
node = ofnode_path("/config");
|
||||
if (!ofnode_valid(node)) {
|
||||
debug("%s: no /config node?\n", __func__);
|
||||
log_debug("no /config node?\n");
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
@@ -319,63 +362,38 @@ static int board_check_usb_power(void)
|
||||
if (adc_count == -ENOENT)
|
||||
return 0;
|
||||
|
||||
pr_err("%s: can't find adc channel (%d)\n", __func__,
|
||||
adc_count);
|
||||
log_err("Can't find adc channel (%d)\n", adc_count);
|
||||
|
||||
return adc_count;
|
||||
}
|
||||
|
||||
for (i = 0; i < adc_count; i++) {
|
||||
if (ofnode_parse_phandle_with_args(node, "st,adc_usb_pd",
|
||||
"#io-channel-cells", 0, i,
|
||||
&adc_args)) {
|
||||
pr_debug("%s: can't find /config/st,adc_usb_pd\n",
|
||||
__func__);
|
||||
/* perform maximum of 2 ADC measurements to detect power supply current */
|
||||
for (i = 0; i < 2; i++) {
|
||||
if (IS_ENABLED(CONFIG_ADC))
|
||||
ret = adc_measurement(node, adc_count, &min_uV, &max_uV);
|
||||
else
|
||||
ret = -ENODEV;
|
||||
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/*
|
||||
* If highest value is inside 1.23 Volts and 2.10 Volts, that means
|
||||
* board is plugged on an USB-C 3A power supply and boot process can
|
||||
* continue.
|
||||
*/
|
||||
if (max_uV > USB_START_LOW_THRESHOLD_UV &&
|
||||
max_uV <= USB_START_HIGH_THRESHOLD_UV &&
|
||||
min_uV <= USB_LOW_THRESHOLD_UV)
|
||||
return 0;
|
||||
}
|
||||
|
||||
ret = uclass_get_device_by_ofnode(UCLASS_ADC, adc_args.node,
|
||||
&adc);
|
||||
|
||||
if (ret) {
|
||||
pr_err("%s: Can't get adc device(%d)\n", __func__,
|
||||
ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = adc_channel_single_shot(adc->name, adc_args.args[0],
|
||||
&raw);
|
||||
if (ret) {
|
||||
pr_err("%s: single shot failed for %s[%d]!\n",
|
||||
__func__, adc->name, adc_args.args[0]);
|
||||
return ret;
|
||||
}
|
||||
/* Convert to uV */
|
||||
if (!adc_raw_to_uV(adc, raw, &uV)) {
|
||||
if (uV > max_uV)
|
||||
max_uV = uV;
|
||||
if (uV < min_uV)
|
||||
min_uV = uV;
|
||||
pr_debug("%s: %s[%02d] = %u, %d uV\n", __func__,
|
||||
adc->name, adc_args.args[0], raw, uV);
|
||||
} else {
|
||||
pr_err("%s: Can't get uV value for %s[%d]\n",
|
||||
__func__, adc->name, adc_args.args[0]);
|
||||
if (i == 0) {
|
||||
log_err("Previous ADC measurements was not the one expected, retry in 20ms\n");
|
||||
mdelay(20); /* equal to max tPDDebounce duration (min 10ms - max 20ms) */
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* If highest value is inside 1.23 Volts and 2.10 Volts, that means
|
||||
* board is plugged on an USB-C 3A power supply and boot process can
|
||||
* continue.
|
||||
*/
|
||||
if (max_uV > USB_START_LOW_THRESHOLD_UV &&
|
||||
max_uV <= USB_START_HIGH_THRESHOLD_UV &&
|
||||
min_uV <= USB_LOW_THRESHOLD_UV)
|
||||
return 0;
|
||||
|
||||
pr_err("****************************************************\n");
|
||||
|
||||
log_notice("****************************************************\n");
|
||||
/*
|
||||
* If highest and lowest value are either both below
|
||||
* USB_LOW_THRESHOLD_UV or both above USB_LOW_THRESHOLD_UV, that
|
||||
@@ -386,8 +404,8 @@ static int board_check_usb_power(void)
|
||||
min_uV > USB_LOW_THRESHOLD_UV) ||
|
||||
(max_uV <= USB_LOW_THRESHOLD_UV &&
|
||||
min_uV <= USB_LOW_THRESHOLD_UV)) {
|
||||
pr_err("* ERROR USB TYPE-C connection in unattached mode *\n");
|
||||
pr_err("* Check that USB TYPE-C cable is correctly plugged *\n");
|
||||
log_notice("* ERROR USB TYPE-C connection in unattached mode *\n");
|
||||
log_notice("* Check that USB TYPE-C cable is correctly plugged *\n");
|
||||
/* with 125ms interval, led will blink for 17.02 years ....*/
|
||||
nb_blink = U32_MAX;
|
||||
}
|
||||
@@ -395,14 +413,14 @@ static int board_check_usb_power(void)
|
||||
if (max_uV > USB_LOW_THRESHOLD_UV &&
|
||||
max_uV <= USB_WARNING_LOW_THRESHOLD_UV &&
|
||||
min_uV <= USB_LOW_THRESHOLD_UV) {
|
||||
pr_err("* WARNING 500mA power supply detected *\n");
|
||||
log_notice("* WARNING 500mA power supply detected *\n");
|
||||
nb_blink = 2;
|
||||
}
|
||||
|
||||
if (max_uV > USB_WARNING_LOW_THRESHOLD_UV &&
|
||||
max_uV <= USB_START_LOW_THRESHOLD_UV &&
|
||||
min_uV <= USB_LOW_THRESHOLD_UV) {
|
||||
pr_err("* WARNING 1.5A power supply detected *\n");
|
||||
log_notice("* WARNING 1.5A power supply detected *\n");
|
||||
nb_blink = 3;
|
||||
}
|
||||
|
||||
@@ -411,14 +429,14 @@ static int board_check_usb_power(void)
|
||||
* supplies more than 3 Amp, this is not compliant with TypeC specification
|
||||
*/
|
||||
if (max_uV > USB_START_HIGH_THRESHOLD_UV) {
|
||||
pr_err("* USB TYPE-C charger not compliant with *\n");
|
||||
pr_err("* specification *\n");
|
||||
pr_err("****************************************************\n\n");
|
||||
log_notice("* USB TYPE-C charger not compliant with *\n");
|
||||
log_notice("* specification *\n");
|
||||
log_notice("****************************************************\n\n");
|
||||
/* with 125ms interval, led will blink for 17.02 years ....*/
|
||||
nb_blink = U32_MAX;
|
||||
} else {
|
||||
pr_err("* Current too low, use a 3A power supply! *\n");
|
||||
pr_err("****************************************************\n\n");
|
||||
log_notice("* Current too low, use a 3A power supply! *\n");
|
||||
log_notice("****************************************************\n\n");
|
||||
}
|
||||
|
||||
led_error_blink(nb_blink);
|
||||
@@ -471,7 +489,7 @@ static void sysconf_init(void)
|
||||
DM_DRIVER_GET(stm32mp_bsec),
|
||||
&dev);
|
||||
if (ret) {
|
||||
pr_err("Can't find stm32mp_bsec driver\n");
|
||||
log_err("Can't find stm32mp_bsec driver\n");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -494,13 +512,13 @@ static void sysconf_init(void)
|
||||
syscfg + SYSCFG_IOCTRLSETR);
|
||||
|
||||
if (!otp)
|
||||
pr_err("product_below_2v5=0: HSLVEN protected by HW\n");
|
||||
log_err("product_below_2v5=0: HSLVEN protected by HW\n");
|
||||
} else {
|
||||
if (otp)
|
||||
pr_err("product_below_2v5=1: HSLVEN update is destructive, no update as VDD>2.7V\n");
|
||||
log_err("product_below_2v5=1: HSLVEN update is destructive, no update as VDD>2.7V\n");
|
||||
}
|
||||
} else {
|
||||
debug("VDD unknown");
|
||||
log_debug("VDD unknown");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -514,7 +532,7 @@ static void sysconf_init(void)
|
||||
val & SYSCFG_CMPCR_READY,
|
||||
1000000);
|
||||
if (ret) {
|
||||
pr_err("SYSCFG: I/O compensation failed, timeout.\n");
|
||||
log_err("SYSCFG: I/O compensation failed, timeout.\n");
|
||||
led_error_blink(10);
|
||||
}
|
||||
|
||||
@@ -533,39 +551,37 @@ static int dk2_i2c1_fix(void)
|
||||
|
||||
node = ofnode_path("/soc/i2c@40012000/hdmi-transmitter@39");
|
||||
if (!ofnode_valid(node)) {
|
||||
pr_debug("%s: no hdmi-transmitter@39 ?\n", __func__);
|
||||
log_debug("no hdmi-transmitter@39 ?\n");
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
if (gpio_request_by_name_nodev(node, "reset-gpios", 0,
|
||||
&hdmi, GPIOD_IS_OUT)) {
|
||||
pr_debug("%s: could not find reset-gpios\n",
|
||||
__func__);
|
||||
log_debug("could not find reset-gpios\n");
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
node = ofnode_path("/soc/i2c@40012000/cs42l51@4a");
|
||||
if (!ofnode_valid(node)) {
|
||||
pr_debug("%s: no cs42l51@4a ?\n", __func__);
|
||||
log_debug("no cs42l51@4a ?\n");
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
if (gpio_request_by_name_nodev(node, "reset-gpios", 0,
|
||||
&audio, GPIOD_IS_OUT)) {
|
||||
pr_debug("%s: could not find reset-gpios\n",
|
||||
__func__);
|
||||
log_debug("could not find reset-gpios\n");
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
/* before power up, insure that HDMI and AUDIO IC is under reset */
|
||||
ret = dm_gpio_set_value(&hdmi, 1);
|
||||
if (ret) {
|
||||
pr_err("%s: can't set_value for hdmi_nrst gpio", __func__);
|
||||
log_err("can't set_value for hdmi_nrst gpio");
|
||||
goto error;
|
||||
}
|
||||
ret = dm_gpio_set_value(&audio, 1);
|
||||
if (ret) {
|
||||
pr_err("%s: can't set_value for audio_nrst gpio", __func__);
|
||||
log_err("can't set_value for audio_nrst gpio");
|
||||
goto error;
|
||||
}
|
||||
|
||||
@@ -732,7 +748,7 @@ int board_interface_eth_init(struct udevice *dev,
|
||||
case PHY_INTERFACE_MODE_MII:
|
||||
value = SYSCFG_PMCSETR_ETH_SEL_GMII_MII |
|
||||
SYSCFG_PMCSETR_ETH_REF_CLK_SEL;
|
||||
debug("%s: PHY_INTERFACE_MODE_MII\n", __func__);
|
||||
log_debug("PHY_INTERFACE_MODE_MII\n");
|
||||
break;
|
||||
case PHY_INTERFACE_MODE_GMII:
|
||||
if (eth_clk_sel_reg)
|
||||
@@ -740,7 +756,7 @@ int board_interface_eth_init(struct udevice *dev,
|
||||
SYSCFG_PMCSETR_ETH_CLK_SEL;
|
||||
else
|
||||
value = SYSCFG_PMCSETR_ETH_SEL_GMII_MII;
|
||||
debug("%s: PHY_INTERFACE_MODE_GMII\n", __func__);
|
||||
log_debug("PHY_INTERFACE_MODE_GMII\n");
|
||||
break;
|
||||
case PHY_INTERFACE_MODE_RMII:
|
||||
if (eth_ref_clk_sel_reg)
|
||||
@@ -748,7 +764,7 @@ int board_interface_eth_init(struct udevice *dev,
|
||||
SYSCFG_PMCSETR_ETH_REF_CLK_SEL;
|
||||
else
|
||||
value = SYSCFG_PMCSETR_ETH_SEL_RMII;
|
||||
debug("%s: PHY_INTERFACE_MODE_RMII\n", __func__);
|
||||
log_debug("PHY_INTERFACE_MODE_RMII\n");
|
||||
break;
|
||||
case PHY_INTERFACE_MODE_RGMII:
|
||||
case PHY_INTERFACE_MODE_RGMII_ID:
|
||||
@@ -759,11 +775,11 @@ int board_interface_eth_init(struct udevice *dev,
|
||||
SYSCFG_PMCSETR_ETH_CLK_SEL;
|
||||
else
|
||||
value = SYSCFG_PMCSETR_ETH_SEL_RGMII;
|
||||
debug("%s: PHY_INTERFACE_MODE_RGMII\n", __func__);
|
||||
log_debug("PHY_INTERFACE_MODE_RGMII\n");
|
||||
break;
|
||||
default:
|
||||
debug("%s: Do not manage %d interface\n",
|
||||
__func__, interface_type);
|
||||
log_debug("Do not manage %d interface\n",
|
||||
interface_type);
|
||||
/* Do not manage others interfaces */
|
||||
return -EINVAL;
|
||||
}
|
||||
@@ -878,14 +894,14 @@ static void board_copro_image_process(ulong fw_image, size_t fw_size)
|
||||
|
||||
if (!rproc_is_initialized())
|
||||
if (rproc_init()) {
|
||||
printf("Remote Processor %d initialization failed\n",
|
||||
id);
|
||||
log_err("Remote Processor %d initialization failed\n",
|
||||
id);
|
||||
return;
|
||||
}
|
||||
|
||||
ret = rproc_load(id, fw_image, fw_size);
|
||||
printf("Load Remote Processor %d with data@addr=0x%08lx %u bytes:%s\n",
|
||||
id, fw_image, fw_size, ret ? " Failed!" : " Success!");
|
||||
log_err("Load Remote Processor %d with data@addr=0x%08lx %u bytes:%s\n",
|
||||
id, fw_image, fw_size, ret ? " Failed!" : " Success!");
|
||||
|
||||
if (!ret)
|
||||
rproc_start(id);
|
||||
|
||||
Reference in New Issue
Block a user