Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
09f0551d
K
Kernel
项目概览
openeuler
/
Kernel
接近 1 年 前同步成功
通知
5
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
09f0551d
编写于
6月 20, 2005
作者:
R
Russell King
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[PATCH] ARM: Add iomap support for ARM
Signed-off-by:
N
Russell King
<
rmk+kernel@arm.linux.org.uk
>
上级
a507ef3a
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
74 addition
and
4 deletion
+74
-4
arch/arm/Kconfig
arch/arm/Kconfig
+0
-4
arch/arm/mm/ioremap.c
arch/arm/mm/ioremap.c
+47
-0
include/asm-arm/io.h
include/asm-arm/io.h
+27
-0
未找到文件。
arch/arm/Kconfig
浏览文件 @
09f0551d
...
...
@@ -67,10 +67,6 @@ config GENERIC_BUST_SPINLOCK
config GENERIC_ISA_DMA
bool
config GENERIC_IOMAP
bool
default y
config FIQ
bool
...
...
arch/arm/mm/ioremap.c
浏览文件 @
09f0551d
...
...
@@ -170,3 +170,50 @@ void __iounmap(void __iomem *addr)
vfree
((
void
*
)
(
PAGE_MASK
&
(
unsigned
long
)
addr
));
}
EXPORT_SYMBOL
(
__iounmap
);
#ifdef __io
void
__iomem
*
ioport_map
(
unsigned
long
port
,
unsigned
int
nr
)
{
return
__io
(
port
);
}
EXPORT_SYMBOL
(
ioport_map
);
void
ioport_unmap
(
void
__iomem
*
addr
)
{
}
EXPORT_SYMBOL
(
ioport_unmap
);
#endif
#ifdef CONFIG_PCI
#include <linux/pci.h>
#include <linux/ioport.h>
void
__iomem
*
pci_iomap
(
struct
pci_dev
*
dev
,
int
bar
,
unsigned
long
maxlen
)
{
unsigned
long
start
=
pci_resource_start
(
dev
,
bar
);
unsigned
long
len
=
pci_resource_len
(
dev
,
bar
);
unsigned
long
flags
=
pci_resource_flags
(
dev
,
bar
);
if
(
!
len
||
!
start
)
return
NULL
;
if
(
maxlen
&&
len
>
maxlen
)
len
=
maxlen
;
if
(
flags
&
IORESOURCE_IO
)
return
ioport_map
(
start
,
len
);
if
(
flags
&
IORESOURCE_MEM
)
{
if
(
flags
&
IORESOURCE_CACHEABLE
)
return
ioremap
(
start
,
len
);
return
ioremap_nocache
(
start
,
len
);
}
return
NULL
;
}
EXPORT_SYMBOL
(
pci_iomap
);
void
pci_iounmap
(
struct
pci_dev
*
dev
,
void
__iomem
*
addr
)
{
if
((
unsigned
long
)
addr
>=
VMALLOC_START
&&
(
unsigned
long
)
addr
<
VMALLOC_END
)
iounmap
(
addr
);
}
EXPORT_SYMBOL
(
pci_iounmap
);
#endif
include/asm-arm/io.h
浏览文件 @
09f0551d
...
...
@@ -272,6 +272,33 @@ extern void __iounmap(void __iomem *addr);
#define iounmap(cookie) __arch_iounmap(cookie)
#endif
/*
* io{read,write}{8,16,32} macros
*/
#define ioread8(p) ({ unsigned int __v = __raw_readb(p); __v; })
#define ioread16(p) ({ unsigned int __v = le16_to_cpu(__raw_readw(p)); __v; })
#define ioread32(p) ({ unsigned int __v = le32_to_cpu(__raw_readl(p)); __v; })
#define iowrite8(v,p) __raw_writeb(v, p)
#define iowrite16(v,p) __raw_writew(cpu_to_le16(v), p)
#define iowrite32(v,p) __raw_writel(cpu_to_le32(v), p)
#define ioread8_rep(p,d,c) __raw_readsb(p,d,c)
#define ioread16_rep(p,d,c) __raw_readsw(p,d,c)
#define ioread32_rep(p,d,c) __raw_readsl(p,d,c)
#define iowrite8_rep(p,s,c) __raw_writesb(p,s,c)
#define iowrite16_rep(p,s,c) __raw_writesw(p,s,c)
#define iowrite32_rep(p,s,c) __raw_writesl(p,s,c)
extern
void
__iomem
*
ioport_map
(
unsigned
long
port
,
unsigned
int
nr
);
extern
void
ioport_unmap
(
void
__iomem
*
addr
);
struct
pci_dev
;
extern
void
__iomem
*
pci_iomap
(
struct
pci_dev
*
dev
,
int
bar
,
unsigned
long
maxlen
);
extern
void
pci_iounmap
(
struct
pci_dev
*
dev
,
void
__iomem
*
addr
);
/*
* can the hardware map this into one segment or not, given no other
* constraints.
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录