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