]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
siox: treat type errors as status errors
authorUwe Kleine-König <u.kleine-koenig@pengutronix.de>
Tue, 19 Jun 2018 09:38:54 +0000 (11:38 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 7 Jul 2018 15:38:57 +0000 (17:38 +0200)
The type bits are part of the per-device status word. So it's natural to
consider an error in the type bits as a status error instead of only
resulting in an unsynced state.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Acked-by: Gavin Schenk <g.schenk@eckelmann.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/siox/siox-core.c

index 16590dfaafa448d43f00cbced0dbb457782fff93..3115f930fa83b9da64a52674eeb8983fb083891f 100644 (file)
@@ -215,26 +215,26 @@ static void siox_poll(struct siox_master *smaster)
                        siox_status_clean(status,
                                          sdevice->status_written_lastcycle);
 
-               /* Check counter bits */
-               if (siox_device_counter_error(sdevice, status_clean)) {
-                       bool prev_counter_error;
+               /* Check counter and type bits */
+               if (siox_device_counter_error(sdevice, status_clean) ||
+                   siox_device_type_error(sdevice, status_clean)) {
+                       bool prev_error;
 
                        synced = false;
 
                        /* only report a new error if the last cycle was ok */
-                       prev_counter_error =
+                       prev_error =
                                siox_device_counter_error(sdevice,
-                                                         prev_status_clean);
-                       if (!prev_counter_error) {
+                                                         prev_status_clean) ||
+                               siox_device_type_error(sdevice,
+                                                      prev_status_clean);
+
+                       if (!prev_error) {
                                sdevice->status_errors++;
                                sysfs_notify_dirent(sdevice->status_errors_kn);
                        }
                }
 
-               /* Check type bits */
-               if (siox_device_type_error(sdevice, status_clean))
-                       synced = false;
-
                /* If the device is unsynced report the watchdog as active */
                if (!synced) {
                        status &= ~SIOX_STATUS_WDG;