驱动:
drivers/tty/serial/
msm_serial_hs_lite.c: 低速版本, 设备树内容配置为compatible = "qcom,msm-lsuart-v14";
msm_serial_hs.c: 高速版本, 设备树内容配置为compatible = "qcom,msm-hsuart-v14";
2. 分析
uart_console_active2: uart_console_active2 {
mux {
pins = "gpio20", "gpio21";
function = "blsp_uart2";
};
config {
pins = "gpio20", "gpio21";
drive-strength = <2>;
bias-disable;
};
};
uart_console_sleep2: uart_console_sleep2 {
mux {
pins = "gpio20", "gpio21";
function = "blsp_uart2";
};
config {
pins = "gpio20", "gpio21";
drive-strength = <2>;
bias-pull-down;
};
};
&blsp1_uart2 {
status = "ok";
pinctrl-names = "default";
pinctrl-0 = <&uart_console_sleep2>;
};
blsp1_uart2_hs: uart@78b0000 {
compatible = "qcom,msm-hsuart-v14";
reg = <0x78b0000 0x200>,
<0x7884000 0x1f000>;
reg-names = "core_mem", "bam_mem";
interrupt-names = "core_irq", "bam_irq", "wakeup_irq";
#address-cells = <0>;
interrupt-parent = <&blsp1_uart2_hs>;
interrupts = <0 1 2>;
#interrupt-cells = <1>;
interrupt-map-mask = <0xffffffff>;
interrupt-map = <0 &intc 0 108 0
1 &intc 0 238 0
2 &msm_gpio 21 0>;
qcom,inject-rx-on-wakeup;
qcom,rx-char-to-inject = <0xfd>;
qcom,master-id = <86>;
clock-names = "core_clk", "iface_clk";
clocks = <&clock_gcc 0xf8a61c96>,
<&clock_gcc 0x8caa5b4f>;
pinctrl-names = "sleep", "default";
pinctrl-0 = <&blsp1_uart2_tx_sleep>, <&blsp1_uart2_rxcts_sleep>,
<&blsp1_uart2_rfr_sleep>;
pinctrl-1 = <&blsp1_uart2_tx_active>,
<&blsp1_uart2_rxcts_active>, <&blsp1_uart2_rfr_active>;
qcom,bam-tx-ep-pipe-index = <2>;
qcom,bam-rx-ep-pipe-index = <3>;
qcom,msm-bus,name = "blsp1_uart2_hs";
qcom,msm-bus,num-cases = <2>;
qcom,msm-bus,num-paths = <1>;
qcom,msm-bus,vectors-KBps =
<86 512 0 0>,
<86 512 500 800>;
status = "disabled";
};