Blame view

cmd/ext4.c 2.49 KB
d41ce506b   Eric Lee   Initial Release, ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
  /*
   * (C) Copyright 2011 - 2012 Samsung Electronics
   * EXT4 filesystem implementation in Uboot by
   * Uma Shankar <uma.shankar@samsung.com>
   * Manjunatha C Achar <a.manjunatha@samsung.com>
   *
   * Ext4fs support
   * made from existing cmd_ext2.c file of Uboot
   *
   * (C) Copyright 2004
   * esd gmbh <www.esd-electronics.com>
   * Reinhard Arlt <reinhard.arlt@esd-electronics.com>
   *
   * made from cmd_reiserfs by
   *
   * (C) Copyright 2003 - 2004
   * Sysgo Real-Time Solutions, AG <www.elinos.com>
   * Pavel Bartusek <pba@sysgo.com>
   *
   * SPDX-License-Identifier:	GPL-2.0+
   */
  
  /*
   * Changelog:
   *	0.1 - Newly created file for ext4fs support. Taken from cmd_ext2.c
   *	        file in uboot. Added ext4fs ls load and write support.
   */
  
  #include <common.h>
  #include <part.h>
  #include <config.h>
  #include <command.h>
  #include <image.h>
  #include <linux/ctype.h>
  #include <asm/byteorder.h>
  #include <ext4fs.h>
  #include <linux/stat.h>
  #include <malloc.h>
  #include <fs.h>
  
  #if defined(CONFIG_CMD_USB) && defined(CONFIG_USB_STORAGE)
  #include <usb.h>
  #endif
  
  int do_ext4_size(cmd_tbl_t *cmdtp, int flag, int argc,
  						char *const argv[])
  {
  	return do_size(cmdtp, flag, argc, argv, FS_TYPE_EXT);
  }
  
  int do_ext4_load(cmd_tbl_t *cmdtp, int flag, int argc,
  						char *const argv[])
  {
  	return do_load(cmdtp, flag, argc, argv, FS_TYPE_EXT);
  }
  
  int do_ext4_ls(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
  {
  	return do_ls(cmdtp, flag, argc, argv, FS_TYPE_EXT);
  }
  
  #if defined(CONFIG_CMD_EXT4_WRITE)
  int do_ext4_write(cmd_tbl_t *cmdtp, int flag, int argc,
  		  char *const argv[])
  {
  	return do_save(cmdtp, flag, argc, argv, FS_TYPE_EXT);
  }
  
  U_BOOT_CMD(ext4write, 7, 1, do_ext4_write,
  	   "create a file in the root directory",
  	   "<interface> <dev[:part]> <addr> <absolute filename path>
  "
  	   "    [sizebytes] [file offset]
  "
  	   "    - create a file in / directory");
  
  #endif
  
  U_BOOT_CMD(
  	ext4size,	4,	0,	do_ext4_size,
  	"determine a file's size",
  	"<interface> <dev[:part]> <filename>
  "
  	"    - Find file 'filename' from 'dev' on 'interface'
  "
  	"      and determine its size."
  );
  
  U_BOOT_CMD(ext4ls, 4, 1, do_ext4_ls,
  	   "list files in a directory (default /)",
  	   "<interface> <dev[:part]> [directory]
  "
  	   "    - list files from 'dev' on 'interface' in a 'directory'");
  
  U_BOOT_CMD(ext4load, 7, 0, do_ext4_load,
  	   "load binary file from a Ext4 filesystem",
  	   "<interface> [<dev[:part]> [addr [filename [bytes [pos]]]]]
  "
  	   "    - load binary file 'filename' from 'dev' on 'interface'
  "
  	   "      to address 'addr' from ext4 filesystem");