summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorTerry Lv <r65388@freescale.com>2010-07-08 21:26:36 +0800
committerTerry Lv <r65388@freescale.com>2010-07-16 11:18:57 +0800
commitc5f6bfc5b71f455171b22e7291c75da3a7704974 (patch)
tree0009f7e5289daa73f2c100b593c1da26a738eb0f /common
parentacce438960d7ba5312e5d26d828fd2875901304b (diff)
downloadu-boot-imx-c5f6bfc5b71f455171b22e7291c75da3a7704974.zip
u-boot-imx-c5f6bfc5b71f455171b22e7291c75da3a7704974.tar.gz
u-boot-imx-c5f6bfc5b71f455171b22e7291c75da3a7704974.tar.bz2
ENGR00123924: Reconstructure fuse files and add fuse to mx53.
1. Reconstructure fuse. Move fuse files to common directory. 2. Read mac from fuse in fec. 3. Remove scc and srk command from fuse command. 4. Change fuse to iim. 5. Add fuse for mx53. Signed-off-by: Terry Lv <r65388@freescale.com>
Diffstat (limited to 'common')
-rw-r--r--common/Makefile1
-rw-r--r--common/cmd_iim.c95
2 files changed, 96 insertions, 0 deletions
diff --git a/common/Makefile b/common/Makefile
index 3b8ef59..ad7cb4f 100644
--- a/common/Makefile
+++ b/common/Makefile
@@ -101,6 +101,7 @@ COBJS-$(CONFIG_CMD_FLASH) += cmd_flash.o
ifdef CONFIG_FPGA
COBJS-$(CONFIG_CMD_FPGA) += cmd_fpga.o
endif
+COBJS-$(CONFIG_CMD_IIM) += cmd_iim.o
COBJS-$(CONFIG_CMD_I2C) += cmd_i2c.o
COBJS-$(CONFIG_CMD_IDE) += cmd_ide.o
COBJS-$(CONFIG_CMD_IMMAP) += cmd_immap.o
diff --git a/common/cmd_iim.c b/common/cmd_iim.c
new file mode 100644
index 0000000..56e3804
--- /dev/null
+++ b/common/cmd_iim.c
@@ -0,0 +1,95 @@
+/*
+ * (C) Copyright 2008-2010 Freescale Semiconductor, Inc.
+ *
+ * Copyright 2007, Freescale Semiconductor, Inc
+ * Andy Fleming
+ *
+ * Based vaguely on the pxa mmc code:
+ * (C) Copyright 2003
+ * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ */
+
+#include <linux/types.h>
+#include <asm/io.h>
+#include <command.h>
+#include <common.h>
+#include <asm/imx_iim.h>
+
+int do_iimops(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+ int bank = 0,
+ row = 0,
+ val = 0;
+
+ if (argc < 3 || argc > 5)
+ goto err_rtn;
+
+ if (strcmp(argv[1], "read") == 0) {
+ if (strcmp(argv[2], "fecmac") == 0) {
+ if (3 == argc)
+ iim_blow_func(argv[2], NULL);
+ else
+ goto err_rtn;
+ } else {
+ if (4 == argc) {
+ bank = simple_strtoul(argv[2], NULL, 16);
+ row = simple_strtoul(argv[3], NULL, 16);
+
+ iim_read(bank, row);
+ } else
+ goto err_rtn;
+ }
+ } else if (strcmp(argv[1], "blow") == 0) {
+ if (strcmp(argv[2], "fecmac") == 0) {
+ if (4 == argc)
+ iim_blow_func(argv[2], argv[3]);
+ else
+ goto err_rtn;
+ } else {
+ if (5 == argc) {
+ bank = simple_strtoul(argv[2], NULL, 16);
+ row = simple_strtoul(argv[3], NULL, 16);
+ val = simple_strtoul(argv[4], NULL, 16);
+
+ iim_blow(bank, row, val);
+ } else
+ goto err_rtn;
+ }
+ } else
+ goto err_rtn;
+
+ return 0;
+err_rtn:
+ printf("Invalid parameters!\n");
+ printf("It is too dangeous for you to use iim command.\n");
+ return 1;
+}
+
+U_BOOT_CMD(
+ iim, 5, 1, do_iimops,
+ "IIM sub system",
+ "Warning: all numbers in parameter are in hex format!\n"
+ "iim read <bank> <row> - Read some fuses\n"
+ "iim read fecmac - Read FEC Mac address\n"
+ "iim blow <bank> <row> <value> - Blow some fuses\n"
+ "iim blow fecmac <0x##:0x##:0x##:0x##:0x##:0x##>"
+ "- Blow FEC Mac address");
+