From patchwork Tue Jan 8 20:05:08 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Pawe=C5=82_Chmiel?= X-Patchwork-Id: 1022115 Return-Path: X-Original-To: incoming-imx@patchwork.ozlabs.org Delivered-To: patchwork-incoming-imx@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:e::133; helo=bombadil.infradead.org; envelope-from=linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="QPD0ePi0"; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="UKAEwXL9"; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 43Z3Dr0mHyz9sPn for ; Wed, 9 Jan 2019 07:06:36 +1100 (AEDT) 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:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=lSP96ZhHhxyXasJDtJRizS0fvPJhjCmodn1BbqPo2qE=; b=QPD0ePi05zUB42 oLCCK0XYWSR/5ma564zhD5+sEb+kHmlbmXoh8V3ARs72qDt0Blx4gRy1aN504KOeiue+mcn8Vjfot fX1YaRzpZ6EwIiEWWDKH9yN1b3wY9a3uT1ObApp48RbCDJpj7PGkG9JufJo7ZlgB4hVhPt/UgZ5NP Sj8jzHvDZGBuXo7TFCSlocHmUNInOQjy0Nm8veZYoDGi6qr0QQvTL7MLlYU2XrAEMAleaEJQs02Q4 ws0tMxA+66hZFM7QHZlDORbYV2jVXyui4PhKK4ObVyCuZOnqBjlNTQK27g2GJmr2lKI/lSvOMW9qT 765BxtCbPjOqNMCZZhng==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1ggxdt-0001Oo-5q; Tue, 08 Jan 2019 20:06:29 +0000 Received: from mail-lf1-x142.google.com ([2a00:1450:4864:20::142]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1ggxcu-0000Ov-Om for linux-arm-kernel@lists.infradead.org; Tue, 08 Jan 2019 20:05:33 +0000 Received: by mail-lf1-x142.google.com with SMTP id i26so3913851lfc.0 for ; Tue, 08 Jan 2019 12:05:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=nLRztxJAeC5B0+rbtnhFFtucRRJLwQz+ndZxADHnDTU=; b=UKAEwXL9hYyXEhhP0NaziiUWYqtM6BZnjtuY+YV4w3EzYgVDCGF3EV88PHcZqc+mdj kC1+FienrQZD3XyfAczMzbeAcbTJxyBsWlvBk4Vbve7llKXm/9t+zIy4BQi1m622tmCm 25pwUNv1EFNO00GYU9IPFFQrPrcnBrZal6T0s2Rg/iUuKCX29JhDRvBrqLzBfDrKXVoo h81FLSoQEcCFH13fIo5ttsZ/7y8cob+nd8JLbaOQ8XGsiLmK04Y0Jd1HRIhlgtY9S2wl C26jgTV29SW98g1h2mBR9enBj0IY/cgyQgj7cU1frTbBatiPf9hZtfnXezqThHppiczR 0yYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=nLRztxJAeC5B0+rbtnhFFtucRRJLwQz+ndZxADHnDTU=; b=GUA7VbCReb03NOIZvPd0XIJ1nzQYHzJH8hhNOZTxGf75k2IE1b9LVm7GeijwkaBgxJ s0fWloclGMbZ719IG4MfUU8rZPjDpa7Kc322ZAk8j4+lHcpZtPTa7HBEQKMJbIKAajhG N2KZeSHewgPKNx2o9VzQLj/kQw8m2UeHya4TaIxHQjkb8CZv6Bj6iRwntIYTdm2AytSI CNlh+S5XD7WnfeFEp6X6dzPQc1A51gC3heEtnaeS22UGF7Fy/kHW+A7oqlJJ9t0bW4Dt Y4jTzbM9ZfteiVqUePyCqLzp5qm9BXBTcOkFE25o+9RH1j9VIvFYP6BpYebxukXsM13b CyWg== X-Gm-Message-State: AJcUukc247OAeg9V+ObHp1+/0AeWp4nC/f84sDLojMq/HKUH/+A9ATxz F/02H3BgIFROhC/2XNhu9bU= X-Google-Smtp-Source: ALg8bN4IdbHawsPUgv2UefkEeNdV4W9bb30hNxa2Lb9Non7jT4OuwfzlsfKBZFvMSSdHmRw4GLI39g== X-Received: by 2002:a19:4ed9:: with SMTP id u86mr1752659lfk.78.1546977926750; Tue, 08 Jan 2019 12:05:26 -0800 (PST) Received: from localhost.localdomain ([2a02:a315:5445:5300:d033:e708:8ec7:810d]) by smtp.googlemail.com with ESMTPSA id y23-v6sm14486768ljk.95.2019.01.08.12.05.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 08 Jan 2019 12:05:26 -0800 (PST) From: =?utf-8?q?Pawe=C5=82_Chmiel?= To: kgene@kernel.org Subject: [PATCH 3/4] cpufreq: s5pv210: Defer probe if getting regulators fail Date: Tue, 8 Jan 2019 21:05:08 +0100 Message-Id: <20190108200509.30494-4-pawel.mikolaj.chmiel@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190108200509.30494-1-pawel.mikolaj.chmiel@gmail.com> References: <20190108200509.30494-1-pawel.mikolaj.chmiel@gmail.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190108_120529_065160_A2B062E6 X-CRM114-Status: GOOD ( 14.44 ) X-Spam-Score: -0.2 (/) X-Spam-Report: SpamAssassin version 3.4.2 on bombadil.infradead.org summary: Content analysis details: (-0.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [2a00:1450:4864:20:0:0:0:142 listed in] [list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (pawel.mikolaj.chmiel[at]gmail.com) -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: mark.rutland@arm.com, devicetree@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-pm@vger.kernel.org, viresh.kumar@linaro.org, rjw@rjwysocki.net, linux@armlinux.org.uk, krzk@kernel.org, linux-kernel@vger.kernel.org, robh+dt@kernel.org, linux-arm-kernel@lists.infradead.org, =?utf-8?q?Pawe=C5=82_Chmiel?= Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+incoming-imx=patchwork.ozlabs.org@lists.infradead.org List-Id: linux-imx-kernel.lists.patchwork.ozlabs.org There is possibility, that when probing driver, regulators are not yet initialized. In this case we should return EPROBE_DEFER and wait till they're initialized, since they're required currently for cpufreq driver to work. Also move regulator initialization code at beginning of probe, so we can defer as fast as posibble. Signed-off-by: Paweł Chmiel --- drivers/cpufreq/s5pv210-cpufreq.c | 33 +++++++++++++++++++------------ 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/drivers/cpufreq/s5pv210-cpufreq.c b/drivers/cpufreq/s5pv210-cpufreq.c index f51697f1e0b3..2d0e4dc7ede7 100644 --- a/drivers/cpufreq/s5pv210-cpufreq.c +++ b/drivers/cpufreq/s5pv210-cpufreq.c @@ -594,6 +594,26 @@ static int s5pv210_cpufreq_probe(struct platform_device *pdev) * this whole driver as soon as S5PV210 gets migrated to use * cpufreq-dt driver. */ + arm_regulator = regulator_get(NULL, "vddarm"); + if (PTR_ERR(arm_regulator) == -EPROBE_DEFER) { + pr_dbg("vddarm regulator not ready, defer\n"); + return -EPROBE_DEFER; + } else if (IS_ERR(arm_regulator)) { + pr_err("failed to get regulator vddarm\n"); + return PTR_ERR(arm_regulator); + } + + int_regulator = regulator_get(NULL, "vddint"); + if (PTR_ERR(int_regulator == -EPROBE_DEFER) { + regulator_put(arm_regulator); + pr_dbg("vddint regulator not ready, defer\n"); + return -EPROBE_DEFER; + } else if (IS_ERR(int_regulator)) { + regulator_put(arm_regulator); + pr_err("failed to get regulator vddint\n"); + return PTR_ERR(int_regulator); + } + np = of_find_compatible_node(NULL, NULL, "samsung,s5pv210-clock"); if (!np) { pr_err("%s: failed to find clock controller DT node\n", @@ -633,19 +653,6 @@ static int s5pv210_cpufreq_probe(struct platform_device *pdev) } } - arm_regulator = regulator_get(NULL, "vddarm"); - if (IS_ERR(arm_regulator)) { - pr_err("failed to get regulator vddarm\n"); - return PTR_ERR(arm_regulator); - } - - int_regulator = regulator_get(NULL, "vddint"); - if (IS_ERR(int_regulator)) { - pr_err("failed to get regulator vddint\n"); - regulator_put(arm_regulator); - return PTR_ERR(int_regulator); - } - register_reboot_notifier(&s5pv210_cpufreq_reboot_notifier); return cpufreq_register_driver(&s5pv210_driver);