blob: 885874272f5a8431ac11d171cefbbb7e65ce3d58 [file] [log] [blame]
Samarth Parikh59cfa132017-11-23 14:23:21 +05301/*
Paul Beesley1fbc97b2019-01-11 18:26:51 +00002 * Copyright (c) 2014-2019, ARM Limited and Contributors. All rights reserved.
Samarth Parikh59cfa132017-11-23 14:23:21 +05303 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
Samarth Parikh59cfa132017-11-23 14:23:21 +05307#include <platform_def.h>
Antonio Nino Diaze0f90632018-12-14 00:18:21 +00008
9#include <arch_helpers.h>
Antonio Nino Diaz1b0c6f12019-01-23 21:08:43 +000010#include <drivers/arm/css/css_mhu_doorbell.h>
Antonio Nino Diazc30db5b2019-01-23 20:37:32 +000011#include <drivers/arm/css/scmi.h>
Antonio Nino Diaze0f90632018-12-14 00:18:21 +000012
Roberto Vargas85664f52018-02-12 12:36:17 +000013void mhu_ring_doorbell(struct scmi_channel_plat_info *plat_info)
Samarth Parikh59cfa132017-11-23 14:23:21 +053014{
15 MHU_RING_DOORBELL(plat_info->db_reg_addr,
16 plat_info->db_modify_mask,
17 plat_info->db_preserve_mask);
18 return;
19}
20
Roberto Vargas85664f52018-02-12 12:36:17 +000021void mhuv2_ring_doorbell(struct scmi_channel_plat_info *plat_info)
Samarth Parikh59cfa132017-11-23 14:23:21 +053022{
23 /* wake receiver */
24 MHU_V2_ACCESS_REQUEST(MHUV2_BASE_ADDR);
25
26 /* wait for receiver to acknowledge its ready */
27 while (MHU_V2_IS_ACCESS_READY(MHUV2_BASE_ADDR) == 0)
28 ;
29
30 MHU_RING_DOORBELL(plat_info->db_reg_addr,
31 plat_info->db_modify_mask,
32 plat_info->db_preserve_mask);
33
Paul Beesley1fbc97b2019-01-11 18:26:51 +000034 /* clear the access request for the receiver */
Samarth Parikh59cfa132017-11-23 14:23:21 +053035 MHU_V2_CLEAR_REQUEST(MHUV2_BASE_ADDR);
36
37 return;
38}