All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/2] remoteproc: add AMD BRAM-based remote processor driver
@ 2026-04-27 16:27 Ben Levinsky
  2026-04-27 16:27 ` [PATCH v2 1/2] dt-bindings: remoteproc: document AMD BRAM-based rproc Ben Levinsky
  2026-04-27 16:27 ` [PATCH v2 2/2] remoteproc: add AMD BRAM-based remote processor driver Ben Levinsky
  0 siblings, 2 replies; 12+ messages in thread
From: Ben Levinsky @ 2026-04-27 16:27 UTC (permalink / raw)
  To: andersson, mathieu.poirier, robh, krzk+dt, conor+dt,
	linux-remoteproc, devicetree, linux-kernel
  Cc: michal.simek, tanmay.shah, ben.levinsky

Add a BRAM-based remoteproc driver and corresponding binding
for AMD soft processors located in programmable logic.

v2:
  This version pivots the series away from a MicroBlaze-specific
  binding and driver shape and instead models a BRAM-based soft-core
  processor subsystem more generally.

  This follows the upstream feedback that amd,microblaze was too tied
  to the processor architecture while also being too generic as a DT
  compatible for the hardware interface being described.

  Patch 1, dt-bindings: remoteproc: document AMD BRAM-based rproc

  - Renamed the binding away from amd,microblaze and reframed it
    around a BRAM-based soft-core processor subsystem.
  - Dropped the redundant trailing "binding" wording from the patch
    subject.
  - Rewrote the binding text to describe the hardware rather than the
    Linux remoteproc framework.
  - Reworked the example to address the original dt_binding_check
    complaints about the root node and simple-pm-bus example shape.
  - Added a clocks property for the soft-core subsystem.

  Patch 2, remoteproc: add AMD BRAM-based remote processor driver

  - Renamed the driver away from the MicroBlaze-specific name to match
    the BRAM-based binding.
  - Added clock handling for the soft-core subsystem and the matching
    COMMON_CLK dependency in Kconfig.
  - Cleaned up the reset comments and removed the success dev_dbg()
    message called out in review.

Ben Levinsky (2):
  dt-bindings: remoteproc: document AMD BRAM-based rproc
  remoteproc: add AMD BRAM-based remote processor driver

 .../bindings/remoteproc/amd,bram-rproc.yaml   |  98 +++++++
 MAINTAINERS                                   |   7 +
 drivers/remoteproc/Kconfig                    |  14 +
 drivers/remoteproc/Makefile                   |   1 +
 drivers/remoteproc/amd_bram_rproc.c           | 243 ++++++++++++++++++
 5 files changed, 363 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml
 create mode 100644 drivers/remoteproc/amd_bram_rproc.c

-- 
2.34.1

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH v2 1/2] dt-bindings: remoteproc: document AMD BRAM-based rproc
  2026-04-27 16:27 [PATCH v2 0/2] remoteproc: add AMD BRAM-based remote processor driver Ben Levinsky
@ 2026-04-27 16:27 ` Ben Levinsky
  2026-04-28  6:50   ` Krzysztof Kozlowski
  2026-04-27 16:27 ` [PATCH v2 2/2] remoteproc: add AMD BRAM-based remote processor driver Ben Levinsky
  1 sibling, 1 reply; 12+ messages in thread
From: Ben Levinsky @ 2026-04-27 16:27 UTC (permalink / raw)
  To: andersson, mathieu.poirier, robh, krzk+dt, conor+dt,
	linux-remoteproc, devicetree, linux-kernel
  Cc: michal.simek, tanmay.shah, ben.levinsky

Describe an AMD BRAM-based soft-core processor subsystem instantiated in
programmable logic and using dual-port BRAM for firmware storage and
execution.

The binding models a soft-core processor subsystem instantiated in AMD
programmable logic and using dual-port BRAM for firmware storage and
execution. The remoteproc device is represented as a child node whose
reg property describes the firmware memory window in the processor-local
address space. The parent bus node provides standard devicetree address
translation through ranges so Linux can access the same BRAM through the
system physical address space.

A clock input feeds the soft-core processor subsystem, and an active-low
reset GPIO holds the processor in reset until firmware loading
completes. The firmware-name property is optional.

Signed-off-by: Ben Levinsky <ben.levinsky@amd.com>
---
 .../bindings/remoteproc/amd,bram-rproc.yaml   | 98 +++++++++++++++++++
 1 file changed, 98 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml

diff --git a/Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml
new file mode 100644
index 000000000000..f16657dc0d9f
--- /dev/null
+++ b/Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml
@@ -0,0 +1,98 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/remoteproc/amd,bram-rproc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: AMD BRAM-based Remote Processor
+
+maintainers:
+  - Ben Levinsky <ben.levinsky@amd.com>
+
+description: |
+  Soft-core processor subsystem instantiated in AMD programmable logic and
+  using dual-port BRAM for firmware storage and execution.
+
+  Hardware Architecture:
+
+    Host (PS)                        Programmable Logic (PL)
+    =========                        ======================
+
+    AXI Interface -----------------> AXI BRAM Controller (Host Port)
+                                             |
+                                             | Port A
+                                             v
+                                     +-----------------+
+                                     |  Dual-Port BRAM |
+                                     | (shared memory) |
+                                     +-----------------+
+                                             ^
+                                             | Port B
+                                             |
+                                     AXI BRAM Controller (Soft-core Port)
+                                             ^
+                                             | LMB
+                                             |
+                                     Soft-core CPU (MicroBlaze/V)
+
+    GPIO --------------------------> Proc Sys Reset ----> CPU Reset Signal
+
+    Clock -------------------------> Clock Distribution -> CPU Clock
+
+  Memory Architecture:
+
+    The dual-port BRAM allows simultaneous access from both processors:
+      - Port A: Connected to the host AXI BRAM controller for firmware loading
+      - Port B: Connected to the soft-core local memory bus for execution
+
+  The reg property describes the executable BRAM window in the processor-local
+  address space. The parent bus node translates that window to the system
+  physical address space by using standard devicetree address translation
+  through ranges. A clock input and a reset GPIO control the subsystem.
+
+properties:
+  compatible:
+    const: amd,bram-rproc
+
+  reg:
+    maxItems: 1
+    description:
+      Processor-local address and size of the BRAM firmware memory window,
+      as seen by the soft-core processor (typically 0x0 for reset vector).
+      The parent bus ranges property must translate this window to the
+      corresponding system physical address.
+
+  clocks:
+    maxItems: 1
+    description:
+      Clock input for the soft-core processor subsystem.
+
+  firmware-name:
+    maxItems: 1
+    description:
+      Name of the firmware ELF file to load.
+
+  reset-gpios:
+    maxItems: 1
+    description:
+      GPIO specifier controlling the soft-core reset input.
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - reset-gpios
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+    remoteproc@0 {
+      compatible = "amd,bram-rproc";
+      reg = <0x0 0x40000>;
+      clocks = <&pl_clk>;
+      firmware-name = "firmware.elf";
+      reset-gpios = <&gpio0 0 GPIO_ACTIVE_LOW>;
+    };
+...
-- 
2.34.1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [PATCH v2 2/2] remoteproc: add AMD BRAM-based remote processor driver
  2026-04-27 16:27 [PATCH v2 0/2] remoteproc: add AMD BRAM-based remote processor driver Ben Levinsky
  2026-04-27 16:27 ` [PATCH v2 1/2] dt-bindings: remoteproc: document AMD BRAM-based rproc Ben Levinsky
@ 2026-04-27 16:27 ` Ben Levinsky
  1 sibling, 0 replies; 12+ messages in thread
From: Ben Levinsky @ 2026-04-27 16:27 UTC (permalink / raw)
  To: andersson, mathieu.poirier, robh, krzk+dt, conor+dt,
	linux-remoteproc, devicetree, linux-kernel
  Cc: michal.simek, tanmay.shah, ben.levinsky

Add a remoteproc driver for AMD soft-core processor subsystems
instantiated in programmable logic and using dual-port BRAM for
firmware storage and execution.

The driver parses the firmware memory window from the remoteproc device
node's reg property, interprets that address and size in the
processor-local address space, and then uses standard devicetree
address translation through the parent bus ranges property to obtain
the corresponding Linux-visible system physical address.

The resulting translated region is registered as the executable
remoteproc carveout and coredump segment.

The processor is controlled through an active-low reset GPIO and a
subsystem clock. The clock is enabled before reset is released, and the
processor is kept in reset until firmware loading completes.

The firmware-name property is optional, allowing the firmware image to
be assigned later. Firmware images without a resource table are also
accepted.

Signed-off-by: Ben Levinsky <ben.levinsky@amd.com>
---
 MAINTAINERS                         |   7 +
 drivers/remoteproc/Kconfig          |  14 ++
 drivers/remoteproc/Makefile         |   1 +
 drivers/remoteproc/amd_bram_rproc.c | 243 ++++++++++++++++++++++++++++
 4 files changed, 265 insertions(+)
 create mode 100644 drivers/remoteproc/amd_bram_rproc.c

diff --git a/MAINTAINERS b/MAINTAINERS
index c871acf2179c..172539971950 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1037,6 +1037,13 @@ S:	Maintained
 F:	Documentation/devicetree/bindings/w1/amd,axi-1wire-host.yaml
 F:	drivers/w1/masters/amd_axi_w1.c
 
+AMD BRAM REMOTEPROC DRIVER
+M:	Ben Levinsky <ben.levinsky@amd.com>
+L:	linux-remoteproc@vger.kernel.org
+S:	Maintained
+F:	Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml
+F:	drivers/remoteproc/amd_bram_rproc.c
+
 AMD CDX BUS DRIVER
 M:	Nipun Gupta <nipun.gupta@amd.com>
 M:	Nikhil Agarwal <nikhil.agarwal@amd.com>
diff --git a/drivers/remoteproc/Kconfig b/drivers/remoteproc/Kconfig
index ee54436fea5a..9a2a887ede8a 100644
--- a/drivers/remoteproc/Kconfig
+++ b/drivers/remoteproc/Kconfig
@@ -23,6 +23,20 @@ config REMOTEPROC_CDEV
 
 	  It's safe to say N if you don't want to use this interface.
 
+config AMD_BRAM_REMOTEPROC
+	tristate "AMD BRAM-based remoteproc support"
+	depends on OF && COMMON_CLK && (GPIOLIB || COMPILE_TEST)
+	help
+	  Say y or m here to support a BRAM-based remote processor managed
+	  through the remoteproc framework.
+
+	  This driver matches designs where executable firmware memory is
+	  described in the BRAM-local address space and translated to
+	  the system physical address space with standard devicetree address
+	  translation.
+
+	  If unsure, say N.
+
 config IMX_REMOTEPROC
 	tristate "i.MX remoteproc support"
 	depends on ARCH_MXC
diff --git a/drivers/remoteproc/Makefile b/drivers/remoteproc/Makefile
index 1c7598b8475d..5c39664b50c3 100644
--- a/drivers/remoteproc/Makefile
+++ b/drivers/remoteproc/Makefile
@@ -11,6 +11,7 @@ remoteproc-y				+= remoteproc_sysfs.o
 remoteproc-y				+= remoteproc_virtio.o
 remoteproc-y				+= remoteproc_elf_loader.o
 obj-$(CONFIG_REMOTEPROC_CDEV)		+= remoteproc_cdev.o
+obj-$(CONFIG_AMD_BRAM_REMOTEPROC)	+= amd_bram_rproc.o
 obj-$(CONFIG_IMX_REMOTEPROC)		+= imx_rproc.o
 obj-$(CONFIG_IMX_DSP_REMOTEPROC)	+= imx_dsp_rproc.o
 obj-$(CONFIG_INGENIC_VPU_RPROC)		+= ingenic_rproc.o
diff --git a/drivers/remoteproc/amd_bram_rproc.c b/drivers/remoteproc/amd_bram_rproc.c
new file mode 100644
index 000000000000..aa346b80e84c
--- /dev/null
+++ b/drivers/remoteproc/amd_bram_rproc.c
@@ -0,0 +1,243 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * AMD BRAM-based Remote Processor driver
+ *
+ * Copyright (C) 2026 Advanced Micro Devices, Inc.
+ *
+ * This driver supports soft-core processors (MicroBlaze, MicroBlaze-V, or
+ * similar) instantiated in AMD programmable logic, using dual-port BRAM
+ * for firmware storage and execution.
+ *
+ * The firmware memory (BRAM) is described in the processor-local address
+ * space and translated to the Linux-visible system physical address with
+ * standard devicetree address translation.
+ *
+ * Reset is controlled via GPIO connected to Processor System Reset IP.
+ */
+
+#include <linux/clk.h>
+#include <linux/dma-mapping.h>
+#include <linux/gpio/consumer.h>
+#include <linux/io.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/of_address.h>
+#include <linux/platform_device.h>
+#include <linux/remoteproc.h>
+
+#include "remoteproc_internal.h"
+
+/**
+ * struct amd_bram_rproc - AMD BRAM-based remoteproc private data
+ * @dev: device pointer
+ * @reset: GPIO descriptor for reset control (active-low)
+ * @clk: processor clock
+ */
+struct amd_bram_rproc {
+	struct device *dev;
+	struct gpio_desc *reset;
+	struct clk *clk;
+};
+
+static int amd_bram_rproc_mem_map(struct rproc *rproc,
+				  struct rproc_mem_entry *mem)
+{
+	void __iomem *va;
+
+	va = ioremap_wc(mem->dma, mem->len);
+	if (!va)
+		return -ENOMEM;
+
+	mem->va = (__force void *)va;
+	mem->is_iomem = true;
+
+	return 0;
+}
+
+static int amd_bram_rproc_mem_unmap(struct rproc *rproc,
+				    struct rproc_mem_entry *mem)
+{
+	iounmap((void __iomem *)mem->va);
+
+	return 0;
+}
+
+static int amd_bram_rproc_prepare(struct rproc *rproc)
+{
+	struct amd_bram_rproc *priv = rproc->priv;
+	struct rproc_mem_entry *mem;
+	struct resource res;
+	u64 da, size;
+	int ret;
+
+	ret = of_property_read_reg(priv->dev->of_node, 0, &da, &size);
+	if (ret) {
+		dev_err(priv->dev, "failed to parse executable memory reg\n");
+		return ret;
+	}
+
+	if (!size || size > U32_MAX) {
+		dev_err(priv->dev, "invalid executable memory size\n");
+		return -EINVAL;
+	}
+
+	if (da > U32_MAX) {
+		dev_err(priv->dev, "invalid executable memory address\n");
+		return -EINVAL;
+	}
+
+	ret = of_address_to_resource(priv->dev->of_node, 0, &res);
+	if (ret) {
+		dev_err(priv->dev, "failed to translate executable memory reg\n");
+		return ret;
+	}
+
+	mem = rproc_mem_entry_init(priv->dev, NULL, (dma_addr_t)res.start,
+				   (size_t)size, da,
+				   amd_bram_rproc_mem_map,
+				   amd_bram_rproc_mem_unmap,
+				   dev_name(priv->dev));
+	if (!mem)
+		return -ENOMEM;
+
+	rproc_add_carveout(rproc, mem);
+	rproc_coredump_add_segment(rproc, da, (size_t)size);
+
+	return 0;
+}
+
+static int amd_bram_rproc_start(struct rproc *rproc)
+{
+	struct amd_bram_rproc *priv = rproc->priv;
+	int ret;
+
+	/* Enable clock before releasing reset */
+	ret = clk_prepare_enable(priv->clk);
+	if (ret) {
+		dev_err(priv->dev, "failed to enable clock: %d\n", ret);
+		return ret;
+	}
+
+	/* Deassert reset and let the processor run. */
+	ret = gpiod_set_value_cansleep(priv->reset, 0);
+	if (ret) {
+		dev_err(priv->dev, "failed to deassert reset: %d\n", ret);
+		clk_disable_unprepare(priv->clk);
+		return ret;
+	}
+
+	return 0;
+}
+
+static int amd_bram_rproc_stop(struct rproc *rproc)
+{
+	struct amd_bram_rproc *priv = rproc->priv;
+	int ret;
+
+	/* Assert reset before disabling the processor clock. */
+	ret = gpiod_set_value_cansleep(priv->reset, 1);
+	if (ret) {
+		dev_err(priv->dev, "failed to assert reset: %d\n", ret);
+		return ret;
+	}
+
+	/* Disable clock after asserting reset */
+	clk_disable_unprepare(priv->clk);
+
+	return 0;
+}
+
+static int amd_bram_rproc_parse_fw(struct rproc *rproc,
+				   const struct firmware *fw)
+{
+	int ret;
+
+	ret = rproc_elf_load_rsc_table(rproc, fw);
+	if (ret == -EINVAL) {
+		dev_dbg(&rproc->dev, "no resource table found\n");
+		return 0;
+	}
+
+	return ret;
+}
+
+static const struct rproc_ops amd_bram_rproc_ops = {
+	.prepare	= amd_bram_rproc_prepare,
+	.start		= amd_bram_rproc_start,
+	.stop		= amd_bram_rproc_stop,
+	.load		= rproc_elf_load_segments,
+	.sanity_check	= rproc_elf_sanity_check,
+	.get_boot_addr	= rproc_elf_get_boot_addr,
+	.parse_fw	= amd_bram_rproc_parse_fw,
+};
+
+static int amd_bram_rproc_probe(struct platform_device *pdev)
+{
+	struct device *dev = &pdev->dev;
+	struct amd_bram_rproc *priv;
+	const char *fw_name = NULL;
+	struct rproc *rproc;
+	int ret;
+
+	ret = rproc_of_parse_firmware(dev, 0, &fw_name);
+	if (ret < 0 && ret != -EINVAL)
+		return dev_err_probe(dev, ret,
+				     "failed to parse firmware-name property\n");
+
+	rproc = devm_rproc_alloc(dev, dev_name(dev), &amd_bram_rproc_ops,
+				 fw_name, sizeof(*priv));
+	if (!rproc)
+		return -ENOMEM;
+
+	priv = rproc->priv;
+	priv->dev = dev;
+
+	/* Get the processor clock */
+	priv->clk = devm_clk_get(dev, NULL);
+	if (IS_ERR(priv->clk))
+		return dev_err_probe(dev, PTR_ERR(priv->clk),
+				     "failed to get clock\n");
+
+	/*
+	 * Keep the processor in reset until remoteproc has finished loading
+	 * firmware into the executable memory window described by reg and
+	 * translated through the parent bus ranges property.
+	 */
+	priv->reset = devm_gpiod_get(dev, "reset", GPIOD_OUT_HIGH);
+	if (IS_ERR(priv->reset))
+		return dev_err_probe(dev, PTR_ERR(priv->reset),
+				     "failed to get reset gpio\n");
+
+	rproc->auto_boot = false;
+
+	ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(64));
+	if (ret)
+		return dev_err_probe(dev, ret, "failed to set DMA mask\n");
+
+	platform_set_drvdata(pdev, rproc);
+
+	ret = devm_rproc_add(dev, rproc);
+	if (ret)
+		return dev_err_probe(dev, ret, "failed to register rproc\n");
+
+	return 0;
+}
+
+static const struct of_device_id amd_bram_rproc_of_match[] = {
+	{ .compatible = "amd,bram-rproc" },
+	{ /* sentinel */ },
+};
+MODULE_DEVICE_TABLE(of, amd_bram_rproc_of_match);
+
+static struct platform_driver amd_bram_rproc_driver = {
+	.probe = amd_bram_rproc_probe,
+	.driver = {
+		.name = "amd-bram-rproc",
+		.of_match_table = amd_bram_rproc_of_match,
+	},
+};
+module_platform_driver(amd_bram_rproc_driver);
+
+MODULE_DESCRIPTION("AMD BRAM-based Remote Processor driver");
+MODULE_AUTHOR("Ben Levinsky <ben.levinsky@amd.com>");
+MODULE_LICENSE("GPL");
-- 
2.34.1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH v2 1/2] dt-bindings: remoteproc: document AMD BRAM-based rproc
  2026-04-27 16:27 ` [PATCH v2 1/2] dt-bindings: remoteproc: document AMD BRAM-based rproc Ben Levinsky
@ 2026-04-28  6:50   ` Krzysztof Kozlowski
  2026-04-28  8:33     ` Michal Simek
  0 siblings, 1 reply; 12+ messages in thread
From: Krzysztof Kozlowski @ 2026-04-28  6:50 UTC (permalink / raw)
  To: Ben Levinsky
  Cc: andersson, mathieu.poirier, robh, krzk+dt, conor+dt,
	linux-remoteproc, devicetree, linux-kernel, michal.simek,
	tanmay.shah

On Mon, Apr 27, 2026 at 09:27:02AM -0700, Ben Levinsky wrote:
> Describe an AMD BRAM-based soft-core processor subsystem instantiated in
> programmable logic and using dual-port BRAM for firmware storage and
> execution.
> 
> The binding models a soft-core processor subsystem instantiated in AMD
> programmable logic and using dual-port BRAM for firmware storage and
> execution. The remoteproc device is represented as a child node whose
> reg property describes the firmware memory window in the processor-local
> address space. The parent bus node provides standard devicetree address
> translation through ranges so Linux can access the same BRAM through the
> system physical address space.
> 
> A clock input feeds the soft-core processor subsystem, and an active-low
> reset GPIO holds the processor in reset until firmware loading
> completes. The firmware-name property is optional.
> 
> Signed-off-by: Ben Levinsky <ben.levinsky@amd.com>
> ---
>  .../bindings/remoteproc/amd,bram-rproc.yaml   | 98 +++++++++++++++++++
>  1 file changed, 98 insertions(+)
>  create mode 100644 Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml
> 
> diff --git a/Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml
> new file mode 100644
> index 000000000000..f16657dc0d9f
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml
> @@ -0,0 +1,98 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/remoteproc/amd,bram-rproc.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: AMD BRAM-based Remote Processor
> +
> +maintainers:
> +  - Ben Levinsky <ben.levinsky@amd.com>
> +
> +description: |
> +  Soft-core processor subsystem instantiated in AMD programmable logic and
> +  using dual-port BRAM for firmware storage and execution.

Isn't the soft-core or FPGA still part of some Xilinx SoC? Or is this
completely different thing from SoC and there is a design WITHOUT SoC
using this remote proc?

Best regards,
Krzysztof


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v2 1/2] dt-bindings: remoteproc: document AMD BRAM-based rproc
  2026-04-28  6:50   ` Krzysztof Kozlowski
@ 2026-04-28  8:33     ` Michal Simek
  2026-04-28  8:47       ` Krzysztof Kozlowski
  0 siblings, 1 reply; 12+ messages in thread
From: Michal Simek @ 2026-04-28  8:33 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Ben Levinsky
  Cc: andersson, mathieu.poirier, robh, krzk+dt, conor+dt,
	linux-remoteproc, devicetree, linux-kernel, tanmay.shah



On 4/28/26 08:50, Krzysztof Kozlowski wrote:
> On Mon, Apr 27, 2026 at 09:27:02AM -0700, Ben Levinsky wrote:
>> Describe an AMD BRAM-based soft-core processor subsystem instantiated in
>> programmable logic and using dual-port BRAM for firmware storage and
>> execution.
>>
>> The binding models a soft-core processor subsystem instantiated in AMD
>> programmable logic and using dual-port BRAM for firmware storage and
>> execution. The remoteproc device is represented as a child node whose
>> reg property describes the firmware memory window in the processor-local
>> address space. The parent bus node provides standard devicetree address
>> translation through ranges so Linux can access the same BRAM through the
>> system physical address space.
>>
>> A clock input feeds the soft-core processor subsystem, and an active-low
>> reset GPIO holds the processor in reset until firmware loading
>> completes. The firmware-name property is optional.
>>
>> Signed-off-by: Ben Levinsky <ben.levinsky@amd.com>
>> ---
>>   .../bindings/remoteproc/amd,bram-rproc.yaml   | 98 +++++++++++++++++++
>>   1 file changed, 98 insertions(+)
>>   create mode 100644 Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml
>>
>> diff --git a/Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml
>> new file mode 100644
>> index 000000000000..f16657dc0d9f
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml
>> @@ -0,0 +1,98 @@
>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/remoteproc/amd,bram-rproc.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: AMD BRAM-based Remote Processor
>> +
>> +maintainers:
>> +  - Ben Levinsky <ben.levinsky@amd.com>
>> +
>> +description: |
>> +  Soft-core processor subsystem instantiated in AMD programmable logic and
>> +  using dual-port BRAM for firmware storage and execution.
> 
> Isn't the soft-core or FPGA still part of some Xilinx SoC? Or is this
> completely different thing from SoC and there is a design WITHOUT SoC
> using this remote proc?

In 99% case this is going to be used on Xilinx SOC with programmable logic next 
to ARM core.
soft core means - means VHDL/Verilog code synthesized to programmable 
logic/fpga. It means exact location in chip varies based on build and constraints.

hard core - physical HW location - like ARM cores in our chip.

(ARM is providing RTL/code that even ARM cores in fpga emulated platforms are 
actually used as soft cores).

Not sure if you want me to talk about that 1% use cases which are also possible 
but don't think anybody will design them.

Thanks,
Michal




^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v2 1/2] dt-bindings: remoteproc: document AMD BRAM-based rproc
  2026-04-28  8:33     ` Michal Simek
@ 2026-04-28  8:47       ` Krzysztof Kozlowski
  2026-04-28  9:04         ` Michal Simek
  0 siblings, 1 reply; 12+ messages in thread
From: Krzysztof Kozlowski @ 2026-04-28  8:47 UTC (permalink / raw)
  To: Michal Simek, Ben Levinsky
  Cc: andersson, mathieu.poirier, robh, krzk+dt, conor+dt,
	linux-remoteproc, devicetree, linux-kernel, tanmay.shah

On 28/04/2026 10:33, Michal Simek wrote:
> 
> 
> On 4/28/26 08:50, Krzysztof Kozlowski wrote:
>> On Mon, Apr 27, 2026 at 09:27:02AM -0700, Ben Levinsky wrote:
>>> Describe an AMD BRAM-based soft-core processor subsystem instantiated in
>>> programmable logic and using dual-port BRAM for firmware storage and
>>> execution.
>>>
>>> The binding models a soft-core processor subsystem instantiated in AMD
>>> programmable logic and using dual-port BRAM for firmware storage and
>>> execution. The remoteproc device is represented as a child node whose
>>> reg property describes the firmware memory window in the processor-local
>>> address space. The parent bus node provides standard devicetree address
>>> translation through ranges so Linux can access the same BRAM through the
>>> system physical address space.
>>>
>>> A clock input feeds the soft-core processor subsystem, and an active-low
>>> reset GPIO holds the processor in reset until firmware loading
>>> completes. The firmware-name property is optional.
>>>
>>> Signed-off-by: Ben Levinsky <ben.levinsky@amd.com>
>>> ---
>>>   .../bindings/remoteproc/amd,bram-rproc.yaml   | 98 +++++++++++++++++++
>>>   1 file changed, 98 insertions(+)
>>>   create mode 100644 Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml
>>>
>>> diff --git a/Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml
>>> new file mode 100644
>>> index 000000000000..f16657dc0d9f
>>> --- /dev/null
>>> +++ b/Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml
>>> @@ -0,0 +1,98 @@
>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>>> +%YAML 1.2
>>> +---
>>> +$id: http://devicetree.org/schemas/remoteproc/amd,bram-rproc.yaml#
>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>> +
>>> +title: AMD BRAM-based Remote Processor
>>> +
>>> +maintainers:
>>> +  - Ben Levinsky <ben.levinsky@amd.com>
>>> +
>>> +description: |
>>> +  Soft-core processor subsystem instantiated in AMD programmable logic and
>>> +  using dual-port BRAM for firmware storage and execution.
>>
>> Isn't the soft-core or FPGA still part of some Xilinx SoC? Or is this
>> completely different thing from SoC and there is a design WITHOUT SoC
>> using this remote proc?
> 
> In 99% case this is going to be used on Xilinx SOC with programmable logic next 
> to ARM core.
> soft core means - means VHDL/Verilog code synthesized to programmable 
> logic/fpga. It means exact location in chip varies based on build and constraints.
> 
> hard core - physical HW location - like ARM cores in our chip.
> 
> (ARM is providing RTL/code that even ARM cores in fpga emulated platforms are 
> actually used as soft cores).
> 
> Not sure if you want me to talk about that 1% use cases which are also possible 
> but don't think anybody will design them.

Then I would treat it exactly like every other block of a SoC - you need
a SoC specific compatible. If there is a fallback, SoC specific
compatible should be used in the fallback as well - that's all already
documented in writing-bindings.

If this is ever used standalone, outside of SoC, then maybe it will need
its own wiring thus it will get its own compatible.

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v2 1/2] dt-bindings: remoteproc: document AMD BRAM-based rproc
  2026-04-28  8:47       ` Krzysztof Kozlowski
@ 2026-04-28  9:04         ` Michal Simek
  2026-04-28  9:14           ` Krzysztof Kozlowski
  0 siblings, 1 reply; 12+ messages in thread
From: Michal Simek @ 2026-04-28  9:04 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Ben Levinsky
  Cc: andersson, mathieu.poirier, robh, krzk+dt, conor+dt,
	linux-remoteproc, devicetree, linux-kernel, tanmay.shah



On 4/28/26 10:47, Krzysztof Kozlowski wrote:
> On 28/04/2026 10:33, Michal Simek wrote:
>>
>>
>> On 4/28/26 08:50, Krzysztof Kozlowski wrote:
>>> On Mon, Apr 27, 2026 at 09:27:02AM -0700, Ben Levinsky wrote:
>>>> Describe an AMD BRAM-based soft-core processor subsystem instantiated in
>>>> programmable logic and using dual-port BRAM for firmware storage and
>>>> execution.
>>>>
>>>> The binding models a soft-core processor subsystem instantiated in AMD
>>>> programmable logic and using dual-port BRAM for firmware storage and
>>>> execution. The remoteproc device is represented as a child node whose
>>>> reg property describes the firmware memory window in the processor-local
>>>> address space. The parent bus node provides standard devicetree address
>>>> translation through ranges so Linux can access the same BRAM through the
>>>> system physical address space.
>>>>
>>>> A clock input feeds the soft-core processor subsystem, and an active-low
>>>> reset GPIO holds the processor in reset until firmware loading
>>>> completes. The firmware-name property is optional.
>>>>
>>>> Signed-off-by: Ben Levinsky <ben.levinsky@amd.com>
>>>> ---
>>>>    .../bindings/remoteproc/amd,bram-rproc.yaml   | 98 +++++++++++++++++++
>>>>    1 file changed, 98 insertions(+)
>>>>    create mode 100644 Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml
>>>>
>>>> diff --git a/Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml
>>>> new file mode 100644
>>>> index 000000000000..f16657dc0d9f
>>>> --- /dev/null
>>>> +++ b/Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml
>>>> @@ -0,0 +1,98 @@
>>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>>>> +%YAML 1.2
>>>> +---
>>>> +$id: http://devicetree.org/schemas/remoteproc/amd,bram-rproc.yaml#
>>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>>> +
>>>> +title: AMD BRAM-based Remote Processor
>>>> +
>>>> +maintainers:
>>>> +  - Ben Levinsky <ben.levinsky@amd.com>
>>>> +
>>>> +description: |
>>>> +  Soft-core processor subsystem instantiated in AMD programmable logic and
>>>> +  using dual-port BRAM for firmware storage and execution.
>>>
>>> Isn't the soft-core or FPGA still part of some Xilinx SoC? Or is this
>>> completely different thing from SoC and there is a design WITHOUT SoC
>>> using this remote proc?
>>
>> In 99% case this is going to be used on Xilinx SOC with programmable logic next
>> to ARM core.
>> soft core means - means VHDL/Verilog code synthesized to programmable
>> logic/fpga. It means exact location in chip varies based on build and constraints.
>>
>> hard core - physical HW location - like ARM cores in our chip.
>>
>> (ARM is providing RTL/code that even ARM cores in fpga emulated platforms are
>> actually used as soft cores).
>>
>> Not sure if you want me to talk about that 1% use cases which are also possible
>> but don't think anybody will design them.
> 
> Then I would treat it exactly like every other block of a SoC - you need
> a SoC specific compatible. If there is a fallback, SoC specific
> compatible should be used in the fallback as well - that's all already
> documented in writing-bindings.

But which SOC? We have ZynqMP, Versal, Versal NET, Versal Gen 2. And all of 
these will use this configuration.
Do you want to list all of them?

Thanks,
Michal






^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v2 1/2] dt-bindings: remoteproc: document AMD BRAM-based rproc
  2026-04-28  9:04         ` Michal Simek
@ 2026-04-28  9:14           ` Krzysztof Kozlowski
  2026-04-28 13:09             ` Michal Simek
  0 siblings, 1 reply; 12+ messages in thread
From: Krzysztof Kozlowski @ 2026-04-28  9:14 UTC (permalink / raw)
  To: Michal Simek, Ben Levinsky
  Cc: andersson, mathieu.poirier, robh, krzk+dt, conor+dt,
	linux-remoteproc, devicetree, linux-kernel, tanmay.shah

On 28/04/2026 11:04, Michal Simek wrote:
> 
> 
> On 4/28/26 10:47, Krzysztof Kozlowski wrote:
>> On 28/04/2026 10:33, Michal Simek wrote:
>>>
>>>
>>> On 4/28/26 08:50, Krzysztof Kozlowski wrote:
>>>> On Mon, Apr 27, 2026 at 09:27:02AM -0700, Ben Levinsky wrote:
>>>>> Describe an AMD BRAM-based soft-core processor subsystem instantiated in
>>>>> programmable logic and using dual-port BRAM for firmware storage and
>>>>> execution.
>>>>>
>>>>> The binding models a soft-core processor subsystem instantiated in AMD
>>>>> programmable logic and using dual-port BRAM for firmware storage and
>>>>> execution. The remoteproc device is represented as a child node whose
>>>>> reg property describes the firmware memory window in the processor-local
>>>>> address space. The parent bus node provides standard devicetree address
>>>>> translation through ranges so Linux can access the same BRAM through the
>>>>> system physical address space.
>>>>>
>>>>> A clock input feeds the soft-core processor subsystem, and an active-low
>>>>> reset GPIO holds the processor in reset until firmware loading
>>>>> completes. The firmware-name property is optional.
>>>>>
>>>>> Signed-off-by: Ben Levinsky <ben.levinsky@amd.com>
>>>>> ---
>>>>>    .../bindings/remoteproc/amd,bram-rproc.yaml   | 98 +++++++++++++++++++
>>>>>    1 file changed, 98 insertions(+)
>>>>>    create mode 100644 Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml
>>>>>
>>>>> diff --git a/Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml
>>>>> new file mode 100644
>>>>> index 000000000000..f16657dc0d9f
>>>>> --- /dev/null
>>>>> +++ b/Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml
>>>>> @@ -0,0 +1,98 @@
>>>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>>>>> +%YAML 1.2
>>>>> +---
>>>>> +$id: http://devicetree.org/schemas/remoteproc/amd,bram-rproc.yaml#
>>>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>>>> +
>>>>> +title: AMD BRAM-based Remote Processor
>>>>> +
>>>>> +maintainers:
>>>>> +  - Ben Levinsky <ben.levinsky@amd.com>
>>>>> +
>>>>> +description: |
>>>>> +  Soft-core processor subsystem instantiated in AMD programmable logic and
>>>>> +  using dual-port BRAM for firmware storage and execution.
>>>>
>>>> Isn't the soft-core or FPGA still part of some Xilinx SoC? Or is this
>>>> completely different thing from SoC and there is a design WITHOUT SoC
>>>> using this remote proc?
>>>
>>> In 99% case this is going to be used on Xilinx SOC with programmable logic next
>>> to ARM core.
>>> soft core means - means VHDL/Verilog code synthesized to programmable
>>> logic/fpga. It means exact location in chip varies based on build and constraints.
>>>
>>> hard core - physical HW location - like ARM cores in our chip.
>>>
>>> (ARM is providing RTL/code that even ARM cores in fpga emulated platforms are
>>> actually used as soft cores).
>>>
>>> Not sure if you want me to talk about that 1% use cases which are also possible
>>> but don't think anybody will design them.
>>
>> Then I would treat it exactly like every other block of a SoC - you need
>> a SoC specific compatible. If there is a fallback, SoC specific
>> compatible should be used in the fallback as well - that's all already
>> documented in writing-bindings.
> 
> But which SOC? We have ZynqMP, Versal, Versal NET, Versal Gen 2. And all of 
> these will use this configuration.
> Do you want to list all of them?

"Then I would treat it exactly like every other block of a SoC"

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v2 1/2] dt-bindings: remoteproc: document AMD BRAM-based rproc
  2026-04-28  9:14           ` Krzysztof Kozlowski
@ 2026-04-28 13:09             ` Michal Simek
  2026-04-28 13:12               ` Krzysztof Kozlowski
  0 siblings, 1 reply; 12+ messages in thread
From: Michal Simek @ 2026-04-28 13:09 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Ben Levinsky
  Cc: andersson, mathieu.poirier, robh, krzk+dt, conor+dt,
	linux-remoteproc, devicetree, linux-kernel, tanmay.shah



On 4/28/26 11:14, Krzysztof Kozlowski wrote:
> On 28/04/2026 11:04, Michal Simek wrote:
>>
>>
>> On 4/28/26 10:47, Krzysztof Kozlowski wrote:
>>> On 28/04/2026 10:33, Michal Simek wrote:
>>>>
>>>>
>>>> On 4/28/26 08:50, Krzysztof Kozlowski wrote:
>>>>> On Mon, Apr 27, 2026 at 09:27:02AM -0700, Ben Levinsky wrote:
>>>>>> Describe an AMD BRAM-based soft-core processor subsystem instantiated in
>>>>>> programmable logic and using dual-port BRAM for firmware storage and
>>>>>> execution.
>>>>>>
>>>>>> The binding models a soft-core processor subsystem instantiated in AMD
>>>>>> programmable logic and using dual-port BRAM for firmware storage and
>>>>>> execution. The remoteproc device is represented as a child node whose
>>>>>> reg property describes the firmware memory window in the processor-local
>>>>>> address space. The parent bus node provides standard devicetree address
>>>>>> translation through ranges so Linux can access the same BRAM through the
>>>>>> system physical address space.
>>>>>>
>>>>>> A clock input feeds the soft-core processor subsystem, and an active-low
>>>>>> reset GPIO holds the processor in reset until firmware loading
>>>>>> completes. The firmware-name property is optional.
>>>>>>
>>>>>> Signed-off-by: Ben Levinsky <ben.levinsky@amd.com>
>>>>>> ---
>>>>>>     .../bindings/remoteproc/amd,bram-rproc.yaml   | 98 +++++++++++++++++++
>>>>>>     1 file changed, 98 insertions(+)
>>>>>>     create mode 100644 Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml
>>>>>>
>>>>>> diff --git a/Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml
>>>>>> new file mode 100644
>>>>>> index 000000000000..f16657dc0d9f
>>>>>> --- /dev/null
>>>>>> +++ b/Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml
>>>>>> @@ -0,0 +1,98 @@
>>>>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>>>>>> +%YAML 1.2
>>>>>> +---
>>>>>> +$id: http://devicetree.org/schemas/remoteproc/amd,bram-rproc.yaml#
>>>>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>>>>> +
>>>>>> +title: AMD BRAM-based Remote Processor
>>>>>> +
>>>>>> +maintainers:
>>>>>> +  - Ben Levinsky <ben.levinsky@amd.com>
>>>>>> +
>>>>>> +description: |
>>>>>> +  Soft-core processor subsystem instantiated in AMD programmable logic and
>>>>>> +  using dual-port BRAM for firmware storage and execution.
>>>>>
>>>>> Isn't the soft-core or FPGA still part of some Xilinx SoC? Or is this
>>>>> completely different thing from SoC and there is a design WITHOUT SoC
>>>>> using this remote proc?
>>>>
>>>> In 99% case this is going to be used on Xilinx SOC with programmable logic next
>>>> to ARM core.
>>>> soft core means - means VHDL/Verilog code synthesized to programmable
>>>> logic/fpga. It means exact location in chip varies based on build and constraints.
>>>>
>>>> hard core - physical HW location - like ARM cores in our chip.
>>>>
>>>> (ARM is providing RTL/code that even ARM cores in fpga emulated platforms are
>>>> actually used as soft cores).
>>>>
>>>> Not sure if you want me to talk about that 1% use cases which are also possible
>>>> but don't think anybody will design them.
>>>
>>> Then I would treat it exactly like every other block of a SoC - you need
>>> a SoC specific compatible. If there is a fallback, SoC specific
>>> compatible should be used in the fallback as well - that's all already
>>> documented in writing-bindings.
>>
>> But which SOC? We have ZynqMP, Versal, Versal NET, Versal Gen 2. And all of
>> these will use this configuration.
>> Do you want to list all of them?
> 
> "Then I would treat it exactly like every other block of a SoC"

No issue. Here is snippet.

   properties:
     compatible:
       items:
         - enum:
             - xlnx,zynqmp-bram-rproc
             - xlnx,versal-bram-rproc
             - xlnx,versal-net-bram-rproc
             - amd,versal2-bram-rproc
         - const: amd,bram-rproc

   The example should also be updated:

   examples:
     - |
       #include <dt-bindings/gpio/gpio.h>
       remoteproc@0 {
         compatible = "xlnx,zynqmp-bram-rproc", "amd,bram-rproc";
         reg = <0x0 0x40000>;
         clocks = <&pl_clk>;
         firmware-name = "firmware.elf";
         reset-gpios = <&gpio0 0 GPIO_ACTIVE_LOW>;
       };

Thanks,
Michal


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v2 1/2] dt-bindings: remoteproc: document AMD BRAM-based rproc
  2026-04-28 13:09             ` Michal Simek
@ 2026-04-28 13:12               ` Krzysztof Kozlowski
  2026-04-28 13:18                 ` Michal Simek
  0 siblings, 1 reply; 12+ messages in thread
From: Krzysztof Kozlowski @ 2026-04-28 13:12 UTC (permalink / raw)
  To: Michal Simek, Ben Levinsky
  Cc: andersson, mathieu.poirier, robh, krzk+dt, conor+dt,
	linux-remoteproc, devicetree, linux-kernel, tanmay.shah

On 28/04/2026 15:09, Michal Simek wrote:
> 
> 
> On 4/28/26 11:14, Krzysztof Kozlowski wrote:
>> On 28/04/2026 11:04, Michal Simek wrote:
>>>
>>>
>>> On 4/28/26 10:47, Krzysztof Kozlowski wrote:
>>>> On 28/04/2026 10:33, Michal Simek wrote:
>>>>>
>>>>>
>>>>> On 4/28/26 08:50, Krzysztof Kozlowski wrote:
>>>>>> On Mon, Apr 27, 2026 at 09:27:02AM -0700, Ben Levinsky wrote:
>>>>>>> Describe an AMD BRAM-based soft-core processor subsystem instantiated in
>>>>>>> programmable logic and using dual-port BRAM for firmware storage and
>>>>>>> execution.
>>>>>>>
>>>>>>> The binding models a soft-core processor subsystem instantiated in AMD
>>>>>>> programmable logic and using dual-port BRAM for firmware storage and
>>>>>>> execution. The remoteproc device is represented as a child node whose
>>>>>>> reg property describes the firmware memory window in the processor-local
>>>>>>> address space. The parent bus node provides standard devicetree address
>>>>>>> translation through ranges so Linux can access the same BRAM through the
>>>>>>> system physical address space.
>>>>>>>
>>>>>>> A clock input feeds the soft-core processor subsystem, and an active-low
>>>>>>> reset GPIO holds the processor in reset until firmware loading
>>>>>>> completes. The firmware-name property is optional.
>>>>>>>
>>>>>>> Signed-off-by: Ben Levinsky <ben.levinsky@amd.com>
>>>>>>> ---
>>>>>>>     .../bindings/remoteproc/amd,bram-rproc.yaml   | 98 +++++++++++++++++++
>>>>>>>     1 file changed, 98 insertions(+)
>>>>>>>     create mode 100644 Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml
>>>>>>>
>>>>>>> diff --git a/Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml
>>>>>>> new file mode 100644
>>>>>>> index 000000000000..f16657dc0d9f
>>>>>>> --- /dev/null
>>>>>>> +++ b/Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml
>>>>>>> @@ -0,0 +1,98 @@
>>>>>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>>>>>>> +%YAML 1.2
>>>>>>> +---
>>>>>>> +$id: http://devicetree.org/schemas/remoteproc/amd,bram-rproc.yaml#
>>>>>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>>>>>> +
>>>>>>> +title: AMD BRAM-based Remote Processor
>>>>>>> +
>>>>>>> +maintainers:
>>>>>>> +  - Ben Levinsky <ben.levinsky@amd.com>
>>>>>>> +
>>>>>>> +description: |
>>>>>>> +  Soft-core processor subsystem instantiated in AMD programmable logic and
>>>>>>> +  using dual-port BRAM for firmware storage and execution.
>>>>>>
>>>>>> Isn't the soft-core or FPGA still part of some Xilinx SoC? Or is this
>>>>>> completely different thing from SoC and there is a design WITHOUT SoC
>>>>>> using this remote proc?
>>>>>
>>>>> In 99% case this is going to be used on Xilinx SOC with programmable logic next
>>>>> to ARM core.
>>>>> soft core means - means VHDL/Verilog code synthesized to programmable
>>>>> logic/fpga. It means exact location in chip varies based on build and constraints.
>>>>>
>>>>> hard core - physical HW location - like ARM cores in our chip.
>>>>>
>>>>> (ARM is providing RTL/code that even ARM cores in fpga emulated platforms are
>>>>> actually used as soft cores).
>>>>>
>>>>> Not sure if you want me to talk about that 1% use cases which are also possible
>>>>> but don't think anybody will design them.
>>>>
>>>> Then I would treat it exactly like every other block of a SoC - you need
>>>> a SoC specific compatible. If there is a fallback, SoC specific
>>>> compatible should be used in the fallback as well - that's all already
>>>> documented in writing-bindings.
>>>
>>> But which SOC? We have ZynqMP, Versal, Versal NET, Versal Gen 2. And all of
>>> these will use this configuration.
>>> Do you want to list all of them?
>>
>> "Then I would treat it exactly like every other block of a SoC"
> 
> No issue. Here is snippet.
> 
>    properties:
>      compatible:
>        items:
>          - enum:
>              - xlnx,zynqmp-bram-rproc
>              - xlnx,versal-bram-rproc
>              - xlnx,versal-net-bram-rproc
>              - amd,versal2-bram-rproc
>          - const: amd,bram-rproc
> 
>    The example should also be updated:

Yes, except what I wrote earlier and is mentioned in the writing
bindings doc - the specific compatible should be also the fallback.

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v2 1/2] dt-bindings: remoteproc: document AMD BRAM-based rproc
  2026-04-28 13:12               ` Krzysztof Kozlowski
@ 2026-04-28 13:18                 ` Michal Simek
  2026-04-28 13:28                   ` Krzysztof Kozlowski
  0 siblings, 1 reply; 12+ messages in thread
From: Michal Simek @ 2026-04-28 13:18 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Ben Levinsky
  Cc: andersson, mathieu.poirier, robh, krzk+dt, conor+dt,
	linux-remoteproc, devicetree, linux-kernel, tanmay.shah



On 4/28/26 15:12, Krzysztof Kozlowski wrote:
> On 28/04/2026 15:09, Michal Simek wrote:
>>
>>
>> On 4/28/26 11:14, Krzysztof Kozlowski wrote:
>>> On 28/04/2026 11:04, Michal Simek wrote:
>>>>
>>>>
>>>> On 4/28/26 10:47, Krzysztof Kozlowski wrote:
>>>>> On 28/04/2026 10:33, Michal Simek wrote:
>>>>>>
>>>>>>
>>>>>> On 4/28/26 08:50, Krzysztof Kozlowski wrote:
>>>>>>> On Mon, Apr 27, 2026 at 09:27:02AM -0700, Ben Levinsky wrote:
>>>>>>>> Describe an AMD BRAM-based soft-core processor subsystem instantiated in
>>>>>>>> programmable logic and using dual-port BRAM for firmware storage and
>>>>>>>> execution.
>>>>>>>>
>>>>>>>> The binding models a soft-core processor subsystem instantiated in AMD
>>>>>>>> programmable logic and using dual-port BRAM for firmware storage and
>>>>>>>> execution. The remoteproc device is represented as a child node whose
>>>>>>>> reg property describes the firmware memory window in the processor-local
>>>>>>>> address space. The parent bus node provides standard devicetree address
>>>>>>>> translation through ranges so Linux can access the same BRAM through the
>>>>>>>> system physical address space.
>>>>>>>>
>>>>>>>> A clock input feeds the soft-core processor subsystem, and an active-low
>>>>>>>> reset GPIO holds the processor in reset until firmware loading
>>>>>>>> completes. The firmware-name property is optional.
>>>>>>>>
>>>>>>>> Signed-off-by: Ben Levinsky <ben.levinsky@amd.com>
>>>>>>>> ---
>>>>>>>>      .../bindings/remoteproc/amd,bram-rproc.yaml   | 98 +++++++++++++++++++
>>>>>>>>      1 file changed, 98 insertions(+)
>>>>>>>>      create mode 100644 Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml
>>>>>>>>
>>>>>>>> diff --git a/Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml b/Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml
>>>>>>>> new file mode 100644
>>>>>>>> index 000000000000..f16657dc0d9f
>>>>>>>> --- /dev/null
>>>>>>>> +++ b/Documentation/devicetree/bindings/remoteproc/amd,bram-rproc.yaml
>>>>>>>> @@ -0,0 +1,98 @@
>>>>>>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>>>>>>>> +%YAML 1.2
>>>>>>>> +---
>>>>>>>> +$id: http://devicetree.org/schemas/remoteproc/amd,bram-rproc.yaml#
>>>>>>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>>>>>>> +
>>>>>>>> +title: AMD BRAM-based Remote Processor
>>>>>>>> +
>>>>>>>> +maintainers:
>>>>>>>> +  - Ben Levinsky <ben.levinsky@amd.com>
>>>>>>>> +
>>>>>>>> +description: |
>>>>>>>> +  Soft-core processor subsystem instantiated in AMD programmable logic and
>>>>>>>> +  using dual-port BRAM for firmware storage and execution.
>>>>>>>
>>>>>>> Isn't the soft-core or FPGA still part of some Xilinx SoC? Or is this
>>>>>>> completely different thing from SoC and there is a design WITHOUT SoC
>>>>>>> using this remote proc?
>>>>>>
>>>>>> In 99% case this is going to be used on Xilinx SOC with programmable logic next
>>>>>> to ARM core.
>>>>>> soft core means - means VHDL/Verilog code synthesized to programmable
>>>>>> logic/fpga. It means exact location in chip varies based on build and constraints.
>>>>>>
>>>>>> hard core - physical HW location - like ARM cores in our chip.
>>>>>>
>>>>>> (ARM is providing RTL/code that even ARM cores in fpga emulated platforms are
>>>>>> actually used as soft cores).
>>>>>>
>>>>>> Not sure if you want me to talk about that 1% use cases which are also possible
>>>>>> but don't think anybody will design them.
>>>>>
>>>>> Then I would treat it exactly like every other block of a SoC - you need
>>>>> a SoC specific compatible. If there is a fallback, SoC specific
>>>>> compatible should be used in the fallback as well - that's all already
>>>>> documented in writing-bindings.
>>>>
>>>> But which SOC? We have ZynqMP, Versal, Versal NET, Versal Gen 2. And all of
>>>> these will use this configuration.
>>>> Do you want to list all of them?
>>>
>>> "Then I would treat it exactly like every other block of a SoC"
>>
>> No issue. Here is snippet.
>>
>>     properties:
>>       compatible:
>>         items:
>>           - enum:
>>               - xlnx,zynqmp-bram-rproc
>>               - xlnx,versal-bram-rproc
>>               - xlnx,versal-net-bram-rproc
>>               - amd,versal2-bram-rproc
>>           - const: amd,bram-rproc
>>
>>     The example should also be updated:
> 
> Yes, except what I wrote earlier and is mentioned in the writing
> bindings doc - the specific compatible should be also the fallback.

   properties:
     compatible:
       oneOf:
         - const: xlnx,zynqmp-bram-rproc
         - items:
             - enum:
                 - xlnx,versal-bram-rproc
                 - xlnx,versal-net-bram-rproc
                 - amd,versal2-bram-rproc
             - const: xlnx,zynqmp-bram-rproc

Good now?

M

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v2 1/2] dt-bindings: remoteproc: document AMD BRAM-based rproc
  2026-04-28 13:18                 ` Michal Simek
@ 2026-04-28 13:28                   ` Krzysztof Kozlowski
  0 siblings, 0 replies; 12+ messages in thread
From: Krzysztof Kozlowski @ 2026-04-28 13:28 UTC (permalink / raw)
  To: Michal Simek, Ben Levinsky
  Cc: andersson, mathieu.poirier, robh, krzk+dt, conor+dt,
	linux-remoteproc, devicetree, linux-kernel, tanmay.shah

On 28/04/2026 15:18, Michal Simek wrote:
>>>
>>>     properties:
>>>       compatible:
>>>         items:
>>>           - enum:
>>>               - xlnx,zynqmp-bram-rproc
>>>               - xlnx,versal-bram-rproc
>>>               - xlnx,versal-net-bram-rproc
>>>               - amd,versal2-bram-rproc
>>>           - const: amd,bram-rproc
>>>
>>>     The example should also be updated:
>>
>> Yes, except what I wrote earlier and is mentioned in the writing
>> bindings doc - the specific compatible should be also the fallback.
> 
>    properties:
>      compatible:
>        oneOf:
>          - const: xlnx,zynqmp-bram-rproc
>          - items:
>              - enum:
>                  - xlnx,versal-bram-rproc
>                  - xlnx,versal-net-bram-rproc
>                  - amd,versal2-bram-rproc
>              - const: xlnx,zynqmp-bram-rproc
> 
> Good now?

Yes, looks good to me!

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2026-04-28 13:28 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-27 16:27 [PATCH v2 0/2] remoteproc: add AMD BRAM-based remote processor driver Ben Levinsky
2026-04-27 16:27 ` [PATCH v2 1/2] dt-bindings: remoteproc: document AMD BRAM-based rproc Ben Levinsky
2026-04-28  6:50   ` Krzysztof Kozlowski
2026-04-28  8:33     ` Michal Simek
2026-04-28  8:47       ` Krzysztof Kozlowski
2026-04-28  9:04         ` Michal Simek
2026-04-28  9:14           ` Krzysztof Kozlowski
2026-04-28 13:09             ` Michal Simek
2026-04-28 13:12               ` Krzysztof Kozlowski
2026-04-28 13:18                 ` Michal Simek
2026-04-28 13:28                   ` Krzysztof Kozlowski
2026-04-27 16:27 ` [PATCH v2 2/2] remoteproc: add AMD BRAM-based remote processor driver Ben Levinsky

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.