home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / include / asm-mn10300 / dma.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  3.1 KB  |  119 lines

  1. /* MN10300 ISA DMA handlers and definitions
  2.  *
  3.  * Copyright (C) 2007 Matsushita Electric Industrial Co., Ltd.
  4.  * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved.
  5.  *
  6.  * This program is free software; you can redistribute it and/or
  7.  * modify it under the terms of the GNU General Public Licence
  8.  * as published by the Free Software Foundation; either version
  9.  * 2 of the Licence, or (at your option) any later version.
  10.  */
  11. #ifndef _ASM_DMA_H
  12. #define _ASM_DMA_H
  13.  
  14. #include <asm/system.h>
  15. #include <linux/spinlock.h>
  16. #include <asm/io.h>
  17. #include <linux/delay.h>
  18.  
  19. #undef MAX_DMA_CHANNELS        /* switch off linux/kernel/dma.c */
  20. #define MAX_DMA_ADDRESS        0xbfffffff
  21.  
  22. extern spinlock_t dma_spin_lock;
  23.  
  24. static inline unsigned long claim_dma_lock(void)
  25. {
  26.     unsigned long flags;
  27.     spin_lock_irqsave(&dma_spin_lock, flags);
  28.     return flags;
  29. }
  30.  
  31. static inline void release_dma_lock(unsigned long flags)
  32. {
  33.     spin_unlock_irqrestore(&dma_spin_lock, flags);
  34. }
  35.  
  36. /* enable/disable a specific DMA channel */
  37. static inline void enable_dma(unsigned int dmanr)
  38. {
  39. }
  40.  
  41. static inline void disable_dma(unsigned int dmanr)
  42. {
  43. }
  44.  
  45. /* Clear the 'DMA Pointer Flip Flop'.
  46.  * Write 0 for LSB/MSB, 1 for MSB/LSB access.
  47.  * Use this once to initialize the FF to a known state.
  48.  * After that, keep track of it. :-)
  49.  * --- In order to do that, the DMA routines below should ---
  50.  * --- only be used while holding the DMA lock ! ---
  51.  */
  52. static inline void clear_dma_ff(unsigned int dmanr)
  53. {
  54. }
  55.  
  56. /* set mode (above) for a specific DMA channel */
  57. static inline void set_dma_mode(unsigned int dmanr, char mode)
  58. {
  59. }
  60.  
  61. /* Set only the page register bits of the transfer address.
  62.  * This is used for successive transfers when we know the contents of
  63.  * the lower 16 bits of the DMA current address register, but a 64k boundary
  64.  * may have been crossed.
  65.  */
  66. static inline void set_dma_page(unsigned int dmanr, char pagenr)
  67. {
  68. }
  69.  
  70.  
  71. /* Set transfer address & page bits for specific DMA channel.
  72.  * Assumes dma flipflop is clear.
  73.  */
  74. static inline void set_dma_addr(unsigned int dmanr, unsigned int a)
  75. {
  76. }
  77.  
  78.  
  79. /* Set transfer size (max 64k for DMA1..3, 128k for DMA5..7) for
  80.  * a specific DMA channel.
  81.  * You must ensure the parameters are valid.
  82.  * NOTE: from a manual: "the number of transfers is one more
  83.  * than the initial word count"! This is taken into account.
  84.  * Assumes dma flip-flop is clear.
  85.  * NOTE 2: "count" represents _bytes_ and must be even for channels 5-7.
  86.  */
  87. static inline void set_dma_count(unsigned int dmanr, unsigned int count)
  88. {
  89. }
  90.  
  91.  
  92. /* Get DMA residue count. After a DMA transfer, this
  93.  * should return zero. Reading this while a DMA transfer is
  94.  * still in progress will return unpredictable results.
  95.  * If called before the channel has been used, it may return 1.
  96.  * Otherwise, it returns the number of _bytes_ left to transfer.
  97.  *
  98.  * Assumes DMA flip-flop is clear.
  99.  */
  100. static inline int get_dma_residue(unsigned int dmanr)
  101. {
  102.     return 0;
  103. }
  104.  
  105.  
  106. /* These are in kernel/dma.c: */
  107. extern int request_dma(unsigned int dmanr, const char *device_id);
  108. extern void free_dma(unsigned int dmanr);
  109.  
  110. /* From PCI */
  111.  
  112. #ifdef CONFIG_PCI
  113. extern int isa_dma_bridge_buggy;
  114. #else
  115. #define isa_dma_bridge_buggy     (0)
  116. #endif
  117.  
  118. #endif /* _ASM_DMA_H */
  119.