From 37893cd8abd955e85fb5836dba3b5cdaeff4c08d Mon Sep 17 00:00:00 2001 From: OBattler Date: Mon, 18 Jul 2022 23:39:40 +0200 Subject: [PATCH] PnP-related IDE fixes. --- src/disk/hdc_ide.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/disk/hdc_ide.c b/src/disk/hdc_ide.c index b005cbd6d..be799916a 100644 --- a/src/disk/hdc_ide.c +++ b/src/disk/hdc_ide.c @@ -2614,7 +2614,7 @@ ide_read_ali_76(void) } -static void +void ide_set_handlers(uint8_t board) { if (ide_boards[board] == NULL) @@ -2636,7 +2636,7 @@ ide_set_handlers(uint8_t board) } -static void +void ide_remove_handlers(uint8_t board) { if (ide_boards[board] == NULL) @@ -2878,11 +2878,11 @@ ide_board_init(int board, int irq, int base_main, int side_main, int type) void ide_pnp_config_changed(uint8_t ld, isapnp_device_config_t *config, void *priv) { + intptr_t board = (intptr_t) priv; + if (ld) return; - intptr_t board = (intptr_t) priv; - if (ide_boards[board]->base_main || ide_boards[board]->side_main) { ide_remove_handlers(board); ide_boards[board]->base_main = ide_boards[board]->side_main = 0; @@ -2891,10 +2891,10 @@ ide_pnp_config_changed(uint8_t ld, isapnp_device_config_t *config, void *priv) ide_boards[board]->irq = -1; if (config->activate) { - ide_boards[board]->base_main = config->io[0].base; - ide_boards[board]->side_main = config->io[1].base; + ide_boards[board]->base_main = (config->io[0].base != ISAPNP_IO_DISABLED) ? config->io[0].base : 0x0000; + ide_boards[board]->side_main = (config->io[1].base != ISAPNP_IO_DISABLED) ? config->io[1].base : 0x0000; - if ((ide_boards[board]->base_main != ISAPNP_IO_DISABLED) && (ide_boards[board]->side_main != ISAPNP_IO_DISABLED)) + if (ide_boards[board]->base_main && ide_boards[board]->side_main) ide_set_handlers(board); if (config->irq[0].irq != ISAPNP_IRQ_DISABLED)