xref: /rk3399_rockchip-uboot/cmd/dvfs.c (revision 0eea0d250e65f61dbae608a25eb07e26567ef430)
1*0eea0d25SJoseph Chen // SPDX-License-Identifier: GPL-2.0
2*0eea0d25SJoseph Chen /*
3*0eea0d25SJoseph Chen  * Copyright (c) 2018 Fuzhou Rockchip Electronics Co., Ltd
4*0eea0d25SJoseph Chen  */
5*0eea0d25SJoseph Chen 
6*0eea0d25SJoseph Chen #include <common.h>
7*0eea0d25SJoseph Chen #include <console.h>
8*0eea0d25SJoseph Chen #include <dvfs.h>
9*0eea0d25SJoseph Chen 
10*0eea0d25SJoseph Chen static int do_dvfs(cmd_tbl_t *cmdtp, int flag,
11*0eea0d25SJoseph Chen 		   int argc, char *const argv[])
12*0eea0d25SJoseph Chen {
13*0eea0d25SJoseph Chen 	struct udevice *dev;
14*0eea0d25SJoseph Chen 	int ret;
15*0eea0d25SJoseph Chen 
16*0eea0d25SJoseph Chen 	ret = uclass_get_device(UCLASS_DVFS, 0, &dev);
17*0eea0d25SJoseph Chen 	if (ret) {
18*0eea0d25SJoseph Chen 		printf("DVFS: Get dvfs device failed, ret=%d\n", ret);
19*0eea0d25SJoseph Chen 		return ret;
20*0eea0d25SJoseph Chen 	}
21*0eea0d25SJoseph Chen 
22*0eea0d25SJoseph Chen 	if (argc == 1)
23*0eea0d25SJoseph Chen 		return dvfs_apply(dev);
24*0eea0d25SJoseph Chen 	else if (!strcmp(argv[1], "repeat"))
25*0eea0d25SJoseph Chen 		return dvfs_repeat_apply(dev);
26*0eea0d25SJoseph Chen 	else
27*0eea0d25SJoseph Chen 		return CMD_RET_USAGE;
28*0eea0d25SJoseph Chen 
29*0eea0d25SJoseph Chen 	return 0;
30*0eea0d25SJoseph Chen }
31*0eea0d25SJoseph Chen 
32*0eea0d25SJoseph Chen U_BOOT_CMD(
33*0eea0d25SJoseph Chen 	dvfs, 2, 1, do_dvfs,
34*0eea0d25SJoseph Chen 	"Start DVFS policy",
35*0eea0d25SJoseph Chen 	"dvfs - apply dvfs policy once\n"
36*0eea0d25SJoseph Chen 	"dvfs repeat - repeat apply dvfs policy until achieve the target temperature"
37*0eea0d25SJoseph Chen );
38