blob: 306877a4c154559b05e7918e1d41c8fa1bc6237c [file] [log] [blame]
// Copyright 2016 The Fuchsia Authors
// Copyright (c) 2016, Google Inc. All rights reserved.
//
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file or at
// https://opensource.org/licenses/MIT
#pragma once
#if WITH_DEV_PCIE
#include <dev/pcie_platform.h>
#include <zircon/compiler.h>
#include <sys/types.h>
__BEGIN_CDECLS
/**
* Initialize the GICv2m management of MSI blocks.
*
* @return A status code indicating the success or failure of the initialization.
*/
status_t arm_gicv2m_msi_init(void);
/**
* Implementation of the PCIe bus driver hooks.
*
* @see platform_alloc_msi_block_t in dev/pcie/pcie_irqs.h
*/
status_t arm_gicv2m_alloc_msi_block(uint requested_irqs,
bool can_target_64bit,
bool is_msix,
pcie_msi_block_t* out_block);
/**
* @see platform_free_msi_block_t in dev/pcie/pcie_irqs.h
*/
void arm_gicv2m_free_msi_block(pcie_msi_block_t* block);
/**
* @see platform_register_msi_handler_t in dev/pcie/pcie_irqs.h
*/
void arm_gicv2m_register_msi_handler(const pcie_msi_block_t* block,
uint msi_id,
int_handler handler,
void* ctx);
/**
* @see platform_mask_unmask_msi_t in dev/pcie/pcie_irqs.h
*/
void arm_gicv2m_mask_unmask_msi(const pcie_msi_block_t* block,
uint msi_id,
bool mask);
__END_CDECLS
#endif // WITH_DEV_PCIE