2031845713
"struct dw_edma_chip" contains an internal structure "struct dw_edma" that is used by the eDMA core internally and should not be touched by the eDMA controller drivers themselves. But currently, the eDMA controller drivers like "dw-edma-pci" allocate and populate this internal structure before passing it on to the eDMA core. The eDMA core further populates the structure and uses it. This is wrong! Hence, move all the "struct dw_edma" specifics from controller drivers to the eDMA core. Link: https://lore.kernel.org/r/20220524152159.2370739-3-Frank.Li@nxp.com Tested-by: Serge Semin <fancer.lancer@gmail.com> Tested-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> Signed-off-by: Frank Li <Frank.Li@nxp.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Serge Semin <fancer.lancer@gmail.com> Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> Acked-By: Vinod Koul <vkoul@kernel.org>
29 lines
1.1 KiB
C
29 lines
1.1 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Copyright (c) 2018-2019 Synopsys, Inc. and/or its affiliates.
|
|
* Synopsys DesignWare eDMA v0 core
|
|
*
|
|
* Author: Gustavo Pimentel <gustavo.pimentel@synopsys.com>
|
|
*/
|
|
|
|
#ifndef _DW_EDMA_V0_CORE_H
|
|
#define _DW_EDMA_V0_CORE_H
|
|
|
|
#include <linux/dma/edma.h>
|
|
|
|
/* eDMA management callbacks */
|
|
void dw_edma_v0_core_off(struct dw_edma *chan);
|
|
u16 dw_edma_v0_core_ch_count(struct dw_edma *chan, enum dw_edma_dir dir);
|
|
enum dma_status dw_edma_v0_core_ch_status(struct dw_edma_chan *chan);
|
|
void dw_edma_v0_core_clear_done_int(struct dw_edma_chan *chan);
|
|
void dw_edma_v0_core_clear_abort_int(struct dw_edma_chan *chan);
|
|
u32 dw_edma_v0_core_status_done_int(struct dw_edma *chan, enum dw_edma_dir dir);
|
|
u32 dw_edma_v0_core_status_abort_int(struct dw_edma *chan, enum dw_edma_dir dir);
|
|
void dw_edma_v0_core_start(struct dw_edma_chunk *chunk, bool first);
|
|
int dw_edma_v0_core_device_config(struct dw_edma_chan *chan);
|
|
/* eDMA debug fs callbacks */
|
|
void dw_edma_v0_core_debugfs_on(struct dw_edma *dw);
|
|
void dw_edma_v0_core_debugfs_off(struct dw_edma *dw);
|
|
|
|
#endif /* _DW_EDMA_V0_CORE_H */
|