Re: [PATCH v11 0/4] add zynqmp TCM bindings

From: Tanmay Shah
Date: Mon Feb 19 2024 - 12:55:21 EST


Hello,

By mistake same set of patches were sent twice in same git send-email command.

Anyone can be reviewed. Please let me know if I need to take any action to fix it.

Thanks.

On 2/19/24 11:44 AM, Tanmay Shah wrote:
> Tightly-Coupled Memories(TCMs) are low-latency memory that provides
> predictable instruction execution and predictable data load/store
> timing. Each Cortex-R5F processor contains exclusive two 64 KB memory
> banks on the ATCM and BTCM ports, for a total of 128 KB of memory.
> In lockstep mode, both 128KB memory is accessible to the cluster.
>
> As per ZynqMP Ultrascale+ Technical Reference Manual UG1085, following
> is address space of TCM memory. The bindings in this patch series
> introduces properties to accommodate following address space with
> address translation between Linux and Cortex-R5 views.
>
> | | | |
> | --- | --- | --- |
> | *Mode* | *R5 View* | *Linux view* | Notes |
> | *Split Mode* | *start addr*| *start addr* | |
> | R5_0 ATCM (64 KB) | 0x0000_0000 | 0xFFE0_0000 | |
> | R5_0 BTCM (64 KB) | 0x0002_0000 | 0xFFE2_0000 | |
> | R5_1 ATCM (64 KB) | 0x0000_0000 | 0xFFE9_0000 | alias of 0xFFE1_0000 |
> | R5_1 BTCM (64 KB) | 0x0002_0000 | 0xFFEB_0000 | alias of 0xFFE3_0000 |
> | ___ | ___ | ___ | |
> | *Lockstep Mode* | | | |
> | R5_0 ATCM (128 KB) | 0x0000_0000 | 0xFFE0_0000 | |
> | R5_0 BTCM (128 KB) | 0x0002_0000 | 0xFFE2_0000 | |
>
> References:
> UG1085 TCM address space:
> https://docs.xilinx.com/r/en-US/ug1085-zynq-ultrascale-trm/Tightly-Coupled-Memory-Address-Map
>
> Changes in v11:
> - Fix yamllint warning and reduce indentation as needed
> - Remove redundant initialization of the variable
> - Return correct error code if memory allocation failed
>
> Changs in v10:
> - Add new patch (1/4) to series that changes hardcode TCM addresses in
> lockstep mode and removes separate handling of TCM in lockstep and
> split mode
> - modify number of "reg", "reg-names" and "power-domains" entries
> based on cluster mode
> - Add extra optional atcm and btcm in "reg" property for lockstep mode
> - Add "reg-names" for extra optional atcm and btcm for lockstep mode
> - Drop previous Ack as bindings has new change
> - Add individual tcm regions via "reg" and "reg-names" for lockstep mode
> - Add each tcm's power-domains in lockstep mode
> - Drop previous Ack as new change in dts patchset
> - Remove redundant changes in driver to handle TCM in lockstep mode
>
> Changes in v9:
> - Fix rproc lockstep dts
> - Introduce new API to request and release core1 TCM power-domains in
> lockstep mode. This will be used during prepare -> add_tcm_banks
> callback to enable TCM in lockstep mode.
> - Parse TCM from device-tree in lockstep mode and split mode in
> uniform way.
> - Fix TCM representation in device-tree in lockstep mode.
> - Fix comments as suggested
>
> Changes in v8:
> - Remove use of pm_domains framework
> - Remove checking of pm_domain_id validation to power on/off tcm
> - Remove spurious change
> - parse power-domains property from device-tree and use EEMI calls
> to power on/off TCM instead of using pm domains framework
>
> Changes in v7:
> - %s/pm_dev1/pm_dev_core0/r
> - %s/pm_dev_link1/pm_dev_core0_link/r
> - %s/pm_dev2/pm_dev_core1/r
> - %s/pm_dev_link2/pm_dev_core1_link/r
> - remove pm_domain_id check to move next patch
> - add comment about how 1st entry in pm domain list is used
> - fix loop when jump to fail_add_pm_domains loop
> - move checking of pm_domain_id from previous patch
> - fix mem_bank_data memory allocation
>
> Changes in v6:
> - Introduce new node entry for r5f cluster split mode dts and
> keep it disabled by default.
> - Keep remoteproc lockstep mode enabled by default to maintian
> back compatibility.
> - Enable split mode only for zcu102 board to demo split mode use
> - Remove spurious change
> - Handle errors in add_pm_domains function
> - Remove redundant code to handle errors from remove_pm_domains
> - Missing . at the end of the commit message
> - remove redundant initialization of variables
> - remove fail_tcm label and relevant code to free memory
> acquired using devm_* API. As this will be freed when device free it
> - add extra check to see if "reg" property is supported or not
>
> Changes in v5:
> - maintain Rob's Ack on bindings patch as no changes in bindings
> - split previous patch into multiple patches
> - Use pm domain framework to turn on/off TCM
> - Add support of parsing TCM information from device-tree
> - maintain backward compatibility with previous bindings without
> TCM information available in device-tree
>
> This patch series continues previous effort to upstream ZynqMP
> TCM bindings:
> Previous v4 version link:
> https://lore.kernel.org/all/20230829181900.2561194-1-tanmay.shah@xxxxxxx/
>
> Previous v3 version link:
> https://lore.kernel.org/all/1689964908-22371-1-git-send-email-radhey.shyam.pandey@xxxxxxx/
> Radhey Shyam Pandey (1):
> dt-bindings: remoteproc: add Tightly Coupled Memory (TCM) bindings
>
>
>
> Radhey Shyam Pandey (1):
> dt-bindings: remoteproc: add Tightly Coupled Memory (TCM) bindings
>
> Tanmay Shah (3):
> remoteproc: zynqmp: fix lockstep mode memory region
> dts: zynqmp: add properties for TCM in remoteproc
> remoteproc: zynqmp: parse TCM from device tree
>
> .../remoteproc/xlnx,zynqmp-r5fss.yaml | 192 +++++++++++--
> .../boot/dts/xilinx/zynqmp-zcu102-rev1.0.dts | 8 +
> arch/arm64/boot/dts/xilinx/zynqmp.dtsi | 65 ++++-
> drivers/remoteproc/xlnx_r5_remoteproc.c | 257 ++++++++----------
> 4 files changed, 357 insertions(+), 165 deletions(-)
>
>
> base-commit: 929654e8f1add50b01d5a56171a31c311b0a739a