18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * Copyright (C) 2019 IBM Corporation
48c2ecf20Sopenharmony_ci * Author: Nayna Jain
58c2ecf20Sopenharmony_ci *
68c2ecf20Sopenharmony_ci * PowerPC secure variable operations.
78c2ecf20Sopenharmony_ci */
88c2ecf20Sopenharmony_ci#ifndef SECVAR_OPS_H
98c2ecf20Sopenharmony_ci#define SECVAR_OPS_H
108c2ecf20Sopenharmony_ci
118c2ecf20Sopenharmony_ci#include <linux/types.h>
128c2ecf20Sopenharmony_ci#include <linux/errno.h>
138c2ecf20Sopenharmony_ci
148c2ecf20Sopenharmony_ciextern const struct secvar_operations *secvar_ops;
158c2ecf20Sopenharmony_ci
168c2ecf20Sopenharmony_cistruct secvar_operations {
178c2ecf20Sopenharmony_ci	int (*get)(const char *key, uint64_t key_len, u8 *data,
188c2ecf20Sopenharmony_ci		   uint64_t *data_size);
198c2ecf20Sopenharmony_ci	int (*get_next)(const char *key, uint64_t *key_len,
208c2ecf20Sopenharmony_ci			uint64_t keybufsize);
218c2ecf20Sopenharmony_ci	int (*set)(const char *key, uint64_t key_len, u8 *data,
228c2ecf20Sopenharmony_ci		   uint64_t data_size);
238c2ecf20Sopenharmony_ci};
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ci#ifdef CONFIG_PPC_SECURE_BOOT
268c2ecf20Sopenharmony_ci
278c2ecf20Sopenharmony_ciextern void set_secvar_ops(const struct secvar_operations *ops);
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ci#else
308c2ecf20Sopenharmony_ci
318c2ecf20Sopenharmony_cistatic inline void set_secvar_ops(const struct secvar_operations *ops) { }
328c2ecf20Sopenharmony_ci
338c2ecf20Sopenharmony_ci#endif
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ci#endif
36