From nobody Wed Apr 15 05:45:07 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BEB1AC43334 for ; Mon, 25 Jul 2022 21:22:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237257AbiGYVWX (ORCPT ); Mon, 25 Jul 2022 17:22:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42794 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237108AbiGYVWO (ORCPT ); Mon, 25 Jul 2022 17:22:14 -0400 Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com [IPv6:2a00:1450:4864:20::335]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 997A21D0F8 for ; Mon, 25 Jul 2022 14:22:10 -0700 (PDT) Received: by mail-wm1-x335.google.com with SMTP id u14-20020a05600c00ce00b003a323062569so7090520wmm.4 for ; Mon, 25 Jul 2022 14:22:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=tWOOFKf52gAy7W/ZrGz750v2UUX4okU1KlSqizimZr4=; b=M54IfpZG9KKKODJTR1eJYGGn+iUrfMqUOkRnb9jArCQQ8yexwLiqnD63I8nRvxbdUC f08bErpai1S2bij+j98TrM4Cqm/NcjpG8kA0mSaI8rsFwPCIFWTGPKwlYV0/sWocGj5d YH1fTkgjFbkCVgIz+lu38q7k1zg5z504P7CDUja/0DB/eGVRPIKc7ghA4vtAHH0b5qwM PF+tLiIqoy2Cwb5MuMVKadHGErjzPY1yhTbN2+dqmpKEJZJcyrhdHTwkdK0fMxs4d61W ulb6XL8WNmqa9jUO7WYorrwUpGkCC6+pIH1rJo/N6SJxSqt28FYGCApfscJlLvlsetSb 3yKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=tWOOFKf52gAy7W/ZrGz750v2UUX4okU1KlSqizimZr4=; b=LJKkMNXlgkYGUCix2HD/D4QtgTgbAosue6c33Y83RIkl0Zn0Hgnaq14p4hbtKG6BXi Q9LCe/6g1bl2hVyQDi1GzMqceycSONeWv29R6d+qBZFFc4fk2WcBUNqhVnQjRd7c9cqh WSx0D6F4Xq9W+BVNwxeRU6Ydd1TW1pS0eGs0I3TptPuTjoQ/fIBV9AsQVc9idlUbQP4L SDgbQR4sqENwFFsS44hcb3rXjFSutFUPNpqbCkgr9i/OeN+OnYvjvPmSjMzvsFaN4and ZFbIU5/T8AG+pwKcVEebQ6qNHI2ffR+w87oNykdWeUi94fgK0Z2tKOq4ZIEaY3DExfZV OncA== X-Gm-Message-State: AJIora9neXjj+j8J8/c9kSCte5cC6O9GaJ4ebqDwtLIXWTpTiWRenvr3 p+tE4oztEzNz3EuLS88KLqPCTQ== X-Google-Smtp-Source: AGRyM1vOGg0pvs4LnyEciJO+TPUUHmAs+pYo6RcfiytLVsjQsd97mE7LsspNSv3sHPd98boEZ+wArw== X-Received: by 2002:a1c:288:0:b0:3a3:5332:9d16 with SMTP id 130-20020a1c0288000000b003a353329d16mr6107310wmc.168.1658784128850; Mon, 25 Jul 2022 14:22:08 -0700 (PDT) Received: from localhost.localdomain (cpc152649-stkp13-2-0-cust121.10-2.cable.virginm.net. [86.15.83.122]) by smtp.gmail.com with ESMTPSA id i13-20020a05600011cd00b0021d6924b777sm12656348wrx.115.2022.07.25.14.22.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Jul 2022 14:22:08 -0700 (PDT) From: Ben Dooks To: linux-pwm@vger.kernel.org Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Lee Jones , u.kleine-koenig@pengutronix.de, Thierry Reding , Krzysztof Kozlowski , Greentime Hu , Ben Dooks Subject: [[PATCH v2] 5/9] pwm: dwc: add of/platform support Date: Mon, 25 Jul 2022 22:21:36 +0100 Message-Id: <20220725212140.741644-5-ben.dooks@sifive.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220725212140.741644-1-ben.dooks@sifive.com> References: <20220725212140.741644-1-ben.dooks@sifive.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The dwc pwm controller can be used in non-PCI systems, so allow either platform or OF based probing. Signed-off-by: Ben Dooks --- drivers/pwm/Kconfig | 5 ++-- drivers/pwm/pwm-dwc.c | 53 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/drivers/pwm/Kconfig b/drivers/pwm/Kconfig index 904de8d61828..e1aa645c1084 100644 --- a/drivers/pwm/Kconfig +++ b/drivers/pwm/Kconfig @@ -166,9 +166,10 @@ config PWM_CROS_EC =20 config PWM_DWC tristate "DesignWare PWM Controller" - depends on PCI + depends on PCI || OF help - PWM driver for Synopsys DWC PWM Controller attached to a PCI bus. + PWM driver for Synopsys DWC PWM Controller attached to either a + PCI or platform bus. =20 To compile this driver as a module, choose M here: the module will be called pwm-dwc. diff --git a/drivers/pwm/pwm-dwc.c b/drivers/pwm/pwm-dwc.c index 61f11e0a9319..235cb730c888 100644 --- a/drivers/pwm/pwm-dwc.c +++ b/drivers/pwm/pwm-dwc.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include =20 @@ -319,6 +320,58 @@ static struct pci_driver dwc_pwm_driver =3D { =20 module_pci_driver(dwc_pwm_driver); =20 +#ifdef CONFIG_OF +static int dwc_pwm_plat_probe(struct platform_device *pdev) +{ + struct device *dev =3D &pdev->dev; + struct dwc_pwm *dwc; + int ret; + + dwc =3D dwc_pwm_alloc(dev); + if (!dwc) + return -ENOMEM; + + dwc->base =3D devm_platform_ioremap_resource(pdev, 0); + if (IS_ERR(dwc->base)) + return dev_err_probe(dev, PTR_ERR(dwc->base), + "failed to map IO\n"); + + ret =3D pwmchip_add(&dwc->chip); + if (ret) + return ret; + + return 0; +} + +static int dwc_pwm_plat_remove(struct platform_device *pdev) +{ + struct dwc_pwm *dwc =3D platform_get_drvdata(pdev); + + pwmchip_remove(&dwc->chip); + return 0; +} + +static const struct of_device_id dwc_pwm_dt_ids[] =3D { + { .compatible =3D "snps,pwm" }, + { }, +}; +MODULE_DEVICE_TABLE(of, dwc_pwm_dt_ids); + +static struct platform_driver dwc_pwm_plat_driver =3D { + .driver =3D { + .name =3D "dwc-pwm", + .of_match_table =3D dwc_pwm_dt_ids, + }, + .probe =3D dwc_pwm_plat_probe, + .remove =3D dwc_pwm_plat_remove, +}; + +module_platform_driver(dwc_pwm_plat_driver); + +MODULE_ALIAS("platform:dwc-pwm"); +#endif /* CONFIG_OF */ + + MODULE_AUTHOR("Felipe Balbi (Intel)"); MODULE_AUTHOR("Jarkko Nikula "); MODULE_AUTHOR("Raymond Tan "); --=20 2.35.1