aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/ctxfi/cthardware.h
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2009-06-05 10:11:07 -0400
committerTakashi Iwai <tiwai@suse.de>2009-06-05 10:44:13 -0400
commitb7bbf876087e0e2c0ba723a8398083c9a9ac1dfd (patch)
tree69a3e70658fc751ffc99eef5a6f047b19f61a4a2 /sound/pci/ctxfi/cthardware.h
parent6bc5874a1ddf98ac0fe6c4eab7d286c11cb1c748 (diff)
ALSA: ctxfi - Use native timer interrupt on emu20k1
emu20k1 has a native timer interrupt based on the audio clock, which is more accurate than the system timer (from the synchronization POV). This patch adds the code to handle this with multiple streams. The system timer is still used on emu20k2, and can be used also for emu20k1 easily by changing USE_SYSTEM_TIMER to 1 in cttimer.c. Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/ctxfi/cthardware.h')
-rw-r--r--sound/pci/ctxfi/cthardware.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/sound/pci/ctxfi/cthardware.h b/sound/pci/ctxfi/cthardware.h
index b0512df8b334..35350cf9d2f2 100644
--- a/sound/pci/ctxfi/cthardware.h
+++ b/sound/pci/ctxfi/cthardware.h
@@ -145,6 +145,12 @@ struct hw {
145 int (*daio_mgr_set_imapaddr)(void *blk, unsigned int addr); 145 int (*daio_mgr_set_imapaddr)(void *blk, unsigned int addr);
146 int (*daio_mgr_commit_write)(struct hw *hw, void *blk); 146 int (*daio_mgr_commit_write)(struct hw *hw, void *blk);
147 147
148 int (*set_timer_irq)(struct hw *hw, int enable);
149 int (*set_timer_tick)(struct hw *hw, unsigned int tick);
150
151 void (*irq_callback)(void *data, unsigned int bit);
152 void *irq_callback_data;
153
148 struct pci_dev *pci; /* the pci kernel structure of this card */ 154 struct pci_dev *pci; /* the pci kernel structure of this card */
149 int irq; 155 int irq;
150 unsigned long io_base; 156 unsigned long io_base;
@@ -157,4 +163,17 @@ int destroy_hw_obj(struct hw *hw);
157unsigned int get_field(unsigned int data, unsigned int field); 163unsigned int get_field(unsigned int data, unsigned int field);
158void set_field(unsigned int *data, unsigned int field, unsigned int value); 164void set_field(unsigned int *data, unsigned int field, unsigned int value);
159 165
166/* IRQ bits */
167#define PLL_INT (1 << 10) /* PLL input-clock out-of-range */
168#define FI_INT (1 << 9) /* forced interrupt */
169#define IT_INT (1 << 8) /* timer interrupt */
170#define PCI_INT (1 << 7) /* PCI bus error pending */
171#define URT_INT (1 << 6) /* UART Tx/Rx */
172#define GPI_INT (1 << 5) /* GPI pin */
173#define MIX_INT (1 << 4) /* mixer parameter segment FIFO channels */
174#define DAI_INT (1 << 3) /* DAI (SR-tracker or SPDIF-receiver) */
175#define TP_INT (1 << 2) /* transport priority queue */
176#define DSP_INT (1 << 1) /* DSP */
177#define SRC_INT (1 << 0) /* SRC channels */
178
160#endif /* CTHARDWARE_H */ 179#endif /* CTHARDWARE_H */