forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge tag 'rproc-v5.6' of git://git.kernel.org/pub/scm/linux/kernel/g…
…it/andersson/remoteproc Pull remoteproc updates from Bjorn Andersson: "This adds support for the Mediatek MT8183 SCP, modem remoteproc on Qualcomm SC7180 platform, audio and sensor remoteprocs on Qualcomm MSM8998 and audio, compute, modem and sensor remoteprocs on Qualcomm SM8150. It adds votes for necessary power-domains for all Qualcomm TrustZone based remoteproc instances are held, fixes a bug related to remoteproc drivers registering before the core has been initialized and does clean up the Qualcomm modem remoteproc driver" * tag 'rproc-v5.6' of git://git.kernel.org/pub/scm/linux/kernel/git/andersson/remoteproc: (21 commits) remoteproc: qcom: q6v5-mss: Improve readability of reset_assert remoteproc: qcom: q6v5-mss: Use regmap_read_poll_timeout remoteproc: qcom: q6v5-mss: Rename boot status timeout remoteproc: qcom: q6v5-mss: Improve readability across clk handling remoteproc: use struct_size() helper remoteproc: Initialize rproc_class before use rpmsg: add rpmsg support for mt8183 SCP. remoteproc/mediatek: add SCP support for mt8183 dt-bindings: Add a binding for Mediatek SCP remoteproc: mss: q6v5-mss: Add modem support on SC7180 dt-bindings: remoteproc: qcom: Add Q6V5 Modem PIL binding for SC7180 remoteproc: qcom: pas: Add MSM8998 ADSP and SLPI support dt-bindings: remoteproc: qcom: Add ADSP and SLPI support for MSM8998 SoC remoteproc: q6v5-mss: Remove mem clk from the active pool remoteproc: qcom: Remove unneeded semicolon remoteproc: qcom: pas: Add auto_boot flag remoteproc: qcom: pas: Add SM8150 ADSP, CDSP, Modem and SLPI support dt-bindings: remoteproc: qcom: SM8150 Add ADSP, CDSP, MPSS and SLPI support remoteproc: qcom: pas: Vote for active/proxy power domains dt-bindings: remoteproc: qcom: Add power-domain bindings for Q6V5 PAS ...
- Loading branch information
Showing
17 changed files
with
2,092 additions
and
30 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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"; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
/* | ||
* Copyright (c) 2019 MediaTek Inc. | ||
*/ | ||
|
||
#ifndef __RPROC_MTK_COMMON_H | ||
#define __RPROC_MTK_COMMON_H | ||
|
||
#include <linux/interrupt.h> | ||
#include <linux/kernel.h> | ||
#include <linux/platform_device.h> | ||
#include <linux/remoteproc.h> | ||
#include <linux/remoteproc/mtk_scp.h> | ||
|
||
#define MT8183_SW_RSTN 0x0 | ||
#define MT8183_SW_RSTN_BIT BIT(0) | ||
#define MT8183_SCP_TO_HOST 0x1C | ||
#define MT8183_SCP_IPC_INT_BIT BIT(0) | ||
#define MT8183_SCP_WDT_INT_BIT BIT(8) | ||
#define MT8183_HOST_TO_SCP 0x28 | ||
#define MT8183_HOST_IPC_INT_BIT BIT(0) | ||
#define MT8183_WDT_CFG 0x84 | ||
#define MT8183_SCP_CLK_SW_SEL 0x4000 | ||
#define MT8183_SCP_CLK_DIV_SEL 0x4024 | ||
#define MT8183_SCP_SRAM_PDN 0x402C | ||
#define MT8183_SCP_L1_SRAM_PD 0x4080 | ||
#define MT8183_SCP_TCM_TAIL_SRAM_PD 0x4094 | ||
|
||
#define MT8183_SCP_CACHE_SEL(x) (0x14000 + (x) * 0x3000) | ||
#define MT8183_SCP_CACHE_CON MT8183_SCP_CACHE_SEL(0) | ||
#define MT8183_SCP_DCACHE_CON MT8183_SCP_CACHE_SEL(1) | ||
#define MT8183_SCP_CACHESIZE_8KB BIT(8) | ||
#define MT8183_SCP_CACHE_CON_WAYEN BIT(10) | ||
|
||
#define SCP_FW_VER_LEN 32 | ||
#define SCP_SHARE_BUFFER_SIZE 288 | ||
|
||
struct scp_run { | ||
u32 signaled; | ||
s8 fw_ver[SCP_FW_VER_LEN]; | ||
u32 dec_capability; | ||
u32 enc_capability; | ||
wait_queue_head_t wq; | ||
}; | ||
|
||
struct scp_ipi_desc { | ||
/* For protecting handler. */ | ||
struct mutex lock; | ||
scp_ipi_handler_t handler; | ||
void *priv; | ||
}; | ||
|
||
struct mtk_scp { | ||
struct device *dev; | ||
struct rproc *rproc; | ||
struct clk *clk; | ||
void __iomem *reg_base; | ||
void __iomem *sram_base; | ||
size_t sram_size; | ||
|
||
struct mtk_share_obj __iomem *recv_buf; | ||
struct mtk_share_obj __iomem *send_buf; | ||
struct scp_run run; | ||
/* To prevent multiple ipi_send run concurrently. */ | ||
struct mutex send_lock; | ||
struct scp_ipi_desc ipi_desc[SCP_IPI_MAX]; | ||
bool ipi_id_ack[SCP_IPI_MAX]; | ||
wait_queue_head_t ack_wq; | ||
|
||
void __iomem *cpu_addr; | ||
phys_addr_t phys_addr; | ||
size_t dram_size; | ||
|
||
struct rproc_subdev *rpmsg_subdev; | ||
}; | ||
|
||
/** | ||
* struct mtk_share_obj - SRAM buffer shared with AP and SCP | ||
* | ||
* @id: IPI id | ||
* @len: share buffer length | ||
* @share_buf: share buffer data | ||
*/ | ||
struct mtk_share_obj { | ||
u32 id; | ||
u32 len; | ||
u8 share_buf[SCP_SHARE_BUFFER_SIZE]; | ||
}; | ||
|
||
void scp_memcpy_aligned(void __iomem *dst, const void *src, unsigned int len); | ||
void scp_ipi_lock(struct mtk_scp *scp, u32 id); | ||
void scp_ipi_unlock(struct mtk_scp *scp, u32 id); | ||
|
||
#endif |
Oops, something went wrong.