forked from mirrors/linux
		
	mfd: cros_ec: Add cros_ec_cmd_xfer_status() helper
So that callers of cros_ec_cmd_xfer() don't have to repeat boilerplate code when checking for errors from the EC side. Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com> Reviewed-by: Benson Leung <bleung@chromium.org> Signed-off-by: Brian Norris <briannorris@chromium.org> Acked-by: Lee Jones <lee.jones@linaro.org> Tested-by: Enric Balletbo i Serra <enric.balletbo@collabora.com> Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
This commit is contained in:
		
							parent
							
								
									1a695a905c
								
							
						
					
					
						commit
						9798ac6d32
					
				
					 2 changed files with 32 additions and 0 deletions
				
			
		| 
						 | 
					@ -380,3 +380,20 @@ int cros_ec_cmd_xfer(struct cros_ec_device *ec_dev,
 | 
				
			||||||
	return ret;
 | 
						return ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
EXPORT_SYMBOL(cros_ec_cmd_xfer);
 | 
					EXPORT_SYMBOL(cros_ec_cmd_xfer);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int cros_ec_cmd_xfer_status(struct cros_ec_device *ec_dev,
 | 
				
			||||||
 | 
								    struct cros_ec_command *msg)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						int ret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ret = cros_ec_cmd_xfer(ec_dev, msg);
 | 
				
			||||||
 | 
						if (ret < 0) {
 | 
				
			||||||
 | 
							dev_err(ec_dev->dev, "Command xfer error (err:%d)\n", ret);
 | 
				
			||||||
 | 
						} else if (msg->result != EC_RES_SUCCESS) {
 | 
				
			||||||
 | 
							dev_dbg(ec_dev->dev, "Command result (err: %d)\n", msg->result);
 | 
				
			||||||
 | 
							return -EPROTO;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return ret;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					EXPORT_SYMBOL(cros_ec_cmd_xfer_status);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -225,6 +225,21 @@ int cros_ec_check_result(struct cros_ec_device *ec_dev,
 | 
				
			||||||
int cros_ec_cmd_xfer(struct cros_ec_device *ec_dev,
 | 
					int cros_ec_cmd_xfer(struct cros_ec_device *ec_dev,
 | 
				
			||||||
		     struct cros_ec_command *msg);
 | 
							     struct cros_ec_command *msg);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * cros_ec_cmd_xfer_status - Send a command to the ChromeOS EC
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This function is identical to cros_ec_cmd_xfer, except it returns success
 | 
				
			||||||
 | 
					 * status only if both the command was transmitted successfully and the EC
 | 
				
			||||||
 | 
					 * replied with success status. It's not necessary to check msg->result when
 | 
				
			||||||
 | 
					 * using this function.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @ec_dev: EC device
 | 
				
			||||||
 | 
					 * @msg: Message to write
 | 
				
			||||||
 | 
					 * @return: Num. of bytes transferred on success, <0 on failure
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					int cros_ec_cmd_xfer_status(struct cros_ec_device *ec_dev,
 | 
				
			||||||
 | 
								    struct cros_ec_command *msg);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * cros_ec_remove - Remove a ChromeOS EC
 | 
					 * cros_ec_remove - Remove a ChromeOS EC
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue