diff options
Diffstat (limited to 'arch/arm/mach-pxa/mfp.c')
-rw-r--r-- | arch/arm/mach-pxa/mfp.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/arch/arm/mach-pxa/mfp.c b/arch/arm/mach-pxa/mfp.c index ec1b2d8f61c4..f5809adce298 100644 --- a/arch/arm/mach-pxa/mfp.c +++ b/arch/arm/mach-pxa/mfp.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <asm/hardware.h> | 22 | #include <asm/hardware.h> |
23 | #include <asm/arch/mfp.h> | 23 | #include <asm/arch/mfp.h> |
24 | #include <asm/arch/mfp-pxa3xx.h> | 24 | #include <asm/arch/mfp-pxa3xx.h> |
25 | #include <asm/arch/pxa3xx-regs.h> | ||
25 | 26 | ||
26 | /* mfp_spin_lock is used to ensure that MFP register configuration | 27 | /* mfp_spin_lock is used to ensure that MFP register configuration |
27 | * (most likely a read-modify-write operation) is atomic, and that | 28 | * (most likely a read-modify-write operation) is atomic, and that |
@@ -223,11 +224,19 @@ static int pxa3xx_mfp_resume(struct sys_device *d) | |||
223 | struct pxa3xx_mfp_pin *p = &mfp_table[pin]; | 224 | struct pxa3xx_mfp_pin *p = &mfp_table[pin]; |
224 | __mfp_config_run(p); | 225 | __mfp_config_run(p); |
225 | } | 226 | } |
227 | |||
228 | /* clear RDH bit when MFP settings are restored | ||
229 | * | ||
230 | * NOTE: the last 3 bits DxS are write-1-to-clear so carefully | ||
231 | * preserve them here in case they will be referenced later | ||
232 | */ | ||
233 | ASCR &= ~(ASCR_RDH | ASCR_D1S | ASCR_D2S | ASCR_D3S); | ||
234 | |||
226 | return 0; | 235 | return 0; |
227 | } | 236 | } |
228 | 237 | ||
229 | static struct sysdev_class mfp_sysclass = { | 238 | static struct sysdev_class mfp_sysclass = { |
230 | set_kset_name("mfp"), | 239 | .name = "mfp", |
231 | .suspend = pxa3xx_mfp_suspend, | 240 | .suspend = pxa3xx_mfp_suspend, |
232 | .resume = pxa3xx_mfp_resume, | 241 | .resume = pxa3xx_mfp_resume, |
233 | }; | 242 | }; |