linux/drivers/platform/x86/intel/vsec.c

// SPDX-License-Identifier: GPL-2.0
/*
 * Intel Vendor Specific Extended Capabilities auxiliary bus driver
 *
 * Copyright (c) 2021, Intel Corporation.
 * All Rights Reserved.
 *
 * Author: David E. Box <[email protected]>
 *
 * This driver discovers and creates auxiliary devices for Intel defined PCIe
 * "Vendor Specific" and "Designated Vendor Specific" Extended Capabilities,
 * VSEC and DVSEC respectively. The driver supports features on specific PCIe
 * endpoints that exist primarily to expose them.
 */

#include <linux/auxiliary_bus.h>
#include <linux/bits.h>
#include <linux/cleanup.h>
#include <linux/delay.h>
#include <linux/kernel.h>
#include <linux/idr.h>
#include <linux/module.h>
#include <linux/pci.h>
#include <linux/types.h>

#include "vsec.h"

#define PMT_XA_START
#define PMT_XA_MAX
#define PMT_XA_LIMIT

static DEFINE_IDA(intel_vsec_ida);
static DEFINE_IDA(intel_vsec_sdsi_ida);
static DEFINE_XARRAY_ALLOC(auxdev_array);

static const char *intel_vsec_name(enum intel_vsec_id id)
{}

static bool intel_vsec_supported(u16 id, unsigned long caps)
{}

static void intel_vsec_remove_aux(void *data)
{}

static DEFINE_MUTEX(vsec_ida_lock);

static void intel_vsec_dev_release(struct device *dev)
{}

int intel_vsec_add_aux(struct pci_dev *pdev, struct device *parent,
		       struct intel_vsec_device *intel_vsec_dev,
		       const char *name)
{}
EXPORT_SYMBOL_NS_GPL();

static int intel_vsec_add_dev(struct pci_dev *pdev, struct intel_vsec_header *header,
			      struct intel_vsec_platform_info *info)
{}

static bool intel_vsec_walk_header(struct pci_dev *pdev,
				   struct intel_vsec_platform_info *info)
{}

static bool intel_vsec_walk_dvsec(struct pci_dev *pdev,
				  struct intel_vsec_platform_info *info)
{}

static bool intel_vsec_walk_vsec(struct pci_dev *pdev,
				 struct intel_vsec_platform_info *info)
{}

void intel_vsec_register(struct pci_dev *pdev,
			 struct intel_vsec_platform_info *info)
{}
EXPORT_SYMBOL_NS_GPL();

static int intel_vsec_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id)
{}

/* DG1 info */
static struct intel_vsec_header dg1_header =;

static struct intel_vsec_header *dg1_headers[] =;

static const struct intel_vsec_platform_info dg1_info =;

/* MTL info */
static const struct intel_vsec_platform_info mtl_info =;

/* OOBMSM info */
static const struct intel_vsec_platform_info oobmsm_info =;

/* TGL info */
static const struct intel_vsec_platform_info tgl_info =;

/* LNL info */
static const struct intel_vsec_platform_info lnl_info =;

#define PCI_DEVICE_ID_INTEL_VSEC_ADL
#define PCI_DEVICE_ID_INTEL_VSEC_DG1
#define PCI_DEVICE_ID_INTEL_VSEC_MTL_M
#define PCI_DEVICE_ID_INTEL_VSEC_MTL_S
#define PCI_DEVICE_ID_INTEL_VSEC_OOBMSM
#define PCI_DEVICE_ID_INTEL_VSEC_RPL
#define PCI_DEVICE_ID_INTEL_VSEC_TGL
#define PCI_DEVICE_ID_INTEL_VSEC_LNL_M
static const struct pci_device_id intel_vsec_pci_ids[] =;
MODULE_DEVICE_TABLE(pci, intel_vsec_pci_ids);

static pci_ers_result_t intel_vsec_pci_error_detected(struct pci_dev *pdev,
						      pci_channel_state_t state)
{}

static pci_ers_result_t intel_vsec_pci_slot_reset(struct pci_dev *pdev)
{}

static void intel_vsec_pci_resume(struct pci_dev *pdev)
{}

static const struct pci_error_handlers intel_vsec_pci_err_handlers =;

static struct pci_driver intel_vsec_pci_driver =;
module_pci_driver();

MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_LICENSE();