diff options
-rw-r--r-- | arch/arm/mach-s3c2440/fiq_c_isr.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-s3c2440/fiq_c_isr.h | 11 |
2 files changed, 19 insertions, 0 deletions
diff --git a/arch/arm/mach-s3c2440/fiq_c_isr.c b/arch/arm/mach-s3c2440/fiq_c_isr.c index 924f1f926cf..148850582b7 100644 --- a/arch/arm/mach-s3c2440/fiq_c_isr.c +++ b/arch/arm/mach-s3c2440/fiq_c_isr.c @@ -230,6 +230,14 @@ static int __init sc32440_fiq_probe(struct platform_device *pdev) if (ret) return ret; + /* + * if wanted, users can defer registration of devices + * that depend on FIQ until after we register, and can use our + * device as parent so suspend-resume ordering is correct + */ + if (pdata->attach_child_devices) + (pdata->attach_child_devices)(&pdev->dev); + fiq_ready = 1; return 0; diff --git a/arch/arm/mach-s3c2440/fiq_c_isr.h b/arch/arm/mach-s3c2440/fiq_c_isr.h index a3a2622b81d..e92b103cdfb 100644 --- a/arch/arm/mach-s3c2440/fiq_c_isr.h +++ b/arch/arm/mach-s3c2440/fiq_c_isr.h @@ -2,12 +2,23 @@ #define _LINUX_FIQ_C_ISR_H #include <mach/regs-irq.h> +#include <linux/platform_device.h> extern unsigned long _fiq_count_fiqs; extern u32 _fiq_ack_mask; extern int _fiq_timer_index; extern u16 _fiq_timer_divisor; +/* platform data */ + +struct sc32440_fiq_platform_data { + /* + * give an opportunity to use us as parent for + * devices that depend on us + */ + void (*attach_child_devices)(struct device *parent_device); +}; + /* This CANNOT be implemented in a module -- it has to be used in code * included in the monolithic kernel */ |