per Intel policy to include file commit date using git cmd below. The policy does not apply to non-Intel (C) notices. git log --follow -C90% --format=%ad --date default <file> | tail -1 and then pull just the 4 digit year from the result. Intel copyrights were not added to files where Intel either had no contribution ot the contribution lacked substance (ie license header updates, formatting changes, etc). Contribution date used "--follow -C95%" to get the most accurate date. Note that several files in this patch didn't end the license/(c) block with a blank comment line so these were added as the vast majority of files do have this last blank line. Simply there for consistency. Signed-off-by: paul luse <paul.e.luse@intel.com> Change-Id: Id5b7ce4f658fe87132f14139ead58d6e285c04d4 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15192 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Community-CI: Mellanox Build Bot
200 lines
4.7 KiB
C
200 lines
4.7 KiB
C
/* SPDX-License-Identifier: BSD-3-Clause
|
|
* Copyright (C) 2010-2015 Intel Corporation.
|
|
* Copyright 2013-2014 6WIND S.A.
|
|
*/
|
|
|
|
#ifndef _RTE_BUS_PCI_H_
|
|
#define _RTE_BUS_PCI_H_
|
|
|
|
/**
|
|
* @file
|
|
* PCI device & driver interface
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <limits.h>
|
|
#include <errno.h>
|
|
#include <stdint.h>
|
|
#include <inttypes.h>
|
|
|
|
#include <rte_debug.h>
|
|
#include <rte_interrupts.h>
|
|
#include <rte_pci.h>
|
|
|
|
/* Forward declarations */
|
|
struct rte_pci_device;
|
|
struct rte_pci_driver;
|
|
struct rte_pci_ioport;
|
|
|
|
struct rte_devargs;
|
|
|
|
/**
|
|
* Map the PCI device resources in user space virtual memory address
|
|
*
|
|
* Note that driver should not call this function when flag
|
|
* RTE_PCI_DRV_NEED_MAPPING is set, as EAL will do that for
|
|
* you when it's on.
|
|
*
|
|
* @param dev
|
|
* A pointer to a rte_pci_device structure describing the device
|
|
* to use
|
|
*
|
|
* @return
|
|
* 0 on success, negative on error and positive if no driver
|
|
* is found for the device.
|
|
*/
|
|
int rte_pci_map_device(struct rte_pci_device *dev);
|
|
|
|
/**
|
|
* Unmap this device
|
|
*
|
|
* @param dev
|
|
* A pointer to a rte_pci_device structure describing the device
|
|
* to use
|
|
*/
|
|
void rte_pci_unmap_device(struct rte_pci_device *dev);
|
|
|
|
/**
|
|
* Dump the content of the PCI bus.
|
|
*
|
|
* @param f
|
|
* A pointer to a file for output
|
|
*/
|
|
void rte_pci_dump(FILE *f);
|
|
|
|
/**
|
|
* Find device's extended PCI capability.
|
|
*
|
|
* @param dev
|
|
* A pointer to rte_pci_device structure.
|
|
*
|
|
* @param cap
|
|
* Extended capability to be found, which can be any from
|
|
* RTE_PCI_EXT_CAP_ID_*, defined in librte_pci.
|
|
*
|
|
* @return
|
|
* > 0: The offset of the next matching extended capability structure
|
|
* within the device's PCI configuration space.
|
|
* < 0: An error in PCI config space read.
|
|
* = 0: Device does not support it.
|
|
*/
|
|
__rte_experimental
|
|
off_t rte_pci_find_ext_capability(struct rte_pci_device *dev, uint32_t cap);
|
|
|
|
/**
|
|
* Enables/Disables Bus Master for device's PCI command register.
|
|
*
|
|
* @param dev
|
|
* A pointer to rte_pci_device structure.
|
|
* @param enable
|
|
* Enable or disable Bus Master.
|
|
*
|
|
* @return
|
|
* 0 on success, -1 on error in PCI config space read/write.
|
|
*/
|
|
__rte_experimental
|
|
int rte_pci_set_bus_master(struct rte_pci_device *dev, bool enable);
|
|
|
|
/**
|
|
* Read PCI config space.
|
|
*
|
|
* @param device
|
|
* A pointer to a rte_pci_device structure describing the device
|
|
* to use
|
|
* @param buf
|
|
* A data buffer where the bytes should be read into
|
|
* @param len
|
|
* The length of the data buffer.
|
|
* @param offset
|
|
* The offset into PCI config space
|
|
* @return
|
|
* Number of bytes read on success, negative on error.
|
|
*/
|
|
int rte_pci_read_config(const struct rte_pci_device *device,
|
|
void *buf, size_t len, off_t offset);
|
|
|
|
/**
|
|
* Write PCI config space.
|
|
*
|
|
* @param device
|
|
* A pointer to a rte_pci_device structure describing the device
|
|
* to use
|
|
* @param buf
|
|
* A data buffer containing the bytes should be written
|
|
* @param len
|
|
* The length of the data buffer.
|
|
* @param offset
|
|
* The offset into PCI config space
|
|
*/
|
|
int rte_pci_write_config(const struct rte_pci_device *device,
|
|
const void *buf, size_t len, off_t offset);
|
|
|
|
/**
|
|
* Initialize a rte_pci_ioport object for a pci device io resource.
|
|
*
|
|
* This object is then used to gain access to those io resources (see below).
|
|
*
|
|
* @param dev
|
|
* A pointer to a rte_pci_device structure describing the device
|
|
* to use.
|
|
* @param bar
|
|
* Index of the io pci resource we want to access.
|
|
* @param p
|
|
* The rte_pci_ioport object to be initialized.
|
|
* @return
|
|
* 0 on success, negative on error.
|
|
*/
|
|
int rte_pci_ioport_map(struct rte_pci_device *dev, int bar,
|
|
struct rte_pci_ioport *p);
|
|
|
|
/**
|
|
* Release any resources used in a rte_pci_ioport object.
|
|
*
|
|
* @param p
|
|
* The rte_pci_ioport object to be uninitialized.
|
|
* @return
|
|
* 0 on success, negative on error.
|
|
*/
|
|
int rte_pci_ioport_unmap(struct rte_pci_ioport *p);
|
|
|
|
/**
|
|
* Read from a io pci resource.
|
|
*
|
|
* @param p
|
|
* The rte_pci_ioport object from which we want to read.
|
|
* @param data
|
|
* A data buffer where the bytes should be read into
|
|
* @param len
|
|
* The length of the data buffer.
|
|
* @param offset
|
|
* The offset into the pci io resource.
|
|
*/
|
|
void rte_pci_ioport_read(struct rte_pci_ioport *p,
|
|
void *data, size_t len, off_t offset);
|
|
|
|
/**
|
|
* Write to a io pci resource.
|
|
*
|
|
* @param p
|
|
* The rte_pci_ioport object to which we want to write.
|
|
* @param data
|
|
* A data buffer where the bytes should be read into
|
|
* @param len
|
|
* The length of the data buffer.
|
|
* @param offset
|
|
* The offset into the pci io resource.
|
|
*/
|
|
void rte_pci_ioport_write(struct rte_pci_ioport *p,
|
|
const void *data, size_t len, off_t offset);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* _RTE_BUS_PCI_H_ */
|