Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
0f2c15ce
Commit
0f2c15ce
authored
Nov 21, 2007
by
Paul Mundt
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
sh: Add onchip remap prototypes, kill old sh64 io.h.
Signed-off-by:
Paul Mundt
<
lethal@linux-sh.org
>
parent
1e1ed39f
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
16 additions
and
197 deletions
+16
-197
include/asm-sh/io.h
include/asm-sh/io.h
+16
-1
include/asm-sh64/io.h
include/asm-sh64/io.h
+0
-196
No files found.
include/asm-sh/io.h
View file @
0f2c15ce
...
...
@@ -191,6 +191,8 @@ __BUILD_MEMORY_STRING(w, u16)
#define mmiowb() wmb()
/* synco on SH-4A, otherwise a nop */
#define IO_SPACE_LIMIT 0xffffffff
/*
* This function provides a method for the generic case where a board-specific
* ioport_map simply needs to return the port + some arbitrary port base.
...
...
@@ -226,6 +228,11 @@ static inline unsigned int ctrl_inl(unsigned long addr)
return
*
(
volatile
unsigned
long
*
)
addr
;
}
static
inline
unsigned
long
long
ctrl_inq
(
unsigned
long
addr
)
{
return
*
(
volatile
unsigned
long
long
*
)
addr
;
}
static
inline
void
ctrl_outb
(
unsigned
char
b
,
unsigned
long
addr
)
{
*
(
volatile
unsigned
char
*
)
addr
=
b
;
...
...
@@ -241,6 +248,11 @@ static inline void ctrl_outl(unsigned int b, unsigned long addr)
*
(
volatile
unsigned
long
*
)
addr
=
b
;
}
static
inline
void
ctrl_outq
(
unsigned
long
long
b
,
unsigned
long
addr
)
{
*
(
volatile
unsigned
long
long
*
)
addr
=
b
;
}
static
inline
void
ctrl_delay
(
void
)
{
#ifdef P2SEG
...
...
@@ -253,7 +265,10 @@ unsigned long long peek_real_address_q(unsigned long long addr);
unsigned
long
long
poke_real_address_q
(
unsigned
long
long
addr
,
unsigned
long
long
val
);
#define IO_SPACE_LIMIT 0xffffffff
/* arch/sh/mm/ioremap_64.c */
unsigned
long
onchip_remap
(
unsigned
long
addr
,
unsigned
long
size
,
const
char
*
name
);
extern
void
onchip_unmap
(
unsigned
long
vaddr
);
#if !defined(CONFIG_MMU)
#define virt_to_phys(address) ((unsigned long)(address))
...
...
include/asm-sh64/io.h
deleted
100644 → 0
View file @
1e1ed39f
#ifndef __ASM_SH64_IO_H
#define __ASM_SH64_IO_H
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*
* include/asm-sh64/io.h
*
* Copyright (C) 2000, 2001 Paolo Alberelli
* Copyright (C) 2003 Paul Mundt
*
*/
/*
* Convention:
* read{b,w,l}/write{b,w,l} are for PCI,
* while in{b,w,l}/out{b,w,l} are for ISA
* These may (will) be platform specific function.
*
* In addition, we have
* ctrl_in{b,w,l}/ctrl_out{b,w,l} for SuperH specific I/O.
* which are processor specific. Address should be the result of
* onchip_remap();
*/
#include <linux/compiler.h>
#include <asm/cache.h>
#include <asm/system.h>
#include <asm/page.h>
#include <asm-generic/iomap.h>
/*
* Nothing overly special here.. instead of doing the same thing
* over and over again, we just define a set of sh64_in/out functions
* with an implicit size. The traditional read{b,w,l}/write{b,w,l}
* mess is wrapped to this, as are the SH-specific ctrl_in/out routines.
*/
static
inline
unsigned
char
sh64_in8
(
const
volatile
void
__iomem
*
addr
)
{
return
*
(
volatile
unsigned
char
__force
*
)
addr
;
}
static
inline
unsigned
short
sh64_in16
(
const
volatile
void
__iomem
*
addr
)
{
return
*
(
volatile
unsigned
short
__force
*
)
addr
;
}
static
inline
unsigned
int
sh64_in32
(
const
volatile
void
__iomem
*
addr
)
{
return
*
(
volatile
unsigned
int
__force
*
)
addr
;
}
static
inline
unsigned
long
long
sh64_in64
(
const
volatile
void
__iomem
*
addr
)
{
return
*
(
volatile
unsigned
long
long
__force
*
)
addr
;
}
static
inline
void
sh64_out8
(
unsigned
char
b
,
volatile
void
__iomem
*
addr
)
{
*
(
volatile
unsigned
char
__force
*
)
addr
=
b
;
wmb
();
}
static
inline
void
sh64_out16
(
unsigned
short
b
,
volatile
void
__iomem
*
addr
)
{
*
(
volatile
unsigned
short
__force
*
)
addr
=
b
;
wmb
();
}
static
inline
void
sh64_out32
(
unsigned
int
b
,
volatile
void
__iomem
*
addr
)
{
*
(
volatile
unsigned
int
__force
*
)
addr
=
b
;
wmb
();
}
static
inline
void
sh64_out64
(
unsigned
long
long
b
,
volatile
void
__iomem
*
addr
)
{
*
(
volatile
unsigned
long
long
__force
*
)
addr
=
b
;
wmb
();
}
#define readb(addr) sh64_in8(addr)
#define readw(addr) sh64_in16(addr)
#define readl(addr) sh64_in32(addr)
#define readb_relaxed(addr) sh64_in8(addr)
#define readw_relaxed(addr) sh64_in16(addr)
#define readl_relaxed(addr) sh64_in32(addr)
#define writeb(b, addr) sh64_out8(b, addr)
#define writew(b, addr) sh64_out16(b, addr)
#define writel(b, addr) sh64_out32(b, addr)
#define ctrl_inb(addr) sh64_in8(ioport_map(addr, 1))
#define ctrl_inw(addr) sh64_in16(ioport_map(addr, 2))
#define ctrl_inl(addr) sh64_in32(ioport_map(addr, 4))
#define ctrl_outb(b, addr) sh64_out8(b, ioport_map(addr, 1))
#define ctrl_outw(b, addr) sh64_out16(b, ioport_map(addr, 2))
#define ctrl_outl(b, addr) sh64_out32(b, ioport_map(addr, 4))
#define ioread8(addr) sh64_in8(addr)
#define ioread16(addr) sh64_in16(addr)
#define ioread32(addr) sh64_in32(addr)
#define iowrite8(b, addr) sh64_out8(b, addr)
#define iowrite16(b, addr) sh64_out16(b, addr)
#define iowrite32(b, addr) sh64_out32(b, addr)
#define inb(addr) ctrl_inb(addr)
#define inw(addr) ctrl_inw(addr)
#define inl(addr) ctrl_inl(addr)
#define outb(b, addr) ctrl_outb(b, addr)
#define outw(b, addr) ctrl_outw(b, addr)
#define outl(b, addr) ctrl_outl(b, addr)
void
outsw
(
unsigned
long
port
,
const
void
*
addr
,
unsigned
long
count
);
void
insw
(
unsigned
long
port
,
void
*
addr
,
unsigned
long
count
);
void
outsl
(
unsigned
long
port
,
const
void
*
addr
,
unsigned
long
count
);
void
insl
(
unsigned
long
port
,
void
*
addr
,
unsigned
long
count
);
#define inb_p(addr) inb(addr)
#define inw_p(addr) inw(addr)
#define inl_p(addr) inl(addr)
#define outb_p(x,addr) outb(x,addr)
#define outw_p(x,addr) outw(x,addr)
#define outl_p(x,addr) outl(x,addr)
#define __raw_readb readb
#define __raw_readw readw
#define __raw_readl readl
#define __raw_writeb writeb
#define __raw_writew writew
#define __raw_writel writel
void
memcpy_toio
(
void
__iomem
*
to
,
const
void
*
from
,
long
count
);
void
memcpy_fromio
(
void
*
to
,
void
__iomem
*
from
,
long
count
);
#define mmiowb()
#ifdef __KERNEL__
#ifdef CONFIG_SH_CAYMAN
extern
unsigned
long
smsc_superio_virt
;
#endif
#ifdef CONFIG_PCI
extern
unsigned
long
pciio_virt
;
#endif
#define IO_SPACE_LIMIT 0xffffffff
/*
* Change virtual addresses to physical addresses and vv.
* These are trivial on the 1:1 Linux/SuperH mapping
*/
static
inline
unsigned
long
virt_to_phys
(
volatile
void
*
address
)
{
return
__pa
(
address
);
}
static
inline
void
*
phys_to_virt
(
unsigned
long
address
)
{
return
__va
(
address
);
}
extern
void
*
__ioremap
(
unsigned
long
phys_addr
,
unsigned
long
size
,
unsigned
long
flags
);
static
inline
void
*
ioremap
(
unsigned
long
phys_addr
,
unsigned
long
size
)
{
return
__ioremap
(
phys_addr
,
size
,
1
);
}
static
inline
void
*
ioremap_nocache
(
unsigned
long
phys_addr
,
unsigned
long
size
)
{
return
__ioremap
(
phys_addr
,
size
,
0
);
}
extern
void
iounmap
(
void
*
addr
);
unsigned
long
onchip_remap
(
unsigned
long
addr
,
unsigned
long
size
,
const
char
*
name
);
extern
void
onchip_unmap
(
unsigned
long
vaddr
);
/*
* Convert a physical pointer to a virtual kernel pointer for /dev/mem
* access
*/
#define xlate_dev_mem_ptr(p) __va(p)
/*
* Convert a virtual cached pointer to an uncached pointer
*/
#define xlate_dev_kmem_ptr(p) p
#endif
/* __KERNEL__ */
#endif
/* __ASM_SH64_IO_H */
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment