intel_mid_dma.h 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /*
  2. * intel_mid_dma.h - Intel MID DMA Drivers
  3. *
  4. * Copyright (C) 2008-10 Intel Corp
  5. * Author: Vinod Koul <vinod.koul@intel.com>
  6. * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  7. *
  8. * This program is free software; you can redistribute it and/or modify
  9. * it under the terms of the GNU General Public License as published by
  10. * the Free Software Foundation; version 2 of the License.
  11. *
  12. * This program is distributed in the hope that it will be useful, but
  13. * WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  15. * General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU General Public License along
  18. * with this program; if not, write to the Free Software Foundation, Inc.,
  19. * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
  20. *
  21. * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  22. *
  23. *
  24. */
  25. #ifndef __INTEL_MID_DMA_H__
  26. #define __INTEL_MID_DMA_H__
  27. #include <linux/dmaengine.h>
  28. /*DMA transaction width, src and dstn width would be same
  29. The DMA length must be width aligned,
  30. for 32 bit width the length must be 32 bit (4bytes) aligned only*/
  31. enum intel_mid_dma_width {
  32. LNW_DMA_WIDTH_8BIT = 0x0,
  33. LNW_DMA_WIDTH_16BIT = 0x1,
  34. LNW_DMA_WIDTH_32BIT = 0x2,
  35. };
  36. /*DMA mode configurations*/
  37. enum intel_mid_dma_mode {
  38. LNW_DMA_PER_TO_MEM = 0, /*periphral to memory configuration*/
  39. LNW_DMA_MEM_TO_PER, /*memory to periphral configuration*/
  40. LNW_DMA_MEM_TO_MEM, /*mem to mem confg (testing only)*/
  41. };
  42. /*DMA handshaking*/
  43. enum intel_mid_dma_hs_mode {
  44. LNW_DMA_HW_HS = 0, /*HW Handshaking only*/
  45. LNW_DMA_SW_HS = 1, /*SW Handshaking not recommended*/
  46. };
  47. /*Burst size configuration*/
  48. enum intel_mid_dma_msize {
  49. LNW_DMA_MSIZE_1 = 0x0,
  50. LNW_DMA_MSIZE_4 = 0x1,
  51. LNW_DMA_MSIZE_8 = 0x2,
  52. LNW_DMA_MSIZE_16 = 0x3,
  53. LNW_DMA_MSIZE_32 = 0x4,
  54. LNW_DMA_MSIZE_64 = 0x5,
  55. };
  56. /**
  57. * struct intel_mid_dma_slave - DMA slave structure
  58. *
  59. * @dirn: DMA trf direction
  60. * @src_width: tx register width
  61. * @dst_width: rx register width
  62. * @hs_mode: HW/SW handshaking mode
  63. * @cfg_mode: DMA data transfer mode (per-per/mem-per/mem-mem)
  64. * @src_msize: Source DMA burst size
  65. * @dst_msize: Dst DMA burst size
  66. * @device_instance: DMA peripheral device instance, we can have multiple
  67. * peripheral device connected to single DMAC
  68. */
  69. struct intel_mid_dma_slave {
  70. enum dma_data_direction dirn;
  71. enum intel_mid_dma_width src_width; /*width of DMA src txn*/
  72. enum intel_mid_dma_width dst_width; /*width of DMA dst txn*/
  73. enum intel_mid_dma_hs_mode hs_mode; /*handshaking*/
  74. enum intel_mid_dma_mode cfg_mode; /*mode configuration*/
  75. enum intel_mid_dma_msize src_msize; /*size if src burst*/
  76. enum intel_mid_dma_msize dst_msize; /*size of dst burst*/
  77. unsigned int device_instance; /*0, 1 for periphral instance*/
  78. };
  79. #endif /*__INTEL_MID_DMA_H__*/