There are standard module options for ALSA. At least, each
module should have the index
,
id
and enable
options.
If the module supports multiple cards (usually up to
8 = SNDRV_CARDS
cards), they should be
arrays. The default initial values are defined already as
constants for easier programming:
static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;
If the module supports only a single card, they could be single
variables, instead. enable
option is not
always necessary in this case, but it would be better to have a
dummy option for compatibility.
The module parameters must be declared with the standard
module_param()()
,
module_param_array()()
and
MODULE_PARM_DESC()
macros.
The typical coding would be like below:
#define CARD_NAME "My Chip" module_param_array(index, int, NULL, 0444); MODULE_PARM_DESC(index, "Index value for " CARD_NAME " soundcard."); module_param_array(id, charp, NULL, 0444); MODULE_PARM_DESC(id, "ID string for " CARD_NAME " soundcard."); module_param_array(enable, bool, NULL, 0444); MODULE_PARM_DESC(enable, "Enable " CARD_NAME " soundcard.");
Also, don't forget to define the module description, classes, license and devices. Especially, the recent modprobe requires to define the module license as GPL, etc., otherwise the system is shown as “tainted”.
MODULE_DESCRIPTION("My Chip"); MODULE_LICENSE("GPL"); MODULE_SUPPORTED_DEVICE("{{Vendor,My Chip Name}}");