]>
Commit | Line | Data |
---|---|---|
1 | #ifndef LINUX_HTIRQ_H | |
2 | #define LINUX_HTIRQ_H | |
3 | ||
4 | struct pci_dev; | |
5 | struct irq_data; | |
6 | ||
7 | struct ht_irq_msg { | |
8 | u32 address_lo; /* low 32 bits of the ht irq message */ | |
9 | u32 address_hi; /* high 32 bits of the it irq message */ | |
10 | }; | |
11 | ||
12 | typedef void (ht_irq_update_t)(struct pci_dev *dev, int irq, | |
13 | struct ht_irq_msg *msg); | |
14 | ||
15 | struct ht_irq_cfg { | |
16 | struct pci_dev *dev; | |
17 | /* Update callback used to cope with buggy hardware */ | |
18 | ht_irq_update_t *update; | |
19 | unsigned pos; | |
20 | unsigned idx; | |
21 | struct ht_irq_msg msg; | |
22 | }; | |
23 | ||
24 | /* Helper functions.. */ | |
25 | void fetch_ht_irq_msg(unsigned int irq, struct ht_irq_msg *msg); | |
26 | void write_ht_irq_msg(unsigned int irq, struct ht_irq_msg *msg); | |
27 | void mask_ht_irq(struct irq_data *data); | |
28 | void unmask_ht_irq(struct irq_data *data); | |
29 | ||
30 | /* The arch hook for getting things started */ | |
31 | int arch_setup_ht_irq(int idx, int pos, struct pci_dev *dev, | |
32 | ht_irq_update_t *update); | |
33 | void arch_teardown_ht_irq(unsigned int irq); | |
34 | ||
35 | /* For drivers of buggy hardware */ | |
36 | int __ht_create_irq(struct pci_dev *dev, int idx, ht_irq_update_t *update); | |
37 | ||
38 | #endif /* LINUX_HTIRQ_H */ |