123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- /** @file
- *
- * Copyright (c) 2011-2015, ARM Limited. All rights reserved.
- * 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.
- *
- **/
- #include "FlashFvbDxe.h"
- //
- // BlockIO Protocol function EFI_BLOCK_IO_PROTOCOL.ReadBlocks
- //
- EFI_STATUS
- EFIAPI
- FlashBlockIoReadBlocks (
- IN EFI_BLOCK_IO_PROTOCOL* This,
- IN UINT32 MediaId,
- IN EFI_LBA Lba,
- IN UINTN BufferSizeInBytes,
- OUT VOID* Buffer
- )
- {
- FLASH_INSTANCE* Instance;
- EFI_STATUS Status;
- Instance = INSTANCE_FROM_BLKIO_THIS(This);
- DEBUG ((EFI_D_INFO, "FlashBlockIoReadBlocks(MediaId=0x%x, Lba=%ld, BufferSize=0x%x bytes (%d kB), BufferPtr @ 0x%08x)\n", MediaId, Lba, BufferSizeInBytes, Buffer));
- if ( !This->Media->MediaPresent )
- {
- Status = EFI_NO_MEDIA;
- }
- else if ( This->Media->MediaId != MediaId )
- {
- Status = EFI_MEDIA_CHANGED;
- }
- else
- {
- Status = FlashReadBlocks (Instance, Lba, BufferSizeInBytes, Buffer);
- }
- return Status;
- }
- //
- // BlockIO Protocol function EFI_BLOCK_IO_PROTOCOL.WriteBlocks
- //
- EFI_STATUS
- EFIAPI
- FlashBlockIoWriteBlocks (
- IN EFI_BLOCK_IO_PROTOCOL* This,
- IN UINT32 MediaId,
- IN EFI_LBA Lba,
- IN UINTN BufferSizeInBytes,
- IN VOID* Buffer
- )
- {
- FLASH_INSTANCE* Instance;
- EFI_STATUS Status;
- Instance = INSTANCE_FROM_BLKIO_THIS(This);
- DEBUG ((EFI_D_INFO, "FlashBlockIoWriteBlocks(MediaId=0x%x, Lba=%ld, BufferSize=0x%x bytes (%d kB), BufferPtr @ 0x%08x)\n", MediaId, Lba, BufferSizeInBytes, Buffer));
- if ( !This->Media->MediaPresent )
- {
- Status = EFI_NO_MEDIA;
- }
- else if ( This->Media->MediaId != MediaId )
- {
- Status = EFI_MEDIA_CHANGED;
- }
- else if ( This->Media->ReadOnly )
- {
- Status = EFI_WRITE_PROTECTED;
- }
- else
- {
- Status = FlashWriteBlocks (Instance, Lba, BufferSizeInBytes, Buffer);
- }
- return Status;
- }
- //
- // BlockIO Protocol function EFI_BLOCK_IO_PROTOCOL.FlushBlocks
- //
- EFI_STATUS
- EFIAPI
- FlashBlockIoFlushBlocks (
- IN EFI_BLOCK_IO_PROTOCOL* This
- )
- {
- // No Flush required for the NOR Flash driver
- // because cache operations are not permitted.
- // Nothing to do so just return without error
- return EFI_SUCCESS;
- }
|