Support for status set from the core.

This commit is contained in:
sorgelig
2018-09-09 12:01:02 +08:00
parent e3ca02f54e
commit f909ce8acc
4 changed files with 23 additions and 6 deletions

View File

@@ -210,16 +210,17 @@ void spi_osd_cmd32le(uint8_t cmd, uint32_t parm)
}
/* User_io related SPI functions */
void spi_uio_cmd_cont(uint8_t cmd)
uint8_t spi_uio_cmd_cont(uint8_t cmd)
{
EnableIO();
spi8(cmd);
return spi_b(cmd);
}
void spi_uio_cmd(uint8_t cmd)
uint8_t spi_uio_cmd(uint8_t cmd)
{
spi_uio_cmd_cont(cmd);
uint8_t res = spi_uio_cmd_cont(cmd);
DisableIO();
return res;
}
void spi_uio_cmd8_cont(uint8_t cmd, uint8_t parm)

4
spi.h
View File

@@ -51,8 +51,8 @@ void spi_osd_cmd32le_cont(uint8_t cmd, uint32_t parm);
void spi_osd_cmd32le(uint8_t cmd, uint32_t parm);
/* User_io related SPI functions */
void spi_uio_cmd_cont(uint8_t cmd);
void spi_uio_cmd(uint8_t cmd);
uint8_t spi_uio_cmd_cont(uint8_t cmd);
uint8_t spi_uio_cmd(uint8_t cmd);
void spi_uio_cmd8(uint8_t cmd, uint8_t parm);
void spi_uio_cmd8_cont(uint8_t cmd, uint8_t parm);
void spi_uio_cmd16(uint8_t cmd, uint16_t parm);

View File

@@ -1554,6 +1554,21 @@ void user_io_poll()
DisableIO();
*/
static u_int8_t last_status_change = 0;
char stchg = spi_uio_cmd_cont(UIO_GET_STATUS);
if ((stchg & 0xF0) == 0xA0 && last_status_change != (stchg & 0xF))
{
last_status_change = (stchg & 0xF);
uint32_t st = spi32w(0);
DisableIO();
user_io_8bit_set_status(st, ~UIO_STATUS_RESET);
//printf("** new status from core: %08X\n", st);
}
else
{
DisableIO();
}
// sd card emulation
if (is_x86_core())
{

View File

@@ -61,6 +61,7 @@
#define UIO_AUDVOL 0x26 // Digital volume as a number of bits to shift to the right
#define UIO_SETHEIGHT 0x27 // Set scaled vertical resolution (to reduce scaling artefacts)
#define UIO_GETUARTFLG 0x28 // Get UART_FLG_*
#define UIO_GET_STATUS 0x29 // Update status from the core
// codes as used by 8bit for file loading from OSD
#define UIO_FILE_TX 0x53