summaryrefslogtreecommitdiffstats
path: root/arch/m68k/include/asm/mcfpci.h
diff options
context:
space:
mode:
authorSam Ravnborg <sam@ravnborg.org>2009-01-16 21:58:10 +1000
committerGreg Ungerer <gerg@uclinux.org>2009-01-16 21:58:10 +1000
commit49148020bcb6910ce71417bd990a5ce7017f9bd3 (patch)
treee410cc433a69075a0254ee4000cb10d71df3a641 /arch/m68k/include/asm/mcfpci.h
parentae04d1401577bb63151480a053057de58b8e10bb (diff)
downloadop-kernel-dev-49148020bcb6910ce71417bd990a5ce7017f9bd3.zip
op-kernel-dev-49148020bcb6910ce71417bd990a5ce7017f9bd3.tar.gz
m68k,m68knommu: merge header files
Merge header files for m68k and m68knommu to the single location: arch/m68k/include/asm The majority of this patch was the result of the script that is included in the changelog below. The script was originally written by Arnd Bergman and exten by me to cover a few more files. When the header files differed the script uses the following: The original m68k file is named <file>_mm.h [mm for memory manager] The m68knommu file is named <file>_no.h [no for no memory manager] The files uses the following include guard: This include gaurd works as the m68knommu toolchain set the __uClinux__ symbol - so this should work in userspace too. Merging the header files for m68k and m68knommu exposes the (unexpected?) ABI differences thus it is easier to actually identify these and thus to fix them. The commit has been build tested with both a m68k and a m68knommu toolchain - with success. The commit has also been tested with "make headers_check" and this patch fixes make headers_check for m68knommu. The script used: TARGET=arch/m68k/include/asm SOURCE=arch/m68knommu/include/asm INCLUDE="cachectl.h errno.h fcntl.h hwtest.h ioctls.h ipcbuf.h \ linkage.h math-emu.h md.h mman.h movs.h msgbuf.h openprom.h \ oplib.h poll.h posix_types.h resource.h rtc.h sembuf.h shmbuf.h \ shm.h shmparam.h socket.h sockios.h spinlock.h statfs.h stat.h \ termbits.h termios.h tlb.h types.h user.h" EQUAL="auxvec.h cputime.h device.h emergency-restart.h futex.h \ ioctl.h irq_regs.h kdebug.h local.h mutex.h percpu.h \ sections.h topology.h" NOMUUFILES="anchor.h bootstd.h coldfire.h commproc.h dbg.h \ elia.h flat.h m5206sim.h m520xsim.h m523xsim.h m5249sim.h \ m5272sim.h m527xsim.h m528xsim.h m5307sim.h m532xsim.h \ m5407sim.h m68360_enet.h m68360.h m68360_pram.h m68360_quicc.h \ m68360_regs.h MC68328.h MC68332.h MC68EZ328.h MC68VZ328.h \ mcfcache.h mcfdma.h mcfmbus.h mcfne.h mcfpci.h mcfpit.h \ mcfsim.h mcfsmc.h mcftimer.h mcfuart.h mcfwdebug.h \ nettel.h quicc_simple.h smp.h" FILES="atomic.h bitops.h bootinfo.h bug.h bugs.h byteorder.h cache.h \ cacheflush.h checksum.h current.h delay.h div64.h \ dma-mapping.h dma.h elf.h entry.h fb.h fpu.h hardirq.h hw_irq.h io.h \ irq.h kmap_types.h machdep.h mc146818rtc.h mmu.h mmu_context.h \ module.h page.h page_offset.h param.h pci.h pgalloc.h \ pgtable.h processor.h ptrace.h scatterlist.h segment.h \ setup.h sigcontext.h siginfo.h signal.h string.h system.h swab.h \ thread_info.h timex.h tlbflush.h traps.h uaccess.h ucontext.h \ unaligned.h unistd.h" mergefile() { BASE=${1%.h} git mv ${SOURCE}/$1 ${TARGET}/${BASE}_no.h git mv ${TARGET}/$1 ${TARGET}/${BASE}_mm.h cat << EOF > ${TARGET}/$1 EOF git add ${TARGET}/$1 } set -e mkdir -p ${TARGET} git mv include/asm-m68k/* ${TARGET} rmdir include/asm-m68k git rm ${SOURCE}/Kbuild for F in $INCLUDE $EQUAL; do git rm ${SOURCE}/$F done for F in $NOMUUFILES; do git mv ${SOURCE}/$F ${TARGET}/$F done for F in $FILES ; do mergefile $F done rmdir arch/m68knommu/include/asm rmdir arch/m68knommu/include Cc: Arnd Bergmann <arnd@arndb.de> Cc: Geert Uytterhoeven <geert@linux-m68k.org> Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Diffstat (limited to 'arch/m68k/include/asm/mcfpci.h')
-rw-r--r--arch/m68k/include/asm/mcfpci.h119
1 files changed, 119 insertions, 0 deletions
diff --git a/arch/m68k/include/asm/mcfpci.h b/arch/m68k/include/asm/mcfpci.h
new file mode 100644
index 0000000..f1507dd
--- /dev/null
+++ b/arch/m68k/include/asm/mcfpci.h
@@ -0,0 +1,119 @@
+/****************************************************************************/
+
+/*
+ * mcfpci.h -- PCI bridge on ColdFire eval boards.
+ *
+ * (C) Copyright 2000, Greg Ungerer (gerg@snapgear.com)
+ * (C) Copyright 2000, Lineo Inc. (www.lineo.com)
+ */
+
+/****************************************************************************/
+#ifndef mcfpci_h
+#define mcfpci_h
+/****************************************************************************/
+
+
+#ifdef CONFIG_PCI
+
+/*
+ * Address regions in the PCI address space are not mapped into the
+ * normal memory space of the ColdFire. They must be accessed via
+ * handler routines. This is easy for I/O space (inb/outb/etc) but
+ * needs some code changes to support ordinary memory. Interrupts
+ * also need to be vectored through the PCI handler first, then it
+ * will call the actual driver sub-handlers.
+ */
+
+/*
+ * Un-define all the standard I/O access routines.
+ */
+#undef inb
+#undef inw
+#undef inl
+#undef inb_p
+#undef inw_p
+#undef insb
+#undef insw
+#undef insl
+#undef outb
+#undef outw
+#undef outl
+#undef outb_p
+#undef outw_p
+#undef outsb
+#undef outsw
+#undef outsl
+
+#undef request_irq
+#undef free_irq
+
+#undef bus_to_virt
+#undef virt_to_bus
+
+
+/*
+ * Re-direct all I/O memory accesses functions to PCI specific ones.
+ */
+#define inb pci_inb
+#define inw pci_inw
+#define inl pci_inl
+#define inb_p pci_inb
+#define inw_p pci_inw
+#define insb pci_insb
+#define insw pci_insw
+#define insl pci_insl
+
+#define outb pci_outb
+#define outw pci_outw
+#define outl pci_outl
+#define outb_p pci_outb
+#define outw_p pci_outw
+#define outsb pci_outsb
+#define outsw pci_outsw
+#define outsl pci_outsl
+
+#define request_irq pci_request_irq
+#define free_irq pci_free_irq
+
+#define virt_to_bus pci_virt_to_bus
+#define bus_to_virt pci_bus_to_virt
+
+#define CONFIG_COMEMPCI 1
+
+
+/*
+ * Prototypes of the real PCI functions (defined in bios32.c).
+ */
+unsigned char pci_inb(unsigned int addr);
+unsigned short pci_inw(unsigned int addr);
+unsigned int pci_inl(unsigned int addr);
+void pci_insb(void *addr, void *buf, int len);
+void pci_insw(void *addr, void *buf, int len);
+void pci_insl(void *addr, void *buf, int len);
+
+void pci_outb(unsigned char val, unsigned int addr);
+void pci_outw(unsigned short val, unsigned int addr);
+void pci_outl(unsigned int val, unsigned int addr);
+void pci_outsb(void *addr, void *buf, int len);
+void pci_outsw(void *addr, void *buf, int len);
+void pci_outsl(void *addr, void *buf, int len);
+
+int pci_request_irq(unsigned int irq,
+ void (*handler)(int, void *, struct pt_regs *),
+ unsigned long flags,
+ const char *device,
+ void *dev_id);
+void pci_free_irq(unsigned int irq, void *dev_id);
+
+void *pci_bmalloc(int size);
+void pci_bmfree(void *bmp, int len);
+void pci_copytoshmem(unsigned long bmp, void *src, int size);
+void pci_copyfromshmem(void *dst, unsigned long bmp, int size);
+unsigned long pci_virt_to_bus(volatile void *address);
+void *pci_bus_to_virt(unsigned long address);
+void pci_bmcpyto(void *dst, void *src, int len);
+void pci_bmcpyfrom(void *dst, void *src, int len);
+
+#endif /* CONFIG_PCI */
+/****************************************************************************/
+#endif /* mcfpci_h */
OpenPOWER on IntegriCloud