Received: by 2002:a05:6a10:7420:0:0:0:0 with SMTP id hk32csp2077280pxb; Sat, 19 Feb 2022 01:28:12 -0800 (PST) X-Google-Smtp-Source: ABdhPJyCwQNjX080+0GgjTHTTC7SpfsVPU4Lpmzs/8pJlQ++F1BZTGohzI7WOsipB7ojNLy4jVwc X-Received: by 2002:a65:5bc1:0:b0:373:ec8f:9f50 with SMTP id o1-20020a655bc1000000b00373ec8f9f50mr4079637pgr.289.1645262892569; Sat, 19 Feb 2022 01:28:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645262892; cv=none; d=google.com; s=arc-20160816; b=oZBH0LVWwabnjyDYV6cLehMQZtTVB70Tu+mRQT56kWkWJQXvO4ExMT6G/yXtV8TEz+ 8UjsulqAdf8dWisDbn14iHtubQMVXscrEVEUj2wVMqN5/SurKB2XnIOiZxolM55KAHeZ DeDv5XHyceauoCEhsmreLMj2ucj3pTy7eUaZmsMi20rCYtblARmNEep6n54jDBLqPWuw nbBSshbd3BjKVg2+fhiAFXMhArjUjvK8bBThY1etjnvCglkZW850271n2vag0chFZTzy 5BrAAoxVwiq4j/oOTaYsyM7S58wUxoJit/gNBlhlp2oC3dJTfopEsrQHA6EPRKgbEMQc GAxg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:message-id:references :in-reply-to:subject:cc:to:from:date:mime-version:dkim-signature; bh=cI69REap/idKNx2sezT4ADqap8NmIP6SPZ9/korNCDA=; b=Q7Lgp1StboJ4MOfVkJc0mYkhnnqHuTAbza8crlPfjrCjmAi4Qj5/IcC8XLJ4T0OxbZ wN9TykxOVTQaeu6g53RtTUdBgEFWzd2TR4khaKQOXdEYJbzXEbL7LIDED1zioh3evd95 TtxulTdGSMISY2oBPcM9EUs9A9CLXOTyn+MmbBuXD4gmk+9TnZH/2PgXEZCnWphcdJcP ClponkcBUHAx1aim2Qnqgz6caislhITqEiiyKMX9kjG1gbTido7lhJI1nPjZkSfgpnQY MmXAl3DId5Jm5CvgsbC81X+0Btjpml4NAVZK41vhdMp0JUH7LssNjcB9CsdA4kH9JP7K Xd7g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@trvn.ru header.s=mail header.b=m1tE1zl7; 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 u12si3919059pgm.297.2022.02.19.01.27.58; Sat, 19 Feb 2022 01:28:12 -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=m1tE1zl7; 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 S236346AbiBSGtN (ORCPT + 99 others); Sat, 19 Feb 2022 01:49:13 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:39856 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230412AbiBSGtM (ORCPT ); Sat, 19 Feb 2022 01:49:12 -0500 Received: from box.trvn.ru (box.trvn.ru [194.87.146.52]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 407C4554A7; Fri, 18 Feb 2022 22:48:54 -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 B061F403DB; Sat, 19 Feb 2022 11:48:51 +0500 (+05) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=trvn.ru; s=mail; t=1645253331; bh=YIrVnRmJ544cu++/OMC8gdl68QikrV9a5SSu5la/2dE=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=m1tE1zl7XEKGRvNpwcoNOCvz8CUTKI7vxhkNrMQJRGU4zFf3IANsJqb/d86yOeiro qtPHxBED251MYRxp4qjxte8GwBFhcnLdVkVwvuIoLDFRDFsnlYtESqOiWC0WWl+ABL TJ/xlocxFmriQDUM8zmByIPzEEtRt5JWZHD2eViOXqL/fxPE9VxDR1/xzH8F2XQjhi m0KBYnGRO8B0YCErGUUb9BTkd6BV9fkNDjpZHuJvbVRwNA0cP1qpTbkdf8x7xTk5up f9zjQaFqgJsg54QfuBO9kFWGEBrnD1xWLSr/9BToLfxrci7SzFvh8V2voUDwTFcMAe x5Q780DsTfJmw== MIME-Version: 1.0 Date: Sat, 19 Feb 2022 11:48:50 +0500 From: Nikita Travkin To: Krzysztof Kozlowski Cc: thierry.reding@gmail.com, lee.jones@linaro.org, u.kleine-koenig@pengutronix.de, robh+dt@kernel.org, sboyd@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 Subject: Re: [PATCH v5 2/2] pwm: Add clock based PWM output driver In-Reply-To: References: <20220212162342.72646-1-nikita@trvn.ru> <20220212162342.72646-3-nikita@trvn.ru> Message-ID: <170305a686280ed44a5d3e49dee3176f@trvn.ru> X-Sender: nikita@trvn.ru Content-Type: text/plain; charset=UTF-8 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 Hi, Krzysztof Kozlowski писал(а) 14.02.2022 16:19: > On 12/02/2022 17:23, Nikita Travkin wrote: >> Some systems have clocks exposed to external devices. If the clock >> controller supports duty-cycle configuration, such clocks can be used as >> pwm outputs. In fact PWM and CLK subsystems are interfaced with in a >> similar way and an "opposite" driver already exists (clk-pwm). Add a >> driver that would enable pwm devices to be used via clk subsystem. >> >> Signed-off-by: Nikita Travkin >> -- >> > > (...) > >> + >> +static int pwm_clk_probe(struct platform_device *pdev) >> +{ >> + struct pwm_clk_chip *chip; >> + int ret; >> + >> + chip = devm_kzalloc(&pdev->dev, sizeof(*chip), GFP_KERNEL); >> + if (!chip) >> + return -ENOMEM; >> + >> + chip->clk = devm_clk_get(&pdev->dev, NULL); >> + if (IS_ERR(chip->clk)) >> + return dev_err_probe(&pdev->dev, PTR_ERR(chip->clk), >> + "Failed to get clock\n"); >> + >> + chip->chip.dev = &pdev->dev; >> + chip->chip.ops = &pwm_clk_ops; >> + chip->chip.npwm = 1; >> + >> + ret = clk_prepare(chip->clk); >> + if (ret < 0) >> + return dev_err_probe(&pdev->dev, ret, "Failed to prepare clock\n"); >> + >> + ret = pwmchip_add(&chip->chip); >> + if (ret < 0) >> + return dev_err_probe(&pdev->dev, ret, "Failed to add pwm chip\n"); > > You need to cleanup - unprepare the clock. > Oops, I will add unprepare in v6, Thanks! Nikita >> + >> + platform_set_drvdata(pdev, chip); >> + return 0; >> +} >> + > > > Best regards, > Krzysztof