Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp478087imm; Wed, 13 Jun 2018 03:41:27 -0700 (PDT) X-Google-Smtp-Source: ADUXVKIyRRMPAule5WgGLhDje9U2N5HBMnatTdkfy3G7s3PZvpnUp1yNHyRFIC8eB8c5AwH7r22+ X-Received: by 2002:a62:8910:: with SMTP id v16-v6mr4271542pfd.13.1528886487489; Wed, 13 Jun 2018 03:41:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528886487; cv=none; d=google.com; s=arc-20160816; b=tXukWtD3BRMvdo4GxzYNVZLUxJ/4Q9RTbOxinOmvpjNcwHsHe1fZogQFypAUyb7FK7 4PCC17wpLiGs3XsVTA5U7KmXeadi+rH6pEmF1N7oHDupDfuuykAe/h8I+hGMjbVaZV2y 1i2p+mC87zIJOLmYm8oigjENsm3edw0lH0EFIwH4yOyZNSHq7nNojM06NlH9QRnfQhU9 c0DNGBO2hNypHURSkPNKTauTPcBwZG1TRHeLT9KnmXMIf60wDu5PQQl1T7Owfp3QgToF tzhglaSgeZAi3xW7uX0izZD0jmrK7KauDI5+4bRdhGJ/FzsaorGVlIQ8TaZc2KNhxkcM pwcg== 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=PK55rZVWDkiEWrgtUW1zMyCqW964BikCt6hUKr3ke35EcCNoX8KUlWsZJMMvs6Bp8m Ye2TL4RrUMngjTwMmTVCi8HQic0ZzdsD6W8QuiFyXNY1+QRAMhVejb3sdhQvVhYOQtXf 9z0iHur3nd0Cm5ldP/67Ul/TcpwcHSNe7nrqOfYSRUzOeDJvhkrFUsDZfIiDs5lWPzw1 ohq713yW0SN/YeNaQlWTtH8Q2BgQEqI/YrdJLpPYO5AQASup9pbz9KlysY3oD2bXq8wF cmMCr/FO5/Za0hwchlNeV6jSSnbHO/QfeHMkxn3wrexhBN4rLm7IuP+a2ezyXXwt2G2J dztQ== 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 v7-v6si2120853pgb.23.2018.06.13.03.41.13; Wed, 13 Jun 2018 03:41:27 -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 S935399AbeFMKjs (ORCPT + 99 others); Wed, 13 Jun 2018 06:39:48 -0400 Received: from kvm5.telegraphics.com.au ([98.124.60.144]:47914 "EHLO kvm5.telegraphics.com.au" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S935150AbeFMKiC (ORCPT ); Wed, 13 Jun 2018 06:38:02 -0400 Received: by kvm5.telegraphics.com.au (Postfix, from userid 502) id B2E5828584; Wed, 13 Jun 2018 06:38:01 -0400 (EDT) To: Benjamin Herrenschmidt Cc: Michael Schmitz , , , Message-Id: <36d753a57f26d248531ea3a6487b1b134b9b9906.1528885172.git.fthain@telegraphics.com.au> In-Reply-To: References: From: Finn Thain Subject: [PATCH v3 04/12] macintosh/via-pmu: Enhance state machine with new 'uninitialized' state Date: Wed, 13 Jun 2018 06:38:01 -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