board: am335x: Set serial# variable

Message ID 20180227200543.2367-1-semen.protsenko@linaro.org
State New
Headers show
Series
  • board: am335x: Set serial# variable
Related show

Commit Message

Sam Protsenko Feb. 27, 2018, 8:05 p.m.
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(+)

Comments

Tom Rini Feb. 27, 2018, 8:08 p.m. | #1
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.

-- 
Tom
Sam Protsenko Feb. 27, 2018, 10:02 p.m. | #2
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
Tom Rini Feb. 27, 2018, 10:03 p.m. | #3
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:

>  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#?


I think a fall-back to ethaddr is best, thanks!

-- 
Tom
Sam Protsenko Feb. 27, 2018, 10:27 p.m. | #4
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:
>>  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#?
>
> I think a fall-back to ethaddr is best, thanks!
>
> --
> Tom

Patch

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)