9
0
Fork 0

ARM: AM3xxx: Add support for building AM33xx spi images

mk-am35xx-spi-image can only build AM35xx images. Rename
the tool to mk-am3xxx-spi-image and add support for the AM33xx.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Jan Luebbe 2013-06-10 18:38:45 +02:00 committed by Sascha Hauer
parent 4fea2ceb98
commit 2bea297d30
3 changed files with 50 additions and 11 deletions

View File

@ -167,13 +167,16 @@ KBUILD_IMAGE := barebox.ubl
endif endif
quiet_cmd_am35xx_spi_image = SPI-IMG $@ quiet_cmd_am35xx_spi_image = SPI-IMG $@
cmd_am35xx_spi_image = scripts/mk-am35xx-spi-image -a $(TEXT_BASE) $< > $@ cmd_am35xx_spi_image = scripts/mk-am3xxx-spi-image -s am35xx -a $(TEXT_BASE) $< > $@
barebox.spi: $(KBUILD_BINARY) FORCE barebox.spi: $(KBUILD_BINARY) FORCE
$(call if_changed,am35xx_spi_image) $(call if_changed,am35xx_spi_image)
MLO.spi: MLO FORCE
$(call if_changed,am35xx_spi_image)
ifeq ($(CONFIG_OMAP_BUILD_SPI),y) ifeq ($(CONFIG_OMAP_BUILD_SPI),y)
KBUILD_IMAGE := barebox.spi KBUILD_IMAGE := MLO.spi
endif endif
quiet_cmd_zynq_image = ZYNQ-IMG $@ quiet_cmd_zynq_image = ZYNQ-IMG $@

View File

@ -13,7 +13,7 @@ hostprogs-y += kernel-install
hostprogs-$(CONFIG_KALLSYMS) += kallsyms hostprogs-$(CONFIG_KALLSYMS) += kallsyms
hostprogs-$(CONFIG_ARCH_MVEBU) += kwbimage kwboot hostprogs-$(CONFIG_ARCH_MVEBU) += kwbimage kwboot
hostprogs-$(CONFIG_ARCH_NETX) += gen_netx_image hostprogs-$(CONFIG_ARCH_NETX) += gen_netx_image
hostprogs-$(CONFIG_ARCH_OMAP) += omap_signGP mk-am35xx-spi-image hostprogs-$(CONFIG_ARCH_OMAP) += omap_signGP mk-am3xxx-spi-image
hostprogs-$(CONFIG_ARCH_S5PCxx) += s5p_cksum hostprogs-$(CONFIG_ARCH_S5PCxx) += s5p_cksum
hostprogs-$(CONFIG_ARCH_DAVINCI) += mkublheader hostprogs-$(CONFIG_ARCH_DAVINCI) += mkublheader
hostprogs-$(CONFIG_ARCH_ZYNQ) += zynq_mkimage hostprogs-$(CONFIG_ARCH_ZYNQ) += zynq_mkimage

View File

@ -48,32 +48,66 @@
#include <getopt.h> #include <getopt.h>
#include <endian.h> #include <endian.h>
enum soc {
SOC_AM33XX,
SOC_AM35XX,
SOC_UNKNOWN,
};
static char *soc_names[] = {
[SOC_AM33XX] = "am33xx",
[SOC_AM35XX] = "am35xx",
};
void usage(char *prgname) void usage(char *prgname)
{ {
printf("usage: %s [OPTION] FILE > IMAGE\n" printf("usage: %s [OPTION] FILE > IMAGE\n"
"\n" "\n"
"options:\n" "options:\n"
" -a <address> memory address for the loaded image in SRAM\n", " -a <address> memory address for the loaded image in SRAM\n"
" -s <soc> SoC to use (am33xx, am35xx)\n",
prgname); prgname);
} }
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
FILE *input; FILE *input;
int opt; int opt, i;
off_t pos; off_t pos;
size_t size; size_t size;
uint32_t addr = 0x40200000; uint32_t addr = 0x40200000;
uint32_t temp; uint32_t temp;
enum soc soc = SOC_UNKNOWN;
char *socname = NULL;
while((opt = getopt(argc, argv, "a:")) != -1) { while((opt = getopt(argc, argv, "a:s:")) != -1) {
switch (opt) { switch (opt) {
case 'a': case 'a':
addr = strtoul(optarg, NULL, 0); addr = strtoul(optarg, NULL, 0);
break; break;
case 's':
socname = optarg;
break;
} }
} }
if (!socname) {
fprintf(stderr, "SoC not specified. Use -s <soc>\n");
exit(EXIT_FAILURE);
}
for (i = 0; i < 2; i++) {
if (!strcmp(socname, soc_names[i])) {
soc = i;
break;
}
}
if (soc == SOC_UNKNOWN) {
fprintf(stderr, "SoC %s unknown\n", socname);
exit(EXIT_FAILURE);
}
if (optind >= argc) { if (optind >= argc) {
usage(argv[0]); usage(argv[0]);
exit(1); exit(1);
@ -108,12 +142,14 @@ int main(int argc, char *argv[])
pos = (pos + 3) & ~3; pos = (pos + 3) & ~3;
/* image size */ /* image size */
temp = htobe32((uint32_t)pos); if (soc == SOC_AM35XX) {
fwrite(&temp, sizeof(uint32_t), 1, stdout); temp = htobe32((uint32_t)pos);
fwrite(&temp, sizeof(uint32_t), 1, stdout);
/* memory address */ /* memory address */
temp = htobe32(addr); temp = htobe32(addr);
fwrite(&temp, sizeof(uint32_t), 1, stdout); fwrite(&temp, sizeof(uint32_t), 1, stdout);
}
for (;;) { for (;;) {
size = fread(&temp, 1, sizeof(uint32_t), input); size = fread(&temp, 1, sizeof(uint32_t), input);