On Thu, 15 Jan 2009 11:18:07 +0000 Mark Brown broonie@sirena.org.uk wrote:
") Fcc: +sent-mail
On Wed, Jan 14, 2009 at 03:54:06PM -0500, Hugo Villeneuve wrote:
Mark Brown broonie@sirena.org.uk wrote:
Speaking as the person who I expect most frequently tries that I wouldn't worry about it - it's easy enough to see what's happened and there will still be errors at link time even with the extern.
No, there won?t be errors when compiling as a module. Only when actually loading the module.
Check again - the kernel will detect those errors at build time. The module itself will compile but once all the modules are built Kbuild verifies that all the symbols they use can be found.
Hi Mark, I just checked again and at first I tought you were wrong :)
Just to be sure, I cloned a fresh copy of linux-davinci-git kernel. This tree doesn´t have the SFFSDR FPGA module with the sffsdr_fpga_set_codec_fs() function.
If I compile this tree as is for the SFFSDR board, I sure have the error for the missing header file <asm/plat-sffsdr/sffsdr-fpga.h>, containing the declaration for the function sffsdr_fpga_set_codec_fs. But if I remove the #include for that header file and add the following extern declaration:
extern int sffsdr_fpga_set_codec_fs(int fs);
I can successfully compile the whole kernel and all the selected modules without any errors.
But in fact you were right, because I just found out that someone has added the following check to sffsdr_init() in davinci-sffsdr.c:
if (!machine_is_sffsdr()) return -EINVAL;
For a reason that I don´t yet understand, that function doesn´t seem to be defined (always return 0) and so gcc has correctly optimised my module by removing the sffsdr_hw_params function, and thus also removing the call to my sffsdr_fpga_set_codec_fs function, and this is why Kbuild never complained!
That's good news - previously it would fail to build at all. What sort of breakage are you seeing (and what was the version you used when you developed the driver)?
I developped the driver with version 2.6.27-rc6-davinci1-05187-g91c2c53.
The breakage I see when I run the aplay utility is this:
aplay: pcm_write:1394: write error: Input/output error
davinci-git version is the latest as of january 14 (2.6.28-davinci1-06546-gcfb152b)
Hrm, OK. That's not terribly informative - does the error get reported after about 10 seconds by any chance? I suspect that DMA just isn't happening.
Sorry about the non-verbosity :) Yes it happens almost exactly after 10 seconds. I´m not an expert with audio nor DMA, but can you indicate me where I should be looking for signs of trouble (which source files for example)?
Thank-you, Hugo.
--------------- Hugo Villeneuve www.hugovil.com ---------------