// SPDX-License-Identifier: GPL-2.0-only/* * TI K3 R5F (MCU) Remote Processor driver * * Copyright (C) 2017-2020 Texas Instruments Incorporated - https://www.ti.com/ * Suman Anna <s-anna@ti.com> */#include<linux/dma-mapping.h>#include<linux/err.h>#include<linux/interrupt.h>#include<linux/kernel.h>#include<linux/mailbox_client.h>#include<linux/module.h>#include<linux/of_address.h>#include<linux/of_device.h>#include<linux/of_reserved_mem.h>#include<linux/omap-mailbox.h>#include<linux/platform_device.h>#include<linux/pm_runtime.h>#include<linux/remoteproc.h>#include<linux/reset.h>#include<linux/slab.h>#include"omap_remoteproc.h"#include"remoteproc_internal.h"#include"ti_sci_proc.h"/* This address can either be for ATCM or BTCM with the other at address 0x0 */#define K3_R5_TCM_DEV_ADDR 0x41010000/* R5 TI-SCI Processor Configuration Flags */#define PROC_BOOT_CFG_FLAG_R5_DBG_EN 0x00000001#define PROC_BOOT_CFG_FLAG_R5_DBG_NIDEN 0x00000002#define PROC_BOOT_CFG_FLAG_R5_LOCKSTEP 0x00000100#define PROC_BOOT_CFG_FLAG_R5_TEINIT 0x00000200#define PROC_BOOT_CFG_FLAG_R5_NMFI_EN 0x00000400#define PROC_BOOT_CFG_FLAG_R5_TCM_RSTBASE 0x00000800#define PROC_BOOT_CFG_FLAG_R5_BTCM_EN 0x00001000#define PROC_BOOT_CFG_FLAG_R5_ATCM_EN 0x00002000/* Available from J7200 SoCs onwards */#define PROC_BOOT_CFG_FLAG_R5_MEM_INIT_DIS 0x00004000/* R5 TI-SCI Processor Control Flags */#define PROC_BOOT_CTRL_FLAG_R5_CORE_HALT 0x00000001/* R5 TI-SCI Processor Status Flags */#define PROC_BOOT_STATUS_FLAG_R5_WFE 0x00000001#define PROC_BOOT_STATUS_FLAG_R5_WFI 0x00000002#define PROC_BOOT_STATUS_FLAG_R5_CLK_GATED 0x00000004#define PROC_BOOT_STATUS_FLAG_R5_LOCKSTEP_PERMITTED 0x00000100/** * struct k3_r5_mem - internal memory structure * @cpu_addr: MPU virtual address of the memory region * @bus_addr: Bus address used to access the memory region * @dev_addr: Device address from remoteproc view * @size: Size of the memory region */structk3_r5_mem{void__iomem*cpu_addr;phys_addr_tbus_addr;u32dev_addr;size_tsize;};enumcluster_mod