stackprot: Make our test a bit more complex
[pandora-u-boot.git] / cmd / pwm.c
index 5849fc5..e1f97c7 100644 (file)
--- a/cmd/pwm.c
+++ b/cmd/pwm.c
@@ -34,11 +34,9 @@ static int do_pwm(struct cmd_tbl *cmdtp, int flag, int argc,
        argc -= 2;
        argv += 2;
 
-       if (argc > 0) {
-               str_pwm = *argv;
-               argc--;
-               argv++;
-       }
+       str_pwm = *argv;
+       argc--;
+       argv++;
 
        if (!str_pwm)
                return CMD_RET_USAGE;
@@ -46,15 +44,23 @@ static int do_pwm(struct cmd_tbl *cmdtp, int flag, int argc,
        switch (*str_cmd) {
        case 'i':
                sub_cmd = PWM_SET_INVERT;
+               if (argc != 2)
+                       return CMD_RET_USAGE;
                break;
        case 'c':
                sub_cmd = PWM_SET_CONFIG;
+               if (argc != 3)
+                       return CMD_RET_USAGE;
                break;
        case 'e':
                sub_cmd = PWM_SET_ENABLE;
+               if (argc != 1)
+                       return CMD_RET_USAGE;
                break;
        case 'd':
                sub_cmd = PWM_SET_DISABLE;
+               if (argc != 1)
+                       return CMD_RET_USAGE;
                break;
        default:
                return CMD_RET_USAGE;
@@ -67,38 +73,29 @@ static int do_pwm(struct cmd_tbl *cmdtp, int flag, int argc,
                return cmd_process_error(cmdtp, ret);
        }
 
-       if (argc > 0) {
-               str_channel = *argv;
-               channel = simple_strtoul(str_channel, NULL, 10);
-               argc--;
-               argv++;
-       } else {
-               return CMD_RET_USAGE;
-       }
+       str_channel = *argv;
+       channel = simple_strtoul(str_channel, NULL, 10);
+       argc--;
+       argv++;
 
-       if (sub_cmd == PWM_SET_INVERT && argc > 0) {
+       if (sub_cmd == PWM_SET_INVERT) {
                str_enable = *argv;
                pwm_enable = simple_strtoul(str_enable, NULL, 10);
                ret = pwm_set_invert(dev, channel, pwm_enable);
-       } else if (sub_cmd == PWM_SET_CONFIG && argc == 2) {
+       } else if (sub_cmd == PWM_SET_CONFIG) {
                str_period = *argv;
                argc--;
                argv++;
                period_ns = simple_strtoul(str_period, NULL, 10);
 
-               if (argc > 0) {
-                       str_duty = *argv;
-                       duty_ns = simple_strtoul(str_duty, NULL, 10);
-               }
+               str_duty = *argv;
+               duty_ns = simple_strtoul(str_duty, NULL, 10);
 
                ret = pwm_set_config(dev, channel, period_ns, duty_ns);
        } else if (sub_cmd == PWM_SET_ENABLE) {
                ret = pwm_set_enable(dev, channel, 1);
        } else if (sub_cmd == PWM_SET_DISABLE) {
                ret = pwm_set_enable(dev, channel, 0);
-       } else {
-               printf("PWM arguments missing\n");
-               return CMD_RET_FAILURE;
        }
 
        if (ret) {