[alsa-devel] Writing an AT91SAM9260-EK Dumb Codec Driver
Paul Kavan
pkavan at gmail.com
Fri Jun 15 20:46:59 CEST 2007
Hello all:
I am working on a driver for a dumb codec to work with the SSC as a PCM on
the AT91SAM9260. I have, with the gracious help of Frank Mandarino, have the
glue code written without too many problems. However, I need some guidance
on getting a few things configured correctly for my codec and then getting
it to compile and load correctly.
For configuration, I am using the Winbond W6811. For this, I am going to use
a 256kHz BCLK and an 8kHz frame. Each sample consists of 8-bit u-law PCM,
MSB first. When I execute a read from the codec to the processor, I need to
make the reads on the falling edge of the BCLK at each sync pulse. When
executing a write from the processor to the codec I need to write on the
rising edge at each sync pulse. I think I the timing correct in my driver
with:
cmr_div = 187; /* PCM_CLK = ~96MHz/(2*187) = 256kHz */
period = 15; /* PCM_SYNC = PCM_CLK/(2*(15+1)) = 8000Hz */
However, I am not sure how to get the following correct for my needs:
#define W6811_FORMATS (SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_S16_LE)
Now to making the driver once the code is done. I am relatively new to
writing linux drivers. In the 6 or so that I have written, I usually
cross-compile them as modules and then insmod them. I have tried that here
and am getting a strange warning that I am unsure of. I have a pretty
simple Makefile and when I execute it, I get:
make ARCH=arm CROSS_COMPILE=arm-linux-
make -C ~/Linux_Builds/linux-2.6.21.5M=/home/grhuser/Door_Access_System/Remotes/Driver/sound
modules
make[1]: Entering directory `/home/grhuser/Linux_Builds/linux- 2.6.21.5'
CC [M]
/home/grhuser/Door_Access_System/Remotes/Driver/sound/grh_ek_w6811.o
Building modules, stage 2.
MODPOST 1 modules
WARNING: "at91_ssc_dai"
[/home/grhuser/Door_Access_System/Remotes/Driver/sound/grh_ek_w6811.ko]
undefined!
CC
/home/grhuser/Door_Access_System/Remotes/Driver/sound/grh_ek_w6811.mod.o
LD [M]
/home/grhuser/Door_Access_System/Remotes/Driver/sound/grh_ek_w6811.ko
make[1]: Leaving directory `/home/grhuser/Linux_Builds/linux- 2.6.21.5'
As you can see, I am using linux-2.6.21.5 I have ALSA checked and AT91-SoC
checked in my .config file. For this attempt to build the driver, I have a
separate folder than contains: at91-ssc.h and at91-pcm.h. If there is a more
correct way to do this and be able to debug it, please let me know.
I have attached copies of my driver. I would appreciate any and all feedback
and assistance on getting this running.
More information about the Alsa-devel
mailing list