1 // Copyright 2018 The Fuchsia Authors
2 // Copyright (c) 2012-2015 Travis Geiselbrecht
3 //
4 // Use of this source code is governed by a MIT-style
5 // license that can be found in the LICENSE file or at
6 // https://opensource.org/licenses/MIT
7 
8 #if WITH_KERNEL_PCIE
9 #include <dev/pcie_bus_driver.h>
10 #include <dev/pcie_platform.h>
11 #include <dev/pcie_root.h>
12 #include <inttypes.h>
13 #include <lk/init.h>
14 #include <pdev/driver.h>
15 #include <pdev/interrupt.h>
16 #include <trace.h>
17 #include <zircon/boot/driver-config.h>
18 #include <zircon/types.h>
19 
arm_gicv3_pcie_init(const void * driver_data,uint32_t length)20 static void arm_gicv3_pcie_init(const void* driver_data, uint32_t length) {
21     ASSERT(length >= sizeof(dcfg_arm_gicv3_driver_t));
22     __UNUSED const dcfg_arm_gicv3_driver_t* driver =
23         reinterpret_cast<const dcfg_arm_gicv3_driver_t*>(driver_data);
24 
25     // When GICv3 MSI support is added, initialize here
26 
27     // Initialize the PCI platform, claiming no MSI support
28     static NoMsiPciePlatformInterface platform_pcie_support;
29 
30     zx_status_t res = PcieBusDriver::InitializeDriver(platform_pcie_support);
31     if (res != ZX_OK) {
32         TRACEF("Failed to initialize PCI bus driver (res %d).  "
33                "PCI will be non-functional.\n",
34                res);
35     }
36 }
37 
38 LK_PDEV_INIT(arm_gicv3_pcie_init, KDRV_ARM_GIC_V3, arm_gicv3_pcie_init, LK_INIT_LEVEL_PLATFORM);
39 
40 #endif // if WITH_KERNEL_PCIE
41