From patchwork Wed Mar 28 17:15:03 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Akihiro TSUKADA X-Patchwork-Id: 10313687 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 71FB9600F6 for ; Wed, 28 Mar 2018 17:15:34 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 62F632901D for ; Wed, 28 Mar 2018 17:15:34 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 57E3C29FAD; Wed, 28 Mar 2018 17:15:34 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D6E862901D for ; Wed, 28 Mar 2018 17:15:33 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753119AbeC1RPc (ORCPT ); Wed, 28 Mar 2018 13:15:32 -0400 Received: from mail-pg0-f67.google.com ([74.125.83.67]:39137 "EHLO mail-pg0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753089AbeC1RPb (ORCPT ); Wed, 28 Mar 2018 13:15:31 -0400 Received: by mail-pg0-f67.google.com with SMTP id b9so1173769pgf.6 for ; Wed, 28 Mar 2018 10:15:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Wa/D2KE2SveImS6Ak2Bh6lIZ8UzUR/LXonXjARyFBLs=; b=Sy0ASrummTdEjYZ/bidi/JvGgt2VUW1j576/x016s8cI1q6rJudtLEWJXJYYyQSKiL HLY6d0J6S88R/X6R2HY2TB5qcV9m2XFQcNFPFWlsSQzmie8iN0l3mqWcu9D/pte3ln+M UBlkf58PVDTMYjVxWriiWPap22eFirBTN31zte8GHDa16NdkA+WmqCF/ydL8WaPrj9Rp GJXexfBovqKseKd+X87U+UMmfyz3Kq4x87iVFClGT2eV1chlFWzgFXEhcqAd9trPYoT0 qYMImnwa94US9olgcWhC78RlovOaLqaRq/13LO+swgwXBa+NJpOTzQs4HINf3Z95azMX JvCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Wa/D2KE2SveImS6Ak2Bh6lIZ8UzUR/LXonXjARyFBLs=; b=uEelFAEvgyWC+UeR6Emnp0pCLesOgdVWM7O8jlff+iruTZqoP/XXWrkuibvPyQjT93 GZkExBhAh5QnGzIfRwmAsuUbvF92ez2lpWubOnHEVsdDhwBuMiBlT3mvRUvuYQwuGyxn aTA6i+ngNHviR6AV6K9fTtkKGog9ag9oLq87t5nxWhjocsaWsEFZqiu2br3yfB7gAzvz liIlmnOpffSW07DebQxQvNQDuYieMtULKyB1o0NMYxoSDTqZ5B105tpDbSYYKyi4LvvA tmPFpXp8rJDZGX/7qn8OQrFFeJ2ZvA/UZuqQ29/NFTUkdJDolyKK5+D8Szrz0ZyXbG4D NLZQ== X-Gm-Message-State: AElRT7HW5l47FQXDOiwMyWxPXob8Kylnv7ps/b4SnLq04cgV9gXAnUji QCDhOkQz5ACyoQit3lu0BdPDVw== X-Google-Smtp-Source: AIpwx4/V6C7ulebEZMjoF/6zDdVvaj0ZDbJ2qPg5kHVTS/xnHcWDe65lR5IRR/H5wTuJAAQXk3Ek7A== X-Received: by 2002:a17:902:5066:: with SMTP id f35-v6mr4698256plh.14.1522257330967; Wed, 28 Mar 2018 10:15:30 -0700 (PDT) Received: from localhost.localdomain (softbank219203027033.bbtec.net. [219.203.27.33]) by smtp.googlemail.com with ESMTPSA id t75sm6504450pfe.124.2018.03.28.10.15.28 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 28 Mar 2018 10:15:30 -0700 (PDT) From: tskd08@gmail.com To: linux-media@vger.kernel.org Cc: mchehab@s-opensource.com, Akihiro Tsukada Subject: [PATCH v2 5/5] dvb: earth-pt1: replace schedule_timeout with usleep_range Date: Thu, 29 Mar 2018 02:15:03 +0900 Message-Id: <20180328171503.30541-6-tskd08@gmail.com> X-Mailer: git-send-email 2.16.3 In-Reply-To: <20180328171503.30541-1-tskd08@gmail.com> References: <20180328171503.30541-1-tskd08@gmail.com> Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Akihiro Tsukada As described in Document/timers/timers-howto.txt, hrtimer-based delay should be used for small sleeps. Signed-off-by: Akihiro Tsukada --- Changes since v1: - none drivers/media/pci/pt1/pt1.c | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/drivers/media/pci/pt1/pt1.c b/drivers/media/pci/pt1/pt1.c index 80510616c4c..43249269469 100644 --- a/drivers/media/pci/pt1/pt1.c +++ b/drivers/media/pci/pt1/pt1.c @@ -18,7 +18,10 @@ */ #include +#include #include +#include +#include #include #include #include @@ -321,7 +324,7 @@ static int pt1_unlock(struct pt1 *pt1) for (i = 0; i < 3; i++) { if (pt1_read_reg(pt1, 0) & 0x80000000) return 0; - schedule_timeout_uninterruptible((HZ + 999) / 1000); + usleep_range(1000, 2000); } dev_err(&pt1->pdev->dev, "could not unlock\n"); return -EIO; @@ -335,7 +338,7 @@ static int pt1_reset_pci(struct pt1 *pt1) for (i = 0; i < 10; i++) { if (pt1_read_reg(pt1, 0) & 0x00000001) return 0; - schedule_timeout_uninterruptible((HZ + 999) / 1000); + usleep_range(1000, 2000); } dev_err(&pt1->pdev->dev, "could not reset PCI\n"); return -EIO; @@ -349,7 +352,7 @@ static int pt1_reset_ram(struct pt1 *pt1) for (i = 0; i < 10; i++) { if (pt1_read_reg(pt1, 0) & 0x00000002) return 0; - schedule_timeout_uninterruptible((HZ + 999) / 1000); + usleep_range(1000, 2000); } dev_err(&pt1->pdev->dev, "could not reset RAM\n"); return -EIO; @@ -366,7 +369,7 @@ static int pt1_do_enable_ram(struct pt1 *pt1) if ((pt1_read_reg(pt1, 0) & 0x00000004) != status) return 0; } - schedule_timeout_uninterruptible((HZ + 999) / 1000); + usleep_range(1000, 2000); } dev_err(&pt1->pdev->dev, "could not enable RAM\n"); return -EIO; @@ -376,7 +379,7 @@ static int pt1_enable_ram(struct pt1 *pt1) { int i, ret; int phase; - schedule_timeout_uninterruptible((HZ + 999) / 1000); + usleep_range(1000, 2000); phase = pt1->pdev->device == 0x211a ? 128 : 166; for (i = 0; i < phase; i++) { ret = pt1_do_enable_ram(pt1); @@ -463,6 +466,9 @@ static int pt1_thread(void *data) struct pt1_buffer_page *page; bool was_frozen; +#define PT1_FETCH_DELAY 10 +#define PT1_FETCH_DELAY_DELTA 2 + pt1 = data; set_freezable(); @@ -476,7 +482,13 @@ static int pt1_thread(void *data) page = pt1->tables[pt1->table_index].bufs[pt1->buf_index].page; if (!pt1_filter(pt1, page)) { - schedule_timeout_interruptible((HZ + 999) / 1000); + ktime_t delay; + + delay = PT1_FETCH_DELAY * NSEC_PER_MSEC; + set_current_state(TASK_INTERRUPTIBLE); + schedule_hrtimeout_range(&delay, + PT1_FETCH_DELAY_DELTA * NSEC_PER_MSEC, + HRTIMER_MODE_REL); continue; } @@ -712,7 +724,7 @@ pt1_update_power(struct pt1 *pt1) adap = pt1->adaps[i]; switch (adap->voltage) { case SEC_VOLTAGE_13: /* actually 11V */ - bits |= 1 << 1; + bits |= 1 << 2; break; case SEC_VOLTAGE_18: /* actually 15V */ bits |= 1 << 1 | 1 << 2; @@ -766,7 +778,7 @@ static int pt1_wakeup(struct dvb_frontend *fe) adap = container_of(fe->dvb, struct pt1_adapter, adap); adap->sleep = 0; pt1_update_power(adap->pt1); - schedule_timeout_uninterruptible((HZ + 999) / 1000); + usleep_range(1000, 2000); ret = config_demod(adap->demod_i2c_client, adap->pt1->fe_clk); if (ret == 0 && adap->orig_init) @@ -1073,7 +1085,7 @@ static int pt1_i2c_end(struct pt1 *pt1, int addr) do { if (signal_pending(current)) return -EINTR; - schedule_timeout_interruptible((HZ + 999) / 1000); + usleep_range(1000, 2000); } while (pt1_read_reg(pt1, 0) & 0x00000080); return 0; } @@ -1376,11 +1388,11 @@ static int pt1_probe(struct pci_dev *pdev, const struct pci_device_id *ent) pt1->power = 1; pt1_update_power(pt1); - schedule_timeout_uninterruptible((HZ + 49) / 50); + msleep(20); pt1->reset = 0; pt1_update_power(pt1); - schedule_timeout_uninterruptible((HZ + 999) / 1000); + usleep_range(1000, 2000); ret = pt1_init_frontends(pt1); if (ret < 0)