diff options
| author | Xavier Del Campo Romero <xavi92@disroot.org> | 2025-11-11 00:05:00 +0100 |
|---|---|---|
| committer | Xavier Del Campo Romero <xavi92@disroot.org> | 2025-11-11 00:08:15 +0100 |
| commit | f7ad4d9216b488f76ed4b3c8e423cd926e134b9d (patch) | |
| tree | 39a83931c1c8a5e6d025623aba5e5826c7ef38e0 /src/drv | |
| parent | 7861a52adf92a083bb2aed4c35f98d8035dce032 (diff) | |
| download | wnix-f7ad4d9216b488f76ed4b3c8e423cd926e134b9d.tar.gz | |
WIP
Diffstat (limited to 'src/drv')
| -rw-r--r-- | src/drv/ps1/cd/src/getstat.c | 6 | ||||
| -rw-r--r-- | src/drv/ps1/cd/src/update.c | 4 | ||||
| -rw-r--r-- | src/drv/ps1/irq/CMakeLists.txt | 3 | ||||
| -rw-r--r-- | src/drv/ps1/sio/src/update.c | 5 |
4 files changed, 16 insertions, 2 deletions
diff --git a/src/drv/ps1/cd/src/getstat.c b/src/drv/ps1/cd/src/getstat.c index 34bdaf5..714238b 100644 --- a/src/drv/ps1/cd/src/getstat.c +++ b/src/drv/ps1/cd/src/getstat.c @@ -26,12 +26,16 @@ 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; + p->next = NULL; + return 0; + if (drv_ps1_event_test(p->event)) { p->available = !g->status.bits.shell_open; if (!p->head) - return drv_ps1_cd_getstat(); + return 0; return p->head->f(); } diff --git a/src/drv/ps1/cd/src/update.c b/src/drv/ps1/cd/src/update.c index 148dd87..022a678 100644 --- a/src/drv/ps1/cd/src/update.c +++ b/src/drv/ps1/cd/src/update.c @@ -26,7 +26,9 @@ 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->head) + return p->head->f(); + 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; |
