Blame view

cmd/clk.c 1.71 KB
83d290c56   Tom Rini   SPDX: Convert all...
1
  // SPDX-License-Identifier: GPL-2.0+
08d0d6f32   Michal Simek   common: Add new c...
2
3
  /*
   * Copyright (C) 2013 Xilinx, Inc.
08d0d6f32   Michal Simek   common: Add new c...
4
5
6
7
   */
  #include <common.h>
  #include <command.h>
  #include <clk.h>
ff8eee033   Marek Vasut   cmd: clk: Add tri...
8
9
10
11
  #if defined(CONFIG_DM) && defined(CONFIG_CLK)
  #include <dm.h>
  #include <dm/device-internal.h>
  #endif
08d0d6f32   Michal Simek   common: Add new c...
12
13
14
  
  int __weak soc_clk_dump(void)
  {
ff8eee033   Marek Vasut   cmd: clk: Add tri...
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
  #if defined(CONFIG_DM) && defined(CONFIG_CLK)
  	struct udevice *dev;
  	struct uclass *uc;
  	struct clk clk;
  	int ret;
  
  	/* Device addresses start at 1 */
  	ret = uclass_get(UCLASS_CLK, &uc);
  	if (ret)
  		return ret;
  
  	uclass_foreach_dev(dev, uc) {
  		memset(&clk, 0, sizeof(clk));
  		ret = device_probe(dev);
  		if (ret) {
  			printf("%-30.30s : ? Hz
  ", dev->name);
  			continue;
  		}
  
  		ret = clk_request(dev, &clk);
  		if (ret) {
  			printf("%-30.30s : ? Hz
  ", dev->name);
  			continue;
  		}
  
  		printf("%-30.30s : %lu Hz
  ", dev->name, clk_get_rate(&clk));
  
  		clk_free(&clk);
  	}
  
  	return 0;
  #else
08d0d6f32   Michal Simek   common: Add new c...
50
51
52
  	puts("Not implemented
  ");
  	return 1;
ff8eee033   Marek Vasut   cmd: clk: Add tri...
53
  #endif
08d0d6f32   Michal Simek   common: Add new c...
54
55
56
57
58
  }
  
  static int do_clk_dump(cmd_tbl_t *cmdtp, int flag, int argc,
  		       char *const argv[])
  {
ebc675b98   Michal Simek   cmd: clk: Check r...
59
60
61
62
63
64
65
66
67
68
  	int ret;
  
  	ret = soc_clk_dump();
  	if (ret < 0) {
  		printf("Clock dump error %d
  ", ret);
  		ret = CMD_RET_FAILURE;
  	}
  
  	return ret;
08d0d6f32   Michal Simek   common: Add new c...
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
  }
  
  static cmd_tbl_t cmd_clk_sub[] = {
  	U_BOOT_CMD_MKENT(dump, 1, 1, do_clk_dump, "", ""),
  };
  
  static int do_clk(cmd_tbl_t *cmdtp, int flag, int argc,
  		  char *const argv[])
  {
  	cmd_tbl_t *c;
  
  	if (argc < 2)
  		return CMD_RET_USAGE;
  
  	/* Strip off leading 'clk' command argument */
  	argc--;
  	argv++;
  
  	c = find_cmd_tbl(argv[0], &cmd_clk_sub[0], ARRAY_SIZE(cmd_clk_sub));
  
  	if (c)
  		return c->cmd(cmdtp, flag, argc, argv);
  	else
  		return CMD_RET_USAGE;
  }
  
  #ifdef CONFIG_SYS_LONGHELP
  static char clk_help_text[] =
  	"dump - Print clock frequencies";
  #endif
  
  U_BOOT_CMD(clk, 2, 1, do_clk, "CLK sub-system", clk_help_text);