summaryrefslogtreecommitdiff
path: root/recipes/u-boot/u-boot-git/0003-cmd_i2c.c-reworked-subcommand-handling.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/u-boot/u-boot-git/0003-cmd_i2c.c-reworked-subcommand-handling.patch')
-rw-r--r--recipes/u-boot/u-boot-git/0003-cmd_i2c.c-reworked-subcommand-handling.patch109
1 files changed, 109 insertions, 0 deletions
diff --git a/recipes/u-boot/u-boot-git/0003-cmd_i2c.c-reworked-subcommand-handling.patch b/recipes/u-boot/u-boot-git/0003-cmd_i2c.c-reworked-subcommand-handling.patch
new file mode 100644
index 0000000000..d681bc2a98
--- /dev/null
+++ b/recipes/u-boot/u-boot-git/0003-cmd_i2c.c-reworked-subcommand-handling.patch
@@ -0,0 +1,109 @@
+From 75ed15eae925d6e9c8078c8fb013d344d7f3d50f Mon Sep 17 00:00:00 2001
+From: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
+Date: Wed, 24 Feb 2010 12:24:34 +0100
+Subject: [PATCH 3/5] cmd_i2c.c: reworked subcommand handling
+
+Signed-off-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com>
+---
+ common/cmd_i2c.c | 77 +++++++++++++++++++++++++++++++----------------------
+ 1 files changed, 45 insertions(+), 32 deletions(-)
+
+diff --git a/common/cmd_i2c.c b/common/cmd_i2c.c
+index 7531702..e54fc20 100644
+--- a/common/cmd_i2c.c
++++ b/common/cmd_i2c.c
+@@ -1242,46 +1242,59 @@ int do_i2c_bus_speed(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
+ return ret;
+ }
+
+-int do_i2c(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
++int do_i2c_mm(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
+ {
+- /* Strip off leading 'i2c' command argument */
+- argc--;
+- argv++;
++ return mod_i2c_mem (cmdtp, 1, flag, argc, argv);
++}
++
++int do_i2c_nm(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
++{
++ return mod_i2c_mem (cmdtp, 0, flag, argc, argv);
++}
+
++int do_i2c_reset(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
++{
++ i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
++ return 0;
++}
++
++static cmd_tbl_t cmd_i2c_sub[] = {
+ #if defined(CONFIG_I2C_MUX)
+- if (!strncmp(argv[0], "bu", 2))
+- return do_i2c_add_bus(cmdtp, flag, argc, argv);
++ U_BOOT_CMD_MKENT(bus, 1, 1, do_i2c_add_bus, "", ""),
+ #endif /* CONFIG_I2C_MUX */
+- if (!strncmp(argv[0], "sp", 2))
+- return do_i2c_bus_speed(cmdtp, flag, argc, argv);
++ U_BOOT_CMD_MKENT(crc32, 3, 1, do_i2c_crc, "", ""),
+ #if defined(CONFIG_I2C_MULTI_BUS)
+- if (!strncmp(argv[0], "de", 2))
+- return do_i2c_bus_num(cmdtp, flag, argc, argv);
++ U_BOOT_CMD_MKENT(dev, 1, 1, do_i2c_bus_num, "", ""),
+ #endif /* CONFIG_I2C_MULTI_BUS */
+- if (!strncmp(argv[0], "md", 2))
+- return do_i2c_md(cmdtp, flag, argc, argv);
+- if (!strncmp(argv[0], "mm", 2))
+- return mod_i2c_mem (cmdtp, 1, flag, argc, argv);
+- if (!strncmp(argv[0], "mw", 2))
+- return do_i2c_mw(cmdtp, flag, argc, argv);
+- if (!strncmp(argv[0], "nm", 2))
+- return mod_i2c_mem (cmdtp, 0, flag, argc, argv);
+- if (!strncmp(argv[0], "cr", 2))
+- return do_i2c_crc(cmdtp, flag, argc, argv);
+- if (!strncmp(argv[0], "pr", 2))
+- return do_i2c_probe(cmdtp, flag, argc, argv);
+- if (!strncmp(argv[0], "re", 2)) {
+- i2c_init(CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
+- return 0;
+- }
+- if (!strncmp(argv[0], "lo", 2))
+- return do_i2c_loop(cmdtp, flag, argc, argv);
++ U_BOOT_CMD_MKENT(loop, 3, 1, do_i2c_loop, "", ""),
++ U_BOOT_CMD_MKENT(md, 3, 1, do_i2c_md, "", ""),
++ U_BOOT_CMD_MKENT(mm, 2, 1, do_i2c_mm, "", ""),
++ U_BOOT_CMD_MKENT(mw, 3, 1, do_i2c_mw, "", ""),
++ U_BOOT_CMD_MKENT(nm, 2, 1, do_i2c_nm, "", ""),
++ U_BOOT_CMD_MKENT(probe, 0, 1, do_i2c_probe, "", ""),
++ U_BOOT_CMD_MKENT(reset, 0, 1, do_i2c_reset, "", ""),
+ #if defined(CONFIG_CMD_SDRAM)
+- if (!strncmp(argv[0], "sd", 2))
+- return do_sdram(cmdtp, flag, argc, argv);
++ U_BOOT_CMD_MKENT(sdram, 1, 1, do_i2c_sdram, "", ""),
+ #endif
+- cmd_usage(cmdtp);
+- return 0;
++ U_BOOT_CMD_MKENT(speed, 1, 1, do_i2c_bus_speed, "", ""),
++};
++
++int do_i2c(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
++{
++ cmd_tbl_t *c;
++
++ /* Strip off leading 'i2c' command argument */
++ argc--;
++ argv++;
++
++ c = find_cmd_tbl(argv[0], &cmd_i2c_sub[0], ARRAY_SIZE(cmd_i2c_sub));
++
++ if (c) {
++ return c->cmd(cmdtp, flag, argc, argv);
++ } else {
++ cmd_usage(cmdtp);
++ return 1;
++ }
+ }
+
+ /***************************************************/
+--
+1.7.0
+