From 7498ed6627f615b3416cfcd1aead76e132055c00 Mon Sep 17 00:00:00 2001
From: Huibin Hong <huibin.hong@rock-chips.com>
Date: Wed, 16 Sep 2015 19:28:21 +0800
Subject: [PATCH] fiq debugger: driver update
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit

1. Change fiq debugger trigger mode, enter “fiq” instead of
F5 with SecureCRT

Change-Id: I3b52ad435af3211675a8416c6e016147886def8d
Signed-off-by: Huibin Hong <huibin.hong@rock-chips.com>
---
 arch/arm/mach-rockchip/rk_fiq_debugger.c | 21 ++++++++++++++++++---
 1 file changed, 18 insertions(+), 3 deletions(-)

diff --git a/arch/arm/mach-rockchip/rk_fiq_debugger.c b/arch/arm/mach-rockchip/rk_fiq_debugger.c
index 56e4d7471b32..105a9a5f4f46 100755
--- a/arch/arm/mach-rockchip/rk_fiq_debugger.c
+++ b/arch/arm/mach-rockchip/rk_fiq_debugger.c
@@ -126,6 +126,9 @@ static int debug_getc(struct platform_device *pdev)
 {
 	unsigned int lsr;
 	struct rk_fiq_debugger *t;
+	unsigned int temp;
+	static unsigned int n;
+	static char buf[32];
 
 	t = container_of(dev_get_platdata(&pdev->dev), typeof(*t), pdata);
 
@@ -133,11 +136,23 @@ static int debug_getc(struct platform_device *pdev)
 
 	if (lsr & UART_LSR_BI || t->break_seen) {
 		t->break_seen = false;
-		return FIQ_DEBUGGER_BREAK;
+		return FIQ_DEBUGGER_NO_CHAR;
 	}
 
-	if (lsr & UART_LSR_DR)
-		return rk_fiq_read(t, UART_RX);
+	if (lsr & UART_LSR_DR) {
+		temp = rk_fiq_read(t, UART_RX);
+		buf[n & 0x1f] = temp;
+		n++;
+		if (temp == 'q' && n > 2) {
+			if ((buf[(n - 2) & 0x1f] == 'i') &&
+			    (buf[(n - 3) & 0x1f] == 'f'))
+				return FIQ_DEBUGGER_BREAK;
+			else
+				return temp;
+		} else {
+			return temp;
+		}
+	}
 
 	return FIQ_DEBUGGER_NO_CHAR;
 }
-- 
2.34.1