bif: bif-core: fall back on time-invariant transactions for read and write
Fall back and use time-invariant individual transactions for BIF
slave register read and write operations if high level read or
write controller callback functions fail.
Change-Id: Ieaf479717383719dc1f5b94cc4be72f2e8901127
Signed-off-by: David Collins <collinsd@codeaurora.org>
diff --git a/drivers/bif/bif-core.c b/drivers/bif/bif-core.c
index 3030caa..e273baa 100644
--- a/drivers/bif/bif-core.c
+++ b/drivers/bif/bif-core.c
@@ -448,8 +448,13 @@
rc = bdev->desc->ops->read_slave_registers(bdev, addr, buf,
len);
if (rc)
- pr_err("read_slave_registers failed, rc=%d\n", rc);
- return rc;
+ pr_debug("read_slave_registers failed, rc=%d\n", rc);
+ else
+ return rc;
+ /*
+ * Fall back on individual transactions if high level register
+ * read failed.
+ */
}
for (i = 0; i < len; i++) {
@@ -521,8 +526,13 @@
rc = bdev->desc->ops->write_slave_registers(bdev, addr, buf,
len);
if (rc)
- pr_err("write_slave_registers failed, rc=%d\n", rc);
- return rc;
+ pr_debug("write_slave_registers failed, rc=%d\n", rc);
+ else
+ return rc;
+ /*
+ * Fall back on individual transactions if high level register
+ * write failed.
+ */
}
rc = bdev->desc->ops->bus_transaction(bdev, BIF_TRANS_ERA, addr >> 8);