| // 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 ddk.protocol.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); | 
 | }; |