| // 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.registers; |
| |
| using zx; |
| |
| protocol Device { |
| /// Reads from the register from the specified MMIO offset in register width equal to 8, 16, 32, and |
| /// 64 bit variants. |
| /// |offset| : Offset from base of MMIO to read from. Offset must be aligned to beginning of register. For |
| /// example, for 32 bits, offset must be divisible by 4, and for 64 bits, offset |
| /// must be divisible by 8. If this is not satisfied, read will fail. |
| /// |mask| : Mask of bits to read. For example, to read the lower 2 bytes of data in a 32 bit |
| /// register, mask should be 0x0000FFFF. |
| /// @Returns: |value| : Value of register at the specified address. |
| ReadRegister8(uint64 offset, uint8 mask) -> (uint8 value) error zx.status; |
| ReadRegister16(uint64 offset, uint16 mask) -> (uint16 value) error zx.status; |
| ReadRegister32(uint64 offset, uint32 mask) -> (uint32 value) error zx.status; |
| ReadRegister64(uint64 offset, uint64 mask) -> (uint64 value) error zx.status; |
| |
| /// Writes to the register at the specified MMIO offset in register width equal to 8, 16, 32, and |
| /// 64 bit variants |
| /// |offset| : Offset from base of MMIO to write to. Offset must be aligned to beginning of register. For |
| /// example, for 32 bits, offset must be divisible by 4, and for 64 bits, offset |
| /// must be divisible by 8. If this is not satisfied, write will fail. |
| /// |mask| : Mask of bits to write. For example, to write to the lower 2 bytes of data in a 32 |
| /// bit register, mask should be 0x0000FFFF. |
| /// |value| : Value of register at the specified address. |
| WriteRegister8(uint64 offset, uint8 mask, uint8 value) -> () error zx.status; |
| WriteRegister16(uint64 offset, uint16 mask, uint16 value) -> () error zx.status; |
| WriteRegister32(uint64 offset, uint32 mask, uint32 value) -> () error zx.status; |
| WriteRegister64(uint64 offset, uint64 mask, uint64 value) -> () error zx.status; |
| }; |