drivers/gpu/drm/imagination/pvr_fw_startstop.c

Source file repositories/reference/linux-study-clean/drivers/gpu/drm/imagination/pvr_fw_startstop.c

File Facts

System
Linux kernel
Corpus path
drivers/gpu/drm/imagination/pvr_fw_startstop.c
Extension
.c
Size
10810 bytes
Lines
356
Domain
Driver Families
Bucket
drivers/gpu
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

if (!skip_garten_idle) {
			err = pvr_cr_poll_reg32(pvr_dev, ROGUE_CR_SIDEKICK_IDLE,
						ROGUE_CR_SIDEKICK_IDLE_GARTEN_EN,
						ROGUE_CR_SIDEKICK_IDLE_GARTEN_EN,
						POLL_TIMEOUT_USEC);
			if (err)
				return err;
		}
	} else {
		/*
		 * As FW core has been moved from SIDEKICK to the new MARS domain, checking
		 * idle bits for CPU & System Arbiter excluding SOCIF which will never be
		 * idle if Host polling on this register
		 */
		err = pvr_cr_poll_reg32(pvr_dev, ROGUE_CR_MARS_IDLE,
					ROGUE_CR_MARS_IDLE_CPU_EN |
					ROGUE_CR_MARS_IDLE_MH_SYSARB0_EN,
					ROGUE_CR_MARS_IDLE_CPU_EN |
					ROGUE_CR_MARS_IDLE_MH_SYSARB0_EN,
					POLL_TIMEOUT_USEC);

		if (err)
			return err;
	}

	if (PVR_HAS_FEATURE(pvr_dev, pbe2_in_xe))
		pvr_cr_write64(pvr_dev, ROGUE_CR_SOFT_RESET,
			       ROGUE_CR_SOFT_RESET__PBE2_XE__MASKFULL);
	else
		pvr_cr_write64(pvr_dev, ROGUE_CR_SOFT_RESET, ROGUE_CR_SOFT_RESET_MASKFULL);

	return 0;
}

Annotation

Implementation Notes