All of lore.kernel.org
 help / color / mirror / Atom feed
* FAILED: patch "[PATCH] ASoC: cs42l51: fix driver to properly autoload with automatic" failed to apply to 5.15-stable tree
@ 2023-07-23 14:07 gregkh
  2023-07-27 12:33 ` [PATCH 5.15.y] ASoC: cs42l51: fix driver to properly autoload with automatic module loading Thomas Petazzoni
  0 siblings, 1 reply; 5+ messages in thread
From: gregkh @ 2023-07-23 14:07 UTC (permalink / raw)
  To: thomas.petazzoni, broonie; +Cc: stable


The patch below does not apply to the 5.15-stable tree.
If someone wants it applied there, or to any other stable or longterm
tree, then please email the backport, including the original git commit
id to <stable@vger.kernel.org>.

To reproduce the conflict and resubmit, you may use the following commands:

git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.15.y
git checkout FETCH_HEAD
git cherry-pick -x e51df4f81b02bcdd828a04de7c1eb6a92988b61e
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<stable@vger.kernel.org>' --in-reply-to '2023072301-online-accent-4365@gregkh' --subject-prefix 'PATCH 5.15.y' HEAD^..

Possible dependencies:

e51df4f81b02 ("ASoC: cs42l51: fix driver to properly autoload with automatic module loading")
4a4043456cb8 ("ASoC: cs*: use simple i2c probe function")
f8593e885400 ("ASoC: cs42l42: Handle system suspend")
5982b5a8ec7d ("ASoC: cs42l42: Change jack_detect_mutex to a lock of all IRQ handling")
8d06f797f844 ("ASoC: cs42l42: Report full jack status when plug is detected")
a319cb32e7cf ("ASoC: cs4265: Add a remove() function")
fdd535283779 ("ASoC: cs42l42: Report initial jack state")
c778c01d3e66 ("ASoC: cs42l42: Remove unused runtime_suspend/runtime_resume callbacks")

thanks,

greg k-h

------------------ original commit in Linus's tree ------------------

From e51df4f81b02bcdd828a04de7c1eb6a92988b61e Mon Sep 17 00:00:00 2001
From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Date: Thu, 13 Jul 2023 13:21:12 +0200
Subject: [PATCH] ASoC: cs42l51: fix driver to properly autoload with automatic
 module loading

In commit 2cb1e0259f50 ("ASoC: cs42l51: re-hook of_match_table
pointer"), 9 years ago, some random guy fixed the cs42l51 after it was
split into a core part and an I2C part to properly match based on a
Device Tree compatible string.

However, the fix in this commit is wrong: the MODULE_DEVICE_TABLE(of,
....) is in the core part of the driver, not the I2C part. Therefore,
automatic module loading based on module.alias, based on matching with
the DT compatible string, loads the core part of the driver, but not
the I2C part. And threfore, the i2c_driver is not registered, and the
codec is not known to the system, nor matched with a DT node with the
corresponding compatible string.

In order to fix that, we move the MODULE_DEVICE_TABLE(of, ...) into
the I2C part of the driver. The cs42l51_of_match[] array is also moved
as well, as it is not possible to have this definition in one file,
and the MODULE_DEVICE_TABLE(of, ...) invocation in another file, due
to how MODULE_DEVICE_TABLE works.

Thanks to this commit, the I2C part of the driver now properly
autoloads, and thanks to its dependency on the core part, the core
part gets autoloaded as well, resulting in a functional sound card
without having to manually load kernel modules.

Fixes: 2cb1e0259f50 ("ASoC: cs42l51: re-hook of_match_table pointer")
Cc: stable@vger.kernel.org
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Link: https://lore.kernel.org/r/20230713112112.778576-1-thomas.petazzoni@bootlin.com
Signed-off-by: Mark Brown <broonie@kernel.org>

diff --git a/sound/soc/codecs/cs42l51-i2c.c b/sound/soc/codecs/cs42l51-i2c.c
index b2106ff6a7cb..e7db7bcd0296 100644
--- a/sound/soc/codecs/cs42l51-i2c.c
+++ b/sound/soc/codecs/cs42l51-i2c.c
@@ -19,6 +19,12 @@ static struct i2c_device_id cs42l51_i2c_id[] = {
 };
 MODULE_DEVICE_TABLE(i2c, cs42l51_i2c_id);
 
+const struct of_device_id cs42l51_of_match[] = {
+	{ .compatible = "cirrus,cs42l51", },
+	{ }
+};
+MODULE_DEVICE_TABLE(of, cs42l51_of_match);
+
 static int cs42l51_i2c_probe(struct i2c_client *i2c)
 {
 	struct regmap_config config;
diff --git a/sound/soc/codecs/cs42l51.c b/sound/soc/codecs/cs42l51.c
index a67cd3ee84e0..a7079ae0ca09 100644
--- a/sound/soc/codecs/cs42l51.c
+++ b/sound/soc/codecs/cs42l51.c
@@ -823,13 +823,6 @@ int __maybe_unused cs42l51_resume(struct device *dev)
 }
 EXPORT_SYMBOL_GPL(cs42l51_resume);
 
-const struct of_device_id cs42l51_of_match[] = {
-	{ .compatible = "cirrus,cs42l51", },
-	{ }
-};
-MODULE_DEVICE_TABLE(of, cs42l51_of_match);
-EXPORT_SYMBOL_GPL(cs42l51_of_match);
-
 MODULE_AUTHOR("Arnaud Patard <arnaud.patard@rtp-net.org>");
 MODULE_DESCRIPTION("Cirrus Logic CS42L51 ALSA SoC Codec Driver");
 MODULE_LICENSE("GPL");
diff --git a/sound/soc/codecs/cs42l51.h b/sound/soc/codecs/cs42l51.h
index a79343e8a54e..125703ede113 100644
--- a/sound/soc/codecs/cs42l51.h
+++ b/sound/soc/codecs/cs42l51.h
@@ -16,7 +16,6 @@ int cs42l51_probe(struct device *dev, struct regmap *regmap);
 void cs42l51_remove(struct device *dev);
 int __maybe_unused cs42l51_suspend(struct device *dev);
 int __maybe_unused cs42l51_resume(struct device *dev);
-extern const struct of_device_id cs42l51_of_match[];
 
 #define CS42L51_CHIP_ID			0x1B
 #define CS42L51_CHIP_REV_A		0x00


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

* [PATCH 5.15.y] ASoC: cs42l51: fix driver to properly autoload with automatic module loading
  2023-07-23 14:07 FAILED: patch "[PATCH] ASoC: cs42l51: fix driver to properly autoload with automatic" failed to apply to 5.15-stable tree gregkh
@ 2023-07-27 12:33 ` Thomas Petazzoni
  2023-08-01  8:03   ` Greg KH
  0 siblings, 1 reply; 5+ messages in thread
From: Thomas Petazzoni @ 2023-07-27 12:33 UTC (permalink / raw)
  To: stable; +Cc: Thomas Petazzoni

In commit 2cb1e0259f50 ("ASoC: cs42l51: re-hook of_match_table
pointer"), 9 years ago, some random guy fixed the cs42l51 after it was
split into a core part and an I2C part to properly match based on a
Device Tree compatible string.

However, the fix in this commit is wrong: the MODULE_DEVICE_TABLE(of,
....) is in the core part of the driver, not the I2C part. Therefore,
automatic module loading based on module.alias, based on matching with
the DT compatible string, loads the core part of the driver, but not
the I2C part. And threfore, the i2c_driver is not registered, and the
codec is not known to the system, nor matched with a DT node with the
corresponding compatible string.

In order to fix that, we move the MODULE_DEVICE_TABLE(of, ...) into
the I2C part of the driver. The cs42l51_of_match[] array is also moved
as well, as it is not possible to have this definition in one file,
and the MODULE_DEVICE_TABLE(of, ...) invocation in another file, due
to how MODULE_DEVICE_TABLE works.

Thanks to this commit, the I2C part of the driver now properly
autoloads, and thanks to its dependency on the core part, the core
part gets autoloaded as well, resulting in a functional sound card
without having to manually load kernel modules.

Fixes: 2cb1e0259f50 ("ASoC: cs42l51: re-hook of_match_table pointer")
Cc: stable@vger.kernel.org
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
---
 sound/soc/codecs/cs42l51-i2c.c | 6 ++++++
 sound/soc/codecs/cs42l51.c     | 7 -------
 sound/soc/codecs/cs42l51.h     | 1 -
 3 files changed, 6 insertions(+), 8 deletions(-)

diff --git a/sound/soc/codecs/cs42l51-i2c.c b/sound/soc/codecs/cs42l51-i2c.c
index 70260e0a8f09..3ff73367897d 100644
--- a/sound/soc/codecs/cs42l51-i2c.c
+++ b/sound/soc/codecs/cs42l51-i2c.c
@@ -19,6 +19,12 @@ static struct i2c_device_id cs42l51_i2c_id[] = {
 };
 MODULE_DEVICE_TABLE(i2c, cs42l51_i2c_id);
 
+const struct of_device_id cs42l51_of_match[] = {
+	{ .compatible = "cirrus,cs42l51", },
+	{ }
+};
+MODULE_DEVICE_TABLE(of, cs42l51_of_match);
+
 static int cs42l51_i2c_probe(struct i2c_client *i2c,
 			     const struct i2c_device_id *id)
 {
diff --git a/sound/soc/codecs/cs42l51.c b/sound/soc/codecs/cs42l51.c
index c61b17dc2af8..4b026e1c3fe3 100644
--- a/sound/soc/codecs/cs42l51.c
+++ b/sound/soc/codecs/cs42l51.c
@@ -825,13 +825,6 @@ int __maybe_unused cs42l51_resume(struct device *dev)
 }
 EXPORT_SYMBOL_GPL(cs42l51_resume);
 
-const struct of_device_id cs42l51_of_match[] = {
-	{ .compatible = "cirrus,cs42l51", },
-	{ }
-};
-MODULE_DEVICE_TABLE(of, cs42l51_of_match);
-EXPORT_SYMBOL_GPL(cs42l51_of_match);
-
 MODULE_AUTHOR("Arnaud Patard <arnaud.patard@rtp-net.org>");
 MODULE_DESCRIPTION("Cirrus Logic CS42L51 ALSA SoC Codec Driver");
 MODULE_LICENSE("GPL");
diff --git a/sound/soc/codecs/cs42l51.h b/sound/soc/codecs/cs42l51.h
index 9d06cf7f8876..4f13c38484b7 100644
--- a/sound/soc/codecs/cs42l51.h
+++ b/sound/soc/codecs/cs42l51.h
@@ -16,7 +16,6 @@ int cs42l51_probe(struct device *dev, struct regmap *regmap);
 int cs42l51_remove(struct device *dev);
 int __maybe_unused cs42l51_suspend(struct device *dev);
 int __maybe_unused cs42l51_resume(struct device *dev);
-extern const struct of_device_id cs42l51_of_match[];
 
 #define CS42L51_CHIP_ID			0x1B
 #define CS42L51_CHIP_REV_A		0x00
-- 
2.41.0


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

* Re: [PATCH 5.15.y] ASoC: cs42l51: fix driver to properly autoload with automatic module loading
  2023-07-27 12:33 ` [PATCH 5.15.y] ASoC: cs42l51: fix driver to properly autoload with automatic module loading Thomas Petazzoni
@ 2023-08-01  8:03   ` Greg KH
  2023-08-01  8:15     ` Thomas Petazzoni
  0 siblings, 1 reply; 5+ messages in thread
From: Greg KH @ 2023-08-01  8:03 UTC (permalink / raw)
  To: Thomas Petazzoni; +Cc: stable

On Thu, Jul 27, 2023 at 02:33:39PM +0200, Thomas Petazzoni wrote:
> In commit 2cb1e0259f50 ("ASoC: cs42l51: re-hook of_match_table
> pointer"), 9 years ago, some random guy fixed the cs42l51 after it was
> split into a core part and an I2C part to properly match based on a
> Device Tree compatible string.
> 
> However, the fix in this commit is wrong: the MODULE_DEVICE_TABLE(of,
> ....) is in the core part of the driver, not the I2C part. Therefore,
> automatic module loading based on module.alias, based on matching with
> the DT compatible string, loads the core part of the driver, but not
> the I2C part. And threfore, the i2c_driver is not registered, and the
> codec is not known to the system, nor matched with a DT node with the
> corresponding compatible string.
> 
> In order to fix that, we move the MODULE_DEVICE_TABLE(of, ...) into
> the I2C part of the driver. The cs42l51_of_match[] array is also moved
> as well, as it is not possible to have this definition in one file,
> and the MODULE_DEVICE_TABLE(of, ...) invocation in another file, due
> to how MODULE_DEVICE_TABLE works.
> 
> Thanks to this commit, the I2C part of the driver now properly
> autoloads, and thanks to its dependency on the core part, the core
> part gets autoloaded as well, resulting in a functional sound card
> without having to manually load kernel modules.
> 
> Fixes: 2cb1e0259f50 ("ASoC: cs42l51: re-hook of_match_table pointer")
> Cc: stable@vger.kernel.org
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> ---
>  sound/soc/codecs/cs42l51-i2c.c | 6 ++++++
>  sound/soc/codecs/cs42l51.c     | 7 -------
>  sound/soc/codecs/cs42l51.h     | 1 -
>  3 files changed, 6 insertions(+), 8 deletions(-)

What is the git commit id of this change in Linus's tree?

thanks,

greg k-h

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

* Re: [PATCH 5.15.y] ASoC: cs42l51: fix driver to properly autoload with automatic module loading
  2023-08-01  8:03   ` Greg KH
@ 2023-08-01  8:15     ` Thomas Petazzoni
  2023-08-01  8:53       ` Greg KH
  0 siblings, 1 reply; 5+ messages in thread
From: Thomas Petazzoni @ 2023-08-01  8:15 UTC (permalink / raw)
  To: Greg KH; +Cc: stable

Hello Greg,

On Tue, 1 Aug 2023 10:03:26 +0200
Greg KH <gregkh@linuxfoundation.org> wrote:

> On Thu, Jul 27, 2023 at 02:33:39PM +0200, Thomas Petazzoni wrote:
> > In commit 2cb1e0259f50 ("ASoC: cs42l51: re-hook of_match_table
> > pointer"), 9 years ago, some random guy fixed the cs42l51 after it was
> > split into a core part and an I2C part to properly match based on a
> > Device Tree compatible string.
> > 
> > However, the fix in this commit is wrong: the MODULE_DEVICE_TABLE(of,
> > ....) is in the core part of the driver, not the I2C part. Therefore,
> > automatic module loading based on module.alias, based on matching with
> > the DT compatible string, loads the core part of the driver, but not
> > the I2C part. And threfore, the i2c_driver is not registered, and the
> > codec is not known to the system, nor matched with a DT node with the
> > corresponding compatible string.
> > 
> > In order to fix that, we move the MODULE_DEVICE_TABLE(of, ...) into
> > the I2C part of the driver. The cs42l51_of_match[] array is also moved
> > as well, as it is not possible to have this definition in one file,
> > and the MODULE_DEVICE_TABLE(of, ...) invocation in another file, due
> > to how MODULE_DEVICE_TABLE works.
> > 
> > Thanks to this commit, the I2C part of the driver now properly
> > autoloads, and thanks to its dependency on the core part, the core
> > part gets autoloaded as well, resulting in a functional sound card
> > without having to manually load kernel modules.
> > 
> > Fixes: 2cb1e0259f50 ("ASoC: cs42l51: re-hook of_match_table pointer")
> > Cc: stable@vger.kernel.org
> > Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> > ---
> >  sound/soc/codecs/cs42l51-i2c.c | 6 ++++++
> >  sound/soc/codecs/cs42l51.c     | 7 -------
> >  sound/soc/codecs/cs42l51.h     | 1 -
> >  3 files changed, 6 insertions(+), 8 deletions(-)  
> 
> What is the git commit id of this change in Linus's tree?

Ah, I see I didn't do "git cherry-pick -x
e51df4f81b02bcdd828a04de7c1eb6a92988b61e", so the commit log doesn't
have the reference to the original commit, sorry about this.

The original commit in Linus tree is:

  https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e51df4f81b02bcdd828a04de7c1eb6a92988b61e

Thanks!

Thomas
-- 
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com

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

* Re: [PATCH 5.15.y] ASoC: cs42l51: fix driver to properly autoload with automatic module loading
  2023-08-01  8:15     ` Thomas Petazzoni
@ 2023-08-01  8:53       ` Greg KH
  0 siblings, 0 replies; 5+ messages in thread
From: Greg KH @ 2023-08-01  8:53 UTC (permalink / raw)
  To: Thomas Petazzoni; +Cc: stable

On Tue, Aug 01, 2023 at 10:15:56AM +0200, Thomas Petazzoni wrote:
> Hello Greg,
> 
> On Tue, 1 Aug 2023 10:03:26 +0200
> Greg KH <gregkh@linuxfoundation.org> wrote:
> 
> > On Thu, Jul 27, 2023 at 02:33:39PM +0200, Thomas Petazzoni wrote:
> > > In commit 2cb1e0259f50 ("ASoC: cs42l51: re-hook of_match_table
> > > pointer"), 9 years ago, some random guy fixed the cs42l51 after it was
> > > split into a core part and an I2C part to properly match based on a
> > > Device Tree compatible string.
> > > 
> > > However, the fix in this commit is wrong: the MODULE_DEVICE_TABLE(of,
> > > ....) is in the core part of the driver, not the I2C part. Therefore,
> > > automatic module loading based on module.alias, based on matching with
> > > the DT compatible string, loads the core part of the driver, but not
> > > the I2C part. And threfore, the i2c_driver is not registered, and the
> > > codec is not known to the system, nor matched with a DT node with the
> > > corresponding compatible string.
> > > 
> > > In order to fix that, we move the MODULE_DEVICE_TABLE(of, ...) into
> > > the I2C part of the driver. The cs42l51_of_match[] array is also moved
> > > as well, as it is not possible to have this definition in one file,
> > > and the MODULE_DEVICE_TABLE(of, ...) invocation in another file, due
> > > to how MODULE_DEVICE_TABLE works.
> > > 
> > > Thanks to this commit, the I2C part of the driver now properly
> > > autoloads, and thanks to its dependency on the core part, the core
> > > part gets autoloaded as well, resulting in a functional sound card
> > > without having to manually load kernel modules.
> > > 
> > > Fixes: 2cb1e0259f50 ("ASoC: cs42l51: re-hook of_match_table pointer")
> > > Cc: stable@vger.kernel.org
> > > Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> > > ---
> > >  sound/soc/codecs/cs42l51-i2c.c | 6 ++++++
> > >  sound/soc/codecs/cs42l51.c     | 7 -------
> > >  sound/soc/codecs/cs42l51.h     | 1 -
> > >  3 files changed, 6 insertions(+), 8 deletions(-)  
> > 
> > What is the git commit id of this change in Linus's tree?
> 
> Ah, I see I didn't do "git cherry-pick -x
> e51df4f81b02bcdd828a04de7c1eb6a92988b61e", so the commit log doesn't
> have the reference to the original commit, sorry about this.
> 
> The original commit in Linus tree is:
> 
>   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e51df4f81b02bcdd828a04de7c1eb6a92988b61e

Thanks, all now queued up.

greg k-h

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

end of thread, other threads:[~2023-08-01  8:53 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-07-23 14:07 FAILED: patch "[PATCH] ASoC: cs42l51: fix driver to properly autoload with automatic" failed to apply to 5.15-stable tree gregkh
2023-07-27 12:33 ` [PATCH 5.15.y] ASoC: cs42l51: fix driver to properly autoload with automatic module loading Thomas Petazzoni
2023-08-01  8:03   ` Greg KH
2023-08-01  8:15     ` Thomas Petazzoni
2023-08-01  8:53       ` Greg KH

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.