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@gmail.com --- 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;