All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Pali Rohár" <pali@kernel.org>
To: Gregory CLEMENT <gregory.clement@bootlin.com>,
	Andrew Lunn <andrew@lunn.ch>
Cc: "Marek Behún" <kabel@kernel.org>,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH v2 mvebu + mvebu/dt64 3/6] firmware: turris-mox-rwtm: fail probing when firmware does not support hwrng
Date: Thu, 29 Apr 2021 10:36:33 +0200	[thread overview]
Message-ID: <20210429083636.22560-3-pali@kernel.org> (raw)
In-Reply-To: <20210429083636.22560-1-pali@kernel.org>

When Marvell's rWTM firmware, which does not support the GET_RANDOM
command, is used, kernel prints an error message
  hwrng: no data available
every 10 seconds.

Fail probing of this driver if the rWTM firmware does not support the
GET_RANDOM command.

This makes it possible to put this driver's compatible into generic
armada-37xx device tree, to be available for other Armada 3720 devices
besides Turris MOX. If they use the rWTM firmware from CZ.NIC, they will
have HWRNG available, and if not, the driver won't be complaining.

Signed-off-by: Pali Rohár <pali@kernel.org>
Fixes: 389711b37493 ("firmware: Add Turris Mox rWTM firmware driver")
Signed-off-by: Marek Behún <kabel@kernel.org>
---
 drivers/firmware/turris-mox-rwtm.c | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/drivers/firmware/turris-mox-rwtm.c b/drivers/firmware/turris-mox-rwtm.c
index d7e3489e4bf2..3ef9687dddca 100644
--- a/drivers/firmware/turris-mox-rwtm.c
+++ b/drivers/firmware/turris-mox-rwtm.c
@@ -260,6 +260,27 @@ static int mox_get_board_info(struct mox_rwtm *rwtm)
 	return 0;
 }
 
+static int check_get_random_support(struct mox_rwtm *rwtm)
+{
+	struct armada_37xx_rwtm_tx_msg msg;
+	int ret;
+
+	msg.command = MBOX_CMD_GET_RANDOM;
+	msg.args[0] = 1;
+	msg.args[1] = rwtm->buf_phys;
+	msg.args[2] = 4;
+
+	ret = mbox_send_message(rwtm->mbox, &msg);
+	if (ret < 0)
+		return ret;
+
+	ret = wait_for_completion_timeout(&rwtm->cmd_done, HZ / 2);
+	if (ret < 0)
+		return ret;
+
+	return mox_get_status(MBOX_CMD_GET_RANDOM, rwtm->reply.retval);
+}
+
 static int mox_hwrng_read(struct hwrng *rng, void *data, size_t max, bool wait)
 {
 	struct mox_rwtm *rwtm = (struct mox_rwtm *) rng->priv;
@@ -497,6 +518,13 @@ static int turris_mox_rwtm_probe(struct platform_device *pdev)
 	if (ret < 0)
 		dev_warn(dev, "Cannot read board information: %i\n", ret);
 
+	ret = check_get_random_support(rwtm);
+	if (ret < 0) {
+		dev_notice(dev,
+			   "Firmware does not support the GET_RANDOM command\n");
+		goto free_channel;
+	}
+
 	rwtm->hwrng.name = DRIVER_NAME "_hwrng";
 	rwtm->hwrng.read = mox_hwrng_read;
 	rwtm->hwrng.priv = (unsigned long) rwtm;
-- 
2.20.1


WARNING: multiple messages have this Message-ID (diff)
From: "Pali Rohár" <pali@kernel.org>
To: Gregory CLEMENT <gregory.clement@bootlin.com>,
	Andrew Lunn <andrew@lunn.ch>
Cc: "Marek Behún" <kabel@kernel.org>,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: [PATCH v2 mvebu + mvebu/dt64 3/6] firmware: turris-mox-rwtm: fail probing when firmware does not support hwrng
Date: Thu, 29 Apr 2021 10:36:33 +0200	[thread overview]
Message-ID: <20210429083636.22560-3-pali@kernel.org> (raw)
In-Reply-To: <20210429083636.22560-1-pali@kernel.org>

When Marvell's rWTM firmware, which does not support the GET_RANDOM
command, is used, kernel prints an error message
  hwrng: no data available
every 10 seconds.

Fail probing of this driver if the rWTM firmware does not support the
GET_RANDOM command.

This makes it possible to put this driver's compatible into generic
armada-37xx device tree, to be available for other Armada 3720 devices
besides Turris MOX. If they use the rWTM firmware from CZ.NIC, they will
have HWRNG available, and if not, the driver won't be complaining.

Signed-off-by: Pali Rohár <pali@kernel.org>
Fixes: 389711b37493 ("firmware: Add Turris Mox rWTM firmware driver")
Signed-off-by: Marek Behún <kabel@kernel.org>
---
 drivers/firmware/turris-mox-rwtm.c | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/drivers/firmware/turris-mox-rwtm.c b/drivers/firmware/turris-mox-rwtm.c
index d7e3489e4bf2..3ef9687dddca 100644
--- a/drivers/firmware/turris-mox-rwtm.c
+++ b/drivers/firmware/turris-mox-rwtm.c
@@ -260,6 +260,27 @@ static int mox_get_board_info(struct mox_rwtm *rwtm)
 	return 0;
 }
 
+static int check_get_random_support(struct mox_rwtm *rwtm)
+{
+	struct armada_37xx_rwtm_tx_msg msg;
+	int ret;
+
+	msg.command = MBOX_CMD_GET_RANDOM;
+	msg.args[0] = 1;
+	msg.args[1] = rwtm->buf_phys;
+	msg.args[2] = 4;
+
+	ret = mbox_send_message(rwtm->mbox, &msg);
+	if (ret < 0)
+		return ret;
+
+	ret = wait_for_completion_timeout(&rwtm->cmd_done, HZ / 2);
+	if (ret < 0)
+		return ret;
+
+	return mox_get_status(MBOX_CMD_GET_RANDOM, rwtm->reply.retval);
+}
+
 static int mox_hwrng_read(struct hwrng *rng, void *data, size_t max, bool wait)
 {
 	struct mox_rwtm *rwtm = (struct mox_rwtm *) rng->priv;
@@ -497,6 +518,13 @@ static int turris_mox_rwtm_probe(struct platform_device *pdev)
 	if (ret < 0)
 		dev_warn(dev, "Cannot read board information: %i\n", ret);
 
+	ret = check_get_random_support(rwtm);
+	if (ret < 0) {
+		dev_notice(dev,
+			   "Firmware does not support the GET_RANDOM command\n");
+		goto free_channel;
+	}
+
 	rwtm->hwrng.name = DRIVER_NAME "_hwrng";
 	rwtm->hwrng.read = mox_hwrng_read;
 	rwtm->hwrng.priv = (unsigned long) rwtm;
-- 
2.20.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2021-04-29  8:36 UTC|newest]

Thread overview: 107+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-08 15:37 [PATCH mvebu + mvebu/dt64 1/4] firmware: turris-mox-rwtm: fix reply status decoding function Marek Behún
2021-03-08 15:37 ` [PATCH mvebu + mvebu/dt64 2/4] firmware: turris-mox-rwtm: report failures better Marek Behún
2021-03-08 15:37 ` [PATCH mvebu + mvebu/dt64 3/4] firmware: turris-mox-rwtm: fail probing when firmware does not support hwrng Marek Behún
2021-03-08 15:37 ` [PATCH mvebu + mvebu/dt64 4/4] arm64: dts: marvell: armada-37xx: move firmware node to generic dtsi file Marek Behún
2021-03-08 15:37   ` Marek Behún
2021-03-12  8:58   ` Gregory CLEMENT
2021-03-12  8:58     ` Gregory CLEMENT
2021-03-12  9:10     ` Marek Behún
2021-03-12  9:10       ` Marek Behún
2021-03-12 14:48       ` Andrew Lunn
2021-03-12 14:48         ` Andrew Lunn
2021-03-12 15:17         ` Marek Behún
2021-03-12 15:17           ` Marek Behún
2021-03-12 15:53           ` Andrew Lunn
2021-03-12 15:53             ` Andrew Lunn
2021-03-12 16:18             ` Pali Rohár
2021-03-12 16:18               ` Pali Rohár
2021-03-12 16:32               ` Marek Behún
2021-03-12 16:32                 ` Marek Behún
2021-03-15 10:14             ` Pali Rohár
2021-03-15 10:14               ` Pali Rohár
2021-03-15 12:08               ` Andrew Lunn
2021-03-15 12:08                 ` Andrew Lunn
2021-04-26 18:36                 ` Pali Rohár
2021-04-26 18:36                   ` Pali Rohár
2021-04-26 19:52                   ` Andrew Lunn
2021-04-26 19:52                     ` Andrew Lunn
2021-04-29  8:36 ` [PATCH v2 mvebu + mvebu/dt64 1/6] firmware: turris-mox-rwtm: fix reply status decoding function Pali Rohár
2021-04-29  8:36   ` Pali Rohár
2021-04-29  8:36   ` [PATCH v2 mvebu + mvebu/dt64 2/6] firmware: turris-mox-rwtm: report failures better Pali Rohár
2021-04-29  8:36     ` Pali Rohár
2021-04-29  8:36   ` Pali Rohár [this message]
2021-04-29  8:36     ` [PATCH v2 mvebu + mvebu/dt64 3/6] firmware: turris-mox-rwtm: fail probing when firmware does not support hwrng Pali Rohár
2021-04-29  8:36   ` [PATCH v2 mvebu + mvebu/dt64 4/6] firmware: turris-mox-rwtm: show message about HWRNG registration Pali Rohár
2021-04-29  8:36     ` Pali Rohár
2021-04-29  8:36   ` [PATCH v2 mvebu + mvebu/dt64 5/6] firmware: turris-mox-rwtm: add marvell,armada-3700-rwtm-firmware compatible string Pali Rohár
2021-04-29  8:36     ` [PATCH v2 mvebu + mvebu/dt64 5/6] firmware: turris-mox-rwtm: add marvell, armada-3700-rwtm-firmware " Pali Rohár
2021-04-29  8:36   ` [PATCH v2 mvebu + mvebu/dt64 6/6] arm64: dts: marvell: armada-37xx: move firmware node to generic dtsi file Pali Rohár
2021-04-29  8:36     ` Pali Rohár
2021-05-03 12:22   ` [PATCH v2 mvebu + mvebu/dt64 1/6] firmware: turris-mox-rwtm: fix reply status decoding function Andrew Lunn
2021-05-03 12:22     ` Andrew Lunn
2021-05-05 16:04     ` Marek Behún
2021-05-05 16:04       ` Marek Behún
2021-05-05 16:20       ` Andrew Lunn
2021-05-05 16:20         ` Andrew Lunn
2021-05-11 21:46         ` Pali Rohár
2021-05-11 21:46           ` Pali Rohár
2021-05-06  9:07 ` [PATCH v3 " Pali Rohár
2021-05-06  9:07   ` Pali Rohár
2021-05-06  9:07   ` [PATCH v3 mvebu + mvebu/dt64 2/6] firmware: turris-mox-rwtm: report failures better Pali Rohár
2021-05-06  9:07     ` Pali Rohár
2021-05-06  9:07   ` [PATCH v3 mvebu + mvebu/dt64 3/6] firmware: turris-mox-rwtm: fail probing when firmware does not support hwrng Pali Rohár
2021-05-06  9:07     ` Pali Rohár
2021-05-12  0:56     ` Andrew Lunn
2021-05-12  0:56       ` Andrew Lunn
2021-05-20 11:38       ` Pali Rohár
2021-05-20 11:38         ` Pali Rohár
2021-05-06  9:08   ` [PATCH v3 mvebu + mvebu/dt64 4/6] firmware: turris-mox-rwtm: show message about HWRNG registration Pali Rohár
2021-05-06  9:08     ` Pali Rohár
2021-05-06  9:08   ` [PATCH v3 mvebu + mvebu/dt64 5/6] firmware: turris-mox-rwtm: add marvell,armada-3700-rwtm-firmware compatible string Pali Rohár
2021-05-06  9:08     ` [PATCH v3 mvebu + mvebu/dt64 5/6] firmware: turris-mox-rwtm: add marvell, armada-3700-rwtm-firmware " Pali Rohár
2021-05-06  9:08   ` [PATCH v3 mvebu + mvebu/dt64 6/6] arm64: dts: marvell: armada-37xx: move firmware node to generic dtsi file Pali Rohár
2021-05-06  9:08     ` Pali Rohár
2021-05-12  0:59     ` Andrew Lunn
2021-05-12  0:59       ` Andrew Lunn
2021-05-20 11:40       ` Pali Rohár
2021-05-20 11:40         ` Pali Rohár
2021-05-12  0:49   ` [PATCH v3 mvebu + mvebu/dt64 1/6] firmware: turris-mox-rwtm: fix reply status decoding function Andrew Lunn
2021-05-12  0:49     ` Andrew Lunn
2021-05-20 11:35 ` [PATCH v4 mvebu 0/4] firmware: turris-mox-rwtm: fixups Pali Rohár
2021-05-20 11:35   ` Pali Rohár
2021-05-20 11:35   ` [PATCH v4 mvebu 1/4] firmware: turris-mox-rwtm: fix reply status decoding function Pali Rohár
2021-05-20 11:35     ` Pali Rohár
2021-05-20 11:35   ` [PATCH v4 mvebu 2/4] firmware: turris-mox-rwtm: report failures better Pali Rohár
2021-05-20 11:35     ` Pali Rohár
2021-05-21  1:38     ` Andrew Lunn
2021-05-21  1:38       ` Andrew Lunn
2021-05-20 11:35   ` [PATCH v4 mvebu 3/4] firmware: turris-mox-rwtm: fail probing when firmware does not support hwrng Pali Rohár
2021-05-20 11:35     ` Pali Rohár
2021-05-21  1:39     ` Andrew Lunn
2021-05-21  1:39       ` Andrew Lunn
2021-05-20 11:35   ` [PATCH v4 mvebu 4/4] firmware: turris-mox-rwtm: show message about HWRNG registration Pali Rohár
2021-05-20 11:35     ` Pali Rohár
2021-05-21  1:40     ` Andrew Lunn
2021-05-21  1:40       ` Andrew Lunn
2021-06-17 13:06   ` [PATCH v4 mvebu 0/4] firmware: turris-mox-rwtm: fixups Gregory CLEMENT
2021-06-17 13:06     ` Gregory CLEMENT
2021-07-07 18:14     ` Pali Rohár
2021-07-07 18:14       ` Pali Rohár
2021-07-23 12:45       ` Gregory CLEMENT
2021-07-23 12:45         ` Gregory CLEMENT
2021-07-23 12:47         ` Pali Rohár
2021-07-23 12:47           ` Pali Rohár
2021-05-20 11:38 ` [PATCH v4 mvebu + mvebu/dt64 0/2] firmware: turris-mox-rwtm: new compatible string Pali Rohár
2021-05-20 11:38   ` Pali Rohár
2021-05-20 11:38   ` [PATCH v4 mvebu + mvebu/dt64 1/2] firmware: turris-mox-rwtm: add marvell,armada-3700-rwtm-firmware " Pali Rohár
2021-05-20 11:38     ` [PATCH v4 mvebu + mvebu/dt64 1/2] firmware: turris-mox-rwtm: add marvell, armada-3700-rwtm-firmware " Pali Rohár
2021-05-21  1:41     ` [PATCH v4 mvebu + mvebu/dt64 1/2] firmware: turris-mox-rwtm: add marvell,armada-3700-rwtm-firmware " Andrew Lunn
2021-05-21  1:41       ` Andrew Lunn
2021-06-17 13:07     ` Gregory CLEMENT
2021-06-17 13:07       ` Gregory CLEMENT
2021-05-20 11:38   ` [PATCH v4 mvebu + mvebu/dt64 2/2] arm64: dts: marvell: armada-37xx: move firmware node to generic dtsi file Pali Rohár
2021-05-20 11:38     ` Pali Rohár
2021-05-21  1:42     ` Andrew Lunn
2021-05-21  1:42       ` Andrew Lunn
2021-06-17 13:08     ` Gregory CLEMENT
2021-06-17 13:08       ` Gregory CLEMENT

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210429083636.22560-3-pali@kernel.org \
    --to=pali@kernel.org \
    --cc=andrew@lunn.ch \
    --cc=gregory.clement@bootlin.com \
    --cc=kabel@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.