pwm: cros-ec: Simplify EC error handling
authorGuenter Roeck <linux@roeck-us.net>
Sat, 22 Aug 2020 15:08:57 +0000 (08:08 -0700)
committerEnric Balletbo i Serra <enric.balletbo@collabora.com>
Mon, 24 Aug 2020 09:37:34 +0000 (11:37 +0200)
With enhanced error reporting from cros_ec_cmd_xfer_status() in place,
we can fully use it and no longer rely on EC error codes.

Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Reviewed-by: Brian Norris <briannorris@chromium.org>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
drivers/pwm/pwm-cros-ec.c

index 94d3dff..c1c3379 100644 (file)
@@ -81,8 +81,7 @@ static int cros_ec_pwm_set_duty(struct cros_ec_device *ec, u8 index, u16 duty)
        return cros_ec_cmd_xfer_status(ec, msg);
 }
 
-static int __cros_ec_pwm_get_duty(struct cros_ec_device *ec, u8 index,
-                                 u32 *result)
+static int cros_ec_pwm_get_duty(struct cros_ec_device *ec, u8 index)
 {
        struct {
                struct cros_ec_command msg;
@@ -107,19 +106,12 @@ static int __cros_ec_pwm_get_duty(struct cros_ec_device *ec, u8 index,
        params->index = index;
 
        ret = cros_ec_cmd_xfer_status(ec, msg);
-       if (result)
-               *result = msg->result;
        if (ret < 0)
                return ret;
 
        return resp->duty;
 }
 
-static int cros_ec_pwm_get_duty(struct cros_ec_device *ec, u8 index)
-{
-       return __cros_ec_pwm_get_duty(ec, index, NULL);
-}
-
 static int cros_ec_pwm_apply(struct pwm_chip *chip, struct pwm_device *pwm,
                             const struct pwm_state *state)
 {
@@ -215,28 +207,18 @@ static int cros_ec_num_pwms(struct cros_ec_device *ec)
 
        /* The index field is only 8 bits */
        for (i = 0; i <= U8_MAX; i++) {
-               u32 result = 0;
-
-               ret = __cros_ec_pwm_get_duty(ec, i, &result);
+               ret = cros_ec_pwm_get_duty(ec, i);
                /*
                 * We look for SUCCESS, INVALID_COMMAND, or INVALID_PARAM
                 * responses; everything else is treated as an error.
-                * The EC error codes either map to -EOPNOTSUPP / -EINVAL,
-                * or -EPROTO is returned and the EC error is in the result
-                * field. Check for both.
+                * The EC error codes map to -EOPNOTSUPP and -EINVAL,
+                * so check for those.
                 */
                switch (ret) {
                case -EOPNOTSUPP:       /* invalid command */
                        return -ENODEV;
                case -EINVAL:           /* invalid parameter */
                        return i;
-               case -EPROTO:
-                       /* Old or new error return code: Handle both */
-                       if (result == EC_RES_INVALID_COMMAND)
-                               return -ENODEV;
-                       else if (result == EC_RES_INVALID_PARAM)
-                               return i;
-                       return -EPROTO;
                default:
                        if (ret < 0)
                                return ret;