1
Current code excutes only once despite the while loop, so remove the
1
Current code excutes only once despite the while loop, so remove the
2
loop. Also msleep(1) will likely result in a larger sleep, so increase
2
loop. Also msleep(1) will likely result in a larger sleep, so increase
3
its value for clarity while keeping the same behaviour.
3
its value for clarity while keeping the same behaviour.
4
4
5
Signed-off-by: Maciej Strozek <mstrozek@opensource.cirrus.com>
5
Signed-off-by: Maciej Strozek <mstrozek@opensource.cirrus.com>
6
---
6
---
7
V2 -> V3: formatting changes: fixed a comment and 2 line-ups, added a new line
7
V1 -> V2: removed unused variable 'timeout'
8
V1 -> V2: removed unused variable 'timeout'
8
9
9
drivers/mfd/wm831x-auxadc.c | 48 +++++++++++++++++--------------------
10
drivers/mfd/wm831x-auxadc.c | 43 ++++++++++++++++---------------------
10
1 file changed, 22 insertions(+), 26 deletions(-)
11
1 file changed, 18 insertions(+), 25 deletions(-)
11
12
12
diff --git a/drivers/mfd/wm831x-auxadc.c b/drivers/mfd/wm831x-auxadc.c
13
diff --git a/drivers/mfd/wm831x-auxadc.c b/drivers/mfd/wm831x-auxadc.c
13
index XXXXXXX..XXXXXXX 100644
14
index XXXXXXX..XXXXXXX 100644
14
--- a/drivers/mfd/wm831x-auxadc.c
15
--- a/drivers/mfd/wm831x-auxadc.c
15
+++ b/drivers/mfd/wm831x-auxadc.c
16
+++ b/drivers/mfd/wm831x-auxadc.c
...
...
29
-    /* If we're not using interrupts then poll the
30
-    /* If we're not using interrupts then poll the
30
-     * interrupt status register */
31
-     * interrupt status register */
31
-    timeout = 5;
32
-    timeout = 5;
32
-    while (timeout) {
33
-    while (timeout) {
33
-        msleep(1);
34
-        msleep(1);
34
-
35
+    /* If we're not using interrupts then read the interrupt status register */
36
+    msleep(20);
37
35
-        ret = wm831x_reg_read(wm831x,
38
-        ret = wm831x_reg_read(wm831x,
36
-                 WM831X_INTERRUPT_STATUS_1);
39
-                 WM831X_INTERRUPT_STATUS_1);
37
-        if (ret < 0) {
40
-        if (ret < 0) {
38
-            dev_err(wm831x->dev,
41
-            dev_err(wm831x->dev,
39
-                "ISR 1 read failed: %d\n", ret);
42
-                "ISR 1 read failed: %d\n", ret);
40
-            goto disable;
43
-            goto disable;
41
-        }
44
-        }
42
+    /* If we're not using interrupts then read the
45
+    ret = wm831x_reg_read(wm831x, WM831X_INTERRUPT_STATUS_1);
43
+     * interrupt status register
44
+     */
45
+    msleep(20);
46
+    ret = wm831x_reg_read(wm831x,
47
+                WM831X_INTERRUPT_STATUS_1);
48
+    if (ret < 0) {
46
+    if (ret < 0) {
49
+        dev_err(wm831x->dev,
47
+        dev_err(wm831x->dev,
50
+            "ISR 1 read failed: %d\n", ret);
48
+            "ISR 1 read failed: %d\n", ret);
51
+        goto disable;
49
+        goto disable;
52
+    }
50
+    }
...
...
63
-            ret = -EBUSY;
61
-            ret = -EBUSY;
64
-            goto disable;
62
-            goto disable;
65
-        }
63
-        }
66
+    /* Did it complete? */
64
+    /* Did it complete? */
67
+    if (ret & WM831X_AUXADC_DATA_EINT) {
65
+    if (ret & WM831X_AUXADC_DATA_EINT) {
68
+        wm831x_reg_write(wm831x,
66
+        wm831x_reg_write(wm831x, WM831X_INTERRUPT_STATUS_1,
69
+                    WM831X_INTERRUPT_STATUS_1,
67
+                WM831X_AUXADC_DATA_EINT);
70
+                    WM831X_AUXADC_DATA_EINT);
71
+    } else {
68
+    } else {
72
+        dev_err(wm831x->dev,
69
+        dev_err(wm831x->dev,
73
+            "AUXADC conversion timeout\n");
70
+            "AUXADC conversion timeout\n");
74
+        ret = -EBUSY;
71
+        ret = -EBUSY;
75
+        goto disable;
72
+        goto disable;
76
    }
73
    }
77
74
78
    ret = wm831x_reg_read(wm831x, WM831X_AUXADC_DATA);
75
    ret = wm831x_reg_read(wm831x, WM831X_AUXADC_DATA);
79
--
76
--
80
2.34.1
77
2.34.1
diff view generated by jsdifflib