Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp890447pxb; Wed, 27 Oct 2021 14:33:32 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxO4fjYWmWwcjhLnlykIpjcfGx8+1J39Pv6rq+52FzMIj7xk2ZlLuXGOstFojC3gqmEjuj2 X-Received: by 2002:a17:902:bb96:b0:13f:b181:58ef with SMTP id m22-20020a170902bb9600b0013fb18158efmr275404pls.2.1635370068149; Wed, 27 Oct 2021 14:27:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635370068; cv=none; d=google.com; s=arc-20160816; b=mUzRZC+fsiQDZMEG5Lnto5osPuHAYzG6/O4wqo/yyaN9LWA4Gzh9GCWxLpnmuLcR/q vD83kjW+DnN5Qm1cnB9OqOfqgl3jUDRno3MQJTewosC23uutuTOslCmNLNTomHOZOTem YGkFVwNfcvrWfq92Uvxqkh3KQIKXE7jxExoJKaeYHndON593552yLazK7XEvKuZ2lD3k SFiM0h/vB5Untm/AT40cugKFlEiI2Rg6P42QNm4hE0Q/jK1MwTBeA1ahRb1kkA0NxUHm R2j+aOfCD0osiE7//zLRxb19tj9sw+Mg91QtBqbq4WJDtGmX3QVmSqD+M1dzRGT3Vf4A Y9/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=iJaFedjfgO3mNmh/C96uSOhUiL4aNQtn0C47wpwNS5I=; b=YtCL/MZSKSyIJ+zYw4wq88ukcyoJJp4MrqzwnlKEhksyJ1Pq/2sUgJE02f00EHbXxB l8xZ2O2I3P4EtJjTvCc/cwIol/esz70814nucyz+vcYF6YC63/y+CFTneRX7903XXMUL Kc443+bPKtwIG5JQzqXMY57Ld4uk8y236yLk08Zuoi727YLn3brMD3nuev/mdIYc0+PZ fl+HdIsIcSkNsKP3CSoaJy/yI0SVpVXAcMEd/1oV3+n0chmN/lTJe/nYpDQ0tLH7sqvk yJcis+WVTd1S32Yz1BxuOObd1V+QOW+uCw7P3aC7/C5Esvbb/2xuS24j2GIwkOWDMnnH zLgA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=iVVFlAop; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id e4si312746pla.374.2021.10.27.14.27.35; Wed, 27 Oct 2021 14:27:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=iVVFlAop; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242462AbhJ0PIo (ORCPT + 97 others); Wed, 27 Oct 2021 11:08:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52644 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242007AbhJ0PIj (ORCPT ); Wed, 27 Oct 2021 11:08:39 -0400 Received: from mail-pl1-x62a.google.com (mail-pl1-x62a.google.com [IPv6:2607:f8b0:4864:20::62a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 588B1C061745 for ; Wed, 27 Oct 2021 08:06:14 -0700 (PDT) Received: by mail-pl1-x62a.google.com with SMTP id r5so2225974pls.1 for ; Wed, 27 Oct 2021 08:06:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=iJaFedjfgO3mNmh/C96uSOhUiL4aNQtn0C47wpwNS5I=; b=iVVFlAopGMkcd0hJu+/aKOZS9/FSNpWdZd1kDncujnrTaRWMIl4ygVplZCmy9QgKZY I60D6XySDqyzSLBmYS64MiRD/W1141i3Koe9x3WFMJkNZDwhu1wfkDN4AZwudkqyFN7m pma05zVPG7QH+a+O3TABH235+3jkQOClywd2PcOC/N8yhIkGXdRzjDq+NkWBdWIijNvf hvNhmtJedQXRIOfkXU6o+ipaxeoec2FfSS+rw9QunswdHWxq0wQiE5ZX5HyC2zUYUsYw j9JwyHMVAIHJgV+EbqwSBsYKGgdoSsvi5pHctY2zP3UgOTJqOC5faTpATZjOXE+DUhxR aC3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=iJaFedjfgO3mNmh/C96uSOhUiL4aNQtn0C47wpwNS5I=; b=YtLrn2Kfn1kAY0JspxS5nYcns0vHtV01kd4ybTlFD1TeMBx9Dq4huk8Sm0UJCl5lht MC6k+NBVeQj0PF1ER8/LK1zpWzwMzuDeNpZsLrsjrT95BO6A3r0DhSDPjxdxvumjESgs vT5IrxHKiJyYESKQ1xGtJfP4LmeZs/iwj6foTVxzqxDWk5MSlcSK9MHJX/6VDdg9RLF3 9f+zhbswKJUNak2Dgi1cMjqnBwPNswNvcZuFezoM/MMnL5aC4FqbHo/PG7ndP3blhc0H PnCiAaEjaF0NlqwXJPUjij0SZgnWndETSshGNkQ6athYwS2Qv8n78ECcbRjTtwh0194/ dtPg== X-Gm-Message-State: AOAM533ZUpWB4/P+QmS9gNM7mbP55ArvodvQfUFINDhMIPejKUOQjTs4 iwyoVimphp5mJXa142n55WEAj5qs22+f0SQtjaAvYQ== X-Received: by 2002:a17:90b:4c0d:: with SMTP id na13mr6380872pjb.232.1635347173756; Wed, 27 Oct 2021 08:06:13 -0700 (PDT) MIME-Version: 1.0 References: <20211025170925.3096444-1-bjorn.andersson@linaro.org> <65243a98-61b9-3311-f41d-fa4782448baa@kali.org> In-Reply-To: <65243a98-61b9-3311-f41d-fa4782448baa@kali.org> From: Robert Foss Date: Wed, 27 Oct 2021 17:06:02 +0200 Message-ID: Subject: Re: [PATCH v7 1/3] pwm: Introduce single-PWM of_xlate function To: Steev Klimaszewski Cc: Bjorn Andersson , Thierry Reding , =?UTF-8?Q?Uwe_Kleine=2DK=C3=B6nig?= , Lee Jones , linux-pwm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 26 Oct 2021 at 19:21, Steev Klimaszewski wrote: > > > On 10/25/21 12:09 PM, Bjorn Andersson wrote: > > The existing pxa driver and the upcoming addition of PWM support in the > > TI sn565dsi86 DSI/eDP bridge driver both has a single PWM channel and > > thereby a need for a of_xlate function with the period as its single > > argument. > > > > Introduce a common helper function in the core that can be used as > > of_xlate by such drivers and migrate the pxa driver to use this. > > > > Signed-off-by: Bjorn Andersson > > Acked-by: Uwe Kleine-K=C3=B6nig > > Tested-by: Steev Klimaszewski > > --- > > > > Changes since v6: > > - None > > > > drivers/pwm/core.c | 26 ++++++++++++++++++++++++++ > > drivers/pwm/pwm-pxa.c | 16 +--------------- > > include/linux/pwm.h | 2 ++ > > 3 files changed, 29 insertions(+), 15 deletions(-) > > > > diff --git a/drivers/pwm/core.c b/drivers/pwm/core.c > > index 4527f09a5c50..2c6b155002a2 100644 > > --- a/drivers/pwm/core.c > > +++ b/drivers/pwm/core.c > > @@ -152,6 +152,32 @@ of_pwm_xlate_with_flags(struct pwm_chip *pc, const= struct of_phandle_args *args) > > } > > EXPORT_SYMBOL_GPL(of_pwm_xlate_with_flags); > > > > +struct pwm_device * > > +of_pwm_single_xlate(struct pwm_chip *pc, const struct of_phandle_args = *args) > > +{ > > + struct pwm_device *pwm; > > + > > + if (pc->of_pwm_n_cells < 1) > > + return ERR_PTR(-EINVAL); > > + > > + /* validate that one cell is specified, optionally with flags */ > > + if (args->args_count !=3D 1 && args->args_count !=3D 2) > > + return ERR_PTR(-EINVAL); > > + > > + pwm =3D pwm_request_from_chip(pc, 0, NULL); > > + if (IS_ERR(pwm)) > > + return pwm; > > + > > + pwm->args.period =3D args->args[0]; > > + pwm->args.polarity =3D PWM_POLARITY_NORMAL; > > + > > + if (args->args_count =3D=3D 2 && args->args[2] & PWM_POLARITY_INV= ERTED) > > + pwm->args.polarity =3D PWM_POLARITY_INVERSED; > > + > > + return pwm; > > +} > > +EXPORT_SYMBOL_GPL(of_pwm_single_xlate); > > + > > static void of_pwmchip_add(struct pwm_chip *chip) > > { > > if (!chip->dev || !chip->dev->of_node) > > diff --git a/drivers/pwm/pwm-pxa.c b/drivers/pwm/pwm-pxa.c > > index a9efdcf839ae..238ec88c130b 100644 > > --- a/drivers/pwm/pwm-pxa.c > > +++ b/drivers/pwm/pwm-pxa.c > > @@ -148,20 +148,6 @@ static const struct platform_device_id *pxa_pwm_ge= t_id_dt(struct device *dev) > > return id ? id->data : NULL; > > } > > > > -static struct pwm_device * > > -pxa_pwm_of_xlate(struct pwm_chip *pc, const struct of_phandle_args *ar= gs) > > -{ > > - struct pwm_device *pwm; > > - > > - pwm =3D pwm_request_from_chip(pc, 0, NULL); > > - if (IS_ERR(pwm)) > > - return pwm; > > - > > - pwm->args.period =3D args->args[0]; > > - > > - return pwm; > > -} > > - > > static int pwm_probe(struct platform_device *pdev) > > { > > const struct platform_device_id *id =3D platform_get_device_id(pd= ev); > > @@ -187,7 +173,7 @@ static int pwm_probe(struct platform_device *pdev) > > pc->chip.npwm =3D (id->driver_data & HAS_SECONDARY_PWM) ? 2 : 1; > > > > if (IS_ENABLED(CONFIG_OF)) { > > - pc->chip.of_xlate =3D pxa_pwm_of_xlate; > > + pc->chip.of_xlate =3D of_pwm_single_xlate; > > pc->chip.of_pwm_n_cells =3D 1; > > } > > > > diff --git a/include/linux/pwm.h b/include/linux/pwm.h > > index 725c9b784e60..dd51d4931fdc 100644 > > --- a/include/linux/pwm.h > > +++ b/include/linux/pwm.h > > @@ -414,6 +414,8 @@ struct pwm_device *pwm_request_from_chip(struct pwm= _chip *chip, > > > > struct pwm_device *of_pwm_xlate_with_flags(struct pwm_chip *pc, > > const struct of_phandle_args *args); > > +struct pwm_device *of_pwm_single_xlate(struct pwm_chip *pc, > > + const struct of_phandle_args *args= ); > > > > struct pwm_device *pwm_get(struct device *dev, const char *con_id); > > struct pwm_device *of_pwm_get(struct device *dev, struct device_node = *np, > > v7 of the series is tested by me on the Lenovo Yoga C630 > > Tested-By: Steev Klimaszewski > Applied to drm-misc-next.