/* 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 */