omap3: mvblx: pass FPGA version to the kernel
authorMichael Jones <michael.jones@matrix-vision.de>
Thu, 7 Feb 2013 23:53:37 +0000 (23:53 +0000)
committerTom Rini <trini@ti.com>
Mon, 18 Feb 2013 18:51:20 +0000 (13:51 -0500)
Extract FPGA version from the .rbf and pass this info to the kernel.

Signed-off-by: Michael Jones <michael.jones@matrix-vision.de>
board/matrix_vision/mvblx/fpga.c
include/configs/omap3_mvblx.h

index dacc13845dc473549560bdabfa48d5a4c2f98c64..3fcf9685e95732d7d7a5e09001ca157b1d188000 100644 (file)
@@ -31,6 +31,7 @@
 #include <ACEX1K.h>
 #include <command.h>
 #include <asm/gpio.h>
+#include <linux/byteorder/generic.h>
 #include "fpga.h"
 
 #ifdef FPGA_DEBUG
@@ -209,9 +210,20 @@ int fpga_wr_fn(const void *buf, size_t len, int flush, int cookie)
 {
        unsigned char *data = (unsigned char *) buf;
        int i;
+       int headerlen = len - cyclone2.size;
+
+       if (headerlen < 0)
+               return FPGA_FAIL;
+       else if (headerlen == sizeof(uint32_t)) {
+               const unsigned int fpgavers_len = 11; /* '0x' + 8 hex digits + \0 */
+               char fpgavers_str[fpgavers_len];
+               snprintf(fpgavers_str, fpgavers_len, "0x%08x",
+                               be32_to_cpup((uint32_t*)data));
+               setenv("fpgavers", fpgavers_str);
+       }
 
        fpga_debug("fpga_wr: buf %p / size %d\n", buf, len);
-       for (i = 0; i < len; i++)
+       for (i = headerlen; i < len; i++)
                _write_fpga(data[i]);
        fpga_debug("-%s\n", __func__);
 
index 7bb05ca0a42488fa2b007bdc081abcfd0173be71..376a3d031edc78fa7c12ce1ca77c3e1f0c8866f2 100644 (file)
                "omapdss.def_disp=${defaultdisplay} " \
                "root=${mmcroot} " \
                "rootfstype=${mmcrootfstype} " \
+               "mvfw.fpgavers=${fpgavers} " \
                "${cmdline_suffix}\0" \
        "loadbootenv=fatload mmc ${mmcdev} ${loadaddr} uEnv.txt\0" \
        "importbootenv=echo Importing environment from mmc ...; " \