linux-stable/include/linux/soc/qcom/pdr.h
Sibi Sankar fbe639b44a soc: qcom: Introduce Protection Domain Restart helpers
Qualcomm SoCs (starting with MSM8998) allow for multiple protection domains
to run on the same Q6 sub-system. This allows for services like ATH10K WLAN
FW to have their own separate address space and crash/recover without
disrupting the modem and other PDs running on the same sub-system. The PDR
helpers introduces an abstraction that allows for tracking/controlling the
life cycle of protection domains running on various Q6 sub-systems.

Signed-off-by: Sibi Sankar <sibis@codeaurora.org>
Link: https://lore.kernel.org/r/20200312120842.21991-2-sibis@codeaurora.org
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
2020-03-14 22:38:42 -07:00

29 lines
814 B
C

/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __QCOM_PDR_HELPER__
#define __QCOM_PDR_HELPER__
#include <linux/soc/qcom/qmi.h>
#define SERVREG_NAME_LENGTH 64
struct pdr_service;
struct pdr_handle;
enum servreg_service_state {
SERVREG_LOCATOR_ERR = 0x1,
SERVREG_SERVICE_STATE_DOWN = 0x0FFFFFFF,
SERVREG_SERVICE_STATE_UP = 0x1FFFFFFF,
SERVREG_SERVICE_STATE_EARLY_DOWN = 0x2FFFFFFF,
SERVREG_SERVICE_STATE_UNINIT = 0x7FFFFFFF,
};
struct pdr_handle *pdr_handle_alloc(void (*status)(int state,
char *service_path,
void *priv), void *priv);
struct pdr_service *pdr_add_lookup(struct pdr_handle *pdr,
const char *service_name,
const char *service_path);
int pdr_restart_pd(struct pdr_handle *pdr, struct pdr_service *pds);
void pdr_handle_release(struct pdr_handle *pdr);
#endif