Chinaunix

标题: 串口驱动框架的问题? [打印本页]

作者: hui_se0    时间: 2011-08-04 19:34
标题: 串口驱动框架的问题?
今天一直在串口驱动程序,看了之后有几个问题不明白,希望大家指点一下:
   串口驱动里头有几个定义如下:
static struct uart_driver s3c24xx_uart_drv = {
        .owner                = THIS_MODULE,
        .dev_name        = "s3c2410_serial",
        .nr                = CONFIG_SERIAL_SAMSUNG_UARTS,
        .cons                = S3C24XX_SERIAL_CONSOLE,
        .driver_name        = S3C24XX_SERIAL_NAME,
        .major                = S3C24XX_SERIAL_MAJOR,
        .minor                = S3C24XX_SERIAL_MINOR,
};
static struct s3c24xx_uart_port s3c24xx_serial_ports[CONFIG_SERIAL_SAMSUNG_UARTS] = {
        [0] = {
                .port = {
                        .lock                = __SPIN_LOCK_UNLOCKED(s3c24xx_serial_ports[0].port.lock),
                        .iotype                = UPIO_MEM,
                        .irq                = IRQ_S3CUART_RX0,
                        .uartclk        = 0,
                        .fifosize        = 16,
                        .ops                = &s3c24xx_serial_ops,
                        .flags                = UPF_BOOT_AUTOCONF,
                        .line                = 0,
                }
        }
}

static struct uart_ops s3c24xx_serial_ops = {
        .pm                = s3c24xx_serial_pm,
        .tx_empty        = s3c24xx_serial_tx_empty,
        .get_mctrl        = s3c24xx_serial_get_mctrl,
        .set_mctrl        = s3c24xx_serial_set_mctrl,
        .stop_tx        = s3c24xx_serial_stop_tx,
        .start_tx        = s3c24xx_serial_start_tx,
        .stop_rx        = s3c24xx_serial_stop_rx,
        .enable_ms        = s3c24xx_serial_enable_ms,
        .break_ctl        = s3c24xx_serial_break_ctl,
        .startup        = s3c24xx_serial_startup,
        .shutdown        = s3c24xx_serial_shutdown,
        .set_termios        = s3c24xx_serial_set_termios,
        .type                = s3c24xx_serial_type,
        .release_port        = s3c24xx_serial_release_port,
        .request_port        = s3c24xx_serial_request_port,
        .config_port        = s3c24xx_serial_config_port,
        .verify_port        = s3c24xx_serial_verify_port,
};
在我读完程序后,还不知道static struct uart_driver s3c24xx_uart_drv ,static struct uart_ops s3c24xx_serial_ops ,static struct s3c24xx_uart_port s3c24xx_serial_ports是怎么关联上的,感觉在程序中三者是孤立的。在static struct uart_driver s3c24xx_uart_drv 中全是宏常量,并没有指定串口的操作函数集是&s3c24xx_serial_ops,但是程序中确实是使用这些函数来操作串口。
    请高手指点下是怎么回事!
作者: che180    时间: 2011-11-30 17:25
看下设备描述结构




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2