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 |