|  | /* | 
|  | * Copyright 2023 Google LLC | 
|  | * Copyright lowRISC contributors | 
|  | * | 
|  | * Licensed under the Apache License, Version 2.0 (the "License"); | 
|  | * you may not use this file except in compliance with the License. | 
|  | * You may obtain a copy of the License at | 
|  | * | 
|  | *      http://www.apache.org/licenses/LICENSE-2.0 | 
|  | * | 
|  | * Unless required by applicable law or agreed to in writing, software | 
|  | * distributed under the License is distributed on an "AS IS" BASIS, | 
|  | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
|  | * See the License for the specific language governing permissions and | 
|  | * limitations under the License. | 
|  | */ | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | #ifndef MATCHA_SW_DEVICE_LIB_DIF_DIF_TLUL_MAILBOX_H_ | 
|  | #define MATCHA_SW_DEVICE_LIB_DIF_DIF_TLUL_MAILBOX_H_ | 
|  |  | 
|  | /** | 
|  | * @file | 
|  | * @brief <a href="/hw/ip/tlul_mailbox/doc/">tlul_mailbox for SC<->SMC communication</a> Device Interface Functions | 
|  | */ | 
|  |  | 
|  | #include <stdint.h> | 
|  |  | 
|  | #include "sw/device/lib/dif/autogen/dif_tlul_mailbox_autogen.h" | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | extern "C" { | 
|  | #endif  // __cplusplus | 
|  |  | 
|  |  | 
|  | dif_result_t dif_tlul_mailbox_send_message(const dif_tlul_mailbox_t *tlul_mailbox, uint32_t *buf); | 
|  | dif_result_t dif_tlul_mailbox_read_message(const dif_tlul_mailbox_t *tlul_mailbox, uint32_t *buf); | 
|  |  | 
|  |  | 
|  | #pragma clang diagnostic push | 
|  | #pragma clang diagnostic ignored "-Wextern-c-compat" | 
|  | /** | 
|  | * Runtime configuration for tlul_mailbox for SC<->SMC communication. | 
|  | * | 
|  | * This struct describes (SOFTWARE) runtime information for one-time | 
|  | * configuration of the hardware. | 
|  | */ | 
|  | typedef struct dif_tlul_mailbox_config { | 
|  | } dif_tlul_mailbox_config_t; | 
|  |  | 
|  |  | 
|  | /** | 
|  | * Parameters for a tlul_mailbox for SC<->SMC communication transaction. | 
|  | */ | 
|  | typedef struct dif_tlul_mailbox_transaction { | 
|  | // Your fields here. | 
|  | } dif_tlul_mailbox_transaction_t; | 
|  |  | 
|  | /** | 
|  | * An output location for a tlul_mailbox for SC<->SMC communication transaction. | 
|  | */ | 
|  | typedef struct dif_tlul_mailbox_output { | 
|  | // Your fields here. | 
|  | } dif_tlul_mailbox_output_t; | 
|  | #pragma clang diagnostic pop | 
|  |  | 
|  | /** | 
|  | * Configures tlul_mailbox for SC<->SMC communication with runtime information. | 
|  | * | 
|  | * This function should only need to be called once for the lifetime of | 
|  | * `handle`. | 
|  | * | 
|  | * @param tlul_mailbox A tlul_mailbox for SC<->SMC communication handle. | 
|  | * @param config Runtime configuration parameters. | 
|  | * @return The result of the operation. | 
|  | */ | 
|  | OT_WARN_UNUSED_RESULT | 
|  | dif_result_t dif_tlul_mailbox_configure( | 
|  | const dif_tlul_mailbox_t *tlul_mailbox); | 
|  |  | 
|  | /** | 
|  | * Begins a tlul_mailbox for SC<->SMC communication transaction. | 
|  | * | 
|  | * Each call to this function should be sequenced with a call to | 
|  | * `dif_tlul_mailbox_end()`. | 
|  | * | 
|  | * @param tlul_mailbox A tlul_mailbox for SC<->SMC communication handle. | 
|  | * @param transaction Transaction configuration parameters. | 
|  | * @return The result of the operation. | 
|  | */ | 
|  | OT_WARN_UNUSED_RESULT | 
|  | dif_result_t dif_tlul_mailbox_start( | 
|  | const dif_tlul_mailbox_t *tlul_mailbox, | 
|  | dif_tlul_mailbox_transaction_t transaction); | 
|  |  | 
|  | /** Ends a tlul_mailbox for SC<->SMC communication transaction, writing the results to the given output. | 
|  | * | 
|  | * @param tlul_mailbox A tlul_mailbox for SC<->SMC communication handle. | 
|  | * @param output Transaction output parameters. | 
|  | * @return The result of the operation. | 
|  | */ | 
|  | OT_WARN_UNUSED_RESULT | 
|  | dif_result_t dif_tlul_mailbox_end( | 
|  | const dif_tlul_mailbox_t *tlul_mailbox, | 
|  | dif_tlul_mailbox_output_t output); | 
|  |  | 
|  | /** | 
|  | * Locks out tlul_mailbox for SC<->SMC communication functionality. | 
|  | * | 
|  | * This function is reentrant: calling it while functionality is locked will | 
|  | * have no effect and return `kDifOk`. | 
|  | * | 
|  | * @param tlul_mailbox A tlul_mailbox for SC<->SMC communication handle. | 
|  | * @return The result of the operation. | 
|  | */ | 
|  | OT_WARN_UNUSED_RESULT | 
|  | dif_result_t dif_tlul_mailbox_lock( | 
|  | const dif_tlul_mailbox_t *tlul_mailbox); | 
|  |  | 
|  | /** | 
|  | * Checks whether this tlul_mailbox for SC<->SMC communication is locked. | 
|  | * | 
|  | * @param tlul_mailbox A tlul_mailbox for SC<->SMC communication handle. | 
|  | * @param[out] is_locked Out-param for the locked state. | 
|  | * @return The result of the operation. | 
|  | */ | 
|  | OT_WARN_UNUSED_RESULT | 
|  | dif_result_t dif_tlul_mailbox_is_locked( | 
|  | const dif_tlul_mailbox_t *tlul_mailbox, | 
|  | bool *is_locked); | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | }  // extern "C" | 
|  | #endif  // __cplusplus | 
|  |  | 
|  | #endif  // MATCHA_SW_DEVICE_LIB_DIF_DIF_TLUL_MAILBOX_H_ |