本章节以UART3使用作为参考举例。其他UART例如UART6的配置,可以参考源码包中提供的“hi1910B-asic-M150-B50.dts”文件进行配置。
本操作以首次调测为例。
su - root
cd /opt
tar -xzvf Ascend310B-source.tar.gz
例如用户整机的boardid为33150,故dts文件名称为“hi1910B-asic-M150-B33.dts”。具体请参见DTB文件。
compatible = "hisilicon,hi1910B-evb", "hisilicon,ascend610"; hisi,boardid = <0x0 0x3 0x3 0x1 0x5 0x0>; //修改为实际整机boardid #address-cells = <0x2>; #size-cells = <0x2>; interrupt-parent = <0x1>; model = "Hisilicon PhosphorHi1910B evb"; /include/ "base/hi1910B-asic-kernel-rc.dtsi" /include/ "base/hi1910B-commmon-smmu.dtsi" /include/ "base/hi1910B-mpam.dtsi" /include/ "base/hi1910B-lp-pm.dtsi" /include/ "base/hi1910B-lp-devmng.dtsi" /include/ "base/hi1910B-mbigen-ao.dtsi" /include/ "base/hi1910B-gpio.dtsi" /include/ "base/hi1910B-ipcdrv.dtsi" /include/ "base/hi1910B-ts-drv.dtsi" /include/ "base/hi1910B-tsdrv.dtsi" /include/ "base/hi1910B-network-M150-B50.dtsi" /include/ "base/hi1910B-hidvpp.dtsi" /include/ "base/hi1910B-hdmi.dtsi" /include/ "product/hi1910B-audio.dtsi" /include/ "base/hi1910B-mipitx.dtsi" /include/ "base/hi1910B-vdp.dtsi" /include/ "base/hi1910B-isp.dtsi" /include/ "base/hi1910B-hilink.dtsi" /include/ "base/hi1910B-mntn-milanr3.dtsi" /include/ "base/hi1910B-gpu.dtsi" /include/ "base/hi1910B-ctl.dtsi" /include/ "base/hi1910B-itrustee.dtsi" /include/ "base/hi1910B-sata.dtsi" ///include/ "product/hi1910B-pcie-rc-M150-B50.dtsi" //注释掉PCIe的.dtsi文件 /include/ "product/hi1910B-mdio-M150-B50.dtsi" /include/ "product/hi1910B-pinctrl-M150-B50.dtsi" //确认所使用的pinctrl的.dtsi文件及路径 /include/ "product/hi1910B-can-M150-B50.dtsi" /include/ "product/hi1910B-hiusbc-B50.dtsi" /include/ "product/hi1910B-emmc-M150-B50.dtsi" /include/ "product/hi1910B-i2c-M150-B50.dtsi" /include/ "product/hi1910B-spi-M150-B50.dtsi"
如果已调测SerDes接口,直接在已修改的产品dts文件中确认pinctrl的.dtsi文件及路径即可,无需修改boardid和注释PCIe的.dtsi文件。
uart3: uart@82240000 { compatible = "arm,pl011", "arm,primecell"; reg = < 0x00 0x82240000 0x00 0x1000 >; //配置为UART基地址 interrupts = < 0x00 0xac 0x04 >; //配置UART中断号 current-speed = < 0x1c200 >; arm,primecell-periphid = <0x00241011>; clocks = <&refclk150M>; //配置UART时钟频率 clock-names = "apb_pclk"; pinctrl-names = "default", "idle"; pinctrl-0 = <&uart3_tx_pmx_func &uart3_rx_pmx_func>; //工作状态 pinctrl-1 = <&uart3_tx_pmx_idle &uart3_rx_pmx_idle>; //休眠状态 };
cd product
vim hi1910B-pinctrl-M150-B50.dtsi
pmx_peri: pinmux@82320000 { compatible = "pinctrl-single", "pinctrl-single1"; reg = <0x0 0x82320000 0x0 0x9c>; //寄存器中utxd3、urxd3的MUX Base Address。 #gpio-range-cells = <3>; pinctrl-single,register-width = <32>; pinctrl-single,function-mask = <7>; uart3_tx_pmx_func: uart3_tx_pmx_func { pinctrl-single,pins = <0x50 0x0>; //0x50为寄存器中管脚的Offset Address,0x0为二进制的管脚复用关系000(pad_utxd3)发送 }; uart3_tx_pmx_idle: uart3_tx_pmx_idle { pinctrl-single,pins = <0x50 0x0>; //0x50为寄存器中管脚的Offset Address,0x0为二进制的管脚复用关系000(pad_utxd3)发送 }; uart3_rx_pmx_func:uart3_rx_pmx_func { pinctrl-single,pins = <0x54 0x0>; //0x54为寄存器中管脚的Offset Address,0x0为二进制的管脚复用关系000(pad_urxd3)接收 }; uart3_rx_pmx_idle: uart3_rx_pmx_idle { pinctrl-single,pins = <0x54 0x0>; //0x54为寄存器中管脚的Offset Address,0x0为二进制的管脚复用关系000(pad_urxd3)接收 }; };
同一个管脚只能复用为一种功能,如uart3或can,不可同时复用为多个功能。
cd /opt/Ascend310B-source/dtb/dtbtool/
set(DTS_BASE_DIR ${TOP_DIR}/tools/customize/dts) if(PRODUCT STREQUAL "ascend310Besl" OR PRODUCT STREQUAL "ascend310B" OR PRODUCT STREQUAL "ascend310Bemu" OR PRODUCT STREQUAL "ascend310Brc" OR PRODUCT STREQUAL "ascend310Brcesl" OR PRODUCT STREQUAL "ascend310Brcemu") # 当前driver跟esl用相同的dts,后期需要更新到单独的目录 set(DTS_SRC_DIR ${DTS_BASE_DIR}/hi1910b/hi1910BL) set(DTS_FILE_LIST hi1910B-default.dts unreleased/hi1911-esl/hi1911-esl-b600.dts unreleased/hi1911-esl/hi1911-esl-rc-b600.dts unreleased/hi1911-fpga/hi1911-fpga-b600_b0.dts unreleased/hi1911-fpga/hi1911-fpga-b600_b0_b1.dts unreleased/hi1911-fpga/hi1911-fpga-b600_b0_b2.dts unreleased/hi1911-fpga/hi1911-fpga-rc-b600_b0.dts unreleased/hi1911-fpga/hi1911-fpga-rc-b600_b0_b1.dts unreleased/hi1911-fpga/hi1911-fpga-rc-b600_b0_b2.dts hi1910B-evb-900.dts hi1910B-evb-901.dts hi1910B-evb-902.dts hi1910B-evb-903.dts hi1910B-evb-905.dts hi1910B-asic-M150-B50.dts hi1910B-asic-M100-B51.dts hi1910B-asic-M150-B51.dts hi1910B-asic-M160-B51.dts hi1910B-asic-M100-B00.dts hi1910B-asic-M101-B00.dts hi1910B-asic-M150-B00.dts hi1910B-asic-M151-B00.dts hi1910B-asic-M150-B33.dts)
新增加的dts只能在加粗字体段落末尾添加。