blob: 5ab27f1789cd7bd877ac09e6b1a176dbcb3592ef [file] [log] [blame]
// Copyright 2018 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.platform.device;
using ddk.driver;
using zx;
struct PdevDeviceInfo {
uint32 vid;
uint32 pid;
uint32 did;
uint32 mmio_count;
uint32 irq_count;
uint32 bti_count;
uint32 smc_count;
uint32 metadata_count;
array<uint32>:8 reserved;
string:32 name;
};
struct PdevBoardInfo {
/// Vendor ID for the board.
uint32 vid;
/// Product ID for the board.
uint32 pid;
/// Board name from the boot image platform ID record,
/// (or from the BIOS on x86 platforms).
string:32 board_name;
/// Board specific revision number.
uint32 board_revision;
};
struct PdevMmio {
/// Offset from beginning of VMO where the mmio region begins.
zx.off offset;
/// Size of mmio region.
usize size;
handle<vmo> vmo;
};
[Layout = "ddk-protocol"]
protocol PDev {
GetMmio(uint32 index) -> (zx.status s, PdevMmio mmio);
GetInterrupt(uint32 index, uint32 flags) -> (zx.status s, handle<interrupt> irq);
GetBti(uint32 index) -> (zx.status s, handle<bti> bti);
GetSmc(uint32 index) -> (zx.status s, handle<resource> smc);
GetDeviceInfo() -> (zx.status s, PdevDeviceInfo info);
GetBoardInfo() -> (zx.status s, PdevBoardInfo info);
};