ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2011年10月6日 星期四

mxc_uart.c 的 mxcuart_console_init ( ) 屬於 console_init 階段執行的 function. struct console mxc_consol register_console(&mxc_console);
mxc_reg 跟 mxc_console 各自包含對方: struct uart_console mxc_reg = { .con = (&mxc_sonsole); }; struct console mxc_console = { .data = &mxc_reg; }

另外一個是 module_init 階段執行的 mxcuart_init uart_register(&mxc_reg); platform_driver_register(&mxcuart_driver); mxcuart_driver 是 platform_driver 結構,name 是 mxcintuart (internal uart ?)

platform_driver 的 mxcuart_resume(struct platform_device *pdev) 只是..
取出 platform_device 的 data : (uart_mxc_port)。參照裡面的 port.flag,決定要不要call uart_resume_port( ): uart_mxc_port *umxc = platform_get_drvdata(pdev); if (umxc && umxc->port.flags & ASYNC_SUSPENDED) { umxc->port.state->port.tty->hw_stopped = 0; uart_resume_port(&mxc_reg, &umxc->port); } 這裡的 uart_resume_port 在 serial_core.c 裡。

uart_resume_port 也是取出 argument :uart_driver 裡的tty_port 結構資料 : port。
依照 port-> flags 的內容決定要不要對 hardware 動作。

所以 mxcuart_resume --- uart_resume_port 裡面都有對 port 動作,但是兩個的 port 並不一樣。

mxcuart_resume 是: platform_device --> (uart_mxc_port) --> port.flags uart_resume_port 是: uart_driver --> uart_state -->tty_port --> flags 好像不相關.


mxcuart_resume 的參數: platform_device 是宣告在另一個 source : arch: static struct platform_device mxc_uart_device1 = { .name = "mxcintuart", .id = 0, .num_resources = ARRAY_SIZE(mxc_uart_resources1), .resource = mxc_uart_resources1, .dev = { .platform_data = &mxc_ports[0], }, };
mxc_port 是: static uart_mxc_port mxc_ports[] = { [0] = { .port = { .iotype = SERIAL_IO_MEM, .fifosize = 32, .flags = ASYNC_BOOT_AUTOCONF , .line = 0, }, .ints_muxed = 1, .mode = MODE_DCE, .ir_mode = NO_IRDA, .enabled = 1, .cts_threshold = UART1_UCR4_CTSTL, .dma_enabled = UART1_DMA_ENABLE, .dma_rxbuf_size = UART1_DMA_RXBUFSIZE, .rx_threshold = UART1_UFCR_RXTL, .tx_threshold = UART1_UFCR_TXTL, .dma_tx_id = MXC_DMA_UART1_TX, .dma_rx_id = MXC_DMA_UART1_RX, .rxd_mux = MXC_UART_RXDMUX, }, 看到那個 flags 欄位。
這個欄位好像沒有改變。

uart_resume_port( ) 的參數是mxc_uart_resume 呼叫時傳進去的。 uart_resume_port(&mxc_reg, &umxc->port); 所以就是

沒有留言:

標籤

網誌存檔