Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f7a9275d authored by Clemens Ladisch's avatar Clemens Ladisch Committed by Jaroslav Kysela
Browse files

[ALSA] unregister platform devices



Call platform_device_unregister() for all platform devices that we've
registered.

Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
parent 416c1079
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@
 *                              merged HAL layer (patches from Brian)
 */

/* $Id: sa11xx-uda1341.c,v 1.26 2005/11/17 17:19:50 tiwai Exp $ */
/* $Id: sa11xx-uda1341.c,v 1.27 2005/12/07 09:13:42 cladisch Exp $ */

/***************************************************************************************************
*
@@ -155,6 +155,8 @@ static struct snd_pcm_hw_constraint_list hw_constraints_rates = {
	.mask	= 0,
};

static struct platform_device *device;

/* }}} */

/* {{{ Clock and sample rate stuff */
@@ -976,7 +978,6 @@ static struct platform_driver sa11xx_uda1341_driver = {
static int __init sa11xx_uda1341_init(void)
{
	int err;
	struct platform_device *device;

	if (!machine_is_h3xxx())
		return -ENODEV;
@@ -992,6 +993,7 @@ static int __init sa11xx_uda1341_init(void)

static void __exit sa11xx_uda1341_exit(void)
{
	platform_device_unregister(device);
	platform_driver_unregister(&sa11xx_uda1341_driver);
}

+14 −2
Original line number Diff line number Diff line
@@ -144,6 +144,8 @@ MODULE_PARM_DESC(pcm_substreams, "PCM substreams # (1-16) for dummy driver.");
//module_param_array(midi_devs, int, NULL, 0444);
//MODULE_PARM_DESC(midi_devs, "MIDI devices # (0-2) for dummy driver.");

static struct platform_device *devices[SNDRV_CARDS];

#define MIXER_ADDR_MASTER	0
#define MIXER_ADDR_LINE		1
#define MIXER_ADDR_MIC		2
@@ -634,6 +636,15 @@ static struct platform_driver snd_dummy_driver = {
	},
};

static void __init_or_module snd_dummy_unregister_all(void)
{
	int i;

	for (i = 0; i < ARRAY_SIZE(devices); ++i)
		platform_device_unregister(devices[i]);
	platform_driver_unregister(&snd_dummy_driver);
}

static int __init alsa_card_dummy_init(void)
{
	int i, cards, err;
@@ -650,6 +661,7 @@ static int __init alsa_card_dummy_init(void)
			err = PTR_ERR(device);
			goto errout;
		}
		devices[i] = device;
		cards++;
	}
	if (!cards) {
@@ -662,13 +674,13 @@ static int __init alsa_card_dummy_init(void)
	return 0;

 errout:
	platform_driver_unregister(&snd_dummy_driver);
	snd_dummy_unregister_all();
	return err;
}

static void __exit alsa_card_dummy_exit(void)
{
	platform_driver_unregister(&snd_dummy_driver);
	snd_dummy_unregister_all();
}

module_init(alsa_card_dummy_init)
+15 −6
Original line number Diff line number Diff line
@@ -58,6 +58,7 @@ MODULE_PARM_DESC(port, "Port # for MPU-401 device.");
module_param_array(irq, int, NULL, 0444);
MODULE_PARM_DESC(irq, "IRQ # for MPU-401 device.");

static struct platform_device *platform_devices[SNDRV_CARDS];
static int pnp_registered = 0;

static int snd_mpu401_create(int dev, struct snd_card **rcard)
@@ -220,6 +221,17 @@ static struct pnp_driver snd_mpu401_pnp_driver = {
static struct pnp_driver snd_mpu401_pnp_driver;
#endif

static void __init_or_module snd_mpu401_unregister_all(void)
{
	int i;

	if (pnp_registered)
		pnp_unregister_driver(&snd_mpu401_pnp_driver);
	for (i = 0; i < ARRAY_SIZE(platform_devices); ++i)
		platform_device_unregister(platform_devices[i]);
	platform_driver_unregister(&snd_mpu401_driver);
}

static int __init alsa_card_mpu401_init(void)
{
	int i, err, devices;
@@ -240,6 +252,7 @@ static int __init alsa_card_mpu401_init(void)
			err = PTR_ERR(device);
			goto errout;
		}
		platform_devices[i] = device;
		devices++;
	}
	if ((err = pnp_register_driver(&snd_mpu401_pnp_driver)) >= 0) {
@@ -257,17 +270,13 @@ static int __init alsa_card_mpu401_init(void)
	return 0;

 errout:
	if (pnp_registered)
		pnp_unregister_driver(&snd_mpu401_pnp_driver);
	platform_driver_unregister(&snd_mpu401_driver);
	snd_mpu401_unregister_all();
	return err;
}

static void __exit alsa_card_mpu401_exit(void)
{
	if (pnp_registered)
		pnp_unregister_driver(&snd_mpu401_pnp_driver);
	platform_driver_unregister(&snd_mpu401_driver);
	snd_mpu401_unregister_all();
}

module_init(alsa_card_mpu401_init)
+3 −1
Original line number Diff line number Diff line
@@ -95,6 +95,8 @@ MODULE_PARM_DESC(irq, "Parallel IRQ # for MotuMTPAV MIDI.");
module_param(hwports, int, 0444);
MODULE_PARM_DESC(hwports, "Hardware ports # for MotuMTPAV MIDI.");

static struct platform_device *device;

/*
 *      defines
 */
@@ -763,7 +765,6 @@ static struct platform_driver snd_mtpav_driver = {
static int __init alsa_card_mtpav_init(void)
{
	int err;
	struct platform_device *device;

	if ((err = platform_driver_register(&snd_mtpav_driver)) < 0)
		return err;
@@ -778,6 +779,7 @@ static int __init alsa_card_mtpav_init(void)

static void __exit alsa_card_mtpav_exit(void)
{
	platform_device_unregister(device);
	platform_driver_unregister(&snd_mtpav_driver);
}

+14 −2
Original line number Diff line number Diff line
@@ -168,6 +168,8 @@ typedef struct _snd_uart16550 {

} snd_uart16550_t;

static struct platform_device *devices[SNDRV_CARDS];

static inline void snd_uart16550_add_timer(snd_uart16550_t *uart)
{
	if (! uart->timer_running) {
@@ -970,6 +972,15 @@ static struct platform_driver snd_serial_driver = {
	},
};

static void __init_or_module snd_serial_unregister_all(void)
{
	int i;

	for (i = 0; i < ARRAY_SIZE(devices); ++i)
		platform_device_unregister(devices[i]);
	platform_driver_unregister(&snd_serial_driver);
}

static int __init alsa_card_serial_init(void)
{
	int i, cards, err;
@@ -986,6 +997,7 @@ static int __init alsa_card_serial_init(void)
			err = PTR_ERR(device);
			goto errout;
		}
		devices[i] = device;
		cards++;
	}
	if (! cards) {
@@ -998,13 +1010,13 @@ static int __init alsa_card_serial_init(void)
	return 0;

 errout:
	platform_driver_unregister(&snd_serial_driver);
	snd_serial_unregister_all();
	return err;
}

static void __exit alsa_card_serial_exit(void)
{
	platform_driver_unregister(&snd_serial_driver);
	snd_serial_unregister_all();
}

module_init(alsa_card_serial_init)
Loading