[U-Boot] [PATCH] blackfin: Fix using gd->baudrate before setting its value

Current code uses gd->baudrate before setting its value. Besides, I got below build warning which is introduced by commit ddb5c5be "blackfin: add baudrate to bdinfo".
board.c:235:3: warning: passing argument 1 of 'simple_strtoul' makes pointer from integer without a cast [enabled by default] include/vsprintf.h:27:7: note: expected 'const char *' but argument is of type 'unsigned int'
This patch moves the code using gd->baudrate to be after init_baudrate() call, this ensures we get the baudrate setting before using it.
Signed-off-by: Axel Lin axel.lin@ingics.com --- I forgot to CC u-boot mail list. here is a resend.
Hi, I don't have this hardware to test. I'd appreciate if someone can test it.
Thanks, Axel arch/blackfin/lib/board.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/arch/blackfin/lib/board.c b/arch/blackfin/lib/board.c index f1d5547..9e2e9de 100644 --- a/arch/blackfin/lib/board.c +++ b/arch/blackfin/lib/board.c @@ -231,8 +231,6 @@ static int global_board_data_init(void) bd->bi_sclk = get_sclk(); bd->bi_memstart = CONFIG_SYS_SDRAM_BASE; bd->bi_memsize = CONFIG_SYS_MAX_RAM_SIZE; - bd->bi_baudrate = (gd->baudrate > 0) - ? simple_strtoul(gd->baudrate, NULL, 10) : CONFIG_BAUDRATE;
return 0; } @@ -299,6 +297,7 @@ void board_init_f(ulong bootflag) env_init(); serial_early_puts("Baudrate init\n"); init_baudrate(); + gd->bd->bi_baudrate = gd->baudrate; serial_early_puts("Serial init\n"); serial_init(); serial_initialize();

Dear Axel Lin,
Current code uses gd->baudrate before setting its value. Besides, I got below build warning which is introduced by commit ddb5c5be "blackfin: add baudrate to bdinfo".
board.c:235:3: warning: passing argument 1 of 'simple_strtoul' makes pointer from integer without a cast [enabled by default] include/vsprintf.h:27:7: note: expected 'const char *' but argument is of type 'unsigned int'
This patch moves the code using gd->baudrate to be after init_baudrate() call, this ensures we get the baudrate setting before using it.
Signed-off-by: Axel Lin axel.lin@ingics.com
I forgot to CC u-boot mail list. here is a resend.
Hi, I don't have this hardware to test. I'd appreciate if someone can test it.
Thanks, Axel arch/blackfin/lib/board.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/arch/blackfin/lib/board.c b/arch/blackfin/lib/board.c index f1d5547..9e2e9de 100644 --- a/arch/blackfin/lib/board.c +++ b/arch/blackfin/lib/board.c @@ -231,8 +231,6 @@ static int global_board_data_init(void) bd->bi_sclk = get_sclk(); bd->bi_memstart = CONFIG_SYS_SDRAM_BASE; bd->bi_memsize = CONFIG_SYS_MAX_RAM_SIZE;
- bd->bi_baudrate = (gd->baudrate > 0)
? simple_strtoul(gd->baudrate, NULL, 10) : CONFIG_BAUDRATE;
I'd rather say the fix here is to use (gd->baudrate > 0) ? gd->baudrate ? CONFIG_BAUDRATE ;
Otherwise you're changing the logic of the code and for that, you'd need Mikes' ack.
return 0; } @@ -299,6 +297,7 @@ void board_init_f(ulong bootflag) env_init(); serial_early_puts("Baudrate init\n"); init_baudrate();
- gd->bd->bi_baudrate = gd->baudrate; serial_early_puts("Serial init\n"); serial_init(); serial_initialize();
Best regards, Marek Vasut

2013/6/29 Marek Vasut marex@denx.de:
Dear Axel Lin,
Current code uses gd->baudrate before setting its value. Besides, I got below build warning which is introduced by commit ddb5c5be "blackfin: add baudrate to bdinfo".
board.c:235:3: warning: passing argument 1 of 'simple_strtoul' makes pointer from integer without a cast [enabled by default] include/vsprintf.h:27:7: note: expected 'const char *' but argument is of type 'unsigned int'
This patch moves the code using gd->baudrate to be after init_baudrate() call, this ensures we get the baudrate setting before using it.
Signed-off-by: Axel Lin axel.lin@ingics.com
I forgot to CC u-boot mail list. here is a resend.
Hi, I don't have this hardware to test. I'd appreciate if someone can test it.
Thanks, Axel arch/blackfin/lib/board.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/arch/blackfin/lib/board.c b/arch/blackfin/lib/board.c index f1d5547..9e2e9de 100644 --- a/arch/blackfin/lib/board.c +++ b/arch/blackfin/lib/board.c @@ -231,8 +231,6 @@ static int global_board_data_init(void) bd->bi_sclk = get_sclk(); bd->bi_memstart = CONFIG_SYS_SDRAM_BASE; bd->bi_memsize = CONFIG_SYS_MAX_RAM_SIZE;
bd->bi_baudrate = (gd->baudrate > 0)
? simple_strtoul(gd->baudrate, NULL, 10) : CONFIG_BAUDRATE;
I'd rather say the fix here is to use (gd->baudrate > 0) ? gd->baudrate ? CONFIG_BAUDRATE ;
Otherwise you're changing the logic of the code and for that, you'd need Mikes' ack.
Hi Marek,
It's because gd->baudrate is set in init_baudrate(). And if it is not found in an environment variable, the default is CONFIG_BAUDRATE. It's unlikely gd->baudrate is 0.
So if we have below code: init_baudrate(); gd->bd->bi_baudrate = (gd->baudrate > 0) ? gd->baudrate : CONFIG_BAUDRATE;
In an unlikely case where baudrate environment variable is set to 0, then we have inconsistency setting:
gd->baudrate = 0; gd->bd->bi_baudrate = CONFIG_BAUDRATE;
Comments?
Regards, Axel

Hi Axel,
On Sat, Jun 29, 2013 at 8:34 AM, Axel Lin axel.lin@ingics.com wrote:
Current code uses gd->baudrate before setting its value. Besides, I got below build warning which is introduced by commit ddb5c5be "blackfin: add baudrate to bdinfo".
board.c:235:3: warning: passing argument 1 of 'simple_strtoul' makes pointer from integer without a cast [enabled by default] include/vsprintf.h:27:7: note: expected 'const char *' but argument is of type 'unsigned int'
This patch moves the code using gd->baudrate to be after init_baudrate() call, this ensures we get the baudrate setting before using it.
Signed-off-by: Axel Lin axel.lin@ingics.com
I forgot to CC u-boot mail list. here is a resend.
Hi, I don't have this hardware to test. I'd appreciate if someone can test it.
Thanks, Axel arch/blackfin/lib/board.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/arch/blackfin/lib/board.c b/arch/blackfin/lib/board.c index f1d5547..9e2e9de 100644 --- a/arch/blackfin/lib/board.c +++ b/arch/blackfin/lib/board.c @@ -231,8 +231,6 @@ static int global_board_data_init(void) bd->bi_sclk = get_sclk(); bd->bi_memstart = CONFIG_SYS_SDRAM_BASE; bd->bi_memsize = CONFIG_SYS_MAX_RAM_SIZE;
bd->bi_baudrate = (gd->baudrate > 0)
? simple_strtoul(gd->baudrate, NULL, 10) : CONFIG_BAUDRATE; return 0;
} @@ -299,6 +297,7 @@ void board_init_f(ulong bootflag) env_init(); serial_early_puts("Baudrate init\n"); init_baudrate();
gd->bd->bi_baudrate = gd->baudrate;
I prefer to move this line into init_baudrate().
Regards,
Sonic

2013/7/1 Sonic Zhang sonic.adi@gmail.com:
Hi Axel,
On Sat, Jun 29, 2013 at 8:34 AM, Axel Lin axel.lin@ingics.com wrote:
Current code uses gd->baudrate before setting its value. Besides, I got below build warning which is introduced by commit ddb5c5be "blackfin: add baudrate to bdinfo".
board.c:235:3: warning: passing argument 1 of 'simple_strtoul' makes pointer from integer without a cast [enabled by default] include/vsprintf.h:27:7: note: expected 'const char *' but argument is of type 'unsigned int'
This patch moves the code using gd->baudrate to be after init_baudrate() call, this ensures we get the baudrate setting before using it.
Signed-off-by: Axel Lin axel.lin@ingics.com
I forgot to CC u-boot mail list. here is a resend.
Hi, I don't have this hardware to test. I'd appreciate if someone can test it.
Thanks, Axel arch/blackfin/lib/board.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/arch/blackfin/lib/board.c b/arch/blackfin/lib/board.c index f1d5547..9e2e9de 100644 --- a/arch/blackfin/lib/board.c +++ b/arch/blackfin/lib/board.c @@ -231,8 +231,6 @@ static int global_board_data_init(void) bd->bi_sclk = get_sclk(); bd->bi_memstart = CONFIG_SYS_SDRAM_BASE; bd->bi_memsize = CONFIG_SYS_MAX_RAM_SIZE;
bd->bi_baudrate = (gd->baudrate > 0)
? simple_strtoul(gd->baudrate, NULL, 10) : CONFIG_BAUDRATE; return 0;
} @@ -299,6 +297,7 @@ void board_init_f(ulong bootflag) env_init(); serial_early_puts("Baudrate init\n"); init_baudrate();
gd->bd->bi_baudrate = gd->baudrate;
I prefer to move this line into init_baudrate().
hi Sonic,
$ grep -r "int init_baudrate" -A 4 arch It shows we have the same implementation for all supported architectures.
So I think init_baudrate() may be moved to a common place in the future. I pernsonal prefer keep the code as is in this patch. But if you insist on moving this line into init_baudrate(), I have no problem to send a v2. Just let me know how do you think.
Thanks for the review, Axel

Hi Axel,
On Mon, Jul 1, 2013 at 12:11 PM, Axel Lin axel.lin@ingics.com wrote:
2013/7/1 Sonic Zhang sonic.adi@gmail.com:
Hi Axel,
On Sat, Jun 29, 2013 at 8:34 AM, Axel Lin axel.lin@ingics.com wrote:
Current code uses gd->baudrate before setting its value. Besides, I got below build warning which is introduced by commit ddb5c5be "blackfin: add baudrate to bdinfo".
board.c:235:3: warning: passing argument 1 of 'simple_strtoul' makes pointer from integer without a cast [enabled by default] include/vsprintf.h:27:7: note: expected 'const char *' but argument is of type 'unsigned int'
This patch moves the code using gd->baudrate to be after init_baudrate() call, this ensures we get the baudrate setting before using it.
Signed-off-by: Axel Lin axel.lin@ingics.com
I forgot to CC u-boot mail list. here is a resend.
Hi, I don't have this hardware to test. I'd appreciate if someone can test it.
Thanks, Axel arch/blackfin/lib/board.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/arch/blackfin/lib/board.c b/arch/blackfin/lib/board.c index f1d5547..9e2e9de 100644 --- a/arch/blackfin/lib/board.c +++ b/arch/blackfin/lib/board.c @@ -231,8 +231,6 @@ static int global_board_data_init(void) bd->bi_sclk = get_sclk(); bd->bi_memstart = CONFIG_SYS_SDRAM_BASE; bd->bi_memsize = CONFIG_SYS_MAX_RAM_SIZE;
bd->bi_baudrate = (gd->baudrate > 0)
? simple_strtoul(gd->baudrate, NULL, 10) : CONFIG_BAUDRATE; return 0;
} @@ -299,6 +297,7 @@ void board_init_f(ulong bootflag) env_init(); serial_early_puts("Baudrate init\n"); init_baudrate();
gd->bd->bi_baudrate = gd->baudrate;
I prefer to move this line into init_baudrate().
hi Sonic,
$ grep -r "int init_baudrate" -A 4 arch It shows we have the same implementation for all supported architectures.
So I think init_baudrate() may be moved to a common place in the future. I pernsonal prefer keep the code as is in this patch. But if you insist on moving this line into init_baudrate(), I have no problem to send a v2. Just let me know how do you think.
Yes, please.
Regards,
Sonic
participants (3)
-
Axel Lin
-
Marek Vasut
-
Sonic Zhang