aboutsummaryrefslogtreecommitdiff
path: root/src/drv
diff options
context:
space:
mode:
authorXavier Del Campo Romero <xavi92@disroot.org>2025-09-08 20:47:23 +0200
committerXavier Del Campo Romero <xavi92@disroot.org>2025-09-15 23:14:43 +0200
commit20d8f138db4ccac83a89a4339271b0ac12d10e12 (patch)
treed15832e2d39b614540fc9b2b87f00e8b2feda147 /src/drv
parentb42e218f0d66af002c585a6bb0f586f92a628a40 (diff)
downloadwnix-sio-115200.tar.gz
Diffstat (limited to 'src/drv')
-rw-r--r--src/drv/ps1/cd/src/getstat.c3
-rw-r--r--src/drv/ps1/cd/src/update.c2
-rw-r--r--src/drv/ps1/irq/CMakeLists.txt3
-rw-r--r--src/drv/ps1/sio/src/update.c5
4 files changed, 12 insertions, 1 deletions
diff --git a/src/drv/ps1/cd/src/getstat.c b/src/drv/ps1/cd/src/getstat.c
index 34bdaf5..d3e862a 100644
--- a/src/drv/ps1/cd/src/getstat.c
+++ b/src/drv/ps1/cd/src/getstat.c
@@ -26,6 +26,9 @@ static int wait_event(void)
struct cd_prv *const p = &drv_ps1_cd_prv;
struct cd_prv_getstat *const g = &p->u.getstat;
+ p->available = true;
+ return 0;
+
if (drv_ps1_event_test(p->event))
{
p->available = !g->status.bits.shell_open;
diff --git a/src/drv/ps1/cd/src/update.c b/src/drv/ps1/cd/src/update.c
index 148dd87..cda44c3 100644
--- a/src/drv/ps1/cd/src/update.c
+++ b/src/drv/ps1/cd/src/update.c
@@ -26,7 +26,7 @@ int drv_ps1_cd_update(struct drv_ps1_cd *const cd)
{
struct cd_prv *const p = &drv_ps1_cd_prv;
- if (p->next())
+ if (p->next && p->next())
return -1;
else if (p->available ^ cd->available)
{
diff --git a/src/drv/ps1/irq/CMakeLists.txt b/src/drv/ps1/irq/CMakeLists.txt
index 8327cd5..ee807a0 100644
--- a/src/drv/ps1/irq/CMakeLists.txt
+++ b/src/drv/ps1/irq/CMakeLists.txt
@@ -18,3 +18,6 @@ add_library(drv_ps1_irq)
add_subdirectory(src)
target_include_directories(drv_ps1_irq PUBLIC include PRIVATE private_include)
target_link_libraries(drv_ps1_irq PUBLIC c PRIVATE drv_ps1_bios)
+
+
+target_link_libraries(drv_ps1_irq PRIVATE kprintf)
diff --git a/src/drv/ps1/sio/src/update.c b/src/drv/ps1/sio/src/update.c
index eac875c..85797df 100644
--- a/src/drv/ps1/sio/src/update.c
+++ b/src/drv/ps1/sio/src/update.c
@@ -86,10 +86,15 @@ static int tx(struct drv_ps1_sio *const s)
return 0;
}
+int sio_stat_overrun;
+
int drv_ps1_sio_update(struct drv_ps1_sio *const s)
{
if (SIO_STAT->bits.rx_fifo_overrun)
+ {
+ sio_stat_overrun = 1;
SIO_CTRL->bits.ack = 1;
+ }
if (init(s) || rx(s) || tx(s))
return -1;