Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp117823yba; Wed, 3 Apr 2019 05:43:37 -0700 (PDT) X-Google-Smtp-Source: APXvYqwUI3eRfT5lO4+LmNT4sAywG1tzCjeLalRwBjZLy9MpA844zJScuSSlLqbw2MPo4JrsYx1R X-Received: by 2002:a62:209c:: with SMTP id m28mr34900082pfj.233.1554295416993; Wed, 03 Apr 2019 05:43:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554295416; cv=none; d=google.com; s=arc-20160816; b=mN0HfDDnE0b+mIqSnAgqgoXMGM9wMG7fhzA3drVaymnirCyR4g5ccymDKp1LmaIkCT p2G9uyP69aVrUKKpHAch4C9zMtivE7PNl0bZPp8FSAzdBlDKwOKeXiM2i9ZW/owB1ibz 5Bo365riOCbEAlXNgIjSq8oh6gYXDVjLChdae0BBIVxSIVPECX8afSt7njfM7rzIOeyz kVOMMWrTQnB4AoNK4UdkkztMr+XNDBOe17gmTVjbRPdgQ83urbF/xfTAA+rJ8JP3T23W I9WDZ0qV/K6+zuq7OXsrilXMl6pifNPxTLCSvruJj6LkIIWxxgjlXHh1XSwUIba5jsq+ E/Pg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=Tb6CxPRGF/LgKJgKpTVR7otHuKWZW6w49Cp/POcbBd4=; b=ylvaIu/9cyXfh0viybceiLC6ZyGwyWyNHqC8BxDhT5Duy9GQo4liszszHmWe0Ngp3F JZlNDuz5HMjeezGoZFJ85yYzdeu/RnLdlIFWVfi3AqDUZNhBP9YnzugxPQ6xnFT8pcKQ yRw+i4ts/nR97zNuIu3NsDPT5vgndMDCG7SQobatt51TSR1D/CCDtEcVU3sYgGVvgh8Z 4Ke/A0d6AQgcK1X3koAiRWS66223hlg0Zw9QbcQKU2bfcVKsrM4XtcFQt0I4pgo2nn0Q xaxtEsod6cH5AsKa0W1tqhd9TBFM+crpBEZDBu2YvY9Gtzn/Ba7panN85J0irnsPMqbD 3wew== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f1si13015612pgv.418.2019.04.03.05.43.22; Wed, 03 Apr 2019 05:43:36 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727071AbfDCMlP (ORCPT + 99 others); Wed, 3 Apr 2019 08:41:15 -0400 Received: from sauhun.de ([88.99.104.3]:48388 "EHLO pokefinder.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726654AbfDCMkl (ORCPT ); Wed, 3 Apr 2019 08:40:41 -0400 Received: from localhost (p54B3311F.dip0.t-ipconnect.de [84.179.49.31]) by pokefinder.org (Postfix) with ESMTPSA id D6AAD3E43CF; Wed, 3 Apr 2019 14:40:38 +0200 (CEST) From: Wolfram Sang To: linux-i2c@vger.kernel.org Cc: linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Peter Rosin , Stefan Lengfeld , linux-omap@vger.kernel.org, linux-tegra@vger.kernel.org, Linus Walleij , Andy Shevchenko , Wolfram Sang , Andrew Lunn Subject: [PATCH 08/12] i2c: ocores: refactor setup for polling Date: Wed, 3 Apr 2019 14:40:15 +0200 Message-Id: <20190403124019.8947-9-wsa+renesas@sang-engineering.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20190403124019.8947-1-wsa+renesas@sang-engineering.com> References: <20190403124019.8947-1-wsa+renesas@sang-engineering.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org By properly setting up the algorithm at probe time, we can skip the check at every transfer. This allows us to get rid of the flags completely. Signed-off-by: Wolfram Sang Cc: Andrew Lunn --- drivers/i2c/busses/i2c-ocores.c | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/drivers/i2c/busses/i2c-ocores.c b/drivers/i2c/busses/i2c-ocores.c index 4e1a077fb688..1b99f467aae0 100644 --- a/drivers/i2c/busses/i2c-ocores.c +++ b/drivers/i2c/busses/i2c-ocores.c @@ -26,8 +26,6 @@ #include #include -#define OCORES_FLAG_POLL BIT(0) - /* * 'process_lock' exists because ocores_process() and ocores_process_timeout() * can't run in parallel. @@ -37,7 +35,6 @@ struct ocores_i2c { int iobase; u32 reg_shift; u32 reg_io_width; - unsigned long flags; wait_queue_head_t wait; struct i2c_adapter adap; struct i2c_msg *msg; @@ -403,11 +400,7 @@ static int ocores_xfer_polling(struct i2c_adapter *adap, static int ocores_xfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num) { - struct ocores_i2c *i2c = i2c_get_adapdata(adap); - - if (i2c->flags & OCORES_FLAG_POLL) - return ocores_xfer_polling(adap, msgs, num); - return ocores_xfer_core(i2c, msgs, num, false); + return ocores_xfer_core(i2c_get_adapdata(adap), msgs, num, false); } static int ocores_init(struct device *dev, struct ocores_i2c *i2c) @@ -447,7 +440,7 @@ static u32 ocores_func(struct i2c_adapter *adap) return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL; } -static const struct i2c_algorithm ocores_algorithm = { +static struct i2c_algorithm ocores_algorithm = { .master_xfer = ocores_xfer, .functionality = ocores_func, }; @@ -673,13 +666,13 @@ static int ocores_i2c_probe(struct platform_device *pdev) irq = platform_get_irq(pdev, 0); if (irq == -ENXIO) { - i2c->flags |= OCORES_FLAG_POLL; + ocores_algorithm.master_xfer = ocores_xfer_polling; } else { if (irq < 0) return irq; } - if (!(i2c->flags & OCORES_FLAG_POLL)) { + if (ocores_algorithm.master_xfer != ocores_xfer_polling) { ret = devm_request_irq(&pdev->dev, irq, ocores_isr, 0, pdev->name, i2c); if (ret) { -- 2.11.0