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:
parent
4fea2ceb98
commit
2bea297d30
|
@ -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 $@
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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);
|
Loading…
Reference in New Issue