// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

library fuchsia.hardware.rpmb;

using zx;
using fuchsia.mem;

// RPMB: Replay Protected Memory Block
// RPMB is a secure area included in certain types of storage devices. For more information, see:
// https://optee.readthedocs.io/en/latest/architecture/secure_storage.html#rpmb-secure-storage

/// The RPMB frame size in bytes.
const uint32 FRAME_SIZE = 512;

struct EmmcDeviceInfo {
    /// The device's CID register.
    array<uint8>:16 cid;
    /// RPMB_SIZE_MULT from the device's EXT_CSD register.
    uint8 rpmb_size;
    /// REL_WR_SEC_C from the device's EXT_CSD register.
    uint8 reliable_write_sector_count;
};

flexible union DeviceInfo {
    1: EmmcDeviceInfo emmc_info;
};

/// Represents an RPMB operation, which consists of sending one or more frames then receiving zero
/// or more frames. The tx_frames and rx_frames VMOs will be transferred to the protocol
/// implementation, so clients should keep duplicates of them if access is needed after the call to
/// Request().
/// The request will be aborted as soon as an error is encountered, meaning the read operation will
/// not be performed if the write operation failed. Invalid parameters passed through tx_frames or
/// rx_frames will cause an error to be returned immediately, without either operation having been
/// performed.
resource struct Request {
    /// May not be null as all operations involve sending at least one frame. tx_frames.size must be
    /// a multiple of and at least FRAME_SIZE.
    fuchsia.mem.Range tx_frames;

    /// May be null if no frames need to be received. rx_frames.size must be a multiple of
    /// FRAME_SIZE if rx_frames is not null.
    fuchsia.mem.Range? rx_frames;
};

protocol Rpmb {
    GetDeviceInfo() -> (DeviceInfo info);
    Request(Request request) -> () error zx.status;
};
