The topology retrieval code currently mixes the size query with allocation and data fetch in a single function.
Extract the size query into a helper to make the control flow clearer.
No functional change.
Signed-off-by: Hungyu Lin dennylin0707@gmail.com --- drivers/staging/greybus/audio_gb.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-)
diff --git a/drivers/staging/greybus/audio_gb.c b/drivers/staging/greybus/audio_gb.c index 9d8994fdb41a..d95f8b7d4ce2 100644 --- a/drivers/staging/greybus/audio_gb.c +++ b/drivers/staging/greybus/audio_gb.c @@ -8,21 +8,33 @@ #include <linux/greybus.h> #include "audio_codec.h"
+static int gb_audio_gb_get_topology_size(struct gb_connection *connection, + u16 *size) +{ + struct gb_audio_get_topology_size_response size_resp; + int ret; + + ret = gb_operation_sync(connection, GB_AUDIO_TYPE_GET_TOPOLOGY_SIZE, + NULL, 0, &size_resp, sizeof(size_resp)); + if (ret) + return ret; + + *size = le16_to_cpu(size_resp.size); + return 0; +} + /* TODO: Split into separate calls */ int gb_audio_gb_get_topology(struct gb_connection *connection, struct gb_audio_topology **topology) { - 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, - NULL, 0, &size_resp, sizeof(size_resp)); + ret = gb_audio_gb_get_topology_size(connection, &size); if (ret) return ret;
- size = le16_to_cpu(size_resp.size); if (size < sizeof(*topo)) return -ENODATA;