162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Thunderbolt DMA configuration based mailbox support
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright (C) 2017, Intel Corporation
662306a36Sopenharmony_ci * Authors: Michael Jamet <michael.jamet@intel.com>
762306a36Sopenharmony_ci *          Mika Westerberg <mika.westerberg@linux.intel.com>
862306a36Sopenharmony_ci */
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#ifndef DMA_PORT_H_
1162306a36Sopenharmony_ci#define DMA_PORT_H_
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#include "tb.h"
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_cistruct tb_switch;
1662306a36Sopenharmony_cistruct tb_dma_port;
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci#define DMA_PORT_CSS_ADDRESS		0x3fffff
1962306a36Sopenharmony_ci#define DMA_PORT_CSS_MAX_SIZE		SZ_128
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_cistruct tb_dma_port *dma_port_alloc(struct tb_switch *sw);
2262306a36Sopenharmony_civoid dma_port_free(struct tb_dma_port *dma);
2362306a36Sopenharmony_ciint dma_port_flash_read(struct tb_dma_port *dma, unsigned int address,
2462306a36Sopenharmony_ci			void *buf, size_t size);
2562306a36Sopenharmony_ciint dma_port_flash_update_auth(struct tb_dma_port *dma);
2662306a36Sopenharmony_ciint dma_port_flash_update_auth_status(struct tb_dma_port *dma, u32 *status);
2762306a36Sopenharmony_ciint dma_port_flash_write(struct tb_dma_port *dma, unsigned int address,
2862306a36Sopenharmony_ci			 const void *buf, size_t size);
2962306a36Sopenharmony_ciint dma_port_power_cycle(struct tb_dma_port *dma);
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci#endif
32