e62d949103
Based on 1 normalized pattern(s): this program is free software you can redistribute it and or modify it under the terms of the gnu general public license as published by the free software foundation either version 2 of the license or at your option any later version this program is distributed in the hope that it will be useful but without any warranty without even the implied warranty of merchantability or fitness for a particular purpose see the gnu general public license for more details you should have received a copy of the gnu general public license along with this program if not write to the free software foundation inc 59 temple place suite 330 boston ma 02111 1307 usa the full gnu general public license is included in this distribution in the file called copying extracted by the scancode license scanner the SPDX license identifier GPL-2.0-or-later has been chosen to replace the boilerplate/reference in 7 file(s). Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Allison Randal <allison@lohutok.net> Reviewed-by: Richard Fontana <rfontana@redhat.com> Reviewed-by: Kate Stewart <kstewart@linuxfoundation.org> Reviewed-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc) Cc: linux-spdx@vger.kernel.org Link: https://lkml.kernel.org/r/20190520170857.277062491@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
67 lines
1.9 KiB
C
67 lines
1.9 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* Copyright(c) 2007 - 2009 Intel Corporation. All rights reserved.
|
|
*/
|
|
#ifndef DCA_H
|
|
#define DCA_H
|
|
|
|
#include <linux/pci.h>
|
|
|
|
/* DCA Provider API */
|
|
|
|
/* DCA Notifier Interface */
|
|
void dca_register_notify(struct notifier_block *nb);
|
|
void dca_unregister_notify(struct notifier_block *nb);
|
|
|
|
#define DCA_PROVIDER_ADD 0x0001
|
|
#define DCA_PROVIDER_REMOVE 0x0002
|
|
|
|
struct dca_provider {
|
|
struct list_head node;
|
|
const struct dca_ops *ops;
|
|
struct device *cd;
|
|
int id;
|
|
};
|
|
|
|
struct dca_domain {
|
|
struct list_head node;
|
|
struct list_head dca_providers;
|
|
struct pci_bus *pci_rc;
|
|
};
|
|
|
|
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 *, struct device *,
|
|
int cpu);
|
|
int (*dev_managed) (struct dca_provider *, struct device *);
|
|
};
|
|
|
|
struct dca_provider *alloc_dca_provider(const struct dca_ops *ops,
|
|
int priv_size);
|
|
void free_dca_provider(struct dca_provider *dca);
|
|
int register_dca_provider(struct dca_provider *dca, struct device *dev);
|
|
void unregister_dca_provider(struct dca_provider *dca, struct device *dev);
|
|
|
|
static inline void *dca_priv(struct dca_provider *dca)
|
|
{
|
|
return (void *)dca + sizeof(struct dca_provider);
|
|
}
|
|
|
|
/* 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);
|
|
void __exit dca_sysfs_exit(void);
|
|
int dca_sysfs_add_provider(struct dca_provider *dca, struct device *dev);
|
|
void dca_sysfs_remove_provider(struct dca_provider *dca);
|
|
int dca_sysfs_add_req(struct dca_provider *dca, struct device *dev, int slot);
|
|
void dca_sysfs_remove_req(struct dca_provider *dca, int slot);
|
|
|
|
#endif /* DCA_H */
|