From patchwork Sat Mar 25 13:14:08 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Heiner Kallweit X-Patchwork-Id: 9644587 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 A9729601D7 for ; Sat, 25 Mar 2017 13:15:22 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 97C7826220 for ; Sat, 25 Mar 2017 13:15:22 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8C71C252D5; Sat, 25 Mar 2017 13:15:22 +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=-1.9 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FROM autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 4043526247 for ; Sat, 25 Mar 2017 13:15:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date: Message-ID:From:References:To:Subject:Reply-To:Content-ID:Content-Description :Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=k3iNz4gTkcX8ueR9xsPGehD0HM8nxGq+pBwWDE2MI5M=; b=Fur6IbuQuFoDVr 7SapTB2iaF0d5Ygs8ighxmKXO4rZJ13Iu3ZjcY2uHHDbS9vFZ7Tw6XMMskNJt5ZXmIeyZpdwAoDha RoOznpYa7x2IjXWPCdwLvxpz8qW8nV7CVNZxsrtFirlPj3tQDKHhsF+gUOESxsKypjuz0N5T/aHwJ m8Ggr94akN7CHdx4KxvkLvq+EV92r+V2prINkOIeyEZzCu5/RWO1/Gs1+C0MQh8pN6UUuXdIPhiuS TFjri3cJWGKY5+DrxZkQc+nqJXLZCXXzWGFrcwrOf5eVu28TWSA8sWZVp74k9DUYMmFQrpZOHQAtx WS4ANEuRG1Ts0vWR2F6A==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1crlXI-0001d4-Ga; Sat, 25 Mar 2017 13:15:16 +0000 Received: from mail-wm0-x244.google.com ([2a00:1450:400c:c09::244]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1crlX4-0008Ux-8T for linux-amlogic@lists.infradead.org; Sat, 25 Mar 2017 13:15:08 +0000 Received: by mail-wm0-x244.google.com with SMTP id x124so2846614wmf.3 for ; Sat, 25 Mar 2017 06:14:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:cc:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding; bh=VhO8l1U8nuf4fah/bF7gZwVB2OQ7gVqSgnZvlYzfGRk=; b=VCfTYDm6kecV44yjMNcegxMEzQTCq7NaZ4ny2/crXjpBSJYYXVnGrF4iHCHTgqRV08 QZBHqDxu3kIRezdyXVIILX2e62YGywkDoOtZygOzzAwIR7UoiPeMvnvI7U4ROZwp1u9Q TP1v4lTTdZklQWKk+R2iscJyM/Aaxpit4M6Uebl1/7OZ75Ya+uZVggws2CaciC+HAM6n skA23ISolTYHOCRv4N/hLl8EXp3g+EqrrSTyJ3CImP9ie3HI2I1+n2uGWlrP/xRC/DdN fSQIOfLkuUqLKkvn6ZteIH7/BLJNLHdzWUv1g4xZs0yUgTEk+PL1qfkZ+PMONRdB248n 5pZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:cc:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding; bh=VhO8l1U8nuf4fah/bF7gZwVB2OQ7gVqSgnZvlYzfGRk=; b=U51NY9EqAcnKLZNTv6voyu2x5cgKVgzYXtEV+hiwcKz5f6iKZuq4U5MqeDHHin1Vgs gGIB1YkfD2EUFZ1sfCrmOLOkDx7DrlbZuRgR6lOaY4Qpt+kiEkSZL84VkKES1rPVv/Jz AtskyLxVtPI40UV4pujVNhSQAL2qYcvn0kecn8iQK3sCW6RRia8NTuiIPm/VRsafPlra 5WtnR0Fwgml6f+38GEq0SJTJvRWwvkNg3dy0sXJoyknlvJs2yk5L9lmuqAlq7qmFm+RS JW1d5mAiXU7aEjOYCu59lax6zyF5PIOwHobOyQsMByD+W57v2wAXMlV0g/bsVW+UneIs ymBg== X-Gm-Message-State: AFeK/H3y/6fFQWI76Fmgqj9GyMbeN5JjSXw+R+Ni2AILpHFA2YofWOtDLqXPXM0AaWOLow== X-Received: by 10.28.194.7 with SMTP id s7mr2022843wmf.34.1490447685072; Sat, 25 Mar 2017 06:14:45 -0700 (PDT) Received: from ?IPv6:2003:c6:ebdc:4000:b429:3993:904f:3ba7? (p200300C6EBDC4000B4293993904F3BA7.dip0.t-ipconnect.de. [2003:c6:ebdc:4000:b429:3993:904f:3ba7]) by smtp.googlemail.com with ESMTPSA id m186sm6468859wmd.21.2017.03.25.06.14.44 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 25 Mar 2017 06:14:44 -0700 (PDT) Subject: [PATCH v5 10/10] i2c: meson: improve and simplify interrupt handler To: Wolfram Sang , Jerome Brunet , Kevin Hilman References: <645519b8-93e6-57b1-ae8f-7804c6beb9b1@gmail.com> From: Heiner Kallweit Message-ID: <5ffdcebd-1dc7-8263-acf6-38ea02e50b16@gmail.com> Date: Sat, 25 Mar 2017 14:14:08 +0100 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: <645519b8-93e6-57b1-ae8f-7804c6beb9b1@gmail.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170325_061503_032454_CB3A9F76 X-CRM114-Status: GOOD ( 10.35 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-amlogic@lists.infradead.org, "linux-i2c@vger.kernel.org" Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+patchwork-linux-amlogic=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP The preceding changes in this patch series now allow to simplify the interrupt handler significantly. Signed-off-by: Heiner Kallweit --- v2: - rebased v3: - no changes v4: - no changes v5: - no changes --- drivers/i2c/busses/i2c-meson.c | 40 ++++++++++------------------------------ 1 file changed, 10 insertions(+), 30 deletions(-) diff --git a/drivers/i2c/busses/i2c-meson.c b/drivers/i2c/busses/i2c-meson.c index d3c33ee4..bccebd28 100644 --- a/drivers/i2c/busses/i2c-meson.c +++ b/drivers/i2c/busses/i2c-meson.c @@ -242,41 +242,21 @@ static irqreturn_t meson_i2c_irq(int irqno, void *dev_id) goto out; } - switch (i2c->state) { - case STATE_READ: - if (i2c->count > 0) { - meson_i2c_get_data(i2c, i2c->msg->buf + i2c->pos, - i2c->count); - i2c->pos += i2c->count; - } - - if (i2c->pos >= i2c->msg->len) { - i2c->state = STATE_IDLE; - complete(&i2c->done); - break; - } - - meson_i2c_prepare_xfer(i2c); - break; - case STATE_WRITE: - i2c->pos += i2c->count; + if (i2c->state == STATE_READ && i2c->count) + meson_i2c_get_data(i2c, i2c->msg->buf + i2c->pos, i2c->count); - if (i2c->pos >= i2c->msg->len) { - i2c->state = STATE_IDLE; - complete(&i2c->done); - break; - } + i2c->pos += i2c->count; - meson_i2c_prepare_xfer(i2c); - break; + if (i2c->pos >= i2c->msg->len) { + i2c->state = STATE_IDLE; + complete(&i2c->done); + goto out; } + /* Restart the processing */ + meson_i2c_prepare_xfer(i2c); + meson_i2c_set_mask(i2c, REG_CTRL, REG_CTRL_START, REG_CTRL_START); out: - if (i2c->state != STATE_IDLE) - /* Restart the processing */ - meson_i2c_set_mask(i2c, REG_CTRL, REG_CTRL_START, - REG_CTRL_START); - spin_unlock(&i2c->lock); return IRQ_HANDLED;