diff options
author | Takashi Iwai <tiwai@suse.de> | 2005-09-05 11:17:58 -0400 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2005-09-12 04:41:56 -0400 |
commit | 16dab54b8cbac39bd3f639db5d7d0fd8300a6cb0 (patch) | |
tree | a7e9f4561bb4df38222c2ef5a48d111f52cc5dd3 /sound | |
parent | ecbcfe36fa882e9f8f2be63ac0c42978336bf997 (diff) |
[ALSA] Add snd_card_set_generic_dev() call
ARM,SA11xx UDA1341 driver,Generic drivers,MPU401 UART,MIPS
MIPS AU1x00 driver,PPC,PPC PowerMac driver,SPARC,SPARC AMD7930 driver
SPARC cs4231 driver,SPARC DBRI driver
- Added snd_card_set_generic_dev() call.
- Added SND_GENERIC_DRIVER to Kconfig.
- Clean up the error path in probe if necessary.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/arm/Kconfig | 1 | ||||
-rw-r--r-- | sound/arm/sa11xx-uda1341.c | 5 | ||||
-rw-r--r-- | sound/drivers/Kconfig | 5 | ||||
-rw-r--r-- | sound/drivers/dummy.c | 4 | ||||
-rw-r--r-- | sound/drivers/mpu401/mpu401.c | 26 | ||||
-rw-r--r-- | sound/drivers/mtpav.c | 3 | ||||
-rw-r--r-- | sound/drivers/serial-u16550.c | 26 | ||||
-rw-r--r-- | sound/drivers/virmidi.c | 4 | ||||
-rw-r--r-- | sound/mips/Kconfig | 1 | ||||
-rw-r--r-- | sound/mips/au1x00.c | 5 | ||||
-rw-r--r-- | sound/ppc/Kconfig | 1 | ||||
-rw-r--r-- | sound/ppc/powermac.c | 3 | ||||
-rw-r--r-- | sound/sparc/Kconfig | 3 | ||||
-rw-r--r-- | sound/sparc/amd7930.c | 3 | ||||
-rw-r--r-- | sound/sparc/cs4231.c | 3 | ||||
-rw-r--r-- | sound/sparc/dbri.c | 29 |
16 files changed, 84 insertions, 38 deletions
diff --git a/sound/arm/Kconfig b/sound/arm/Kconfig index 2e4a5e0d16db..0864a7ce414d 100644 --- a/sound/arm/Kconfig +++ b/sound/arm/Kconfig | |||
@@ -7,6 +7,7 @@ config SND_SA11XX_UDA1341 | |||
7 | tristate "SA11xx UDA1341TS driver (iPaq H3600)" | 7 | tristate "SA11xx UDA1341TS driver (iPaq H3600)" |
8 | depends on ARCH_SA1100 && SND && L3 | 8 | depends on ARCH_SA1100 && SND && L3 |
9 | select SND_PCM | 9 | select SND_PCM |
10 | select SND_GENERIC_DRIVER | ||
10 | help | 11 | help |
11 | Say Y here if you have a Compaq iPaq H3x00 handheld computer | 12 | Say Y here if you have a Compaq iPaq H3x00 handheld computer |
12 | and want to use its Philips UDA 1341 audio chip. | 13 | and want to use its Philips UDA 1341 audio chip. |
diff --git a/sound/arm/sa11xx-uda1341.c b/sound/arm/sa11xx-uda1341.c index 174bc032d1ad..813959f185e6 100644 --- a/sound/arm/sa11xx-uda1341.c +++ b/sound/arm/sa11xx-uda1341.c | |||
@@ -21,7 +21,7 @@ | |||
21 | * merged HAL layer (patches from Brian) | 21 | * merged HAL layer (patches from Brian) |
22 | */ | 22 | */ |
23 | 23 | ||
24 | /* $Id: sa11xx-uda1341.c,v 1.21 2005/01/28 19:34:04 tiwai Exp $ */ | 24 | /* $Id: sa11xx-uda1341.c,v 1.22 2005/09/05 16:17:58 tiwai Exp $ */ |
25 | 25 | ||
26 | /*************************************************************************************************** | 26 | /*************************************************************************************************** |
27 | * | 27 | * |
@@ -946,6 +946,9 @@ static int __init sa11xx_uda1341_init(void) | |||
946 | strcpy(card->shortname, "H3600 UDA1341TS"); | 946 | strcpy(card->shortname, "H3600 UDA1341TS"); |
947 | sprintf(card->longname, "Compaq iPAQ H3600 with Philips UDA1341TS"); | 947 | sprintf(card->longname, "Compaq iPAQ H3600 with Philips UDA1341TS"); |
948 | 948 | ||
949 | if ((err = snd_card_set_generic_dev(card)) < 0) | ||
950 | goto nodev; | ||
951 | |||
949 | if ((err = snd_card_register(card)) == 0) { | 952 | if ((err = snd_card_register(card)) == 0) { |
950 | printk( KERN_INFO "iPAQ audio support initialized\n" ); | 953 | printk( KERN_INFO "iPAQ audio support initialized\n" ); |
951 | return 0; | 954 | return 0; |
diff --git a/sound/drivers/Kconfig b/sound/drivers/Kconfig index 3b2bee19e2c0..efcb4eb2d1a0 100644 --- a/sound/drivers/Kconfig +++ b/sound/drivers/Kconfig | |||
@@ -29,6 +29,7 @@ config SND_DUMMY | |||
29 | tristate "Dummy (/dev/null) soundcard" | 29 | tristate "Dummy (/dev/null) soundcard" |
30 | depends on SND | 30 | depends on SND |
31 | select SND_PCM | 31 | select SND_PCM |
32 | select SND_GENERIC_DRIVER | ||
32 | help | 33 | help |
33 | Say Y here to include the dummy driver. This driver does | 34 | Say Y here to include the dummy driver. This driver does |
34 | nothing, but emulates various mixer controls and PCM devices. | 35 | nothing, but emulates various mixer controls and PCM devices. |
@@ -44,6 +45,7 @@ config SND_VIRMIDI | |||
44 | depends on SND_SEQUENCER | 45 | depends on SND_SEQUENCER |
45 | select SND_TIMER | 46 | select SND_TIMER |
46 | select SND_RAWMIDI | 47 | select SND_RAWMIDI |
48 | select SND_GENERIC_DRIVER | ||
47 | help | 49 | help |
48 | Say Y here to include the virtual MIDI driver. This driver | 50 | Say Y here to include the virtual MIDI driver. This driver |
49 | allows to connect applications using raw MIDI devices to | 51 | allows to connect applications using raw MIDI devices to |
@@ -59,6 +61,7 @@ config SND_MTPAV | |||
59 | depends on SND | 61 | depends on SND |
60 | select SND_TIMER | 62 | select SND_TIMER |
61 | select SND_RAWMIDI | 63 | select SND_RAWMIDI |
64 | select SND_GENERIC_DRIVER | ||
62 | help | 65 | help |
63 | To use a MOTU MidiTimePiece AV multiport MIDI adapter | 66 | To use a MOTU MidiTimePiece AV multiport MIDI adapter |
64 | connected to the parallel port, say Y here and make sure that | 67 | connected to the parallel port, say Y here and make sure that |
@@ -72,6 +75,7 @@ config SND_SERIAL_U16550 | |||
72 | depends on SND | 75 | depends on SND |
73 | select SND_TIMER | 76 | select SND_TIMER |
74 | select SND_RAWMIDI | 77 | select SND_RAWMIDI |
78 | select SND_GENERIC_DRIVER | ||
75 | help | 79 | help |
76 | To include support for MIDI serial port interfaces, say Y here | 80 | To include support for MIDI serial port interfaces, say Y here |
77 | and read <file:Documentation/sound/alsa/serial-u16550.txt>. | 81 | and read <file:Documentation/sound/alsa/serial-u16550.txt>. |
@@ -88,6 +92,7 @@ config SND_MPU401 | |||
88 | tristate "Generic MPU-401 UART driver" | 92 | tristate "Generic MPU-401 UART driver" |
89 | depends on SND | 93 | depends on SND |
90 | select SND_MPU401_UART | 94 | select SND_MPU401_UART |
95 | select SND_GENERIC_DRIVER | ||
91 | help | 96 | help |
92 | Say Y here to include support for MIDI ports compatible with | 97 | Say Y here to include support for MIDI ports compatible with |
93 | the Roland MPU-401 interface in UART mode. | 98 | the Roland MPU-401 interface in UART mode. |
diff --git a/sound/drivers/dummy.c b/sound/drivers/dummy.c index a61640cf7ae7..977d98d26a81 100644 --- a/sound/drivers/dummy.c +++ b/sound/drivers/dummy.c | |||
@@ -600,6 +600,10 @@ static int __init snd_card_dummy_probe(int dev) | |||
600 | strcpy(card->driver, "Dummy"); | 600 | strcpy(card->driver, "Dummy"); |
601 | strcpy(card->shortname, "Dummy"); | 601 | strcpy(card->shortname, "Dummy"); |
602 | sprintf(card->longname, "Dummy %i", dev + 1); | 602 | sprintf(card->longname, "Dummy %i", dev + 1); |
603 | |||
604 | if ((err = snd_card_set_generic_dev(card)) < 0) | ||
605 | goto __nodev; | ||
606 | |||
603 | if ((err = snd_card_register(card)) == 0) { | 607 | if ((err = snd_card_register(card)) == 0) { |
604 | snd_dummy_cards[dev] = card; | 608 | snd_dummy_cards[dev] = card; |
605 | return 0; | 609 | return 0; |
diff --git a/sound/drivers/mpu401/mpu401.c b/sound/drivers/mpu401/mpu401.c index cb36ecb78697..54e2ff9b5ca1 100644 --- a/sound/drivers/mpu401/mpu401.c +++ b/sound/drivers/mpu401/mpu401.c | |||
@@ -77,20 +77,26 @@ static int snd_mpu401_create(int dev, snd_card_t **rcard) | |||
77 | strcat(card->longname, "polled"); | 77 | strcat(card->longname, "polled"); |
78 | } | 78 | } |
79 | 79 | ||
80 | if (snd_mpu401_uart_new(card, 0, | 80 | if ((err = snd_mpu401_uart_new(card, 0, |
81 | MPU401_HW_MPU401, | 81 | MPU401_HW_MPU401, |
82 | port[dev], 0, | 82 | port[dev], 0, |
83 | irq[dev], irq[dev] >= 0 ? SA_INTERRUPT : 0, NULL) < 0) { | 83 | irq[dev], irq[dev] >= 0 ? SA_INTERRUPT : 0, NULL)) < 0) { |
84 | printk(KERN_ERR "MPU401 not detected at 0x%lx\n", port[dev]); | 84 | printk(KERN_ERR "MPU401 not detected at 0x%lx\n", port[dev]); |
85 | snd_card_free(card); | 85 | goto _err; |
86 | return -ENODEV; | ||
87 | } | ||
88 | if ((err = snd_card_register(card)) < 0) { | ||
89 | snd_card_free(card); | ||
90 | return err; | ||
91 | } | 86 | } |
87 | |||
88 | if ((err = snd_card_set_generic_dev(card)) < 0) | ||
89 | goto _err; | ||
90 | |||
91 | if ((err = snd_card_register(card)) < 0) | ||
92 | goto _err; | ||
93 | |||
92 | *rcard = card; | 94 | *rcard = card; |
93 | return 0; | 95 | return 0; |
96 | |||
97 | _err: | ||
98 | snd_card_free(card); | ||
99 | return err; | ||
94 | } | 100 | } |
95 | 101 | ||
96 | static int __devinit snd_mpu401_probe(int dev) | 102 | static int __devinit snd_mpu401_probe(int dev) |
diff --git a/sound/drivers/mtpav.c b/sound/drivers/mtpav.c index 1280a57c49eb..b8199d20be82 100644 --- a/sound/drivers/mtpav.c +++ b/sound/drivers/mtpav.c | |||
@@ -757,6 +757,9 @@ static int __init alsa_card_mtpav_init(void) | |||
757 | if (err < 0) | 757 | if (err < 0) |
758 | goto __error; | 758 | goto __error; |
759 | 759 | ||
760 | if ((err = snd_card_set_generic_dev(mtp_card->card)) < 0) | ||
761 | goto __error; | ||
762 | |||
760 | err = snd_card_register(mtp_card->card); // don't snd_card_register until AFTER all cards reources done! | 763 | err = snd_card_register(mtp_card->card); // don't snd_card_register until AFTER all cards reources done! |
761 | 764 | ||
762 | //printk("snd_card_register returned %d\n", err); | 765 | //printk("snd_card_register returned %d\n", err); |
diff --git a/sound/drivers/serial-u16550.c b/sound/drivers/serial-u16550.c index 986df35fb829..fd3bb9dd1d24 100644 --- a/sound/drivers/serial-u16550.c +++ b/sound/drivers/serial-u16550.c | |||
@@ -928,15 +928,11 @@ static int __init snd_serial_probe(int dev) | |||
928 | base[dev], | 928 | base[dev], |
929 | adaptor[dev], | 929 | adaptor[dev], |
930 | droponfull[dev], | 930 | droponfull[dev], |
931 | &uart)) < 0) { | 931 | &uart)) < 0) |
932 | snd_card_free(card); | 932 | goto _err; |
933 | return err; | ||
934 | } | ||
935 | 933 | ||
936 | if ((err = snd_uart16550_rmidi(uart, 0, outs[dev], ins[dev], &uart->rmidi)) < 0) { | 934 | if ((err = snd_uart16550_rmidi(uart, 0, outs[dev], ins[dev], &uart->rmidi)) < 0) |
937 | snd_card_free(card); | 935 | goto _err; |
938 | return err; | ||
939 | } | ||
940 | 936 | ||
941 | sprintf(card->longname, "%s at 0x%lx, irq %d speed %d div %d outs %d ins %d adaptor %s droponfull %d", | 937 | sprintf(card->longname, "%s at 0x%lx, irq %d speed %d div %d outs %d ins %d adaptor %s droponfull %d", |
942 | card->shortname, | 938 | card->shortname, |
@@ -949,12 +945,18 @@ static int __init snd_serial_probe(int dev) | |||
949 | adaptor_names[uart->adaptor], | 945 | adaptor_names[uart->adaptor], |
950 | uart->drop_on_full); | 946 | uart->drop_on_full); |
951 | 947 | ||
952 | if ((err = snd_card_register(card)) < 0) { | 948 | if ((err = snd_card_set_generic_dev(card)) < 0) |
953 | snd_card_free(card); | 949 | goto _err; |
954 | return err; | 950 | |
955 | } | 951 | if ((err = snd_card_register(card)) < 0) |
952 | goto _err; | ||
953 | |||
956 | snd_serial_cards[dev] = card; | 954 | snd_serial_cards[dev] = card; |
957 | return 0; | 955 | return 0; |
956 | |||
957 | _err: | ||
958 | snd_card_free(card); | ||
959 | return err; | ||
958 | } | 960 | } |
959 | 961 | ||
960 | static int __init alsa_card_serial_init(void) | 962 | static int __init alsa_card_serial_init(void) |
diff --git a/sound/drivers/virmidi.c b/sound/drivers/virmidi.c index 5937711e9505..af12185ab8a2 100644 --- a/sound/drivers/virmidi.c +++ b/sound/drivers/virmidi.c | |||
@@ -116,6 +116,10 @@ static int __init snd_card_virmidi_probe(int dev) | |||
116 | strcpy(card->driver, "VirMIDI"); | 116 | strcpy(card->driver, "VirMIDI"); |
117 | strcpy(card->shortname, "VirMIDI"); | 117 | strcpy(card->shortname, "VirMIDI"); |
118 | sprintf(card->longname, "Virtual MIDI Card %i", dev + 1); | 118 | sprintf(card->longname, "Virtual MIDI Card %i", dev + 1); |
119 | |||
120 | if ((err = snd_card_set_generic_dev(card)) < 0) | ||
121 | goto __nodev; | ||
122 | |||
119 | if ((err = snd_card_register(card)) == 0) { | 123 | if ((err = snd_card_register(card)) == 0) { |
120 | snd_virmidi_cards[dev] = card; | 124 | snd_virmidi_cards[dev] = card; |
121 | return 0; | 125 | return 0; |
diff --git a/sound/mips/Kconfig b/sound/mips/Kconfig index 531f8ba96a71..2433b7727404 100644 --- a/sound/mips/Kconfig +++ b/sound/mips/Kconfig | |||
@@ -8,6 +8,7 @@ config SND_AU1X00 | |||
8 | depends on (SOC_AU1000 || SOC_AU1100 || SOC_AU1500) && SND | 8 | depends on (SOC_AU1000 || SOC_AU1100 || SOC_AU1500) && SND |
9 | select SND_PCM | 9 | select SND_PCM |
10 | select SND_AC97_CODEC | 10 | select SND_AC97_CODEC |
11 | select SND_GENERIC_DRIVER | ||
11 | help | 12 | help |
12 | ALSA Sound driver for the Au1x00's AC97 port. | 13 | ALSA Sound driver for the Au1x00's AC97 port. |
13 | 14 | ||
diff --git a/sound/mips/au1x00.c b/sound/mips/au1x00.c index c20522b02134..3f9684f1d1d2 100644 --- a/sound/mips/au1x00.c +++ b/sound/mips/au1x00.c | |||
@@ -667,6 +667,11 @@ au1000_init(void) | |||
667 | strcpy(au1000->card->shortname, "Au1000-AC97"); | 667 | strcpy(au1000->card->shortname, "Au1000-AC97"); |
668 | sprintf(au1000->card->longname, "AMD Au1000--AC97 ALSA Driver"); | 668 | sprintf(au1000->card->longname, "AMD Au1000--AC97 ALSA Driver"); |
669 | 669 | ||
670 | if ((err = snd_card_set_generic_dev(au1000->card)) < 0) { | ||
671 | snd_card_free(au1000->card); | ||
672 | return err; | ||
673 | } | ||
674 | |||
670 | if ((err = snd_card_register(au1000->card)) < 0) { | 675 | if ((err = snd_card_register(au1000->card)) < 0) { |
671 | snd_card_free(au1000->card); | 676 | snd_card_free(au1000->card); |
672 | return err; | 677 | return err; |
diff --git a/sound/ppc/Kconfig b/sound/ppc/Kconfig index 75213bf4d567..bda5bc4e6148 100644 --- a/sound/ppc/Kconfig +++ b/sound/ppc/Kconfig | |||
@@ -13,6 +13,7 @@ config SND_POWERMAC | |||
13 | tristate "PowerMac (AWACS, DACA, Burgundy, Tumbler, Keywest)" | 13 | tristate "PowerMac (AWACS, DACA, Burgundy, Tumbler, Keywest)" |
14 | depends on SND && I2C && INPUT && PPC_PMAC | 14 | depends on SND && I2C && INPUT && PPC_PMAC |
15 | select SND_PCM | 15 | select SND_PCM |
16 | select SND_GENERIC_DRIVER | ||
16 | help | 17 | help |
17 | Say Y here to include support for the integrated sound device. | 18 | Say Y here to include support for the integrated sound device. |
18 | 19 | ||
diff --git a/sound/ppc/powermac.c b/sound/ppc/powermac.c index 231f6432ea6d..a6d8cbf4064f 100644 --- a/sound/ppc/powermac.c +++ b/sound/ppc/powermac.c | |||
@@ -131,6 +131,9 @@ static int __init snd_pmac_probe(void) | |||
131 | if (enable_beep) | 131 | if (enable_beep) |
132 | snd_pmac_attach_beep(chip); | 132 | snd_pmac_attach_beep(chip); |
133 | 133 | ||
134 | if ((err = snd_card_set_generic_dev(card)) < 0) | ||
135 | goto __error; | ||
136 | |||
134 | if ((err = snd_card_register(card)) < 0) | 137 | if ((err = snd_card_register(card)) < 0) |
135 | goto __error; | 138 | goto __error; |
136 | 139 | ||
diff --git a/sound/sparc/Kconfig b/sound/sparc/Kconfig index 25a8a558ef92..09ab138646a6 100644 --- a/sound/sparc/Kconfig +++ b/sound/sparc/Kconfig | |||
@@ -7,6 +7,7 @@ config SND_SUN_AMD7930 | |||
7 | tristate "Sun AMD7930" | 7 | tristate "Sun AMD7930" |
8 | depends on SBUS && SND | 8 | depends on SBUS && SND |
9 | select SND_PCM | 9 | select SND_PCM |
10 | select SND_GENERIC_DRIVER | ||
10 | help | 11 | help |
11 | Say Y here to include support for AMD7930 sound device on Sun. | 12 | Say Y here to include support for AMD7930 sound device on Sun. |
12 | 13 | ||
@@ -17,6 +18,7 @@ config SND_SUN_CS4231 | |||
17 | tristate "Sun CS4231" | 18 | tristate "Sun CS4231" |
18 | depends on SND | 19 | depends on SND |
19 | select SND_PCM | 20 | select SND_PCM |
21 | select SND_GENERIC_DRIVER | ||
20 | help | 22 | help |
21 | Say Y here to include support for CS4231 sound device on Sun. | 23 | Say Y here to include support for CS4231 sound device on Sun. |
22 | 24 | ||
@@ -27,6 +29,7 @@ config SND_SUN_DBRI | |||
27 | tristate "Sun DBRI" | 29 | tristate "Sun DBRI" |
28 | depends on SND && SBUS | 30 | depends on SND && SBUS |
29 | select SND_PCM | 31 | select SND_PCM |
32 | select SND_GENERIC_DRIVER | ||
30 | help | 33 | help |
31 | Say Y here to include support for DBRI sound device on Sun. | 34 | Say Y here to include support for DBRI sound device on Sun. |
32 | 35 | ||
diff --git a/sound/sparc/amd7930.c b/sound/sparc/amd7930.c index bd8a850e93ea..ed0d5f2f0888 100644 --- a/sound/sparc/amd7930.c +++ b/sound/sparc/amd7930.c | |||
@@ -1088,6 +1088,9 @@ static int __init amd7930_attach(int prom_node, struct sbus_dev *sdev) | |||
1088 | if ((err = snd_amd7930_mixer(amd)) < 0) | 1088 | if ((err = snd_amd7930_mixer(amd)) < 0) |
1089 | goto out_err; | 1089 | goto out_err; |
1090 | 1090 | ||
1091 | if ((err = snd_card_set_generic_dev(card)) < 0) | ||
1092 | goto out_err; | ||
1093 | |||
1091 | if ((err = snd_card_register(card)) < 0) | 1094 | if ((err = snd_card_register(card)) < 0) |
1092 | goto out_err; | 1095 | goto out_err; |
1093 | 1096 | ||
diff --git a/sound/sparc/cs4231.c b/sound/sparc/cs4231.c index 36f9fe4d7bea..bd169f541181 100644 --- a/sound/sparc/cs4231.c +++ b/sound/sparc/cs4231.c | |||
@@ -1915,6 +1915,9 @@ static int cs4231_attach_finish(snd_card_t *card, cs4231_t *chip) | |||
1915 | if ((err = snd_cs4231_timer(chip)) < 0) | 1915 | if ((err = snd_cs4231_timer(chip)) < 0) |
1916 | goto out_err; | 1916 | goto out_err; |
1917 | 1917 | ||
1918 | if ((err = snd_card_set_generic_dev(card)) < 0) | ||
1919 | goto out_err; | ||
1920 | |||
1918 | if ((err = snd_card_register(card)) < 0) | 1921 | if ((err = snd_card_register(card)) < 0) |
1919 | goto out_err; | 1922 | goto out_err; |
1920 | 1923 | ||
diff --git a/sound/sparc/dbri.c b/sound/sparc/dbri.c index 941c7b1e7ebb..a56f81bb0049 100644 --- a/sound/sparc/dbri.c +++ b/sound/sparc/dbri.c | |||
@@ -2657,26 +2657,20 @@ static int __init dbri_attach(int prom_node, struct sbus_dev *sdev) | |||
2657 | } | 2657 | } |
2658 | 2658 | ||
2659 | dbri = (snd_dbri_t *) card->private_data; | 2659 | dbri = (snd_dbri_t *) card->private_data; |
2660 | if ((err = snd_dbri_pcm(dbri)) < 0) { | 2660 | if ((err = snd_dbri_pcm(dbri)) < 0) |
2661 | snd_dbri_free(dbri); | 2661 | goto _err; |
2662 | snd_card_free(card); | ||
2663 | return err; | ||
2664 | } | ||
2665 | 2662 | ||
2666 | if ((err = snd_dbri_mixer(dbri)) < 0) { | 2663 | if ((err = snd_dbri_mixer(dbri)) < 0) |
2667 | snd_dbri_free(dbri); | 2664 | goto _err; |
2668 | snd_card_free(card); | ||
2669 | return err; | ||
2670 | } | ||
2671 | 2665 | ||
2672 | /* /proc file handling */ | 2666 | /* /proc file handling */ |
2673 | snd_dbri_proc(dbri); | 2667 | snd_dbri_proc(dbri); |
2674 | 2668 | ||
2675 | if ((err = snd_card_register(card)) < 0) { | 2669 | if ((err = snd_card_set_generic_dev(card)) < 0) |
2676 | snd_dbri_free(dbri); | 2670 | goto _err; |
2677 | snd_card_free(card); | 2671 | |
2678 | return err; | 2672 | if ((err = snd_card_register(card)) < 0) |
2679 | } | 2673 | goto _err; |
2680 | 2674 | ||
2681 | printk(KERN_INFO "audio%d at %p (irq %d) is DBRI(%c)+CS4215(%d)\n", | 2675 | printk(KERN_INFO "audio%d at %p (irq %d) is DBRI(%c)+CS4215(%d)\n", |
2682 | dev, dbri->regs, | 2676 | dev, dbri->regs, |
@@ -2684,6 +2678,11 @@ static int __init dbri_attach(int prom_node, struct sbus_dev *sdev) | |||
2684 | dev++; | 2678 | dev++; |
2685 | 2679 | ||
2686 | return 0; | 2680 | return 0; |
2681 | |||
2682 | _err: | ||
2683 | snd_dbri_free(dbri); | ||
2684 | snd_card_free(card); | ||
2685 | return err; | ||
2687 | } | 2686 | } |
2688 | 2687 | ||
2689 | /* Probe for the dbri chip and then attach the driver. */ | 2688 | /* Probe for the dbri chip and then attach the driver. */ |