* [PATCH v15 0/5] Add support for mt8183 SCP. @ 2019-08-07 10:43 Pi-Hsun Shih 2019-08-07 10:43 ` [PATCH v15 1/5] dt-bindings: Add a binding for Mediatek SCP Pi-Hsun Shih 2019-08-07 10:43 ` [PATCH v15 5/5] arm64: dts: mt8183: add scp node Pi-Hsun Shih 0 siblings, 2 replies; 3+ messages in thread From: Pi-Hsun Shih @ 2019-08-07 10:43 UTC (permalink / raw) Cc: Pi-Hsun Shih, open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, moderated list:ARM/Mediatek SoC support, open list, moderated list:ARM/Mediatek SoC support, open list:REMOTE PROCESSOR REMOTEPROC SUBSYSTEM Add support for controlling and communicating with mt8183's system control processor (SCP), using the remoteproc & rpmsg framework. And also add a cros_ec driver for CrOS EC host command over rpmsg. The overall structure of the series is: * remoteproc/mtk_scp.c: Control the start / stop of SCP (Patch 2, 3). * remoteproc/mtk_scp_ipi.c: Communicates to SCP using inter-processor interrupt (IPI) and shared memory (Patch 2, 3). * rpmsg/mtk_rpmsg.c: Wrapper to wrap the IPI communication into a rpmsg device. Supports name service for SCP firmware to announce channels (Patch 4). * add scp dts node to mt8183 platform (Patch 5). Changes from v14: - Fix a typo on variable in DEBUG section. Changes from v13: - Move include/linux/platform_data/mtk_scp.h to include/linux/remoteproc/mtk_scp.h. - Rename scp_get_reserve_* to scp_get_reserved_*. - Add lock for access of scp->ipi_desc. - Lock the whole ipi_send function. - Move more setting of cache size from SCP firmware to kernel driver, to prevent problem while loading firmware onto DRAM. - Minor fixes addressing comment. Changes from v12: - Initialize cache before firmware load, to avoid problem while loading large firmware. - Disable watchdog before stopping SCP, to avoid extra warning message. - Fix new warnings by checkpatch. Changes from v11: - Fixed a bug that mtk_rpmsg_endpoint is not properly cleaned up if rproc_boot fails. - Add missing documentation in comment. Changes from v10: - Drop applied cros_ec_rpmsg patches. - Add clock reset before loading SCP firmware. - Fix some type mismatch warnings when printing debug messages. Changes from v9: - Remove reserve-memory-vpu_share node. - Remove change to cros_ec_commands.h (That is already in https://lore.kernel.org/lkml/20190518063949.GY4319@dell/T/) Changes from v8: - Rebased onto https://patchwork.kernel.org/cover/10962385/. - Drop merged cros_ec_rpmsg patch, and add scp dts node patch. - Add more reserved memory region. Changes from v7: - Rebase onto https://lore.kernel.org/patchwork/patch/1059196/. - Fix clock enable/disable timing for SCP driver. - Add more SCP IPI ID. Changes from v6: - Decouple mtk_rpmsg from mtk_scp. - Change data of EC response to be aligned to 4 bytes. Changes from v5: - Add device tree binding document for cros_ec_rpmsg. - Better document in comments for cros_ec_rpmsg. - Remove dependency on CONFIG_ in binding tree document. Changes from v4: - Merge patch 6 (Load ELF firmware) into patch 2, so the driver loads ELF firmware by default, and no longer accept plain binary. - rpmsg_device listed in device tree (as a child of the SCP node) would have it's device tree node mapped to the rpmsg_device, so the rpmsg driver can use the properties on device tree. Changes from v3: - Make writing to SCP SRAM aligned. - Add a new patch (Patch 6) to load ELF instead of bin firmware. - Add host event support for EC driver. - Fix some bugs found in testing (missing spin_lock_init, rproc_subdev_unprepare to rproc_subdev_stop). - Fix some coding style issue found by checkpatch.pl. Changes from v2: - Fold patch 3 into patch 2 in v2. - Move IPI id around to support cross-testing for old and new firmware. - Finish more TODO items. Changes from v1: - Extract functions and rename variables in mtk_scp.c. - Do cleanup properly in mtk_rpmsg.c, which also removes the problem of short-lived work items. - Code format fix based on feedback for cros_ec_rpmsg.c. - Extract feature detection for SCP into separate patch (Patch 6). Eddie Huang (1): arm64: dts: mt8183: add scp node Erin Lo (3): dt-bindings: Add a binding for Mediatek SCP remoteproc/mediatek: add SCP support for mt8183 remoteproc: mt8183: add reserved memory manager API Pi-Hsun Shih (1): rpmsg: add rpmsg support for mt8183 SCP. .../bindings/remoteproc/mtk,scp.txt | 36 + arch/arm64/boot/dts/mediatek/mt8183-evb.dts | 11 + arch/arm64/boot/dts/mediatek/mt8183.dtsi | 12 + drivers/remoteproc/Kconfig | 10 + drivers/remoteproc/Makefile | 1 + drivers/remoteproc/mtk_common.h | 92 +++ drivers/remoteproc/mtk_scp.c | 710 ++++++++++++++++++ drivers/remoteproc/mtk_scp_ipi.c | 159 ++++ drivers/rpmsg/Kconfig | 9 + drivers/rpmsg/Makefile | 1 + drivers/rpmsg/mtk_rpmsg.c | 414 ++++++++++ include/linux/remoteproc/mtk_scp.h | 168 +++++ include/linux/rpmsg/mtk_rpmsg.h | 38 + 13 files changed, 1661 insertions(+) create mode 100644 Documentation/devicetree/bindings/remoteproc/mtk,scp.txt create mode 100644 drivers/remoteproc/mtk_common.h create mode 100644 drivers/remoteproc/mtk_scp.c create mode 100644 drivers/remoteproc/mtk_scp_ipi.c create mode 100644 drivers/rpmsg/mtk_rpmsg.c create mode 100644 include/linux/remoteproc/mtk_scp.h create mode 100644 include/linux/rpmsg/mtk_rpmsg.h -- 2.22.0.770.g0f2c4a37fd-goog ^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH v15 1/5] dt-bindings: Add a binding for Mediatek SCP 2019-08-07 10:43 [PATCH v15 0/5] Add support for mt8183 SCP Pi-Hsun Shih @ 2019-08-07 10:43 ` Pi-Hsun Shih 2019-08-07 10:43 ` [PATCH v15 5/5] arm64: dts: mt8183: add scp node Pi-Hsun Shih 1 sibling, 0 replies; 3+ messages in thread From: Pi-Hsun Shih @ 2019-08-07 10:43 UTC (permalink / raw) Cc: Pi-Hsun Shih, Erin Lo, Rob Herring, Ohad Ben-Cohen, Bjorn Andersson, Rob Herring, Mark Rutland, Matthias Brugger, open list:REMOTE PROCESSOR REMOTEPROC SUBSYSTEM, open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, moderated list:ARM/Mediatek SoC support, moderated list:ARM/Mediatek SoC support, open list From: Erin Lo <erin.lo@mediatek.com> Add a DT binding documentation of SCP for the MT8183 SoC from Mediatek. Signed-off-by: Erin Lo <erin.lo@mediatek.com> Signed-off-by: Pi-Hsun Shih <pihsun@chromium.org> Reviewed-by: Rob Herring <robh@kernel.org> --- Changes from v14, v13, v12, v11, v10, v9, v8, v7, v6: - No change. Changes from v5: - Remove dependency on CONFIG_RPMSG_MTK_SCP. Changes from v4: - Add detail of more properties. - Document the usage of mtk,rpmsg-name in subnode from the new design. Changes from v3: - No change. Changes from v2: - No change. I realized that for this patch series, there's no need to add anything under the mt8183-scp node (neither the mt8183-rpmsg or the cros-ec-rpmsg) for them to work, since mt8183-rpmsg is added directly as a rproc_subdev by code, and cros-ec-rpmsg is dynamically created by SCP name service. Changes from v1: - No change. --- .../bindings/remoteproc/mtk,scp.txt | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 Documentation/devicetree/bindings/remoteproc/mtk,scp.txt diff --git a/Documentation/devicetree/bindings/remoteproc/mtk,scp.txt b/Documentation/devicetree/bindings/remoteproc/mtk,scp.txt new file mode 100644 index 000000000000..3ba668bab14b --- /dev/null +++ b/Documentation/devicetree/bindings/remoteproc/mtk,scp.txt @@ -0,0 +1,36 @@ +Mediatek SCP Bindings +---------------------------------------- + +This binding provides support for ARM Cortex M4 Co-processor found on some +Mediatek SoCs. + +Required properties: +- compatible Should be "mediatek,mt8183-scp" +- reg Should contain the address ranges for the two memory + regions, SRAM and CFG. +- reg-names Contains the corresponding names for the two memory + regions. These should be named "sram" & "cfg". +- clocks Clock for co-processor (See: ../clock/clock-bindings.txt) +- clock-names Contains the corresponding name for the clock. This + should be named "main". + +Subnodes +-------- + +Subnodes of the SCP represent rpmsg devices. The names of the devices are not +important. The properties of these nodes are defined by the individual bindings +for the rpmsg devices - but must contain the following property: + +- mtk,rpmsg-name Contains the name for the rpmsg device. Used to match + the subnode to rpmsg device announced by SCP. + +Example: + + scp: scp@10500000 { + compatible = "mediatek,mt8183-scp"; + reg = <0 0x10500000 0 0x80000>, + <0 0x105c0000 0 0x5000>; + reg-names = "sram", "cfg"; + clocks = <&infracfg CLK_INFRA_SCPSYS>; + clock-names = "main"; + }; -- 2.22.0.770.g0f2c4a37fd-goog ^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH v15 5/5] arm64: dts: mt8183: add scp node 2019-08-07 10:43 [PATCH v15 0/5] Add support for mt8183 SCP Pi-Hsun Shih 2019-08-07 10:43 ` [PATCH v15 1/5] dt-bindings: Add a binding for Mediatek SCP Pi-Hsun Shih @ 2019-08-07 10:43 ` Pi-Hsun Shih 1 sibling, 0 replies; 3+ messages in thread From: Pi-Hsun Shih @ 2019-08-07 10:43 UTC (permalink / raw) Cc: Pi-Hsun Shih, Eddie Huang, Erin Lo, Rob Herring, Mark Rutland, Matthias Brugger, open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, moderated list:ARM/Mediatek SoC support, moderated list:ARM/Mediatek SoC support, open list From: Eddie Huang <eddie.huang@mediatek.com> Add scp node to mt8183 and mt8183-evb Signed-off-by: Erin Lo <erin.lo@mediatek.com> Signed-off-by: Pi-Hsun Shih <pihsun@chromium.org> Signed-off-by: Eddie Huang <eddie.huang@mediatek.com> --- Changes from v14: - No change. Changes from v13: - Change the size of the cfg register region. Changes from v12, v11, v10: - No change. Changes from v9: - Remove extra reserve-memory-vpu_share node. Changes from v8: - New patch. --- arch/arm64/boot/dts/mediatek/mt8183-evb.dts | 11 +++++++++++ arch/arm64/boot/dts/mediatek/mt8183.dtsi | 12 ++++++++++++ 2 files changed, 23 insertions(+) diff --git a/arch/arm64/boot/dts/mediatek/mt8183-evb.dts b/arch/arm64/boot/dts/mediatek/mt8183-evb.dts index d8e555cbb5d3..e46e34ce3159 100644 --- a/arch/arm64/boot/dts/mediatek/mt8183-evb.dts +++ b/arch/arm64/boot/dts/mediatek/mt8183-evb.dts @@ -24,6 +24,17 @@ chosen { stdout-path = "serial0:921600n8"; }; + + reserved-memory { + #address-cells = <2>; + #size-cells = <2>; + ranges; + scp_mem_reserved: scp_mem_region { + compatible = "shared-dma-pool"; + reg = <0 0x50000000 0 0x2900000>; + no-map; + }; + }; }; &auxadc { diff --git a/arch/arm64/boot/dts/mediatek/mt8183.dtsi b/arch/arm64/boot/dts/mediatek/mt8183.dtsi index c2749c4631bc..871754c2f477 100644 --- a/arch/arm64/boot/dts/mediatek/mt8183.dtsi +++ b/arch/arm64/boot/dts/mediatek/mt8183.dtsi @@ -254,6 +254,18 @@ clock-names = "spi", "wrap"; }; + scp: scp@10500000 { + compatible = "mediatek,mt8183-scp"; + reg = <0 0x10500000 0 0x80000>, + <0 0x105c0000 0 0x19080>; + reg-names = "sram", "cfg"; + interrupts = <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&infracfg CLK_INFRA_SCPSYS>; + clock-names = "main"; + memory-region = <&scp_mem_reserved>; + status = "disabled"; + }; + auxadc: auxadc@11001000 { compatible = "mediatek,mt8183-auxadc", "mediatek,mt8173-auxadc"; -- 2.22.0.770.g0f2c4a37fd-goog ^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2019-08-07 10:43 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-08-07 10:43 [PATCH v15 0/5] Add support for mt8183 SCP Pi-Hsun Shih 2019-08-07 10:43 ` [PATCH v15 1/5] dt-bindings: Add a binding for Mediatek SCP Pi-Hsun Shih 2019-08-07 10:43 ` [PATCH v15 5/5] arm64: dts: mt8183: add scp node Pi-Hsun Shih
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).