Skip to content

Commit

Permalink
sh: Use the generic I/O port base for slowdown.
Browse files Browse the repository at this point in the history
This fixes up the build and behaviour for various configurations. Namely
the CONFIG_32BIT cases where legacy mappings do not exist, as well as the
sh64 build.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
  • Loading branch information
Paul Mundt committed Nov 12, 2009
1 parent c4e708d commit e9c58fc
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 10 deletions.
12 changes: 3 additions & 9 deletions arch/sh/include/asm/io.h
Original file line number Diff line number Diff line change
Expand Up @@ -90,15 +90,11 @@
#define ctrl_outl __raw_writel
#define ctrl_outq __raw_writeq

extern unsigned long generic_io_base;

static inline void ctrl_delay(void)
{
#ifdef CONFIG_CPU_SH4
__raw_readw(CCN_PVR);
#elif defined(P2SEG)
__raw_readw(P2SEG);
#else
#error "Need a dummy address for delay"
#endif
__raw_readw(generic_io_base);
}

#define __BUILD_MEMORY_STRING(bwlq, type) \
Expand Down Expand Up @@ -186,8 +182,6 @@ __BUILD_MEMORY_STRING(q, u64)

#define IO_SPACE_LIMIT 0xffffffff

extern unsigned long generic_io_base;

/*
* This function provides a method for the generic case where a
* board-specific ioport_map simply needs to return the port + some
Expand Down
4 changes: 3 additions & 1 deletion arch/sh/kernel/io_generic.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
#define dummy_read()
#endif

unsigned long generic_io_base;
unsigned long generic_io_base = 0;

u8 generic_inb(unsigned long port)
{
Expand Down Expand Up @@ -147,8 +147,10 @@ void generic_outsl(unsigned long port, const void *src, unsigned long count)

void __iomem *generic_ioport_map(unsigned long addr, unsigned int size)
{
#ifdef P1SEG
if (PXSEG(addr) >= P1SEG)
return (void __iomem *)addr;
#endif

return (void __iomem *)(addr + generic_io_base);
}
Expand Down
4 changes: 4 additions & 0 deletions arch/sh/kernel/machvec.c
Original file line number Diff line number Diff line change
Expand Up @@ -135,5 +135,9 @@ void __init sh_mv_setup(void)
if (!sh_mv.mv_nr_irqs)
sh_mv.mv_nr_irqs = NR_IRQS;

#ifdef P2SEG
__set_io_port_base(P2SEG);
#else
__set_io_port_base(0);
#endif
}

0 comments on commit e9c58fc

Please sign in to comment.