串口驱动初始化问题?

103 views
Skip to first unread message

张扬

unread,
Jan 5, 2011, 9:40:35 PM1/5/11
to linux-...@zh-kernel.org
hi
大家好:

我最近在看linux串口驱动,对于其中的有几点疑惑的地方,在drivers/serial/8250.c这个驱动程序是支持8250/16550系列芯片的。
在serial8250_isa_init_ports函数中会使用一个old_serial_port结构体来初始化serial8250_ports。old_serial_port使用是一个宏SERIAL_PORT_DFNS来初始化。这个宏在x86平台是定义在arch/x86/include/asm/serial.h中,现在对于我的mpc8313erdb的开发板自带的uart控制器是兼容pc16552D。在powerpc平台使用的驱动应该也是这个8250.c但是为什么powerpc平台却没有SERIAL_PORT_DFNS这样的宏。

谢谢大家!
_______________________________________________
Linux 内核开发中文邮件列表
Linux-...@zh-kernel.org
http://zh-kernel.org/mailman/listinfo/linux-kernel
Linux 内核开发中文社区: http://zh-kernel.org

Gao Ya'nan

unread,
Jan 6, 2011, 6:15:46 PM1/6/11
to 张扬, linux-...@zh-kernel.org
2011/1/6 张扬 <w90...@gmail.com>:

> hi
> 大家好:
>
> 我最近在看linux串口驱动,对于其中的有几点疑惑的地方,在drivers/serial/8250.c这个驱动程序是支持8250/16550系列芯片的。
> 在serial8250_isa_init_ports函数中会使用一个old_serial_port结构体来初始化serial8250_ports。old_serial_port使用是一个宏SERIAL_PORT_DFNS来初始化。这个宏在x86平台是定义在arch/x86/include/asm/serial.h中,现在对于我的mpc8313erdb的开发板自带的uart控制器是兼容pc16552D。在powerpc平台使用的驱动应该也是这个8250.c但是为什么powerpc平台却没有SERIAL_PORT_DFNS这样的宏。

查看 of_serial.c 文件。

张扬

unread,
Jan 6, 2011, 7:24:50 PM1/6/11
to Gao Ya'nan, linux-...@zh-kernel.org
在 2011年1月7日 上午7:15,Gao Ya'nan <abutt...@gmail.com>写道:

> 2011/1/6 张扬 <w90...@gmail.com>:
> > hi
> > 大家好:
> >
> >
> 我最近在看linux串口驱动,对于其中的有几点疑惑的地方,在drivers/serial/8250.c这个驱动程序是支持8250/16550系列芯片的。
> >
> 在serial8250_isa_init_ports函数中会使用一个old_serial_port结构体来初始化serial8250_ports。old_serial_port使用是一个宏SERIAL_PORT_DFNS来初始化。这个宏在x86平台是定义在arch/x86/include/asm/serial.h中,现在对于我的mpc8313erdb的开发板自带的uart控制器是兼容pc16552D。在powerpc平台使用的驱动应该也是这个8250.c但是为什么powerpc平台却没有SERIAL_PORT_DFNS这样的宏。
>
> 查看 of_serial.c 文件。
>

hi Gao Ya'nan

>
> 谢谢你的回答,昨天有看了下代码,在配置的时候,并没有选上CONFIG_SERIAL_OF_PLATFORM,所以of_serial.c这个并没有被使用,最后我查看发现应该是在arch/powerpc/kernel/legacy_serial.c里注册了下面这个平台设备。
>
static struct platform_device serial_device = {
.name = "serial8250",
| .id = PLAT8250_DEV_PLATFORM,
|- .dev = {
|| .platform_data = legacy_serial_ports,
|| },
| };
在8250.c中注册驱动的时候会使用到这个设备中的legacy_serial_ports,来注册串口端口。
对于你说的of_serial.c这个文件,看文件头注释说Serial Port driver for Open Firmware platform
devices。代码中使用的是of_platform的总线。在mpc83xx貌似没有用到这个总线,但是在其他板子里面有用到过。对于是否使用这个of_platform是什么标准来判断?即是否配置CONFIG_SERIAL_OF_PLATFORM。看注释没太明白,
open firmware platform devices,因为mpc83xx上也应该是 open firmware platform
devices呀。

Reply all
Reply to author
Forward
0 new messages