mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-17 20:51:39 +00:00
sunxi: psci: avoid error address-of-packed-member
Compiling with GCC 9.2.1 leads to build errors: arch/arm/cpu/armv7/sunxi/psci.c: In function ‘sunxi_cpu_set_power’: arch/arm/cpu/armv7/sunxi/psci.c:144:21: error: taking address of packed member of ‘struct sunxi_cpucfg_reg’ may result in an unaligned pointer value [-Werror=address-of-packed-member] 144 | sunxi_power_switch(&cpucfg->cpu1_pwr_clamp, &cpucfg->cpu1_pwroff, | ^~~~~~~~~~~~~~~~~~~~~~~ arch/arm/cpu/armv7/sunxi/psci.c:144:46: error: taking address of packed member of ‘struct sunxi_cpucfg_reg’ may result in an unaligned pointer value [-Werror=address-of-packed-member] 144 | sunxi_power_switch(&cpucfg->cpu1_pwr_clamp, &cpucfg->cpu1_pwroff, | ^~~~~~~~~~~~~~~~~~~~ Use memcpy() and void* pointers to resolve the problem caused by packing the struct sunxi_cpucfg_reg. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Acked-by: Jagan Teki <jagan@amarulasolutions.com>
This commit is contained in:
parent
643366bcd5
commit
9bd34a69a4
1 changed files with 11 additions and 5 deletions
|
@ -75,7 +75,7 @@ static void __secure __mdelay(u32 ms)
|
||||||
isb();
|
isb();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __secure clamp_release(u32 __maybe_unused *clamp)
|
static void __secure clamp_release(void __maybe_unused *clamp)
|
||||||
{
|
{
|
||||||
#if defined(CONFIG_MACH_SUN6I) || defined(CONFIG_MACH_SUN7I) || \
|
#if defined(CONFIG_MACH_SUN6I) || defined(CONFIG_MACH_SUN7I) || \
|
||||||
defined(CONFIG_MACH_SUN8I_H3) || \
|
defined(CONFIG_MACH_SUN8I_H3) || \
|
||||||
|
@ -90,7 +90,7 @@ static void __secure clamp_release(u32 __maybe_unused *clamp)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __secure clamp_set(u32 __maybe_unused *clamp)
|
static void __secure clamp_set(void __maybe_unused *clamp)
|
||||||
{
|
{
|
||||||
#if defined(CONFIG_MACH_SUN6I) || defined(CONFIG_MACH_SUN7I) || \
|
#if defined(CONFIG_MACH_SUN6I) || defined(CONFIG_MACH_SUN7I) || \
|
||||||
defined(CONFIG_MACH_SUN8I_H3) || \
|
defined(CONFIG_MACH_SUN8I_H3) || \
|
||||||
|
@ -99,22 +99,28 @@ static void __secure clamp_set(u32 __maybe_unused *clamp)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __secure sunxi_power_switch(u32 *clamp, u32 *pwroff, bool on,
|
static void __secure sunxi_power_switch(void *clamp, void *pwroff_ptr, bool on,
|
||||||
int cpu)
|
int cpu)
|
||||||
{
|
{
|
||||||
|
u32 pwroff;
|
||||||
|
|
||||||
|
memcpy(&pwroff, pwroff_ptr, sizeof(u32));
|
||||||
|
|
||||||
if (on) {
|
if (on) {
|
||||||
/* Release power clamp */
|
/* Release power clamp */
|
||||||
clamp_release(clamp);
|
clamp_release(clamp);
|
||||||
|
|
||||||
/* Clear power gating */
|
/* Clear power gating */
|
||||||
clrbits_le32(pwroff, BIT(cpu));
|
clrbits_le32(&pwroff, BIT(cpu));
|
||||||
} else {
|
} else {
|
||||||
/* Set power gating */
|
/* Set power gating */
|
||||||
setbits_le32(pwroff, BIT(cpu));
|
setbits_le32(&pwroff, BIT(cpu));
|
||||||
|
|
||||||
/* Activate power clamp */
|
/* Activate power clamp */
|
||||||
clamp_set(clamp);
|
clamp_set(clamp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memcpy(pwroff_ptr, &pwroff, sizeof(u32));
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_MACH_SUN8I_R40
|
#ifdef CONFIG_MACH_SUN8I_R40
|
||||||
|
|
Loading…
Add table
Reference in a new issue