/** @file
  Block IO (memory mapped)

  Copyright (c) 2006 - 2010, 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.             

**/

#ifndef __BLOCK_MMIO_H__
#define __BLOCK_MMIO_H__

#include <Protocol/BlockIo.h>

#define BLOCK_MMIO_PROTOCOL_GUID \
  { \
    0x6b558ce3, 0x69e5, 0x4c67, {0xa6, 0x34, 0xf7, 0xfe, 0x72, 0xad, 0xbe, 0x84 } \
  }

typedef struct _BLOCK_MMIO_PROTOCOL  BLOCK_MMIO_PROTOCOL;


///
///  This protocol provides control over block devices.
///
struct _BLOCK_MMIO_PROTOCOL {
  ///
  /// The revision to which the block IO interface adheres. All future
  /// revisions must be backwards compatible. If a future version is not
  /// back wards compatible, it is not the same GUID.
  ///
  UINT64                Revision;
  ///
  /// Pointer to the EFI_BLOCK_IO_MEDIA data for this device.
  ///
  EFI_BLOCK_IO_MEDIA    *Media;

  EFI_PHYSICAL_ADDRESS  BaseAddress;

};

extern EFI_GUID gBlockMmioProtocolGuid;

#endif

