From 5267329caa6ce08a5497d774bae0c8f386220a16 Mon Sep 17 00:00:00 2001
From: Joel Challis <git@zvecr.com>
Date: Thu, 4 Jan 2024 05:47:52 +0000
Subject: [PATCH] Ensure LED config is extracted when feature is disabled
 (#22809)

* Ensure LED config is extracted when feature is disabled

* Only attempt LED search if dd led config is missing
---
 lib/python/qmk/info.py | 32 ++++++++++++++++----------------
 1 file changed, 16 insertions(+), 16 deletions(-)

diff --git a/lib/python/qmk/info.py b/lib/python/qmk/info.py
index d51741ecb6..e960bf20ee 100644
--- a/lib/python/qmk/info.py
+++ b/lib/python/qmk/info.py
@@ -684,26 +684,26 @@ def _extract_led_config(info_data, keyboard):
     rows = info_data['matrix_size']['rows']
 
     # Determine what feature owns g_led_config
-    features = info_data.get("features", {})
     feature = None
-    if features.get("rgb_matrix", False):
-        feature = "rgb_matrix"
-    elif features.get("led_matrix", False):
-        feature = "led_matrix"
+    for feat in ['rgb_matrix', 'led_matrix']:
+        if info_data.get('features', {}).get(feat, False) or feat in info_data:
+            feature = feat
 
     if feature:
-        # Process
-        for file in find_keyboard_c(keyboard):
-            try:
-                ret = find_led_config(file, cols, rows)
-                if ret:
-                    info_data[feature] = info_data.get(feature, {})
-                    info_data[feature]["layout"] = ret
-            except Exception as e:
-                _log_warning(info_data, f'led_config: {file.name}: {e}')
+        # Only attempt search if dd led config is missing
+        if 'layout' not in info_data.get(feature, {}):
+            # Process
+            for file in find_keyboard_c(keyboard):
+                try:
+                    ret = find_led_config(file, cols, rows)
+                    if ret:
+                        info_data[feature] = info_data.get(feature, {})
+                        info_data[feature]['layout'] = ret
+                except Exception as e:
+                    _log_warning(info_data, f'led_config: {file.name}: {e}')
 
-        if info_data[feature].get("layout", None) and not info_data[feature].get("led_count", None):
-            info_data[feature]["led_count"] = len(info_data[feature]["layout"])
+        if info_data[feature].get('layout', None) and not info_data[feature].get('led_count', None):
+            info_data[feature]['led_count'] = len(info_data[feature]['layout'])
 
     return info_data