From: Takashi Iwai <tiwai@suse.de>
To: manuel.jander@mat.utfsm.cl
Cc: alsa-devel@lists.sourceforge.net
Subject: Re: Multiple drivers. help
Date: Mon, 28 Apr 2003 15:36:22 +0200 [thread overview]
Message-ID: <s5hvfwyyca1.wl@alsa2.suse.de> (raw)
In-Reply-To: <3EA4ABCB.1040603@mat.utfsm.cl>
At Mon, 21 Apr 2003 22:41:15 -0400,
Manuel Jander wrote:
>
> Hi,
>
>
> With the current Aureal Driver we have the following dilema:
> We support 3 soundcards: the AU8810, AU8820 and AU8830.
> They are very similar to each other and share a lot of code (almost
> all). But they use different register address offsets and "sizes" of
> some resources.
> So we have one .c file and one .h file for each card. All that in one
> directory which is pci/au88x0/. How do I make it to compile on or
> another driver ?
>
> The configure script story is allready OK. selscting the different
> drivers triggers different CONFIG_SND_XXXXX environment variables to
> appear in the makefiles,
> but :
> how can that info be transmitted to header file #ifdef's ?
> The corresponding CONFIG_SND_AU8810, CONFIG_SND_AU8820 and
> CONFIG_SND_AU8830 defines of the Makefile's aren't recognized inside
> any header file.
CONFIG_SND_AU8810_MODULE is defined (found in include/config1.h).
but please note that CONFIG_SND_AU8810 may be defined instead of
XXX_MODULE if the driver is built into the kernel. so, you need to
check both in ifdef.
IIUC, you want to have several modules in a single directory
(pci/au88x0). suppose that each module has its lowlevel routines and
common routines. then the modules will be the top entries
snd-au8810.o
snd-au8820.o
snd-au8830.o
and a common module
snd-au88x0-lib.o
an example for this case is found in isa/sb directory.
alternatively, if each driver "includes" the common source file but is
compiled in different condition via ifdef, there will be no common
module.
in au8810.c:
...
#include "au88x0_common.c"
...
in au88x0_common.c:
...
#if defined(CONFIG_SND_AU8810) || defined(CONFIG_SND_AU8810_MODULE)
// au8810 specific
#endif
#if defined(CONFIG_SND_AU8820) || defined(CONFIG_SND_AU8820_MODULE)
// au8810 specific
#endif
however, usually we define a constant for a file instead of checking
CONFIG_XXX, namely,
in au8810.c
#define USE_AU8810
#include "au88x0_common.c"
...
in au88x0_common.c:
...
#ifdef USE_AU8810
...
examples are pci/ens1370.c (ens1371.c) and isa/opti9xx.
ciao,
Takashi
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
prev parent reply other threads:[~2003-04-28 13:36 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-04-22 2:41 Multiple drivers. help Manuel Jander
2003-04-28 13:36 ` Takashi Iwai [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=s5hvfwyyca1.wl@alsa2.suse.de \
--to=tiwai@suse.de \
--cc=alsa-devel@lists.sourceforge.net \
--cc=manuel.jander@mat.utfsm.cl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.