隨意的標題一
最近碰到個需求,原來am5728的console是在uart3上面的,然後需要改到uart8,一般來說這個並沒有什麼難度,但是看了下,有點懵逼,因爲麻煩的是uboot串口默認1-6是隨意切換的,但是後面7往後就沒有那麼簡單了.於是還是寫下來記錄一下.撿一些重要的說一下.
主要參照的是ti論壇內的一個回覆修改的,但是當前寫博客的時候,我已經懶得去找那個鏈接了…
代碼
- 修改dtb切換輸出串口,並使能串口8
diff --git a/arch/arm/dts/am57xx-beagle-x15-common.dtsi b/arch/arm/dts/am57xx-beagle-x15-common.dtsi
index 49aeecd..6af99c3 100644
--- a/arch/arm/dts/am57xx-beagle-x15-common.dtsi
+++ b/arch/arm/dts/am57xx-beagle-x15-common.dtsi
@@ -24,7 +24,7 @@
};
chosen {
- stdout-path = &uart3;
+ stdout-path = &uart8;
};
memory@0 {
@@ -587,3 +587,7 @@
status = "okay";
};
};
+
+&uart8 {
+ status = "okay";
+};
diff --git a/arch/arm/dts/am57xx-idk-common.dtsi b/arch/arm/dts/am57xx-idk-common.dtsi
index fa5a078..561fe30 100644
--- a/arch/arm/dts/am57xx-idk-common.dtsi
+++ b/arch/arm/dts/am57xx-idk-common.dtsi
@@ -15,7 +15,7 @@
};
chosen {
- stdout-path = &uart3;
+ stdout-path = &uart8;
};
vmain: fixedregulator-vmain {
@@ -416,6 +416,9 @@
no-1-8-v;
/delete-property/ mmc-hs200-1_8v;
};
+&uart8 {
+ status = "okay";
+};
&dcan1 {
status = "okay";
當初沒有仔細看是哪個dts文件,所以索性都改了.
- 不瞭解
reg-shift = <2>;
};
-&uart3 {
+&uart8 {
u-boot,dm-spl;
reg-shift = <2>;
};
這裏並不是很瞭解,待我完了之後去看下代碼理解一下.
- 打開串口時鐘
diff --git a/arch/arm/include/asm/omap_common.h b/arch/arm/include/asm/omap_common.h
index 5710136..b96c1bf 100644
--- a/arch/arm/include/asm/omap_common.h
+++ b/arch/arm/include/asm/omap_common.h
@@ -284,6 +284,7 @@ struct prcm_regs {
u32 cm_l4per_i2c5_clkctrl;
u32 cm_l4per_uart5_clkctrl;
u32 cm_l4per_uart6_clkctrl;
+ u32 cm_l4per_uart8_clkctrl;
u32 cm_l4sec_clkstctrl;
u32 cm_l4sec_staticdep;
u32 cm_l4sec_dynamicdep;
diff --git a/arch/arm/mach-omap2/clocks-common.c b/arch/arm/mach-omap2/clocks-common.c
index 93c4c6f..8d68962 100644
--- a/arch/arm/mach-omap2/clocks-common.c
+++ b/arch/arm/mach-omap2/clocks-common.c
@@ -805,7 +805,7 @@ static void setup_clocks_for_console(void)
MODULE_CLKCTRL_MODULEMODE_SW_EXPLICIT_EN <<
MODULE_CLKCTRL_MODULEMODE_SHIFT);
- clrsetbits_le32((*prcm)->cm_l4per_uart3_clkctrl,
+ clrsetbits_le32((*prcm)->cm_l4per_uart8_clkctrl,
MODULE_CLKCTRL_MODULEMODE_MASK,
MODULE_CLKCTRL_MODULEMODE_SW_EXPLICIT_EN <<
MODULE_CLKCTRL_MODULEMODE_SHIFT);
diff --git a/arch/arm/mach-omap2/omap5/prcm-regs.c b/arch/arm/mach-omap2/omap5/prcm-regs.c
index b5f1d70..aff2896 100644
--- a/arch/arm/mach-omap2/omap5/prcm-regs.c
+++ b/arch/arm/mach-omap2/omap5/prcm-regs.c
@@ -970,6 +970,7 @@ struct prcm_regs const dra7xx_prcm = {
.cm_l4per_uart3_clkctrl = 0x4a009850,
.cm_l4per_uart4_clkctrl = 0x4a009858,
.cm_l4per_uart5_clkctrl = 0x4a009870,
+ .cm_l4per_uart8_clkctrl = 0x4a0098e0,
.cm_l4sec_clkstctrl = 0x4a009880,
.cm_l4sec_staticdep = 0x4a009884,
.cm_l4sec_dynamicdep = 0x4a009888,
- 切換cmdline裏面傳給kernel的參數讓kernel也在uart8輸出
diff --git a/include/configs/am57xx_evm.h b/include/configs/am57xx_evm.h
index cf5cacd..b59a139 100644
--- a/include/configs/am57xx_evm.h
+++ b/include/configs/am57xx_evm.h
@@ -27,7 +27,7 @@
#define CONFIG_ENV_OFFSET_REDUND (CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE)
#define CONFIG_SYS_REDUNDAND_ENVIRONMENT
-#define CONSOLEDEV "ttyO2"
+#define CONSOLEDEV "ttyO7"
#define CONFIG_SYS_NS16550_COM1 UART1_BASE /* Base EVM has UART0 */
#define CONFIG_SYS_NS16550_COM2 UART2_BASE /* UART2 */
#define CONFIG_SYS_NS16550_COM3 UART3_BASE /* UART3 */
--
大概是這麼一個節奏.