From: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de> To: Marco Felsch <m.felsch@pengutronix.de> Cc: thierry.reding@gmail.com, lee.jones@linaro.org, shawnguo@kernel.org, s.hauer@pengutronix.de, festevam@gmail.com, linux-imx@nxp.com, Anson.Huang@nxp.com, michal.vokac@ysoft.com, l.majewski@majess.pl, linux-pwm@vger.kernel.org, kernel@pengutronix.de, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH 1/3] pwm: imx27: track clock enable/disable to simplify code Date: Mon, 21 Sep 2020 10:54:54 +0200 [thread overview] Message-ID: <20200921085454.yqvfpif77y7isquz@pengutronix.de> (raw) In-Reply-To: <20200909130739.26717-2-m.felsch@pengutronix.de> [-- Attachment #1: Type: text/plain, Size: 1969 bytes --] Hello, On Wed, Sep 09, 2020 at 03:07:37PM +0200, Marco Felsch wrote: > Introduce a simple clock state so we can enable/disable the clock > without the need to check if we are running or not. > > Signed-off-by: Marco Felsch <m.felsch@pengutronix.de> > --- > drivers/pwm/pwm-imx27.c | 19 +++++++++++++++---- > 1 file changed, 15 insertions(+), 4 deletions(-) This doesn't suggest to be more simple. > @@ -223,6 +234,10 @@ static int pwm_imx27_apply(struct pwm_chip *chip, struct pwm_device *pwm, > int ret; > u32 cr; > > + ret = pwm_imx27_clk_prepare_enable(imx); > + if (ret) > + return ret; > + > pwm_get_state(pwm, &cstate); > > clkrate = clk_get_rate(imx->clk_per); > @@ -254,10 +269,6 @@ static int pwm_imx27_apply(struct pwm_chip *chip, struct pwm_device *pwm, > if (cstate.enabled) { > pwm_imx27_wait_fifo_slot(chip, pwm); > } else { > - ret = pwm_imx27_clk_prepare_enable(imx); > - if (ret) > - return ret; > - > pwm_imx27_sw_reset(chip); > } There are two clocks, I assume one if for register access and the other to actually drive the PWM. With that what I would consider simple is to enable the register clock at the start of each function and disable it at the end. And for the hardware clock enable it when the hardware should be enabled and disable it when it should be disabled. Probably this doesn't reduce the line count, too, but it makes the function more efficient (if this is measurable at all). If you want to keep the pwm_imx27_clk_prepare_enable() function that handles both clocks, just calling pwm_imx27_clk_prepare_enable unconditionally at the function entry and pwm_imx27_clk_disable_unprepare at the end should be easier and not require the .on member in the driver struct. Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König | Industrial Linux Solutions | https://www.pengutronix.de/ | [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 488 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de> To: Marco Felsch <m.felsch@pengutronix.de> Cc: linux-pwm@vger.kernel.org, michal.vokac@ysoft.com, kernel@pengutronix.de, Anson.Huang@nxp.com, lee.jones@linaro.org, s.hauer@pengutronix.de, thierry.reding@gmail.com, linux-imx@nxp.com, festevam@gmail.com, shawnguo@kernel.org, l.majewski@majess.pl, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH 1/3] pwm: imx27: track clock enable/disable to simplify code Date: Mon, 21 Sep 2020 10:54:54 +0200 [thread overview] Message-ID: <20200921085454.yqvfpif77y7isquz@pengutronix.de> (raw) In-Reply-To: <20200909130739.26717-2-m.felsch@pengutronix.de> [-- Attachment #1.1: Type: text/plain, Size: 1969 bytes --] Hello, On Wed, Sep 09, 2020 at 03:07:37PM +0200, Marco Felsch wrote: > Introduce a simple clock state so we can enable/disable the clock > without the need to check if we are running or not. > > Signed-off-by: Marco Felsch <m.felsch@pengutronix.de> > --- > drivers/pwm/pwm-imx27.c | 19 +++++++++++++++---- > 1 file changed, 15 insertions(+), 4 deletions(-) This doesn't suggest to be more simple. > @@ -223,6 +234,10 @@ static int pwm_imx27_apply(struct pwm_chip *chip, struct pwm_device *pwm, > int ret; > u32 cr; > > + ret = pwm_imx27_clk_prepare_enable(imx); > + if (ret) > + return ret; > + > pwm_get_state(pwm, &cstate); > > clkrate = clk_get_rate(imx->clk_per); > @@ -254,10 +269,6 @@ static int pwm_imx27_apply(struct pwm_chip *chip, struct pwm_device *pwm, > if (cstate.enabled) { > pwm_imx27_wait_fifo_slot(chip, pwm); > } else { > - ret = pwm_imx27_clk_prepare_enable(imx); > - if (ret) > - return ret; > - > pwm_imx27_sw_reset(chip); > } There are two clocks, I assume one if for register access and the other to actually drive the PWM. With that what I would consider simple is to enable the register clock at the start of each function and disable it at the end. And for the hardware clock enable it when the hardware should be enabled and disable it when it should be disabled. Probably this doesn't reduce the line count, too, but it makes the function more efficient (if this is measurable at all). If you want to keep the pwm_imx27_clk_prepare_enable() function that handles both clocks, just calling pwm_imx27_clk_prepare_enable unconditionally at the function entry and pwm_imx27_clk_disable_unprepare at the end should be easier and not require the .on member in the driver struct. Best regards Uwe -- Pengutronix e.K. | Uwe Kleine-König | Industrial Linux Solutions | https://www.pengutronix.de/ | [-- Attachment #1.2: signature.asc --] [-- Type: application/pgp-signature, Size: 488 bytes --] [-- Attachment #2: Type: text/plain, Size: 176 bytes --] _______________________________________________ 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:[~2020-09-21 8:55 UTC|newest] Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-09-09 13:07 [PATCH 0/3] PWM i.MX27 fix disabled state for inverted signals Marco Felsch 2020-09-09 13:07 ` Marco Felsch 2020-09-09 13:07 ` [PATCH 1/3] pwm: imx27: track clock enable/disable to simplify code Marco Felsch 2020-09-09 13:07 ` Marco Felsch 2020-09-21 8:54 ` Uwe Kleine-König [this message] 2020-09-21 8:54 ` Uwe Kleine-König 2020-09-09 13:07 ` [PATCH 2/3] pwm: imx27: move static pwmcr values into probe() function Marco Felsch 2020-09-09 13:07 ` Marco Felsch 2020-09-21 9:01 ` Uwe Kleine-König 2020-09-21 9:01 ` Uwe Kleine-König 2020-09-09 13:07 ` [PATCH 3/3] pwm: imx27: fix disable state for inverted PWMs Marco Felsch 2020-09-09 13:07 ` Marco Felsch 2020-09-21 9:09 ` Uwe Kleine-König 2020-09-21 9:09 ` Uwe Kleine-König
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=20200921085454.yqvfpif77y7isquz@pengutronix.de \ --to=u.kleine-koenig@pengutronix.de \ --cc=Anson.Huang@nxp.com \ --cc=festevam@gmail.com \ --cc=kernel@pengutronix.de \ --cc=l.majewski@majess.pl \ --cc=lee.jones@linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-imx@nxp.com \ --cc=linux-pwm@vger.kernel.org \ --cc=m.felsch@pengutronix.de \ --cc=michal.vokac@ysoft.com \ --cc=s.hauer@pengutronix.de \ --cc=shawnguo@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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.