xref: /rk3399_rockchip-uboot/cmd/charge.c (revision 5ec685037a799ecdc53ecb1a12a9ed5a9cecb4f4)
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