patch-2.4.0-test7 linux/drivers/sound/emu10k1/recmgr.c
Next file: linux/drivers/sound/emu10k1/recmgr.h
Previous file: linux/drivers/sound/emu10k1/osutils.c
Back to the patch index
Back to the overall index
- Lines: 160
- Date:
Mon Aug 14 08:32:48 2000
- Orig file:
v2.4.0-test6/linux/drivers/sound/emu10k1/recmgr.c
- Orig date:
Wed Apr 26 16:34:08 2000
diff -u --recursive --new-file v2.4.0-test6/linux/drivers/sound/emu10k1/recmgr.c linux/drivers/sound/emu10k1/recmgr.c
@@ -1,4 +1,3 @@
-
/*
**********************************************************************
* recmgr.c -- Recording manager for emu10k1 driver
@@ -30,110 +29,110 @@
**********************************************************************
*/
-#include "hwaccess.h"
+#include "8010.h"
#include "recmgr.h"
-void emu10k1_start_record(struct record *rec_ptr)
+void emu10k1_start_record(struct emu10k1_card *card, struct wavein_buffer *buffer)
{
- struct emu10k1_card *hw_ptr = rec_ptr->card;
-
DPF(2, "emu10k1_start_record()\n");
- DPD(2, "bus addx: %lx\n", rec_ptr->busaddx);
- sblive_writeptr(hw_ptr, rec_ptr->bufaddrreg, 0, rec_ptr->busaddx);
- sblive_writeptr(hw_ptr, rec_ptr->bufsizereg, 0, rec_ptr->bufsize);
+ sblive_writeptr(card, buffer->sizereg, 0, buffer->sizeregval);
- if (rec_ptr->adcctl)
- sblive_writeptr(hw_ptr, ADCCR, 0, rec_ptr->adcctl);
+ if (buffer->adcctl)
+ sblive_writeptr(card, ADCCR, 0, buffer->adcctl);
return;
}
-void emu10k1_stop_record(struct record *rec_ptr)
+void emu10k1_stop_record(struct emu10k1_card *card, struct wavein_buffer *buffer)
{
- struct emu10k1_card *hw_ptr = rec_ptr->card;
-
DPF(2, "emu10k1_stop_record()\n");
/* Disable record transfer */
- if (rec_ptr->adcctl)
- sblive_writeptr(hw_ptr, ADCCR, 0, 0);
+ if (buffer->adcctl)
+ sblive_writeptr(card, ADCCR, 0, 0);
- sblive_writeptr(hw_ptr, rec_ptr->bufsizereg, 0, ADCBS_BUFSIZE_NONE);
+ sblive_writeptr(card, buffer->sizereg, 0, ADCBS_BUFSIZE_NONE);
return;
}
-void emu10k1_set_record_src(struct record *rec_ptr, u8 recsrc)
+void emu10k1_set_record_src(struct emu10k1_card *card, struct wiinst *wiinst)
{
+ struct wavein_buffer *buffer = &wiinst->buffer;
+
DPF(2, "emu10k1_set_record_src()\n");
- switch (recsrc) {
+ switch (wiinst->recsrc) {
case WAVERECORD_AC97:
DPF(2, "recording source: AC97\n");
- rec_ptr->bufsizereg = ADCBS;
- rec_ptr->bufaddrreg = ADCBA;
- rec_ptr->bufidxreg = ADCIDX_IDX;
+ buffer->sizereg = ADCBS;
+ buffer->addrreg = ADCBA;
+ buffer->idxreg = ADCIDX_IDX;
- switch (rec_ptr->samplingrate) {
+ switch (wiinst->format.samplingrate) {
case 0xBB80:
- rec_ptr->adcctl = ADCCR_SAMPLERATE_48;
+ buffer->adcctl = ADCCR_SAMPLERATE_48;
break;
case 0xAC44:
- rec_ptr->adcctl = ADCCR_SAMPLERATE_44;
+ buffer->adcctl = ADCCR_SAMPLERATE_44;
break;
case 0x7D00:
- rec_ptr->adcctl = ADCCR_SAMPLERATE_32;
+ buffer->adcctl = ADCCR_SAMPLERATE_32;
break;
case 0x5DC0:
- rec_ptr->adcctl = ADCCR_SAMPLERATE_24;
+ buffer->adcctl = ADCCR_SAMPLERATE_24;
break;
case 0x5622:
- rec_ptr->adcctl = ADCCR_SAMPLERATE_22;
+ buffer->adcctl = ADCCR_SAMPLERATE_22;
break;
case 0x3E80:
- rec_ptr->adcctl = ADCCR_SAMPLERATE_16;
+ buffer->adcctl = ADCCR_SAMPLERATE_16;
break;
case 0x2B11:
- rec_ptr->adcctl = ADCCR_SAMPLERATE_11;
+ buffer->adcctl = ADCCR_SAMPLERATE_11;
break;
case 0x1F40:
- rec_ptr->adcctl = ADCCR_SAMPLERATE_8;
+ buffer->adcctl = ADCCR_SAMPLERATE_8;
break;
default:
+ BUG();
break;
}
- rec_ptr->adcctl |= ADCCR_LCHANENABLE;
+ buffer->adcctl |= ADCCR_LCHANENABLE;
- if (rec_ptr->is_stereo)
- rec_ptr->adcctl |= ADCCR_RCHANENABLE;
-
- // rec_ptr->fxwc = 0;
+ if (wiinst->format.channels == 2)
+ buffer->adcctl |= ADCCR_RCHANENABLE;
break;
case WAVERECORD_MIC:
DPF(2, "recording source: MIC\n");
- rec_ptr->bufsizereg = MICBS;
- rec_ptr->bufaddrreg = MICBA;
- rec_ptr->bufidxreg = MICIDX_IDX;
- rec_ptr->adcctl = 0;
- // rec_ptr->fxwc = 0;
+ buffer->sizereg = MICBS;
+ buffer->addrreg = MICBA;
+ buffer->idxreg = MICIDX_IDX;
+ buffer->adcctl = 0;
break;
case WAVERECORD_FX:
DPF(2, "recording source: FX\n");
- rec_ptr->bufsizereg = FXBS;
- rec_ptr->bufaddrreg = FXBA;
- rec_ptr->bufidxreg = FXIDX_IDX;
- rec_ptr->adcctl = 0;
- // rec_ptr->fxwc = 0x000ffff;
+ buffer->sizereg = FXBS;
+ buffer->addrreg = FXBA;
+ buffer->idxreg = FXIDX_IDX;
+ buffer->adcctl = 0;
+
+ sblive_writeptr(card, FXWC, 0, wiinst->fxwc);
break;
default:
+ BUG();
break;
}
+
+ DPD(2, "bus addx: %x\n", buffer->dma_handle);
+
+ sblive_writeptr(card, buffer->addrreg, 0, buffer->dma_handle);
return;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)