mirror of
https://github.com/smaeul/u-boot.git
synced 2025-10-14 21:06:01 +01:00
serial: Make full device search optional
Commit 608b0c4ad4e5ec0c ("serial: Use next serial device if probing fails") added code to search for more serial devices if the default one was not probed correctly. Unfortunately, that breaks omap3_evm. So while investigating why that is the case, let's disable the full search for everyone but bcm283x where it is needed. Fixes: 608b0c4ad4e5ec0c ("serial: Use next serial device if probing fails") Reported-by: Derald D. Woods <woods.technical@gmail.com> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
06bfb9f37c
commit
ae5326a6b3
@ -550,6 +550,7 @@ config ARCH_BCM283X
|
|||||||
select DM_GPIO
|
select DM_GPIO
|
||||||
select OF_CONTROL
|
select OF_CONTROL
|
||||||
select PL01X_SERIAL
|
select PL01X_SERIAL
|
||||||
|
select SERIAL_SEARCH_ALL
|
||||||
imply FAT_WRITE
|
imply FAT_WRITE
|
||||||
|
|
||||||
config TARGET_VEXPRESS_CA15_TC2
|
config TARGET_VEXPRESS_CA15_TC2
|
||||||
|
@ -79,6 +79,18 @@ config SERIAL_RX_BUFFER_SIZE
|
|||||||
help
|
help
|
||||||
The size of the RX buffer (needs to be power of 2)
|
The size of the RX buffer (needs to be power of 2)
|
||||||
|
|
||||||
|
config SERIAL_SEARCH_ALL
|
||||||
|
bool "Search for serial devices after default one failed"
|
||||||
|
depends on DM_SERIAL
|
||||||
|
help
|
||||||
|
The serial subsystem only searches for a single serial device
|
||||||
|
that was instantiated, but does not check whether it was probed
|
||||||
|
correctly. With this option set, we make successful probing
|
||||||
|
mandatory and search for fallback serial devices if the default
|
||||||
|
device does not work.
|
||||||
|
|
||||||
|
If unsure, say N.
|
||||||
|
|
||||||
config SPL_DM_SERIAL
|
config SPL_DM_SERIAL
|
||||||
bool "Enable Driver Model for serial drivers in SPL"
|
bool "Enable Driver Model for serial drivers in SPL"
|
||||||
depends on DM_SERIAL
|
depends on DM_SERIAL
|
||||||
|
@ -74,7 +74,9 @@ static void serial_find_console_or_panic(void)
|
|||||||
{
|
{
|
||||||
const void *blob = gd->fdt_blob;
|
const void *blob = gd->fdt_blob;
|
||||||
struct udevice *dev;
|
struct udevice *dev;
|
||||||
|
#ifdef CONFIG_SERIAL_SEARCH_ALL
|
||||||
int ret;
|
int ret;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (CONFIG_IS_ENABLED(OF_PLATDATA)) {
|
if (CONFIG_IS_ENABLED(OF_PLATDATA)) {
|
||||||
uclass_first_device(UCLASS_SERIAL, &dev);
|
uclass_first_device(UCLASS_SERIAL, &dev);
|
||||||
@ -113,6 +115,8 @@ static void serial_find_console_or_panic(void)
|
|||||||
#else
|
#else
|
||||||
#define INDEX 0
|
#define INDEX 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_SERIAL_SEARCH_ALL
|
||||||
if (!uclass_get_device_by_seq(UCLASS_SERIAL, INDEX, &dev) ||
|
if (!uclass_get_device_by_seq(UCLASS_SERIAL, INDEX, &dev) ||
|
||||||
!uclass_get_device(UCLASS_SERIAL, INDEX, &dev)) {
|
!uclass_get_device(UCLASS_SERIAL, INDEX, &dev)) {
|
||||||
if (dev->flags & DM_FLAG_ACTIVATED) {
|
if (dev->flags & DM_FLAG_ACTIVATED) {
|
||||||
@ -131,6 +135,15 @@ static void serial_find_console_or_panic(void)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
if (!uclass_get_device_by_seq(UCLASS_SERIAL, INDEX, &dev) ||
|
||||||
|
!uclass_get_device(UCLASS_SERIAL, INDEX, &dev) ||
|
||||||
|
(!uclass_first_device(UCLASS_SERIAL, &dev) && dev)) {
|
||||||
|
gd->cur_serial_dev = dev;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#undef INDEX
|
#undef INDEX
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user