/** @file
Copyright (c) 2016 Socionext Inc. All rights reserved.
Copyright (c) 2017, Linaro, Ltd. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef __NETSEC_DXE_H_
#define __NETSEC_DXE_H_
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "netsec_for_uefi/netsec_sdk/include/ogma_api.h"
#include "netsec_for_uefi/pfdep.h"
extern EFI_COMPONENT_NAME2_PROTOCOL gNetsecDriverComponentName2;
/*--------------- Simple Network Driver entry point functions ----------------*/
// Refer to the Simple Network Protocol section (21.1)
// in the UEFI 2.3.1 Specification for documentation.
#define ReturnUnlock(s) do { Status = (s); goto ExitUnlock; } while (0)
/*------------------------------------------------------------------------------
NETSEC Information Structure
------------------------------------------------------------------------------*/
typedef struct {
// Driver signature
UINT32 Signature;
EFI_HANDLE ControllerHandle;
// EFI SNP protocol instances
EFI_SIMPLE_NETWORK_PROTOCOL Snp;
EFI_SIMPLE_NETWORK_MODE SnpMode;
// EFI Snp statistics instance
EFI_NETWORK_STATISTICS Stats;
// Adapter Information protocol
EFI_ADAPTER_INFORMATION_PROTOCOL Aip;
// ogma handle
ogma_handle_t Handle;
// List of submitted TX buffers
LIST_ENTRY TxBufferList;
EFI_EVENT ExitBootEvent;
EFI_EVENT PhyStatusEvent;
NON_DISCOVERABLE_DEVICE *Dev;
} NETSEC_DRIVER;
#define NETSEC_SIGNATURE SIGNATURE_32('n', 't', 's', 'c')
#define INSTANCE_FROM_SNP_THIS(a) CR((a), NETSEC_DRIVER, Snp, NETSEC_SIGNATURE)
#define INSTANCE_FROM_AIP_THIS(a) CR((a), NETSEC_DRIVER, Aip, NETSEC_SIGNATURE)
/*------------------------------------------------------------------------------
------------------------------------------------------------------------------*/
EFI_STATUS
NetsecInit (
IN EFI_HANDLE DriverBindingHandle,
IN EFI_HANDLE ControllerHandle
);
EFI_STATUS
NetsecRelease (
IN EFI_HANDLE DriverBindingHandle,
IN EFI_HANDLE ControllerHandle
);
#define MAC_ADDRESS 0x00
#define HM_ME_ADDRESS_H 0x08
#define HM_ME_ADDRESS_L 0x0C
#define HM_ME_SIZE 0x10
#define MH_ME_ADDRESS_H 0x14
#define MH_ME_ADDRESS_L 0x18
#define MH_ME_SIZE 0x1C
#define PACKET_ME_ADDRESS 0x20
#define PACKET_ME_SIZE 0x24
#define SCAT_NUM 1
#define RXINT_TMR_CNT_US 0
#define RXINT_PKTCNT 1
#define NETSEC_PHY_STATUS_POLL_INTERVAL (EFI_TIMER_PERIOD_MILLISECONDS (1000))
#endif