UPSTREAM: ANDROID: fiq_debugger: Add option to apply uart overlay by FIQ_DEBUGGER_UART_OVERLAY

fiq_debugger is taking over uart, so it is necessary to disable
original uart in DT file. It can be done manually or by overlay.

Change-Id: I9f50ec15b0e22e602d73b9f745fc8666f8925d09
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
Signed-off-by: Tao Huang <huangtao@rock-chips.com>
(cherry picked from https://android.googlesource.com/kernel/common:android-4.14
 commit 0ff9e291c1181f124a4ea58ce95f09b7acb735cc)
This commit is contained in:
Dmitry Shmidt
2016-05-04 13:51:38 -07:00
committed by Tao Huang
parent a8f5f5eb1a
commit a5e1fd5c5a
2 changed files with 39 additions and 0 deletions

View File

@@ -42,6 +42,15 @@ config FIQ_DEBUGGER_CONSOLE_DEFAULT_ENABLE
If enabled, this puts the fiq debugger into console mode by default.
Otherwise, the fiq debugger will start out in debug mode.
config FIQ_DEBUGGER_UART_OVERLAY
bool "Install uart DT overlay"
depends on FIQ_DEBUGGER
select OF_OVERLAY
default n
help
If enabled, fiq debugger is calling fiq_debugger_uart_overlay()
that will apply overlay uart_overlay@0 to disable proper uart.
config FIQ_WATCHDOG
bool
select FIQ_DEBUGGER

View File

@@ -39,6 +39,10 @@
#include <asm/fiq_glue.h>
#endif
#ifdef CONFIG_FIQ_DEBUGGER_UART_OVERLAY
#include <linux/of.h>
#endif
#include <linux/uaccess.h>
#include "fiq_debugger.h"
@@ -1201,10 +1205,36 @@ static struct platform_driver fiq_debugger_driver = {
},
};
#if defined(CONFIG_FIQ_DEBUGGER_UART_OVERLAY)
int fiq_debugger_uart_overlay(void)
{
struct device_node *onp = of_find_node_by_path("/uart_overlay@0");
int ret;
if (!onp) {
pr_err("serial_debugger: uart overlay not found\n");
return -ENODEV;
}
ret = of_overlay_create(onp);
if (ret < 0) {
pr_err("serial_debugger: fail to create overlay: %d\n", ret);
of_node_put(onp);
return ret;
}
pr_info("serial_debugger: uart overlay applied\n");
return 0;
}
#endif
static int __init fiq_debugger_init(void)
{
#if defined(CONFIG_FIQ_DEBUGGER_CONSOLE)
fiq_debugger_tty_init();
#endif
#if defined(CONFIG_FIQ_DEBUGGER_UART_OVERLAY)
fiq_debugger_uart_overlay();
#endif
return platform_driver_register(&fiq_debugger_driver);
}