Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp314946imm; Thu, 7 Jun 2018 19:27:58 -0700 (PDT) X-Google-Smtp-Source: ADUXVKK2WuIg60l+cV/H4nTY5joa4g1Fq3GrsI2lMQ3yCsQV9SoVuIbaRWdb/aHsiw4u8n3Lv05E X-Received: by 2002:a17:902:bcc4:: with SMTP id o4-v6mr4552222pls.69.1528424878243; Thu, 07 Jun 2018 19:27:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528424878; cv=none; d=google.com; s=arc-20160816; b=btwFvRPuYk6XxrbKpw3lOJs4ge3BEoXFwHcvvYoYWV3Q+3gguBm4byP6t8Z0UZvX8V kJYCeM6J/65pAhCB394Fko1oV1+1fR0ve69kZhhZaX+e/AZEdHetUNr/nQ8oVZ/7Kp4G 8oDjwTT8FYfSI1wq9+FU7P0Z9cRYtF6EsxLygYQztz9Q3VhijoWTRGIWkyDs5wFDWBXv OAL+kS3L4XQRYs90Tqcql8gIcvaSlv+pov4NjXfiVnfLgYOvQ9pi96spZeDL34m7BGzJ la7rDHzvFwadBmJhlKMCeoj1MAWQolkRfU/5J1dj7O5BePqrsih+CqFIKDv1LHYLz2f5 apzQ== 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=m9CVnA3pmVbIybZjtX1mr/D0PGrTkExxFxX8un7OrtU=; b=sEL38+PPrcjCjI8X9eXDsqc5C+7plQTjggqFYVkxHYJiEr7mAYZNa5tfci16i2nD4V t2MtSQDSD2BmIrVqFf39C0vPY14nwt4Xn6vN+PHvXjmm8sCMf78rI3HqMXg2JDOoLcKA mmR/RsZ23dPRqVo2exgHwnUiuEkb6+Ff9WLNhqupoxgwnEBURrGQcugaUyaMjUnXmrIC GSV+oCRSugNxv/FGJlyVvltmWABplhvYG1p0L+N0cxkA2JEEDuTJGDGMVR3FnnvbG3ut 7wxncP5l+FLE7a+okpolMHvzMYyPQYODSXiZ08UgjW6ly4pOAXzlIe0VQgoHYN3oUuk5 iz0w== 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 r3-v6si2439008pfb.65.2018.06.07.19.27.43; Thu, 07 Jun 2018 19:27:58 -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 S1752828AbeFHC1E (ORCPT + 99 others); Thu, 7 Jun 2018 22:27:04 -0400 Received: from kvm5.telegraphics.com.au ([98.124.60.144]:58530 "EHLO kvm5.telegraphics.com.au" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752461AbeFHCY3 (ORCPT ); Thu, 7 Jun 2018 22:24:29 -0400 Received: by kvm5.telegraphics.com.au (Postfix, from userid 502) id 1205D2A334; Thu, 7 Jun 2018 22:24:29 -0400 (EDT) To: Benjamin Herrenschmidt Cc: Michael Schmitz , , , Message-Id: <36d753a57f26d248531ea3a6487b1b134b9b9906.1528423341.git.fthain@telegraphics.com.au> In-Reply-To: References: From: Finn Thain Subject: [PATCH v2 04/12] macintosh/via-pmu: Enhance state machine with new 'uninitialized' state 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 On 68k Macs, the via/vias pointer can't be used to determine whether the PMU driver has been initialized. For portability, add a new state to indicate that via_find_pmu() succeeded. After via_find_pmu() executes, testing vias == NULL is equivalent to testing via == NULL. Replace these tests with pmu_state == uninitialized which is simpler and more consistent. No functional change. Tested-by: Stan Johnson Signed-off-by: Finn Thain --- drivers/macintosh/via-pmu.c | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/drivers/macintosh/via-pmu.c b/drivers/macintosh/via-pmu.c index 4c1bae5380c2..c4c324fb5fa6 100644 --- a/drivers/macintosh/via-pmu.c +++ b/drivers/macintosh/via-pmu.c @@ -114,6 +114,7 @@ static volatile unsigned char __iomem *via; #define CB1_INT 0x10 /* transition on CB1 input */ static volatile enum pmu_state { + uninitialized = 0, idle, sending, intack, @@ -274,7 +275,7 @@ int __init find_via_pmu(void) u64 taddr; const u32 *reg; - if (via != 0) + if (pmu_state != uninitialized) return 1; vias = of_find_node_by_name(NULL, "via-pmu"); if (vias == NULL) @@ -369,20 +370,19 @@ int __init find_via_pmu(void) fail: of_node_put(vias); vias = NULL; + pmu_state = uninitialized; return 0; } #ifdef CONFIG_ADB static int pmu_probe(void) { - return vias == NULL? -ENODEV: 0; + return pmu_state == uninitialized ? -ENODEV : 0; } static int pmu_init(void) { - if (vias == NULL) - return -ENODEV; - return 0; + return pmu_state == uninitialized ? -ENODEV : 0; } #endif /* CONFIG_ADB */ @@ -397,7 +397,7 @@ static int __init via_pmu_start(void) { unsigned int irq; - if (vias == NULL) + if (pmu_state == uninitialized) return -ENODEV; batt_req.complete = 1; @@ -463,7 +463,7 @@ arch_initcall(via_pmu_start); */ static int __init via_pmu_dev_init(void) { - if (vias == NULL) + if (pmu_state == uninitialized) return -ENODEV; #ifdef CONFIG_PMAC_BACKLIGHT @@ -966,7 +966,7 @@ static int pmu_send_request(struct adb_request *req, int sync) { int i, ret; - if ((vias == NULL) || (!pmu_fully_inited)) { + if (pmu_state == uninitialized || !pmu_fully_inited) { req->complete = 1; return -ENXIO; } @@ -1060,7 +1060,7 @@ static int __pmu_adb_autopoll(int devs) static int pmu_adb_autopoll(int devs) { - if ((vias == NULL) || (!pmu_fully_inited) || !pmu_has_adb) + if (pmu_state == uninitialized || !pmu_fully_inited || !pmu_has_adb) return -ENXIO; adb_dev_map = devs; @@ -1073,7 +1073,7 @@ static int pmu_adb_reset_bus(void) struct adb_request req; int save_autopoll = adb_dev_map; - if ((vias == NULL) || (!pmu_fully_inited) || !pmu_has_adb) + if (pmu_state == uninitialized || !pmu_fully_inited || !pmu_has_adb) return -ENXIO; /* anyone got a better idea?? */ @@ -1109,7 +1109,7 @@ pmu_request(struct adb_request *req, void (*done)(struct adb_request *), va_list list; int i; - if (vias == NULL) + if (pmu_state == uninitialized) return -ENXIO; if (nbytes < 0 || nbytes > 32) { @@ -1134,7 +1134,7 @@ pmu_queue_request(struct adb_request *req) unsigned long flags; int nsend; - if (via == NULL) { + if (pmu_state == uninitialized) { req->complete = 1; return -ENXIO; } @@ -1247,7 +1247,7 @@ pmu_start(void) void pmu_poll(void) { - if (!via) + if (pmu_state == uninitialized) return; if (disable_poll) return; @@ -1257,7 +1257,7 @@ pmu_poll(void) void pmu_poll_adb(void) { - if (!via) + if (pmu_state == uninitialized) return; if (disable_poll) return; @@ -1272,7 +1272,7 @@ pmu_poll_adb(void) void pmu_wait_complete(struct adb_request *req) { - if (!via) + if (pmu_state == uninitialized) return; while((pmu_state != idle && pmu_state != locked) || !req->complete) via_pmu_interrupt(0, NULL); @@ -1288,7 +1288,7 @@ pmu_suspend(void) { unsigned long flags; - if (!via) + if (pmu_state == uninitialized) return; spin_lock_irqsave(&pmu_lock, flags); @@ -1319,7 +1319,7 @@ pmu_resume(void) { unsigned long flags; - if (!via || (pmu_suspended < 1)) + if (pmu_state == uninitialized || pmu_suspended < 1) return; spin_lock_irqsave(&pmu_lock, flags); @@ -1681,7 +1681,7 @@ pmu_enable_irled(int on) { struct adb_request req; - if (vias == NULL) + if (pmu_state == uninitialized) return ; if (pmu_kind == PMU_KEYLARGO_BASED) return ; @@ -1696,7 +1696,7 @@ pmu_restart(void) { struct adb_request req; - if (via == NULL) + if (pmu_state == uninitialized) return; local_irq_disable(); @@ -1721,7 +1721,7 @@ pmu_shutdown(void) { struct adb_request req; - if (via == NULL) + if (pmu_state == uninitialized) return; local_irq_disable(); @@ -1749,7 +1749,7 @@ pmu_shutdown(void) int pmu_present(void) { - return via != 0; + return pmu_state != uninitialized; } #if defined(CONFIG_SUSPEND) && defined(CONFIG_PPC32) @@ -2415,7 +2415,7 @@ static struct miscdevice pmu_device = { static int pmu_device_init(void) { - if (!via) + if (pmu_state == uninitialized) return 0; if (misc_register(&pmu_device) < 0) printk(KERN_ERR "via-pmu: cannot register misc device.\n"); -- 2.16.4