Files
linux/include/linux/msi.h
黄涛 35b9b535e7 Revert "Merge remote branch 'linux-2.6.32.y/master' into develop"
This reverts commit 6e2688ca84, reversing
changes made to 4b7c9de4de.

Conflicts:

	drivers/gpio/wm831x-gpio.c
	drivers/i2c/busses/Kconfig
	drivers/net/dm9000.c
	drivers/net/wireless/airo.c
	drivers/net/wireless/ath/ar9170/hw.h
	drivers/net/wireless/ath/ar9170/main.c
	drivers/net/wireless/ath/ar9170/usb.c
	drivers/net/wireless/ath/ath5k/ath5k.h
	drivers/net/wireless/ath/ath5k/attach.c
	drivers/net/wireless/ath/ath5k/base.c
	drivers/net/wireless/ath/ath5k/qcu.c
	drivers/net/wireless/ath/ath5k/reset.c
	drivers/net/wireless/ath/ath9k/ath9k.h
	drivers/net/wireless/ath/ath9k/beacon.c
	drivers/net/wireless/ath/ath9k/eeprom.h
	drivers/net/wireless/ath/ath9k/eeprom_def.c
	drivers/net/wireless/ath/ath9k/hw.c
	drivers/net/wireless/ath/ath9k/hw.h
	drivers/net/wireless/ath/ath9k/initvals.h
	drivers/net/wireless/ath/ath9k/main.c
	drivers/net/wireless/ath/ath9k/pci.c
	drivers/net/wireless/ath/ath9k/phy.h
	drivers/net/wireless/ath/ath9k/rc.c
	drivers/net/wireless/ath/ath9k/xmit.c
	drivers/net/wireless/ath/regd.h
	drivers/net/wireless/b43/Kconfig
	drivers/net/wireless/b43/Makefile
	drivers/net/wireless/b43/b43.h
	drivers/net/wireless/b43/dma.c
	drivers/net/wireless/b43/main.c
	drivers/net/wireless/b43/pio.c
	drivers/net/wireless/b43/pio.h
	drivers/net/wireless/b43/xmit.c
	drivers/net/wireless/b43legacy/main.c
	drivers/net/wireless/hostap/hostap_cs.c
	drivers/net/wireless/hostap/hostap_hw.c
	drivers/net/wireless/hostap/hostap_pci.c
	drivers/net/wireless/hostap/hostap_wlan.h
	drivers/net/wireless/iwlwifi/iwl-3945.c
	drivers/net/wireless/iwlwifi/iwl-4965.c
	drivers/net/wireless/iwlwifi/iwl-5000.c
	drivers/net/wireless/iwlwifi/iwl-agn-rs.c
	drivers/net/wireless/iwlwifi/iwl-agn.c
	drivers/net/wireless/iwlwifi/iwl-core.c
	drivers/net/wireless/iwlwifi/iwl-core.h
	drivers/net/wireless/iwlwifi/iwl-dev.h
	drivers/net/wireless/iwlwifi/iwl-helpers.h
	drivers/net/wireless/iwlwifi/iwl-rx.c
	drivers/net/wireless/iwlwifi/iwl-scan.c
	drivers/net/wireless/iwlwifi/iwl-tx.c
	drivers/net/wireless/iwlwifi/iwl3945-base.c
	drivers/net/wireless/libertas/if_sdio1.c
	drivers/net/wireless/p54/eeprom.c
	drivers/net/wireless/p54/p54pci.c
	drivers/net/wireless/p54/p54usb.c
	drivers/net/wireless/p54/txrx.c
	drivers/net/wireless/rndis_wlan.c
	drivers/net/wireless/rtl818x/rtl8180_dev.c
	drivers/net/wireless/wl12xx/wl1251_debugfs.c
	drivers/net/wireless/wl12xx/wl1251_sdio.c
	drivers/usb/serial/option.c
	net/bluetooth/rfcomm/core.c
2011-07-30 16:24:52 +08:00

60 lines
1.8 KiB
C

#ifndef LINUX_MSI_H
#define LINUX_MSI_H
#include <linux/list.h>
struct msi_msg {
u32 address_lo; /* low 32 bits of msi message address */
u32 address_hi; /* high 32 bits of msi message address */
u32 data; /* 16 bits of msi message data */
};
/* Helper functions */
struct irq_data;
struct msi_desc;
extern void mask_msi_irq(struct irq_data *data);
extern void unmask_msi_irq(struct irq_data *data);
extern void __read_msi_msg(struct msi_desc *entry, struct msi_msg *msg);
extern void __get_cached_msi_msg(struct msi_desc *entry, struct msi_msg *msg);
extern void __write_msi_msg(struct msi_desc *entry, struct msi_msg *msg);
extern void read_msi_msg(unsigned int irq, struct msi_msg *msg);
extern void get_cached_msi_msg(unsigned int irq, struct msi_msg *msg);
extern void write_msi_msg(unsigned int irq, struct msi_msg *msg);
struct msi_desc {
struct {
__u8 is_msix : 1;
__u8 multiple: 3; /* log2 number of messages */
__u8 maskbit : 1; /* mask-pending bit supported ? */
__u8 is_64 : 1; /* Address size: 0=32bit 1=64bit */
__u8 pos; /* Location of the msi capability */
__u16 entry_nr; /* specific enabled entry */
unsigned default_irq; /* default pre-assigned irq */
} msi_attrib;
u32 masked; /* mask bits */
unsigned int irq;
struct list_head list;
union {
void __iomem *mask_base;
u8 mask_pos;
};
struct pci_dev *dev;
/* Last set MSI message */
struct msi_msg msg;
};
/*
* The arch hook for setup up msi irqs
*/
int arch_setup_msi_irq(struct pci_dev *dev, struct msi_desc *desc);
void arch_teardown_msi_irq(unsigned int irq);
extern int arch_setup_msi_irqs(struct pci_dev *dev, int nvec, int type);
extern void arch_teardown_msi_irqs(struct pci_dev *dev);
extern int arch_msi_check_device(struct pci_dev* dev, int nvec, int type);
#endif /* LINUX_MSI_H */