* [PATCH AUTOSEL 6.18-5.10] ASoC: tlv320adcx140: Propagate error codes during probe
[not found] <20260120193456.865383-1-sashal@kernel.org>
@ 2026-01-20 19:34 ` Sasha Levin
2026-01-20 19:34 ` [PATCH AUTOSEL 6.18-5.10] ASoC: davinci-evm: Fix reference leak in davinci_evm_probe Sasha Levin
` (2 subsequent siblings)
3 siblings, 0 replies; 4+ messages in thread
From: Sasha Levin @ 2026-01-20 19:34 UTC (permalink / raw)
To: patches, stable
Cc: Dimitrios Katsaros, Sascha Hauer, Mark Brown, Sasha Levin,
shenghao-ding, kevin-lu, baojun.xu, linux-sound
From: Dimitrios Katsaros <patcherwork@gmail.com>
[ Upstream commit d89aad92cfd15edbd704746f44c98fe687f9366f ]
When scanning for the reset pin, we could get an -EPROBE_DEFER.
The driver would assume that no reset pin had been defined,
which would mean that the chip would never be powered.
Now we both respect any error we get from devm_gpiod_get_optional.
We also now properly report the missing GPIO definition when
'gpio_reset' is NULL.
Signed-off-by: Dimitrios Katsaros <patcherwork@gmail.com>
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Link: https://patch.msgid.link/20260113-sound-soc-codecs-tvl320adcx140-v4-3-8f7ecec525c8@pengutronix.de
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
LLM Generated explanations, may be completely bogus:
This confirms my analysis. In `adcx140_reset()`, the code checks `if
(adcx140->gpio_reset)`. An error pointer like `-EPROBE_DEFER` evaluates
to TRUE (non-zero), so if the original code allowed an error pointer to
be stored, this function would try to use an invalid descriptor -
leading to a crash or undefined behavior.
## Analysis Summary
### 1. COMMIT MESSAGE ANALYSIS
- The commit message clearly explains the bug: `-EPROBE_DEFER` was being
swallowed when getting the reset GPIO
- The consequence is that "the chip would never be powered" - this is a
real functionality bug
- The fix properly propagates errors and only logs "missing GPIO" when
the GPIO is actually NULL
### 2. CODE CHANGE ANALYSIS
**The Bug:**
- `devm_gpiod_get_optional()` can return error pointers (e.g.,
`-EPROBE_DEFER`)
- The original code only logged a message when `IS_ERR()` was true, but
continued execution
- If `-EPROBE_DEFER` was returned, the driver would fail silently - the
device would not work properly
- Worse, an error pointer would pass the `if (adcx140->gpio_reset)`
check in `adcx140_reset()`, potentially causing crashes
**The Fix:**
- Properly returns errors from `devm_gpiod_get_optional()` using
`dev_err_probe()`
- `dev_err_probe()` is the modern idiom that handles `-EPROBE_DEFER`
cleanly (doesn't spam logs)
- The informational message is now correctly tied to
`!adcx140->gpio_reset` (GPIO truly not defined)
### 3. CLASSIFICATION
- **Bug fix**: Yes - fixes improper error handling that causes device
malfunction
- **Security**: No
- **New feature**: No - this is correcting existing broken behavior
- **Exception category**: Not a device ID/quirk/DT fix, but a standard
bug fix
### 4. SCOPE AND RISK ASSESSMENT
- **Lines changed**: Only ~4 lines modified
- **Files touched**: 1 file (single audio codec driver)
- **Complexity**: Very low - straightforward error handling fix
- **Risk**: Very low - the change is localized and makes the code behave
correctly
- **Subsystem**: ASoC codec driver (specific hardware, not core
infrastructure)
### 5. USER IMPACT
- **Who is affected**: Users of TLV320ADCx140 family audio codecs (TI
ADCs)
- **Severity**: Without this fix, the device may fail to initialize
properly when GPIO provider isn't ready yet
- **Real-world impact**: The `-EPROBE_DEFER` case is common during early
boot when GPIO controllers aren't yet initialized
### 6. STABILITY INDICATORS
- Has `Signed-off-by` from the patch author and subsystem maintainer
(Mark Brown)
- Standard error handling pattern used in many other drivers
### 7. DEPENDENCY CHECK
- No dependencies on other commits
- The driver has existed since kernel 5.7 (added Feb 2020)
- This fix should apply cleanly to all stable kernels that have this
driver
### Conclusion
This is an **excellent candidate for stable backport** because:
1. It fixes a real bug where `-EPROBE_DEFER` is swallowed, causing
device initialization failure
2. The fix is small, surgical, and obviously correct
3. It uses the modern `dev_err_probe()` pattern that's standard across
the kernel
4. Risk of regression is minimal - it only changes error handling to do
the right thing
5. The bug has existed since the driver was introduced, affecting all
users of this codec
**YES**
sound/soc/codecs/tlv320adcx140.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/sound/soc/codecs/tlv320adcx140.c b/sound/soc/codecs/tlv320adcx140.c
index d594bf166c0e7..bcbc240248342 100644
--- a/sound/soc/codecs/tlv320adcx140.c
+++ b/sound/soc/codecs/tlv320adcx140.c
@@ -1158,6 +1158,9 @@ static int adcx140_i2c_probe(struct i2c_client *i2c)
adcx140->gpio_reset = devm_gpiod_get_optional(adcx140->dev,
"reset", GPIOD_OUT_LOW);
if (IS_ERR(adcx140->gpio_reset))
+ return dev_err_probe(&i2c->dev, PTR_ERR(adcx140->gpio_reset),
+ "Failed to get Reset GPIO\n");
+ if (!adcx140->gpio_reset)
dev_info(&i2c->dev, "Reset GPIO not defined\n");
adcx140->supply_areg = devm_regulator_get_optional(adcx140->dev,
--
2.51.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH AUTOSEL 6.18-5.10] ASoC: davinci-evm: Fix reference leak in davinci_evm_probe
[not found] <20260120193456.865383-1-sashal@kernel.org>
2026-01-20 19:34 ` [PATCH AUTOSEL 6.18-5.10] ASoC: tlv320adcx140: Propagate error codes during probe Sasha Levin
@ 2026-01-20 19:34 ` Sasha Levin
2026-01-20 19:34 ` [PATCH AUTOSEL 6.18-6.12] ASoC: simple-card-utils: Check device node before overwrite direction Sasha Levin
2026-01-20 19:34 ` [PATCH AUTOSEL 6.18] ALSA: hda/tas2781: Add newly-released HP laptop Sasha Levin
3 siblings, 0 replies; 4+ messages in thread
From: Sasha Levin @ 2026-01-20 19:34 UTC (permalink / raw)
To: patches, stable
Cc: Kery Qi, Mark Brown, Sasha Levin, peter.ujfalusi, linux-sound
From: Kery Qi <qikeyu2017@gmail.com>
[ Upstream commit 5b577d214fcc109707bcb77b4ae72a31cfd86798 ]
The davinci_evm_probe() function calls of_parse_phandle() to acquire
device nodes for "ti,audio-codec" and "ti,mcasp-controller". These
functions return device nodes with incremented reference counts.
However, in several error paths (e.g., when the second of_parse_phandle(),
snd_soc_of_parse_card_name(), or devm_snd_soc_register_card() fails),
the function returns directly without releasing the acquired nodes,
leading to reference leaks.
This patch adds an error handling path 'err_put' to properly release
the device nodes using of_node_put() and clean up the pointers when
an error occurs.
Signed-off-by: Kery Qi <qikeyu2017@gmail.com>
Link: https://patch.msgid.link/20260107154836.1521-2-qikeyu2017@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
LLM Generated explanations, may be completely bogus:
So the `device_get_match_data()` change landed in v6.10. For stable
trees 6.9 and earlier, the code would use the older `of_match_device()`
pattern, which might require a slightly different patch.
Let me analyze the full technical aspects of this fix:
## Technical Analysis
### The Bug
The `davinci_evm_probe()` function calls `of_parse_phandle()` twice:
1. `dai->codecs->of_node = of_parse_phandle(np, "ti,audio-codec", 0);`
2. `dai->cpus->of_node = of_parse_phandle(np, "ti,mcasp-controller",
0);`
`of_parse_phandle()` returns a device node with an incremented reference
count. The kernel's device tree code uses reference counting to track
how many pointers refer to each node. If references are not released
with `of_node_put()`, the nodes can never be freed, causing a memory
leak.
### Error Paths with the Leak
In the original code, if any of these fail after acquiring one or both
nodes:
- Second `of_parse_phandle()` call fails → codecs->of_node leaked
- `snd_soc_of_parse_card_name()` fails → both nodes leaked
- `devm_clk_get()` returns `-EPROBE_DEFER` → both nodes leaked
- `devm_kzalloc()` fails → both nodes leaked
- `of_property_read_u32()` fails without mclk → both nodes leaked
- `devm_snd_soc_register_card()` fails → both nodes leaked
### The Fix
The fix:
1. Converts all early returns to `goto err_put`
2. Adds proper cleanup label that calls `of_node_put()` on both nodes
3. Nullifies the pointers after release (defensive programming)
### Impact Assessment
- **Severity**: Low to Medium. This is a memory leak, not a crash or
data corruption. The leak only occurs on error paths during probe.
- **Scope**: The TI DAVINCI EVM audio driver. This is an older driver
for TI DaVinci SoC platforms, a relatively niche embedded hardware.
- **Trigger**: The leak happens when probe fails - i.e., when there's
something wrong with the device tree or when resources are
unavailable.
- **User Impact**: Repeated probe failures (e.g., due to
misconfiguration or module load/unload cycles) could accumulate leaked
memory over time.
### Risk Assessment
- **Low risk**: The change is surgical - it only adds error handling
paths
- **Well-understood pattern**: of_node_put() cleanup is a very common
kernel pattern
- **Doesn't change success path behavior**: The normal successful probe
path is unchanged except for adding `return ret;` instead of falling
through
### Backport Considerations
- For stable kernels >= 6.10: The patch should apply cleanly (uses
`device_get_match_data()`)
- For stable kernels < 6.10: The patch would need adjustment since those
use `of_match_device()` pattern instead
**Conclusion:**
This is a legitimate bug fix that addresses a memory leak in error
paths. The fix is:
1. Small and contained
2. Uses a well-understood kernel pattern
3. Fixes a real resource leak bug
4. Low risk (only affects error paths)
5. Properly tested (merged by maintainer Mark Brown)
However, the bug is relatively minor:
- Only affects niche TI DAVINCI EVM hardware
- Only leaks memory on probe failure (error paths)
- The leak is small (device tree node references)
This type of reference leak fix is commonly backported to stable trees.
The pattern is well-established and the fix is straightforward. The main
concern is whether it will apply cleanly to older stable trees that
don't have the `device_get_match_data()` change, but that's a backport
logistics issue, not a reason to reject it.
**YES**
sound/soc/ti/davinci-evm.c | 39 ++++++++++++++++++++++++++++++--------
1 file changed, 31 insertions(+), 8 deletions(-)
diff --git a/sound/soc/ti/davinci-evm.c b/sound/soc/ti/davinci-evm.c
index 2a2f5bc95576e..a55a369ce71c2 100644
--- a/sound/soc/ti/davinci-evm.c
+++ b/sound/soc/ti/davinci-evm.c
@@ -193,27 +193,32 @@ static int davinci_evm_probe(struct platform_device *pdev)
return -EINVAL;
dai->cpus->of_node = of_parse_phandle(np, "ti,mcasp-controller", 0);
- if (!dai->cpus->of_node)
- return -EINVAL;
+ if (!dai->cpus->of_node) {
+ ret = -EINVAL;
+ goto err_put;
+ }
dai->platforms->of_node = dai->cpus->of_node;
evm_soc_card.dev = &pdev->dev;
ret = snd_soc_of_parse_card_name(&evm_soc_card, "ti,model");
if (ret)
- return ret;
+ goto err_put;
mclk = devm_clk_get(&pdev->dev, "mclk");
if (PTR_ERR(mclk) == -EPROBE_DEFER) {
- return -EPROBE_DEFER;
+ ret = -EPROBE_DEFER;
+ goto err_put;
} else if (IS_ERR(mclk)) {
dev_dbg(&pdev->dev, "mclk not found.\n");
mclk = NULL;
}
drvdata = devm_kzalloc(&pdev->dev, sizeof(*drvdata), GFP_KERNEL);
- if (!drvdata)
- return -ENOMEM;
+ if (!drvdata) {
+ ret = -ENOMEM;
+ goto err_put;
+ }
drvdata->mclk = mclk;
@@ -223,7 +228,8 @@ static int davinci_evm_probe(struct platform_device *pdev)
if (!drvdata->mclk) {
dev_err(&pdev->dev,
"No clock or clock rate defined.\n");
- return -EINVAL;
+ ret = -EINVAL;
+ goto err_put;
}
drvdata->sysclk = clk_get_rate(drvdata->mclk);
} else if (drvdata->mclk) {
@@ -239,8 +245,25 @@ static int davinci_evm_probe(struct platform_device *pdev)
snd_soc_card_set_drvdata(&evm_soc_card, drvdata);
ret = devm_snd_soc_register_card(&pdev->dev, &evm_soc_card);
- if (ret)
+ if (ret) {
dev_err(&pdev->dev, "snd_soc_register_card failed (%d)\n", ret);
+ goto err_put;
+ }
+
+ return ret;
+
+err_put:
+ dai->platforms->of_node = NULL;
+
+ if (dai->cpus->of_node) {
+ of_node_put(dai->cpus->of_node);
+ dai->cpus->of_node = NULL;
+ }
+
+ if (dai->codecs->of_node) {
+ of_node_put(dai->codecs->of_node);
+ dai->codecs->of_node = NULL;
+ }
return ret;
}
--
2.51.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH AUTOSEL 6.18-6.12] ASoC: simple-card-utils: Check device node before overwrite direction
[not found] <20260120193456.865383-1-sashal@kernel.org>
2026-01-20 19:34 ` [PATCH AUTOSEL 6.18-5.10] ASoC: tlv320adcx140: Propagate error codes during probe Sasha Levin
2026-01-20 19:34 ` [PATCH AUTOSEL 6.18-5.10] ASoC: davinci-evm: Fix reference leak in davinci_evm_probe Sasha Levin
@ 2026-01-20 19:34 ` Sasha Levin
2026-01-20 19:34 ` [PATCH AUTOSEL 6.18] ALSA: hda/tas2781: Add newly-released HP laptop Sasha Levin
3 siblings, 0 replies; 4+ messages in thread
From: Sasha Levin @ 2026-01-20 19:34 UTC (permalink / raw)
To: patches, stable
Cc: Shengjiu Wang, Kuninori Morimoto, Mark Brown, Sasha Levin,
linux-sound
From: Shengjiu Wang <shengjiu.wang@nxp.com>
[ Upstream commit 22a507d7680f2c3499c133f6384349f62f916176 ]
Even the device node don't exist, the graph_util_parse_link_direction()
will overwrite the playback_only and capture_only to be zero. Which
cause the playback_only and capture_only are not correct, so check device
node exist or not before update the value.
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://patch.msgid.link/20251229090432.3964848-1-shengjiu.wang@nxp.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
LLM Generated explanations, may be completely bogus:
The commit seems to be describing a new patch to be analyzed. Based on
my full analysis, let me now synthesize my evaluation:
## ANALYSIS SUMMARY
### 1. COMMIT MESSAGE ANALYSIS
The commit message describes a bug where:
- When a device node doesn't exist (is NULL), the
`graph_util_parse_link_direction()` function still overwrites
`playback_only` and `capture_only` to zero (false)
- This causes incorrect behavior when these flags should remain as they
were set by previous calls
The commit has:
- **Acked-by:** from the subsystem maintainer (Kuninori Morimoto)
- **Signed-off-by:** from the maintainer (Mark Brown)
### 2. CODE CHANGE ANALYSIS
**The Bug:**
Looking at the function:
```c
void graph_util_parse_link_direction(struct device_node *np,
bool *playback_only, bool *capture_only)
{
bool is_playback_only = of_property_read_bool(np, "playback-only");
bool is_capture_only = of_property_read_bool(np, "capture-only");
if (playback_only)
*playback_only = is_playback_only;
if (capture_only)
*capture_only = is_capture_only;
}
```
When `np` is NULL:
1. `of_property_read_bool(NULL, ...)` returns `false` (since NULL node
has no properties)
2. The function unconditionally overwrites `*playback_only = false` and
`*capture_only = false`
**Call Pattern (from simple-card.c and audio-graph-card.c):**
```c
graph_util_parse_link_direction(top, &playback_only, &capture_only);
graph_util_parse_link_direction(node, &playback_only, &capture_only);
graph_util_parse_link_direction(cpu, &playback_only, &capture_only);
graph_util_parse_link_direction(codec, &playback_only, &capture_only);
```
The intent is hierarchical: if `top` sets `playback_only = true`, it
should remain true unless a lower-level node explicitly overrides it.
But if `cpu` or `codec` is NULL, the current code wrongly resets
`playback_only` to false.
**The Fix:**
```c
- if (playback_only)
+ if (np && playback_only)
*playback_only = is_playback_only;
- if (capture_only)
+ if (np && capture_only)
*capture_only = is_capture_only;
```
Adding `np &&` check prevents the function from overwriting the values
when `np` is NULL.
### 3. CLASSIFICATION
- **Bug fix:** Yes, clearly fixes a logic error
- **Security:** No security implications
- **Feature addition:** No
### 4. SCOPE AND RISK ASSESSMENT
- **Lines changed:** 2 (very minimal)
- **Files touched:** 1
- **Complexity:** Very low - adding a simple NULL check
- **Risk:** Very low - defensive programming that only affects behavior
when np is NULL, which is already an edge case
### 5. USER IMPACT
- **Who is affected:** Users of ASoC simple-card and audio-graph-card
drivers
- **Severity:** Audio routing could be incorrect (playback-only or
capture-only configuration not being honored)
- **Visibility:** Users with device trees that set `playback-only` or
`capture-only` on higher-level nodes where some lower-level nodes
don't exist
### 6. STABILITY INDICATORS
- **Acked-by:** Kuninori Morimoto (maintainer of the code)
- **Signed-off-by:** Mark Brown (ASoC subsystem maintainer)
### 7. DEPENDENCY CHECK
- The function exists in stable trees starting from v6.10 (introduced in
commit d29351e8c20d61)
- The fix applies cleanly and has no dependencies on other commits
### 8. FINAL ASSESSMENT
This is a clear, minimal, and well-reviewed bug fix that:
1. Fixes a real bug that causes incorrect audio configuration
2. Is small and surgical (2-line change with simple NULL check)
3. Has low regression risk (only affects edge case of NULL np)
4. Has been reviewed and acked by the appropriate maintainers
5. Would apply cleanly to stable trees (v6.10+) where this function
exists
The fix is small, surgical, and meets all stable kernel criteria.
**YES**
sound/soc/generic/simple-card-utils.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sound/soc/generic/simple-card-utils.c b/sound/soc/generic/simple-card-utils.c
index 355f7ec8943c2..bdc02e85b089f 100644
--- a/sound/soc/generic/simple-card-utils.c
+++ b/sound/soc/generic/simple-card-utils.c
@@ -1179,9 +1179,9 @@ void graph_util_parse_link_direction(struct device_node *np,
bool is_playback_only = of_property_read_bool(np, "playback-only");
bool is_capture_only = of_property_read_bool(np, "capture-only");
- if (playback_only)
+ if (np && playback_only)
*playback_only = is_playback_only;
- if (capture_only)
+ if (np && capture_only)
*capture_only = is_capture_only;
}
EXPORT_SYMBOL_GPL(graph_util_parse_link_direction);
--
2.51.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH AUTOSEL 6.18] ALSA: hda/tas2781: Add newly-released HP laptop
[not found] <20260120193456.865383-1-sashal@kernel.org>
` (2 preceding siblings ...)
2026-01-20 19:34 ` [PATCH AUTOSEL 6.18-6.12] ASoC: simple-card-utils: Check device node before overwrite direction Sasha Levin
@ 2026-01-20 19:34 ` Sasha Levin
3 siblings, 0 replies; 4+ messages in thread
From: Sasha Levin @ 2026-01-20 19:34 UTC (permalink / raw)
To: patches, stable
Cc: Shenghao Ding, Takashi Iwai, Sasha Levin, kevin-lu, baojun.xu,
linux-sound
From: Shenghao Ding <shenghao-ding@ti.com>
[ Upstream commit 46b8d0888f01f250fbd24d00ff80b755c3c42cd4 ]
HP released the new laptop with the subid 0x103C.
Signed-off-by: Shenghao Ding <shenghao-ding@ti.com>
Link: https://patch.msgid.link/20260115124907.629-1-shenghao-ding@ti.com
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
LLM Generated explanations, may be completely bogus:
Now I have a complete picture. Let me summarize the analysis:
## Analysis Summary
### 1. COMMIT MESSAGE ANALYSIS
The commit is titled "ALSA: hda/tas2781: Add newly-released HP laptop"
with subsystem ID 0x103C. This is a straightforward hardware enablement
commit.
- No "Fixes:" tag (expected for commits requiring manual review)
- No "Cc: stable" tag (expected)
- The commit enables audio hardware for HP laptops with TAS2781 codec
### 2. CODE CHANGE ANALYSIS
The actual code change is extremely minimal:
1. **Copyright year update**: `2023 - 2025` → `2023 - 2026` (cosmetic,
harmless)
2. **Addition of HP case in switch statement**: 3 lines added to
recognize HP vendor ID 0x103C and set `catlog_id = HP`
The switch statement determines which EFI GUID to use for reading
calibration data from UEFI. Without this case:
- HP laptops (subid 0x103C) fall into the `default` case and get
`catlog_id = LENOVO`
- This means they use the LENOVO EFI GUID instead of the correct HP EFI
GUID
- Calibration data wouldn't be found or would be incorrect
**Root cause**: Missing vendor ID case means the driver uses the wrong
EFI GUID for calibration data, leading to audio calibration failures on
HP laptops.
### 3. CLASSIFICATION
This is a **device ID/vendor ID addition** to an existing driver - one
of the explicit exceptions listed in the stable kernel rules. This falls
squarely into the "NEW DEVICE IDs" category:
- Adding a vendor/subsystem ID (0x103C for HP)
- The driver already exists and supports the TAS2781 codec
- HP support infrastructure (enum value, EFI GUID) already exists
- Only the vendor ID recognition is missing
### 4. SCOPE AND RISK ASSESSMENT
**Lines changed**: 4 (3 functional lines + 1 cosmetic copyright update)
**Files touched**: 1 (tas2781_hda_i2c.c)
**Complexity**: Extremely low - simple switch case addition
**Risk**: Minimal - only affects HP laptops (subid 0x103C); other
laptops unaffected
### 5. USER IMPACT
- **Who is affected**: Users with HP laptops containing TAS2781 audio
codecs
- **Severity**: Without this fix, HP laptop audio may not work properly
due to incorrect calibration data retrieval
- **Impact of change**: Enables proper audio on new HP hardware
### 6. STABILITY INDICATORS
- Signed off by the original driver author (Shenghao Ding)
- Accepted by ALSA maintainer (Takashi Iwai)
- Simple, obvious change with clear purpose
### 7. DEPENDENCY CHECK
**Critical consideration**: The commit applies to file
`sound/hda/codecs/side-codecs/tas2781_hda_i2c.c` which is a NEW location
- the file was moved in commit `6014e9021b28e` ("ALSA: hda: Move codec
drivers into sound/hda/codecs directory").
Checking stable trees:
- **6.16.y**: Has all infrastructure (HP enum, HP EFI GUID, file in old
location `sound/pci/hda/`). The patch could apply with path
adjustment.
- **6.15.y and older**: Do NOT have HP support infrastructure - the
`device_catlog_id` enum only has `LENOVO=0` and `OTHERS`. No HP enum
value, no HP EFI GUID. **Backporting is NOT possible without
significant additional commits.**
### 8. BACKPORT FEASIBILITY
For **6.16.y stable**: The commit should be backported, but requires
path adjustment (`sound/hda/codecs/side-codecs/` → `sound/pci/hda/`).
All necessary infrastructure exists.
For **6.15.y and older**: NOT suitable for backport. Would require
backporting the entire HP infrastructure:
- The HP enum value
- The HP EFI GUID
- Possibly other architectural changes
The commit itself is clearly stable-worthy (device ID addition to
existing driver), but its applicability is limited to kernels that
already have the HP support infrastructure.
### Conclusion
This commit is a textbook example of a stable-appropriate change: a
simple vendor ID addition to an existing driver that enables hardware
support. It's small (3 functional lines), obviously correct, low risk,
and addresses a real user issue (HP laptops not working properly with
TAS2781 audio).
However, the backport is only applicable to kernels 6.16+ where the HP
infrastructure already exists. For older kernels, this would require
additional prerequisite commits.
**YES**
sound/hda/codecs/side-codecs/tas2781_hda_i2c.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/sound/hda/codecs/side-codecs/tas2781_hda_i2c.c b/sound/hda/codecs/side-codecs/tas2781_hda_i2c.c
index f7a7f216d5865..3da1f138a191c 100644
--- a/sound/hda/codecs/side-codecs/tas2781_hda_i2c.c
+++ b/sound/hda/codecs/side-codecs/tas2781_hda_i2c.c
@@ -2,7 +2,7 @@
//
// TAS2781 HDA I2C driver
//
-// Copyright 2023 - 2025 Texas Instruments, Inc.
+// Copyright 2023 - 2026 Texas Instruments, Inc.
//
// Author: Shenghao Ding <shenghao-ding@ti.com>
// Current maintainer: Baojun Xu <baojun.xu@ti.com>
@@ -568,6 +568,9 @@ static int tas2781_hda_bind(struct device *dev, struct device *master,
case 0x1028:
tas_hda->catlog_id = DELL;
break;
+ case 0x103C:
+ tas_hda->catlog_id = HP;
+ break;
default:
tas_hda->catlog_id = LENOVO;
break;
--
2.51.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-01-20 19:35 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20260120193456.865383-1-sashal@kernel.org>
2026-01-20 19:34 ` [PATCH AUTOSEL 6.18-5.10] ASoC: tlv320adcx140: Propagate error codes during probe Sasha Levin
2026-01-20 19:34 ` [PATCH AUTOSEL 6.18-5.10] ASoC: davinci-evm: Fix reference leak in davinci_evm_probe Sasha Levin
2026-01-20 19:34 ` [PATCH AUTOSEL 6.18-6.12] ASoC: simple-card-utils: Check device node before overwrite direction Sasha Levin
2026-01-20 19:34 ` [PATCH AUTOSEL 6.18] ALSA: hda/tas2781: Add newly-released HP laptop Sasha Levin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox