From: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
To: Claudiu.Beznea@microchip.com, thierry.reding@gmail.com
Cc: linux-pwm@vger.kernel.org, alexandre.belloni@bootlin.com,
linux-doc@vger.kernel.org, corbet@lwn.net,
linux-kernel@vger.kernel.org, Ludovic.Desroches@microchip.com,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v8 1/6] pwm: extend PWM framework with PWM modes
Date: Sat, 5 Jan 2019 22:05:22 +0100 [thread overview]
Message-ID: <20190105210522.ho2o2a4gc7r7ijeq@pengutronix.de> (raw)
In-Reply-To: <1546522081-23659-2-git-send-email-claudiu.beznea@microchip.com>
Hello,
On Thu, Jan 03, 2019 at 01:29:44PM +0000, Claudiu.Beznea@microchip.com wrote:
> From: Claudiu Beznea <claudiu.beznea@microchip.com>
>
> Add basic PWM modes: normal and complementary. These modes should
> differentiate the single output PWM channels from two outputs PWM
> channels. These modes could be set as follow:
> 1. PWM channels with one output per channel:
> - normal mode
> 2. PWM channels with two outputs per channel:
> - normal mode
> - complementary mode
> Since users could use a PWM channel with two output as one output PWM
> channel, the PWM normal mode is allowed to be set for PWM channels with
> two outputs; in fact PWM normal mode should be supported by all PWMs.
I still think that my suggestion that I sent in reply to your v5 using
.alt_duty_cycle and .alt_offset is the better one as it is more generic.
A word about that from Thierry before putting the mode into the pwm API
would be great.
I don't repeat what I wrote there assuming you still remember or are
willing to look it up at
e.g. https://www.spinics.net/lists/linux-pwm/msg08174.html (in the 2nd half
of my mail).
Also I think that if the capabilities function is the way forward adding
support to detect availability of polarity inversion should be
considered. This would also be an opportunity to split the introduction
of the capabilities function and the introduction of complementary mode.
(But my personal preference would be to just let .apply fail when an
unsupported configuration is requested.)
> +static int pwm_get_default_caps(struct pwm_caps *caps)
> +{
> + static const struct pwm_caps default_caps = {
> + .modes_msk = PWM_MODE_BIT(NORMAL),
> + };
> +
> + if (!caps)
> + return -EINVAL;
> +
> + *caps = default_caps;
> +
> + return 0;
> +}
> +
> +/**
> + * pwm_get_caps() - get PWM capabilities of a PWM device
> + * @pwm: PWM device to get the capabilities for
> + * @caps: returned capabilities
> + *
> + * Returns: 0 on success or a negative error code on failure
> + */
> +int pwm_get_caps(const struct pwm_device *pwm, struct pwm_caps *caps)
> +{
> + if (!pwm || !caps)
> + return -EINVAL;
> +
> + if (pwm->chip->ops->get_caps)
> + return pwm->chip->ops->get_caps(pwm->chip, pwm, caps);
> +
> + return pwm_get_default_caps(caps);
I'd drop pwm_get_default_caps (unless you introduce some more callers
later) and fold its implementation into pwm_get_caps.
> +}
> +EXPORT_SYMBOL_GPL(pwm_get_caps);
> [...]
> @@ -53,12 +75,14 @@ enum {
> * @period: PWM period (in nanoseconds)
> * @duty_cycle: PWM duty cycle (in nanoseconds)
> * @polarity: PWM polarity
> + * @modebit: PWM mode bit
> * @enabled: PWM enabled status
> */
> struct pwm_state {
> unsigned int period;
> unsigned int duty_cycle;
> enum pwm_polarity polarity;
> + unsigned long modebit;
I fail to see the upside of storing the mode as 2^mode instead of a
plain enum pwm_mode. Given that struct pwm_state is visible for pwm
users a plain pwm_mode would at least be more intuitive.
Best regards
Uwe
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | http://www.pengutronix.de/ |
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2019-01-05 21:05 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-01-03 13:29 [PATCH v8 0/6] extend PWM framework to support PWM modes Claudiu.Beznea
2019-01-03 13:29 ` [PATCH v8 1/6] pwm: extend PWM framework with " Claudiu.Beznea
2019-01-05 21:05 ` Uwe Kleine-König [this message]
2019-01-07 9:30 ` Claudiu.Beznea
2019-01-07 22:10 ` Uwe Kleine-König
2019-01-08 9:21 ` Claudiu.Beznea
2019-01-08 22:08 ` Uwe Kleine-König
2019-01-09 9:02 ` Claudiu.Beznea
2019-02-05 23:01 ` Thierry Reding
2019-02-06 8:24 ` Uwe Kleine-König
2019-02-13 15:38 ` Claudiu.Beznea
2019-02-14 9:48 ` Uwe Kleine-König
2019-02-05 22:49 ` Thierry Reding
2019-02-13 15:37 ` Claudiu.Beznea
2019-01-03 13:29 ` [PATCH v8 2/6] pwm: add " Claudiu.Beznea
2019-01-05 20:41 ` Uwe Kleine-König
2019-01-07 9:30 ` Claudiu.Beznea
2019-01-03 13:29 ` [PATCH v8 3/6] pwm: atmel: add pwm capabilities Claudiu.Beznea
2019-01-03 13:29 ` [PATCH v8 4/6] pwm: add push-pull mode support Claudiu.Beznea
2019-01-03 13:29 ` [PATCH v8 5/6] pwm: add documentation for pwm push-pull mode Claudiu.Beznea
2019-01-03 13:30 ` [PATCH v8 6/6] pwm: atmel: add push-pull mode support Claudiu.Beznea
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190105210522.ho2o2a4gc7r7ijeq@pengutronix.de \
--to=u.kleine-koenig@pengutronix.de \
--cc=Claudiu.Beznea@microchip.com \
--cc=Ludovic.Desroches@microchip.com \
--cc=alexandre.belloni@bootlin.com \
--cc=corbet@lwn.net \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pwm@vger.kernel.org \
--cc=thierry.reding@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).