nvme_disk: Get the correct PCI information struct.
We want the one of the parent object, not the parent's parent.
This commit is contained in:
@@ -67,8 +67,6 @@ static device_manager_info* sDeviceManager;
|
|||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
device_node* node;
|
device_node* node;
|
||||||
pci_device_module_info* pci;
|
|
||||||
pci_device* device;
|
|
||||||
pci_info info;
|
pci_info info;
|
||||||
|
|
||||||
struct nvme_ctrlr* ctrlr;
|
struct nvme_ctrlr* ctrlr;
|
||||||
@@ -151,15 +149,14 @@ nvme_disk_init_device(void* _info, void** _cookie)
|
|||||||
CALLED();
|
CALLED();
|
||||||
nvme_disk_driver_info* info = (nvme_disk_driver_info*)_info;
|
nvme_disk_driver_info* info = (nvme_disk_driver_info*)_info;
|
||||||
|
|
||||||
|
pci_device_module_info* pci;
|
||||||
|
pci_device* pcidev;
|
||||||
device_node* parent = sDeviceManager->get_parent_node(info->node);
|
device_node* parent = sDeviceManager->get_parent_node(info->node);
|
||||||
device_node* pciParent = sDeviceManager->get_parent_node(parent);
|
sDeviceManager->get_driver(parent, (driver_module_info**)&pci,
|
||||||
sDeviceManager->get_driver(pciParent, (driver_module_info**)&info->pci,
|
(void**)&pcidev);
|
||||||
(void**)&info->device);
|
pci->get_pci_info(pcidev, &info->info);
|
||||||
sDeviceManager->put_node(pciParent);
|
|
||||||
sDeviceManager->put_node(parent);
|
sDeviceManager->put_node(parent);
|
||||||
|
|
||||||
info->pci->get_pci_info(info->device, &info->info);
|
|
||||||
|
|
||||||
// construct the libnvme pci_device struct
|
// construct the libnvme pci_device struct
|
||||||
pci_device* device = new pci_device;
|
pci_device* device = new pci_device;
|
||||||
device->vendor_id = info->info.vendor_id;
|
device->vendor_id = info->info.vendor_id;
|
||||||
@@ -425,16 +422,15 @@ nvme_disk_supports_device(device_node *parent)
|
|||||||
|
|
||||||
|
|
||||||
static status_t
|
static status_t
|
||||||
nvme_disk_register_device(device_node *node)
|
nvme_disk_register_device(device_node* parent)
|
||||||
{
|
{
|
||||||
CALLED();
|
CALLED();
|
||||||
|
|
||||||
// ready to register
|
|
||||||
device_attr attrs[] = {
|
device_attr attrs[] = {
|
||||||
{ NULL }
|
{ NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
return sDeviceManager->register_node(node, NVME_DISK_DRIVER_MODULE_NAME,
|
return sDeviceManager->register_node(parent, NVME_DISK_DRIVER_MODULE_NAME,
|
||||||
attrs, NULL, NULL);
|
attrs, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user