From 2f7c68cb55ecb7331f2381deb497c27155f32faf Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Wed, 03 Jan 2024 09:43:39 +0000 Subject: [PATCH] update kernel to 5.10.198 --- kernel/drivers/pci/controller/rockchip-pcie-dma.h | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 53 insertions(+), 0 deletions(-) diff --git a/kernel/drivers/pci/controller/rockchip-pcie-dma.h b/kernel/drivers/pci/controller/rockchip-pcie-dma.h index e9da2d0..f06222e 100644 --- a/kernel/drivers/pci/controller/rockchip-pcie-dma.h +++ b/kernel/drivers/pci/controller/rockchip-pcie-dma.h @@ -20,9 +20,29 @@ #define PCIE_DMA_DATA_FREE_ACK_TABLE_OFFSET 0x10 #define PCIE_DMA_DATA_READ_REMOTE_TABLE_OFFSET 0x18 +/* DMA linked list register filed */ +#define PCIE_DWC_DMA_CB BIT(0) +#define PCIE_DWC_DMA_TCB BIT(1) +#define PCIE_DWC_DMA_LLP BIT(2) +#define PCIE_DWC_DMA_LIE BIT(3) +#define PCIE_DWC_DMA_RIE BIT(4) +#define PCIE_DWC_DMA_CCS BIT(8) +#define PCIE_DWC_DMA_LLE BIT(9) + +#define SET_LL_32(ll, value) \ + writel(value, ll) + +#define SET_LL_64(ll, value) \ + writeq(value, ll) + enum dma_dir { DMA_FROM_BUS, DMA_TO_BUS, +}; + +enum dma_mode { + RK_PCIE_DMA_BLOCK, + RK_PCIE_DMA_LL, }; /** @@ -155,7 +175,39 @@ phys_addr_t local; phys_addr_t bus; size_t buf_size; + u32 dma_mode; }; + +struct rk_edma_lli { + u32 control; + u32 transfer_size; + union { + u64 reg; + struct { + u32 lsb; + u32 msb; + }; + } sar; + union { + u64 reg; + struct { + u32 lsb; + u32 msb; + }; + } dar; +} __packed; + +struct rk_edma_llp { + u32 control; + u32 reserved; + union { + u64 reg; + struct { + u32 lsb; + u32 msb; + }; + } llp; +} __packed; struct dma_trx_obj { struct device *dev; @@ -192,6 +244,7 @@ void (*config_dma_func)(struct dma_table *table); int (*get_dma_status)(struct dma_trx_obj *obj, u8 chn, enum dma_dir dir); int (*cb)(struct dma_trx_obj *obj, u32 chn, enum dma_dir dir); + void (*dma_debug)(struct dma_trx_obj *obj, struct dma_table *table); ktime_t begin; ktime_t end; u64 cache_time_total; -- Gitblit v1.6.2