Changes in uspace/drv/block/pci-ide/main.c [645d3832:2a5d4649] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/block/pci-ide/main.c
r645d3832 r2a5d4649 1 1 /* 2 * Copyright (c) 202 4Jiri Svoboda2 * Copyright (c) 2025 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 49 49 static errno_t pci_ide_dev_remove(ddf_dev_t *dev); 50 50 static errno_t pci_ide_dev_gone(ddf_dev_t *dev); 51 static errno_t pci_ide_dev_quiesce(ddf_dev_t *dev); 51 52 static errno_t pci_ide_fun_online(ddf_fun_t *fun); 52 53 static errno_t pci_ide_fun_offline(ddf_fun_t *fun); … … 55 56 56 57 static driver_ops_t driver_ops = { 57 .dev_add = &pci_ide_dev_add, 58 .dev_remove = &pci_ide_dev_remove, 59 .dev_gone = &pci_ide_dev_gone, 60 .fun_online = &pci_ide_fun_online, 61 .fun_offline = &pci_ide_fun_offline 58 .dev_add = pci_ide_dev_add, 59 .dev_remove = pci_ide_dev_remove, 60 .dev_gone = pci_ide_dev_gone, 61 .dev_quiesce = pci_ide_dev_quiesce, 62 .fun_online = pci_ide_fun_online, 63 .fun_offline = pci_ide_fun_offline 62 64 }; 63 65 … … 133 135 pci_ide_ctrl_t *ctrl; 134 136 pci_ide_hwres_t res; 137 async_sess_t *parent_sess; 138 unsigned chans; 135 139 errno_t rc; 136 140 … … 154 158 goto error; 155 159 160 chans = 0; 161 156 162 rc = pci_ide_channel_init(ctrl, &ctrl->channel[0], 0, &res); 157 if (rc == ENOENT) 163 if (rc == EOK) 164 ++chans; 165 else if (rc != ENOENT) 158 166 goto error; 159 167 160 168 rc = pci_ide_channel_init(ctrl, &ctrl->channel[1], 1, &res); 161 if (rc == ENOENT) 162 goto error; 163 164 if (rc != EOK) { 165 ddf_msg(LVL_ERROR, "Failed initializing ATA controller."); 169 if (rc == EOK) 170 ++chans; 171 else if (rc != ENOENT) 172 goto error; 173 174 if (chans == 0) { 175 ddf_msg(LVL_ERROR, "No PCI IDE devices found."); 176 rc = EIO; 177 goto error; 178 } 179 180 parent_sess = ddf_dev_parent_sess_get(dev); 181 if (parent_sess == NULL) { 182 rc = ENOMEM; 183 goto error; 184 } 185 186 /* Claim legacy I/O range to prevent ISA IDE from attaching there. */ 187 rc = hw_res_claim_legacy_io(parent_sess, hwc_isa_ide); 188 if (rc != EOK) { 189 ddf_msg(LVL_ERROR, "Failed claiming legacy I/O range."); 166 190 rc = EIO; 167 191 goto error; … … 352 376 } 353 377 378 static errno_t pci_ide_dev_quiesce(ddf_dev_t *dev) 379 { 380 pci_ide_ctrl_t *ctrl = (pci_ide_ctrl_t *)ddf_dev_data_get(dev); 381 382 ddf_msg(LVL_DEBUG, "pci_ide_dev_quiesce(%p)", dev); 383 384 pci_ide_channel_quiesce(&ctrl->channel[0]); 385 pci_ide_channel_quiesce(&ctrl->channel[1]); 386 387 return EOK; 388 } 389 354 390 static errno_t pci_ide_fun_online(ddf_fun_t *fun) 355 391 {
Note:
See TracChangeset
for help on using the changeset viewer.