[PATCH 08/26] clk: add support for setting clk rate from cmdline
Lukasz Majewski
lukma at denx.de
Mon Nov 16 15:26:43 CET 2020
Hi Tero,
> On 15/11/2020 12:29, Lokesh Vutla wrote:
> > +Lucasz
>
> This is just a nice to have patch. Found it quite useful while
> debugging the new drivers so decided to share.
>
> -Tero
>
> >
> > On 10/11/20 2:35 pm, Tero Kristo wrote:
> >> Add new clk subcommand "clk setfreq", for setting up a clock rate
> >> directly from u-boot cmdline. This is handy for any debugging
> >> purposes towards clocks.
> >>
> >> Signed-off-by: Tero Kristo <t-kristo at ti.com>
> >> ---
> >> cmd/clk.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++--
> >> 1 file changed, 47 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/cmd/clk.c b/cmd/clk.c
> >> index 0245b97136..fd7944c02e 100644
> >> --- a/cmd/clk.c
> >> +++ b/cmd/clk.c
> >> @@ -98,8 +98,52 @@ static int do_clk_dump(struct cmd_tbl *cmdtp,
> >> int flag, int argc, return ret;
> >> }
> >>
> >> +struct udevice *clk_lookup(const char *name)
> >> +{
> >> + int i = 0;
> >> + struct udevice *dev;
> >> +
> >> + do {
> >> + uclass_get_device(UCLASS_CLK, i++, &dev);
> >> + if (!strcmp(name, dev->name))
> >> + return dev;
> >> + } while (dev);
> >> +
> >> + return NULL;
> >> +}
> >> +
> >> +static int do_clk_setfreq(struct cmd_tbl *cmdtp, int flag, int
> >> argc,
> >> + char *const argv[])
> >> +{
> >> + struct clk *clk = NULL;
> >> + s32 freq;
> >> + struct udevice *dev;
> >> +
> >> + freq = simple_strtoul(argv[2], NULL, 10);
> >> +
> >> + dev = clk_lookup(argv[1]);
> >> +
> >> + if (dev)
> >> + clk = dev_get_clk_ptr(dev);
> >> +
> >> + if (!clk) {
> >> + printf("clock '%s' not found.\n", argv[1]);
> >> + return -EINVAL;
> >> + }
> >> +
> >> + freq = clk_set_rate(clk, freq);
> >> + if (freq < 0) {
> >> + printf("set_rate failed: %d\n", freq);
> >> + return CMD_RET_FAILURE;
> >> + }
> >> +
> >> + printf("set_rate returns %u\n", freq);
> >> + return 0;
> >> +}
> >> +
> >> static struct cmd_tbl cmd_clk_sub[] = {
> >> U_BOOT_CMD_MKENT(dump, 1, 1, do_clk_dump, "", ""),
> >> + U_BOOT_CMD_MKENT(setfreq, 3, 1, do_clk_setfreq, "", ""),
> >> };
> >>
> >> static int do_clk(struct cmd_tbl *cmdtp, int flag, int argc,
> >> @@ -124,7 +168,8 @@ static int do_clk(struct cmd_tbl *cmdtp, int
> >> flag, int argc,
> >> #ifdef CONFIG_SYS_LONGHELP
> >> static char clk_help_text[] =
> >> - "dump - Print clock frequencies";
> >> + "dump - Print clock frequencies\n"
> >> + "setfreq [clk] [freq] - Set clock frequency";
> >> #endif
> >>
> >> -U_BOOT_CMD(clk, 2, 1, do_clk, "CLK sub-system", clk_help_text);
> >> +U_BOOT_CMD(clk, 4, 1, do_clk, "CLK sub-system", clk_help_text);
> >>
>
> --
> Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki.
> Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
Acked-by: Lukasz Majewski <lukma at denx.de>
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20201116/17ee7fa0/attachment.sig>
More information about the U-Boot
mailing list