/** @file
*
*  Copyright (c) 2015, Hisilicon Limited. All rights reserved.
*  Copyright (c) 2015, Linaro Limited. All rights reserved.
*
*  This program and the accompanying materials
*  are licensed and made available under the terms and conditions of the BSD License
*  which accompanies this distribution.  The full text of the license may be found at
*  http://opensource.org/licenses/bsd-license.php
*
*  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
*  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
*
**/


#ifndef _MEMORY_SUBCLASS_DRIVER_H
#define _MEMORY_SUBCLASS_DRIVER_H

#include <Uefi.h>
#include <PiDxe.h>
#include <Protocol/Smbios.h>
#include <IndustryStandard/SmBios.h>
#include <Library/HiiLib.h>
#include <Library/DebugLib.h>
#include <Library/MemoryAllocationLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/BaseLib.h>
#include <Library/UefiLib.h>
#include <Library/HobLib.h>
#include <Library/PrintLib.h>
#include <Library/PcdLib.h>

#include <Library/HwMemInitLib.h>
#include <Guid/DebugMask.h>
#include <Guid/MemoryMapData.h>
#include <Library/PlatformSysCtrlLib.h>
#include <Library/OemMiscLib.h>

//
// This is the generated header file which includes whatever needs to be exported (strings + IFR)
//

extern UINT8 MemorySubClassStrings[];

#define MAX_DIMM_SIZE       32  // In GB

struct SPD_JEDEC_MANUFACTURER
{
    UINT8  MfgIdLSB;
    UINT8  MfgIdMSB;
    CHAR16 *Name;
};

struct SPD_JEDEC_MANUFACTURER JEP106[] = {
    {    0, 0x10, L"NEC"},
    {    0, 0x2c, L"Micron"},
    {    0, 0x3d, L"Tektronix"},
    {    0, 0x97, L"TI"},
    {    0, 0xad, L"Hynix"},
    {    0, 0xb3, L"IDT"},
    {    0, 0xc1, L"Infineon"},
    {    0, 0xce, L"Samsung"},
    {    1, 0x94, L"Smart"},
    {    1, 0x98, L"Kingston"},
    {    2, 0xc8, L"Agilent"},
    {    2, 0xfe, L"Elpida"},
    {    3, 0x0b, L"Nanya"},
    {    4, 0x43, L"Ramaxel"},
    {    4, 0xb3, L"Inphi"},
    {    5, 0x51, L"Qimonda"},
    {    5, 0x57, L"AENEON"},
    { 0xFF, 0xFF, L""}
};



#endif
