| // 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.intelgpucore; |
| |
| using zx; |
| |
| const uint32 IMAGE_TYPE_X_TILED = 1; |
| const uint32 IMAGE_TYPE_Y_LEGACY_TILED = 2; |
| const uint32 IMAGE_TYPE_YF_TILED = 3; |
| |
| [Layout="ddk-callback"] |
| protocol ZxIntelGpuCoreInterrupt { |
| Callback(uint32 master_interrupt_control, uint64 timestamp) -> (); |
| }; |
| |
| [Layout="ddk-protocol"] |
| protocol ZxIntelGpuCore { |
| /// Reads 16 bits from pci config space; returned in |value_out|. |
| ReadPciConfig16(uint16 addr) -> (zx.status s, uint16 value); |
| |
| /// Maps the given |pci_bar|; address returned in |addr_out|, size in bytes returned in |
| /// |size_out|. |
| MapPciMmio(uint32 pci_bar) -> (zx.status s, vector<voidptr>? buf); |
| |
| /// Unmaps the given |pci_bar|. |
| UnmapPciMmio(uint32 pci_bar) -> (zx.status s); |
| |
| /// Returns a bus transaction initiator. |
| GetPciBti(uint32 index) -> (zx.status s, handle<bti> bti); |
| |
| /// Registers the given |callback| to be invoked with parameter |data| when an interrupt occurs |
| /// matching |interrupt_mask|. |
| RegisterInterruptCallback(ZxIntelGpuCoreInterrupt callback, |
| uint32 interrupt_mask) -> (zx.status s); |
| |
| /// Un-registers a previously registered interrupt callback. |
| UnregisterInterruptCallback() -> (zx.status s); |
| |
| /// Returns the size of the GTT (global translation table) in bytes. |
| GttGetSize() -> (uint64 size); |
| |
| /// Allocates a region of the GTT of the given |page_count|, returning the page-aligned virtual |
| /// address in |addr_out|. |
| GttAlloc(uint64 page_count) -> (zx.status s, uint64 addr); |
| |
| /// Frees the GTT allocation given by |addr|. |
| GttFree(uint64 addr) -> (zx.status s); |
| |
| /// Clears the page table entries for the GTT allocation given by |addr|. |
| GttClear(uint64 addr) -> (zx.status s); |
| |
| /// Inserts page tables entries for the GTT allocation given by |addr| for the vmo represented by |
| /// handle |buffer|, at the given |page_offset| and |page_count|. Takes ownership of |buffer|. |
| GttInsert(uint64 addr, handle<vmo> buffer, uint64 page_offset, |
| uint64 page_count) -> (zx.status s); |
| }; |