[U-Boot] [PATCH] pci: Divided pci code of the powerpc

Nobuhiro Iwamatsu iwamatsu at nigauri.org
Fri Aug 29 03:39:49 CEST 2008


A source code of pci is written mainly on powerpc.
Macro uses a pci source code of powerpc because other architecture
(ex. SuperH) doesn't work.

I made asm-ppc/pci.h and moved macro of pci.
Other archtecture need to make the following macro in asm-xxx/pci.h
 #define pci_phys_to_mem(dev, addr)  (addr)
 #define pci_mem_to_phys(dev, addr)  (addr)
 #define pci_phys_to_io(dev, addr)   (addr)
 #define pci_io_to_phys(dev, addr)   (addr)

Or have to make a function for pci address conversion.
However, I want comment because I do not know the other architecture.

Signed-off-by: Nobuhiro Iwamatsu <iwamatsu at nigauri.org>
---
 include/asm-ppc/pci.h |   53 +++++++++++++++++++++++++++++++++++++++++++++++++
 include/asm-sh/pci.h  |    5 ++++
 include/pci.h         |   22 +-------------------
 3 files changed, 59 insertions(+), 21 deletions(-)
 create mode 100644 include/asm-ppc/pci.h

diff --git a/include/asm-ppc/pci.h b/include/asm-ppc/pci.h
new file mode 100644
index 0000000..d5f8475
--- /dev/null
+++ b/include/asm-ppc/pci.h
@@ -0,0 +1,53 @@
+/*
+ * (C) Copyright 2001 Sysgo Real-Time Solutions, GmbH <www.elinos.com>
+ * Andreas Heppel <aheppel at sysgo.de>
+ *
+ * (C) Copyright 2002
+ * Wolfgang Denk, DENX Software Engineering, wd at denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * aloong with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#ifndef _ASM_PCI_H
+#define _ASM_PCI_H
+
+extern phys_addr_t pci_hose_bus_to_phys(struct pci_controller* hose,
+					unsigned long addr, unsigned long flags);
+extern unsigned long pci_hose_phys_to_bus(struct pci_controller* hose,
+					  phys_addr_t addr, unsigned long flags);
+
+#define pci_phys_to_bus(dev, addr, flags) \
+	pci_hose_phys_to_bus(pci_bus_to_hose(PCI_BUS(dev)), (addr), (flags))
+#define pci_bus_to_phys(dev, addr, flags) \
+	pci_hose_bus_to_phys(pci_bus_to_hose(PCI_BUS(dev)), (addr), (flags))
+
+#define pci_phys_to_mem(dev, addr)	pci_phys_to_bus((dev), (addr), PCI_REGION_MEM)
+#define pci_mem_to_phys(dev, addr)	pci_bus_to_phys((dev), (addr), PCI_REGION_MEM)
+#define pci_phys_to_io(dev, addr)	pci_phys_to_bus((dev), (addr), PCI_REGION_IO)
+#define pci_io_to_phys(dev, addr)	pci_bus_to_phys((dev), (addr), PCI_REGION_IO)
+
+#ifdef CONFIG_MPC824X
+extern void pci_mpc824x_init (struct pci_controller *hose);
+#endif
+
+#ifdef CONFIG_MPC85xx
+extern void pci_mpc85xx_init (struct pci_controller *hose);
+#endif
+
+#endif	/* _ASM_PCI_H */
diff --git a/include/asm-sh/pci.h b/include/asm-sh/pci.h
index bc59491..1f24fb6 100644
--- a/include/asm-sh/pci.h
+++ b/include/asm-sh/pci.h
@@ -44,4 +44,9 @@ int pci_sh4_read_config_dword(struct pci_controller *hose,
 int pci_sh4_write_config_dword(struct pci_controller *hose,
 		pci_dev_t dev, int offset, u32 value);

+#define pci_phys_to_mem(dev, addr)	(addr)
+#define pci_mem_to_phys(dev, addr)	(addr)
+#define pci_phys_to_io(dev, addr)	(addr)
+#define pci_io_to_phys(dev, addr)	(addr)
+
 #endif	/* _ASM_PCI_H_ */
diff --git a/include/pci.h b/include/pci.h
index 1c8e216..9b61635 100644
--- a/include/pci.h
+++ b/include/pci.h
@@ -432,21 +432,6 @@ extern __inline__ void pci_set_ops(struct pci_controller *hose,

 extern void pci_setup_indirect(struct pci_controller* hose, u32 cfg_addr, u32 cfg_data);

-extern phys_addr_t pci_hose_bus_to_phys(struct pci_controller* hose,
-					unsigned long addr, unsigned long flags);
-extern unsigned long pci_hose_phys_to_bus(struct pci_controller* hose,
-					  phys_addr_t addr, unsigned long flags);
-
-#define pci_phys_to_bus(dev, addr, flags) \
-	pci_hose_phys_to_bus(pci_bus_to_hose(PCI_BUS(dev)), (addr), (flags))
-#define pci_bus_to_phys(dev, addr, flags) \
-	pci_hose_bus_to_phys(pci_bus_to_hose(PCI_BUS(dev)), (addr), (flags))
-
-#define pci_phys_to_mem(dev, addr)	pci_phys_to_bus((dev), (addr), PCI_REGION_MEM)
-#define pci_mem_to_phys(dev, addr)	pci_bus_to_phys((dev), (addr), PCI_REGION_MEM)
-#define pci_phys_to_io(dev, addr)	pci_phys_to_bus((dev), (addr), PCI_REGION_IO)
-#define pci_io_to_phys(dev, addr)	pci_bus_to_phys((dev), (addr), PCI_REGION_IO)
-
 extern int pci_hose_read_config_byte(struct pci_controller *hose,
 				     pci_dev_t dev, int where, u8 *val);
 extern int pci_hose_read_config_word(struct pci_controller *hose,
@@ -503,11 +488,6 @@ extern int pci_hose_config_device(struct pci_controller *hose,
 				  unsigned long mem,
 				  unsigned long command);

-#ifdef CONFIG_MPC824X
-extern void pci_mpc824x_init (struct pci_controller *hose);
-#endif
+#include <asm/pci.h>

-#ifdef CONFIG_MPC85xx
-extern void pci_mpc85xx_init (struct pci_controller *hose);
-#endif
 #endif	/* _PCI_H */
-- 
1.5.5.1


More information about the U-Boot mailing list