Merge branch 'master' of git://git.denx.de/u-boot-sunxi
[platform/kernel/u-boot.git] / lib / efi_selftest / efi_selftest_block_device.c
index b82e405..21409ae 100644 (file)
@@ -264,7 +264,7 @@ static int teardown(void)
        }
 
        if (image) {
-               r = efi_free_pool(image);
+               r = boottime->free_pool(image);
                if (r != EFI_SUCCESS) {
                        efi_st_error("Failed to free image\n");
                        return EFI_ST_FAILURE;
@@ -308,6 +308,7 @@ static int execute(void)
        } system_info;
        efi_uintn_t buf_size;
        char buf[16] __aligned(ARCH_DMA_MINALIGN);
+       u64 pos;
 
        /* Connect controller to virtual disk */
        ret = boottime->connect_controller(disk_handle, NULL, NULL, 1);
@@ -386,27 +387,42 @@ static int execute(void)
        }
 
        /* Read file */
-       ret = root->open(root, &file, (s16 *)L"hello.txt", EFI_FILE_MODE_READ,
+       ret = root->open(root, &file, L"hello.txt", EFI_FILE_MODE_READ,
                         0);
        if (ret != EFI_SUCCESS) {
                efi_st_error("Failed to open file\n");
                return EFI_ST_FAILURE;
        }
+       ret = file->setpos(file, 1);
+       if (ret != EFI_SUCCESS) {
+               efi_st_error("SetPosition failed\n");
+               return EFI_ST_FAILURE;
+       }
        buf_size = sizeof(buf) - 1;
        ret = file->read(file, &buf_size, buf);
        if (ret != EFI_SUCCESS) {
                efi_st_error("Failed to read file\n");
                return EFI_ST_FAILURE;
        }
-       if (buf_size != 13) {
+       if (buf_size != 12) {
                efi_st_error("Wrong number of bytes read: %u\n",
                             (unsigned int)buf_size);
                return EFI_ST_FAILURE;
        }
-       if (efi_st_memcmp(buf, "Hello world!", 12)) {
+       if (efi_st_memcmp(buf, "ello world!", 11)) {
                efi_st_error("Unexpected file content\n");
                return EFI_ST_FAILURE;
        }
+       ret = file->getpos(file, &pos);
+       if (ret != EFI_SUCCESS) {
+               efi_st_error("GetPosition failed\n");
+               return EFI_ST_FAILURE;
+       }
+       if (pos != 13) {
+               efi_st_error("GetPosition returned %u, expected 13\n",
+                            (unsigned int)pos);
+               return EFI_ST_FAILURE;
+       }
        ret = file->close(file);
        if (ret != EFI_SUCCESS) {
                efi_st_error("Failed to close file\n");
@@ -415,7 +431,7 @@ static int execute(void)
 
 #ifdef CONFIG_FAT_WRITE
        /* Write file */
-       ret = root->open(root, &file, (s16 *)L"u-boot.txt",
+       ret = root->open(root, &file, L"u-boot.txt", EFI_FILE_MODE_READ |
                         EFI_FILE_MODE_WRITE | EFI_FILE_MODE_CREATE, 0);
        if (ret != EFI_SUCCESS) {
                efi_st_error("Failed to open file\n");
@@ -429,6 +445,16 @@ static int execute(void)
                efi_st_error("Failed to write file\n");
                return EFI_ST_FAILURE;
        }
+       ret = file->getpos(file, &pos);
+       if (ret != EFI_SUCCESS) {
+               efi_st_error("GetPosition failed\n");
+               return EFI_ST_FAILURE;
+       }
+       if (pos != 7) {
+               efi_st_error("GetPosition returned %u, expected 7\n",
+                            (unsigned int)pos);
+               return EFI_ST_FAILURE;
+       }
        ret = file->close(file);
        if (ret != EFI_SUCCESS) {
                efi_st_error("Failed to close file\n");
@@ -437,7 +463,7 @@ static int execute(void)
 
        /* Verify file */
        boottime->set_mem(buf, sizeof(buf), 0);
-       ret = root->open(root, &file, (s16 *)L"u-boot.txt", EFI_FILE_MODE_READ,
+       ret = root->open(root, &file, L"u-boot.txt", EFI_FILE_MODE_READ,
                         0);
        if (ret != EFI_SUCCESS) {
                efi_st_error("Failed to open file\n");