Chapter 14. Module Parameters
Prev |  | Next

# Chapter 14. Module Parameters

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}}");

Prev |  | Next
Chapter 13. Power Management | Home | Chapter 15. How To Put Your Driver Into ALSA Tree