/* SPDX-License-Identifier: GPL-2.0+ */
/*
 * (C) Copyright 2015 Freescale Semiconductor
 *
 * Extracted from gic_64.S
 */

#include <config.h>
#include <linux/linkage.h>
#include <asm/macro.h>

/*************************************************************************
 *
 * void ccn504_add_masters_to_dvm(CCI_MN_BASE, CCI_MN_RNF_NODEID_LIST,
 * 				  CCI_MN_DVM_DOMAIN_CTL_SET);
 *
 * Add fully-coherent masters to DVM domain
 *
 *************************************************************************/
ENTRY(ccn504_add_masters_to_dvm)
	/*
	 * x0: CCI_MN_BASE
	 * x1: CCI_MN_RNF_NODEID_LIST
	 * x2: CCI_MN_DVM_DOMAIN_CTL_SET
	 */

	/* Add fully-coherent masters to DVM domain */
	ldr	x9, [x0, x1]
	str	x9, [x0, x2]
1:	ldr	x10, [x0, x2]
	mvn	x11, x10
	tst	x11, x10 /* Wait for domain addition to complete */
	b.ne	1b

	ret
ENDPROC(ccn504_add_masters_to_dvm)

/*************************************************************************
 *
 * void ccn504_set_qos(CCI_Sx_QOS_CONTROL_BASE, QoS Value);
 *
 * Initialize QoS settings for AR/AW override.
 * Right now, this function sets the same QoS value for all RN-I ports
 *
 *************************************************************************/
ENTRY(ccn504_set_qos)
	/*
	 * x0: CCI_Sx_QOS_CONTROL_BASE
	 * x1: QoS Value
	 */

	/* Set all RN-I ports to QoS value denoted by x1 */
	ldr	x9, [x0]
	mov	x10, x1
	orr	x9, x9, x10
	str	x9, [x0]

	ret
ENDPROC(ccn504_set_qos)

/*************************************************************************
 *
 * void ccn504_set_aux(CCI_AUX_CONTROL_BASE, Value);
 *
 * Initialize AUX control settings
 *
 *************************************************************************/
ENTRY(ccn504_set_aux)
	/*
	 * x0: CCI_AUX_CONTROL_BASE
	 * x1: Value
	 */

	ldr	x9, [x0]
	mov	x10, x1
	orr	x9, x9, x10
	str	x9, [x0]

	ret
ENDPROC(ccn504_set_aux)

