diff options
author | Ian Abbott <abbotti@mev.co.uk> | 2020-02-07 15:13:57 +0000 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2020-02-10 10:25:06 -0800 |
commit | 075a329591540affcc32af0da09abd54549e1659 (patch) | |
tree | e96e2bfc39f46958a852a6c3c96ace6ea21236bb /drivers/staging | |
parent | 0e3ee7f10af9b3c6994c530048d5115d3c67c801 (diff) |
staging: comedi: ni_routes: Refactor ni_find_valid_routes()
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 <piel@delmic.com>
Cc: Spencer E. Olson <olsonse@umich.edu>
Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
Link: https://lore.kernel.org/r/20200207151400.272678-2-abbotti@mev.co.uk
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging')
-rw-r--r-- | drivers/staging/comedi/drivers/ni_routes.c | 44 |
1 files changed, 34 insertions, 10 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 @@ -50,20 +50,13 @@ #define RVi(table, src, dest) ((table)[(dest) * NI_NUM_NAMES + (src)]) /* - * Find the proper route_values and ni_device_routes tables for this particular - * device. - * - * Return: -ENODATA if either was not found; 0 if both were found. + * Find the route values for a device family. */ -static int ni_find_device_routes(const char *device_family, - const char *board_name, - struct ni_route_tables *tables) +static const u8 *ni_find_route_values(const char *device_family) { - const struct ni_device_routes *dr = NULL; const u8 *rv = NULL; int i; - /* 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) { @@ -71,8 +64,18 @@ static int ni_find_device_routes(const char *device_family, 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; - /* 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) { @@ -80,6 +83,27 @@ static int ni_find_device_routes(const char *device_family, break; } } + return dr; +} + +/* + * Find the proper route_values and ni_device_routes tables for this particular + * device. + * + * Return: -ENODATA if either was not found; 0 if both were found. + */ +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; + const u8 *rv; + + /* First, find the register_values table for this device family */ + rv = ni_find_route_values(device_family); + + /* Second, find the set of routes valid for this device. */ + dr = ni_find_valid_routes(board_name); tables->route_values = rv; tables->valid_routes = dr; |