rpi: Wait for keypress on panic
* Cleanup serial shutdown process
This commit is contained in:
@@ -20,7 +20,7 @@
|
|||||||
UartPL011 gLoaderUART(uart_base_debug());
|
UartPL011 gLoaderUART(uart_base_debug());
|
||||||
|
|
||||||
|
|
||||||
static int32 sSerialEnabled = 0;
|
static bool sSerialEnabled = false;
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -30,10 +30,17 @@ serial_putc(char c)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
extern "C" int
|
||||||
|
serial_getc(bool wait)
|
||||||
|
{
|
||||||
|
return gLoaderUART.GetChar(wait);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
extern "C" void
|
extern "C" void
|
||||||
serial_puts(const char* string, size_t size)
|
serial_puts(const char* string, size_t size)
|
||||||
{
|
{
|
||||||
if (sSerialEnabled <= 0)
|
if (!sSerialEnabled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
while (size-- > 0) {
|
while (size-- > 0) {
|
||||||
@@ -53,23 +60,26 @@ serial_puts(const char* string, size_t size)
|
|||||||
extern "C" void
|
extern "C" void
|
||||||
serial_disable(void)
|
serial_disable(void)
|
||||||
{
|
{
|
||||||
sSerialEnabled--;
|
if (sSerialEnabled)
|
||||||
|
serial_cleanup();
|
||||||
|
|
||||||
|
gLoaderUART.Disable();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
extern "C" void
|
extern "C" void
|
||||||
serial_enable(void)
|
serial_enable(void)
|
||||||
{
|
{
|
||||||
sSerialEnabled++;
|
gLoaderUART.Enable();
|
||||||
|
sSerialEnabled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
extern "C" void
|
extern "C" void
|
||||||
serial_cleanup(void)
|
serial_cleanup(void)
|
||||||
{
|
{
|
||||||
// Transmit the last of our fifo
|
sSerialEnabled = false;
|
||||||
gLoaderUART.FlushTx();
|
gLoaderUART.FlushTx();
|
||||||
gLoaderUART.Disable();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -93,6 +93,9 @@ void
|
|||||||
platform_exit(void)
|
platform_exit(void)
|
||||||
{
|
{
|
||||||
serial_cleanup();
|
serial_cleanup();
|
||||||
|
// Wait for keypress on serial
|
||||||
|
serial_getc(true);
|
||||||
|
serial_disable();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user