From 23fc92fad8ff6829b3139c55d83b659020812016 Mon Sep 17 00:00:00 2001 From: Sakari Ailus Date: Mon, 23 Sep 2019 10:18:38 -0300 Subject: media: smiapp: Don't poll for NVM ready on devices that don't need it Only some devices require polling for NVM ready. Do the polling only on devices that need it. Signed-off-by: Sakari Ailus Signed-off-by: Mauro Carvalho Chehab --- drivers/media/i2c/smiapp/smiapp-core.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) (limited to 'drivers/media/i2c') diff --git a/drivers/media/i2c/smiapp/smiapp-core.c b/drivers/media/i2c/smiapp/smiapp-core.c index 5a136068f4d6..5a04ae2544aa 100644 --- a/drivers/media/i2c/smiapp/smiapp-core.c +++ b/drivers/media/i2c/smiapp/smiapp-core.c @@ -986,21 +986,27 @@ static int smiapp_read_nvm_page(struct smiapp_sensor *sensor, u32 p, u8 *nvm) if (rval) return rval; - for (i = 1000; i > 0; i--) { - u32 s; + if (sensor->limits[SMIAPP_LIMIT_DATA_TRANSFER_IF_CAPABILITY] & + SMIAPP_DATA_TRANSFER_IF_CAPABILITY_POLL) { + for (i = 1000; i > 0; i--) { + u32 s; - rval = smiapp_read( - sensor, - SMIAPP_REG_U8_DATA_TRANSFER_IF_1_STATUS, &s); + rval = smiapp_read( + sensor, + SMIAPP_REG_U8_DATA_TRANSFER_IF_1_STATUS, + &s); - if (rval) - return rval; + if (rval) + return rval; - if (s & SMIAPP_DATA_TRANSFER_IF_1_STATUS_RD_READY) - break; + if (s & SMIAPP_DATA_TRANSFER_IF_1_STATUS_RD_READY) + break; + + } + + if (!i) + return -ETIMEDOUT; } - if (!i) - return -ETIMEDOUT; for (i = 0; i < SMIAPP_NVM_PAGE_SIZE; i++) { u32 v; -- cgit v1.2.3