Commit fb53d2ef authored by Guennadi Liakhovetski's avatar Guennadi Liakhovetski Committed by Anas Nashif
Browse files

ace: power: replace pseudo-assembly movi

When switching off memory banks we cannot use movi with arbitrary
immediate arguments, they will be converted by the compiler to memory
accesses. Only constants within the allowed range should be used.

Signed-off-by: default avatarGuennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
parent 4ffb8131
Loading
Loading
Loading
Loading
+11 −4
Changes for soc/intel/intel_adsp/ace/asm_memory_management.h: 11 added lines, 4 removed lines.
Original line number Diff line number Diff line
@@ -13,6 +13,8 @@

/* These definitions should be placed elsewhere, but I can't find a good place for them. */
#define LSPGCTL				0x71D80
#define LSPGCTL_HIGH			(LSPGCTL >> 12)
#define LSPGCTL_LOW			((LSPGCTL >> 4) & 0xff)
#define MAX_MEMORY_SEGMENTS		1
#define EBB_SEGMENT_SIZE		32
#define PLATFORM_HPSRAM_EBB_COUNT	22
@@ -29,12 +31,15 @@
	.else
		.err
	.endif
	.set ebb_index, \segment_index << 5
	.set i, 0               /* i = bank bit in segment */

	rsr.sar \aw             /* store old sar value */

	movi \az, (0x17A800 + 0x0008 * ebb_index)/* SHIM_HSPGCTL(ebb_index) */
	/* SHIM_HSPGCTL(ebb_index): 0x17a800 >> 11 == 0x2f5 */
	movi \az, 0x2f5
	slli \az, \az, 0xb
	/* 8 * (\segment_index << 5) == (\segment_index << 5) << 3 == \segment_index << 8 */
	addmi \az, \az, \segment_index

	movi \au, i_end - 1     /* au = banks count in segment */
2 :
	/* au = current bank in segment */
@@ -57,7 +62,9 @@

.macro m_ace_lpsram_power_down_entire ax, ay, az, au
	movi \au, 8 /* LPSRAM_EBB_QUANTITY */
	movi \az, LSPGCTL
	movi \az, LSPGCTL_LOW
	addmi \az, \az, LSPGCTL_HIGH
	slli \az, \az, 4

	movi \ay, 1
2 :