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

Commit d9002bda authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: pil-q6v5: Override ACC setting before Q6 is brought out of reset"

parents 40fdb673 9a75cad3
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@ Optional properties:
- qcom,ssctl-instance-id: Instance id used by the subsystem to connect with the SSCTL
			  service.
- qcom,sysmon-id:	platform device id that sysmon is probed with for the subsystem.
- qcom,override-acc: Boolean- Present if we need to override the default ACC settings

Example:
	qcom,mss@fc880000 {
@@ -82,6 +83,7 @@ Example:
		qcom,firmware-name = "mba";
		qcom,pil-self-auth;
		qcom,mba-image-is-not-elf;
		qcom,override-acc;

		/* GPIO inputs from mss */
		qcom,gpio-err-fatal = <&smp2pgpio_ssr_smp2p_1_in 0 0>;
+11 −0
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@
#define QDSP6SS_RESET			0x014
#define QDSP6SS_GFMUX_CTL		0x020
#define QDSP6SS_PWR_CTL			0x030
#define QDSP6SS_STRAP_ACC		0x110

/* AXI Halt Register Offsets */
#define AXI_HALTREQ			0x0
@@ -72,6 +73,8 @@
#define HALT_CHECK_MAX_LOOPS            (200)
#define QDSP6SS_XO_CBCR                 (0x0038)

#define QDSP6SS_ACC_OVERRIDE_VAL	0x20

int pil_q6v5_make_proxy_votes(struct pil_desc *pil)
{
	int ret;
@@ -296,6 +299,11 @@ static int __pil_q6v55_reset(struct pil_desc *pil)
	struct q6v5_data *drv = container_of(pil, struct q6v5_data, desc);
	u32 val, i;

	/* Override the ACC value if required */
	if (drv->override_acc)
		writel_relaxed(QDSP6SS_ACC_OVERRIDE_VAL,
				drv->reg_base + QDSP6SS_STRAP_ACC);

	/* Assert resets, stop core */
	val = readl_relaxed(drv->reg_base + QDSP6SS_RESET);
	val |= (Q6SS_CORE_ARES | Q6SS_BUS_ARES_ENA | Q6SS_STOP_CORE);
@@ -446,6 +454,9 @@ struct q6v5_data *pil_q6v5_init(struct platform_device *pdev)
	drv->non_elf_image = of_property_read_bool(pdev->dev.of_node,
						"qcom,mba-image-is-not-elf");

	drv->override_acc = of_property_read_bool(pdev->dev.of_node,
						"qcom,override-acc");

	drv->xo = devm_clk_get(&pdev->dev, "xo");
	if (IS_ERR(drv->xo))
		return ERR_CAST(drv->xo);
+1 −0
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ struct q6v5_data {
	bool qdsp6v56;
	bool non_elf_image;
	bool restart_reg_sec;
	bool override_acc;
};

int pil_q6v5_make_proxy_votes(struct pil_desc *pil);