I am writing a PCM driver for the AICA device on the Sega Dreamcast for a
2.6.0-testX kernel.
The driver is far from complete, but I am having various problems when I test
bits of it...
A simple write of a file gives me this...
/dev/snd # cat /test.txt > pcmC0D0p
ALSA sound/sh/aica.c:165: In snd_aica_playback_open
ALSA sound/sh/aica.c:80: Disabling AICA device
ALSA sound/sh/aica.c:66: Enabling AICA device
cat: write: File descriptor in bad state
The three snd_printk messages are just what I would expect but I am not sure
why I get the message about the file descriptor.
Here is the open function...
static int snd_aica_playback_open(snd_pcm_substream_t *subs)
{
snd_printk("In snd_aica_playback_open \n");
snd_aica_pcm_t *aica_chip = snd_pcm_substream_chip(subs);
snd_pcm_runtime_t *runtime = subs->runtime;
runtime->hw = snd_aica_playback_hw;
/*setup the aica spu*/
spu_disable();
spu_memset(0, 0, 0x31000);
spu_memload(0, bin_arm7, sizeof(bin_arm7));
spu_enable();
return 0;
}
The device doesn't support dma (or rather nobody has yet successful reversed
the DMA mechanism) and so I am using the methods that worked when I wrote the
OSS driver for the 2.4 kernels.
snd_aica_playback_hw is...
static snd_pcm_hardware_t snd_aica_playback_hw = {
.info = SNDRV_PCM_INFO_INTERLEAVED|SNDRV_PCM_INFO_NONINTERLEAVED,
.formats = SNDRV_PCM_FORMAT_S8 | SNDRV_PCM_FORMAT_U8 |
SNDRV_PCM_FORMAT_S16_LE | SNDRV_PCM_FORMAT_IMA_ADPCM,
.rates = SNDRV_PCM_RATE_8000_44100,
.rate_min = 8000,
.rate_max = 44100,
.channels_min = 1,
.channels_max = 2,
.buffer_bytes_max = 32768,
.period_bytes_min = 8192,
.period_bytes_max = 32768,
.periods_min = 1,
.periods_max = 4
};
Anybody able to give me a few pointers as to what is going wrong?
Thanks
Adrian
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel