HID: pidff: Support device error response from PID_BLOCK_LOAD
[ Upstream commit 9d4174dc4a234408d91fd83725e1899766cd1731 ] If an error happens on the device, the driver will no longer fall into the trap of reading this status 60 times before it decides that this reply won't change to success/memory full. Greatly reduces communication overhead during device error situation. Signed-off-by: Tomasz Pakuła <tomasz.pakula.oficjalny@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
2d698115f9
commit
239c8ac58c
@@ -138,7 +138,8 @@ static const u8 pidff_effect_types[] = {
|
||||
|
||||
#define PID_BLOCK_LOAD_SUCCESS 0
|
||||
#define PID_BLOCK_LOAD_FULL 1
|
||||
static const u8 pidff_block_load_status[] = { 0x8c, 0x8d };
|
||||
#define PID_BLOCK_LOAD_ERROR 2
|
||||
static const u8 pidff_block_load_status[] = { 0x8c, 0x8d, 0x8e};
|
||||
|
||||
#define PID_EFFECT_START 0
|
||||
#define PID_EFFECT_STOP 1
|
||||
@@ -666,6 +667,11 @@ static int pidff_request_effect_upload(struct pidff_device *pidff, int efnum)
|
||||
pidff->block_load[PID_RAM_POOL_AVAILABLE].value[0] : -1);
|
||||
return -ENOSPC;
|
||||
}
|
||||
if (pidff->block_load_status->value[0] ==
|
||||
pidff->status_id[PID_BLOCK_LOAD_ERROR]) {
|
||||
hid_dbg(pidff->hid, "device error during effect creation\n");
|
||||
return -EREMOTEIO;
|
||||
}
|
||||
}
|
||||
hid_err(pidff->hid, "pid_block_load failed 60 times\n");
|
||||
return -EIO;
|
||||
|
||||
Reference in New Issue
Block a user