[PATCH] staging: greybus: split gb_audio_gb_get_topology()

From: Khaled Saleh

Date: Mon May 04 2026 - 13:15:09 EST


Split gb_audio_gb_get_topology() into smaller helper functions
to improve readability and maintainability.

No functional change intended.

Signed-off-by: Khaled Saleh <khaled.saleh.req@xxxxxxxxx>
---
drivers/staging/greybus/audio_gb.c | 25 ++++++++++++++++++-------
1 file changed, 18 insertions(+), 7 deletions(-)

diff --git a/drivers/staging/greybus/audio_gb.c b/drivers/staging/greybus/audio_gb.c
index 9d8994fdb41a..b5ead09532c8 100644
--- a/drivers/staging/greybus/audio_gb.c
+++ b/drivers/staging/greybus/audio_gb.c
@@ -8,13 +8,10 @@
#include <linux/greybus.h>
#include "audio_codec.h"

-/* TODO: Split into separate calls */
-int gb_audio_gb_get_topology(struct gb_connection *connection,
- struct gb_audio_topology **topology)
+static int gb_audio_gb_get_topology_size(struct gb_connection *connection,
+ u16 *size)
{
struct gb_audio_get_topology_size_response size_resp;
- struct gb_audio_topology *topo;
- u16 size;
int ret;

ret = gb_operation_sync(connection, GB_AUDIO_TYPE_GET_TOPOLOGY_SIZE,
@@ -22,10 +19,24 @@ int gb_audio_gb_get_topology(struct gb_connection *connection,
if (ret)
return ret;

- size = le16_to_cpu(size_resp.size);
- if (size < sizeof(*topo))
+ *size = le16_to_cpu(size_resp.size);
+ if (*size < sizeof(struct gb_audio_topology))
return -ENODATA;

+ return 0;
+}
+
+int gb_audio_gb_get_topology(struct gb_connection *connection,
+ struct gb_audio_topology **topology)
+{
+ struct gb_audio_topology *topo;
+ u16 size;
+ int ret;
+
+ ret = gb_audio_gb_get_topology_size(connection, &size);
+ if (ret)
+ return ret;
+
topo = kzalloc(size, GFP_KERNEL);
if (!topo)
return -ENOMEM;
--
2.34.1