[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