Skip to content

Commit d39284f

Browse files
claudiubezneasre
authored andcommitted
power: reset: at91-poweroff: use proper master clock register offset
SAM9X60's PMC uses different offset for master clock register. Add a member of type struct pmc_reg_config in struct reg_config, fill it correspondingly for SAMA5D2 and SAM9X60 and use it in poweroff() function. Signed-off-by: Claudiu Beznea <[email protected]> Acked-by: Nicolas Ferre <[email protected]> Signed-off-by: Sebastian Reichel <[email protected]>
1 parent a4f06df commit d39284f

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

drivers/power/reset/at91-sama5d2_shdwc.c

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,13 @@ struct shdwc_reg_config {
7474
u8 sr_rttwk_shift;
7575
};
7676

77+
struct pmc_reg_config {
78+
u8 mckr;
79+
};
80+
7781
struct reg_config {
7882
struct shdwc_reg_config shdwc;
83+
struct pmc_reg_config pmc;
7984
};
8085

8186
struct shdwc {
@@ -136,9 +141,9 @@ static void at91_poweroff(void)
136141
" str %1, [%0, #" __stringify(AT91_DDRSDRC_LPR) "]\n\t"
137142

138143
/* Switch the master clock source to slow clock. */
139-
"1: ldr r6, [%4, #" __stringify(AT91_PMC_MCKR) "]\n\t"
144+
"1: ldr r6, [%4, %5]\n\t"
140145
" bic r6, r6, #" __stringify(AT91_PMC_CSS) "\n\t"
141-
" str r6, [%4, #" __stringify(AT91_PMC_MCKR) "]\n\t"
146+
" str r6, [%4, %5]\n\t"
142147
/* Wait for clock switch. */
143148
"2: ldr r6, [%4, #" __stringify(AT91_PMC_SR) "]\n\t"
144149
" tst r6, #" __stringify(AT91_PMC_MCKRDY) "\n\t"
@@ -153,7 +158,8 @@ static void at91_poweroff(void)
153158
"r" cpu_to_le32(AT91_DDRSDRC_LPDDR2_PWOFF),
154159
"r" (at91_shdwc->shdwc_base),
155160
"r" cpu_to_le32(AT91_SHDW_KEY | AT91_SHDW_SHDW),
156-
"r" (at91_shdwc->pmc_base)
161+
"r" (at91_shdwc->pmc_base),
162+
"r" (at91_shdwc->rcfg->pmc.mckr)
157163
: "r6");
158164
}
159165

@@ -253,6 +259,9 @@ static const struct reg_config sama5d2_reg_config = {
253259
.sr_rtcwk_shift = 5,
254260
.sr_rttwk_shift = SHDW_CFG_NOT_USED,
255261
},
262+
.pmc = {
263+
.mckr = 0x30,
264+
},
256265
};
257266

258267
static const struct reg_config sam9x60_reg_config = {
@@ -263,6 +272,9 @@ static const struct reg_config sam9x60_reg_config = {
263272
.sr_rtcwk_shift = 5,
264273
.sr_rttwk_shift = 4,
265274
},
275+
.pmc = {
276+
.mckr = 0x28,
277+
},
266278
};
267279

268280
static const struct of_device_id at91_shdwc_of_match[] = {

0 commit comments

Comments
 (0)