xref: /rk3399_ARM-atf/drivers/arm/css/mhu/css_mhu_doorbell.c (revision 66a387d43786cf06f1b437327a7a5e475aa301c7)
1c411396eSAntonio Nino Diaz /*
2*f8931606SAditya Angadi  * Copyright (c) 2014-2020, ARM Limited and Contributors. All rights reserved.
3c411396eSAntonio Nino Diaz  *
4c411396eSAntonio Nino Diaz  * SPDX-License-Identifier: BSD-3-Clause
5c411396eSAntonio Nino Diaz  */
6c411396eSAntonio Nino Diaz 
7c411396eSAntonio Nino Diaz #include <platform_def.h>
8c411396eSAntonio Nino Diaz 
9c411396eSAntonio Nino Diaz #include <arch_helpers.h>
10c411396eSAntonio Nino Diaz #include <drivers/arm/css/css_mhu_doorbell.h>
11c411396eSAntonio Nino Diaz #include <drivers/arm/css/scmi.h>
12c411396eSAntonio Nino Diaz 
mhu_ring_doorbell(struct scmi_channel_plat_info * plat_info)13c411396eSAntonio Nino Diaz void mhu_ring_doorbell(struct scmi_channel_plat_info *plat_info)
14c411396eSAntonio Nino Diaz {
15c411396eSAntonio Nino Diaz 	MHU_RING_DOORBELL(plat_info->db_reg_addr,
16c411396eSAntonio Nino Diaz 			plat_info->db_modify_mask,
17c411396eSAntonio Nino Diaz 			plat_info->db_preserve_mask);
18c411396eSAntonio Nino Diaz }
19c411396eSAntonio Nino Diaz 
mhuv2_ring_doorbell(struct scmi_channel_plat_info * plat_info)20c411396eSAntonio Nino Diaz void mhuv2_ring_doorbell(struct scmi_channel_plat_info *plat_info)
21c411396eSAntonio Nino Diaz {
22*f8931606SAditya Angadi 	uintptr_t mhuv2_base = plat_info->db_reg_addr & MHU_V2_FRAME_BASE_MASK;
23*f8931606SAditya Angadi 
24c411396eSAntonio Nino Diaz 	/* wake receiver */
25*f8931606SAditya Angadi 	MHU_V2_ACCESS_REQUEST(mhuv2_base);
26c411396eSAntonio Nino Diaz 
27c411396eSAntonio Nino Diaz 	/* wait for receiver to acknowledge its ready */
28*f8931606SAditya Angadi 	while (MHU_V2_IS_ACCESS_READY(mhuv2_base) == 0)
29c411396eSAntonio Nino Diaz 		;
30c411396eSAntonio Nino Diaz 
31c411396eSAntonio Nino Diaz 	MHU_RING_DOORBELL(plat_info->db_reg_addr,
32c411396eSAntonio Nino Diaz 			plat_info->db_modify_mask,
33c411396eSAntonio Nino Diaz 			plat_info->db_preserve_mask);
34c411396eSAntonio Nino Diaz 
35c411396eSAntonio Nino Diaz 	/* clear the access request for the receiver */
36*f8931606SAditya Angadi 	MHU_V2_CLEAR_REQUEST(mhuv2_base);
37c411396eSAntonio Nino Diaz }
38