| // Copyright 2018 The Fuchsia Authors |
| // Copyright (c) 2012-2015 Travis Geiselbrecht |
| // |
| // 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 |
| |
| #include "arm_gicv3_pcie.h" |
| |
| #if WITH_KERNEL_PCIE |
| #include <inttypes.h> |
| #include <lib/lazy_init/lazy_init.h> |
| #include <trace.h> |
| #include <zircon/boot/driver-config.h> |
| #include <zircon/types.h> |
| |
| #include <dev/pcie_bus_driver.h> |
| #include <dev/pcie_platform.h> |
| #include <dev/pcie_root.h> |
| #include <lk/init.h> |
| #include <pdev/interrupt.h> |
| |
| static lazy_init::LazyInit<NoMsiPciePlatformInterface, lazy_init::CheckType::None, |
| lazy_init::Destructor::Disabled> |
| g_platform_pcie_support; |
| |
| void arm_gicv3_pcie_init() { |
| // When GICv3 MSI support is added, add a handler to register the deny |
| // regions. Add all MMIO regions which contain GIC registers to the |
| // system-wide deny list using root_resource_filter_add_deny_region. |
| |
| // Initialize the PCI platform, claiming no MSI support |
| g_platform_pcie_support.Initialize(); |
| |
| zx_status_t res = PcieBusDriver::InitializeDriver(g_platform_pcie_support.Get()); |
| if (res != ZX_OK) { |
| TRACEF( |
| "Failed to initialize PCI bus driver (res %d). " |
| "PCI will be non-functional.\n", |
| res); |
| } |
| } |
| |
| #else |
| |
| void arm_gicv3_pcie_init() {} |
| |
| #endif // if WITH_KERNEL_PCIE |