Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 92589cbd authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'rproc-v4.17' of git://github.com/andersson/remoteproc

Pull remoteproc updates from Bjorn Andersson:

 - add support for generating coredumps for remoteprocs using
   devcoredump

 - add the Qualcomm sysmon driver for intra-remoteproc crash handling

 - a number of fixes in Qualcomm and IMX drivers

* tag 'rproc-v4.17' of git://github.com/andersson/remoteproc:
  remoteproc: fix null pointer dereference on glink only platforms
  soc: qcom: qmi: add CONFIG_NET dependency
  remoteproc: imx_rproc: Slightly simplify code in 'imx_rproc_probe()'
  remoteproc: imx_rproc: Re-use existing error handling path in 'imx_rproc_probe()'
  remoteproc: imx_rproc: Fix an error handling path in 'imx_rproc_probe()'
  samples: Introduce Qualcomm QMI sample client
  remoteproc: qcom: Introduce sysmon
  remoteproc: Pass type of shutdown to subdev remove
  remoteproc: qcom: Register segments for core dump
  soc: qcom: mdt-loader: Return relocation base
  remoteproc: Rename "load_rsc_table" to "parse_fw"
  remoteproc: Add remote processor coredump support
  remoteproc: Remove null character write of shared mem
parents 9ab89c40 730b2ad8
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -89,14 +89,14 @@ static int zap_shader_load_mdt(struct msm_gpu *gpu, const char *fwname)
	 */
	if (to_adreno_gpu(gpu)->fwloc == FW_LOCATION_LEGACY) {
		ret = qcom_mdt_load(dev, fw, fwname, GPU_PAS_ID,
				mem_region, mem_phys, mem_size);
				mem_region, mem_phys, mem_size, NULL);
	} else {
		char newname[strlen("qcom/") + strlen(fwname) + 1];

		sprintf(newname, "qcom/%s", fwname);

		ret = qcom_mdt_load(dev, fw, newname, GPU_PAS_ID,
				mem_region, mem_phys, mem_size);
				mem_region, mem_phys, mem_size, NULL);
	}
	if (ret)
		goto out;
+1 −1
Original line number Diff line number Diff line
@@ -76,7 +76,7 @@ int venus_boot(struct device *dev, const char *fwname)
	}

	ret = qcom_mdt_load(dev, mdt, fwname, VENUS_PAS_ID, mem_va, mem_phys,
			    mem_size);
			    mem_size, NULL);

	release_firmware(mdt);

+19 −0
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ config REMOTEPROC
	select CRC32
	select FW_LOADER
	select VIRTIO
	select WANT_DEV_COREDUMP
	help
	  Support for remote processors (such as DSP coprocessors). These
	  are mainly used on embedded systems.
@@ -90,6 +91,7 @@ config QCOM_ADSP_PIL
	depends on QCOM_SMEM
	depends on RPMSG_QCOM_SMD || (COMPILE_TEST && RPMSG_QCOM_SMD=n)
	depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
	depends on QCOM_SYSMON || QCOM_SYSMON=n
	select MFD_SYSCON
	select QCOM_MDT_LOADER
	select QCOM_RPROC_COMMON
@@ -107,6 +109,7 @@ config QCOM_Q6V5_PIL
	depends on QCOM_SMEM
	depends on RPMSG_QCOM_SMD || (COMPILE_TEST && RPMSG_QCOM_SMD=n)
	depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
	depends on QCOM_SYSMON || QCOM_SYSMON=n
	select MFD_SYSCON
	select QCOM_RPROC_COMMON
	select QCOM_SCM
@@ -114,12 +117,28 @@ config QCOM_Q6V5_PIL
	  Say y here to support the Qualcomm Peripherial Image Loader for the
	  Hexagon V5 based remote processors.

config QCOM_SYSMON
	tristate "Qualcomm sysmon driver"
	depends on RPMSG
	depends on ARCH_QCOM
	depends on NET
	select QCOM_QMI_HELPERS
	help
	  The sysmon driver implements a sysmon QMI client and a handler for
	  the sys_mon SMD and GLINK channel, which are used for graceful
	  shutdown, retrieving failure information and propagating information
	  about other subsystems being shut down.

	  Say y here if your system runs firmware on any other subsystems, e.g.
	  modem or DSP.

config QCOM_WCNSS_PIL
	tristate "Qualcomm WCNSS Peripheral Image Loader"
	depends on OF && ARCH_QCOM
	depends on RPMSG_QCOM_SMD || (COMPILE_TEST && RPMSG_QCOM_SMD=n)
	depends on RPMSG_QCOM_GLINK_SMEM || RPMSG_QCOM_GLINK_SMEM=n
	depends on QCOM_SMEM
	depends on QCOM_SYSMON || QCOM_SYSMON=n
	select QCOM_MDT_LOADER
	select QCOM_RPROC_COMMON
	select QCOM_SCM
+1 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@ obj-$(CONFIG_KEYSTONE_REMOTEPROC) += keystone_remoteproc.o
obj-$(CONFIG_QCOM_ADSP_PIL)		+= qcom_adsp_pil.o
obj-$(CONFIG_QCOM_RPROC_COMMON)		+= qcom_common.o
obj-$(CONFIG_QCOM_Q6V5_PIL)		+= qcom_q6v5_pil.o
obj-$(CONFIG_QCOM_SYSMON)		+= qcom_sysmon.o
obj-$(CONFIG_QCOM_WCNSS_PIL)		+= qcom_wcnss_pil.o
qcom_wcnss_pil-y			+= qcom_wcnss.o
qcom_wcnss_pil-y			+= qcom_wcnss_iris.o
+11 −12
Original line number Diff line number Diff line
@@ -333,14 +333,14 @@ static int imx_rproc_probe(struct platform_device *pdev)
	/* set some other name then imx */
	rproc = rproc_alloc(dev, "imx-rproc", &imx_rproc_ops,
			    NULL, sizeof(*priv));
	if (!rproc) {
		ret = -ENOMEM;
		goto err;
	}
	if (!rproc)
		return -ENOMEM;

	dcfg = of_device_get_match_data(dev);
	if (!dcfg)
		return -EINVAL;
	if (!dcfg) {
		ret = -EINVAL;
		goto err_put_rproc;
	}

	priv = rproc->priv;
	priv->rproc = rproc;
@@ -359,8 +359,8 @@ static int imx_rproc_probe(struct platform_device *pdev)
	priv->clk = devm_clk_get(dev, NULL);
	if (IS_ERR(priv->clk)) {
		dev_err(dev, "Failed to get clock\n");
		rproc_free(rproc);
		return PTR_ERR(priv->clk);
		ret = PTR_ERR(priv->clk);
		goto err_put_rproc;
	}

	/*
@@ -370,8 +370,7 @@ static int imx_rproc_probe(struct platform_device *pdev)
	ret = clk_prepare_enable(priv->clk);
	if (ret) {
		dev_err(&rproc->dev, "Failed to enable clock\n");
		rproc_free(rproc);
		return ret;
		goto err_put_rproc;
	}

	ret = rproc_add(rproc);
@@ -380,13 +379,13 @@ static int imx_rproc_probe(struct platform_device *pdev)
		goto err_put_clk;
	}

	return ret;
	return 0;

err_put_clk:
	clk_disable_unprepare(priv->clk);
err_put_rproc:
	rproc_free(rproc);
err:

	return ret;
}

Loading