diff options
Diffstat (limited to 'target/linux/coldfire/patches/036-m5445x_pci.patch')
-rw-r--r-- | target/linux/coldfire/patches/036-m5445x_pci.patch | 251 |
1 files changed, 251 insertions, 0 deletions
diff --git a/target/linux/coldfire/patches/036-m5445x_pci.patch b/target/linux/coldfire/patches/036-m5445x_pci.patch new file mode 100644 index 0000000000..abeaad42c3 --- /dev/null +++ b/target/linux/coldfire/patches/036-m5445x_pci.patch @@ -0,0 +1,251 @@ +From da8e8fe3d6ad5eb9589c8e77e7716e4f7e1a7499 Mon Sep 17 00:00:00 2001 +From: Kurt Mahan <kmahan@freescale.com> +Date: Mon, 10 Dec 2007 03:36:05 -0700 +Subject: [PATCH] Coldfire M5445x PCI Bits. + +LTIBName: m5445x-pci +Signed-off-by: Kurt Mahan <kmahan@freescale.com> +--- + arch/m68k/Kconfig | 12 ++++++++++-- + arch/m68k/Makefile | 4 ++++ + arch/m68k/coldfire/config.c | 2 +- + arch/m68k/coldfire/iomap.c | 2 ++ + arch/m68k/coldfire/mcf5445x-devices.c | 9 +++++++++ + arch/m68k/coldfire/mcf5445x-pci.c | 5 +++-- + arch/m68k/coldfire/pci.c | 6 +++--- + arch/m68k/kernel/Makefile | 2 +- + drivers/macintosh/Kconfig | 1 - + drivers/pci/Makefile | 1 + + include/asm-m68k/io.h | 13 ++++++++++++- + include/asm-m68k/pci.h | 2 ++ + 12 files changed, 48 insertions(+), 11 deletions(-) + +--- a/arch/m68k/Kconfig ++++ b/arch/m68k/Kconfig +@@ -11,6 +11,14 @@ config MMU + bool + default y + ++config GENERIC_TIME ++ bool ++ default n ++ ++config GENERIC_CLOCKEVENTS ++ bool ++ default n ++ + config RWSEM_GENERIC_SPINLOCK + bool + default y +@@ -48,7 +56,7 @@ config ARCH_MAY_HAVE_PC_FDC + default y + + config NO_IOPORT +- def_bool y ++ def_bool !M54455 + + config NO_DMA + def_bool SUN3 +@@ -159,7 +167,7 @@ config HADES + + config PCI + bool +- depends on HADES ++ depends on HADES || M54455 + default y + help + Find out whether you have a PCI motherboard. PCI is the name of a +--- a/arch/m68k/Makefile ++++ b/arch/m68k/Makefile +@@ -32,6 +32,10 @@ ifdef CONFIG_SUN3 + LDFLAGS_vmlinux = -N + endif + ++ifdef CONFIG_COLDFIRE ++# LDFLAGS_vmlinux = --verbose ++endif ++ + CHECKFLAGS += -D__mc68000__ + + # without -fno-strength-reduce the 53c7xx.c driver fails ;-( +--- a/arch/m68k/coldfire/config.c ++++ b/arch/m68k/coldfire/config.c +@@ -252,7 +252,7 @@ void __init coldfire_sched_init(irq_hand + MCF_DTIM_DTMR_FRR | MCF_DTIM_DTMR_RST_EN, \ + MCF_DTIM0_DTMR); + +- request_irq(mcf_timervector, handler, SA_INTERRUPT, \ ++ request_irq(mcf_timervector, handler, IRQF_DISABLED, \ + "timer", (void *)MCF_DTIM0_DTMR); + + settimericr(1, mcf_timerlevel); +--- a/arch/m68k/coldfire/iomap.c ++++ b/arch/m68k/coldfire/iomap.c +@@ -12,6 +12,7 @@ + #include <linux/pci.h> + #include <asm/io.h> + ++#if 0 + void __iomem *__attribute__ ((weak)) + ioport_map(unsigned long port, unsigned int len) + { +@@ -52,3 +53,4 @@ void pci_iounmap(struct pci_dev *dev, vo + /* Nothing .. */ + } + EXPORT_SYMBOL(ioport_unmap); ++#endif +--- a/arch/m68k/coldfire/mcf5445x-devices.c ++++ b/arch/m68k/coldfire/mcf5445x-devices.c +@@ -75,10 +75,19 @@ static int ata_get_clk_rate(void) + return MCF_BUSCLK; + } + ++/* JKM -- move these to a header file */ ++#define MCF_IDE_DMA_WATERMARK 32 /* DMA watermark level in bytes */ ++#define MCF_IDE_DMA_BD_NR (512/3/4) /* number of BDs per channel */ ++ + static struct fsl_ata_platform_data ata_data = { + .init = ata_init, + .exit = ata_exit, + .get_clk_rate = ata_get_clk_rate, ++#ifdef CONFIG_PATA_FSL_USE_DMA ++ .udma_mask = 0x0F, /* the board handles up to UDMA3 */ ++ .fifo_alarm = MCF_IDE_DMA_WATERMARK / 2, ++ .max_sg = MCF_IDE_DMA_BD_NR, ++#endif + }; + + static struct resource pata_fsl_resources[] = { +--- a/arch/m68k/coldfire/mcf5445x-pci.c ++++ b/arch/m68k/coldfire/mcf5445x-pci.c +@@ -8,6 +8,7 @@ + */ + + #include <linux/delay.h> ++#include <linux/interrupt.h> + #include <linux/pci.h> + + #include <asm/mcfsim.h> +@@ -76,7 +77,7 @@ void mcf5445x_pci_dumpregs(void); + #endif + + /* +- * static void mcf5445x_conf_device(struct pci_dev *dev) ++ * mcf5445x_conf_device(struct pci_dev *dev) + * + * Machine dependent Configure the given device. + * +@@ -84,7 +85,7 @@ void mcf5445x_pci_dumpregs(void); + * + * dev - the pci device. + */ +-void __init ++void + mcf5445x_conf_device(struct pci_dev *dev) + { + set_fpga(FPGA_PCI_IRQ_ENABLE, 0x0f); +--- a/arch/m68k/coldfire/pci.c ++++ b/arch/m68k/coldfire/pci.c +@@ -56,7 +56,7 @@ struct pci_ops pci_root_ops = { + * + * Initialize the pcibios based on cmd line params. + */ +-char * __init ++char * + pcibios_setup(char *str) + { + if (!strcmp(str, "debug")) { +@@ -124,7 +124,7 @@ pcibios_map_irq(struct pci_dev *dev, u8 + * + * Update a PCI interrupt. + */ +-void __init ++void + pcibios_update_irq(struct pci_dev *dev, int irq) + { + pci_write_config_byte(dev, PCI_INTERRUPT_LINE, irq); +@@ -171,7 +171,7 @@ pcibios_enable_device(struct pci_dev *de + /* + * pcibios_fixup_bus(struct pci_bus *bus) + */ +-void __init ++void + pcibios_fixup_bus(struct pci_bus *bus) + { + struct pci_dev *dev = bus->self; +--- a/arch/m68k/kernel/Makefile ++++ b/arch/m68k/kernel/Makefile +@@ -9,6 +9,7 @@ else + ifndef CONFIG_COLDFIRE + extra-y := head.o vmlinux.lds + obj-y := entry.o signal.o traps.o ints.o ++ obj-$(CONFIG_PCI) += bios32.o + else # CONFIG_COLDFIRE + extra-y := ../coldfire/head.o vmlinux.lds + endif +@@ -19,7 +20,6 @@ obj-y += process.o ptrace.o module.o \ + + devres-y = ../../../kernel/irq/devres.o + +-obj-$(CONFIG_PCI) += bios32.o + obj-y$(CONFIG_MMU_SUN3) += dma.o # no, it's not a typo + + EXTRA_AFLAGS := -traditional +--- a/drivers/macintosh/Kconfig ++++ b/drivers/macintosh/Kconfig +@@ -118,7 +118,6 @@ config PMAC_SMU + + config PMAC_APM_EMU + tristate "APM emulation" +- select APM_EMULATION + depends on ADB_PMU && PM && PPC32 + + config PMAC_MEDIABAY +--- a/drivers/pci/Makefile ++++ b/drivers/pci/Makefile +@@ -39,6 +39,7 @@ obj-$(CONFIG_PPC) += setup-bus.o + obj-$(CONFIG_MIPS) += setup-bus.o setup-irq.o + obj-$(CONFIG_X86_VISWS) += setup-irq.o + obj-$(CONFIG_MN10300) += setup-bus.o ++obj-$(CONFIG_M54455) += setup-bus.o setup-irq.o + + # + # ACPI Related PCI FW Functions +--- a/include/asm-m68k/io.h ++++ b/include/asm-m68k/io.h +@@ -306,7 +306,18 @@ static inline void isa_delay(void) + #define outw(val,port) out_le16((port),(val)) + #define inl(port) in_le32(port) + #define outl(val,port) out_le32((port),(val)) +- ++#define insb(port, buf, nr) \ ++ raw_insb((u8 *)(port), (u8 *)(buf), (nr)) ++#define outsb(port, buf, nr) \ ++ raw_outsb((u8 *)(port), (u8 *)(buf), (nr)) ++#define insw(port, buf, nr) \ ++ raw_insw_swapw((u16 *)(port), (u16 *)(buf), (nr)) ++#define outsw(port, buf, nr) \ ++ raw_outsw_swapw((u16 *)(port), (u16 *)(buf), (nr)) ++#define insl(port, buf, nr) \ ++ raw_insw_swapw((u16 *)(port), (u16 *)(buf), (nr)<<1) ++#define outsl(port, buf, nr) \ ++ raw_outsw_swapw((u16 *)(port), (u16 *)(buf), (nr)<<1) + #else + /* + * kernel with both ISA and PCI compiled in, those have +--- a/include/asm-m68k/pci.h ++++ b/include/asm-m68k/pci.h +@@ -42,11 +42,13 @@ pcibios_penalize_isa_irq(int irq, int ac + /* no dynamic PCI IRQ allocation */ + } + ++#if 0 + static inline void + pcibios_add_platform_entries(struct pci_dev *dev) + { + /* no special handling */ + } ++#endif + + static inline void + pcibios_resource_to_bus(struct pci_dev *dev, struct pci_bus_region *region, |