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>
This commit is contained in:
Dmitry Shmidt 2016-05-04 13:51:38 -07:00 committed by Amit Pundir
parent 535e33b7b5
commit d7c65f6e91
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. If enabled, this puts the fiq debugger into console mode by default.
Otherwise, the fiq debugger will start out in debug mode. 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 config FIQ_WATCHDOG
bool bool
select FIQ_DEBUGGER select FIQ_DEBUGGER

View File

@ -39,6 +39,10 @@
#include <asm/fiq_glue.h> #include <asm/fiq_glue.h>
#endif #endif
#ifdef CONFIG_FIQ_DEBUGGER_UART_OVERLAY
#include <linux/of.h>
#endif
#include <linux/uaccess.h> #include <linux/uaccess.h>
#include "fiq_debugger.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) static int __init fiq_debugger_init(void)
{ {
#if defined(CONFIG_FIQ_DEBUGGER_CONSOLE) #if defined(CONFIG_FIQ_DEBUGGER_CONSOLE)
fiq_debugger_tty_init(); fiq_debugger_tty_init();
#endif
#if defined(CONFIG_FIQ_DEBUGGER_UART_OVERLAY)
fiq_debugger_uart_overlay();
#endif #endif
return platform_driver_register(&fiq_debugger_driver); return platform_driver_register(&fiq_debugger_driver);
} }