Received: by 2002:a05:6a10:7420:0:0:0:0 with SMTP id hk32csp3586591pxb; Mon, 21 Feb 2022 01:05:55 -0800 (PST) X-Google-Smtp-Source: ABdhPJyWJ20Bs1q+xlWa9P94czrosgLOKhHUV7tyZQI6uoy1uPdJgtM2qLrZs7rCXVEFrw6nkKDc X-Received: by 2002:a05:6a00:1822:b0:4df:56b7:afc7 with SMTP id y34-20020a056a00182200b004df56b7afc7mr19463528pfa.58.1645434355005; Mon, 21 Feb 2022 01:05:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645434354; cv=none; d=google.com; s=arc-20160816; b=xhtDRcwSc4cO3xZHmBp0+6frXjbYFuzsZ0rPfI/MQLbHX2XJOcR98Dn6TDLbsnP3nM CURR8AQCgnRJEs0TGHE98QMOAF8b++g0rWOdxnNMW9p7E9VgIGcZW7UZzwG0UDu6qw6N xC+0Q8KZ6Ub4ZZMod53jXv3UTZObijo25hauGO2vGWtPfur5mGKGQCZC0v9K9ngExU4/ Zlov3TRJyT7fKsSbetAg79g+YzAO0obHExcliLpD2TnwBHNf/ZKVj+9puWm0AqP2z4RM vEOtevDFP7aPyrP9hw/f0revEGKBe3u/KkNYON5D7ti9Cmj00J9P/GEvTsX39OjZL+hs wjdA== 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 :message-id:date:subject:cc:to:from:dkim-signature; bh=UltE29xQdNxTDZH/P6EcETblPctuAUsMYZTK8E3jFeI=; b=jGifxSo//f5clHbXraivWhyczIPqRmoX4S1YbdY5EHqa9+aFpxNqWdIDNvb8jKSt1L lq8b1god73Fc3ST8oGWNGKl086HlSwA4DwQj6MFQjer6Bh85KwzDMa0zDFqKOgHy4K73 1vUTsDsTo19UYpMZsDkrGNRPVXuIAC5VUTQIO6s+H/HNIhJ1s5C/FNSqyw+7sSPyAAAh JsV6vtiAUl0pQD2RcCodXY9mHPX7RRTDZYrwrrsJB+3pp7NzZ/vFqpNm3OoHQaptVcLN OYlaH72kMidkXnnXmP1SjemVmLcatwAvzTjFGpOn5re5rJ79U2/0kh+DJQQzy7aixPvC 2UAQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@trvn.ru header.s=mail header.b=gVXeiOMm; 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=trvn.ru Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id j185si16174627pge.679.2022.02.21.01.05.40; Mon, 21 Feb 2022 01:05:54 -0800 (PST) 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=@trvn.ru header.s=mail header.b=gVXeiOMm; 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=trvn.ru Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239013AbiBTLvg (ORCPT + 99 others); Sun, 20 Feb 2022 06:51:36 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:33842 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231391AbiBTLv1 (ORCPT ); Sun, 20 Feb 2022 06:51:27 -0500 Received: from box.trvn.ru (box.trvn.ru [194.87.146.52]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 410BF4BFC0; Sun, 20 Feb 2022 03:51:06 -0800 (PST) Received: from authenticated-user (box.trvn.ru [194.87.146.52]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by box.trvn.ru (Postfix) with ESMTPSA id 523E94013D; Sun, 20 Feb 2022 16:50:52 +0500 (+05) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=trvn.ru; s=mail; t=1645357854; bh=Uf6HYUxn28IZAPxShVWn4wFM8oxeVc0cjXkSVYshVfk=; h=From:To:Cc:Subject:Date:From; b=gVXeiOMmpGlXWSmykXoo+2fcwzekUokom4ag3iZN+7jrGOVxbWaXFhG3x8C3/g4pN sHZIkz+FHA6gxhZGEidKvC5I7oRrVv1Dv53959T3N6on/Zp8H+xc4mEXkfwpNKBDpM d1OFZqyAM36UnHEaHcxFssKBiBJz/FRpl8AbLw5h9/ulStz1tnrpCvcQxHui4PKskJ HlCMh5VzYBYDkE2oRD40mJpf80+GfbG77vwu1tYQR2UW6DmQGei5o6PhLnQyVYKITh KGjlgKIlxFYEeHwb3usxB8GZrVZfGXYjcA51pb9wZ/nDtlvznnZbK1dwoD2z0twc2Y IFxsYXmqQwgQg== From: Nikita Travkin To: thierry.reding@gmail.com, lee.jones@linaro.org Cc: u.kleine-koenig@pengutronix.de, robh+dt@kernel.org, sboyd@kernel.org, krzk@kernel.org, linus.walleij@linaro.org, masneyb@onstation.org, sean.anderson@seco.com, linux-pwm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht, Nikita Travkin Subject: [PATCH v6 0/2] Clock based PWM output driver Date: Sun, 20 Feb 2022 16:50:28 +0500 Message-Id: <20220220115030.23772-1-nikita@trvn.ru> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_PASS,SPF_PASS, T_SCC_BODY_TEXT_LINE 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 This series introduces an "adapter" driver that allows PWM consumers to control clock outputs with duty-cycle control. Some platforms (e.g. some Qualcomm chipsets) have "General Purpose" clocks that can be muxed to GPIO outputs and used as PWM outputs. Those outputs may be connected to various peripherals such as leds in display backlight or haptic feedback motor driver. To avoid re-implementing every single PWM consumer driver with clk support (like in [1]) and don't put the burden of providing the PWM sources on the clock drivers (as was proposed in [2]), clk based pwm controller driver is introduced. There is an existing driver that provides the opposite function in drivers/clk/clk-pwm.c with a compatible "pwm-clock" so the new driver uses the opposite naming scheme: drivers/pwm/pwm-clk.c and compatible "clk-pwm". Changes in v2: - Fix filename in the DT schema. - Address Uwe's review comments. Changes in v3: - Fix node pattern in the core pwm schema. - Address Uwe's review comments. Changes in v4: - Drop the (incorrect) pwm schema change. - Use generic node name in the dt bindings example. Changes in v5: - Correct required properties. - add missed returns. Changes in v6: - Add missed error cleanup - Adjust limitations comment Nikita Travkin (2): dt-bindings: pwm: Document clk based PWM controller pwm: Add clock based PWM output driver .../devicetree/bindings/pwm/clk-pwm.yaml | 46 ++++++ drivers/pwm/Kconfig | 10 ++ drivers/pwm/Makefile | 1 + drivers/pwm/pwm-clk.c | 139 ++++++++++++++++++ 4 files changed, 196 insertions(+) create mode 100644 Documentation/devicetree/bindings/pwm/clk-pwm.yaml create mode 100644 drivers/pwm/pwm-clk.c -- 2.34.1