[PATCH 08/26] clk: add support for setting clk rate from cmdline
Tero Kristo
t-kristo at ti.com
Mon Nov 16 13:06:35 CET 2020
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
More information about the U-Boot
mailing list