From 075a329591540affcc32af0da09abd54549e1659 Mon Sep 17 00:00:00 2001 From: Ian Abbott Date: Fri, 7 Feb 2020 15:13:57 +0000 Subject: [PATCH] staging: comedi: ni_routes: Refactor ni_find_valid_routes() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Split out the loops in `ni_find_valid_routes()` into separate functions: * ni_find_route_values(device_family) to find the list of route values for a device family (e.g "ni-mseries"); and * ni_find_valid_routes(board_name) to find the set of valid routes for a board name. The functions above return `NULL` if the information is not found (as we do not currently have the routing information available for all supported boards). Cc: Éric Piel Cc: Spencer E. Olson Signed-off-by: Ian Abbott Link: https://lore.kernel.org/r/20200207151400.272678-2-abbotti@mev.co.uk Signed-off-by: Greg Kroah-Hartman --- drivers/staging/comedi/drivers/ni_routes.c | 58 +++++++++++++++------- 1 file changed, 41 insertions(+), 17 deletions(-) diff --git a/drivers/staging/comedi/drivers/ni_routes.c b/drivers/staging/comedi/drivers/ni_routes.c index 8f398b30f5bf..508f76c5c574 100644 --- a/drivers/staging/comedi/drivers/ni_routes.c +++ b/drivers/staging/comedi/drivers/ni_routes.c @@ -49,6 +49,43 @@ /* Helper for accessing data. */ #define RVi(table, src, dest) ((table)[(dest) * NI_NUM_NAMES + (src)]) +/* + * Find the route values for a device family. + */ +static const u8 *ni_find_route_values(const char *device_family) +{ + const u8 *rv = NULL; + int i; + + for (i = 0; ni_all_route_values[i]; ++i) { + if (memcmp(ni_all_route_values[i]->family, device_family, + strnlen(device_family, 30)) == 0) { + rv = &ni_all_route_values[i]->register_values[0][0]; + break; + } + } + return rv; +} + +/* + * Find the valid routes for a board. + */ +static const struct ni_device_routes * +ni_find_valid_routes(const char *board_name) +{ + const struct ni_device_routes *dr = NULL; + int i; + + for (i = 0; ni_device_routes_list[i]; ++i) { + if (memcmp(ni_device_routes_list[i]->device, board_name, + strnlen(board_name, 30)) == 0) { + dr = ni_device_routes_list[i]; + break; + } + } + return dr; +} + /* * Find the proper route_values and ni_device_routes tables for this particular * device. @@ -59,27 +96,14 @@ static int ni_find_device_routes(const char *device_family, const char *board_name, struct ni_route_tables *tables) { - const struct ni_device_routes *dr = NULL; - const u8 *rv = NULL; - int i; + const struct ni_device_routes *dr; + const u8 *rv; /* First, find the register_values table for this device family */ - for (i = 0; ni_all_route_values[i]; ++i) { - if (memcmp(ni_all_route_values[i]->family, device_family, - strnlen(device_family, 30)) == 0) { - rv = &ni_all_route_values[i]->register_values[0][0]; - break; - } - } + rv = ni_find_route_values(device_family); /* Second, find the set of routes valid for this device. */ - for (i = 0; ni_device_routes_list[i]; ++i) { - if (memcmp(ni_device_routes_list[i]->device, board_name, - strnlen(board_name, 30)) == 0) { - dr = ni_device_routes_list[i]; - break; - } - } + dr = ni_find_valid_routes(board_name); tables->route_values = rv; tables->valid_routes = dr;