/* * Copyright 2021-2024 NXP * * SPDX-License-Identifier: BSD-3-Clause */ #include #include #include #include #include #define SMT_BUFFER_BASE 0x2201f000 #define SMT_BUFFER0_BASE SMT_BUFFER_BASE #define SMT_BUFFER1_BASE (SMT_BUFFER_BASE + 0x200) static struct scmi_msg_channel scmi_channel[] = { [0] = { .shm_addr = SMT_BUFFER0_BASE, .shm_size = SMT_BUF_SLOT_SIZE, }, }; struct scmi_msg_channel *plat_scmi_get_channel(unsigned int agent_id) { assert(agent_id < ARRAY_SIZE(scmi_channel)); return &scmi_channel[agent_id]; } static const char vendor[] = "NXP"; static const char sub_vendor[] = ""; const char *plat_scmi_vendor_name(void) { return vendor; } const char *plat_scmi_sub_vendor_name(void) { return sub_vendor; } /* Currently supporting Clocks and Reset Domains */ static const uint8_t plat_protocol_list[] = { SCMI_PROTOCOL_ID_POWER_DOMAIN, SCMI_PROTOCOL_ID_SENSOR, 0U /* Null termination */ }; size_t plat_scmi_protocol_count(void) { return ARRAY_SIZE(plat_protocol_list) - 1U; } const uint8_t *plat_scmi_protocol_list(unsigned int agent_id __unused) { return plat_protocol_list; } void imx8ulp_init_scmi_server(void) { size_t i; for (i = 0U; i < ARRAY_SIZE(scmi_channel); i++) { scmi_smt_init_agent_channel(&scmi_channel[i]); } }