HI3520D在内核中复用UART2,UART3管脚

来源:互联网 发布:淘宝上的汉斯格雅花洒 编辑:程序博客网 时间:2024/04/30 05:44

HI3520D在内核中复用UART2,UART3管脚

linux-3.0.y/arch/arm/mach-hi3520d/core.c文件中合适的位置假如

#define GK_HW_WEG(gkval,gkaddr) writel(gkval,gkaddr)#defineGK_IOCFG_BASE_ADDR0x200F0000/*IO口复用寄存器地址空间映射*/#defineGK_GPIO0_BASE_ADDR0x20150000/*GPIO0的地址空间映射*/#defineGK_GPIO1_BASE_ADDR0x20160000/*GPIO1的地址空间映射*/#defineGK_GPIO2_BASE_ADDR0x20170000/*GPIO2的地址空间映射*/#defineGK_GPIO3_BASE_ADDR0x20180000/*GPIO3的地址空间映射*/#defineGK_GPIO4_BASE_ADDR0x20190000/*GPIO4的地址空间映射*/#defineGK_GPIO5_BASE_ADDR0x201A0000/*GPIO5的地址空间映射*/#define GK_GPIO6_BASE_ADDR0x201B0000/*GPIO6的地址空间映射*/#defineGK_GPIO7_BASE_ADDR0x201C0000/*GPIO7的地址空间映射*/#defineGK_GPIO8_BASE_ADDR0x201D0000/*GPIO7的地址空间映射*/#defineGK_REG_UART1RXD_OFFSETIO_ADDRESS(GK_IOCFG_BASE_ADDR + 0x050)/*UART1_RXD偏移寄存器*/#defineGK_REG_UART1TXD_OFFSETIO_ADDRESS(GK_IOCFG_BASE_ADDR + 0x058)/*UART1_TXD偏移寄存器*/#defineGK_REG_UART2RXD_OFFSETIO_ADDRESS(GK_IOCFG_BASE_ADDR + 0x05C)/*UART2_RXD偏移寄存器*/#defineGK_REG_UART2TXD_OFFSETIO_ADDRESS(GK_IOCFG_BASE_ADDR + 0x060)/*UART2_TXD偏移寄存器*/#defineGK_REG_UART3RXD_OFFSETIO_ADDRESS(GK_IOCFG_BASE_ADDR + 0x0BC)/*UART3_RXD偏移寄存器*/#defineGK_REG_UART3TXD_OFFSETIO_ADDRESS(GK_IOCFG_BASE_ADDR + 0x0B8)/*UART3_TXD偏移寄存器*/#define gk_cfg_uart_pin()({\GK_HW_WEG(0x01,GK_REG_UART1RXD_OFFSET);\GK_HW_WEG(0x01,GK_REG_UART1TXD_OFFSET);\GK_HW_WEG(0x01,GK_REG_UART2RXD_OFFSET);\GK_HW_WEG(0x01,GK_REG_UART2TXD_OFFSET);\GK_HW_WEG(0x01,GK_REG_UART3RXD_OFFSET);\GK_HW_WEG(0x01,GK_REG_UART3TXD_OFFSET);\})


在 uart_clk_init 函数最后加入初始化


static void  uart_clk_init(unsigned long clk){uart_clk.rate = clk;lookups[0].dev_id = "uart:0";lookups[0].clk = &uart_clk;lookups[1].dev_id = "uart:1";lookups[1].clk = &uart_clk;lookups[2].dev_id = "uart:2";lookups[2].clk = &uart_clk;lookups[3].dev_id = "uart:3";lookups[3].clk = &uart_clk;gk_cfg_uart_pin();}




0 0