// SPDX-License-Identifier: GPL-2.0 /* * Mailbox manager abstracts the mailbox interfaces of user commands. * * Copyright (C) 2022 Google LLC */ #include "gxp-mailbox-driver.h" #include "gxp-mailbox-manager.h" #include "gxp-mailbox.h" struct gxp_mailbox_manager *gxp_mailbox_create_manager(struct gxp_dev *gxp, uint num_cores) { struct gxp_mailbox_manager *mgr; mgr = devm_kzalloc(gxp->dev, sizeof(*mgr), GFP_KERNEL); if (!mgr) return ERR_PTR(-ENOMEM); mgr->gxp = gxp; mgr->num_cores = num_cores; mgr->get_mailbox_csr_base = gxp_mailbox_get_csr_base; mgr->get_mailbox_data_base = gxp_mailbox_get_data_base; mgr->mailboxes = devm_kcalloc(gxp->dev, mgr->num_cores, sizeof(*mgr->mailboxes), GFP_KERNEL); if (!mgr->mailboxes) return ERR_PTR(-ENOMEM); return mgr; }