tianlansefy 发表于 2012-5-29 22:28:26

S3C2440串口驱动问题

本帖最后由 tianlansefy 于 2012-5-29 22:31 编辑

三个疑惑:
1、samsung.c的代码,在文件最后的s3c24xx_serial_initconsole()函数中有这么一句:
   struct platform_device *dev = s3c24xx_uart_devs;
s3c24xx_uart_devs结构体应该是系统预先定义好的平台设备结构体。但是我在内核中只找到了它的声明,并没有对其中的成员变量进行赋值的内容啊。那么这里为什么能拿来直接使用呢?
2、在mach-smdk2440.c中对s3c2410_uartcfg这个结构体中的成员变量进行了填充,也就是说这个是可以直接是用的。看到驱动代码中在函数s3c24xx_serial_init_port()中有这样的语句:
    cfg = s3c24xx_dev_to_cfg(&platdev->dev);
这句话的意思就是将platform_device->device->platform_data中的数据复制给cfg(一个s3c2410_uartcfg结构体),这也是直接使用的,那么在板级初始化的时候,是在哪里将cfg赋值给platform_data的呢?
3、uart_driver和uart_ops是怎么联系起来的呢?

TQ-ZQL 发表于 2012-6-4 10:39:47

本帖最后由 TQ-ZQL 于 2012-6-4 10:40 编辑

1.在plat-samsung/dev-uart.c定义,在plat-samsung/init.c中赋值
2.也是在plat-samsung/init.c中赋值
3.s3c24xx_serial_probe中读取
struct s3c24xx_uart_port s3c24xx_serial_ports
这个结构体,它里面就有一个uart_ops的结构。
其实这些都可以通过sourceInsigh3,看代码找到的。

tianlansefy 发表于 2012-6-4 15:06:42

TQ-ZQL 发表于 2012-6-4 10:39 static/image/common/back.gif
1.在plat-samsung/dev-uart.c定义,在plat-samsung/init.c中赋值
2.也是在plat-samsung/init.c中赋值
3.s ...

哦,非常感谢。
页: [1]
查看完整版本: S3C2440串口驱动问题