mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2025-01-09 15:24:32 +08:00
8073c1ac82
Architectures like x86 have their MSI messages in various bits of the data, address_lo and address_hi field. Composing or decomposing these messages with bitmasks and shifts is possible, but unreadable gunk. Allow architectures to provide an architecture specific representation for each member of msi_msg. Provide empty defaults for each and stick them into an union. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: David Woodhouse <dwmw@amazon.co.uk> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Link: https://lore.kernel.org/r/20201024213535.443185-12-dwmw2@infradead.org
38 lines
920 B
C
38 lines
920 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef __ASM_GENERIC_MSI_H
|
|
#define __ASM_GENERIC_MSI_H
|
|
|
|
#include <linux/types.h>
|
|
|
|
#ifdef CONFIG_GENERIC_MSI_IRQ_DOMAIN
|
|
|
|
#ifndef NUM_MSI_ALLOC_SCRATCHPAD_REGS
|
|
# define NUM_MSI_ALLOC_SCRATCHPAD_REGS 2
|
|
#endif
|
|
|
|
struct msi_desc;
|
|
|
|
/**
|
|
* struct msi_alloc_info - Default structure for MSI interrupt allocation.
|
|
* @desc: Pointer to msi descriptor
|
|
* @hwirq: Associated hw interrupt number in the domain
|
|
* @scratchpad: Storage for implementation specific scratch data
|
|
*
|
|
* Architectures can provide their own implementation by not including
|
|
* asm-generic/msi.h into their arch specific header file.
|
|
*/
|
|
typedef struct msi_alloc_info {
|
|
struct msi_desc *desc;
|
|
irq_hw_number_t hwirq;
|
|
union {
|
|
unsigned long ul;
|
|
void *ptr;
|
|
} scratchpad[NUM_MSI_ALLOC_SCRATCHPAD_REGS];
|
|
} msi_alloc_info_t;
|
|
|
|
#define GENERIC_MSI_DOMAIN_OPS 1
|
|
|
|
#endif /* CONFIG_GENERIC_MSI_IRQ_DOMAIN */
|
|
|
|
#endif
|