From patchwork Tue Nov 1 15:56:42 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andy Shevchenko X-Patchwork-Id: 13753 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp3063919wru; Tue, 1 Nov 2022 09:12:18 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4yg34mOuZPFXQSLq/z98S/28T4W2iVXEL4fSS4mHEo/m8xQQp2pXhpGkp2r4lVZ3U+AEtf X-Received: by 2002:a17:907:6d8c:b0:7ad:b45c:dd24 with SMTP id sb12-20020a1709076d8c00b007adb45cdd24mr16793769ejc.616.1667319138746; Tue, 01 Nov 2022 09:12:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1667319138; cv=none; d=google.com; s=arc-20160816; b=BihTVhYBxsEzpzVtmwCBsBh1KcPrivvSy8b40PmfUXwD6oQrzk9DmV70/Q0/GNXsH0 ORpR8PMZ+aclrSC96HoX3rJ7pQH3IBF9gifjHKIjVkhl+VGIlMuVL7JZMTgekYXCxB5J XQSsJpzA5pNZ1K7iAzygXNBybiNbl+Y98mJ0apIEcO10dYqvH+Ipw+UD/tTRhEWpV/OB vtTeAF4T9SvwxU4CBAQp6O0C+NERAHRoDJYGQnVpOkX1i8Su2ijwkaFyOjfyVVIYaB5O wZkcqm7dUNFZpUpn0Hcqws7Dv6O3YLVOUdzgSAG6sqAhQAZiWyN55FYGpee9WFCUM0PN Vsvw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=9jYaPXvRxJAMPlwCl/rhG8WQGrs1hCVIdLKh2kG4t0o=; b=HhjlEv5rPSuntXC4Y3EesCBoXsG6HO9VtZbPCq8bJQeHS1E65WeBJd4kw/ow83toNA 6PtuGHf8lmuHccKepFOT4Kbpsr56uJsR17eNP0VCs4uSabF0AcQZy+tK4VVWFG12NFA7 Fy646obh5ZR3M7eTCqYgrLc2NuC+qZnH2g69bToEVeAznaCGhdT71bJBTOlo6JgsFw/k JNAcuXT8wbu4bmB3egQLnigwqsTSadBVuhgj/l8dSMQNjQwLx/XNJwRGustDKeIfp6up AszDcgHXYISAmYy7X+tbUcdXl50K20JEEzjhzw40kyGvzw2/taqoxWkf+7fj1Kfd4H2a kuxA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="Amc1/UUZ"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ca7-20020aa7cd67000000b0045caa8bf80bsi10660182edb.307.2022.11.01.09.11.52; Tue, 01 Nov 2022 09:12:18 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="Amc1/UUZ"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231542AbiKAP4u (ORCPT + 99 others); Tue, 1 Nov 2022 11:56:50 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36562 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230100AbiKAP4b (ORCPT ); Tue, 1 Nov 2022 11:56:31 -0400 Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0FC32167E8; Tue, 1 Nov 2022 08:56:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1667318191; x=1698854191; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=9EMEBtyd+ncSOy04taxX8rD97/YD448iR78mVb4VTLI=; b=Amc1/UUZbZYYXCeYtWD7C+H1E+Dkd5JxPxMR007CkP4uPucKxkzSc1vB nsUJyvY1/61kXXdo01XGdUzEl+qA+Q9YgVMFBj5NKrNZs5rVO54B71wJh 50CmP/33NsoS9XFMkAAd/5gwxqTFjXxnV6mygEwk9BCCKgQ9VGJ0dsqQ/ XBte+/lC9xUgEgJqhL8M/qV8ywX22ddQpF1RFm/UvqE0HWlCipFS1o+aG 5F6JNUy/jv6h/XO8LAo4V6E5whsQmatlLY+yo7/g2H1PIqSwNOquA5+Hx c0M4nSMqbcpJY4++s7+VUUYf60rqY8hwSZadtnCS5jh0wHpFoJ54Mz9cZ Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10518"; a="292474815" X-IronPort-AV: E=Sophos;i="5.95,231,1661842800"; d="scan'208";a="292474815" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Nov 2022 08:56:30 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10518"; a="776537934" X-IronPort-AV: E=Sophos;i="5.95,231,1661842800"; d="scan'208";a="776537934" Received: from black.fi.intel.com ([10.237.72.28]) by fmsmga001.fm.intel.com with ESMTP; 01 Nov 2022 08:56:28 -0700 Received: by black.fi.intel.com (Postfix, from userid 1003) id 903364B5; Tue, 1 Nov 2022 17:56:47 +0200 (EET) From: Andy Shevchenko To: Andy Shevchenko , Hans de Goede , =?utf-8?q?Uwe_Kleine-K=C3=B6nig?= , Thierry Reding , linux-kernel@vger.kernel.org, linux-gpio@vger.kernel.org, linux-pwm@vger.kernel.org Cc: Mika Westerberg , Andy Shevchenko , Linus Walleij Subject: [PATCH v1 6/6] pinctrl: intel: Enumerate PWM device when community has a capabilitty Date: Tue, 1 Nov 2022 17:56:42 +0200 Message-Id: <20221101155642.52575-7-andriy.shevchenko@linux.intel.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20221101155642.52575-1-andriy.shevchenko@linux.intel.com> References: <20221101155642.52575-1-andriy.shevchenko@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-3.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1748310833134347248?= X-GMAIL-MSGID: =?utf-8?q?1748310833134347248?= Some of the Communities may have PWM capability. In such cases, enumerate PWM device via respective driver. User is still responsible for setting correct pin muxing for the line that needs to output the signal. Signed-off-by: Andy Shevchenko --- drivers/pinctrl/intel/pinctrl-intel.c | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/drivers/pinctrl/intel/pinctrl-intel.c b/drivers/pinctrl/intel/pinctrl-intel.c index e17d1318b913..fe5bf2184cbf 100644 --- a/drivers/pinctrl/intel/pinctrl-intel.c +++ b/drivers/pinctrl/intel/pinctrl-intel.c @@ -24,6 +24,8 @@ #include #include +#include + #include "../core.h" #include "pinctrl-intel.h" @@ -49,6 +51,8 @@ #define PADOWN_MASK(p) (GENMASK(3, 0) << PADOWN_SHIFT(p)) #define PADOWN_GPP(p) ((p) / 8) +#define PWMC 0x204 + /* Offset from pad_regs */ #define PADCFG0 0x000 #define PADCFG0_RXEVCFG_SHIFT 25 @@ -1494,6 +1498,27 @@ static int intel_pinctrl_pm_init(struct intel_pinctrl *pctrl) return 0; } +static int intel_pinctrl_probe_pwm(struct intel_pinctrl *pctrl, + struct intel_community *community) +{ + static const struct pwm_lpss_boardinfo info = { + .clk_rate = 19200000, + .npwm = 1, + .base_unit_bits = 22, + .bypass = true, + }; + struct pwm_lpss_chip *pwm; + + if (!(community->features & PINCTRL_FEATURE_PWM)) + return 0; + + pwm = pwm_lpss_probe(pctrl->dev, community->regs + PWMC, &info); + if (IS_ERR(pwm) && PTR_ERR(pwm) != -ENODEV) + return PTR_ERR(pwm); + + return 0; +} + int intel_pinctrl_probe(struct platform_device *pdev, const struct intel_pinctrl_soc_data *soc_data) { @@ -1592,6 +1617,10 @@ int intel_pinctrl_probe(struct platform_device *pdev, ret = intel_pinctrl_add_padgroups_by_size(pctrl, community); if (ret) return ret; + + ret = intel_pinctrl_probe_pwm(pctrl, community); + if (ret) + return ret; } irq = platform_get_irq(pdev, 0);