aboutsummaryrefslogtreecommitdiffstats
path: root/sound/ppc
diff options
context:
space:
mode:
Diffstat (limited to 'sound/ppc')
-rw-r--r--sound/ppc/pmac.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sound/ppc/pmac.c b/sound/ppc/pmac.c
index 5a2bef44a2f5..7a22f0f3784a 100644
--- a/sound/ppc/pmac.c
+++ b/sound/ppc/pmac.c
@@ -775,7 +775,8 @@ static int snd_pmac_free(struct snd_pmac *chip)
775 out_le32(&chip->awacs->control, in_le32(&chip->awacs->control) & 0xfff); 775 out_le32(&chip->awacs->control, in_le32(&chip->awacs->control) & 0xfff);
776 } 776 }
777 777
778 snd_pmac_sound_feature(chip, 0); 778 if (chip->node)
779 snd_pmac_sound_feature(chip, 0);
779 780
780 /* clean up mixer if any */ 781 /* clean up mixer if any */
781 if (chip->mixer_free) 782 if (chip->mixer_free)
@@ -925,6 +926,7 @@ static int __init snd_pmac_detect(struct snd_pmac *chip)
925 } 926 }
926 if (! sound) { 927 if (! sound) {
927 of_node_put(chip->node); 928 of_node_put(chip->node);
929 chip->node = NULL;
928 return -ENODEV; 930 return -ENODEV;
929 } 931 }
930 prop = of_get_property(sound, "sub-frame", NULL); 932 prop = of_get_property(sound, "sub-frame", NULL);
@@ -937,7 +939,9 @@ static int __init snd_pmac_detect(struct snd_pmac *chip)
937 printk(KERN_INFO "snd-powermac no longer handles any " 939 printk(KERN_INFO "snd-powermac no longer handles any "
938 "machines with a layout-id property " 940 "machines with a layout-id property "
939 "in the device-tree, use snd-aoa.\n"); 941 "in the device-tree, use snd-aoa.\n");
942 of_node_put(sound);
940 of_node_put(chip->node); 943 of_node_put(chip->node);
944 chip->node = NULL;
941 return -ENODEV; 945 return -ENODEV;
942 } 946 }
943 /* This should be verified on older screamers */ 947 /* This should be verified on older screamers */
@@ -1297,8 +1301,6 @@ int __init snd_pmac_new(struct snd_card *card, struct snd_pmac **chip_return)
1297 return 0; 1301 return 0;
1298 1302
1299 __error: 1303 __error:
1300 if (chip->pdev)
1301 pci_dev_put(chip->pdev);
1302 snd_pmac_free(chip); 1304 snd_pmac_free(chip);
1303 return err; 1305 return err;
1304} 1306}