PnP-related IDE fixes.
This commit is contained in:
@@ -2614,7 +2614,7 @@ ide_read_ali_76(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
void
|
||||||
ide_set_handlers(uint8_t board)
|
ide_set_handlers(uint8_t board)
|
||||||
{
|
{
|
||||||
if (ide_boards[board] == NULL)
|
if (ide_boards[board] == NULL)
|
||||||
@@ -2636,7 +2636,7 @@ ide_set_handlers(uint8_t board)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
void
|
||||||
ide_remove_handlers(uint8_t board)
|
ide_remove_handlers(uint8_t board)
|
||||||
{
|
{
|
||||||
if (ide_boards[board] == NULL)
|
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
|
void
|
||||||
ide_pnp_config_changed(uint8_t ld, isapnp_device_config_t *config, void *priv)
|
ide_pnp_config_changed(uint8_t ld, isapnp_device_config_t *config, void *priv)
|
||||||
{
|
{
|
||||||
|
intptr_t board = (intptr_t) priv;
|
||||||
|
|
||||||
if (ld)
|
if (ld)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
intptr_t board = (intptr_t) priv;
|
|
||||||
|
|
||||||
if (ide_boards[board]->base_main || ide_boards[board]->side_main) {
|
if (ide_boards[board]->base_main || ide_boards[board]->side_main) {
|
||||||
ide_remove_handlers(board);
|
ide_remove_handlers(board);
|
||||||
ide_boards[board]->base_main = ide_boards[board]->side_main = 0;
|
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;
|
ide_boards[board]->irq = -1;
|
||||||
|
|
||||||
if (config->activate) {
|
if (config->activate) {
|
||||||
ide_boards[board]->base_main = config->io[0].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;
|
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);
|
ide_set_handlers(board);
|
||||||
|
|
||||||
if (config->irq[0].irq != ISAPNP_IRQ_DISABLED)
|
if (config->irq[0].irq != ISAPNP_IRQ_DISABLED)
|
||||||
|
|||||||
Reference in New Issue
Block a user