summaryrefslogtreecommitdiff
path: root/rbutil/mkimxboot/main.c
diff options
context:
space:
mode:
authorAmaury Pouly <amaury.pouly@gmail.com>2012-05-19 13:55:33 +0200
committerAmaury Pouly <amaury.pouly@gmail.com>2012-05-19 16:10:52 +0200
commite09c1e3d43665d04ae0ce2f288ba695b5abc3622 (patch)
tree7b89d6f4aabb847002004a65686b363859af0a33 /rbutil/mkimxboot/main.c
parentb62ec2ba809f093f299111cf263ce51ca4d4a665 (diff)
downloadrockbox-e09c1e3d43665d04ae0ce2f288ba695b5abc3622.tar.gz
rockbox-e09c1e3d43665d04ae0ce2f288ba695b5abc3622.zip
mkimxboot: add support for more target and variants
Add creative zen x-fi 2/3 and add a variant mechanism Change-Id: Ic2ee82a4238a87c2eb5d72b8309650d9a280325f
Diffstat (limited to 'rbutil/mkimxboot/main.c')
-rw-r--r--rbutil/mkimxboot/main.c56
1 files changed, 55 insertions, 1 deletions
diff --git a/rbutil/mkimxboot/main.c b/rbutil/mkimxboot/main.c
index 95fc226db1..68387c25c0 100644
--- a/rbutil/mkimxboot/main.c
+++ b/rbutil/mkimxboot/main.c
@@ -25,6 +25,22 @@
25#include <string.h> 25#include <string.h>
26#include "mkimxboot.h" 26#include "mkimxboot.h"
27 27
28struct imx_variant_t
29{
30 const char *name;
31 enum imx_firmware_variant_t variant;
32};
33
34struct imx_variant_t imx_variants[] =
35{
36 { "default", VARIANT_DEFAULT },
37 { "zenxfi2-recovery", VARIANT_ZENXFI2_RECOVERY },
38 { "zenxfi2-nand", VARIANT_ZENXFI2_NAND },
39 { "zenxfi2-sd", VARIANT_ZENXFI2_SD },
40};
41
42#define NR_VARIANTS sizeof(imx_variants) / sizeof(imx_variants[0])
43
28static void usage(void) 44static void usage(void)
29{ 45{
30 printf("Usage: elftosb [options | file]...\n"); 46 printf("Usage: elftosb [options | file]...\n");
@@ -35,6 +51,17 @@ static void usage(void)
35 printf(" -b <file>\tSet boot file\n"); 51 printf(" -b <file>\tSet boot file\n");
36 printf(" -d/--debug\tEnable debug output\n"); 52 printf(" -d/--debug\tEnable debug output\n");
37 printf(" -t <type>\tSet type (dualboot, singleboot, recovery)\n"); 53 printf(" -t <type>\tSet type (dualboot, singleboot, recovery)\n");
54 printf(" -v <v>\tSet variant\n");
55 printf(" -x\t\tDump device informations\n");
56 printf("Supported variants: (default is standard)\n");
57 printf(" ");
58 for(size_t i = 0; i < NR_VARIANTS; i++)
59 {
60 if(i != 0)
61 printf(", ");
62 printf("%s", imx_variants[i].name);
63 }
64 printf("\n");
38 printf("By default a dualboot image is built\n"); 65 printf("By default a dualboot image is built\n");
39 exit(1); 66 exit(1);
40} 67}
@@ -44,6 +71,7 @@ int main(int argc, char *argv[])
44 char *infile = NULL; 71 char *infile = NULL;
45 char *outfile = NULL; 72 char *outfile = NULL;
46 char *bootfile = NULL; 73 char *bootfile = NULL;
74 enum imx_firmware_variant_t variant = VARIANT_DEFAULT;
47 enum imx_output_type_t type = IMX_DUALBOOT; 75 enum imx_output_type_t type = IMX_DUALBOOT;
48 bool debug = false; 76 bool debug = false;
49 77
@@ -60,10 +88,12 @@ int main(int argc, char *argv[])
60 {"boot-file", required_argument, 0, 'b'}, 88 {"boot-file", required_argument, 0, 'b'},
61 {"debug", no_argument, 0, 'd'}, 89 {"debug", no_argument, 0, 'd'},
62 {"type", required_argument, 0, 't'}, 90 {"type", required_argument, 0, 't'},
91 {"variant", required_argument, 0, 'v'},
92 {"dev-info", no_argument, 0, 'x'},
63 {0, 0, 0, 0} 93 {0, 0, 0, 0}
64 }; 94 };
65 95
66 int c = getopt_long(argc, argv, "?di:o:b:t:", long_options, NULL); 96 int c = getopt_long(argc, argv, "?di:o:b:t:v:x", long_options, NULL);
67 if(c == -1) 97 if(c == -1)
68 break; 98 break;
69 switch(c) 99 switch(c)
@@ -98,6 +128,28 @@ int main(int argc, char *argv[])
98 return 1; 128 return 1;
99 } 129 }
100 break; 130 break;
131 case 'v':
132 {
133 for(size_t i = 0; i < NR_VARIANTS; i++)
134 {
135 if(strcmp(optarg, imx_variants[i].name) == 0)
136 {
137 variant = imx_variants[i].variant;
138 goto Lok;
139 }
140 }
141 printf("Invalid variant '%s'\n", optarg);
142 return 1;
143
144 Lok:
145 break;
146 }
147 case 'x':
148 dump_imx_dev_info("");
149 printf("variant mapping:\n");
150 for(int i = 0; i < sizeof(imx_variants) / sizeof(imx_variants[0]); i++)
151 printf(" %s -> variant=%d\n", imx_variants[i].name, imx_variants[i].variant);
152 break;
101 default: 153 default:
102 abort(); 154 abort();
103 } 155 }
@@ -125,8 +177,10 @@ int main(int argc, char *argv[])
125 } 177 }
126 178
127 struct imx_option_t opt; 179 struct imx_option_t opt;
180 memset(&opt, 0, sizeof(opt));
128 opt.debug = debug; 181 opt.debug = debug;
129 opt.output = type; 182 opt.output = type;
183 opt.fw_variant = variant;
130 enum imx_error_t err = mkimxboot(infile, bootfile, outfile, opt); 184 enum imx_error_t err = mkimxboot(infile, bootfile, outfile, opt);
131 printf("Result: %d\n", err); 185 printf("Result: %d\n", err);
132 return 0; 186 return 0;