1 /* 2 * (C) Copyright 2017 Rockchip Electronics Co., Ltd 3 * 4 * SPDX-License-Identifier: GPL-2.0+ 5 */ 6 7 #include <common.h> 8 #include <command.h> 9 #include <dm.h> 10 #include <power/charge_display.h> 11 12 static int charge_display(cmd_tbl_t *cmdtp, int flag, int argc, 13 char *const argv[]) 14 { 15 int on_soc, on_voltage, screen_voltage; 16 int ret, save[3]; 17 struct udevice *dev; 18 19 if (argc != 4 && argc != 1) 20 return CMD_RET_USAGE; 21 22 ret = uclass_get_device(UCLASS_CHARGE_DISPLAY, 0, &dev); 23 if (ret) { 24 if (ret != -ENODEV) { 25 printf("Get UCLASS CHARGE DISPLAY failed: %d\n", ret); 26 return ret; 27 } 28 29 return 0; 30 } 31 32 if (argc == 4) { 33 save[0] = charge_display_get_power_on_soc(dev); 34 save[1] = charge_display_get_power_on_voltage(dev); 35 save[2] = charge_display_get_screen_on_voltage(dev); 36 37 on_soc = simple_strtoul(argv[1], NULL, 0); 38 on_voltage = simple_strtoul(argv[2], NULL, 0); 39 screen_voltage = simple_strtoul(argv[3], NULL, 0); 40 debug("new: on_soc=%d, on_voltage=%d, screen_voltage=%d\n", 41 on_soc, on_voltage, screen_voltage); 42 43 charge_display_set_power_on_soc(dev, on_soc); 44 charge_display_set_power_on_voltage(dev, on_voltage); 45 charge_display_set_screen_on_voltage(dev, screen_voltage); 46 47 charge_display_show(dev); 48 49 charge_display_set_power_on_soc(dev, save[0]); 50 charge_display_set_power_on_voltage(dev, save[1]); 51 charge_display_set_screen_on_voltage(dev, save[2]); 52 53 } else if (argc == 1) { 54 charge_display_show(dev); 55 } else { 56 return CMD_RET_USAGE; 57 } 58 59 return 0; 60 } 61 62 U_BOOT_CMD(charge, 4, 0, charge_display, 63 "Charge display", 64 "-charge\n" 65 "-charge <power on soc> <power on voltage> <screen on voltage>" 66 ); 67