[U-Boot] [PATCH 1/3] arm: Add support for MB86R0x SoCs

Matthias Weißer weisserm at arcor.de
Mon Apr 26 08:55:20 CEST 2010


Am 22.04.2010 14:34, schrieb Wolfgang Denk:
 > Dear Matthias Weisser,
 >
 > In message<1271932257-14618-2-git-send-email-weisserm at arcor.de>  you 
wrote:
 >> This patch adds support for MB86R0x SoCs from Fujitsu
 >>
 >> Signed-off-by: Matthias Weisser<weisserm at arcor.de>
 > ...
 >> --- /dev/null
 >> +++ b/arch/arm/cpu/arm926ejs/mb86r0x/reset.c
 > ...
 >> +void reset_cpu(ulong ignored)
 >> +{
 >> +    writel(0x00000002, MB86R0x_CRG_PHYS_BASE + CRG_CRSR);
 >
 > Please define some symbolic name for the magic constant 0x00000002
 >
 > Also, we do not accept code based on a "base + offset" notation.
 > Please use C structures instead. [Please fix globally.]

I will fix this

 >> +#define TIMER_LOAD_VAL        0xffffffff
 >> +#define TIMER_BASE        MB86R0x_TIMER_PHYS_BASE
 >> +
 >> +#define TIMER_REG_LOAD        (TIMER_BASE + 0)
 >> +#define TIMER_REG_VALUE        (TIMER_BASE + 4)
 >> +#define TIMER_REG_CONTROL    (TIMER_BASE + 8)
 >
 > Create a proper C struct, please!

and this

 >> +/*
 >> + * Offset definitions for DRAM controller
 >> + */
 >> +#define DDR2C_DRIC        0x00
 >> +#define DDR2C_DRIC1        0x02
 >> +#define DDR2C_DRIC2        0x04
 >> +#define DDR2C_DRCA        0x06
 >> +#define DDR2C_DRCM        0x08
 >> +#define DDR2C_DRCST1        0x0a
 >> +#define DDR2C_DRCST2        0x0c
 >> +#define DDR2C_DRCR        0x0e
 >> +#define DDR2C_DRCF        0x20
 >> +#define DDR2C_DRASR        0x30
 >> +#define DDR2C_DRIMS        0x50
 >> +#define DDR2C_DROS        0x60
 >> +#define DDR2C_DRIBSLI        0x62
 >> +#define DDR2C_DRIBSODT1        0x64
 >> +#define DDR2C_DRIBSOCD        0x66
 >> +#define DDR2C_DRIBSOCD2        0x68
 >> +#define DDR2C_DROABA        0x70
 >> +#define DDR2C_DROBV        0x80
 >> +#define DDR2C_DROBS        0x84
 >> +#define DDR2C_DROBSR1        0x86
 >> +#define DDR2C_DROBSR2        0x88
 >> +#define DDR2C_DROBSR3        0x8a
 >> +#define DDR2C_DROBSR4        0x8c
 >> +#define DDR2C_DRIMR1        0x90
 >> +#define DDR2C_DRIMR2        0x92
 >> +#define DDR2C_DRIMR3        0x94
 >> +#define DDR2C_DRIMR4        0x96
 >> +#define DDR2C_DROISR1        0x98
 >> +#define DDR2C_DROISR2        0x9a
 >
 > C struct, please.
 >
 >> +/*
 >> + * Offset definitions Chip Control Module
 >> + */
 >> +#define CCNT_CCID        0x00
 >> +#define CCNT_CSRST        0x1c
 >> +#define CCNT_CIST        0x20
 >> +#define CCNT_CISTM        0x24
 >> +#define CCNT_CMUX_MD        0x30
 >> +#define CCNT_CDCRC        0xec
 >
 > Ditto.
 >
 >> +/*
 >> + * Offset definitions clock reset generator
 >> + */
 >> +#define CRG_CRPR        0x00
 >> +#define CRG_CRWR        0x08
 >> +#define CRG_CRSR        0x0c
 >> +#define CRG_CRDA        0x10
 >> +#define CRG_CRDB        0x14
 >> +#define CRG_CRHA        0x18
 >> +#define CRG_CRPA        0x1c
 >> +#define CRG_CRPB        0x20
 >> +#define CRG_CRHB        0x24
 >> +#define CRG_CRAM        0x28
 >
 > Ditto.

Well, the above three modules are used in assembler code only 
(lowlevel_init.S) and I didn't found a way to use C structs here. What 
would be the right approach in this case? Defining all these registers
as absolute addresses?

I have a also a couple of magic values in the mentioned .S file. Do I 
have to move them also to some symbolic constants?

Thanks for the quick review.

Regards,
Matthias


More information about the U-Boot mailing list