aboutsummaryrefslogtreecommitdiff
path: root/hw/chiptod.c
diff options
context:
space:
mode:
authorMahesh Salgaonkar <mahesh@linux.vnet.ibm.com>2014-10-14 21:40:51 +0530
committerStewart Smith <stewart@linux.vnet.ibm.com>2014-12-02 14:17:25 +1100
commit699c433a8c736f44b13b7ba28cc0f9e0ac55840c (patch)
tree49a01df1e548abece3a0ed27e3a1c7d3726002cb /hw/chiptod.c
parentb77a89ed78436000833ad7e210fc58e51d4e9b93 (diff)
downloadskiboot-699c433a8c736f44b13b7ba28cc0f9e0ac55840c.zip
skiboot-699c433a8c736f44b13b7ba28cc0f9e0ac55840c.tar.gz
skiboot-699c433a8c736f44b13b7ba28cc0f9e0ac55840c.tar.bz2
opal: Handle more TFAC errors.
Handle more TFAC errors reported through TFMR i.e TB_RESIDUE_ERR, FW_CONTROL_ERR and CHIP_TOD_PARITY_ERR. Clear these errors by writing to respective TFMR bits. Signed-off-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'hw/chiptod.c')
-rw-r--r--hw/chiptod.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/hw/chiptod.c b/hw/chiptod.c
index daa67ef..295c745 100644
--- a/hw/chiptod.c
+++ b/hw/chiptod.c
@@ -311,6 +311,8 @@ static bool chiptod_reset_tb_errors(void)
tfmr |= SPR_TFMR_TB_MISSING_SYNC;
tfmr |= SPR_TFMR_TB_MISSING_STEP;
tfmr |= SPR_TFMR_TB_RESIDUE_ERR;
+ tfmr |= SPR_TFMR_FW_CONTROL_ERR;
+ tfmr |= SPR_TFMR_CHIP_TOD_PARITY_ERR;
mtspr(SPR_TFMR, tfmr);
/* We have to write "Clear TB Errors" again */
@@ -652,6 +654,9 @@ int chiptod_recover_tb_errors(void)
* clear it.
*/
if ((tfmr & SPR_TFMR_TB_MISSING_STEP) ||
+ (tfmr & SPR_TFMR_TB_RESIDUE_ERR) ||
+ (tfmr & SPR_TFMR_FW_CONTROL_ERR) ||
+ (tfmr & SPR_TFMR_CHIP_TOD_PARITY_ERR) ||
(tfmr & SPR_TFMR_TB_MISSING_SYNC)) {
if (!chiptod_reset_tb_errors()) {
rc = 0;