ARM: rockchip: fix for function tracer
author黄涛 <huangtao@rock-chips.com>
Tue, 27 May 2014 10:33:26 +0000 (18:33 +0800)
committer黄涛 <huangtao@rock-chips.com>
Tue, 27 May 2014 10:37:34 +0000 (18:37 +0800)
arch/arm/mach-rockchip/pm-rk3188.c
arch/arm/mach-rockchip/pm-rk3288.c

index 68cb66d51ee6d2f35960979e9064d6425daccb62..cf41244442f63d74638526b4ed055a79a73bc28c 100755 (executable)
@@ -167,6 +167,7 @@ static void  inline uart_printch(char byte)
         
         rkpm_udelay(1);
         
+write_uart:
        writel_relaxed(byte, RK_DEBUG_UART_VIRT);
        dsb();
 
@@ -174,11 +175,13 @@ static void  inline uart_printch(char byte)
        while (!(readl_relaxed(RK_DEBUG_UART_VIRT + 0x14) & 0x40))
                barrier();
     
+       if (byte == '\n') {
+               byte = '\r';
+               goto write_uart;
+       }
+
          cru_writel(reg_save[0]|0x1<<((u_pclk_id%16)+16),RK3188_CRU_GATEID_CONS(u_clk_id));         
          cru_writel(reg_save[1]|0x1<<((u_pclk_id%16)+16),RK3188_CRU_GATEID_CONS(u_pclk_id));
-        
-       if (byte == '\n')
-               uart_printch('\r');
 }
 
 void PIE_FUNC(sram_printch)(char byte)
index f1db7b488277773b920ccce75619b4efe817c6b9..2aa551f38538ed0af3b8cdba1aff36e48aabcb6c 100755 (executable)
@@ -1223,6 +1223,7 @@ static void  inline uart_printch(char byte)
         
         rkpm_udelay(1);
         
+write_uart:
        writel_relaxed(byte, RK_DEBUG_UART_VIRT);
        dsb();
 
@@ -1230,11 +1231,13 @@ static void  inline uart_printch(char byte)
        while (!(readl_relaxed(RK_DEBUG_UART_VIRT + 0x14) & 0x40))
                barrier();
     
+       if (byte == '\n') {
+               byte = '\r';
+               goto write_uart;
+       }
+
          cru_writel(reg_save[0]|CRU_W_MSK(u_clk_id%16,0x1),RK3288_CRU_GATEID_CONS(u_clk_id));         
          cru_writel(reg_save[1]|CRU_W_MSK(u_pclk_id%16,0x1),RK3288_CRU_GATEID_CONS(u_pclk_id));
-        
-       if (byte == '\n')
-               uart_printch('\r');
 }
 
 void PIE_FUNC(sram_printch)(char byte)