xref: /OK3568_Linux_fs/u-boot/drivers/power/power_delivery/power_delivery_uclass.c (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /*
2  * (C) Copyright 2022 Rockchip Electronics Co., Ltd
3  *
4  * SPDX-License-Identifier:     GPL-2.0+
5  */
6 
7 #include <errno.h>
8 #include <dm.h>
9 #include <dm/device-internal.h>
10 #include <power/power_delivery/power_delivery.h>
11 
12 DECLARE_GLOBAL_DATA_PTR;
13 
power_delivery_get_data(struct udevice * dev,struct power_delivery_data * pd_data)14 int power_delivery_get_data(struct udevice *dev, struct power_delivery_data *pd_data)
15 {
16 	const struct dm_power_delivery_ops *ops = dev_get_driver_ops(dev);
17 
18 	if (!ops || !ops->get_current || !ops->get_voltage || !ops->get_online)
19 		return -ENOSYS;
20 
21 	pd_data->voltage = ops->get_voltage(dev);
22 	pd_data->current = ops->get_current(dev);
23 	pd_data->online = ops->get_online(dev);
24 
25 	return 0;
26 }
27 
28 UCLASS_DRIVER(power_delivery) = {
29 	.id		= UCLASS_PD,
30 	.name		= "power_delivery",
31 };
32