Driver code is modified to support multiple ethernet dongles, which uses
similar ASIX chips. Also, it can be used for multiple ASIX chips with
similar register map.

Enabled support for Apple Ethernet Adapter

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Shivamurthy Shastri <[email protected]>
---
 .../Bus/Usb/UsbNetworking/Ax88772b/Ax88772.h       | 13 ++++++++-
 .../Bus/Usb/UsbNetworking/Ax88772b/DriverBinding.c | 33 +++++++++++++---------
 2 files changed, 32 insertions(+), 14 deletions(-)

diff --git a/OptionRomPkg/Bus/Usb/UsbNetworking/Ax88772b/Ax88772.h 
b/OptionRomPkg/Bus/Usb/UsbNetworking/Ax88772b/Ax88772.h
index ab75ec2..816f2b2 100644
--- a/OptionRomPkg/Bus/Usb/UsbNetworking/Ax88772b/Ax88772.h
+++ b/OptionRomPkg/Bus/Usb/UsbNetworking/Ax88772b/Ax88772.h
@@ -297,12 +297,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       (1U << 0)
+#define FLAG_TYPE_AX88772       (1U << 1)
+#define FLAG_TYPE_AX88772B      (1U << 2)
+#define FLAG_EEPROM_MAC         (1U << 3) /* initial mac address in eeprom */
 
 
//------------------------------------------------------------------------------
 //  Data Types
 
//------------------------------------------------------------------------------
 
+struct ASIX_DONGLE {
+       UINT16  VendorId;
+       UINT16  ProductId;
+       INT32   Flags;
+};
+
 /**
   Ethernet header layout
 
diff --git a/OptionRomPkg/Bus/Usb/UsbNetworking/Ax88772b/DriverBinding.c 
b/OptionRomPkg/Bus/Usb/UsbNetworking/Ax88772b/DriverBinding.c
index 3b73040..6a10cbf 100644
--- a/OptionRomPkg/Bus/Usb/UsbNetworking/Ax88772b/DriverBinding.c
+++ b/OptionRomPkg/Bus/Usb/UsbNetworking/Ax88772b/DriverBinding.c
@@ -14,6 +14,13 @@
 
 #include "Ax88772.h"
 
+struct 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 i;
+
   //
   //  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"));
-        }
-                   else  {
-                            Status = EFI_UNSUPPORTED;
-                   }
-      }
-           else {
-                     Status = EFI_UNSUPPORTED;
-       }   
+      //
+      for (i = 0; ASIX_DONGLES[i].VendorId != 0; i++) {
+           if (ASIX_DONGLES[i].VendorId == Device.IdVendor &&
+               ASIX_DONGLES[i].ProductId == Device.IdProduct) {
+                     DEBUG ((EFI_D_INFO, "Found the AX88772B\r\n"));
+                     break;
+           }
+       }
+
+       if (ASIX_DONGLES[i].VendorId == 0)
+               Status = EFI_UNSUPPORTED;
     }
    
     //
-- 
1.9.1

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to