aboutsummaryrefslogtreecommitdiff
path: root/board/st-ericsson/u8500/cmd_ab8500.c
diff options
context:
space:
mode:
Diffstat (limited to 'board/st-ericsson/u8500/cmd_ab8500.c')
-rw-r--r--board/st-ericsson/u8500/cmd_ab8500.c84
1 files changed, 84 insertions, 0 deletions
diff --git a/board/st-ericsson/u8500/cmd_ab8500.c b/board/st-ericsson/u8500/cmd_ab8500.c
new file mode 100644
index 000000000..63a02559a
--- /dev/null
+++ b/board/st-ericsson/u8500/cmd_ab8500.c
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) ST-Ericsson SA 2011
+ *
+ * Author: Rikard Olsson <rikard.p.olsson@stericsson.com> for ST-Ericsson.
+ * License terms: GNU General Public License (GPL) version 2
+ *
+ */
+
+/* cmd_ab8500.c - read and write register in the ab8500 */
+
+#include <common.h>
+#include <command.h>
+#include <asm/arch/ab8500.h>
+
+static int do_ab8500_read(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+ ulong bankaddress;
+ ulong offset;
+ int ret;
+
+ if (argc != 3) {
+ cmd_usage(cmdtp);
+ return 1;
+ }
+
+ /* Get bank and offset */
+ bankaddress = simple_strtoul(argv[1], NULL, 16);
+ offset = simple_strtoul(argv[2], NULL, 16);
+
+ ret = ab8500_read(bankaddress, offset);
+ if (ret < 0) {
+ printf("ab8500 read failed at address 0x%lx,0x%lx\n",
+ bankaddress, offset);
+ return 1;
+ }
+
+ /* Print the result */
+ printf("ab8500_read(0x%lx,0x%lx) = 0x%x\n", bankaddress, offset, ret);
+
+ return 0;
+}
+
+static int do_ab8500_write(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+ ulong bankaddress;
+ ulong offset;
+ ulong value;
+ int ret;
+
+ if (argc != 4) {
+ cmd_usage(cmdtp);
+ return 1;
+ }
+
+ /* Get bank,offset and value */
+ bankaddress = simple_strtoul(argv[1], NULL, 16);
+ offset = simple_strtoul(argv[2], NULL, 16);
+ value = simple_strtoul(argv[3], NULL, 16);
+
+ /* Write the reg value */
+ ret = ab8500_write(bankaddress, offset, value);
+ if (ret < 0) {
+ printf("ab8500 write failed at address 0x%lx,0x%lx\n",
+ bankaddress, offset);
+ return 1;
+ }
+
+ /* Print the result */
+ printf("ab8500_write(0x%lx,0x%lx,0x%lx)\n", bankaddress, offset, value);
+
+ return 0;
+}
+
+U_BOOT_CMD(
+ ab8500_read, 3, 1, do_ab8500_read,
+ "read ab8500 register",
+ "ab8500_read bankadress offset"
+);
+
+U_BOOT_CMD(
+ ab8500_write, 4, 1, do_ab8500_write,
+ "write XX value into ab8500 register",
+ "ab8500_write bankadress offset value"
+);