Report nvme(4) as a generic driver for NVMe devices if PCI class, subclass

and programming interface codes match.

Sponsored by:	Intel
This commit is contained in:
jimharris 2012-09-19 16:21:23 +00:00
parent 13681004dd
commit 013f2062be

View File

@ -32,6 +32,7 @@ __FBSDID("$FreeBSD$");
#include <sys/conf.h>
#include <sys/module.h>
#include <dev/pci/pcireg.h>
#include <dev/pci/pcivar.h>
#include "nvme_private.h"
@ -82,17 +83,29 @@ static struct _pcsid
static int
nvme_probe (device_t device)
{
u_int32_t type = pci_get_devid(device);
struct _pcsid *ep = pci_ids;
struct _pcsid *ep;
int probe_val = ENXIO;
u_int32_t type;
type = pci_get_devid(device);
ep = pci_ids;
#if defined(PCIS_STORAGE_NVM)
if (pci_get_class(device) == PCIC_STORAGE &&
pci_get_subclass(device) == PCIS_STORAGE_NVM &&
pci_get_progif(device) == PCIP_STORAGE_NVM_ENTERPRISE_NVMHCI_1_0)
probe_val = BUS_PROBE_GENERIC;
#endif
while (ep->type && ep->type != type)
++ep;
if (ep->desc) {
device_set_desc(device, ep->desc);
return (BUS_PROBE_DEFAULT);
} else
return (ENXIO);
probe_val = BUS_PROBE_DEFAULT;
}
return (probe_val);
}
static void