platform: x86: intel_scu_ipc: Replace mdelay with usleep_range in intel_scu_ipc_i2c_cntrl
intel_scu_ipc_i2c_cntrl() calls mutex_lock(), which indicates this function is not called in atomic context. Despite never getting called from atomic context, intel_scu_ipc_i2c_cntrl() calls mdelay to busily wait. This is not necessary and can be replaced with usleep_range to avoid busy waiting. This is found by a static analysis tool named DCNS written by myself. And I also manually check it. Signed-off-by: Jia-Ju Bai <baijiaju1990@gmail.com> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
This commit is contained in:
Родитель
de15b94f87
Коммит
8fddfb39a4
|
@ -584,11 +584,11 @@ int intel_scu_ipc_i2c_cntrl(u32 addr, u32 *data)
|
|||
if (cmd == IPC_I2C_READ) {
|
||||
writel(addr, scu->i2c_base + IPC_I2C_CNTRL_ADDR);
|
||||
/* Write not getting updated without delay */
|
||||
mdelay(1);
|
||||
usleep_range(1000, 2000);
|
||||
*data = readl(scu->i2c_base + I2C_DATA_ADDR);
|
||||
} else if (cmd == IPC_I2C_WRITE) {
|
||||
writel(*data, scu->i2c_base + I2C_DATA_ADDR);
|
||||
mdelay(1);
|
||||
usleep_range(1000, 2000);
|
||||
writel(addr, scu->i2c_base + IPC_I2C_CNTRL_ADDR);
|
||||
} else {
|
||||
dev_err(scu->dev,
|
||||
|
|
Загрузка…
Ссылка в новой задаче