[PATCH v2 10/10] intel_mid: Moved SFI related code to intel_mid_sfi.c
From: Kuppuswamy Sathyanarayanan Moved SFI specific parsing/handling code to intel_mid_sfi.c. This will enable us to reuse our intel-mid code for platforms that supports firmware interfaces other than SFI (like ACPI). Signed-off-by: Kuppuswamy Sathyanarayanan Signed-off-by: David Cohen --- arch/x86/include/asm/intel-mid.h|1 + arch/x86/platform/intel-mid/Makefile|5 +- arch/x86/platform/intel-mid/intel-mid.c | 450 - arch/x86/platform/intel-mid/intel_mid_sfi.c | 485 +++ 4 files changed, 489 insertions(+), 452 deletions(-) create mode 100644 arch/x86/platform/intel-mid/intel_mid_sfi.c diff --git a/arch/x86/include/asm/intel-mid.h b/arch/x86/include/asm/intel-mid.h index afc282a..358e0d2 100644 --- a/arch/x86/include/asm/intel-mid.h +++ b/arch/x86/include/asm/intel-mid.h @@ -18,6 +18,7 @@ extern int intel_mid_pci_init(void); extern int get_gpio_by_name(const char *name); extern void intel_scu_device_register(struct platform_device *pdev); extern int __init sfi_parse_mrtc(struct sfi_table_header *table); +extern int __init sfi_parse_mtmr(struct sfi_table_header *table); extern int sfi_mrtc_num; extern struct sfi_rtc_table_entry sfi_mrtc_array[]; diff --git a/arch/x86/platform/intel-mid/Makefile b/arch/x86/platform/intel-mid/Makefile index 36323ee..9a6b6c3 100644 --- a/arch/x86/platform/intel-mid/Makefile +++ b/arch/x86/platform/intel-mid/Makefile @@ -1,8 +1,9 @@ obj-$(CONFIG_X86_INTEL_MID) += intel-mid.o obj-$(CONFIG_X86_INTEL_MID)+= intel_mid_vrtc.o obj-$(CONFIG_EARLY_PRINTK_INTEL_MID) += early_printk_intel_mid.o - +# SFI specific code +obj-$(CONFIG_SFI) += intel_mid_sfi.o # BOARD files obj-$(CONFIG_X86_INTEL_MID) += board.o # platform configuration for board devices -obj-y += device_libs/ \ No newline at end of file +obj-y += device_libs/ diff --git a/arch/x86/platform/intel-mid/intel-mid.c b/arch/x86/platform/intel-mid/intel-mid.c index 0ac2bd6..a08541a 100644 --- a/arch/x86/platform/intel-mid/intel-mid.c +++ b/arch/x86/platform/intel-mid/intel-mid.c @@ -18,19 +18,9 @@ #include #include #include -#include -#include -#include -#include -#include -#include -#include #include #include #include -#include -#include -#include #include #include @@ -69,17 +59,9 @@ enum intel_mid_timer_options intel_mid_timer_options; -static u32 sfi_mtimer_usage[SFI_MTMR_MAX_NUM]; -static struct sfi_timer_table_entry sfi_mtimer_array[SFI_MTMR_MAX_NUM]; enum intel_mid_cpu_type __intel_mid_cpu_chip; EXPORT_SYMBOL_GPL(__intel_mid_cpu_chip); -int sfi_mtimer_num; - -struct sfi_rtc_table_entry sfi_mrtc_array[SFI_MRTC_MAX]; -EXPORT_SYMBOL_GPL(sfi_mrtc_array); -int sfi_mrtc_num; - static void intel_mid_power_off(void) { } @@ -89,114 +71,6 @@ static void intel_mid_reboot(void) intel_scu_ipc_simple_command(IPCMSG_COLD_BOOT, 0); } -/* parse all the mtimer info to a static mtimer array */ -static int __init sfi_parse_mtmr(struct sfi_table_header *table) -{ - struct sfi_table_simple *sb; - struct sfi_timer_table_entry *pentry; - struct mpc_intsrc mp_irq; - int totallen; - - sb = (struct sfi_table_simple *)table; - if (!sfi_mtimer_num) { - sfi_mtimer_num = SFI_GET_NUM_ENTRIES(sb, - struct sfi_timer_table_entry); - pentry = (struct sfi_timer_table_entry *) sb->pentry; - totallen = sfi_mtimer_num * sizeof(*pentry); - memcpy(sfi_mtimer_array, pentry, totallen); - } - - pr_debug("SFI MTIMER info (num = %d):\n", sfi_mtimer_num); - pentry = sfi_mtimer_array; - for (totallen = 0; totallen < sfi_mtimer_num; totallen++, pentry++) { - pr_debug("timer[%d]: paddr = 0x%08x, freq = %dHz," - " irq = %d\n", totallen, (u32)pentry->phys_addr, - pentry->freq_hz, pentry->irq); - if (!pentry->irq) - continue; - mp_irq.type = MP_INTSRC; - mp_irq.irqtype = mp_INT; -/* triggering mode edge bit 2-3, active high polarity bit 0-1 */ - mp_irq.irqflag = 5; - mp_irq.srcbus = MP_BUS_ISA; - mp_irq.srcbusirq = pentry->irq; /* IRQ */ - mp_irq.dstapic = MP_APIC_ALL; - mp_irq.dstirq = pentry->irq; - mp_save_irq(_irq); - } - - return 0; -} - -struct sfi_timer_table_entry *sfi_get_mtmr(int hint) -{ - int i; - if (hint < sfi_mtimer_num) { - if (!sfi_mtimer_usage[hint]) { - pr_debug("hint taken for timer %d irq %d\n", - hint, sfi_mtimer_array[hint].irq); - sfi_mtimer_usage[hint] = 1; - return _mtimer_array[hint]; - } - } - /* take
[PATCH v2 10/10] intel_mid: Moved SFI related code to intel_mid_sfi.c
From: Kuppuswamy Sathyanarayanan sathyanarayanan.kuppusw...@linux.intel.com Moved SFI specific parsing/handling code to intel_mid_sfi.c. This will enable us to reuse our intel-mid code for platforms that supports firmware interfaces other than SFI (like ACPI). Signed-off-by: Kuppuswamy Sathyanarayanan sathyanarayanan.kuppusw...@linux.intel.com Signed-off-by: David Cohen david.a.co...@linux.intel.com --- arch/x86/include/asm/intel-mid.h|1 + arch/x86/platform/intel-mid/Makefile|5 +- arch/x86/platform/intel-mid/intel-mid.c | 450 - arch/x86/platform/intel-mid/intel_mid_sfi.c | 485 +++ 4 files changed, 489 insertions(+), 452 deletions(-) create mode 100644 arch/x86/platform/intel-mid/intel_mid_sfi.c diff --git a/arch/x86/include/asm/intel-mid.h b/arch/x86/include/asm/intel-mid.h index afc282a..358e0d2 100644 --- a/arch/x86/include/asm/intel-mid.h +++ b/arch/x86/include/asm/intel-mid.h @@ -18,6 +18,7 @@ extern int intel_mid_pci_init(void); extern int get_gpio_by_name(const char *name); extern void intel_scu_device_register(struct platform_device *pdev); extern int __init sfi_parse_mrtc(struct sfi_table_header *table); +extern int __init sfi_parse_mtmr(struct sfi_table_header *table); extern int sfi_mrtc_num; extern struct sfi_rtc_table_entry sfi_mrtc_array[]; diff --git a/arch/x86/platform/intel-mid/Makefile b/arch/x86/platform/intel-mid/Makefile index 36323ee..9a6b6c3 100644 --- a/arch/x86/platform/intel-mid/Makefile +++ b/arch/x86/platform/intel-mid/Makefile @@ -1,8 +1,9 @@ obj-$(CONFIG_X86_INTEL_MID) += intel-mid.o obj-$(CONFIG_X86_INTEL_MID)+= intel_mid_vrtc.o obj-$(CONFIG_EARLY_PRINTK_INTEL_MID) += early_printk_intel_mid.o - +# SFI specific code +obj-$(CONFIG_SFI) += intel_mid_sfi.o # BOARD files obj-$(CONFIG_X86_INTEL_MID) += board.o # platform configuration for board devices -obj-y += device_libs/ \ No newline at end of file +obj-y += device_libs/ diff --git a/arch/x86/platform/intel-mid/intel-mid.c b/arch/x86/platform/intel-mid/intel-mid.c index 0ac2bd6..a08541a 100644 --- a/arch/x86/platform/intel-mid/intel-mid.c +++ b/arch/x86/platform/intel-mid/intel-mid.c @@ -18,19 +18,9 @@ #include linux/interrupt.h #include linux/scatterlist.h #include linux/sfi.h -#include linux/intel_pmic_gpio.h -#include linux/spi/spi.h -#include linux/i2c.h -#include linux/platform_data/pca953x.h -#include linux/gpio_keys.h -#include linux/input.h -#include linux/platform_device.h #include linux/irq.h #include linux/module.h #include linux/notifier.h -#include linux/mfd/intel_msic.h -#include linux/gpio.h -#include linux/i2c/tc35876x.h #include asm/setup.h #include asm/mpspec_def.h @@ -69,17 +59,9 @@ enum intel_mid_timer_options intel_mid_timer_options; -static u32 sfi_mtimer_usage[SFI_MTMR_MAX_NUM]; -static struct sfi_timer_table_entry sfi_mtimer_array[SFI_MTMR_MAX_NUM]; enum intel_mid_cpu_type __intel_mid_cpu_chip; EXPORT_SYMBOL_GPL(__intel_mid_cpu_chip); -int sfi_mtimer_num; - -struct sfi_rtc_table_entry sfi_mrtc_array[SFI_MRTC_MAX]; -EXPORT_SYMBOL_GPL(sfi_mrtc_array); -int sfi_mrtc_num; - static void intel_mid_power_off(void) { } @@ -89,114 +71,6 @@ static void intel_mid_reboot(void) intel_scu_ipc_simple_command(IPCMSG_COLD_BOOT, 0); } -/* parse all the mtimer info to a static mtimer array */ -static int __init sfi_parse_mtmr(struct sfi_table_header *table) -{ - struct sfi_table_simple *sb; - struct sfi_timer_table_entry *pentry; - struct mpc_intsrc mp_irq; - int totallen; - - sb = (struct sfi_table_simple *)table; - if (!sfi_mtimer_num) { - sfi_mtimer_num = SFI_GET_NUM_ENTRIES(sb, - struct sfi_timer_table_entry); - pentry = (struct sfi_timer_table_entry *) sb-pentry; - totallen = sfi_mtimer_num * sizeof(*pentry); - memcpy(sfi_mtimer_array, pentry, totallen); - } - - pr_debug(SFI MTIMER info (num = %d):\n, sfi_mtimer_num); - pentry = sfi_mtimer_array; - for (totallen = 0; totallen sfi_mtimer_num; totallen++, pentry++) { - pr_debug(timer[%d]: paddr = 0x%08x, freq = %dHz, -irq = %d\n, totallen, (u32)pentry-phys_addr, - pentry-freq_hz, pentry-irq); - if (!pentry-irq) - continue; - mp_irq.type = MP_INTSRC; - mp_irq.irqtype = mp_INT; -/* triggering mode edge bit 2-3, active high polarity bit 0-1 */ - mp_irq.irqflag = 5; - mp_irq.srcbus = MP_BUS_ISA; - mp_irq.srcbusirq = pentry-irq; /* IRQ */ - mp_irq.dstapic = MP_APIC_ALL; - mp_irq.dstirq = pentry-irq; - mp_save_irq(mp_irq); - } - - return 0; -} - -struct sfi_timer_table_entry