Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp314213imm; Thu, 7 Jun 2018 19:26:47 -0700 (PDT) X-Google-Smtp-Source: ADUXVKLChilMkEFCYuHdt6cRYSy4vSwILCFX+/884p091I55Xc7dy0LEtTNxjB4hyMUQw3BWZuK3 X-Received: by 2002:a17:902:a5c7:: with SMTP id t7-v6mr4542648plq.360.1528424807888; Thu, 07 Jun 2018 19:26:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528424807; cv=none; d=google.com; s=arc-20160816; b=Ft70lDj6BX+52rW1UqZeoJyiDehKEtOjGCZmCu7oQiFIhpQVk84DLk+v4zK8pXv/+Y hmZP0EJzf7vNXEv7KKDFs0zPsY53u1XMaQCOHWLOuA5YnpUstCmS1Cuh1NCUm3quG4i0 QyfQlDG9jhZVFKxF0uoaD0KDL+SiLnaqIb9n/pDQ+Cb0jRzUD4gOqaHK/rAe68w0NHEY BFoVrdfx1VuIB9c1YnIV5tAqRLnQymKBU5h6wqliDuBAdJPfgh/4+3ScYI4c1DGKjAlv PXXHjwzy1rJRo1XzViOijqe8Eg5X62nOpUc1R98Wel1tN3fvRNRUeCNms9gwE18KsLVo 7WPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:date:subject:from:references:in-reply-to :message-id:cc:to:arc-authentication-results; bh=rmfTL5tFm+FYrxF2wYmzBt2LgEIoZy54/1vBtEYGeBw=; b=Kw/u1oyBkYR8iCJZLBy46i4mVwTeKZT7oj4tWhqGH66g1+fZdKgupZlg/8YHav+JrK UOB6va6m7DoiMq+x2TRvsvvUJlhrY5XBV2v4lmsg1x2J38jGjA0/zRnCz11+v4asW29y kzDYcSkOpnmpIdU/qsXlkSpyhHU7cV+dJ0FvYjOF6918RVY7/Ih/kSp2038nM40iF4Un 2PyRUhwGw3RjRkYaxEisuHxqP7YuI7vGmF4ZWFNBifGTFDJ9HqdZ6AA/FbjhJOyE/mUh tTro7olPWqcGwX2fP5GJYV5P+TjFp3AJagUH3qG+CEWpnIUjpGQRqGqyrbnI4m+jM9ym 6sAw== 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 k6-v6si56695449pla.78.2018.06.07.19.26.34; Thu, 07 Jun 2018 19:26:47 -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 S1752970AbeFHCZT (ORCPT + 99 others); Thu, 7 Jun 2018 22:25:19 -0400 Received: from kvm5.telegraphics.com.au ([98.124.60.144]:58600 "EHLO kvm5.telegraphics.com.au" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752674AbeFHCYa (ORCPT ); Thu, 7 Jun 2018 22:24:30 -0400 Received: by kvm5.telegraphics.com.au (Postfix, from userid 502) id 7FBC92A33A; Thu, 7 Jun 2018 22:24:29 -0400 (EDT) To: Benjamin Herrenschmidt Cc: Michael Schmitz , , , Message-Id: In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 11/12] macintosh/via-pmu: Clean up interrupt statistics Date: Thu, 7 Jun 2018 22:24:29 -0400 (EDT) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Replace an open-coded ffs() with the function call. Simplify an if-else cascade using a switch statement. Correct a typo and an indentation issue. Tested-by: Stan Johnson Signed-off-by: Finn Thain Reviewed-by: Geert Uytterhoeven --- drivers/macintosh/via-pmu.c | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/drivers/macintosh/via-pmu.c b/drivers/macintosh/via-pmu.c index 38d7dd0bdb28..730c10f7fbb7 100644 --- a/drivers/macintosh/via-pmu.c +++ b/drivers/macintosh/via-pmu.c @@ -1392,7 +1392,8 @@ pmu_resume(void) static void pmu_handle_data(unsigned char *data, int len) { - unsigned char ints, pirq; + unsigned char ints; + int idx; int i = 0; asleep = 0; @@ -1414,25 +1415,24 @@ pmu_handle_data(unsigned char *data, int len) ints &= ~(PMU_INT_ADB_AUTO | PMU_INT_AUTO_SRQ_POLL); next: - if (ints == 0) { if (i > pmu_irq_stats[10]) pmu_irq_stats[10] = i; return; } - - for (pirq = 0; pirq < 8; pirq++) - if (ints & (1 << pirq)) - break; - pmu_irq_stats[pirq]++; i++; - ints &= ~(1 << pirq); + + idx = ffs(ints) - 1; + ints &= ~BIT(idx); + + pmu_irq_stats[idx]++; /* Note: for some reason, we get an interrupt with len=1, * data[0]==0 after each normal ADB interrupt, at least * on the Pismo. Still investigating... --BenH */ - if ((1 << pirq) & PMU_INT_ADB) { + switch (BIT(idx)) { + case PMU_INT_ADB: if ((data[0] & PMU_INT_ADB_AUTO) == 0) { struct adb_request *req = req_awaiting_reply; if (req == 0) { @@ -1470,25 +1470,28 @@ pmu_handle_data(unsigned char *data, int len) adb_input(data+1, len-1, 1); #endif /* CONFIG_ADB */ } - } + break; + /* Sound/brightness button pressed */ - else if ((1 << pirq) & PMU_INT_SNDBRT) { + case PMU_INT_SNDBRT: #ifdef CONFIG_PMAC_BACKLIGHT if (len == 3) pmac_backlight_set_legacy_brightness_pmu(data[1] >> 4); #endif - } + break; + /* Tick interrupt */ - else if ((1 << pirq) & PMU_INT_TICK) { - /* Environement or tick interrupt, query batteries */ + case PMU_INT_TICK: + /* Environment or tick interrupt, query batteries */ if (pmu_battery_count) { if ((--query_batt_timer) == 0) { query_battery_state(); query_batt_timer = BATTERY_POLLING_COUNT; } } - } - else if ((1 << pirq) & PMU_INT_ENVIRONMENT) { + break; + + case PMU_INT_ENVIRONMENT: if (pmu_battery_count) query_battery_state(); pmu_pass_intr(data, len); @@ -1498,7 +1501,9 @@ pmu_handle_data(unsigned char *data, int len) via_pmu_event(PMU_EVT_POWER, !!(data[1]&8)); via_pmu_event(PMU_EVT_LID, data[1]&1); } - } else { + break; + + default: pmu_pass_intr(data, len); } goto next; -- 2.16.4