// /** @file
// This driver implements Reset Architectural Protocol.
//
// It should depend on the ResetSystemLib instance that is implemented based on KBC.
//
// Copyright (c) 2006 - 2014, 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
// 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.
// 
// Module Name:
// Reset.inf
// 
// Abstract:
//
// **/


#string STR_MODULE_ABSTRACT             #language en-US "This driver implements Reset Architectural Protocol"

#string STR_MODULE_DESCRIPTION          #language en-US "It should depend on the ResetSystemLib instance that is implemented based on KBC."

