xref: /OK3568_Linux_fs/kernel/drivers/thunderbolt/dma_port.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Thunderbolt DMA configuration based mailbox support
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * Copyright (C) 2017, Intel Corporation
6*4882a593Smuzhiyun  * Authors: Michael Jamet <michael.jamet@intel.com>
7*4882a593Smuzhiyun  *          Mika Westerberg <mika.westerberg@linux.intel.com>
8*4882a593Smuzhiyun  */
9*4882a593Smuzhiyun 
10*4882a593Smuzhiyun #ifndef DMA_PORT_H_
11*4882a593Smuzhiyun #define DMA_PORT_H_
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun #include "tb.h"
14*4882a593Smuzhiyun 
15*4882a593Smuzhiyun struct tb_switch;
16*4882a593Smuzhiyun struct tb_dma_port;
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun #define DMA_PORT_CSS_ADDRESS		0x3fffff
19*4882a593Smuzhiyun #define DMA_PORT_CSS_MAX_SIZE		SZ_128
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun struct tb_dma_port *dma_port_alloc(struct tb_switch *sw);
22*4882a593Smuzhiyun void dma_port_free(struct tb_dma_port *dma);
23*4882a593Smuzhiyun int dma_port_flash_read(struct tb_dma_port *dma, unsigned int address,
24*4882a593Smuzhiyun 			void *buf, size_t size);
25*4882a593Smuzhiyun int dma_port_flash_update_auth(struct tb_dma_port *dma);
26*4882a593Smuzhiyun int dma_port_flash_update_auth_status(struct tb_dma_port *dma, u32 *status);
27*4882a593Smuzhiyun int dma_port_flash_write(struct tb_dma_port *dma, unsigned int address,
28*4882a593Smuzhiyun 			 const void *buf, size_t size);
29*4882a593Smuzhiyun int dma_port_power_cycle(struct tb_dma_port *dma);
30*4882a593Smuzhiyun 
31*4882a593Smuzhiyun #endif
32