Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/block/isa-ide/main.c

    r832cbe7 r443695e  
    11/*
    2  * Copyright (c) 2025 Jiri Svoboda
     2 * Copyright (c) 2024 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    4343
    4444#include "isa-ide.h"
    45 #include "isa-ide_hw.h"
    4645#include "main.h"
    4746
     
    7170        async_sess_t *parent_sess;
    7271        hw_res_list_parsed_t hw_res;
    73         hw_res_claims_t claims;
     72        hw_res_flags_t flags;
    7473        errno_t rc;
    7574
     
    7877                return ENOMEM;
    7978
    80         rc = hw_res_query_legacy_io(parent_sess, &claims);
    81         if (rc != EOK) {
    82                 ddf_msg(LVL_NOTE, "Error getting HW resource flags.");
    83                 return rc;
     79        rc = hw_res_get_flags(parent_sess, &flags);
     80        if (rc != EOK)
     81                return rc;
     82
     83        /*
     84         * Prevent attaching to the legacy ISA IDE register block
     85         * on a system with PCI not to conflict with PCI IDE.
     86         *
     87         * XXX This is a simplification. If we had a PCI-based system without
     88         * PCI-IDE or with PCI-IDE disabled and would still like to use
     89         * an ISA IDE controller, this would prevent us from doing so.
     90         */
     91        if (flags & hwf_isa_bridge) {
     92                ddf_msg(LVL_NOTE, "Will not attach to PCI/ISA bridge.");
     93                return EIO;
    8494        }
    8595
    8696        hw_res_list_parsed_init(&hw_res);
    8797        rc = hw_res_get_list_parsed(parent_sess, &hw_res, 0);
    88         if (rc != EOK) {
    89                 ddf_msg(LVL_NOTE, "Error getting HW resource list.");
    90                 return rc;
    91         }
     98        if (rc != EOK)
     99                return rc;
    92100
    93101        if (hw_res.io_ranges.count != 4) {
     
    140148        }
    141149
    142         /*
    143          * Only attach to legacy ISA IDE register block if it
    144          * is not claimed by PCI IDE driver.
    145          */
    146         if (res->cmd1 == leg_ide_ata_cmd_p &&
    147             res->cmd2 == leg_ide_ata_cmd_s &&
    148             (claims & hwc_isa_ide) != 0) {
    149                 ddf_msg(LVL_NOTE, "Will not attach to ISA legacy ports "
    150                     "since they are already handled by PCI.");
    151                 return EBUSY;
    152         }
    153 
    154150        return EOK;
    155151error:
     
    171167        rc = isa_ide_get_res(dev, &res);
    172168        if (rc != EOK) {
    173                 if (rc == EINVAL)
    174                         ddf_msg(LVL_ERROR, "Invalid HW resource configuration.");
     169                ddf_msg(LVL_ERROR, "Invalid HW resource configuration.");
    175170                return EINVAL;
    176171        }
Note: See TracChangeset for help on using the changeset viewer.