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