From: Hari Prasath Gujulan Elango <hguju...@visteon.com>

Replace multiple if..else if..statements with simple table lookup in two
functions.

Signed-off-by: Hari Prasath Gujulan Elango <hguju...@visteon.com>
---
 drivers/staging/most/mostcore/core.c | 39 ++++++++++++++++++++----------------
 1 file changed, 22 insertions(+), 17 deletions(-)

diff --git a/drivers/staging/most/mostcore/core.c 
b/drivers/staging/most/mostcore/core.c
index ed1ed25..7b4636b 100644
--- a/drivers/staging/most/mostcore/core.c
+++ b/drivers/staging/most/mostcore/core.c
@@ -82,6 +82,14 @@ struct most_inst_obj {
        struct list_head list;
 };
 
+static const struct {
+       int most_ch_data_type;
+       char *name;
+} ch_data_type[] = { { MOST_CH_CONTROL, "control\n" },
+       { MOST_CH_ASYNC, "async\n" },
+       { MOST_CH_SYNC, "sync\n" },
+       { MOST_CH_ISOC_AVP, "isoc_avp\n"} };
+
 #define to_inst_obj(d) container_of(d, struct most_inst_obj, kobj)
 
 /**
@@ -414,14 +422,12 @@ static ssize_t show_set_datatype(struct most_c_obj *c,
                                 struct most_c_attr *attr,
                                 char *buf)
 {
-       if (c->cfg.data_type & MOST_CH_CONTROL)
-               return snprintf(buf, PAGE_SIZE, "control\n");
-       else if (c->cfg.data_type & MOST_CH_ASYNC)
-               return snprintf(buf, PAGE_SIZE, "async\n");
-       else if (c->cfg.data_type & MOST_CH_SYNC)
-               return snprintf(buf, PAGE_SIZE, "sync\n");
-       else if (c->cfg.data_type & MOST_CH_ISOC_AVP)
-               return snprintf(buf, PAGE_SIZE, "isoc_avp\n");
+       int i;
+
+       for (i = 0; i < ARRAY_SIZE(ch_data_type); i++) {
+               if (c->cfg.data_type & ch_data_type[i].most_ch_data_type)
+                       return snprintf(buf, PAGE_SIZE, ch_data_type[i].name);
+       }
        return snprintf(buf, PAGE_SIZE, "unconfigured\n");
 }
 
@@ -430,15 +436,14 @@ static ssize_t store_set_datatype(struct most_c_obj *c,
                                  const char *buf,
                                  size_t count)
 {
-       if (!strcmp(buf, "control\n")) {
-               c->cfg.data_type = MOST_CH_CONTROL;
-       } else if (!strcmp(buf, "async\n")) {
-               c->cfg.data_type = MOST_CH_ASYNC;
-       } else if (!strcmp(buf, "sync\n")) {
-               c->cfg.data_type = MOST_CH_SYNC;
-       } else if (!strcmp(buf, "isoc_avp\n")) {
-               c->cfg.data_type = MOST_CH_ISOC_AVP;
-       } else {
+       int i;
+
+       for (i = 0; i < ARRAY_SIZE(ch_data_type); i++) {
+               if (!strcmp(buf, ch_data_type[i].name))
+                       c->cfg.data_type = ch_data_type[i].most_ch_data_type;
+       }
+
+       if (i == ARRAY_SIZE(ch_data_type)) {
                pr_info("WARN: invalid attribute settings\n");
                return -EINVAL;
        }
-- 
1.9.1
_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to