summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Silicon/Socionext/SynQuacer/Drivers/Net/NetsecDxe/NetsecDxe.c12
-rw-r--r--Silicon/Socionext/SynQuacer/Drivers/Net/NetsecDxe/NetsecDxe.h9
-rw-r--r--Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxe.c59
-rw-r--r--Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxe.h1
-rw-r--r--Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxe.inf2
5 files changed, 60 insertions, 23 deletions
diff --git a/Silicon/Socionext/SynQuacer/Drivers/Net/NetsecDxe/NetsecDxe.c b/Silicon/Socionext/SynQuacer/Drivers/Net/NetsecDxe/NetsecDxe.c
index a304e022..4e3c4e6c 100644
--- a/Silicon/Socionext/SynQuacer/Drivers/Net/NetsecDxe/NetsecDxe.c
+++ b/Silicon/Socionext/SynQuacer/Drivers/Net/NetsecDxe/NetsecDxe.c
@@ -1051,21 +1051,10 @@ NetsecInit (
InitializeListHead (&LanDriver->TxBufferList);
- LanDriver->DevicePath.Netsec.Header.Type = MESSAGING_DEVICE_PATH;
- LanDriver->DevicePath.Netsec.Header.SubType = MSG_MAC_ADDR_DP;
-
- SetDevicePathNodeLength (&LanDriver->DevicePath.Netsec.Header,
- sizeof (LanDriver->DevicePath.Netsec));
- CopyMem (&LanDriver->DevicePath.Netsec.MacAddress,
- &SnpMode->PermanentAddress, PXE_HWADDR_LEN_ETHER);
- LanDriver->DevicePath.Netsec.IfType = SnpMode->IfType;
- SetDevicePathEndNode (&LanDriver->DevicePath.End);
-
// Initialise the protocol
Status = gBS->InstallMultipleProtocolInterfaces (
&ControllerHandle,
&gEfiSimpleNetworkProtocolGuid, Snp,
- &gEfiDevicePathProtocolGuid, &LanDriver->DevicePath,
NULL);
LanDriver->ControllerHandle = ControllerHandle;
@@ -1111,7 +1100,6 @@ NetsecRelease (
Status = gBS->UninstallMultipleProtocolInterfaces (ControllerHandle,
&gEfiSimpleNetworkProtocolGuid, Snp,
- &gEfiDevicePathProtocolGuid, &LanDriver->DevicePath,
NULL);
if (EFI_ERROR (Status)) {
return Status;
diff --git a/Silicon/Socionext/SynQuacer/Drivers/Net/NetsecDxe/NetsecDxe.h b/Silicon/Socionext/SynQuacer/Drivers/Net/NetsecDxe/NetsecDxe.h
index c95ff215..17a7032f 100644
--- a/Silicon/Socionext/SynQuacer/Drivers/Net/NetsecDxe/NetsecDxe.h
+++ b/Silicon/Socionext/SynQuacer/Drivers/Net/NetsecDxe/NetsecDxe.h
@@ -38,13 +38,6 @@ extern EFI_COMPONENT_NAME2_PROTOCOL gNetsecDriverComponentName2;
NETSEC Information Structure
------------------------------------------------------------------------------*/
-#pragma pack(1)
-typedef struct {
- MAC_ADDR_DEVICE_PATH Netsec;
- EFI_DEVICE_PATH_PROTOCOL End;
-} NETSEC_DEVICE_PATH;
-#pragma pack()
-
typedef struct {
// Driver signature
UINT32 Signature;
@@ -68,8 +61,6 @@ typedef struct {
EFI_EVENT PhyStatusEvent;
NON_DISCOVERABLE_DEVICE *Dev;
-
- NETSEC_DEVICE_PATH DevicePath;
} NETSEC_DRIVER;
#define NETSEC_SIGNATURE SIGNATURE_32('n', 't', 's', 'c')
diff --git a/Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxe.c b/Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxe.c
index 09200a91..2030ef79 100644
--- a/Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxe.c
+++ b/Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxe.c
@@ -11,6 +11,18 @@
UINT64 mHiiSettingsVal;
SYNQUACER_PLATFORM_VARSTORE_DATA *mHiiSettings;
+#pragma pack (1)
+typedef struct {
+ MAC_ADDR_DEVICE_PATH MacAddrDevicePath;
+ EFI_DEVICE_PATH_PROTOCOL End;
+} NETSEC_DEVICE_PATH;
+
+typedef struct {
+ NETSEC_DEVICE_PATH DevicePath;
+ NON_DISCOVERABLE_DEVICE NonDiscoverableDevice;
+} NETSEC_DEVICE;
+#pragma pack ()
+
typedef struct {
VENDOR_DEVICE_PATH VendorDevicePath;
EFI_DEVICE_PATH_PROTOCOL End;
@@ -113,6 +125,31 @@ STATIC EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR mI2c1Desc[] = {
}
};
+STATIC NETSEC_DEVICE mNetsecDevice = {
+ {
+ {
+ {
+ MESSAGING_DEVICE_PATH,
+ MSG_MAC_ADDR_DP,
+ { sizeof (MAC_ADDR_DEVICE_PATH), 0 },
+ },
+ {},
+ NET_IFTYPE_ETHERNET,
+ },
+ {
+ END_DEVICE_PATH_TYPE,
+ END_ENTIRE_DEVICE_PATH_SUBTYPE,
+ { sizeof (EFI_DEVICE_PATH_PROTOCOL), 0 }
+ }
+ },
+ {
+ &gNetsecNonDiscoverableDeviceGuid,
+ NonDiscoverableDeviceDmaTypeCoherent,
+ NULL,
+ mNetsecDesc
+ }
+};
+
STATIC EFI_ACPI_DESCRIPTION_HEADER *mEmmcSsdt;
STATIC UINTN mEmmcSsdtSize;
@@ -303,6 +340,20 @@ InstallAcpiTables (
STATIC
VOID
+NetsecReadMacAddress (
+ OUT EFI_MAC_ADDRESS *MacAddress
+ )
+{
+ MacAddress->Addr[0] = MmioRead8 (FixedPcdGet32 (PcdNetsecEepromBase) + 3);
+ MacAddress->Addr[1] = MmioRead8 (FixedPcdGet32 (PcdNetsecEepromBase) + 2);
+ MacAddress->Addr[2] = MmioRead8 (FixedPcdGet32 (PcdNetsecEepromBase) + 1);
+ MacAddress->Addr[3] = MmioRead8 (FixedPcdGet32 (PcdNetsecEepromBase) + 0);
+ MacAddress->Addr[4] = MmioRead8 (FixedPcdGet32 (PcdNetsecEepromBase) + 7);
+ MacAddress->Addr[5] = MmioRead8 (FixedPcdGet32 (PcdNetsecEepromBase) + 6);
+}
+
+STATIC
+VOID
EFIAPI
RegisterDevices (
EFI_EVENT Event,
@@ -312,9 +363,13 @@ RegisterDevices (
EFI_HANDLE Handle;
EFI_STATUS Status;
+ NetsecReadMacAddress (&mNetsecDevice.DevicePath.MacAddrDevicePath.MacAddress);
+
Handle = NULL;
- Status = RegisterDevice (&gNetsecNonDiscoverableDeviceGuid, mNetsecDesc,
- &Handle);
+ Status = gBS->InstallMultipleProtocolInterfaces (&Handle,
+ &gEfiDevicePathProtocolGuid, &mNetsecDevice.DevicePath,
+ &gEdkiiNonDiscoverableDeviceProtocolGuid, &mNetsecDevice.NonDiscoverableDevice,
+ NULL);
ASSERT_EFI_ERROR (Status);
if (mHiiSettings->EnableEmmc == EMMC_ENABLED) {
diff --git a/Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxe.h b/Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxe.h
index 69265468..1cb95121 100644
--- a/Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxe.h
+++ b/Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxe.h
@@ -22,6 +22,7 @@
#include <Library/HiiLib.h>
#include <Library/IoLib.h>
#include <Library/MemoryAllocationLib.h>
+#include <Library/NetLib.h>
#include <Library/NonDiscoverableDeviceRegistrationLib.h>
#include <Library/OpteeLib.h>
#include <Library/PcdLib.h>
diff --git a/Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxe.inf b/Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxe.inf
index 157f914e..aa3cbdf3 100644
--- a/Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxe.inf
+++ b/Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxe.inf
@@ -30,6 +30,7 @@
EmbeddedPkg/EmbeddedPkg.dec
MdeModulePkg/MdeModulePkg.dec
MdePkg/MdePkg.dec
+ NetworkPkg/NetworkPkg.dec
Platform/96Boards/96Boards.dec
Silicon/NXP/Library/Pcf8563RealTimeClockLib/Pcf8563RealTimeClockLib.dec
Silicon/Socionext/SynQuacer/Drivers/Net/NetsecDxe/NetsecDxe.dec
@@ -46,6 +47,7 @@
HiiLib
IoLib
MemoryAllocationLib
+ NetLib
NonDiscoverableDeviceRegistrationLib
OpteeLib
PcdLib