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