| /* |
| * Copyright (c) 2018, NXP |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include <zephyr/zephyr.h> |
| #include <zephyr/sys/printk.h> |
| #include <zephyr/device.h> |
| #include <zephyr/drivers/ipm.h> |
| |
| static void ipm_callback(const struct device *dev, void *context, |
| uint32_t id, volatile void *data) |
| { |
| int i; |
| int status; |
| uint32_t *data32 = (uint32_t *)data; |
| |
| printk("%s: id = %u, data = 0x", __func__, id); |
| for (i = 0; i < (CONFIG_IPM_IMX_MAX_DATA_SIZE / 4); i++) { |
| printk("%08x", data32[i]); |
| } |
| printk("\n"); |
| |
| status = ipm_send(dev, 1, id, (const void *)data, |
| CONFIG_IPM_IMX_MAX_DATA_SIZE); |
| if (status) { |
| printk("ipm_send() failed: %d\n", status); |
| } |
| } |
| |
| void main(void) |
| { |
| const struct device *ipm; |
| |
| ipm = DEVICE_DT_GET(DT_NODELABEL(mub)); |
| if (!device_is_ready(ipm)) { |
| while (1) { |
| } |
| } |
| ipm_register_callback(ipm, ipm_callback, NULL); |
| ipm_set_enabled(ipm, 1); |
| printk("IPM initialized, data size = %d\n", |
| CONFIG_IPM_IMX_MAX_DATA_SIZE); |
| |
| while (1) { |
| } |
| } |