static int pcsp_remove(struct platform_device *dev) { struct snd_pcsp *chip = platform_get_drvdata(dev); pcspkr_input_remove(chip->input_dev); alsa_card_pcsp_exit(chip); return 0; }
static int __devinit pcsp_probe(struct platform_device *dev) { int err; err = pcspkr_input_init(&pcsp_chip.input_dev, &dev->dev); if (err < 0) return err; err = alsa_card_pcsp_init(&dev->dev); if (err < 0) { pcspkr_input_remove(pcsp_chip.input_dev); return err; } platform_set_drvdata(dev, &pcsp_chip); return 0; }
static void __exit alsa_card_pcsp_exit(void) { pcspkr_input_remove(pcsp_chip.input_dev); snd_card_free(pcsp_chip.card); }