kernel-fxtec-pro1x/include/soc/qcom/service-notifier.h
Isaac J. Manjarres 8b16ad0e31 soc: qcom: service-notifier: Add EARLY_PD_DOWN to PD states
Add the EARLY_PD_DOWN state to the set of possible states
for a PD. The PD will enter this state and send an indication
to the HLOS shortly before sending the PD_DOWN indication. This
indication does not require an ACK back, unlike the PD_[UP/DOWN]
indication.

This indication is sent when PD dumps are collected, and
before a PD dies. Any memory that is part of the PD dumps
should not be unmapped as part of the handling for this
indication, as it may be used during the PD dump collection.

Change-Id: I8797510e86e41ceb64c4afff55d7c286f385b98d
Signed-off-by: Isaac J. Manjarres <isaacm@codeaurora.org>
2019-04-01 21:54:51 -07:00

78 lines
2.3 KiB
C

/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2015-2019, The Linux Foundation. All rights reserved.
*/
/*
* Process Domain Service Notifier API header
*
*/
#ifndef _SERVICE_NOTIFIER_H
#define _SERVICE_NOTIFIER_H
enum qmi_servreg_notif_service_state_enum_type_v01 {
QMI_SERVREG_NOTIF_SERVICE_STATE_ENUM_TYPE_MIN_VAL_V01 = INT_MIN,
QMI_SERVREG_NOTIF_SERVICE_STATE_ENUM_TYPE_MAX_VAL_V01 = INT_MAX,
SERVREG_NOTIF_SERVICE_STATE_DOWN_V01 = 0x0FFFFFFF,
SERVREG_NOTIF_SERVICE_STATE_UP_V01 = 0x1FFFFFFF,
SERVREG_NOTIF_SERVICE_STATE_EARLY_DOWN_V01 = 0x2FFFFFFF,
SERVREG_NOTIF_SERVICE_STATE_UNINIT_V01 = 0x7FFFFFFF,
};
enum pd_subsys_state {
ROOT_PD_DOWN,
ROOT_PD_UP,
ROOT_PD_ERR_FATAL,
ROOT_PD_WDOG_BITE,
ROOT_PD_SHUTDOWN,
USER_PD_STATE_CHANGE,
};
#if defined(CONFIG_MSM_SERVICE_NOTIFIER)
/* service_notif_register_notifier() - Register a notifier for a service
* On success, it returns back a handle. It takes the following arguments:
* service_path: Individual service identifier path for which a client
* registers for notifications.
* instance_id: Instance id specific to a subsystem.
* current_state: Current state of service returned by the registration
* process.
* notifier block: notifier callback for service events.
*/
void *service_notif_register_notifier(const char *service_path, int instance_id,
struct notifier_block *nb, int *curr_state);
/* service_notif_unregister_notifier() - Unregister a notifier for a service.
* service_notif_handle - The notifier handler that was provided by the
* service_notif_register_notifier function when the
* client registered for notifications.
* nb - The notifier block that was previously used during the registration.
*/
int service_notif_unregister_notifier(void *service_notif_handle,
struct notifier_block *nb);
int service_notif_pd_restart(const char *service_path, int instance_id);
#else
static inline void *service_notif_register_notifier(const char *service_path,
int instance_id, struct notifier_block *nb,
int *curr_state)
{
return ERR_PTR(-ENODEV);
}
static inline int service_notif_unregister_notifier(void *service_notif_handle,
struct notifier_block *nb)
{
return -ENODEV;
}
static inline int service_notif_pd_restart(const char *service_path,
int instance_id)
{
return -ENODEV;
}
#endif /* CONFIG_MSM_SERVICE_NOTIFIER */
#endif