aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreric miao <eric.miao@marvell.com>2008-02-03 21:07:09 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2008-04-19 06:29:04 -0400
commit4be35e236c4a0e346442d98de3e470cf87c4e947 (patch)
tree695484879f89212223df9f9163253bb828a84d54
parent06b2666e89c85640c7eddd67e7bee292a9afeceb (diff)
[ARM] pxa: move mfp sysdev registeration out for suspend/resume order
MFP configurations after resume should be done before the GPIO registers are restored. Move the mfp sysdev registeration to the same place where GPIO and IRQ sysdev(s) are registered to better control the order. Signed-off-by: eric miao <eric.miao@marvell.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r--arch/arm/mach-pxa/generic.h1
-rw-r--r--arch/arm/mach-pxa/mfp-pxa3xx.c20
-rw-r--r--arch/arm/mach-pxa/pxa3xx.c2
3 files changed, 13 insertions, 10 deletions
diff --git a/arch/arm/mach-pxa/generic.h b/arch/arm/mach-pxa/generic.h
index bd2a2356d976..8bca89c4a256 100644
--- a/arch/arm/mach-pxa/generic.h
+++ b/arch/arm/mach-pxa/generic.h
@@ -55,3 +55,4 @@ extern unsigned pxa3xx_get_memclk_frequency_10khz(void);
55 55
56extern struct sysdev_class pxa_irq_sysclass; 56extern struct sysdev_class pxa_irq_sysclass;
57extern struct sysdev_class pxa_gpio_sysclass; 57extern struct sysdev_class pxa_gpio_sysclass;
58extern struct sysdev_class pxa3xx_mfp_sysclass;
diff --git a/arch/arm/mach-pxa/mfp-pxa3xx.c b/arch/arm/mach-pxa/mfp-pxa3xx.c
index f5809adce298..b84c3ba7a8d6 100644
--- a/arch/arm/mach-pxa/mfp-pxa3xx.c
+++ b/arch/arm/mach-pxa/mfp-pxa3xx.c
@@ -234,22 +234,22 @@ static int pxa3xx_mfp_resume(struct sys_device *d)
234 234
235 return 0; 235 return 0;
236} 236}
237#else
238#define pxa3xx_mfp_suspend NULL
239#define pxa3xx_mfp_resume NULL
240#endif
237 241
238static struct sysdev_class mfp_sysclass = { 242struct sysdev_class pxa3xx_mfp_sysclass = {
239 .name = "mfp", 243 .name = "mfp",
240 .suspend = pxa3xx_mfp_suspend, 244 .suspend = pxa3xx_mfp_suspend,
241 .resume = pxa3xx_mfp_resume, 245 .resume = pxa3xx_mfp_resume,
242}; 246};
243 247
244static struct sys_device mfp_device = {
245 .id = 0,
246 .cls = &mfp_sysclass,
247};
248
249static int __init mfp_init_devicefs(void) 248static int __init mfp_init_devicefs(void)
250{ 249{
251 sysdev_class_register(&mfp_sysclass); 250 if (cpu_is_pxa3xx())
252 return sysdev_register(&mfp_device); 251 return sysdev_class_register(&pxa3xx_mfp_sysclass);
252
253 return 0;
253} 254}
254device_initcall(mfp_init_devicefs); 255postcore_initcall(mfp_init_devicefs);
255#endif
diff --git a/arch/arm/mach-pxa/pxa3xx.c b/arch/arm/mach-pxa/pxa3xx.c
index eedcec0bf3f0..85b1df3f69c9 100644
--- a/arch/arm/mach-pxa/pxa3xx.c
+++ b/arch/arm/mach-pxa/pxa3xx.c
@@ -532,6 +532,8 @@ static struct sys_device pxa3xx_sysdev[] = {
532 { 532 {
533 .cls = &pxa_irq_sysclass, 533 .cls = &pxa_irq_sysclass,
534 }, { 534 }, {
535 .cls = &pxa3xx_mfp_sysclass,
536 }, {
535 .cls = &pxa_gpio_sysclass, 537 .cls = &pxa_gpio_sysclass,
536 }, 538 },
537}; 539};