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

Commit 217d5d5c authored by Kyle Piefer's avatar Kyle Piefer
Browse files

msm: kgsl: Use the firmware to host error HFI



The HFI supports a firmware to host message for
conveying firmware errors. Set up the HFI infrastructure
to use this message.

Change-Id: I5119e7a26e0265987dd674b27484acc69f73561c
Signed-off-by: default avatarKyle Piefer <kpiefer@codeaurora.org>
parent cf01a183
Loading
Loading
Loading
Loading
+41 −30
Original line number Diff line number Diff line
@@ -478,8 +478,10 @@ static void receive_err_req(struct gmu_device *gmu, void *rcvd)
{
	struct hfi_err_cmd *cmd = rcvd;

	dev_err(&gmu->pdev->dev, "HFI Error Received: %d %d %d\n",
			cmd->error_code, cmd->data[0], cmd->data[1]);
	dev_err(&gmu->pdev->dev, "HFI Error Received: %d %d %s\n",
			((cmd->error_code >> 16) & 0xFFFF),
			(cmd->error_code & 0xFFFF),
			(char *) cmd->data);
}

static void receive_debug_req(struct gmu_device *gmu, void *rcvd)
@@ -518,13 +520,21 @@ void hfi_receiver(unsigned long data)
{
	struct gmu_device *gmu;
	uint32_t rcvd[MAX_RCVD_SIZE];
	int read_queue[] = {
		HFI_MSG_IDX,
		HFI_DBG_IDX,
	};
	int q;

	if (!data)
		return;

	gmu = (struct gmu_device *)data;

	while (hfi_queue_read(gmu, HFI_MSG_IDX, rcvd, sizeof(rcvd)) > 0) {
	/* While we are here, check all of the queues for messages */
	for (q = 0; q < ARRAY_SIZE(read_queue); q++) {
		while (hfi_queue_read(gmu, read_queue[q],
				rcvd, sizeof(rcvd)) > 0) {
			/* Special case if we're v1 */
			if (HFI_VER_MAJOR(&gmu->hfi) < 2) {
				hfi_v1_receiver(gmu, rcvd);
@@ -553,6 +563,7 @@ void hfi_receiver(unsigned long data)
			}
		};
	}
}

#define GMU_VER_MAJOR(ver) (((ver) >> 28) & 0xF)
#define GMU_VER_MINOR(ver) (((ver) >> 16) & 0xFFF)
+2 −0
Original line number Diff line number Diff line
@@ -61,6 +61,8 @@
#define HFI_IRQ_CM3_FAULT_MASK		BIT(15)
#define HFI_IRQ_OOB_MASK		GENMASK(31, 16)
#define HFI_IRQ_MASK			(HFI_IRQ_MSGQ_MASK |\
					HFI_IRQ_SIDEMSGQ_MASK |\
					HFI_IRQ_DBGQ_MASK |\
					HFI_IRQ_CM3_FAULT_MASK)

#define CLKSET_OPTION_DEFAULT 0