When everything is ready, finally we can create a new control. To create a control, there are two functions to be called, snd_ctl_new1() and snd_ctl_add().

In the simplest way, you can do like this:

  err = snd_ctl_add(card, snd_ctl_new1(&my_control, chip));
  if (err < 0)
          return err;


where my_control is the struct snd_kcontrol_new object defined above, and chip is the object pointer to be passed to kcontrol->private_data which can be referred to in callbacks.

snd_ctl_new1() allocates a new snd_kcontrol instance (that's why the definition of my_control can be with the __devinitdata prefix), and snd_ctl_add assigns the given control component to the card.