Linux Sound subsystem development
 help / color / mirror / Atom feed
* [PATCH 0/9] ALSA: seq: Use bus specific probe and remove
@ 2025-12-02 12:35 Uwe Kleine-König
  2025-12-02 12:35 ` [PATCH 1/9] " Uwe Kleine-König
                   ` (9 more replies)
  0 siblings, 10 replies; 14+ messages in thread
From: Uwe Kleine-König @ 2025-12-02 12:35 UTC (permalink / raw)
  To: Jaroslav Kysela, Takashi Iwai, Clemens Ladisch
  Cc: Greg Kroah-Hartman, linux-sound

Hello,

for the quest to drop .probe(), .remove() and .shutdown() from struct
device_driver, this patch set converts all seq drivers to use bus type
callbacks.

The dependencies here are:
 - patches #2 - #8 depend (only) on patch #1
 - patch #9 depends on #1 - #8
but I guess this series will go in in a single go and there is no need
to coordinate merging.

This series is compile tested only, as I have no access to seq devices.
Still I'm reasonably sure that there is no user-visible effect when this
series is applied. (There is a runtime warning introduced by patch #1
that goes away with patches #2-#8 again. So future bisections suffer a
tiny bit.)

Best regards
Uwe

Uwe Kleine-König (9):
  ALSA: seq: Use bus specific probe and remove
  ALSA: seq: midi: Convert to snd_seq bus probe mechanism
  ALSA: seq: ump: Convert to snd_seq bus probe mechanism
  ALSA: opl3: Convert to snd_seq bus probe mechanism
  ALSA: opl4: Convert to snd_seq bus probe mechanism
  ALSA: sb: Convert to snd_seq bus probe mechanism
  ALSA: emu10k1: Convert to snd_seq bus probe mechanism
  ALSA: seq: oss: Convert to snd_seq bus probe mechanism
  ALSA: seq: Refuse to probe seq drivers with non-bus probe or remove

 include/sound/seq_device.h         |  2 ++
 sound/core/seq/oss/seq_oss.c       |  4 ++--
 sound/core/seq/oss/seq_oss_synth.c | 12 ++++--------
 sound/core/seq/oss/seq_oss_synth.h |  4 ++--
 sound/core/seq/seq_midi.c          | 15 ++++++---------
 sound/core/seq/seq_ump_client.c    | 11 ++++-------
 sound/core/seq_device.c            | 26 +++++++++++++++++++++++++-
 sound/drivers/opl3/opl3_seq.c      | 13 +++++--------
 sound/drivers/opl4/opl4_seq.c      | 10 ++++------
 sound/isa/sb/emu8000_synth.c       | 13 +++++--------
 sound/pci/emu10k1/emu10k1_synth.c  | 13 +++++--------
 11 files changed, 64 insertions(+), 59 deletions(-)


base-commit: 7d0a66e4bb9081d75c82ec4957c50034cb0ea449
-- 
2.47.3


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 1/9] ALSA: seq: Use bus specific probe and remove
  2025-12-02 12:35 [PATCH 0/9] ALSA: seq: Use bus specific probe and remove Uwe Kleine-König
@ 2025-12-02 12:35 ` Uwe Kleine-König
  2025-12-02 12:35 ` [PATCH 2/9] ALSA: seq: midi: Convert to snd_seq bus probe mechanism Uwe Kleine-König
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 14+ messages in thread
From: Uwe Kleine-König @ 2025-12-02 12:35 UTC (permalink / raw)
  To: Jaroslav Kysela, Takashi Iwai; +Cc: Greg Kroah-Hartman, linux-sound

Introduce a bus specific probe and remove function. For now this only
allows to get rid of a cast of the generic device to an snd_seq device
in the drivers and changes the remove prototype to return void---a
non-zero return value is ignored anyhow.

The objective is to get rid of users of struct device callbacks
.probe(), .remove() and .shutdown() to eventually remove these. Until
all snd_seq drivers are converted this results in a runtime warning
about the drivers needing an update because there is a bus probe
function and a driver probe function.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
---
 include/sound/seq_device.h |  2 ++
 sound/core/seq_device.c    | 47 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 49 insertions(+)

diff --git a/include/sound/seq_device.h b/include/sound/seq_device.h
index dead74b022f4..a72380c202e9 100644
--- a/include/sound/seq_device.h
+++ b/include/sound/seq_device.h
@@ -43,6 +43,8 @@ struct snd_seq_device {
  *	Typically, call snd_device_free(dev->card, dev->driver_data)
  */
 struct snd_seq_driver {
+	int (*probe)(struct snd_seq_device *dev);
+	void (*remove)(struct snd_seq_device *dev);
 	struct device_driver driver;
 	char *id;
 	int argsize;
diff --git a/sound/core/seq_device.c b/sound/core/seq_device.c
index bac9f8603734..d746c8d0c58b 100644
--- a/sound/core/seq_device.c
+++ b/sound/core/seq_device.c
@@ -49,9 +49,31 @@ static int snd_seq_bus_match(struct device *dev, const struct device_driver *drv
 		sdrv->argsize == sdev->argsize;
 }
 
+static int snd_seq_bus_probe(struct device *dev)
+{
+	struct snd_seq_device *sdev = to_seq_dev(dev);
+	const struct snd_seq_driver *sdrv = to_seq_drv(dev->driver);
+
+	if (sdrv->probe)
+		return sdrv->probe(sdev);
+	else
+		return 0;
+}
+
+static void snd_seq_bus_remove(struct device *dev)
+{
+	struct snd_seq_device *sdev = to_seq_dev(dev);
+	const struct snd_seq_driver *sdrv = to_seq_drv(dev->driver);
+
+	if (sdrv->remove)
+		sdrv->remove(sdev);
+}
+
 static const struct bus_type snd_seq_bus_type = {
 	.name = "snd_seq",
 	.match = snd_seq_bus_match,
+	.probe = snd_seq_bus_probe,
+	.remove = snd_seq_bus_remove,
 };
 
 /*
@@ -242,6 +264,25 @@ int snd_seq_device_new(struct snd_card *card, int device, const char *id,
 }
 EXPORT_SYMBOL(snd_seq_device_new);
 
+static int snd_seq_driver_legacy_probe(struct snd_seq_device *sdev)
+{
+	struct device *dev = &sdev->dev;
+	struct device_driver *driver = dev->driver;
+
+	return driver->probe(dev);
+}
+
+static void snd_seq_driver_legacy_remove(struct snd_seq_device *sdev)
+{
+	struct device *dev = &sdev->dev;
+	struct device_driver *driver = dev->driver;
+	int ret;
+
+	ret = driver->remove(dev);
+	if (unlikely(ret))
+		dev_warn(dev, "Ignoring return value of remove callback (%pe)\n", ERR_PTR(ret));
+}
+
 /*
  * driver registration
  */
@@ -251,6 +292,12 @@ int __snd_seq_driver_register(struct snd_seq_driver *drv, struct module *mod)
 		return -EINVAL;
 	drv->driver.bus = &snd_seq_bus_type;
 	drv->driver.owner = mod;
+
+	if (!drv->probe && drv->driver.probe)
+		drv->probe = snd_seq_driver_legacy_probe;
+	if (!drv->remove && drv->driver.remove)
+		drv->remove = snd_seq_driver_legacy_remove;
+
 	return driver_register(&drv->driver);
 }
 EXPORT_SYMBOL_GPL(__snd_seq_driver_register);
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 2/9] ALSA: seq: midi: Convert to snd_seq bus probe mechanism
  2025-12-02 12:35 [PATCH 0/9] ALSA: seq: Use bus specific probe and remove Uwe Kleine-König
  2025-12-02 12:35 ` [PATCH 1/9] " Uwe Kleine-König
@ 2025-12-02 12:35 ` Uwe Kleine-König
  2025-12-02 12:35 ` [PATCH 3/9] ALSA: seq: ump: " Uwe Kleine-König
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 14+ messages in thread
From: Uwe Kleine-König @ 2025-12-02 12:35 UTC (permalink / raw)
  To: Jaroslav Kysela, Takashi Iwai; +Cc: Greg Kroah-Hartman, linux-sound

The snd_seq bus got a dedicated probe function. Make use of that. This
fixes a runtime warning about the driver needing to be converted to the
bus probe method.

Note that the remove callback returns void now. The actual return value
was ignored before (see device_remove() in drivers/base/dd.c), so there
is no problem introduced by converting `return -ENODEV` to `return`.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
---
 sound/core/seq/seq_midi.c | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)

diff --git a/sound/core/seq/seq_midi.c b/sound/core/seq/seq_midi.c
index 581e138a3115..de7ec7d15f23 100644
--- a/sound/core/seq/seq_midi.c
+++ b/sound/core/seq/seq_midi.c
@@ -265,9 +265,8 @@ static void snd_seq_midisynth_delete(struct seq_midisynth *msynth)
 
 /* register new midi synth port */
 static int
-snd_seq_midisynth_probe(struct device *_dev)
+snd_seq_midisynth_probe(struct snd_seq_device *dev)
 {
-	struct snd_seq_device *dev = to_seq_dev(_dev);
 	struct seq_midisynth_client *client;
 	struct seq_midisynth *msynth, *ms;
 	struct snd_seq_port_info *port __free(kfree) = NULL;
@@ -411,10 +410,9 @@ snd_seq_midisynth_probe(struct device *_dev)
 }
 
 /* release midi synth port */
-static int
-snd_seq_midisynth_remove(struct device *_dev)
+static void
+snd_seq_midisynth_remove(struct snd_seq_device *dev)
 {
-	struct snd_seq_device *dev = to_seq_dev(_dev);
 	struct seq_midisynth_client *client;
 	struct seq_midisynth *msynth;
 	struct snd_card *card = dev->card;
@@ -423,7 +421,7 @@ snd_seq_midisynth_remove(struct device *_dev)
 	guard(mutex)(&register_mutex);
 	client = synths[card->number];
 	if (client == NULL || client->ports[device] == NULL)
-		return -ENODEV;
+		return;
 	ports = client->ports_per_device[device];
 	client->ports_per_device[device] = 0;
 	msynth = client->ports[device];
@@ -437,14 +435,13 @@ snd_seq_midisynth_remove(struct device *_dev)
 		synths[card->number] = NULL;
 		kfree(client);
 	}
-	return 0;
 }
 
 static struct snd_seq_driver seq_midisynth_driver = {
+	.probe = snd_seq_midisynth_probe,
+	.remove = snd_seq_midisynth_remove,
 	.driver = {
 		.name = KBUILD_MODNAME,
-		.probe = snd_seq_midisynth_probe,
-		.remove = snd_seq_midisynth_remove,
 	},
 	.id = SNDRV_SEQ_DEV_ID_MIDISYNTH,
 	.argsize = 0,
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 3/9] ALSA: seq: ump: Convert to snd_seq bus probe mechanism
  2025-12-02 12:35 [PATCH 0/9] ALSA: seq: Use bus specific probe and remove Uwe Kleine-König
  2025-12-02 12:35 ` [PATCH 1/9] " Uwe Kleine-König
  2025-12-02 12:35 ` [PATCH 2/9] ALSA: seq: midi: Convert to snd_seq bus probe mechanism Uwe Kleine-König
@ 2025-12-02 12:35 ` Uwe Kleine-König
  2025-12-02 12:35 ` [PATCH 4/9] ALSA: opl3: " Uwe Kleine-König
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 14+ messages in thread
From: Uwe Kleine-König @ 2025-12-02 12:35 UTC (permalink / raw)
  To: Jaroslav Kysela, Takashi Iwai; +Cc: Greg Kroah-Hartman, linux-sound

The snd_seq bus got a dedicated probe function. Make use of that. This
fixes a runtime warning about the driver needing to be converted to the
bus probe method.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
---
 sound/core/seq/seq_ump_client.c | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/sound/core/seq/seq_ump_client.c b/sound/core/seq/seq_ump_client.c
index 27247babb16d..a96d21981cbe 100644
--- a/sound/core/seq/seq_ump_client.c
+++ b/sound/core/seq/seq_ump_client.c
@@ -452,9 +452,8 @@ static const struct snd_seq_ump_ops seq_ump_ops = {
 };
 
 /* create a sequencer client and ports for the given UMP endpoint */
-static int snd_seq_ump_probe(struct device *_dev)
+static int snd_seq_ump_probe(struct snd_seq_device *dev)
 {
-	struct snd_seq_device *dev = to_seq_dev(_dev);
 	struct snd_ump_endpoint *ump = dev->private_data;
 	struct snd_card *card = dev->card;
 	struct seq_ump_client *client;
@@ -513,21 +512,19 @@ static int snd_seq_ump_probe(struct device *_dev)
 }
 
 /* remove a sequencer client */
-static int snd_seq_ump_remove(struct device *_dev)
+static void snd_seq_ump_remove(struct snd_seq_device *dev)
 {
-	struct snd_seq_device *dev = to_seq_dev(_dev);
 	struct snd_ump_endpoint *ump = dev->private_data;
 
 	if (ump->seq_client)
 		seq_ump_client_free(ump->seq_client);
-	return 0;
 }
 
 static struct snd_seq_driver seq_ump_driver = {
+	.probe = snd_seq_ump_probe,
+	.remove = snd_seq_ump_remove,
 	.driver = {
 		.name = KBUILD_MODNAME,
-		.probe = snd_seq_ump_probe,
-		.remove = snd_seq_ump_remove,
 	},
 	.id = SNDRV_SEQ_DEV_ID_UMP,
 	.argsize = 0,
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 4/9] ALSA: opl3: Convert to snd_seq bus probe mechanism
  2025-12-02 12:35 [PATCH 0/9] ALSA: seq: Use bus specific probe and remove Uwe Kleine-König
                   ` (2 preceding siblings ...)
  2025-12-02 12:35 ` [PATCH 3/9] ALSA: seq: ump: " Uwe Kleine-König
@ 2025-12-02 12:35 ` Uwe Kleine-König
  2025-12-02 12:35 ` [PATCH 5/9] ALSA: opl4: " Uwe Kleine-König
                   ` (5 subsequent siblings)
  9 siblings, 0 replies; 14+ messages in thread
From: Uwe Kleine-König @ 2025-12-02 12:35 UTC (permalink / raw)
  To: Jaroslav Kysela, Takashi Iwai; +Cc: Greg Kroah-Hartman, linux-sound

The snd_seq bus got a dedicated probe function. Make use of that. This
fixes a runtime warning about the driver needing to be converted to the
bus probe method.

Note that the remove callback returns void now. The actual return value
was ignored before (see device_remove() in drivers/base/dd.c), so there
is no problem introduced by converting `return -EINVAL` to `return`.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
---
 sound/drivers/opl3/opl3_seq.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/sound/drivers/opl3/opl3_seq.c b/sound/drivers/opl3/opl3_seq.c
index d3278428d360..b77d8e8f12fb 100644
--- a/sound/drivers/opl3/opl3_seq.c
+++ b/sound/drivers/opl3/opl3_seq.c
@@ -201,9 +201,8 @@ static int snd_opl3_synth_create_port(struct snd_opl3 * opl3)
 
 /* ------------------------------ */
 
-static int snd_opl3_seq_probe(struct device *_dev)
+static int snd_opl3_seq_probe(struct snd_seq_device *dev)
 {
-	struct snd_seq_device *dev = to_seq_dev(_dev);
 	struct snd_opl3 *opl3;
 	int client, err;
 	char name[32];
@@ -244,14 +243,13 @@ static int snd_opl3_seq_probe(struct device *_dev)
 	return 0;
 }
 
-static int snd_opl3_seq_remove(struct device *_dev)
+static void snd_opl3_seq_remove(struct snd_seq_device *dev)
 {
-	struct snd_seq_device *dev = to_seq_dev(_dev);
 	struct snd_opl3 *opl3;
 
 	opl3 = *(struct snd_opl3 **)SNDRV_SEQ_DEVICE_ARGPTR(dev);
 	if (opl3 == NULL)
-		return -EINVAL;
+		return;
 
 #if IS_ENABLED(CONFIG_SND_SEQUENCER_OSS)
 	snd_opl3_free_seq_oss(opl3);
@@ -260,14 +258,13 @@ static int snd_opl3_seq_remove(struct device *_dev)
 		snd_seq_delete_kernel_client(opl3->seq_client);
 		opl3->seq_client = -1;
 	}
-	return 0;
 }
 
 static struct snd_seq_driver opl3_seq_driver = {
+	.probe = snd_opl3_seq_probe,
+	.remove = snd_opl3_seq_remove,
 	.driver = {
 		.name = KBUILD_MODNAME,
-		.probe = snd_opl3_seq_probe,
-		.remove = snd_opl3_seq_remove,
 	},
 	.id = SNDRV_SEQ_DEV_ID_OPL3,
 	.argsize = sizeof(struct snd_opl3 *),
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 5/9] ALSA: opl4: Convert to snd_seq bus probe mechanism
  2025-12-02 12:35 [PATCH 0/9] ALSA: seq: Use bus specific probe and remove Uwe Kleine-König
                   ` (3 preceding siblings ...)
  2025-12-02 12:35 ` [PATCH 4/9] ALSA: opl3: " Uwe Kleine-König
@ 2025-12-02 12:35 ` Uwe Kleine-König
  2025-12-03 13:46   ` Uwe Kleine-König
  2025-12-02 12:35 ` [PATCH 6/9] ALSA: sb: " Uwe Kleine-König
                   ` (4 subsequent siblings)
  9 siblings, 1 reply; 14+ messages in thread
From: Uwe Kleine-König @ 2025-12-02 12:35 UTC (permalink / raw)
  To: Clemens Ladisch, Jaroslav Kysela, Takashi Iwai
  Cc: Greg Kroah-Hartman, linux-sound

The snd_seq bus got a dedicated probe function. Make use of that. This
fixes a runtime warning about the driver needing to be converted to the
bus probe method.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
---
 sound/drivers/opl4/opl4_seq.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/sound/drivers/opl4/opl4_seq.c b/sound/drivers/opl4/opl4_seq.c
index 7bb22089a093..043c537be293 100644
--- a/sound/drivers/opl4/opl4_seq.c
+++ b/sound/drivers/opl4/opl4_seq.c
@@ -118,9 +118,8 @@ static void snd_opl4_seq_free_port(void *private_data)
 	snd_midi_channel_free_set(opl4->chset);
 }
 
-static int snd_opl4_seq_probe(struct device *_dev)
+static int snd_opl4_seq_probe(struct snd_seq_device *dev)
 {
-	struct snd_seq_device *dev = to_seq_dev(_dev);
 	struct snd_opl4 *opl4;
 	int client;
 	struct snd_seq_port_callback pcallbacks;
@@ -175,9 +174,8 @@ static int snd_opl4_seq_probe(struct device *_dev)
 	return 0;
 }
 
-static int snd_opl4_seq_remove(struct device *_dev)
+static int snd_opl4_seq_remove(struct snd_seq_device *dev)
 {
-	struct snd_seq_device *dev = to_seq_dev(_dev);
 	struct snd_opl4 *opl4;
 
 	opl4 = *(struct snd_opl4 **)SNDRV_SEQ_DEVICE_ARGPTR(dev);
@@ -192,10 +190,10 @@ static int snd_opl4_seq_remove(struct device *_dev)
 }
 
 static struct snd_seq_driver opl4_seq_driver = {
+	.probe = snd_opl4_seq_probe,
+	.remove = snd_opl4_seq_remove,
 	.driver = {
 		.name = KBUILD_MODNAME,
-		.probe = snd_opl4_seq_probe,
-		.remove = snd_opl4_seq_remove,
 	},
 	.id = SNDRV_SEQ_DEV_ID_OPL4,
 	.argsize = sizeof(struct snd_opl4 *),
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 6/9] ALSA: sb: Convert to snd_seq bus probe mechanism
  2025-12-02 12:35 [PATCH 0/9] ALSA: seq: Use bus specific probe and remove Uwe Kleine-König
                   ` (4 preceding siblings ...)
  2025-12-02 12:35 ` [PATCH 5/9] ALSA: opl4: " Uwe Kleine-König
@ 2025-12-02 12:35 ` Uwe Kleine-König
  2025-12-02 12:35 ` [PATCH 7/9] ALSA: emu10k1: " Uwe Kleine-König
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 14+ messages in thread
From: Uwe Kleine-König @ 2025-12-02 12:35 UTC (permalink / raw)
  To: Jaroslav Kysela, Takashi Iwai; +Cc: Greg Kroah-Hartman, linux-sound

The snd_seq bus got a dedicated probe function. Make use of that. This
fixes a runtime warning about the driver needing to be converted to the
bus probe method.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
---
 sound/isa/sb/emu8000_synth.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/sound/isa/sb/emu8000_synth.c b/sound/isa/sb/emu8000_synth.c
index 9bec85ec55b4..3414c6d0695f 100644
--- a/sound/isa/sb/emu8000_synth.c
+++ b/sound/isa/sb/emu8000_synth.c
@@ -21,9 +21,8 @@ MODULE_LICENSE("GPL");
 /*
  * create a new hardware dependent device for Emu8000
  */
-static int snd_emu8000_probe(struct device *_dev)
+static int snd_emu8000_probe(struct snd_seq_device *dev)
 {
-	struct snd_seq_device *dev = to_seq_dev(_dev);
 	struct snd_emu8000 *hw;
 	struct snd_emux *emu;
 
@@ -81,13 +80,12 @@ static int snd_emu8000_probe(struct device *_dev)
 /*
  * free all resources
  */
-static int snd_emu8000_remove(struct device *_dev)
+static void snd_emu8000_remove(struct snd_seq_device *dev)
 {
-	struct snd_seq_device *dev = to_seq_dev(_dev);
 	struct snd_emu8000 *hw;
 
 	if (dev->driver_data == NULL)
-		return 0; /* no synth was allocated actually */
+		return; /* no synth was allocated actually */
 
 	hw = dev->driver_data;
 	if (hw->pcm)
@@ -96,7 +94,6 @@ static int snd_emu8000_remove(struct device *_dev)
 	snd_util_memhdr_free(hw->memhdr);
 	hw->emu = NULL;
 	hw->memhdr = NULL;
-	return 0;
 }
 
 /*
@@ -104,10 +101,10 @@ static int snd_emu8000_remove(struct device *_dev)
  */
 
 static struct snd_seq_driver emu8000_driver = {
+	.probe = snd_emu8000_probe,
+	.remove = snd_emu8000_remove,
 	.driver = {
 		.name = KBUILD_MODNAME,
-		.probe = snd_emu8000_probe,
-		.remove = snd_emu8000_remove,
 	},
 	.id = SNDRV_SEQ_DEV_ID_EMU8000,
 	.argsize = sizeof(struct snd_emu8000 *),
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 7/9] ALSA: emu10k1: Convert to snd_seq bus probe mechanism
  2025-12-02 12:35 [PATCH 0/9] ALSA: seq: Use bus specific probe and remove Uwe Kleine-König
                   ` (5 preceding siblings ...)
  2025-12-02 12:35 ` [PATCH 6/9] ALSA: sb: " Uwe Kleine-König
@ 2025-12-02 12:35 ` Uwe Kleine-König
  2025-12-02 12:35 ` [PATCH 8/9] ALSA: seq: oss: " Uwe Kleine-König
                   ` (2 subsequent siblings)
  9 siblings, 0 replies; 14+ messages in thread
From: Uwe Kleine-König @ 2025-12-02 12:35 UTC (permalink / raw)
  To: Jaroslav Kysela, Takashi Iwai; +Cc: Greg Kroah-Hartman, linux-sound

The snd_seq bus got a dedicated probe function. Make use of that. This
fixes a runtime warning about the driver needing to be converted to the
bus probe method.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
---
 sound/pci/emu10k1/emu10k1_synth.c | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/sound/pci/emu10k1/emu10k1_synth.c b/sound/pci/emu10k1/emu10k1_synth.c
index 662d20eb9689..26499c31eaa8 100644
--- a/sound/pci/emu10k1/emu10k1_synth.c
+++ b/sound/pci/emu10k1/emu10k1_synth.c
@@ -16,9 +16,8 @@ MODULE_LICENSE("GPL");
 /*
  * create a new hardware dependent device for Emu10k1
  */
-static int snd_emu10k1_synth_probe(struct device *_dev)
+static int snd_emu10k1_synth_probe(struct snd_seq_device *dev)
 {
-	struct snd_seq_device *dev = to_seq_dev(_dev);
 	struct snd_emux *emux;
 	struct snd_emu10k1 *hw;
 	struct snd_emu10k1_synth_arg *arg;
@@ -64,14 +63,13 @@ static int snd_emu10k1_synth_probe(struct device *_dev)
 	return 0;
 }
 
-static int snd_emu10k1_synth_remove(struct device *_dev)
+static void snd_emu10k1_synth_remove(struct snd_seq_device *dev)
 {
-	struct snd_seq_device *dev = to_seq_dev(_dev);
 	struct snd_emux *emux;
 	struct snd_emu10k1 *hw;
 
 	if (dev->driver_data == NULL)
-		return 0; /* not registered actually */
+		return; /* not registered actually */
 
 	emux = dev->driver_data;
 
@@ -82,7 +80,6 @@ static int snd_emu10k1_synth_remove(struct device *_dev)
 	}
 
 	snd_emux_free(emux);
-	return 0;
 }
 
 /*
@@ -90,10 +87,10 @@ static int snd_emu10k1_synth_remove(struct device *_dev)
  */
 
 static struct snd_seq_driver emu10k1_synth_driver = {
+	.probe = snd_emu10k1_synth_probe,
+	.remove = snd_emu10k1_synth_remove,
 	.driver = {
 		.name = KBUILD_MODNAME,
-		.probe = snd_emu10k1_synth_probe,
-		.remove = snd_emu10k1_synth_remove,
 	},
 	.id = SNDRV_SEQ_DEV_ID_EMU10K1_SYNTH,
 	.argsize = sizeof(struct snd_emu10k1_synth_arg),
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 8/9] ALSA: seq: oss: Convert to snd_seq bus probe mechanism
  2025-12-02 12:35 [PATCH 0/9] ALSA: seq: Use bus specific probe and remove Uwe Kleine-König
                   ` (6 preceding siblings ...)
  2025-12-02 12:35 ` [PATCH 7/9] ALSA: emu10k1: " Uwe Kleine-König
@ 2025-12-02 12:35 ` Uwe Kleine-König
  2025-12-02 12:35 ` [PATCH 9/9] ALSA: seq: Refuse to probe seq drivers with non-bus probe or remove Uwe Kleine-König
  2025-12-02 14:17 ` [PATCH 0/9] ALSA: seq: Use bus specific probe and remove Takashi Iwai
  9 siblings, 0 replies; 14+ messages in thread
From: Uwe Kleine-König @ 2025-12-02 12:35 UTC (permalink / raw)
  To: Jaroslav Kysela, Takashi Iwai; +Cc: Greg Kroah-Hartman, linux-sound

The snd_seq bus got a dedicated probe function. Make use of that. This
fixes a runtime warning about the driver needing to be converted to the
bus probe method.

Note that the remove callback returns void now. The actual return value
was ignored before (see device_remove() in drivers/base/dd.c), so there
is no problem introduced by converting `return -EINVAL` to `return`.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
---
 sound/core/seq/oss/seq_oss.c       |  4 ++--
 sound/core/seq/oss/seq_oss_synth.c | 12 ++++--------
 sound/core/seq/oss/seq_oss_synth.h |  4 ++--
 3 files changed, 8 insertions(+), 12 deletions(-)

diff --git a/sound/core/seq/oss/seq_oss.c b/sound/core/seq/oss/seq_oss.c
index 02d30d8b6c3a..021cd70f90db 100644
--- a/sound/core/seq/oss/seq_oss.c
+++ b/sound/core/seq/oss/seq_oss.c
@@ -54,10 +54,10 @@ static __poll_t odev_poll(struct file *file, poll_table * wait);
  */
 
 static struct snd_seq_driver seq_oss_synth_driver = {
+	.probe = snd_seq_oss_synth_probe,
+	.remove = snd_seq_oss_synth_remove,
 	.driver = {
 		.name = KBUILD_MODNAME,
-		.probe = snd_seq_oss_synth_probe,
-		.remove = snd_seq_oss_synth_remove,
 	},
 	.id = SNDRV_SEQ_DEV_ID_OSS,
 	.argsize = sizeof(struct snd_seq_oss_reg),
diff --git a/sound/core/seq/oss/seq_oss_synth.c b/sound/core/seq/oss/seq_oss_synth.c
index 8c4e5913c7e6..68bc6d4eed53 100644
--- a/sound/core/seq/oss/seq_oss_synth.c
+++ b/sound/core/seq/oss/seq_oss_synth.c
@@ -80,9 +80,8 @@ snd_seq_oss_synth_init(void)
  * registration of the synth device
  */
 int
-snd_seq_oss_synth_probe(struct device *_dev)
+snd_seq_oss_synth_probe(struct snd_seq_device *dev)
 {
-	struct snd_seq_device *dev = to_seq_dev(_dev);
 	int i;
 	struct seq_oss_synth *rec;
 	struct snd_seq_oss_reg *reg = SNDRV_SEQ_DEVICE_ARGPTR(dev);
@@ -128,10 +127,9 @@ snd_seq_oss_synth_probe(struct device *_dev)
 }
 
 
-int
-snd_seq_oss_synth_remove(struct device *_dev)
+void
+snd_seq_oss_synth_remove(struct snd_seq_device *dev)
 {
-	struct snd_seq_device *dev = to_seq_dev(_dev);
 	int index;
 	struct seq_oss_synth *rec = dev->driver_data;
 
@@ -142,7 +140,7 @@ snd_seq_oss_synth_remove(struct device *_dev)
 		}
 		if (index >= max_synth_devs) {
 			pr_err("ALSA: seq_oss: can't unregister synth\n");
-			return -EINVAL;
+			return;
 		}
 		synth_devs[index] = NULL;
 		if (index == max_synth_devs - 1) {
@@ -160,8 +158,6 @@ snd_seq_oss_synth_remove(struct device *_dev)
 
 	snd_use_lock_sync(&rec->use_lock);
 	kfree(rec);
-
-	return 0;
 }
 
 
diff --git a/sound/core/seq/oss/seq_oss_synth.h b/sound/core/seq/oss/seq_oss_synth.h
index ffc40d8a7ef1..f52283904cba 100644
--- a/sound/core/seq/oss/seq_oss_synth.h
+++ b/sound/core/seq/oss/seq_oss_synth.h
@@ -15,8 +15,8 @@
 #include <sound/seq_device.h>
 
 void snd_seq_oss_synth_init(void);
-int snd_seq_oss_synth_probe(struct device *dev);
-int snd_seq_oss_synth_remove(struct device *dev);
+int snd_seq_oss_synth_probe(struct snd_seq_device *dev);
+void snd_seq_oss_synth_remove(struct snd_seq_device *dev);
 void snd_seq_oss_synth_setup(struct seq_oss_devinfo *dp);
 void snd_seq_oss_synth_setup_midi(struct seq_oss_devinfo *dp);
 void snd_seq_oss_synth_cleanup(struct seq_oss_devinfo *dp);
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 9/9] ALSA: seq: Refuse to probe seq drivers with non-bus probe or remove
  2025-12-02 12:35 [PATCH 0/9] ALSA: seq: Use bus specific probe and remove Uwe Kleine-König
                   ` (7 preceding siblings ...)
  2025-12-02 12:35 ` [PATCH 8/9] ALSA: seq: oss: " Uwe Kleine-König
@ 2025-12-02 12:35 ` Uwe Kleine-König
  2025-12-02 14:17 ` [PATCH 0/9] ALSA: seq: Use bus specific probe and remove Takashi Iwai
  9 siblings, 0 replies; 14+ messages in thread
From: Uwe Kleine-König @ 2025-12-02 12:35 UTC (permalink / raw)
  To: Jaroslav Kysela, Takashi Iwai; +Cc: Greg Kroah-Hartman, linux-sound

Now that all in-tree seq drivers are converted to bus methods, let
old-style drivers fails to probe until driver methods are removed.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
---
 sound/core/seq_device.c | 27 ++-------------------------
 1 file changed, 2 insertions(+), 25 deletions(-)

diff --git a/sound/core/seq_device.c b/sound/core/seq_device.c
index d746c8d0c58b..1b062d6b17ea 100644
--- a/sound/core/seq_device.c
+++ b/sound/core/seq_device.c
@@ -264,40 +264,17 @@ int snd_seq_device_new(struct snd_card *card, int device, const char *id,
 }
 EXPORT_SYMBOL(snd_seq_device_new);
 
-static int snd_seq_driver_legacy_probe(struct snd_seq_device *sdev)
-{
-	struct device *dev = &sdev->dev;
-	struct device_driver *driver = dev->driver;
-
-	return driver->probe(dev);
-}
-
-static void snd_seq_driver_legacy_remove(struct snd_seq_device *sdev)
-{
-	struct device *dev = &sdev->dev;
-	struct device_driver *driver = dev->driver;
-	int ret;
-
-	ret = driver->remove(dev);
-	if (unlikely(ret))
-		dev_warn(dev, "Ignoring return value of remove callback (%pe)\n", ERR_PTR(ret));
-}
-
 /*
  * driver registration
  */
 int __snd_seq_driver_register(struct snd_seq_driver *drv, struct module *mod)
 {
-	if (WARN_ON(!drv->driver.name || !drv->id))
+	if (WARN_ON(!drv->driver.name || !drv->id || drv->driver.probe || drv->driver.remove))
 		return -EINVAL;
+
 	drv->driver.bus = &snd_seq_bus_type;
 	drv->driver.owner = mod;
 
-	if (!drv->probe && drv->driver.probe)
-		drv->probe = snd_seq_driver_legacy_probe;
-	if (!drv->remove && drv->driver.remove)
-		drv->remove = snd_seq_driver_legacy_remove;
-
 	return driver_register(&drv->driver);
 }
 EXPORT_SYMBOL_GPL(__snd_seq_driver_register);
-- 
2.47.3


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH 0/9] ALSA: seq: Use bus specific probe and remove
  2025-12-02 12:35 [PATCH 0/9] ALSA: seq: Use bus specific probe and remove Uwe Kleine-König
                   ` (8 preceding siblings ...)
  2025-12-02 12:35 ` [PATCH 9/9] ALSA: seq: Refuse to probe seq drivers with non-bus probe or remove Uwe Kleine-König
@ 2025-12-02 14:17 ` Takashi Iwai
  2025-12-02 16:12   ` Uwe Kleine-König
  9 siblings, 1 reply; 14+ messages in thread
From: Takashi Iwai @ 2025-12-02 14:17 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: Jaroslav Kysela, Takashi Iwai, Clemens Ladisch,
	Greg Kroah-Hartman, linux-sound

On Tue, 02 Dec 2025 13:35:49 +0100,
Uwe Kleine-König wrote:
> 
> Hello,
> 
> for the quest to drop .probe(), .remove() and .shutdown() from struct
> device_driver, this patch set converts all seq drivers to use bus type
> callbacks.
> 
> The dependencies here are:
>  - patches #2 - #8 depend (only) on patch #1
>  - patch #9 depends on #1 - #8
> but I guess this series will go in in a single go and there is no need
> to coordinate merging.
> 
> This series is compile tested only, as I have no access to seq devices.
> Still I'm reasonably sure that there is no user-visible effect when this
> series is applied. (There is a runtime warning introduced by patch #1
> that goes away with patches #2-#8 again. So future bisections suffer a
> tiny bit.)

It looks OK though a quick glance, but since it's a bit too late for
6.19, I'll postpone this series for 6.20, unless those are urgently
required for any reason.


thanks,

Takashi

> 
> Best regards
> Uwe
> 
> Uwe Kleine-König (9):
>   ALSA: seq: Use bus specific probe and remove
>   ALSA: seq: midi: Convert to snd_seq bus probe mechanism
>   ALSA: seq: ump: Convert to snd_seq bus probe mechanism
>   ALSA: opl3: Convert to snd_seq bus probe mechanism
>   ALSA: opl4: Convert to snd_seq bus probe mechanism
>   ALSA: sb: Convert to snd_seq bus probe mechanism
>   ALSA: emu10k1: Convert to snd_seq bus probe mechanism
>   ALSA: seq: oss: Convert to snd_seq bus probe mechanism
>   ALSA: seq: Refuse to probe seq drivers with non-bus probe or remove
> 
>  include/sound/seq_device.h         |  2 ++
>  sound/core/seq/oss/seq_oss.c       |  4 ++--
>  sound/core/seq/oss/seq_oss_synth.c | 12 ++++--------
>  sound/core/seq/oss/seq_oss_synth.h |  4 ++--
>  sound/core/seq/seq_midi.c          | 15 ++++++---------
>  sound/core/seq/seq_ump_client.c    | 11 ++++-------
>  sound/core/seq_device.c            | 26 +++++++++++++++++++++++++-
>  sound/drivers/opl3/opl3_seq.c      | 13 +++++--------
>  sound/drivers/opl4/opl4_seq.c      | 10 ++++------
>  sound/isa/sb/emu8000_synth.c       | 13 +++++--------
>  sound/pci/emu10k1/emu10k1_synth.c  | 13 +++++--------
>  11 files changed, 64 insertions(+), 59 deletions(-)
> 
> 
> base-commit: 7d0a66e4bb9081d75c82ec4957c50034cb0ea449
> -- 
> 2.47.3
> 

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 0/9] ALSA: seq: Use bus specific probe and remove
  2025-12-02 14:17 ` [PATCH 0/9] ALSA: seq: Use bus specific probe and remove Takashi Iwai
@ 2025-12-02 16:12   ` Uwe Kleine-König
  0 siblings, 0 replies; 14+ messages in thread
From: Uwe Kleine-König @ 2025-12-02 16:12 UTC (permalink / raw)
  To: Takashi Iwai
  Cc: Jaroslav Kysela, Takashi Iwai, Clemens Ladisch,
	Greg Kroah-Hartman, linux-sound

[-- Attachment #1: Type: text/plain, Size: 1208 bytes --]

Hello,

On Tue, Dec 02, 2025 at 03:17:05PM +0100, Takashi Iwai wrote:
> On Tue, 02 Dec 2025 13:35:49 +0100,
> Uwe Kleine-König wrote:
> > for the quest to drop .probe(), .remove() and .shutdown() from struct
> > device_driver, this patch set converts all seq drivers to use bus type
> > callbacks.
> > 
> > The dependencies here are:
> >  - patches #2 - #8 depend (only) on patch #1
> >  - patch #9 depends on #1 - #8
> > but I guess this series will go in in a single go and there is no need
> > to coordinate merging.
> > 
> > This series is compile tested only, as I have no access to seq devices.
> > Still I'm reasonably sure that there is no user-visible effect when this
> > series is applied. (There is a runtime warning introduced by patch #1
> > that goes away with patches #2-#8 again. So future bisections suffer a
> > tiny bit.)
> 
> It looks OK though a quick glance, but since it's a bit too late for
> 6.19, I'll postpone this series for 6.20, unless those are urgently
> required for any reason.

There is no urge on my side and 6.20 is fine. There is still much to do
before struct device_driver can be adapted.

Best regards and thanks for your feedback,
Uwe

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 5/9] ALSA: opl4: Convert to snd_seq bus probe mechanism
  2025-12-02 12:35 ` [PATCH 5/9] ALSA: opl4: " Uwe Kleine-König
@ 2025-12-03 13:46   ` Uwe Kleine-König
  2025-12-03 13:51     ` Takashi Iwai
  0 siblings, 1 reply; 14+ messages in thread
From: Uwe Kleine-König @ 2025-12-03 13:46 UTC (permalink / raw)
  To: Clemens Ladisch, Jaroslav Kysela, Takashi Iwai
  Cc: Greg Kroah-Hartman, linux-sound

[-- Attachment #1: Type: text/plain, Size: 2435 bytes --]

hello,

On Tue, Dec 02, 2025 at 01:35:54PM +0100, Uwe Kleine-König wrote:
> The snd_seq bus got a dedicated probe function. Make use of that. This
> fixes a runtime warning about the driver needing to be converted to the
> bus probe method.
> 
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
> ---
>  sound/drivers/opl4/opl4_seq.c | 10 ++++------
>  1 file changed, 4 insertions(+), 6 deletions(-)
> 
> diff --git a/sound/drivers/opl4/opl4_seq.c b/sound/drivers/opl4/opl4_seq.c
> index 7bb22089a093..043c537be293 100644
> --- a/sound/drivers/opl4/opl4_seq.c
> +++ b/sound/drivers/opl4/opl4_seq.c
> @@ -118,9 +118,8 @@ static void snd_opl4_seq_free_port(void *private_data)
>  	snd_midi_channel_free_set(opl4->chset);
>  }
>  
> -static int snd_opl4_seq_probe(struct device *_dev)
> +static int snd_opl4_seq_probe(struct snd_seq_device *dev)
>  {
> -	struct snd_seq_device *dev = to_seq_dev(_dev);
>  	struct snd_opl4 *opl4;
>  	int client;
>  	struct snd_seq_port_callback pcallbacks;
> @@ -175,9 +174,8 @@ static int snd_opl4_seq_probe(struct device *_dev)
>  	return 0;
>  }
>  
> -static int snd_opl4_seq_remove(struct device *_dev)
> +static int snd_opl4_seq_remove(struct snd_seq_device *dev)
>  {
> -	struct snd_seq_device *dev = to_seq_dev(_dev);
>  	struct snd_opl4 *opl4;
>  
>  	opl4 = *(struct snd_opl4 **)SNDRV_SEQ_DEVICE_ARGPTR(dev);

There is a build problem that escaped my build testing (on arm64). This
additionally needs:

diff --git a/sound/drivers/opl4/opl4_seq.c b/sound/drivers/opl4/opl4_seq.c
index 043c537be293..fd6f15be6109 100644
--- a/sound/drivers/opl4/opl4_seq.c
+++ b/sound/drivers/opl4/opl4_seq.c
@@ -174,19 +174,18 @@ static int snd_opl4_seq_probe(struct snd_seq_device *dev)
 	return 0;
 }
 
-static int snd_opl4_seq_remove(struct snd_seq_device *dev)
+static void snd_opl4_seq_remove(struct snd_seq_device *dev)
 {
 	struct snd_opl4 *opl4;
 
 	opl4 = *(struct snd_opl4 **)SNDRV_SEQ_DEVICE_ARGPTR(dev);
 	if (!opl4)
-		return -EINVAL;
+		return;
 
 	if (opl4->seq_client >= 0) {
 		snd_seq_delete_kernel_client(opl4->seq_client);
 		opl4->seq_client = -1;
 	}
-	return 0;
 }
 
 static struct snd_seq_driver opl4_seq_driver = {

I don't know if it's already applied, please tell me if you want a v2 or
a proper patch on top of this (or if you even squash this into the
original commit).

Sorry for the mess
Uwe

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH 5/9] ALSA: opl4: Convert to snd_seq bus probe mechanism
  2025-12-03 13:46   ` Uwe Kleine-König
@ 2025-12-03 13:51     ` Takashi Iwai
  0 siblings, 0 replies; 14+ messages in thread
From: Takashi Iwai @ 2025-12-03 13:51 UTC (permalink / raw)
  To: Uwe Kleine-König
  Cc: Clemens Ladisch, Jaroslav Kysela, Takashi Iwai,
	Greg Kroah-Hartman, linux-sound

On Wed, 03 Dec 2025 14:46:27 +0100,
Uwe Kleine-König wrote:
> 
> hello,
> 
> On Tue, Dec 02, 2025 at 01:35:54PM +0100, Uwe Kleine-König wrote:
> > The snd_seq bus got a dedicated probe function. Make use of that. This
> > fixes a runtime warning about the driver needing to be converted to the
> > bus probe method.
> > 
> > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
> > ---
> >  sound/drivers/opl4/opl4_seq.c | 10 ++++------
> >  1 file changed, 4 insertions(+), 6 deletions(-)
> > 
> > diff --git a/sound/drivers/opl4/opl4_seq.c b/sound/drivers/opl4/opl4_seq.c
> > index 7bb22089a093..043c537be293 100644
> > --- a/sound/drivers/opl4/opl4_seq.c
> > +++ b/sound/drivers/opl4/opl4_seq.c
> > @@ -118,9 +118,8 @@ static void snd_opl4_seq_free_port(void *private_data)
> >  	snd_midi_channel_free_set(opl4->chset);
> >  }
> >  
> > -static int snd_opl4_seq_probe(struct device *_dev)
> > +static int snd_opl4_seq_probe(struct snd_seq_device *dev)
> >  {
> > -	struct snd_seq_device *dev = to_seq_dev(_dev);
> >  	struct snd_opl4 *opl4;
> >  	int client;
> >  	struct snd_seq_port_callback pcallbacks;
> > @@ -175,9 +174,8 @@ static int snd_opl4_seq_probe(struct device *_dev)
> >  	return 0;
> >  }
> >  
> > -static int snd_opl4_seq_remove(struct device *_dev)
> > +static int snd_opl4_seq_remove(struct snd_seq_device *dev)
> >  {
> > -	struct snd_seq_device *dev = to_seq_dev(_dev);
> >  	struct snd_opl4 *opl4;
> >  
> >  	opl4 = *(struct snd_opl4 **)SNDRV_SEQ_DEVICE_ARGPTR(dev);
> 
> There is a build problem that escaped my build testing (on arm64). This
> additionally needs:
> 
> diff --git a/sound/drivers/opl4/opl4_seq.c b/sound/drivers/opl4/opl4_seq.c
> index 043c537be293..fd6f15be6109 100644
> --- a/sound/drivers/opl4/opl4_seq.c
> +++ b/sound/drivers/opl4/opl4_seq.c
> @@ -174,19 +174,18 @@ static int snd_opl4_seq_probe(struct snd_seq_device *dev)
>  	return 0;
>  }
>  
> -static int snd_opl4_seq_remove(struct snd_seq_device *dev)
> +static void snd_opl4_seq_remove(struct snd_seq_device *dev)
>  {
>  	struct snd_opl4 *opl4;
>  
>  	opl4 = *(struct snd_opl4 **)SNDRV_SEQ_DEVICE_ARGPTR(dev);
>  	if (!opl4)
> -		return -EINVAL;
> +		return;
>  
>  	if (opl4->seq_client >= 0) {
>  		snd_seq_delete_kernel_client(opl4->seq_client);
>  		opl4->seq_client = -1;
>  	}
> -	return 0;
>  }
>  
>  static struct snd_seq_driver opl4_seq_driver = {
> 
> I don't know if it's already applied, please tell me if you want a v2 or
> a proper patch on top of this (or if you even squash this into the
> original commit).
> 
> Sorry for the mess

Don't worry, I haven't applied them yet, so feel free to resubmit.


thanks,

Takashi

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2025-12-03 13:51 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-02 12:35 [PATCH 0/9] ALSA: seq: Use bus specific probe and remove Uwe Kleine-König
2025-12-02 12:35 ` [PATCH 1/9] " Uwe Kleine-König
2025-12-02 12:35 ` [PATCH 2/9] ALSA: seq: midi: Convert to snd_seq bus probe mechanism Uwe Kleine-König
2025-12-02 12:35 ` [PATCH 3/9] ALSA: seq: ump: " Uwe Kleine-König
2025-12-02 12:35 ` [PATCH 4/9] ALSA: opl3: " Uwe Kleine-König
2025-12-02 12:35 ` [PATCH 5/9] ALSA: opl4: " Uwe Kleine-König
2025-12-03 13:46   ` Uwe Kleine-König
2025-12-03 13:51     ` Takashi Iwai
2025-12-02 12:35 ` [PATCH 6/9] ALSA: sb: " Uwe Kleine-König
2025-12-02 12:35 ` [PATCH 7/9] ALSA: emu10k1: " Uwe Kleine-König
2025-12-02 12:35 ` [PATCH 8/9] ALSA: seq: oss: " Uwe Kleine-König
2025-12-02 12:35 ` [PATCH 9/9] ALSA: seq: Refuse to probe seq drivers with non-bus probe or remove Uwe Kleine-König
2025-12-02 14:17 ` [PATCH 0/9] ALSA: seq: Use bus specific probe and remove Takashi Iwai
2025-12-02 16:12   ` Uwe Kleine-König

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox