[PATCH 08/26] clk: add support for setting clk rate from cmdline

Lokesh Vutla lokeshvutla at ti.com
Sun Nov 15 11:29:04 CET 2020


+Lucasz

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);
> 


More information about the U-Boot mailing list