xref: /rk3399_ARM-atf/plat/intel/soc/common/lib/utils/alignment_utils.c (revision f3083e2e6c508d58f9bce1b2fce5eeb0903a4c6d)
1*6fcd047bSJit Loon Lim /*
2*6fcd047bSJit Loon Lim  * Copyright (c) 2025, Altera Corporation. All rights reserved.
3*6fcd047bSJit Loon Lim  *
4*6fcd047bSJit Loon Lim  * SPDX-License-Identifier: BSD-3-Clause
5*6fcd047bSJit Loon Lim  */
6*6fcd047bSJit Loon Lim 
7*6fcd047bSJit Loon Lim 
8*6fcd047bSJit Loon Lim #include <arch_helpers.h>
9*6fcd047bSJit Loon Lim #include <common/debug.h>
10*6fcd047bSJit Loon Lim #include <lib/mmio.h>
11*6fcd047bSJit Loon Lim 
12*6fcd047bSJit Loon Lim #include "alignment_utils.h"
13*6fcd047bSJit Loon Lim #include "socfpga_mailbox.h"
14*6fcd047bSJit Loon Lim 
is_size_4_bytes_aligned(uint32_t size)15*6fcd047bSJit Loon Lim bool is_size_4_bytes_aligned(uint32_t size)
16*6fcd047bSJit Loon Lim {
17*6fcd047bSJit Loon Lim 	if ((size % MBOX_WORD_BYTE) != 0U) {
18*6fcd047bSJit Loon Lim 		return false;
19*6fcd047bSJit Loon Lim 	} else {
20*6fcd047bSJit Loon Lim 		return true;
21*6fcd047bSJit Loon Lim 	}
22*6fcd047bSJit Loon Lim }
23*6fcd047bSJit Loon Lim 
is_8_bytes_aligned(uint32_t data)24*6fcd047bSJit Loon Lim bool is_8_bytes_aligned(uint32_t data)
25*6fcd047bSJit Loon Lim {
26*6fcd047bSJit Loon Lim 	if ((data % (MBOX_WORD_BYTE * 2U)) != 0U) {
27*6fcd047bSJit Loon Lim 		return false;
28*6fcd047bSJit Loon Lim 	} else {
29*6fcd047bSJit Loon Lim 		return true;
30*6fcd047bSJit Loon Lim 	}
31*6fcd047bSJit Loon Lim }
32*6fcd047bSJit Loon Lim 
33*6fcd047bSJit Loon Lim /* As of now used on only Agilex5 platform. */
is_16_bytes_aligned(uint32_t data)34*6fcd047bSJit Loon Lim bool is_16_bytes_aligned(uint32_t data)
35*6fcd047bSJit Loon Lim {
36*6fcd047bSJit Loon Lim 	if ((data % (MBOX_WORD_BYTE * 4U)) != 0U)
37*6fcd047bSJit Loon Lim 		return false;
38*6fcd047bSJit Loon Lim 	else
39*6fcd047bSJit Loon Lim 		return true;
40*6fcd047bSJit Loon Lim }
41*6fcd047bSJit Loon Lim 
is_32_bytes_aligned(uint32_t data)42*6fcd047bSJit Loon Lim bool is_32_bytes_aligned(uint32_t data)
43*6fcd047bSJit Loon Lim {
44*6fcd047bSJit Loon Lim 	if ((data % (8U * MBOX_WORD_BYTE)) != 0U) {
45*6fcd047bSJit Loon Lim 		return false;
46*6fcd047bSJit Loon Lim 	} else {
47*6fcd047bSJit Loon Lim 		return true;
48*6fcd047bSJit Loon Lim 	}
49*6fcd047bSJit Loon Lim }
50