Re: [PATCH v4 01/20] remoteproc: k3_system_controller: Support optional boot_notification channel

2022-02-08 Thread Tom Rini
On Tue, Jan 25, 2022 at 08:56:27PM +0530, Aswath Govindraju wrote:

> From: Nishanth Menon 
> 
> If there is an optional boot notification channel that an SoC uses
> separate from the rx path, use the same.
> 
> Signed-off-by: Nishanth Menon 

Applied to u-boot/master, thanks!

-- 
Tom


signature.asc
Description: PGP signature


[PATCH v4 01/20] remoteproc: k3_system_controller: Support optional boot_notification channel

2022-01-25 Thread Aswath Govindraju
From: Nishanth Menon 

If there is an optional boot notification channel that an SoC uses
separate from the rx path, use the same.

Signed-off-by: Nishanth Menon 
---
 .../remoteproc/k3-system-controller.txt   |  3 +++
 drivers/remoteproc/k3_system_controller.c | 20 ++-
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/doc/device-tree-bindings/remoteproc/k3-system-controller.txt 
b/doc/device-tree-bindings/remoteproc/k3-system-controller.txt
index 32f4720b0d17..33dc46812ed4 100644
--- a/doc/device-tree-bindings/remoteproc/k3-system-controller.txt
+++ b/doc/device-tree-bindings/remoteproc/k3-system-controller.txt
@@ -13,6 +13,9 @@ Required properties:
"rx" for Receive channel
 - mboxes:  Corresponding phandles to mailbox channels.
 
+Optional properties:
+
+- mbox-names:  "boot_notify" for Optional alternate boot notification 
channel.
 
 Example:
 
diff --git a/drivers/remoteproc/k3_system_controller.c 
b/drivers/remoteproc/k3_system_controller.c
index 89cb90207dcb..e2affe69c678 100644
--- a/drivers/remoteproc/k3_system_controller.c
+++ b/drivers/remoteproc/k3_system_controller.c
@@ -77,14 +77,18 @@ struct k3_sysctrler_desc {
  * struct k3_sysctrler_privdata - Structure representing System Controller 
data.
  * @chan_tx:   Transmit mailbox channel
  * @chan_rx:   Receive mailbox channel
+ * @chan_boot_notify:  Boot notification channel
  * @desc:  SoC description for this instance
  * @seq_nr:Counter for number of messages sent.
+ * @has_boot_notify:   Has separate boot notification channel
  */
 struct k3_sysctrler_privdata {
struct mbox_chan chan_tx;
struct mbox_chan chan_rx;
+   struct mbox_chan chan_boot_notify;
struct k3_sysctrler_desc *desc;
u32 seq_nr;
+   bool has_boot_notify;
 };
 
 static inline
@@ -223,7 +227,8 @@ static int k3_sysctrler_start(struct udevice *dev)
debug("%s(dev=%p)\n", __func__, dev);
 
/* Receive the boot notification. Note that it is sent only once. */
-   ret = mbox_recv(>chan_rx, , priv->desc->max_rx_timeout_us);
+   ret = mbox_recv(priv->has_boot_notify ? >chan_boot_notify :
+   >chan_rx, , priv->desc->max_rx_timeout_us);
if (ret) {
dev_err(dev, "%s: Boot Notification response failed. ret = 
%d\n",
__func__, ret);
@@ -272,6 +277,19 @@ static int k3_of_to_priv(struct udevice *dev,
return ret;
}
 
+   /* Some SoCs may have a optional channel for boot notification. */
+   priv->has_boot_notify = 1;
+   ret = mbox_get_by_name(dev, "boot_notify", >chan_boot_notify);
+   if (ret == -ENODATA) {
+   dev_dbg(dev, "%s: Acquiring optional Boot_notify failed. ret = 
%d. Using Rx\n",
+   __func__, ret);
+   priv->has_boot_notify = 0;
+   } else if (ret) {
+   dev_err(dev, "%s: Acquiring boot_notify channel failed. ret = 
%d\n",
+   __func__, ret);
+   return ret;
+   }
+
return 0;
 }
 
-- 
2.17.1