diff options
author | Maciej Sosnowski <maciej.sosnowski@intel.com> | 2008-07-22 17:30:57 -0700 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2008-07-22 17:30:57 -0700 |
commit | 7f1b358a236ee9c19657a619ac6f2dcabcaa0924 (patch) | |
tree | 04eade38d4f8da94d7051f51875ed500b49b4756 /include/linux/dca.h | |
parent | 16a37acaaf4aaa631ba3f83710ed6cdb1a597520 (diff) | |
download | blackbird-op-linux-7f1b358a236ee9c19657a619ac6f2dcabcaa0924.tar.gz blackbird-op-linux-7f1b358a236ee9c19657a619ac6f2dcabcaa0924.zip |
I/OAT: I/OAT version 3.0 support
This patch adds to ioatdma and dca modules
support for Intel I/OAT DMA engine ver.3 (aka CB3 device).
The main features of I/OAT ver.3 are:
* 8 single channel DMA devices (8 channels total)
* 8 DCA providers, each can accept 2 requesters
* 8-bit TAG values and 32-bit extended APIC IDs
Signed-off-by: Maciej Sosnowski <maciej.sosnowski@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'include/linux/dca.h')
-rw-r--r-- | include/linux/dca.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/include/linux/dca.h b/include/linux/dca.h index af61cd1f37e9..b00a753eda53 100644 --- a/include/linux/dca.h +++ b/include/linux/dca.h @@ -10,6 +10,7 @@ void dca_unregister_notify(struct notifier_block *nb); #define DCA_PROVIDER_REMOVE 0x0002 struct dca_provider { + struct list_head node; struct dca_ops *ops; struct device *cd; int id; @@ -18,7 +19,9 @@ struct dca_provider { struct dca_ops { int (*add_requester) (struct dca_provider *, struct device *); int (*remove_requester) (struct dca_provider *, struct device *); - u8 (*get_tag) (struct dca_provider *, int cpu); + u8 (*get_tag) (struct dca_provider *, struct device *, + int cpu); + int (*dev_managed) (struct dca_provider *, struct device *); }; struct dca_provider *alloc_dca_provider(struct dca_ops *ops, int priv_size); @@ -32,9 +35,11 @@ static inline void *dca_priv(struct dca_provider *dca) } /* Requester API */ +#define DCA_GET_TAG_TWO_ARGS int dca_add_requester(struct device *dev); int dca_remove_requester(struct device *dev); u8 dca_get_tag(int cpu); +u8 dca3_get_tag(struct device *dev, int cpu); /* internal stuff */ int __init dca_sysfs_init(void); |