Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 42228
b: refs/heads/master
c: 4cb3cee
h: refs/heads/master
v: v3
  • Loading branch information
Benjamin Herrenschmidt authored and Paul Mackerras committed Dec 4, 2006
1 parent c1b856b commit ad04d27
Show file tree
Hide file tree
Showing 15 changed files with 702 additions and 609 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: d03f387eb321189bc2ba278b6ca82f1a45cf19d6
refs/heads/master: 4cb3cee03d558fd457cb58f56c80a2a09a66110c
10 changes: 10 additions & 0 deletions trunk/arch/powerpc/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -394,6 +394,7 @@ config PPC_PSERIES
config PPC_ISERIES
bool "IBM Legacy iSeries"
depends on PPC_MULTIPLATFORM && PPC64
select PPC_INDIRECT_IO

config PPC_CHRP
bool "Common Hardware Reference Platform (CHRP) based machines"
Expand Down Expand Up @@ -548,6 +549,15 @@ config PPC_970_NAP
bool
default n

config PPC_INDIRECT_IO
bool
select GENERIC_IOMAP
default n

config GENERIC_IOMAP
bool
default n

source "drivers/cpufreq/Kconfig"

config CPU_FREQ_PMAC
Expand Down
6 changes: 5 additions & 1 deletion trunk/arch/powerpc/kernel/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ obj-$(CONFIG_PPC_UDBG_16550) += legacy_serial.o udbg_16550.o
module-$(CONFIG_PPC64) += module_64.o
obj-$(CONFIG_MODULES) += $(module-y)

pci64-$(CONFIG_PPC64) += pci_64.o pci_dn.o iomap.o
pci64-$(CONFIG_PPC64) += pci_64.o pci_dn.o
pci32-$(CONFIG_PPC32) := pci_32.o
obj-$(CONFIG_PCI) += $(pci64-y) $(pci32-y)
kexec-$(CONFIG_PPC64) := machine_kexec_64.o
Expand All @@ -71,6 +71,10 @@ obj-$(CONFIG_KEXEC) += machine_kexec.o crash.o $(kexec-y)
obj-$(CONFIG_AUDIT) += audit.o
obj64-$(CONFIG_AUDIT) += compat_audit.o

ifneq ($(CONFIG_PPC_INDIRECT_IO),y)
pci64-$(CONFIG_PPC64) += iomap.o
endif

ifeq ($(CONFIG_PPC_ISERIES),y)
$(obj)/head_64.o: $(obj)/lparmap.s
AFLAGS_head_64.o += -I$(obj)
Expand Down
18 changes: 3 additions & 15 deletions trunk/arch/powerpc/kernel/io.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,11 @@
#include <asm/firmware.h>
#include <asm/bug.h>

void _insb(volatile u8 __iomem *port, void *buf, long count)
void _insb(const volatile u8 __iomem *port, void *buf, long count)
{
u8 *tbuf = buf;
u8 tmp;

BUG_ON(firmware_has_feature(FW_FEATURE_ISERIES));

if (unlikely(count <= 0))
return;
asm volatile("sync");
Expand All @@ -48,8 +46,6 @@ void _outsb(volatile u8 __iomem *port, const void *buf, long count)
{
const u8 *tbuf = buf;

BUG_ON(firmware_has_feature(FW_FEATURE_ISERIES));

if (unlikely(count <= 0))
return;
asm volatile("sync");
Expand All @@ -60,13 +56,11 @@ void _outsb(volatile u8 __iomem *port, const void *buf, long count)
}
EXPORT_SYMBOL(_outsb);

void _insw_ns(volatile u16 __iomem *port, void *buf, long count)
void _insw_ns(const volatile u16 __iomem *port, void *buf, long count)
{
u16 *tbuf = buf;
u16 tmp;

BUG_ON(firmware_has_feature(FW_FEATURE_ISERIES));

if (unlikely(count <= 0))
return;
asm volatile("sync");
Expand All @@ -83,8 +77,6 @@ void _outsw_ns(volatile u16 __iomem *port, const void *buf, long count)
{
const u16 *tbuf = buf;

BUG_ON(firmware_has_feature(FW_FEATURE_ISERIES));

if (unlikely(count <= 0))
return;
asm volatile("sync");
Expand All @@ -95,13 +87,11 @@ void _outsw_ns(volatile u16 __iomem *port, const void *buf, long count)
}
EXPORT_SYMBOL(_outsw_ns);

void _insl_ns(volatile u32 __iomem *port, void *buf, long count)
void _insl_ns(const volatile u32 __iomem *port, void *buf, long count)
{
u32 *tbuf = buf;
u32 tmp;

BUG_ON(firmware_has_feature(FW_FEATURE_ISERIES));

if (unlikely(count <= 0))
return;
asm volatile("sync");
Expand All @@ -118,8 +108,6 @@ void _outsl_ns(volatile u32 __iomem *port, const void *buf, long count)
{
const u32 *tbuf = buf;

BUG_ON(firmware_has_feature(FW_FEATURE_ISERIES));

if (unlikely(count <= 0))
return;
asm volatile("sync");
Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/powerpc/kernel/pci_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -1137,7 +1137,7 @@ int unmap_bus_range(struct pci_bus *bus)

if (get_bus_io_range(bus, &start_phys, &start_virt, &size))
return 1;
if (iounmap_explicit((void __iomem *) start_virt, size))
if (__iounmap_explicit((void __iomem *) start_virt, size))
return 1;

return 0;
Expand Down
7 changes: 7 additions & 0 deletions trunk/arch/powerpc/kernel/setup_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -599,3 +599,10 @@ void __init setup_per_cpu_areas(void)
}
}
#endif


#ifdef CONFIG_PPC_INDIRECT_IO
struct ppc_pci_io ppc_pci_io;
EXPORT_SYMBOL(ppc_pci_io);
#endif /* CONFIG_PPC_INDIRECT_IO */

46 changes: 31 additions & 15 deletions trunk/arch/powerpc/mm/pgtable_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -129,22 +129,12 @@ static void __iomem * __ioremap_com(unsigned long addr, unsigned long pa,
return (void __iomem *) (ea + (addr & ~PAGE_MASK));
}


void __iomem *
ioremap(unsigned long addr, unsigned long size)
{
return __ioremap(addr, size, _PAGE_NO_CACHE | _PAGE_GUARDED);
}

void __iomem * __ioremap(unsigned long addr, unsigned long size,
unsigned long flags)
{
unsigned long pa, ea;
void __iomem *ret;

if (firmware_has_feature(FW_FEATURE_ISERIES))
return (void __iomem *)addr;

/*
* Choose an address to map it to.
* Once the imalloc system is running, we use it.
Expand Down Expand Up @@ -178,6 +168,25 @@ void __iomem * __ioremap(unsigned long addr, unsigned long size,
return ret;
}


void __iomem * ioremap(unsigned long addr, unsigned long size)
{
unsigned long flags = _PAGE_NO_CACHE | _PAGE_GUARDED;

if (ppc_md.ioremap)
return ppc_md.ioremap(addr, size, flags);
return __ioremap(addr, size, flags);
}

void __iomem * ioremap_flags(unsigned long addr, unsigned long size,
unsigned long flags)
{
if (ppc_md.ioremap)
return ppc_md.ioremap(addr, size, flags);
return __ioremap(addr, size, flags);
}


#define IS_PAGE_ALIGNED(_val) ((_val) == ((_val) & PAGE_MASK))

int __ioremap_explicit(unsigned long pa, unsigned long ea,
Expand Down Expand Up @@ -235,13 +244,10 @@ int __ioremap_explicit(unsigned long pa, unsigned long ea,
*
* XXX what about calls before mem_init_done (ie python_countermeasures())
*/
void iounmap(volatile void __iomem *token)
void __iounmap(void __iomem *token)
{
void *addr;

if (firmware_has_feature(FW_FEATURE_ISERIES))
return;

if (!mem_init_done)
return;

Expand All @@ -250,6 +256,14 @@ void iounmap(volatile void __iomem *token)
im_free(addr);
}

void iounmap(void __iomem *token)
{
if (ppc_md.iounmap)
ppc_md.iounmap(token);
else
__iounmap(token);
}

static int iounmap_subset_regions(unsigned long addr, unsigned long size)
{
struct vm_struct *area;
Expand All @@ -268,7 +282,7 @@ static int iounmap_subset_regions(unsigned long addr, unsigned long size)
return 0;
}

int iounmap_explicit(volatile void __iomem *start, unsigned long size)
int __iounmap_explicit(void __iomem *start, unsigned long size)
{
struct vm_struct *area;
unsigned long addr;
Expand Down Expand Up @@ -303,8 +317,10 @@ int iounmap_explicit(volatile void __iomem *start, unsigned long size)
}

EXPORT_SYMBOL(ioremap);
EXPORT_SYMBOL(ioremap_flags);
EXPORT_SYMBOL(__ioremap);
EXPORT_SYMBOL(iounmap);
EXPORT_SYMBOL(__iounmap);

void __iomem * reserve_phb_iospace(unsigned long size)
{
Expand Down
Loading

0 comments on commit ad04d27

Please sign in to comment.