firmware: turris-mox-rwtm: report failures better
authorMarek Behún <kabel@kernel.org>
Thu, 20 May 2021 11:35:18 +0000 (13:35 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 20 Jul 2021 14:05:58 +0000 (16:05 +0200)
[ Upstream commit 72f99888944c44de1c899bbe44db1e53bdc9d994 ]

Report a notice level message if a command is not supported by the rWTM
firmware.

This should not be an error, merely a notice, because the firmware can
be used on boards that do not have manufacturing information burned.

Fixes: 389711b37493 ("firmware: Add Turris Mox rWTM firmware driver")
Signed-off-by: Marek Behún <kabel@kernel.org>
Reviewed-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/firmware/turris-mox-rwtm.c

index 54b9864..0f9e40a 100644 (file)
@@ -204,11 +204,14 @@ static int mox_get_board_info(struct mox_rwtm *rwtm)
                return ret;
 
        ret = mox_get_status(MBOX_CMD_BOARD_INFO, reply->retval);
-       if (ret < 0 && ret != -ENODATA) {
-               return ret;
-       } else if (ret == -ENODATA) {
+       if (ret == -ENODATA) {
                dev_warn(rwtm->dev,
                         "Board does not have manufacturing information burned!\n");
+       } else if (ret == -ENOSYS) {
+               dev_notice(rwtm->dev,
+                          "Firmware does not support the BOARD_INFO command\n");
+       } else if (ret < 0) {
+               return ret;
        } else {
                rwtm->serial_number = reply->status[1];
                rwtm->serial_number <<= 32;
@@ -237,10 +240,13 @@ static int mox_get_board_info(struct mox_rwtm *rwtm)
                return ret;
 
        ret = mox_get_status(MBOX_CMD_ECDSA_PUB_KEY, reply->retval);
-       if (ret < 0 && ret != -ENODATA) {
-               return ret;
-       } else if (ret == -ENODATA) {
+       if (ret == -ENODATA) {
                dev_warn(rwtm->dev, "Board has no public key burned!\n");
+       } else if (ret == -ENOSYS) {
+               dev_notice(rwtm->dev,
+                          "Firmware does not support the ECDSA_PUB_KEY command\n");
+       } else if (ret < 0) {
+               return ret;
        } else {
                u32 *s = reply->status;