|
@@ -0,0 +1,41 @@
|
|
|
+/*
|
|
|
+ * cmd_softswitch.c - set the softswitch for bf60x
|
|
|
+ *
|
|
|
+ * Copyright (c) 2012 Analog Devices Inc.
|
|
|
+ *
|
|
|
+ * Licensed under the GPL-2 or later.
|
|
|
+ */
|
|
|
+
|
|
|
+#include <common.h>
|
|
|
+#include <command.h>
|
|
|
+#include <asm/blackfin.h>
|
|
|
+#include <asm/soft_switch.h>
|
|
|
+
|
|
|
+int do_softswitch(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
|
|
+{
|
|
|
+ int switchaddr, value, pin, port;
|
|
|
+
|
|
|
+ if (argc != 5)
|
|
|
+ return CMD_RET_USAGE;
|
|
|
+
|
|
|
+ if (strcmp(argv[2], "GPA") == 0)
|
|
|
+ port = IO_PORT_A;
|
|
|
+ else if (strcmp(argv[2], "GPB") == 0)
|
|
|
+ port = IO_PORT_B;
|
|
|
+ else
|
|
|
+ return CMD_RET_USAGE;
|
|
|
+
|
|
|
+ switchaddr = simple_strtoul(argv[1], NULL, 16);
|
|
|
+ pin = simple_strtoul(argv[3], NULL, 16);
|
|
|
+ value = simple_strtoul(argv[4], NULL, 16);
|
|
|
+
|
|
|
+ config_switch_bit(switchaddr, port, (1 << pin), IO_PORT_OUTPUT, value);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+U_BOOT_CMD(
|
|
|
+ softswitch_output, 5, 1, do_softswitch,
|
|
|
+ "switchaddr GPA/GPB pin_offset value",
|
|
|
+ ""
|
|
|
+);
|