blob: fd56cbad1d513190bbf73d3204c8a1f7f5162b21 [file] [log] [blame]
// Copyright 2021 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.gpu.mali;
using zx;
struct MaliProperties {
bool supports_protected_mode;
/// If true, the driver should use Enter/StartExit/FinishExit protected mode
/// callbacks rather than entering protected mode directly with register
/// writes.
bool use_protected_mode_callbacks;
};
/// Low-level protocol between ARM Mali GPU driver and low-level SoC driver.
[Transport = "Banjo", BanjoLayout = "ddk-protocol"]
protocol ArmMali {
GetProperties() -> (MaliProperties properties);
/// Cause the GPU to enter protected mode. All buses must be idle and the L2
/// cache cleared before executing this command.
EnterProtectedMode() -> (zx.status status);
/// Start the process of exiting protected mode. All buses must be idle and
/// the L2 cache cleared before executing this command. The GPU will not be
/// able to access any memory after this command is complete and will be
/// reset. The driver must wait for the reset to complete then call
/// FinishExitProtectedMode().
StartExitProtectedMode() -> (zx.status status);
/// Allows the GPU to access non-protected memory. Must only be called after
/// StartExitProtectedMode. The RESET_COMPLETED bit in the GPU_IRQ_RAWSTAT
/// register must be set while this is called.
FinishExitProtectedMode() -> (zx.status status);
};