The destructor, remove callback, simply releases the card instance. Then the ALSA middle layer will release all the attached components automatically.
It would be typically like the following:
static void snd_mychip_remove(struct pci_dev *pci) { snd_card_free(pci_get_drvdata(pci)); pci_set_drvdata(pci, NULL); }
The above code assumes that the card pointer is set to the PCI driver data.