FILE
ti_k3_common.h
File preview with syntax highlighting.
linux-6.19.14/drivers/remoteproc/ti_k3_common.h
1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* 3 * TI K3 Remote Processor(s) driver common code 4 * 5 * Refactored out of ti_k3_r5_remoteproc.c, ti_k3_dsp_remoteproc.c and 6 * ti_k3_m4_remoteproc.c. 7 * 8 * ti_k3_r5_remoteproc.c: 9 * Copyright (C) 2017-2022 Texas Instruments Incorporated - https://www.ti.com/ 10 * Suman Anna <s-anna@ti.com> 11 * 12 * ti_k3_dsp_remoteproc.c: 13 * Copyright (C) 2018-2022 Texas Instruments Incorporated - https://www.ti.com/ 14 * Suman Anna <s-anna@ti.com> 15 * 16 * ti_k3_m4_remoteproc.c: 17 * Copyright (C) 2021-2024 Texas Instruments Incorporated - https://www.ti.com/ 18 * Hari Nagalla <hnagalla@ti.com> 19 */ 20 21#ifndef REMOTEPROC_TI_K3_COMMON_H 22#define REMOTEPROC_TI_K3_COMMON_H 23 24#define KEYSTONE_RPROC_LOCAL_ADDRESS_MASK (SZ_16M - 1) 25 26/** 27 * struct k3_rproc_mem - internal memory structure 28 * @cpu_addr: MPU virtual address of the memory region 29 * @bus_addr: Bus address used to access the memory region 30 * @dev_addr: Device address of the memory region from remote processor view 31 * @size: Size of the memory region 32 */ 33struct k3_rproc_mem { 34 void __iomem *cpu_addr; 35 phys_addr_t bus_addr; 36 u32 dev_addr; 37 size_t size; 38}; 39 40/** 41 * struct k3_rproc_mem_data - memory definitions for a remote processor 42 * @name: name for this memory entry 43 * @dev_addr: device address for the memory entry 44 */ 45struct k3_rproc_mem_data { 46 const char *name; 47 const u32 dev_addr; 48}; 49 50/** 51 * struct k3_rproc_dev_data - device data structure for a remote processor 52 * @mems: pointer to memory definitions for a remote processor 53 * @num_mems: number of memory regions in @mems 54 * @boot_align_addr: boot vector address alignment granularity 55 * @uses_lreset: flag to denote the need for local reset management 56 */ 57struct k3_rproc_dev_data { 58 const struct k3_rproc_mem_data *mems; 59 u32 num_mems; 60 u32 boot_align_addr; 61 bool uses_lreset; 62}; 63 64/** 65 * struct k3_rproc - k3 remote processor driver structure 66 * @dev: cached device pointer 67 * @rproc: remoteproc device handle 68 * @mem: internal memory regions data 69 * @num_mems: number of internal memory regions 70 * @rmem: reserved memory regions data 71 * @num_rmems: number of reserved memory regions 72 * @reset: reset control handle 73 * @data: pointer to DSP-specific device data 74 * @tsp: TI-SCI processor control handle 75 * @ti_sci: TI-SCI handle 76 * @ti_sci_id: TI-SCI device identifier 77 * @mbox: mailbox channel handle 78 * @client: mailbox client to request the mailbox channel 79 * @priv: void pointer to carry any private data 80 */ 81struct k3_rproc { 82 struct device *dev; 83 struct rproc *rproc; 84 struct k3_rproc_mem *mem; 85 int num_mems; 86 struct k3_rproc_mem *rmem; 87 int num_rmems; 88 struct reset_control *reset; 89 const struct k3_rproc_dev_data *data; 90 struct ti_sci_proc *tsp; 91 const struct ti_sci_handle *ti_sci; 92 u32 ti_sci_id; 93 struct mbox_chan *mbox; 94 struct mbox_client client; 95 void *priv; 96}; 97 98void k3_rproc_mbox_callback(struct mbox_client *client, void *data); 99void k3_rproc_kick(struct rproc *rproc, int vqid); 100int k3_rproc_reset(struct k3_rproc *kproc); 101int k3_rproc_release(struct k3_rproc *kproc); 102int k3_rproc_request_mbox(struct rproc *rproc); 103int k3_rproc_prepare(struct rproc *rproc); 104int k3_rproc_unprepare(struct rproc *rproc); 105int k3_rproc_start(struct rproc *rproc); 106int k3_rproc_stop(struct rproc *rproc); 107int k3_rproc_attach(struct rproc *rproc); 108int k3_rproc_detach(struct rproc *rproc); 109struct resource_table *k3_get_loaded_rsc_table(struct rproc *rproc, 110 size_t *rsc_table_sz); 111void *k3_rproc_da_to_va(struct rproc *rproc, u64 da, size_t len, 112 bool *is_iomem); 113int k3_rproc_of_get_memories(struct platform_device *pdev, 114 struct k3_rproc *kproc); 115void k3_mem_release(void *data); 116int k3_reserved_mem_init(struct k3_rproc *kproc); 117void k3_release_tsp(void *data); 118#endif /* REMOTEPROC_TI_K3_COMMON_H */
~/
Read-only file preview.