diff --git a/OptionRomPkg/Bus/Usb/UsbNetworking/Ax88772b/Ax88772.h b/OptionRomPkg/Bus/Usb/UsbNetworking/Ax88772b/Ax88772.h index ab75ec2e2d..a2109cf673 100644 --- a/OptionRomPkg/Bus/Usb/UsbNetworking/Ax88772b/Ax88772.h +++ b/OptionRomPkg/Bus/Usb/UsbNetworking/Ax88772b/Ax88772.h @@ -141,9 +141,6 @@ #define DEV_SIGNATURE SIGNATURE_32 ('A','X','8','8') ///< Signature of data structures in memory -#define VENDOR_ID 0x0B95 ///< Vendor ID for Asix -#define PRODUCT_ID 0x772B ///< Product ID for the AX88772 USB 10/100 Ethernet controller - #define RESET_MSEC 1000 ///< Reset duration #define PHY_RESET_MSEC 500 ///< PHY reset duration @@ -297,12 +294,23 @@ #define AN_10_HDX 0x0020 ///< 1 = 10BASE-T support #define AN_CSMA_CD 0x0001 ///< 1 = IEEE 802.3 CSMA/CD support - +// asix_flags defines +#define FLAG_NONE 0 +#define FLAG_TYPE_AX88172 BIT0 +#define FLAG_TYPE_AX88772 BIT1 +#define FLAG_TYPE_AX88772B BIT2 +#define FLAG_EEPROM_MAC BIT3 // initial mac address in eeprom //------------------------------------------------------------------------------ // Data Types //------------------------------------------------------------------------------ +typedef struct { + UINT16 VendorId; + UINT16 ProductId; + INT32 Flags; +}ASIX_DONGLE; + /** Ethernet header layout diff --git a/OptionRomPkg/Bus/Usb/UsbNetworking/Ax88772b/DriverBinding.c b/OptionRomPkg/Bus/Usb/UsbNetworking/Ax88772b/DriverBinding.c index 3b73040478..d64bc739c1 100644 --- a/OptionRomPkg/Bus/Usb/UsbNetworking/Ax88772b/DriverBinding.c +++ b/OptionRomPkg/Bus/Usb/UsbNetworking/Ax88772b/DriverBinding.c @@ -14,6 +14,13 @@ #include "Ax88772.h" +ASIX_DONGLE ASIX_DONGLES[] = { + { 0x05AC, 0x1402, FLAG_TYPE_AX88772 }, // Apple USB Ethernet Adapter + // ASIX 88772B + { 0x0B95, 0x772B, FLAG_TYPE_AX88772B | FLAG_EEPROM_MAC }, + { 0x0000, 0x0000, FLAG_NONE } // END - Do not remove +}; + /** Verify the controller type @@ -36,6 +43,8 @@ DriverSupported ( EFI_USB_DEVICE_DESCRIPTOR Device; EFI_USB_IO_PROTOCOL * pUsbIo; EFI_STATUS Status; + UINT32 Index; + // // Connect to the USB stack // @@ -60,19 +69,17 @@ DriverSupported ( else { // // Validate the adapter - // - if ( VENDOR_ID == Device.IdVendor ) { - - if (PRODUCT_ID == Device.IdProduct) { - DEBUG ((EFI_D_INFO, "Found the AX88772B\r\n")); + // + for (Index = 0; ASIX_DONGLES[Index].VendorId != 0; Index++) { + if (ASIX_DONGLES[Index].VendorId == Device.IdVendor && + ASIX_DONGLES[Index].ProductId == Device.IdProduct) { + DEBUG ((EFI_D_INFO, "Found the AX88772B\r\n")); + break; } - else { - Status = EFI_UNSUPPORTED; - } } - else { - Status = EFI_UNSUPPORTED; - } + + if (ASIX_DONGLES[Index].VendorId == 0) + Status = EFI_UNSUPPORTED; } //