From patchwork Fri Dec 30 13:45:32 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linus Walleij X-Patchwork-Id: 89363 Delivered-To: patch@linaro.org Received: by 10.140.20.101 with SMTP id 92csp6445943qgi; Fri, 30 Dec 2016 05:45:40 -0800 (PST) X-Received: by 10.98.73.1 with SMTP id w1mr42902366pfa.123.1483105540238; Fri, 30 Dec 2016 05:45:40 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r20si57084819pfj.47.2016.12.30.05.45.40; Fri, 30 Dec 2016 05:45:40 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-gpio-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@linaro.org; spf=pass (google.com: best guess record for domain of linux-gpio-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-gpio-owner@vger.kernel.org; dmarc=fail (p=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753899AbcL3Npj (ORCPT + 4 others); Fri, 30 Dec 2016 08:45:39 -0500 Received: from mail-lf0-f45.google.com ([209.85.215.45]:34857 "EHLO mail-lf0-f45.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753749AbcL3Npi (ORCPT ); Fri, 30 Dec 2016 08:45:38 -0500 Received: by mail-lf0-f45.google.com with SMTP id b14so237134911lfg.2 for ; Fri, 30 Dec 2016 05:45:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=qrGrcGCAyT6cqAnh7v+9Jw+e1E77jSPOFnV8KZlozkU=; b=fyFhD7MJEwvhcnxzMwfzPNSH2Uk47cSuCZTJzNYjLzMpSmll+5Ko2xSdx7S1zXyCAW eCGVwpLV3ouNOOaF7g0crrh5JGHaw9tEJxEQXMgQsLbqm2BOvpjGxZtQqAoD4AeknHc6 tipE5tsx4tLm5eMtDlTY7eG1U5xzfmalANn28= 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; bh=qrGrcGCAyT6cqAnh7v+9Jw+e1E77jSPOFnV8KZlozkU=; b=A4xGKg9/1CDBc5NtuNg3iQZCRuW/EgXsZ6Hmh6BgQJGpXVCV2CQKTTbkzUIhEiKQHD 2fIH58gVCWq1164/lqHE2fzpa8/47F+fUfJLwxXQ85tcjtvYtmQtULCkQsaW4PqWWdAw 1BOoF1cg3lXPA+n5w/bE3e9LVZLUEoMX03mnMS7iP9s6on98yQd6TJh6g+m6H1gVXqLt NDv7E3VwFjMt6mCtsR2n/33oVlxCgWSGcEVg/tr8gdH6Cu/xrduHuaPubdgrcKyeUCwp uD7jeF6Sy0tbzI+j72CqJh5bs5vWKR8smD+XLL+7UvAYgbAtsx1ZA2D4IZ7iz5kWx9Mi 6FJg== X-Gm-Message-State: AIkVDXKmoyeS63+5lYK1cYs9mveAkMqCwpTwE6xwD25tYdL2Xluh87YUuA3F5CoQARpk+tew X-Received: by 10.25.130.149 with SMTP id e143mr16271473lfd.87.1483105537157; Fri, 30 Dec 2016 05:45:37 -0800 (PST) Received: from localhost.localdomain (c-357171d5.014-348-6c756e10.cust.bredbandsbolaget.se. [213.113.113.53]) by smtp.gmail.com with ESMTPSA id l137sm13409511lfb.7.2016.12.30.05.45.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 30 Dec 2016 05:45:36 -0800 (PST) From: Linus Walleij To: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: linux-gpio@vger.kernel.org, Linus Walleij , Tony Lindgren Subject: [PATCH] pinctrl: add some comments to the hog/late init code Date: Fri, 30 Dec 2016 14:45:32 +0100 Message-Id: <20161230134532.12884-1-linus.walleij@linaro.org> X-Mailer: git-send-email 2.9.3 Sender: linux-gpio-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-gpio@vger.kernel.org It confused me a bit so it may confuse others. Make it crystal clear what is going on here for any future readers. Cc: Tony Lindgren Signed-off-by: Linus Walleij --- drivers/pinctrl/core.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) -- 2.9.3 -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c index d02e8def9506..a9e3a75fb67d 100644 --- a/drivers/pinctrl/core.c +++ b/drivers/pinctrl/core.c @@ -1753,6 +1753,12 @@ static void pinctrl_late_init(struct work_struct *work) pctldev = container_of(work, struct pinctrl_dev, late_init.work); + /* + * If the pin controller does NOT have hogs, this will report an + * error and we skip over this entire branch. This is why we can + * call this function directly when we do not have hogs on the + * device. + */ pctldev->p = create_pinctrl(pctldev->dev, pctldev); if (!IS_ERR(pctldev->p)) { kref_get(&pctldev->p->users); @@ -1847,6 +1853,12 @@ struct pinctrl_dev *pinctrl_register(struct pinctrl_desc *pctldesc, goto out_err; } + /* + * If the device has hogs we want the probe() function of the driver + * to complete before we go in and hog them and add the pin controller + * to the list of controllers. If it has no hogs, we can just complete + * the registration immediately. + */ if (pinctrl_dt_has_hogs(pctldev)) schedule_delayed_work(&pctldev->late_init, 0); else