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.