[PATCH 4/4] ppc64 iSeries: allow build with no PCI
Stephen Rothwell
sfr at canb.auug.org.au
Wed Jun 8 17:43:04 EST 2005
Hi Andrew,
This patch allows iSeries to build with CONFIG_PCI=n. This is useful for partitions that have only virtual I/O.
Signed-off-by: Stephen Rothwell <sfr at canb.auug.org.au>
--
Cheers,
Stephen Rothwell sfr at canb.auug.org.au
http://www.canb.auug.org.au/~sfr/
diff -ruN linus-iSeries-headers.19/arch/ppc64/Kconfig linus-iSeries-headers.20/arch/ppc64/Kconfig
--- linus-iSeries-headers.19/arch/ppc64/Kconfig 2005-05-20 09:03:13.000000000 +1000
+++ linus-iSeries-headers.20/arch/ppc64/Kconfig 2005-06-08 14:57:11.000000000 +1000
@@ -323,7 +323,7 @@
bool
config PCI
- bool
+ bool "support for PCI devices" if (EMBEDDED && PPC_ISERIES)
default y
help
Find out whether your system includes a PCI bus. PCI is the name of
diff -ruN linus-iSeries-headers.19/arch/ppc64/kernel/Makefile linus-iSeries-headers.20/arch/ppc64/kernel/Makefile
--- linus-iSeries-headers.19/arch/ppc64/kernel/Makefile 2005-06-08 12:15:34.000000000 +1000
+++ linus-iSeries-headers.20/arch/ppc64/kernel/Makefile 2005-06-08 15:06:13.000000000 +1000
@@ -16,13 +16,13 @@
obj-$(CONFIG_PPC_OF) += of_device.o
-pci-obj-$(CONFIG_PPC_ISERIES) += iSeries_pci.o iSeries_VpdInfo.o
+pci-obj-$(CONFIG_PPC_ISERIES) += iSeries_pci.o iSeries_irq.o \
+ iSeries_VpdInfo.o
pci-obj-$(CONFIG_PPC_MULTIPLATFORM) += pci_dn.o pci_direct_iommu.o
obj-$(CONFIG_PCI) += pci.o pci_iommu.o iomap.o $(pci-obj-y)
-obj-$(CONFIG_PPC_ISERIES) += iSeries_irq.o \
- HvCall.o HvLpConfig.o LparData.o \
+obj-$(CONFIG_PPC_ISERIES) += HvCall.o HvLpConfig.o LparData.o \
iSeries_setup.o ItLpQueue.o hvCall.o \
mf.o HvLpEvent.o iSeries_proc.o iSeries_htab.o \
iSeries_iommu.o
diff -ruN linus-iSeries-headers.19/arch/ppc64/kernel/dma.c linus-iSeries-headers.20/arch/ppc64/kernel/dma.c
--- linus-iSeries-headers.19/arch/ppc64/kernel/dma.c 2005-05-20 09:03:13.000000000 +1000
+++ linus-iSeries-headers.20/arch/ppc64/kernel/dma.c 2005-06-07 16:42:36.000000000 +1000
@@ -15,8 +15,10 @@
static struct dma_mapping_ops *get_dma_ops(struct device *dev)
{
+#ifdef CONFIG_PCI
if (dev->bus == &pci_bus_type)
return &pci_dma_ops;
+#endif
#ifdef CONFIG_IBMVIO
if (dev->bus == &vio_bus_type)
return &vio_dma_ops;
@@ -37,8 +39,10 @@
int dma_set_mask(struct device *dev, u64 dma_mask)
{
+#ifdef CONFIG_PCI
if (dev->bus == &pci_bus_type)
return pci_set_dma_mask(to_pci_dev(dev), dma_mask);
+#endif
#ifdef CONFIG_IBMVIO
if (dev->bus == &vio_bus_type)
return -EIO;
diff -ruN linus-iSeries-headers.19/arch/ppc64/kernel/iSeries_iommu.c linus-iSeries-headers.20/arch/ppc64/kernel/iSeries_iommu.c
--- linus-iSeries-headers.19/arch/ppc64/kernel/iSeries_iommu.c 2005-05-20 09:03:13.000000000 +1000
+++ linus-iSeries-headers.20/arch/ppc64/kernel/iSeries_iommu.c 2005-06-08 15:18:06.000000000 +1000
@@ -83,7 +83,7 @@
}
}
-
+#ifdef CONFIG_PCI
/*
* This function compares the known tables to find an iommu_table
* that has already been built for hardware TCEs.
@@ -159,6 +159,7 @@
else
kfree(tbl);
}
+#endif
static void iommu_dev_setup_iSeries(struct pci_dev *dev) { }
static void iommu_bus_setup_iSeries(struct pci_bus *bus) { }
diff -ruN linus-iSeries-headers.19/arch/ppc64/kernel/iSeries_setup.c linus-iSeries-headers.20/arch/ppc64/kernel/iSeries_setup.c
--- linus-iSeries-headers.19/arch/ppc64/kernel/iSeries_setup.c 2005-06-03 09:34:53.000000000 +1000
+++ linus-iSeries-headers.20/arch/ppc64/kernel/iSeries_setup.c 2005-06-08 15:53:04.000000000 +1000
@@ -76,7 +76,11 @@
static void build_iSeries_Memory_Map(void);
static void setup_iSeries_cache_sizes(void);
static void iSeries_bolt_kernel(unsigned long saddr, unsigned long eaddr);
+#ifdef CONFIG_PCI
extern void iSeries_pci_final_fixup(void);
+#else
+static void iSeries_pci_final_fixup(void) { }
+#endif
/* Global Variables */
static unsigned long procFreqHz;
@@ -876,6 +880,10 @@
}
__setup("spread_lpevents=", set_spread_lpevents);
+#ifndef CONFIG_PCI
+void __init iSeries_init_IRQ(void) { }
+#endif
+
void __init iSeries_early_setup(void)
{
iSeries_fixup_klimit();
diff -ruN linus-iSeries-headers.19/arch/ppc64/kernel/sys_ppc32.c linus-iSeries-headers.20/arch/ppc64/kernel/sys_ppc32.c
--- linus-iSeries-headers.19/arch/ppc64/kernel/sys_ppc32.c 2005-05-20 09:03:14.000000000 +1000
+++ linus-iSeries-headers.20/arch/ppc64/kernel/sys_ppc32.c 2005-06-08 15:05:31.000000000 +1000
@@ -741,6 +741,7 @@
asmlinkage int sys32_pciconfig_iobase(u32 which, u32 in_bus, u32 in_devfn)
{
+#ifdef CONFIG_PCI
struct pci_controller* hose;
struct list_head *ln;
struct pci_bus *bus = NULL;
@@ -786,7 +787,7 @@
case IOBASE_ISA_MEM:
return -EINVAL;
}
-
+#endif /* CONFIG_PCI */
return -EOPNOTSUPP;
}
diff -ruN linus-iSeries-headers.19/arch/ppc64/lib/Makefile linus-iSeries-headers.20/arch/ppc64/lib/Makefile
--- linus-iSeries-headers.19/arch/ppc64/lib/Makefile 2005-05-20 09:03:15.000000000 +1000
+++ linus-iSeries-headers.20/arch/ppc64/lib/Makefile 2005-06-08 15:09:37.000000000 +1000
@@ -12,7 +12,7 @@
# e2a provides EBCDIC to ASCII conversions.
ifdef CONFIG_PPC_ISERIES
-obj-$(CONFIG_PCI) += e2a.o
+obj-y += e2a.o
endif
lib-$(CONFIG_DEBUG_KERNEL) += sstep.o
diff -ruN linus-iSeries-headers.19/drivers/char/mem.c linus-iSeries-headers.20/drivers/char/mem.c
--- linus-iSeries-headers.19/drivers/char/mem.c 2005-05-20 09:03:47.000000000 +1000
+++ linus-iSeries-headers.20/drivers/char/mem.c 2005-06-08 15:44:27.000000000 +1000
@@ -484,7 +484,7 @@
return virtr + wrote;
}
-#if defined(CONFIG_ISA) || !defined(__mc68000__)
+#if (defined(CONFIG_ISA) || !defined(__mc68000__)) && (!defined(CONFIG_PPC_ISERIES) || defined(CONFIG_PCI))
static ssize_t read_port(struct file * file, char __user * buf,
size_t count, loff_t *ppos)
{
@@ -744,7 +744,7 @@
.write = write_null,
};
-#if defined(CONFIG_ISA) || !defined(__mc68000__)
+#if (defined(CONFIG_ISA) || !defined(__mc68000__)) && (!defined(CONFIG_PPC_ISERIES) || defined(CONFIG_PCI))
static struct file_operations port_fops = {
.llseek = memory_lseek,
.read = read_port,
@@ -804,7 +804,7 @@
case 3:
filp->f_op = &null_fops;
break;
-#if defined(CONFIG_ISA) || !defined(__mc68000__)
+#if (defined(CONFIG_ISA) || !defined(__mc68000__)) && (!defined(CONFIG_PPC_ISERIES) || defined(CONFIG_PCI))
case 4:
filp->f_op = &port_fops;
break;
@@ -846,7 +846,7 @@
{1, "mem", S_IRUSR | S_IWUSR | S_IRGRP, &mem_fops},
{2, "kmem", S_IRUSR | S_IWUSR | S_IRGRP, &kmem_fops},
{3, "null", S_IRUGO | S_IWUGO, &null_fops},
-#if defined(CONFIG_ISA) || !defined(__mc68000__)
+#if (defined(CONFIG_ISA) || !defined(__mc68000__)) && (!defined(CONFIG_PPC_ISERIES) || defined(CONFIG_PCI))
{4, "port", S_IRUSR | S_IWUSR | S_IRGRP, &port_fops},
#endif
{5, "zero", S_IRUGO | S_IWUGO, &zero_fops},
diff -ruN linus-iSeries-headers.19/drivers/serial/Kconfig linus-iSeries-headers.20/drivers/serial/Kconfig
--- linus-iSeries-headers.19/drivers/serial/Kconfig 2005-05-20 09:04:37.000000000 +1000
+++ linus-iSeries-headers.20/drivers/serial/Kconfig 2005-06-07 16:42:36.000000000 +1000
@@ -753,7 +753,7 @@
config SERIAL_ICOM
tristate "IBM Multiport Serial Adapter"
- depends on PPC_ISERIES || PPC_PSERIES
+ depends on PCI && (PPC_ISERIES || PPC_PSERIES)
select SERIAL_CORE
help
This driver is for a family of multiport serial adapters
diff -ruN linus-iSeries-headers.19/include/asm-ppc64/dma.h linus-iSeries-headers.20/include/asm-ppc64/dma.h
--- linus-iSeries-headers.19/include/asm-ppc64/dma.h 2005-05-20 09:05:54.000000000 +1000
+++ linus-iSeries-headers.20/include/asm-ppc64/dma.h 2005-06-08 15:51:09.000000000 +1000
@@ -27,6 +27,8 @@
/* Doesn't really apply... */
#define MAX_DMA_ADDRESS (~0UL)
+#if !defined(CONFIG_PPC_ISERIES) || defined(CONFIG_PCI)
+
#define dma_outb outb
#define dma_inb inb
@@ -323,4 +325,5 @@
#else
#define isa_dma_bridge_buggy (0)
#endif
+#endif /* !defined(CONFIG_PPC_ISERIES) || defined(CONFIG_PCI) */
#endif /* _ASM_DMA_H */
diff -ruN linus-iSeries-headers.19/include/asm-ppc64/iommu.h linus-iSeries-headers.20/include/asm-ppc64/iommu.h
--- linus-iSeries-headers.19/include/asm-ppc64/iommu.h 2005-06-04 17:13:20.000000000 +1000
+++ linus-iSeries-headers.20/include/asm-ppc64/iommu.h 2005-06-08 15:08:52.000000000 +1000
@@ -137,8 +137,12 @@
extern void iommu_init_early_iSeries(void);
extern void iommu_init_early_u3(void);
+#ifdef CONFIG_PCI
extern void pci_iommu_init(void);
extern void pci_direct_iommu_init(void);
+#else
+static inline void pci_iommu_init(void) { }
+#endif
extern void alloc_u3_dart_table(void);
More information about the Linuxppc64-dev
mailing list