mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2025-11-28 06:01:22 +01:00
ddr: marvell: axp: align signature of mv_xor_mem_init() with a38x
In arch/arm/mach-mvebu/dram.c we always include axp's xor.h for common
XOR definitions, regardless whether we compile for axp or a38x.
But the declaration of this function has a different signature in axp's
xor.h from the one used in a38x' implementation - one parameter is u64
instead of u32. This can result in wrong argument's being passed to that
function on a38x with no one the wiser.
I discovered this when building U-Boot for Turris Omnia with LTO. The
compiler complains about the different signatures being thrown into the
same linking process:
axp/xor.h:67:5: warning: type of ‘mv_xor_mem_init’ does not match
original declaration [-Wlto-type-mismatch]
67 | int mv_xor_mem_init(u32 chan, u32 start_ptr, u32 block_size,
| ^
a38x/xor.c:165:5: note: type mismatch in parameter 3
165 | int mv_xor_mem_init(u32 chan, u32 start_ptr, unsigned long long
| ^
a38x/xor.c:165:5: note: type ‘long long unsigned int’ should match
type ‘u32’
Fix this by changing the type of the block_size argument in the axp's
implementation and header file to the one used in a38x (and upstream
mv-ddr-marvell).
Signed-off-by: Marek Behún <marek.behun@nic.cz>
Reviewed-by: Stefan Roese <sr@denx.de>
This commit is contained in:
parent
107c3391b9
commit
e5b3e87dfa
@ -152,8 +152,8 @@ static int mv_xor_ctrl_set(u32 chan, u32 xor_ctrl)
|
||||
return MV_OK;
|
||||
}
|
||||
|
||||
int mv_xor_mem_init(u32 chan, u32 start_ptr, u32 block_size, u32 init_val_high,
|
||||
u32 init_val_low)
|
||||
int mv_xor_mem_init(u32 chan, u32 start_ptr, unsigned long long block_size,
|
||||
u32 init_val_high, u32 init_val_low)
|
||||
{
|
||||
u32 tmp;
|
||||
|
||||
|
||||
@ -64,7 +64,7 @@ int mv_xor_state_get(u32 chan);
|
||||
void mv_sys_xor_init(MV_DRAM_INFO *dram_info);
|
||||
void mv_sys_xor_finish(void);
|
||||
int mv_xor_transfer(u32 chan, int xor_type, u32 xor_chain_ptr);
|
||||
int mv_xor_mem_init(u32 chan, u32 start_ptr, u32 block_size, u32 init_val_high,
|
||||
u32 init_val_low);
|
||||
int mv_xor_mem_init(u32 chan, u32 start_ptr, unsigned long long block_size,
|
||||
u32 init_val_high, u32 init_val_low);
|
||||
|
||||
#endif /* __XOR_H */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user