Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
826e8c8c
K
Kernel
项目概览
openeuler
/
Kernel
接近 2 年 前同步成功
通知
8
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看板
提交
826e8c8c
编写于
4月 05, 2009
作者:
G
Geert Uytterhoeven
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
m68k: amiga - Serial port platform device conversion
Signed-off-by:
N
Geert Uytterhoeven
<
geert@linux-m68k.org
>
上级
314c926f
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
38 addition
and
26 deletion
+38
-26
arch/m68k/amiga/platform.c
arch/m68k/amiga/platform.c
+3
-0
drivers/char/amiserial.c
drivers/char/amiserial.c
+35
-26
未找到文件。
arch/m68k/amiga/platform.c
浏览文件 @
826e8c8c
...
...
@@ -168,6 +168,9 @@ static int __init amiga_init_devices(void)
if
(
AMIGAHW_PRESENT
(
AMI_MOUSE
))
platform_device_register_simple
(
"amiga-mouse"
,
-
1
,
NULL
,
0
);
if
(
AMIGAHW_PRESENT
(
AMI_SERIAL
))
platform_device_register_simple
(
"amiga-serial"
,
-
1
,
NULL
,
0
);
return
0
;
}
...
...
drivers/char/amiserial.c
浏览文件 @
826e8c8c
...
...
@@ -84,6 +84,7 @@ static char *serial_version = "4.30";
#include <linux/smp_lock.h>
#include <linux/init.h>
#include <linux/bitops.h>
#include <linux/platform_device.h>
#include <asm/setup.h>
...
...
@@ -1954,29 +1955,16 @@ static const struct tty_operations serial_ops = {
/*
* The serial driver boot-time initialization code!
*/
static
int
__init
rs_init
(
void
)
static
int
__init
amiga_serial_probe
(
struct
platform_device
*
pdev
)
{
unsigned
long
flags
;
struct
serial_state
*
state
;
int
error
;
if
(
!
MACH_IS_AMIGA
||
!
AMIGAHW_PRESENT
(
AMI_SERIAL
))
return
-
ENODEV
;
serial_driver
=
alloc_tty_driver
(
1
);
if
(
!
serial_driver
)
return
-
ENOMEM
;
/*
* We request SERDAT and SERPER only, because the serial registers are
* too spreaded over the custom register space
*/
if
(
!
request_mem_region
(
CUSTOM_PHYSADDR
+
0x30
,
4
,
"amiserial [Paula]"
))
{
error
=
-
EBUSY
;
goto
fail_put_tty_driver
;
}
IRQ_ports
=
NULL
;
show_serial_version
();
...
...
@@ -1998,7 +1986,7 @@ static int __init rs_init(void)
error
=
tty_register_driver
(
serial_driver
);
if
(
error
)
goto
fail_
release_mem_region
;
goto
fail_
put_tty_driver
;
state
=
rs_table
;
state
->
magic
=
SSTATE_MAGIC
;
...
...
@@ -2050,23 +2038,24 @@ static int __init rs_init(void)
ciab
.
ddra
|=
(
SER_DTR
|
SER_RTS
);
/* outputs */
ciab
.
ddra
&=
~
(
SER_DCD
|
SER_CTS
|
SER_DSR
);
/* inputs */
platform_set_drvdata
(
pdev
,
state
);
return
0
;
fail_free_irq:
free_irq
(
IRQ_AMIGA_TBE
,
state
);
fail_unregister:
tty_unregister_driver
(
serial_driver
);
fail_release_mem_region:
release_mem_region
(
CUSTOM_PHYSADDR
+
0x30
,
4
);
fail_put_tty_driver:
put_tty_driver
(
serial_driver
);
return
error
;
}
static
__exit
void
rs_exit
(
void
)
static
int
__exit
amiga_serial_remove
(
struct
platform_device
*
pdev
)
{
int
error
;
struct
async_struct
*
info
=
rs_table
[
0
].
info
;
struct
serial_state
*
state
=
platform_get_drvdata
(
pdev
);
struct
async_struct
*
info
=
state
->
info
;
/* printk("Unloading %s: version %s\n", serial_name, serial_version); */
tasklet_kill
(
&
info
->
tlet
);
...
...
@@ -2075,19 +2064,38 @@ static __exit void rs_exit(void)
error
);
put_tty_driver
(
serial_driver
);
if
(
info
)
{
rs_table
[
0
].
info
=
NULL
;
kfree
(
info
);
}
rs_table
[
0
].
info
=
NULL
;
kfree
(
info
);
free_irq
(
IRQ_AMIGA_TBE
,
rs_table
);
free_irq
(
IRQ_AMIGA_RBF
,
rs_table
);
release_mem_region
(
CUSTOM_PHYSADDR
+
0x30
,
4
);
platform_set_drvdata
(
pdev
,
NULL
);
return
error
;
}
static
struct
platform_driver
amiga_serial_driver
=
{
.
remove
=
__exit_p
(
amiga_serial_remove
),
.
driver
=
{
.
name
=
"amiga-serial"
,
.
owner
=
THIS_MODULE
,
},
};
static
int
__init
amiga_serial_init
(
void
)
{
return
platform_driver_probe
(
&
amiga_serial_driver
,
amiga_serial_probe
);
}
module_init
(
amiga_serial_init
);
static
void
__exit
amiga_serial_exit
(
void
)
{
platform_driver_unregister
(
&
amiga_serial_driver
);
}
module_init
(
rs_init
)
module_exit
(
rs_exit
)
module_exit
(
amiga_serial_exit
);
#if defined(CONFIG_SERIAL_CONSOLE) && !defined(MODULE)
...
...
@@ -2154,3 +2162,4 @@ console_initcall(amiserial_console_init);
#endif
/* CONFIG_SERIAL_CONSOLE && !MODULE */
MODULE_LICENSE
(
"GPL"
);
MODULE_ALIAS
(
"platform:amiga-serial"
);
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录