From: Paul Cercueil <paul@crapouillou.net>
To: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
Cc: Thierry Reding <thierry.reding@gmail.com>,
Rob Herring <robh+dt@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Daniel Lezcano <daniel.lezcano@linaro.org>,
Thomas Gleixner <tglx@linutronix.de>,
Ralf Baechle <ralf@linux-mips.org>,
Paul Burton <paul.burton@mips.com>,
James Hogan <jhogan@kernel.org>, Jonathan Corbet <corbet@lwn.net>,
Mathieu Malaterre <malat@debian.org>,
Ezequiel Garcia <ezequiel@collabora.co.uk>,
PrasannaKumar Muralidharan <prasannatsmkumar@gmail.com>,
linux-pwm@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-watchdog@vger.kernel.org,
linux-mips@vger.kernel.org, linux-doc@vger.kernel.org,
linux-clk@vger.kernel.org, od@zcrc.me
Subject: Re: [PATCH v8 11/26] pwm: jz4740: Use regmap and clocks from TCU driver
Date: Thu, 13 Dec 2018 15:34:48 +0100 [thread overview]
Message-ID: <1544711688.18952.2@crapouillou.net> (raw)
In-Reply-To: <20181213093049.rxdvf6tip7iqdj3c@pengutronix.de>
Hi,
Le jeu. 13 déc. 2018 à 10:30, Uwe Kleine-König
<u.kleine-koenig@pengutronix.de> a écrit :
> Hello,
>
> On Wed, Dec 12, 2018 at 11:09:06PM +0100, Paul Cercueil wrote:
>> [...]
>> static int jz4740_pwm_enable(struct pwm_chip *chip, struct
>> pwm_device *pwm)
>> {
>> - uint32_t ctrl = jz4740_timer_get_ctrl(pwm->pwm);
>> + struct jz4740_pwm_chip *jz = to_jz4740(chip);
>>
>> - ctrl |= JZ_TIMER_CTRL_PWM_ENABLE;
>> - jz4740_timer_set_ctrl(pwm->hwpwm, ctrl);
>> - jz4740_timer_enable(pwm->hwpwm);
>> + /* Enable PWM output */
>> + regmap_update_bits(jz->map, TCU_REG_TCSRc(pwm->hwpwm),
>> + TCU_TCSR_PWM_EN, TCU_TCSR_PWM_EN);
>
> Usually follow-up lines are indented to the matching parenthesis.
OK.
>> [...]
>> static int jz4740_pwm_config(struct pwm_chip *chip, struct
>> pwm_device *pwm,
>> int duty_ns, int period_ns)
>> {
>> struct jz4740_pwm_chip *jz4740 = to_jz4740(pwm->chip);
>> + struct clk *clk = jz4740->clks[pwm->hwpwm];
>> + unsigned long rate, new_rate, period, duty;
>> unsigned long long tmp;
>> - unsigned long period, duty;
>> - unsigned int prescaler = 0;
>> - uint16_t ctrl;
>> + unsigned int tcsr;
>> bool is_enabled;
>>
>> - tmp = (unsigned long long)clk_get_rate(jz4740->clk) * period_ns;
>> - do_div(tmp, 1000000000);
>> - period = tmp;
>> + rate = clk_get_rate(clk);
>> +
>> + for (;;) {
>> + tmp = (unsigned long long) rate * period_ns;
>> + do_div(tmp, 1000000000);
>>
>> - while (period > 0xffff && prescaler < 6) {
>> - period >>= 2;
>> - ++prescaler;
>> + if (tmp <= 0xffff)
>> + break;
>> +
>> + new_rate = clk_round_rate(clk, rate / 2);
>> +
>> + if (new_rate < rate)
>> + rate = new_rate;
>> + else
>> + return -EINVAL;
>> }
>>
>> - if (prescaler == 6)
>> - return -EINVAL;
>> + clk_set_rate(clk, rate);
>
> Maybe this could better live in a separate patch. If you split still
> further to have the conversion to regmap in a single patch, then the
> conversion to the clk_* functions and then improve the algorithm for
> the
> clk settings each of the patches is easier to review than this one
> patch
> that does all three things at once.
I can try.
> Best regards
> Uwe
>
> --
> Pengutronix e.K. | Uwe Kleine-König
> |
> Industrial Linux Solutions |
> http://www.pengutronix.de/ |
next prev parent reply other threads:[~2018-12-13 14:34 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-12 22:08 [PATCH v8 00/26] Ingenic TCU patchset v8 Paul Cercueil
2018-12-12 22:08 ` [PATCH v8 01/26] dt-bindings: ingenic: Add DT bindings for TCU clocks Paul Cercueil
2018-12-17 23:18 ` Stephen Boyd
2018-12-12 22:08 ` [PATCH v8 02/26] doc: Add doc for the Ingenic TCU hardware Paul Cercueil
2018-12-12 22:08 ` [PATCH v8 03/26] dt-bindings: Add doc for the Ingenic TCU drivers Paul Cercueil
2018-12-17 21:05 ` Rob Herring
2018-12-17 22:03 ` Paul Cercueil
2018-12-18 16:36 ` Rob Herring
2018-12-22 11:09 ` Paul Cercueil
2018-12-12 22:08 ` [PATCH v8 04/26] clocksource: Add a new timer-ingenic driver Paul Cercueil
2018-12-12 22:09 ` [PATCH v8 05/26] clocksource: Add driver for the Ingenic JZ47xx OST Paul Cercueil
2019-01-23 12:58 ` Mathieu Malaterre
2019-01-23 14:31 ` Guenter Roeck
2019-01-23 17:25 ` Paul Cercueil
2019-01-23 18:01 ` Guenter Roeck
2019-01-24 19:28 ` Stephen Boyd
2019-01-24 20:46 ` Paul Cercueil
2019-01-24 22:46 ` Stephen Boyd
2019-01-24 22:53 ` Paul Cercueil
2019-02-23 3:17 ` Paul Cercueil
2019-02-25 18:05 ` Stephen Boyd
2019-02-27 23:54 ` Paul Cercueil
2019-01-23 17:27 ` Paul Cercueil
2018-12-12 22:09 ` [PATCH v8 06/26] MAINTAINERS: Add myself as maintainer for Ingenic TCU drivers Paul Cercueil
2018-12-12 22:09 ` [PATCH v8 07/26] watchdog: jz4740: Use WDT clock provided by TCU driver Paul Cercueil
2018-12-12 22:09 ` [PATCH v8 08/26] watchdog: jz4740: Use regmap " Paul Cercueil
2018-12-12 22:09 ` [PATCH v8 09/26] watchdog: jz4740: Avoid starting watchdog in set_timeout Paul Cercueil
2018-12-12 22:09 ` [PATCH v8 10/26] watchdog: jz4740: Drop dependency on MACH_JZ47xx, use COMPILE_TEST Paul Cercueil
2018-12-12 22:09 ` [PATCH v8 11/26] pwm: jz4740: Use regmap and clocks from TCU driver Paul Cercueil
2018-12-13 9:30 ` Uwe Kleine-König
2018-12-13 14:34 ` Paul Cercueil [this message]
2018-12-12 22:09 ` [PATCH v8 12/26] pwm: jz4740: Allow selection of PWM channels 0 and 1 Paul Cercueil
2018-12-13 9:18 ` Uwe Kleine-König
2018-12-13 13:58 ` Paul Cercueil
2018-12-13 20:32 ` Uwe Kleine-König
2018-12-16 13:36 ` Paul Cercueil
2018-12-17 7:43 ` Uwe Kleine-König
2018-12-12 22:09 ` [PATCH v8 13/26] pwm: jz4740: Drop dependency on MACH_INGENIC, use COMPILE_TEST Paul Cercueil
2018-12-12 22:09 ` [PATCH v8 14/26] pwm: jz4740: Remove unused devicetree compatible strings Paul Cercueil
2018-12-12 22:09 ` [PATCH v8 15/26] pwm: jz4740: Add support for the JZ4725B Paul Cercueil
2018-12-13 9:24 ` Uwe Kleine-König
2018-12-13 14:03 ` Paul Cercueil
2018-12-13 16:18 ` Thierry Reding
2018-12-13 20:42 ` Uwe Kleine-König
2018-12-14 13:50 ` Linus Walleij
2018-12-14 14:26 ` Uwe Kleine-König
2018-12-14 14:56 ` Linus Walleij
2018-12-16 14:18 ` Paul Cercueil
2018-12-17 7:53 ` Uwe Kleine-König
2018-12-20 17:39 ` Thierry Reding
2018-12-20 20:58 ` Uwe Kleine-König
2018-12-12 22:09 ` [PATCH v8 16/26] clk: jz4740: Add TCU clock Paul Cercueil
2018-12-12 22:09 ` [PATCH v8 17/26] MIPS: Kconfig: Select TCU timer driver when MACH_INGENIC is set Paul Cercueil
2018-12-12 22:09 ` [PATCH v8 18/26] MIPS: jz4740: Add DTS nodes for the TCU drivers Paul Cercueil
2018-12-12 22:09 ` [PATCH v8 19/26] MIPS: qi_lb60: Move PWM devices to devicetree Paul Cercueil
2018-12-12 22:09 ` [PATCH v8 20/26] MIPS: qi_lb60: Reduce system timer and clocksource to 750 kHz Paul Cercueil
2018-12-12 22:12 ` [PATCH v8 21/26] MIPS: CI20: Reduce system timer and clocksource to 3 MHz Paul Cercueil
2018-12-12 22:12 ` [PATCH v8 22/26] MIPS: CI20: defconfig: enable OST driver Paul Cercueil
2018-12-12 22:13 ` [PATCH v8 23/26] MIPS: GCW0: Move clocksource to TCU channel 2 Paul Cercueil
2018-12-12 22:13 ` [PATCH v8 24/26] MIPS: GCW0: Reduce system timer and clocksource to 750 kHz Paul Cercueil
2018-12-12 22:14 ` [PATCH v8 25/26] MIPS: GCW0: defconfig: Enable OST, watchdog, PWM drivers Paul Cercueil
2018-12-12 22:15 ` [PATCH v8 26/26] MIPS: jz4740: Drop obsolete code Paul Cercueil
2019-01-24 21:26 ` [PATCH v8 00/26] Ingenic TCU patchset v8 Mathieu Malaterre
2019-01-24 21:41 ` Paul Cercueil
2019-01-25 8:21 ` Mathieu Malaterre
2019-01-25 17:04 ` Paul Cercueil
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=1544711688.18952.2@crapouillou.net \
--to=paul@crapouillou.net \
--cc=corbet@lwn.net \
--cc=daniel.lezcano@linaro.org \
--cc=devicetree@vger.kernel.org \
--cc=ezequiel@collabora.co.uk \
--cc=jhogan@kernel.org \
--cc=linux-clk@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux-pwm@vger.kernel.org \
--cc=linux-watchdog@vger.kernel.org \
--cc=malat@debian.org \
--cc=mark.rutland@arm.com \
--cc=od@zcrc.me \
--cc=paul.burton@mips.com \
--cc=prasannatsmkumar@gmail.com \
--cc=ralf@linux-mips.org \
--cc=robh+dt@kernel.org \
--cc=tglx@linutronix.de \
--cc=thierry.reding@gmail.com \
--cc=u.kleine-koenig@pengutronix.de \
/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).