blob: 269c9199e565032ec24da92738c21a893880a4e6 [file] [log] [blame]
// Copyright 2023 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;
type MaliProperties = table {
1: supports_protected_mode bool;
/// If true, the driver should use Enter/StartExit/FinishExit protected mode
/// callbacks rather than entering protected mode directly with register
/// writes.
2: use_protected_mode_callbacks bool;
};
/// Low-level protocol between ARM Mali GPU driver and low-level SoC driver.
@discoverable
@transport("Driver")
closed protocol ArmMali {
strict GetProperties() -> (struct {
properties MaliProperties;
});
/// Cause the GPU to enter protected mode. All buses must be idle and the L2
/// cache cleared before executing this command.
strict EnterProtectedMode() -> () error zx.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().
strict StartExitProtectedMode() -> () error zx.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.
strict FinishExitProtectedMode() -> () error zx.Status;
};
/// Low-level protocol exposed by the ARM Mali GPU driver to allow fine-grained management. Used
/// mainly for testing and debugging the driver.
closed protocol MaliUtils {
/// Set whether the GPU is powered on or off. Returns after the transition is complete.
strict SetPowerState(struct {
enabled bool;
}) -> () error zx.Status;
};
service Service {
arm_mali client_end:ArmMali;
};