2019-01-07 13:07:41 +02:00
/* SPDX-License-Identifier: GPL-2.0 */
2013-06-05 15:26:45 +03:00
/*
* Driver for the Synopsys DesignWare DMA Controller
*
* Copyright ( C ) 2013 Intel Corporation
*/
2014-09-23 17:18:15 +03:00
# ifndef _DMA_DW_INTERNAL_H
# define _DMA_DW_INTERNAL_H
2014-09-23 17:18:11 +03:00
# include <linux/dma/dw.h>
2013-06-05 15:26:45 +03:00
# include "regs.h"
2019-01-07 13:07:38 +02:00
int do_dma_probe ( struct dw_dma_chip * chip ) ;
int do_dma_remove ( struct dw_dma_chip * chip ) ;
void do_dw_dma_on ( struct dw_dma * dw ) ;
void do_dw_dma_off ( struct dw_dma * dw ) ;
int do_dw_dma_disable ( struct dw_dma_chip * chip ) ;
int do_dw_dma_enable ( struct dw_dma_chip * chip ) ;
2013-06-05 15:26:45 +03:00
2014-08-19 20:29:16 +03:00
extern bool dw_dma_filter ( struct dma_chan * chan , void * param ) ;
2013-06-05 15:26:45 +03:00
2019-08-20 16:15:45 +03:00
# ifdef CONFIG_ACPI
void dw_dma_acpi_controller_register ( struct dw_dma * dw ) ;
void dw_dma_acpi_controller_free ( struct dw_dma * dw ) ;
# else /* !CONFIG_ACPI */
static inline void dw_dma_acpi_controller_register ( struct dw_dma * dw ) { }
static inline void dw_dma_acpi_controller_free ( struct dw_dma * dw ) { }
# endif /* !CONFIG_ACPI */
2019-08-20 16:15:46 +03:00
struct platform_device ;
# ifdef CONFIG_OF
struct dw_dma_platform_data * dw_dma_parse_dt ( struct platform_device * pdev ) ;
void dw_dma_of_controller_register ( struct dw_dma * dw ) ;
void dw_dma_of_controller_free ( struct dw_dma * dw ) ;
# else
static inline struct dw_dma_platform_data * dw_dma_parse_dt ( struct platform_device * pdev )
{
return NULL ;
}
static inline void dw_dma_of_controller_register ( struct dw_dma * dw ) { }
static inline void dw_dma_of_controller_free ( struct dw_dma * dw ) { }
# endif
2019-08-20 16:15:39 +03:00
struct dw_dma_chip_pdata {
const struct dw_dma_platform_data * pdata ;
int ( * probe ) ( struct dw_dma_chip * chip ) ;
int ( * remove ) ( struct dw_dma_chip * chip ) ;
struct dw_dma_chip * chip ;
} ;
static __maybe_unused const struct dw_dma_chip_pdata dw_dma_chip_pdata = {
. probe = dw_dma_probe ,
. remove = dw_dma_remove ,
} ;
static const struct dw_dma_platform_data idma32_pdata = {
. nr_channels = 8 ,
. chan_allocation_order = CHAN_ALLOCATION_ASCENDING ,
. chan_priority = CHAN_PRIORITY_ASCENDING ,
. block_size = 131071 ,
. nr_masters = 1 ,
. data_width = { 4 } ,
. multi_block = { 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 } ,
} ;
static __maybe_unused const struct dw_dma_chip_pdata idma32_chip_pdata = {
. pdata = & idma32_pdata ,
. probe = idma32_dma_probe ,
. remove = idma32_dma_remove ,
} ;
2021-07-12 14:39:40 +03:00
static const struct dw_dma_platform_data xbar_pdata = {
. nr_channels = 8 ,
. chan_allocation_order = CHAN_ALLOCATION_ASCENDING ,
. chan_priority = CHAN_PRIORITY_ASCENDING ,
. block_size = 131071 ,
. nr_masters = 1 ,
. data_width = { 4 } ,
. quirks = DW_DMA_QUIRK_XBAR_PRESENT ,
} ;
static __maybe_unused const struct dw_dma_chip_pdata xbar_chip_pdata = {
. pdata = & xbar_pdata ,
. probe = idma32_dma_probe ,
. remove = idma32_dma_remove ,
} ;
2014-09-23 17:18:15 +03:00
# endif /* _DMA_DW_INTERNAL_H */