xref: /rk3399_rockchip-uboot/cmd/dvfs.c (revision c5449fd30c8bd2024331ddf912fa467e4487c20b)
10eea0d25SJoseph Chen // SPDX-License-Identifier: GPL-2.0
20eea0d25SJoseph Chen /*
30eea0d25SJoseph Chen  * Copyright (c) 2018 Fuzhou Rockchip Electronics Co., Ltd
40eea0d25SJoseph Chen  */
50eea0d25SJoseph Chen 
60eea0d25SJoseph Chen #include <common.h>
70eea0d25SJoseph Chen #include <console.h>
80eea0d25SJoseph Chen #include <dvfs.h>
90eea0d25SJoseph Chen 
do_dvfs(cmd_tbl_t * cmdtp,int flag,int argc,char * const argv[])100eea0d25SJoseph Chen static int do_dvfs(cmd_tbl_t *cmdtp, int flag,
110eea0d25SJoseph Chen 		   int argc, char *const argv[])
120eea0d25SJoseph Chen {
130eea0d25SJoseph Chen 	struct udevice *dev;
140eea0d25SJoseph Chen 	int ret;
150eea0d25SJoseph Chen 
160eea0d25SJoseph Chen 	ret = uclass_get_device(UCLASS_DVFS, 0, &dev);
170eea0d25SJoseph Chen 	if (ret) {
18*c5449fd3SJoseph Chen 		if (ret != -ENODEV)
190eea0d25SJoseph Chen 			printf("DVFS: Get dvfs device failed, ret=%d\n", ret);
200eea0d25SJoseph Chen 		return ret;
210eea0d25SJoseph Chen 	}
220eea0d25SJoseph Chen 
230eea0d25SJoseph Chen 	if (argc == 1)
240eea0d25SJoseph Chen 		return dvfs_apply(dev);
250eea0d25SJoseph Chen 	else if (!strcmp(argv[1], "repeat"))
260eea0d25SJoseph Chen 		return dvfs_repeat_apply(dev);
270eea0d25SJoseph Chen 	else
280eea0d25SJoseph Chen 		return CMD_RET_USAGE;
290eea0d25SJoseph Chen 
300eea0d25SJoseph Chen 	return 0;
310eea0d25SJoseph Chen }
320eea0d25SJoseph Chen 
330eea0d25SJoseph Chen U_BOOT_CMD(
340eea0d25SJoseph Chen 	dvfs, 2, 1, do_dvfs,
350eea0d25SJoseph Chen 	"Start DVFS policy",
360eea0d25SJoseph Chen 	"dvfs - apply dvfs policy once\n"
370eea0d25SJoseph Chen 	"dvfs repeat - repeat apply dvfs policy until achieve the target temperature"
380eea0d25SJoseph Chen );
39