ARM: dts: msm: mm-drivers: add support for hw-fence feature on sun

This change adds support for device tree configuration and settings
for the hw-fence driver that initialize, expose and manage the
interfaces for hw-fences on sun target.

Change-Id: I99fd3678728af8b9000db8867a1c776d46b7cc16
Signed-off-by: Grace An <quic_gracan@quicinc.com>
This commit is contained in:
Grace An
2023-10-23 11:55:09 -07:00
parent 497966269e
commit 05133adf46
19 changed files with 397 additions and 0 deletions

21
Kbuild Normal file
View File

@@ -0,0 +1,21 @@
ifeq ($(CONFIG_ARCH_SUN), y)
dtbo-y += hw_fence/sun-hw-fence.dtbo \
sun-mm-cdp-kiwi-overlay.dtbo \
sun-mm-cdp-kiwi-v8-overlay.dtbo \
sun-mm-cdp-nfc-overlay.dtbo \
sun-mm-cdp-overlay.dtbo \
sun-mm-cdp-v8-overlay.dtbo \
sun-mm-mtp-kiwi-overlay.dtbo \
sun-mm-mtp-kiwi-v8-overlay.dtbo \
sun-mm-mtp-nfc-overlay.dtbo \
sun-mm-mtp-overlay.dtbo \
sun-mm-mtp-v8-overlay.dtbo \
sun-mm-qrd-sku1-overlay.dtbo \
sun-mm-qrd-sku1-v8-overlay.dtbo \
sun-mm-qrd-sku2-v8-overlay.dtbo \
sun-mm-rumi-overlay.dtbo
endif
always-y := $(dtb-y) $(dtbo-y)
subdir-y := $(dts-dirs)
clean-files := *.dtb *.dtbo

9
Makefile Normal file
View File

@@ -0,0 +1,9 @@
KBUILD_OPTIONS+=KBUILD_EXTMOD_DTS=.
all: dtbs
clean:
$(MAKE) -C $(KERNEL_SRC) M=$(M) clean
%:
$(MAKE) -C $(KERNEL_SRC) M=$(M) $@ $(KBUILD_OPTIONS)

80
bindings/hw-fence.txt Normal file
View File

@@ -0,0 +1,80 @@
Qualcomm Technologies, Inc. HW FENCE
HW Fence implements Linux APIs to initialize, deinitialize, register-for-signal, and
overall manage the hw-fences, for hw-to-hw communcation between hw cores.
Required properties
- compatible: Must be "qcom,msm-hw-fence".
- qcom,ipcc-reg: Registers ranges for ipcc registers.
- qcom,hw-fence-table-entries: A u32 indicating number of entries for the hw-fence table
- qcom,hw-fence-queue-entries: A u32 indicating default number of entries for the Queues
- hw_fence@0: Doorbell configuration to communicate with secondary vm through hypervisor.
- hw_fence@1: Carved-out emory-mapping region, to be used for mapping of global tables and queues
used by the hw-fence driver and fence controller running in secondary vm.
Optional properties:
- qcom,hw-fence-ipc-ver: A u32 indicating ipc version. If not provided in device-tree, this is read
from the registers.
- qcom,hw-fence-client-type-[name]: A list of four u32 indicating <clients_num, queues_num,
queue_entries, skip_txq_wr_idx>, where [name] specifies the client
type these properties apply to. If provided, all four u32 values
must be provided, and these override default values specified by
the driver for some clients (e.g. dpu, gpu).
-- clients_num: number of clients for given client type
-- queues_num: 1 queue (TxQ) or 2 queues (RxQ and TxQ)
-- queue_entries: number of entries per client queue
-- skip_txq_wr_idx: bool indicating whether tx queue wr_idx update
is skipped within hw fence driver and
hfi_header->tx_wm is used instead
- qcom,hw-fence-client-type-[name]-extra: A list of four u32 indicating extra client queue
properties: <start_padding, end_padding, txq_idx_start,
txq_idx_by_payload>. Later u32 values do not need to be
provided to provide values for earlier u32 values.
-- start_padding: size of padding between queue table header
and first queue header in bytes
-- end_padding: size of padding between queue header(s) and
first queue payload in bytes
-- txq_idx_start: start_index for TxQ rd_wr_index
-- txq_idx_by_payload: bool indicating whether TxQ rd_wr_idx
indexes by payloads instead of default
dwords
Example:
msm_hw_fence: qcom,hw-fence {
compatible = "qcom,msm-hw-fence";
status = "ok";
qcom,ipcc-reg = <0x400000 0x100000>;
qcom,hw-fence-table-entries = <8192>;
qcom,hw-fence-queue-entries = <800>;
/* time register */
qcom,qtime-reg = <0xC221000 0x1000>;
/* ipc version */
qcom,hw-fence-ipc-ver = <0x20003>;
/* client queues: clients_num, queues_num, queue_entries, skip_txq_wr_idx */
qcom,hw-fence-client-type-dpu = <4 2 128 0>;
qcom,hw-fence-client-type-ife2 = <3 1 64 1>;
/* extra client queue properties */
qcom,hw-fence-client-type-ife2-extra = <20 28 1 1>;
/* haven doorbell specific */
hw_fence@0 {
compatible = "qcom,msm-hw-fence-db";
qcom,master;
gunyah-label = <6>;
peer-name = <3>;
};
/* haven io-mem specific */
hw_fence@1 {
compatible = "qcom,msm-hw-fence-mem";
qcom,master;
gunyah-label = <5>;
peer-name = <3>;
shared-buffer = <&hwfence_shbuf>;
};
};

15
hw_fence/sun-hw-fence.dts Normal file
View File

@@ -0,0 +1,15 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/
/dts-v1/;
/plugin/;
#include "sun-hw-fence.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Sun SoC";
compatible = "qcom,sun";
qcom,board-id = <0 0>;
};

View File

@@ -0,0 +1,37 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/
&soc {
msm_hw_fence: qcom,hw-fence {
compatible = "qcom,msm-hw-fence";
status = "ok";
qcom,hw-fence-table-entries = <8192>;
qcom,hw-fence-queue-entries = <800>;
qcom,ipcc-reg = <0x400000 0x140000>;
/* time register */
qcom,qtime-reg = <0xC221000 0x1000>;
/* ipc version */
qcom,hw-fence-ipc-ver = <0x20A02>;
/* base client queue properties */
qcom,hw-fence-client-type-dpu = <6 2 128 1>;
qcom,hw-fence-client-type-ipe = <1 2 800 0>;
qcom,hw-fence-client-type-vpu = <1 2 800 0>;
qcom,hw-fence-client-type-ife0 = <1 1 128 1>;
/* extra client queue properties */
qcom,hw-fence-client-type-ife0-extra = <20 28 1 1>;
/* haven io-mem specific */
hw_fence@1 {
compatible = "qcom,msm-hw-fence-mem";
qcom,master;
shared-buffer = <&hwfence_shbuf>;
};
};
};

View File

@@ -0,0 +1,17 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/
/dts-v1/;
/plugin/;
#include "hw_fence/sun-hw-fence.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Sun CDP Kiwi WLAN";
compatible = "qcom,sun-cdp", "qcom,sun", "qcom,sunp-cdp", "qcom,sunp",
"qcom,cdp";
qcom,msm-id = <618 0x10000>, <618 0x20000>, <639 0x10000>, <639 0x20000>;
qcom,board-id = <0x20001 0>;
};

View File

@@ -0,0 +1,17 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/
/dts-v1/;
/plugin/;
#include "hw_fence/sun-hw-fence.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Sun CDP Kiwi WLAN V8 Power Grid";
compatible = "qcom,sun-cdp", "qcom,sun", "qcom,sunp-cdp", "qcom,sunp",
"qcom,cdp";
qcom,msm-id = <618 0x10000>, <618 0x20000>, <639 0x10000>, <639 0x20000>;
qcom,board-id = <0x60001 0>;
};

View File

@@ -0,0 +1,16 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/
/dts-v1/;
/plugin/;
#include "hw_fence/sun-hw-fence.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Sun CDP SN300 NFC";
compatible = "qcom,sun-cdp", "qcom,sun", "qcom,sunp-cdp", "qcom,sunp", "qcom,cdp";
qcom,msm-id = <618 0x10000>, <618 0x20000>, <639 0x10000>, <639 0x20000>;
qcom,board-id = <0x40001 0>;
};

17
sun-mm-cdp-overlay.dts Normal file
View File

@@ -0,0 +1,17 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/
/dts-v1/;
/plugin/;
#include "hw_fence/sun-hw-fence.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Sun CDP";
compatible = "qcom,sun-cdp", "qcom,sun", "qcom,sunp-cdp", "qcom,sunp",
"qcom,cdp";
qcom,msm-id = <618 0x10000>, <618 0x20000>, <639 0x10000>, <639 0x20000>;
qcom,board-id = <1 0>;
};

17
sun-mm-cdp-v8-overlay.dts Normal file
View File

@@ -0,0 +1,17 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/
/dts-v1/;
/plugin/;
#include "hw_fence/sun-hw-fence.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Sun CDP V8 Power Grid";
compatible = "qcom,sun-cdp", "qcom,sun", "qcom,sunp-cdp", "qcom,sunp",
"qcom,cdp";
qcom,msm-id = <618 0x10000>, <618 0x20000>, <639 0x10000>, <639 0x20000>;
qcom,board-id = <0x50001 0>;
};

View File

@@ -0,0 +1,17 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/
/dts-v1/;
/plugin/;
#include "hw_fence/sun-hw-fence.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Sun MTP Kiwi WLAN";
compatible = "qcom,sun-mtp", "qcom,sun", "qcom,sunp-mtp", "qcom,sunp",
"qcom,mtp";
qcom,msm-id = <618 0x10000>, <618 0x20000>, <639 0x10000>, <639 0x20000>;
qcom,board-id = <0x20008 0>;
};

View File

@@ -0,0 +1,17 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/
/dts-v1/;
/plugin/;
#include "hw_fence/sun-hw-fence.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Sun MTP Kiwi WLAN V8 Power Grid";
compatible = "qcom,sun-mtp", "qcom,sun", "qcom,sunp-mtp", "qcom,sunp",
"qcom,mtp";
qcom,msm-id = <618 0x10000>, <618 0x20000>, <639 0x10000>, <639 0x20000>;
qcom,board-id = <0x50008 0>;
};

View File

@@ -0,0 +1,16 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/
/dts-v1/;
/plugin/;
#include "hw_fence/sun-hw-fence.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Sun MTP SN300 NFC";
compatible = "qcom,sun-mtp", "qcom,sun", "qcom,sunp-mtp", "qcom,sunp", "qcom,mtp";
qcom,msm-id = <618 0x10000>, <618 0x20000>, <639 0x10000>, <639 0x20000>;
qcom,board-id = <0x30008 0>;
};

17
sun-mm-mtp-overlay.dts Normal file
View File

@@ -0,0 +1,17 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/
/dts-v1/;
/plugin/;
#include "hw_fence/sun-hw-fence.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Sun MTP";
compatible = "qcom,sun-mtp", "qcom,sun", "qcom,sunp-mtp", "qcom,sunp",
"qcom,mtp";
qcom,msm-id = <618 0x10000>, <618 0x20000>, <639 0x10000>, <639 0x20000>;
qcom,board-id = <8 0>;
};

17
sun-mm-mtp-v8-overlay.dts Normal file
View File

@@ -0,0 +1,17 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/
/dts-v1/;
/plugin/;
#include "hw_fence/sun-hw-fence.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Sun MTP V8 Power Grid";
compatible = "qcom,sun-mtp", "qcom,sun", "qcom,sunp-mtp", "qcom,sunp",
"qcom,mtp";
qcom,msm-id = <618 0x10000>, <618 0x20000>, <639 0x10000>, <639 0x20000>;
qcom,board-id = <0x40008 0>;
};

View File

@@ -0,0 +1,17 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/
/dts-v1/;
/plugin/;
#include "hw_fence/sun-hw-fence.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Sun QRD SKU1";
compatible = "qcom,sun-qrd", "qcom,sun", "qcom,sunp-qrd", "qcom,sunp",
"qcom,qrd";
qcom,msm-id = <618 0x10000>, <618 0x20000>, <639 0x10000>, <639 0x20000>;
qcom,board-id = <0x1000B 0>;
};

View File

@@ -0,0 +1,17 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/
/dts-v1/;
/plugin/;
#include "hw_fence/sun-hw-fence.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Sun QRD SKU1 V8 Power Grid";
compatible = "qcom,sun-qrd", "qcom,sun", "qcom,sunp-qrd", "qcom,sunp",
"qcom,qrd";
qcom,msm-id = <618 0x10000>, <618 0x20000>, <639 0x10000>, <639 0x20000>;
qcom,board-id = <0x3000B 0>;
};

View File

@@ -0,0 +1,17 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/
/dts-v1/;
/plugin/;
#include "hw_fence/sun-hw-fence.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Sun QRD SKU2 V8 Power Grid";
compatible = "qcom,sun-qrd", "qcom,sun", "qcom,sunp-qrd", "qcom,sunp",
"qcom,qrd";
qcom,msm-id = <618 0x10000>, <618 0x20000>, <639 0x10000>, <639 0x20000>;
qcom,board-id = <0x2000B 0>;
};

16
sun-mm-rumi-overlay.dts Normal file
View File

@@ -0,0 +1,16 @@
// SPDX-License-Identifier: BSD-3-Clause
/*
* Copyright (c) 2023-2024 Qualcomm Innovation Center, Inc. All rights reserved.
*/
/dts-v1/;
/plugin/;
#include "hw_fence/sun-hw-fence.dtsi"
/ {
model = "Qualcomm Technologies, Inc. Sun RUMI";
compatible = "qcom,sun-rumi", "qcom,sun", "qcom,rumi";
qcom,msm-id = <618 0x10000>;
qcom,board-id = <15 0>;
};