From patchwork Mon Jul 5 02:50:30 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shawn Guo X-Patchwork-Id: 470341 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DB7BAC07E9B for ; Mon, 5 Jul 2021 02:50:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C227861405 for ; Mon, 5 Jul 2021 02:50:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229757AbhGECxc (ORCPT ); Sun, 4 Jul 2021 22:53:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37722 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229743AbhGECxb (ORCPT ); Sun, 4 Jul 2021 22:53:31 -0400 Received: from mail-pf1-x42e.google.com (mail-pf1-x42e.google.com [IPv6:2607:f8b0:4864:20::42e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D66DCC061764 for ; Sun, 4 Jul 2021 19:50:54 -0700 (PDT) Received: by mail-pf1-x42e.google.com with SMTP id j199so15022097pfd.7 for ; Sun, 04 Jul 2021 19:50:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=BVkVvoLhlvv3KppO1b0TRg6fddRYWUrnF61FALx2Tlg=; b=RLMt+5SGRUMwjcxTeILVJP0YqCzVQGNhwSlb7M1kOV12rHTmadCBJTIMw9keQJpKtM te5EyOcJv5Hhtw/VzLQ0WQ/SfMchIiYf0akkEUWulD68s1lj/rWCanhMI7DcKDGUJ5RM c3WmV3+OKUy4E5eA5vxDpHl+HJLRBJH1D6zFpvsTr6DnJj8AJhzsWWMdQHhhM4rz763o /K8V40tpnHRMo+HAOZTjf472ihe0bZwAeoUqeOHm//CkTMTtWY5RbH1HT0uirq/rl36V mTnHkUhxHi+fsaB5AhaebK9+aWUv4BgPTSaH6buwSL4g9PRFpDL+dxQ0+fPRfuJXmaBe fTpQ== 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; bh=BVkVvoLhlvv3KppO1b0TRg6fddRYWUrnF61FALx2Tlg=; b=kqZ5igrTGUyaXv6TSFddX/2d0YU/kYIE5VGGxVyZAPNFCuiIncNE1StiDsMycKZUwn 9KbOSSicDFOfteWqwWAi5OyuWI+bBYetU4HlZ703pRmoDEpA1scvWk4QPY+ZTQOuLtIc v0YyGlmCpz2hTE2I4Kn/l0yHWKwsbq+O8J+3cIkdhzfQOi7hGxqL7xJNUGba3mtsg2WK mXTVFlSO+v3H9hftO0sc1zHReqGSLdLkbxDTmkkUkezGb4VCsCKsfNccYZ5cWH45UnqI hQi4azW9HxTjsNTqFnNbGXBG5v1PMQgp/FKqxB0zlyx1pxGXNEMrUrXpYv4k0a8tMhCX M/5g== X-Gm-Message-State: AOAM5327ZbVPypyyMhotBlmp7NIB3jsxasnH62p0/pByiFfdnKciCTEx +5wKLIkZQvOgCQ9lmoB3lEOgPA== X-Google-Smtp-Source: ABdhPJy2wxkmR9njdKtQHvZAuf5Z8esv5vUXz+zBwMP32HUxP1F5FUGrVZJDfmyfKZa2xtORNFJonw== X-Received: by 2002:a63:5117:: with SMTP id f23mr13113629pgb.200.1625453454408; Sun, 04 Jul 2021 19:50:54 -0700 (PDT) Received: from localhost.localdomain (80.251.214.228.16clouds.com. [80.251.214.228]) by smtp.gmail.com with ESMTPSA id i13sm11891041pgm.26.2021.07.04.19.50.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 04 Jul 2021 19:50:53 -0700 (PDT) From: Shawn Guo To: Sebastian Reichel Cc: Stephan Gerhold , Rob Herring , Vinod Koul , Bjorn Andersson , devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org, Shawn Guo Subject: [PATCH 1/3] dt-bindings: power: reset: Convert qcom, pon to DT schema Date: Mon, 5 Jul 2021 10:50:30 +0800 Message-Id: <20210705025032.12804-2-shawn.guo@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210705025032.12804-1-shawn.guo@linaro.org> References: <20210705025032.12804-1-shawn.guo@linaro.org> Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org It converts qcom,pon DT bindings from legacy bare text to YAML format. Signed-off-by: Shawn Guo --- .../bindings/power/reset/qcom,pon.txt | 49 ------------------- .../bindings/power/reset/qcom,pon.yaml | 49 +++++++++++++++++++ 2 files changed, 49 insertions(+), 49 deletions(-) delete mode 100644 Documentation/devicetree/bindings/power/reset/qcom,pon.txt create mode 100644 Documentation/devicetree/bindings/power/reset/qcom,pon.yaml diff --git a/Documentation/devicetree/bindings/power/reset/qcom,pon.txt b/Documentation/devicetree/bindings/power/reset/qcom,pon.txt deleted file mode 100644 index 0c0dc3a1e693..000000000000 --- a/Documentation/devicetree/bindings/power/reset/qcom,pon.txt +++ /dev/null @@ -1,49 +0,0 @@ -Qualcomm PON Device - -The Power On device for Qualcomm PM8xxx is MFD supporting pwrkey -and resin along with the Android reboot-mode. - -This DT node has pwrkey and resin as sub nodes. - -Required Properties: --compatible: Must be one of: - "qcom,pm8916-pon" - "qcom,pms405-pon" - "qcom,pm8998-pon" - --reg: Specifies the physical address of the pon register - -Optional subnode: --pwrkey: Specifies the subnode pwrkey and should follow the - qcom,pm8941-pwrkey.txt description. --resin: Specifies the subnode resin and should follow the - qcom,pm8xxx-pwrkey.txt description. - -The rest of the properties should follow the generic reboot-mode description -found in reboot-mode.txt - -Example: - - pon@800 { - compatible = "qcom,pm8916-pon"; - - reg = <0x800>; - mode-bootloader = <0x2>; - mode-recovery = <0x1>; - - pwrkey { - compatible = "qcom,pm8941-pwrkey"; - interrupts = <0x0 0x8 0 IRQ_TYPE_EDGE_BOTH>; - debounce = <15625>; - bias-pull-up; - linux,code = ; - }; - - resin { - compatible = "qcom,pm8941-resin"; - interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>; - debounce = <15625>; - bias-pull-up; - linux,code = ; - }; - }; diff --git a/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml b/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml new file mode 100644 index 000000000000..7764c804af1d --- /dev/null +++ b/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml @@ -0,0 +1,49 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/power/reset/qcom,pon.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Qualcomm PON Device + +maintainers: + - Vinod Koul + +description: | + The Power On device for Qualcomm PM8xxx is MFD supporting pwrkey + and resin along with the Android reboot-mode. + +properties: + compatible: + enum: + - qcom,pm8916-pon + - qcom,pms405-pon + - qcom,pm8998-pon + + reg: + maxItems: 1 + +patternProperties: + "^mode-.+": + $ref: /schemas/types.yaml#/definitions/uint32 + description: Vendor-specific mode value written to the mode register + +required: + - compatible + - reg + +additionalProperties: false + +examples: + - | + pmic { + #address-cells = <1>; + #size-cells = <0>; + + pon@800 { + compatible = "qcom,pm8916-pon"; + reg = <0x800>; + mode-bootloader = <0x2>; + mode-recovery = <0x1>; + }; + }; From patchwork Mon Jul 5 02:50:31 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shawn Guo X-Patchwork-Id: 470681 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 603EDC07E9A for ; Mon, 5 Jul 2021 02:51:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 49FB9613D2 for ; Mon, 5 Jul 2021 02:51:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229785AbhGECxe (ORCPT ); Sun, 4 Jul 2021 22:53:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37738 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229744AbhGECxd (ORCPT ); Sun, 4 Jul 2021 22:53:33 -0400 Received: from mail-pj1-x102f.google.com (mail-pj1-x102f.google.com [IPv6:2607:f8b0:4864:20::102f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 82BC8C061762 for ; Sun, 4 Jul 2021 19:50:57 -0700 (PDT) Received: by mail-pj1-x102f.google.com with SMTP id 67-20020a17090a0fc9b02901725ed49016so8015011pjz.1 for ; Sun, 04 Jul 2021 19:50:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=77N/67rSOupK1Chm3/4oKVH0HtWBRmi/Fw54y3WWFfQ=; b=S6Zwf1e/LnhulYerNCjOfNqfeDM2VNDoZdMluwc3wcHJSiqhctzalDIDSatEGVnmOB VQkDMHBpuhJEsiy2S27bV/QZly6xp8pB747+9EbgURxw2OCg248OBM4ZmZIYdlbTyqI2 NcCI/WwKylPxOgQaMxi4dmS4tZlIxQUOIzCqeIzbxR/JUzuw7v2l0y52xwnRcFzi0Sjt KmOZVzz9Vl1L2EizywSdr42sg+iGV5zyo1yI712mGkDA/ivTAlkeyKRGX9ZUnra0vByF cWSnCKx9r6sb80MUZfwir9AVb2w3mBmQmwcf0Xrzg788T8txOttYtmh7AJ21irw2iMpv SZng== 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; bh=77N/67rSOupK1Chm3/4oKVH0HtWBRmi/Fw54y3WWFfQ=; b=DFyEHITk3ksqA0cQIA/lfTzdLwlks3m6fs0Vgl7+WBTBTB1/WKq3lB5YpU6h20W/1G WXO9IEhHSfSlGmoPR3MfZiA4ouMgjMCu9E9R1cmh5alkwMXrWXukQvZ5iiOMQgtV6W46 aHYfTPTjHFmiizp5UITPtz1T9r6sIu/urasiJRnJwJ9asAI7dn/MPY890HhWRAqm81UP j5JDM7OptWP4aiv5skuBwTgJ3BXO3DOjU0CCVS8jJYW9O+OpDnwXBTs2IZ3K+gpQ34D2 mBbOe3DeKcx+VsnmlxCwc35lcFx99zgXho5uM1/03GdRrLBLBByrueo9ogTuzf/znByR 0lxw== X-Gm-Message-State: AOAM531VkGP/5cnvJPenh5J0FoYYyrEJxR4gVvtJ6MwRoLi5ElSEHYlx d6h+sP7qJd+oVcuino38jemC7g== X-Google-Smtp-Source: ABdhPJzY3f2gHVvXij7AuGGJdzr5F1gId59J7RbuJOiaJF1b0tz0kXpXacL91zrmEuq87bpq31xp6Q== X-Received: by 2002:a17:90b:1085:: with SMTP id gj5mr12758117pjb.166.1625453457107; Sun, 04 Jul 2021 19:50:57 -0700 (PDT) Received: from localhost.localdomain (80.251.214.228.16clouds.com. [80.251.214.228]) by smtp.gmail.com with ESMTPSA id i13sm11891041pgm.26.2021.07.04.19.50.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 04 Jul 2021 19:50:56 -0700 (PDT) From: Shawn Guo To: Sebastian Reichel Cc: Stephan Gerhold , Rob Herring , Vinod Koul , Bjorn Andersson , devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org, Shawn Guo Subject: [PATCH 2/3] dt-bindings: qcom, pon: Add 'qcom, pon-reboot-not-used' property Date: Mon, 5 Jul 2021 10:50:31 +0800 Message-Id: <20210705025032.12804-3-shawn.guo@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210705025032.12804-1-shawn.guo@linaro.org> References: <20210705025032.12804-1-shawn.guo@linaro.org> Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org Add an optional 'qcom,pon-reboot-not-used' property for devices, which do not use PON register to pass reboot mode but other mechanism, e.g. particular IMEM address. Signed-off-by: Shawn Guo --- Documentation/devicetree/bindings/power/reset/qcom,pon.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml b/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml index 7764c804af1d..584eff179904 100644 --- a/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml +++ b/Documentation/devicetree/bindings/power/reset/qcom,pon.yaml @@ -23,6 +23,10 @@ properties: reg: maxItems: 1 + qcom,pon-reboot-not-used: + description: Support of reboot mode passing through PON register is not used + type: boolean + patternProperties: "^mode-.+": $ref: /schemas/types.yaml#/definitions/uint32 From patchwork Mon Jul 5 02:50:32 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shawn Guo X-Patchwork-Id: 470340 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-18.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER, INCLUDES_PATCH, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9663EC07E9B for ; Mon, 5 Jul 2021 02:51:01 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8361A613D2 for ; Mon, 5 Jul 2021 02:51:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229793AbhGECxh (ORCPT ); Sun, 4 Jul 2021 22:53:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37762 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229787AbhGECxg (ORCPT ); Sun, 4 Jul 2021 22:53:36 -0400 Received: from mail-pl1-x629.google.com (mail-pl1-x629.google.com [IPv6:2607:f8b0:4864:20::629]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 71C9FC061764 for ; Sun, 4 Jul 2021 19:51:00 -0700 (PDT) Received: by mail-pl1-x629.google.com with SMTP id s13so6379265plg.12 for ; Sun, 04 Jul 2021 19:51:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=0w/ce/936AZE4PtNhcMd+7r7gKVsqIHrI5nqRlAtLJk=; b=HS4DyokZjNGvEUjCkb3k7+6tLiLu+9QZbUual5EICb3H0E611KtRHmRo8JYvg0TfNO Y8kF+Uoy50inNABUw+jcEhAO2vk5lzCbo5cwGzVXbvm3kMflpVoG1R2EBxe29QkX2lNS YA5SPYNUXVAK0gL19ki+6EURzdH4Gwt+3OPNGWvCxN/uMitaMWwHt3W86ORvMXf0Uw92 kzsXMRAJRoO4yOxPxTmYD4zVhadsDfn5ol2kq4nI2PzTtJegJ3+Fo8fBV0vKovxl7lg2 9KTqQxARG5Zlj0G+6r8qvayrlxpY02gA2pWg//f1Yxi1tNVvs76AalKd1Y2CtibjLqL+ 93cg== 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; bh=0w/ce/936AZE4PtNhcMd+7r7gKVsqIHrI5nqRlAtLJk=; b=W40M/QvWXN5TikwF26DgbKQEAVXf48b63W96yHxPDtdRBrNnLoCvFAMxp9oqRMgjz4 O65jwiQzISDTTVqOjTnK3UQ7tU/gmaOrt7Wr0LkLYTLi+TaKVHoZkejG9IXQzgFwCKI0 bVpcrOxRkxqoLl8piV/02MUYCf0hSTfA9L+usWj+XK1OqpT7idZj2lTt2L5Vo98n+rq3 rapx81HBhkBWTFpNvUudhF4eMvKen/IAyILJaEsSRc8Ubkl8+WxDygs07KSlqt6rh6WO UjUxwbp546scCRwasUYk0vPyLjjll11PiQd//hj1LYjHFYSOZyPiRjcYiK4W1L/vGZSR hXsQ== X-Gm-Message-State: AOAM532KLVLYMDDyeeQSSp9ayZGaRus8oioU0wGE53iIe/hDLFbcyw7y ZyjgBAQwxZYAfgKdLixRaoiCpg== X-Google-Smtp-Source: ABdhPJxH+9i4yo7wFWjD0w0TRpb1iYk8WxY/FIwfzUZgWVgaPg6VBySJA65RG9M5Ibx19O7PxyP1uw== X-Received: by 2002:a17:902:b203:b029:127:16e0:286a with SMTP id t3-20020a170902b203b029012716e0286amr10451169plr.0.1625453460017; Sun, 04 Jul 2021 19:51:00 -0700 (PDT) Received: from localhost.localdomain (80.251.214.228.16clouds.com. [80.251.214.228]) by smtp.gmail.com with ESMTPSA id i13sm11891041pgm.26.2021.07.04.19.50.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 04 Jul 2021 19:50:59 -0700 (PDT) From: Shawn Guo To: Sebastian Reichel Cc: Stephan Gerhold , Rob Herring , Vinod Koul , Bjorn Andersson , devicetree@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org, Shawn Guo Subject: [PATCH 3/3] power: reset: qcom-pon: Add support for 'qcom, pon-reboot-not-used' Date: Mon, 5 Jul 2021 10:50:32 +0800 Message-Id: <20210705025032.12804-4-shawn.guo@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210705025032.12804-1-shawn.guo@linaro.org> References: <20210705025032.12804-1-shawn.guo@linaro.org> Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org Check property 'qcom,pon-reboot-not-used' and skip reboot-mode setup if the property is present. This is useful for devices that use IMEM instead of PON register to pass reboot mode, but still want to populate pwrkey and resin devices. Signed-off-by: Shawn Guo --- drivers/power/reset/qcom-pon.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/power/reset/qcom-pon.c b/drivers/power/reset/qcom-pon.c index 4a688741a88a..85fae9e85878 100644 --- a/drivers/power/reset/qcom-pon.c +++ b/drivers/power/reset/qcom-pon.c @@ -47,6 +47,14 @@ static int pm8916_pon_probe(struct platform_device *pdev) struct pm8916_pon *pon; int error; + if (device_property_present(&pdev->dev, "qcom,pon-reboot-not-used")) { + /* + * Skip reboot-mode setup and registration if PON is not used + * for passing reboot mode at all. + */ + goto done; + } + pon = devm_kzalloc(&pdev->dev, sizeof(*pon), GFP_KERNEL); if (!pon) return -ENOMEM; @@ -75,6 +83,7 @@ static int pm8916_pon_probe(struct platform_device *pdev) platform_set_drvdata(pdev, pon); +done: return devm_of_platform_populate(&pdev->dev); }