[U-Boot] [PATCH] board: am335x: Set serial# variable

serial# variable is needed to show device correctly in "fastboot devices" output. It's useful when we have several devices (in fastboot mode) connected to single host and want to choose which one to flash.
Reuse board_serial variable (obtained from EEPROM in set_board_info_env() function) to set serial#. We can't use omap_die_id_serial(), because AM335x lacks DIE_ID, as can be seen from AM335x TRM. The other available option would be to reuse ethaddr variable, but using board_serial seems more reasonable for this purpose.
Signed-off-by: Sam Protsenko semen.protsenko@linaro.org --- board/ti/am335x/board.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/board/ti/am335x/board.c b/board/ti/am335x/board.c index 1a52bffc00..4d421697bf 100644 --- a/board/ti/am335x/board.c +++ b/board/ti/am335x/board.c @@ -732,6 +732,10 @@ int board_late_init(void) */ if (get_device_type() == HS_DEVICE) env_set("boot_fit", "1"); + + /* Reuse serial number set by set_board_info_env() (from EEPROM) */ + if (!env_get("serial#")) + env_set("serial#", env_get("board_serial")); #endif
#if !defined(CONFIG_SPL_BUILD)

On Tue, Feb 27, 2018 at 10:05:43PM +0200, Sam Protsenko wrote:
serial# variable is needed to show device correctly in "fastboot devices" output. It's useful when we have several devices (in fastboot mode) connected to single host and want to choose which one to flash.
Reuse board_serial variable (obtained from EEPROM in set_board_info_env() function) to set serial#. We can't use omap_die_id_serial(), because AM335x lacks DIE_ID, as can be seen from AM335x TRM. The other available option would be to reuse ethaddr variable, but using board_serial seems more reasonable for this purpose.
Signed-off-by: Sam Protsenko semen.protsenko@linaro.org
Does fastboot handle things better or worse than before with board_serial set to "unknown" ? That's a quite likely thing to happen as while serial should be set, but I'm sure there's boards in the wild other than just mine that I might have broken, that do not have the serial field set.

On 27 February 2018 at 22:08, Tom Rini trini@konsulko.com wrote:
On Tue, Feb 27, 2018 at 10:05:43PM +0200, Sam Protsenko wrote:
serial# variable is needed to show device correctly in "fastboot devices" output. It's useful when we have several devices (in fastboot mode) connected to single host and want to choose which one to flash.
Reuse board_serial variable (obtained from EEPROM in set_board_info_env() function) to set serial#. We can't use omap_die_id_serial(), because AM335x lacks DIE_ID, as can be seen from AM335x TRM. The other available option would be to reuse ethaddr variable, but using board_serial seems more reasonable for this purpose.
Signed-off-by: Sam Protsenko semen.protsenko@linaro.org
Does fastboot handle things better or worse than before with board_serial set to "unknown" ? That's a quite likely thing to happen as while serial should be set, but I'm sure there's boards in the wild other than just mine that I might have broken, that do not have the serial field set.
Didn't think that on some boards the board_serial can be set to "unknown" (though I saw it in the code). I can see two ways how the patch can be reworked: 1. If board_serial was set to "unknown", reuse ethaddr variable value for serial#; otherwise use board_serial for serial# 2. Always reuse ethaddr variable value for serial#
Which one seems the best for you? Or maybe I'm missing some better way to set serial#?
Thanks.
-- Tom

On Wed, Feb 28, 2018 at 12:02:13AM +0200, Sam Protsenko wrote:
On 27 February 2018 at 22:08, Tom Rini trini@konsulko.com wrote:
On Tue, Feb 27, 2018 at 10:05:43PM +0200, Sam Protsenko wrote:
serial# variable is needed to show device correctly in "fastboot devices" output. It's useful when we have several devices (in fastboot mode) connected to single host and want to choose which one to flash.
Reuse board_serial variable (obtained from EEPROM in set_board_info_env() function) to set serial#. We can't use omap_die_id_serial(), because AM335x lacks DIE_ID, as can be seen from AM335x TRM. The other available option would be to reuse ethaddr variable, but using board_serial seems more reasonable for this purpose.
Signed-off-by: Sam Protsenko semen.protsenko@linaro.org
Does fastboot handle things better or worse than before with board_serial set to "unknown" ? That's a quite likely thing to happen as while serial should be set, but I'm sure there's boards in the wild other than just mine that I might have broken, that do not have the serial field set.
Didn't think that on some boards the board_serial can be set to "unknown" (though I saw it in the code). I can see two ways how the patch can be reworked:
- If board_serial was set to "unknown", reuse ethaddr variable value
for serial#; otherwise use board_serial for serial# 2. Always reuse ethaddr variable value for serial#
Which one seems the best for you? Or maybe I'm missing some better way to set serial#?
I think a fall-back to ethaddr is best, thanks!

Please review v2.
Thanks.
On 28 February 2018 at 00:03, Tom Rini trini@konsulko.com wrote:
On Wed, Feb 28, 2018 at 12:02:13AM +0200, Sam Protsenko wrote:
On 27 February 2018 at 22:08, Tom Rini trini@konsulko.com wrote:
On Tue, Feb 27, 2018 at 10:05:43PM +0200, Sam Protsenko wrote:
serial# variable is needed to show device correctly in "fastboot devices" output. It's useful when we have several devices (in fastboot mode) connected to single host and want to choose which one to flash.
Reuse board_serial variable (obtained from EEPROM in set_board_info_env() function) to set serial#. We can't use omap_die_id_serial(), because AM335x lacks DIE_ID, as can be seen from AM335x TRM. The other available option would be to reuse ethaddr variable, but using board_serial seems more reasonable for this purpose.
Signed-off-by: Sam Protsenko semen.protsenko@linaro.org
Does fastboot handle things better or worse than before with board_serial set to "unknown" ? That's a quite likely thing to happen as while serial should be set, but I'm sure there's boards in the wild other than just mine that I might have broken, that do not have the serial field set.
Didn't think that on some boards the board_serial can be set to "unknown" (though I saw it in the code). I can see two ways how the patch can be reworked:
- If board_serial was set to "unknown", reuse ethaddr variable value
for serial#; otherwise use board_serial for serial# 2. Always reuse ethaddr variable value for serial#
Which one seems the best for you? Or maybe I'm missing some better way to set serial#?
I think a fall-back to ethaddr is best, thanks!
-- Tom
participants (2)
-
Sam Protsenko
-
Tom Rini