| /* SPDX-License-Identifier: GPL-2.0 */ | |
| /* | |
| * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. | |
| */ | |
| #ifndef __QCOM_PAS_INT_H | |
| #define __QCOM_PAS_INT_H | |
| struct device; | |
| /** | |
| * struct qcom_pas_ops - Qcom Peripheral Authentication Service (PAS) ops | |
| * @drv_name: PAS driver name. | |
| * @dev: PAS device pointer. | |
| * @supported: Peripheral supported callback. | |
| * @init_image: Peripheral image initialization callback. | |
| * @mem_setup: Peripheral memory setup callback. | |
| * @get_rsc_table: Peripheral get resource table callback. | |
| * @prepare_and_auth_reset: Peripheral prepare firmware authentication and | |
| * reset callback. | |
| * @auth_and_reset: Peripheral firmware authentication and reset | |
| * callback. | |
| * @set_remote_state: Peripheral set remote state callback. | |
| * @shutdown: Peripheral shutdown callback. | |
| * @metadata_release: Image metadata release callback. | |
| */ | |
| struct qcom_pas_ops { | |
| const char *drv_name; | |
| struct device *dev; | |
| bool (*supported)(struct device *dev, u32 pas_id); | |
| int (*init_image)(struct device *dev, u32 pas_id, const void *metadata, | |
| size_t size, struct qcom_pas_context *ctx); | |
| int (*mem_setup)(struct device *dev, u32 pas_id, phys_addr_t addr, | |
| phys_addr_t size); | |
| void *(*get_rsc_table)(struct device *dev, struct qcom_pas_context *ctx, | |
| void *input_rt, size_t input_rt_size, | |
| size_t *output_rt_size); | |
| int (*prepare_and_auth_reset)(struct device *dev, | |
| struct qcom_pas_context *ctx); | |
| int (*auth_and_reset)(struct device *dev, u32 pas_id); | |
| int (*set_remote_state)(struct device *dev, u32 state, u32 pas_id); | |
| int (*shutdown)(struct device *dev, u32 pas_id); | |
| void (*metadata_release)(struct device *dev, | |
| struct qcom_pas_context *ctx); | |
| }; | |
| void qcom_pas_ops_register(struct qcom_pas_ops *ops); | |
| void qcom_pas_ops_unregister(void); | |
| #endif /* __QCOM_PAS_INT_H */ |