xref: /openbmc/linux/drivers/media/pci/cobalt/cobalt-omnitek.h (revision c13aca79ff3c4af5fd31a5b2743a90eba6e36a26)
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