All of lore.kernel.org
 help / color / mirror / Atom feed
From: Biju Das <biju.das.jz@bp.renesas.com>
To: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: "Thierry Reding" <thierry.reding@gmail.com>,
	"Lee Jones" <lee.jones@linaro.org>,
	"Philipp Zabel" <p.zabel@pengutronix.de>,
	"Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
	"linux-pwm@vger.kernel.org" <linux-pwm@vger.kernel.org>,
	"Geert Uytterhoeven" <geert+renesas@glider.be>,
	"Chris Paterson" <Chris.Paterson2@renesas.com>,
	"Biju Das" <biju.das@bp.renesas.com>,
	"Prabhakar Mahadev Lad" <prabhakar.mahadev-lad.rj@bp.renesas.com>,
	"linux-renesas-soc@vger.kernel.org"
	<linux-renesas-soc@vger.kernel.org>
Subject: RE: [PATCH v7 2/2] pwm: Add support for RZ/G2L GPT
Date: Wed, 28 Sep 2022 19:21:11 +0000	[thread overview]
Message-ID: <OS0PR01MB59224752DBF6A49D98682F1986549@OS0PR01MB5922.jpnprd01.prod.outlook.com> (raw)
In-Reply-To: <CAMuHMdWaNULmoUvgeboDrxT92w=iCPY0ucDuU19O1E0buqXgbQ@mail.gmail.com>

Hi Geert,

> Subject: Re: [PATCH v7 2/2] pwm: Add support for RZ/G2L GPT
> 
> Hi Biju,
> 
> On Wed, Sep 28, 2022 at 7:34 PM Biju Das <biju.das.jz@bp.renesas.com>
> wrote:
> > > On Wed, Sep 21, 2022 at 03:57:41PM +0100, Biju Das wrote:
> > > > RZ/G2L General PWM Timer (GPT) composed of 8 channels with 32-
> bit
> > > > timer (GPT32E). It supports the following functions
> > > >  * 32 bits × 8 channels
> > > >  * Up-counting or down-counting (saw waves) or up/down-counting
> > > >    (triangle waves) for each counter.
> > > >  * Clock sources independently selectable for each channel
> > > >  * Two I/O pins per channel
> > > >  * Two output compare/input capture registers per channel
> > > >  * For the two output compare/input capture registers of each
> > > channel,
> > > >    four registers are provided as buffer registers and are
> capable
> > > of
> > > >    operating as comparison registers when buffering is not in
> use.
> > > >  * In output compare operation, buffer switching can be at
> crests or
> > > >    troughs, enabling the generation of laterally asymmetric PWM
> > > waveforms.
> > > >  * Registers for setting up frame cycles in each channel (with
> > > capability
> > > >    for generating interrupts at overflow or underflow)
> > > >  * Generation of dead times in PWM operation
> > > >  * Synchronous starting, stopping and clearing counters for
> > > arbitrary
> > > >    channels
> > > >  * Starting, stopping, clearing and up/down counters in response
> > > > to
> > > input
> > > >    level comparison
> > > >  * Starting, clearing, stopping and up/down counters in response
> > > > to
> > > a
> > > >    maximum of four external triggers
> > > >  * Output pin disable function by dead time error and detected
> > > >    short-circuits between output pins
> > > >  * A/D converter start triggers can be generated (GPT32E0 to
> > > GPT32E3)
> > > >  * Enables the noise filter for input capture and external
> trigger
> > > >    operation
> > > >
> > > > This patch adds basic pwm support for RZ/G2L GPT driver by
> > > > creating separate logical channels for each IOs.
> > > >
> > > > Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
> 
> > > > --- /dev/null
> > > > +++ b/drivers/pwm/pwm-rzg2l-gpt.c
> > > > +   if (rzg2l_gpt_read(rzg2l_gpt, RZG2L_GTCR) & RZG2L_GTCR_CST)
> > > > +           rzg2l_gpt->pwm_enabled_by_bootloader = true;
> > > > +   else
> > > > +           devm_clk_put(&pdev->dev, rzg2l_gpt->clk);
> > >
> > > So in either case I would expect you to want to hold on to the
> clock
> > > pointer here and use that in the runtime PM callbacks.
> >
> > But the api used here is "devm_clk_get_enabled".
> > This will enable the clocks and holds the reference (for pwm enabled
> > by bootloader case) as it avoids turning "off"
> > the clock during later part of the boot process (it prevents clock
> off
> > by clk_disable_unused())
> 
> The clock will still be stopped if the driver is unloaded, or if the
> device is unbound manually, right? Or am I missing something?

Yes, it is turned off during unloading.

root@smarc-rzg2l:~# devmem2 0x11010540
/dev/mem opened.
Memory mapped at address 0xffff81d93000.
Read at address  0x11010540 (0xffff81d93540): 0x00000001
root@smarc-rzg2l:~# lsmod
Module                  Size  Used by
rzg2l_mtu3_cnt         16384  0
counter                28672  1 rzg2l_mtu3_cnt
crct10dif_ce           20480  1
snd_soc_simple_card    20480  0
snd_soc_simple_card_utils    24576  1 snd_soc_simple_card
panfrost               69632  0
drm_shmem_helper       28672  1 panfrost
renesas_usbhs          65536  0
gpu_sched              40960  1 panfrost
drm                   561152  4 gpu_sched,drm_shmem_helper,panfrost
rcar_canfd             36864  0
renesas_rpc_if         20480  0
snd_soc_wm8978         45056  1
snd_soc_rz_ssi         24576  1
rzg2l_adc              24576  0
can_dev                40960  1 rcar_canfd
rzg2l_poeg             20480  0
rzg2l_mtu3             16384  1 rzg2l_mtu3_cnt
pwm_rzg2l_gpt          16384  1 rzg2l_poeg
ipv6                  458752  18
root@smarc-rzg2l:~# rmmod rzg2l_poeg
root@smarc-rzg2l:~# rmmod pwm_rzg2l_gpt
root@smarc-rzg2l:~# devmem2 0x11010540
/dev/mem opened.
Memory mapped at address 0xffffa6e6d000.
Read at address  0x11010540 (0xffffa6e6d540): 0x00000000

Cheers,
Biju

  reply	other threads:[~2022-09-28 19:24 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-21 14:57 [PATCH v7 0/2] Add support for RZ/G2L GPT Biju Das
2022-09-21 14:57 ` [PATCH v7 1/2] dt-bindings: pwm: Add RZ/G2L GPT binding Biju Das
2022-09-21 14:57 ` [PATCH v7 2/2] pwm: Add support for RZ/G2L GPT Biju Das
2022-09-28 13:50   ` Thierry Reding
2022-09-28 14:09     ` Geert Uytterhoeven
2022-09-28 17:34     ` Biju Das
2022-09-28 18:07       ` Geert Uytterhoeven
2022-09-28 19:21         ` Biju Das [this message]
2022-09-29  9:48       ` Thierry Reding
2022-10-01 14:10         ` Biju Das
2022-10-11 11:53         ` Biju Das
2022-09-29 17:36   ` Biju Das
2022-09-30  6:34     ` Uwe Kleine-König
2022-09-30  6:51       ` Biju Das
2022-09-30  7:03         ` Uwe Kleine-König
2022-09-30  7:43           ` Biju Das

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=OS0PR01MB59224752DBF6A49D98682F1986549@OS0PR01MB5922.jpnprd01.prod.outlook.com \
    --to=biju.das.jz@bp.renesas.com \
    --cc=Chris.Paterson2@renesas.com \
    --cc=biju.das@bp.renesas.com \
    --cc=geert+renesas@glider.be \
    --cc=geert@linux-m68k.org \
    --cc=lee.jones@linaro.org \
    --cc=linux-pwm@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=p.zabel@pengutronix.de \
    --cc=prabhakar.mahadev-lad.rj@bp.renesas.com \
    --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 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.