xref: /linux/include/linux/soc/qcom/pdr.h (revision ead5d1f4d877e92c051e1a1ade623d0d30e71619)
1*fbe639b4SSibi Sankar /* SPDX-License-Identifier: GPL-2.0 */
2*fbe639b4SSibi Sankar #ifndef __QCOM_PDR_HELPER__
3*fbe639b4SSibi Sankar #define __QCOM_PDR_HELPER__
4*fbe639b4SSibi Sankar 
5*fbe639b4SSibi Sankar #include <linux/soc/qcom/qmi.h>
6*fbe639b4SSibi Sankar 
7*fbe639b4SSibi Sankar #define SERVREG_NAME_LENGTH	64
8*fbe639b4SSibi Sankar 
9*fbe639b4SSibi Sankar struct pdr_service;
10*fbe639b4SSibi Sankar struct pdr_handle;
11*fbe639b4SSibi Sankar 
12*fbe639b4SSibi Sankar enum servreg_service_state {
13*fbe639b4SSibi Sankar 	SERVREG_LOCATOR_ERR = 0x1,
14*fbe639b4SSibi Sankar 	SERVREG_SERVICE_STATE_DOWN = 0x0FFFFFFF,
15*fbe639b4SSibi Sankar 	SERVREG_SERVICE_STATE_UP = 0x1FFFFFFF,
16*fbe639b4SSibi Sankar 	SERVREG_SERVICE_STATE_EARLY_DOWN = 0x2FFFFFFF,
17*fbe639b4SSibi Sankar 	SERVREG_SERVICE_STATE_UNINIT = 0x7FFFFFFF,
18*fbe639b4SSibi Sankar };
19*fbe639b4SSibi Sankar 
20*fbe639b4SSibi Sankar struct pdr_handle *pdr_handle_alloc(void (*status)(int state,
21*fbe639b4SSibi Sankar 						   char *service_path,
22*fbe639b4SSibi Sankar 						   void *priv), void *priv);
23*fbe639b4SSibi Sankar struct pdr_service *pdr_add_lookup(struct pdr_handle *pdr,
24*fbe639b4SSibi Sankar 				   const char *service_name,
25*fbe639b4SSibi Sankar 				   const char *service_path);
26*fbe639b4SSibi Sankar int pdr_restart_pd(struct pdr_handle *pdr, struct pdr_service *pds);
27*fbe639b4SSibi Sankar void pdr_handle_release(struct pdr_handle *pdr);
28*fbe639b4SSibi Sankar 
29*fbe639b4SSibi Sankar #endif
30