From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751234AbdALRrc (ORCPT ); Thu, 12 Jan 2017 12:47:32 -0500 Received: from mx1.redhat.com ([209.132.183.28]:38744 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750892AbdALRq6 (ORCPT ); Thu, 12 Jan 2017 12:46:58 -0500 Subject: Re: [PATCH] Input: silead: use msleep() for long delays To: Nicholas Mc Guire , Dmitry Torokhov References: <1484238105-10785-1-git-send-email-hofrat@osadl.org> Cc: Henrik Rydberg , Rob Herring , Daniel Jansen , Dan Carpenter , Robert Dolca , linux-input@vger.kernel.org, linux-kernel@vger.kernel.org From: Hans de Goede Message-ID: Date: Thu, 12 Jan 2017 18:46:54 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <1484238105-10785-1-git-send-email-hofrat@osadl.org> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Thu, 12 Jan 2017 17:46:59 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, On 01/12/2017 05:21 PM, Nicholas Mc Guire wrote: > the delays here are in the 10 to 20ms range so msleep() will do - no > need to burden the highres timer subsystem. > > Signed-off-by: Nicholas Mc Guire > --- > > Problem found by coccinelle script > > While msleep(10) has a worst case uncertainty of 10ms (on HZ=100 systems) > this seems ok here as the delays are not called frequently (init and > reset functions) By the same logic, this is not much of a burden on the high-res timer subsys though. > and the uncertainty of 10ms fits the permitted range of > the original usleep_ranges(). Either way this patch is fine with me. Regards, Hans > > Patch was compile tested with: x86_64_defconfig + > CONFIG_TOUCHSCREEN_SILEAD=m > > Patch is against 4.10-rc3 (localversion-next is next-20170112) > > drivers/input/touchscreen/silead.c | 17 ++++++++--------- > 1 file changed, 8 insertions(+), 9 deletions(-) > > diff --git a/drivers/input/touchscreen/silead.c b/drivers/input/touchscreen/silead.c > index 404830a..3aa885c 100644 > --- a/drivers/input/touchscreen/silead.c > +++ b/drivers/input/touchscreen/silead.c > @@ -58,8 +58,7 @@ > #define SILEAD_POINT_X_MSB_OFF 0x03 > #define SILEAD_TOUCH_ID_MASK 0xF0 > > -#define SILEAD_CMD_SLEEP_MIN 10000 > -#define SILEAD_CMD_SLEEP_MAX 20000 > +#define SILEAD_CMD_SLEEP_MIN 10 /* 10+ ms */ > #define SILEAD_POWER_SLEEP 20 > #define SILEAD_STARTUP_SLEEP 30 > > @@ -190,25 +189,25 @@ static int silead_ts_init(struct i2c_client *client) > SILEAD_CMD_RESET); > if (error) > goto i2c_write_err; > - usleep_range(SILEAD_CMD_SLEEP_MIN, SILEAD_CMD_SLEEP_MAX); > + msleep(SILEAD_CMD_SLEEP_MIN); > > error = i2c_smbus_write_byte_data(client, SILEAD_REG_TOUCH_NR, > data->max_fingers); > if (error) > goto i2c_write_err; > - usleep_range(SILEAD_CMD_SLEEP_MIN, SILEAD_CMD_SLEEP_MAX); > + msleep(SILEAD_CMD_SLEEP_MIN); > > error = i2c_smbus_write_byte_data(client, SILEAD_REG_CLOCK, > SILEAD_CLOCK); > if (error) > goto i2c_write_err; > - usleep_range(SILEAD_CMD_SLEEP_MIN, SILEAD_CMD_SLEEP_MAX); > + msleep(SILEAD_CMD_SLEEP_MIN); > > error = i2c_smbus_write_byte_data(client, SILEAD_REG_RESET, > SILEAD_CMD_START); > if (error) > goto i2c_write_err; > - usleep_range(SILEAD_CMD_SLEEP_MIN, SILEAD_CMD_SLEEP_MAX); > + msleep(SILEAD_CMD_SLEEP_MIN); > > return 0; > > @@ -225,19 +224,19 @@ static int silead_ts_reset(struct i2c_client *client) > SILEAD_CMD_RESET); > if (error) > goto i2c_write_err; > - usleep_range(SILEAD_CMD_SLEEP_MIN, SILEAD_CMD_SLEEP_MAX); > + msleep(SILEAD_CMD_SLEEP_MIN); > > error = i2c_smbus_write_byte_data(client, SILEAD_REG_CLOCK, > SILEAD_CLOCK); > if (error) > goto i2c_write_err; > - usleep_range(SILEAD_CMD_SLEEP_MIN, SILEAD_CMD_SLEEP_MAX); > + msleep(SILEAD_CMD_SLEEP_MIN); > > error = i2c_smbus_write_byte_data(client, SILEAD_REG_POWER, > SILEAD_CMD_START); > if (error) > goto i2c_write_err; > - usleep_range(SILEAD_CMD_SLEEP_MIN, SILEAD_CMD_SLEEP_MAX); > + msleep(SILEAD_CMD_SLEEP_MIN); > > return 0; > >