Blame view

kernel/linux-rt-4.4.41/include/linux/platform_data/dma-s3c24xx.h 1.34 KB
5113f6f70   김현기   kernel add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
  /*
   * S3C24XX DMA handling
   *
   * Copyright (c) 2013 Heiko Stuebner <heiko@sntech.de>
   *
   * This program is free software; you can redistribute it and/or modify it
   * under the terms of the GNU General Public License as published by the Free
   * Software Foundation; either version 2 of the License, or (at your option)
   * any later version.
   */
  
  /* Helper to encode the source selection constraints for early s3c socs. */
  #define S3C24XX_DMA_CHANREQ(src, chan)	((BIT(3) | src) << chan * 4)
  
  enum s3c24xx_dma_bus {
  	S3C24XX_DMA_APB,
  	S3C24XX_DMA_AHB,
  };
  
  /**
   * @bus: on which bus does the peripheral reside - AHB or APB.
   * @handshake: is a handshake with the peripheral necessary
   * @chansel: channel selection information, depending on variant; reqsel for
   *	     s3c2443 and later and channel-selection map for earlier SoCs
   *	     see CHANSEL doc in s3c2443-dma.c
   */
  struct s3c24xx_dma_channel {
  	enum s3c24xx_dma_bus bus;
  	bool handshake;
  	u16 chansel;
  };
  
  /**
   * struct s3c24xx_dma_platdata - platform specific settings
   * @num_phy_channels: number of physical channels
   * @channels: array of virtual channel descriptions
   * @num_channels: number of virtual channels
   */
  struct s3c24xx_dma_platdata {
  	int num_phy_channels;
  	struct s3c24xx_dma_channel *channels;
  	int num_channels;
  };
  
  struct dma_chan;
  bool s3c24xx_dma_filter(struct dma_chan *chan, void *param);