forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.4 KiB
61 lines
1.4 KiB
// SPDX-License-Identifier: GPL-2.0 |
|
/* |
|
* PCIe host controller driver for Mobiveil PCIe Host controller |
|
* |
|
* Copyright (c) 2018 Mobiveil Inc. |
|
* Copyright 2019 NXP |
|
* |
|
* Author: Subrahmanya Lingappa <[email protected]> |
|
* Hou Zhiqiang <[email protected]> |
|
*/ |
|
|
|
#include <linux/init.h> |
|
#include <linux/kernel.h> |
|
#include <linux/module.h> |
|
#include <linux/of_pci.h> |
|
#include <linux/pci.h> |
|
#include <linux/platform_device.h> |
|
#include <linux/slab.h> |
|
|
|
#include "pcie-mobiveil.h" |
|
|
|
static int mobiveil_pcie_probe(struct platform_device *pdev) |
|
{ |
|
struct mobiveil_pcie *pcie; |
|
struct pci_host_bridge *bridge; |
|
struct device *dev = &pdev->dev; |
|
|
|
/* allocate the PCIe port */ |
|
bridge = devm_pci_alloc_host_bridge(dev, sizeof(*pcie)); |
|
if (!bridge) |
|
return -ENOMEM; |
|
|
|
pcie = pci_host_bridge_priv(bridge); |
|
pcie->rp.bridge = bridge; |
|
|
|
pcie->pdev = pdev; |
|
|
|
return mobiveil_pcie_host_probe(pcie); |
|
} |
|
|
|
static const struct of_device_id mobiveil_pcie_of_match[] = { |
|
{.compatible = "mbvl,gpex40-pcie",}, |
|
{}, |
|
}; |
|
|
|
MODULE_DEVICE_TABLE(of, mobiveil_pcie_of_match); |
|
|
|
static struct platform_driver mobiveil_pcie_driver = { |
|
.probe = mobiveil_pcie_probe, |
|
.driver = { |
|
.name = "mobiveil-pcie", |
|
.of_match_table = mobiveil_pcie_of_match, |
|
.suppress_bind_attrs = true, |
|
}, |
|
}; |
|
|
|
builtin_platform_driver(mobiveil_pcie_driver); |
|
|
|
MODULE_LICENSE("GPL v2"); |
|
MODULE_DESCRIPTION("Mobiveil PCIe host controller driver"); |
|
MODULE_AUTHOR("Subrahmanya Lingappa <[email protected]>");
|
|
|