xref: /openbsd-src/sys/dev/ofw/ofw_power.h (revision f702326ed3b0a7b38129f69bc32e67018dfa3466)
1*f702326eSkettenis /*	$OpenBSD: ofw_power.h,v 1.2 2021/11/26 11:44:01 kettenis Exp $	*/
21eacba6cSpatrick /*
31eacba6cSpatrick  * Copyright (c) 2016 Mark Kettenis
41eacba6cSpatrick  * Copyright (c) 2018 Patrick Wildt <patrick@blueri.se>
51eacba6cSpatrick  *
61eacba6cSpatrick  * Permission to use, copy, modify, and distribute this software for any
71eacba6cSpatrick  * purpose with or without fee is hereby granted, provided that the above
81eacba6cSpatrick  * copyright notice and this permission notice appear in all copies.
91eacba6cSpatrick  *
101eacba6cSpatrick  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
111eacba6cSpatrick  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
121eacba6cSpatrick  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
131eacba6cSpatrick  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
141eacba6cSpatrick  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
151eacba6cSpatrick  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
161eacba6cSpatrick  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
171eacba6cSpatrick  */
181eacba6cSpatrick 
191eacba6cSpatrick #ifndef _DEV_OFW_POWER_H_
201eacba6cSpatrick #define _DEV_OFW_POWER_H_
211eacba6cSpatrick 
221eacba6cSpatrick struct power_domain_device {
231eacba6cSpatrick 	int	pd_node;
241eacba6cSpatrick 	void	*pd_cookie;
251eacba6cSpatrick 	void	(*pd_enable)(void *, uint32_t *, int);
261eacba6cSpatrick 
271eacba6cSpatrick 	LIST_ENTRY(power_domain_device) pd_list;
281eacba6cSpatrick 	uint32_t pd_phandle;
291eacba6cSpatrick 	uint32_t pd_cells;
301eacba6cSpatrick };
311eacba6cSpatrick 
321eacba6cSpatrick void	power_domain_register(struct power_domain_device *);
331eacba6cSpatrick void	power_domain_enable(int);
34*f702326eSkettenis void	power_domain_enable_idx(int, int);
351eacba6cSpatrick void	power_domain_disable(int);
36*f702326eSkettenis void	power_domain_disable_idx(int, int);
37*f702326eSkettenis 
38*f702326eSkettenis static inline void
power_domain_enable_all(int node)39*f702326eSkettenis power_domain_enable_all(int node)
40*f702326eSkettenis {
41*f702326eSkettenis 	power_domain_enable_idx(node, -1);
42*f702326eSkettenis }
43*f702326eSkettenis 
44*f702326eSkettenis static inline void
power_domain_disable_all(int node)45*f702326eSkettenis power_domain_disable_all(int node)
46*f702326eSkettenis {
47*f702326eSkettenis 	power_domain_disable_idx(node, -1);
48*f702326eSkettenis }
491eacba6cSpatrick 
501eacba6cSpatrick #endif /* _DEV_OFW_POWER_H_ */
51