watchdog: sbsa: use 32-bit read for WCV
authorJayachandran C <jnair@caviumnetworks.com>
Wed, 28 Feb 2018 10:52:20 +0000 (02:52 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 30 May 2018 05:52:10 +0000 (07:52 +0200)
commit73ecd80bca2bab39fd926aadf2a0665ee25e026e
tree6c6197eef4469e52a1a4e8302431904da910616d
parent49995a2931bba15fd53879ec3c8116f6d3644dca
watchdog: sbsa: use 32-bit read for WCV

[ Upstream commit 93ac3deb7c220cbcec032a967220a1f109d58431 ]

According to SBSA spec v3.1 section 5.3:
  All registers are 32 bits in size and should be accessed using
  32-bit reads and writes. If an access size other than 32 bits
  is used then the results are IMPLEMENTATION DEFINED.
  [...]
  The Generic Watchdog is little-endian

The current code uses readq to read the watchdog compare register
which does a 64-bit access. This fails on ThunderX2 which does not
implement 64-bit access to this register.

Fix this by using lo_hi_readq() that does two 32-bit reads.

Signed-off-by: Jayachandran C <jnair@caviumnetworks.com>
Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/watchdog/sbsa_gwdt.c