Hi Heinrich,
thanks for the patch
On 30/07/2017 20:59, Heinrich Schuchardt wrote:
The behavior get_clocks depends on the unitialized
value of bootmode.
By setting it to zero we get a defined behavior and
can get rid of superfluos coding.
The problem was indicated by cppcheck.
Signed-off-by: Heinrich Schuchardt <xypron.g...@gmx.de>
---
I have no hardware to test this.
Please, check thorougly before merging.
---
---
arch/m68k/cpu/mcf5227x/speed.c | 10 ++--------
1 file changed, 2 insertions(+), 8 deletions(-)
diff --git a/arch/m68k/cpu/mcf5227x/speed.c b/arch/m68k/cpu/mcf5227x/speed.c
index 44de4a6701..978cc7adc6 100644
--- a/arch/m68k/cpu/mcf5227x/speed.c
+++ b/arch/m68k/cpu/mcf5227x/speed.c
@@ -73,14 +73,8 @@ int get_clocks(void)
ccm_t *ccm = (ccm_t *)MMAP_CCM;
pll_t *pll = (pll_t *)MMAP_PLL;
- int vco, temp, pcrvalue, pfdr;
- u8 bootmode;
-
- pcrvalue = in_be32(&pll->pcr) & 0xFF0F0FFF;
- pfdr = pcrvalue >> 24;
-
- if (pfdr == 0x1E)
- bootmode = 0; /* Normal Mode */
+ int vco, temp, pcrvalue;
+ u8 bootmode = 0; /* Normal Mode */;
#ifdef CONFIG_CF_SBF
bootmode = 3; /* Serial Mode */
sure uninitialized vars are an issue.This change works and make things simpler.
But looking the code i have a doubt now:
this code seems attempting to detect "runtime" the boot mode, getting clocks
from
pll registers already set i.e. form SBF header.
So there can be a case where jumpers (or pull up/down resistors) are set to SBF
(11)
and "bootmode" variable will be set to 3 only if CONFIG_CF_SBF is set, otherwise
it will be 0 and not 3.
Of course, if we try to boot by SBF and CONFIG_CF_SBF is not set, u-boot will
not
boot in anyway, since spi init will be totally missing.
But in case a different "fully runtime" proposal could be:
diff --git a/arch/m68k/cpu/mcf5227x/speed.c b/arch/m68k/cpu/mcf5227x/speed.c
index 44de4a6701..e21c1d574b 100644
--- a/arch/m68k/cpu/mcf5227x/speed.c
+++ b/arch/m68k/cpu/mcf5227x/speed.c
@@ -74,7 +74,7 @@ int get_clocks(void)
ccm_t *ccm = (ccm_t *)MMAP_CCM;
pll_t *pll = (pll_t *)MMAP_PLL;
int vco, temp, pcrvalue, pfdr;
- u8 bootmode;
+ u8 bootmode = 3;
pcrvalue = in_be32(&pll->pcr) & 0xFF0F0FFF;
pfdr = pcrvalue >> 24;
@@ -82,10 +82,6 @@ int get_clocks(void)
if (pfdr == 0x1E)
bootmode = 0; /* Normal Mode */
-#ifdef CONFIG_CF_SBF
- bootmode = 3; /* Serial Mode */
-#endif
-
if (bootmode == 0) {
/* Normal mode */
vco = ((in_be32(&pll->pcr) & 0xFF000000) >> 24) *
CONFIG_SYS_INPUT_CLKSRC;
What do you think ?
Regards,
Angelo Dureghello
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot