1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Omnitek Scatter-Gather DMA Controller 4 * 5 * Copyright 2012-2015 Cisco Systems, Inc. and/or its affiliates. 6 * All rights reserved. 7 */ 8 9 #ifndef COBALT_OMNITEK_H 10 #define COBALT_OMNITEK_H 11 12 #include <linux/scatterlist.h> 13 #include "cobalt-driver.h" 14 15 struct sg_dma_descriptor { 16 u32 pci_l; 17 u32 pci_h; 18 19 u32 local; 20 u32 reserved0; 21 22 u32 next_l; 23 u32 next_h; 24 25 u32 bytes; 26 u32 reserved1; 27 }; 28 29 int omni_sg_dma_init(struct cobalt *cobalt); 30 void omni_sg_dma_abort_channel(struct cobalt_stream *s); 31 void omni_sg_dma_start(struct cobalt_stream *s, struct sg_dma_desc_info *desc); 32 bool is_dma_done(struct cobalt_stream *s); 33 34 int descriptor_list_create(struct cobalt *cobalt, 35 struct scatterlist *scatter_list, bool to_pci, unsigned sglen, 36 unsigned size, unsigned width, unsigned stride, 37 struct sg_dma_desc_info *desc); 38 39 void descriptor_list_chain(struct sg_dma_desc_info *this, 40 struct sg_dma_desc_info *next); 41 void descriptor_list_loopback(struct sg_dma_desc_info *desc); 42 void descriptor_list_end_of_chain(struct sg_dma_desc_info *desc); 43 44 void *descriptor_list_allocate(struct sg_dma_desc_info *desc, size_t bytes); 45 void descriptor_list_free(struct sg_dma_desc_info *desc); 46 47 void descriptor_list_interrupt_enable(struct sg_dma_desc_info *desc); 48 void descriptor_list_interrupt_disable(struct sg_dma_desc_info *desc); 49 50 #endif 51