#/** @file
#  This file is used to define the BIOS ID parameters of the build.
#  This file is processed by GenBiosId.
#  The BIOS ID format conforms to "BIOS Revision Identification Specification", Rev. 0.7, 6/27/2001.
#
#  BIOS ID string format:
#    $(BOARD_ID)$(BOARD_REV).$(OEM_ID).$(VERSION_MAJOR).$(BUILD_TYPE)$(VERSION_MINOR).YYMMDDHHMM
#  All fields must have a fixed length.
#    Example: "TRFTCRB1.86C.0008.D03.0506081529"
#
#  Copyright (c) 2008  - 2015, Intel Corporation. All rights reserved.<BR>
#                                                                                  
# This program and the accompanying materials are licensed and made available under
# the terms and conditions of the BSD License that 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.    
#                                                                                  
#
#**/

BOARD_REV     = 1
OEM_ID        = X64
BUILD_TYPE    = R

VERSION_MAJOR = 0078
VERSION_MINOR = 01
BOARD_ID = BBAYCRB 
