~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/sh_dma.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0-only */
  2 /*
  3  * Header for the new SH dmaengine driver
  4  *
  5  * Copyright (C) 2010 Guennadi Liakhovetski <g.liakhovetski@gmx.de>
  6  */
  7 #ifndef SH_DMA_H
  8 #define SH_DMA_H
  9 
 10 #include <linux/dmaengine.h>
 11 #include <linux/list.h>
 12 #include <linux/shdma-base.h>
 13 #include <linux/types.h>
 14 
 15 struct device;
 16 
 17 /* Used by slave DMA clients to request DMA to/from a specific peripheral */
 18 struct sh_dmae_slave {
 19         struct shdma_slave              shdma_slave;    /* Set by the platform */
 20 };
 21 
 22 /*
 23  * Supplied by platforms to specify, how a DMA channel has to be configured for
 24  * a certain peripheral
 25  */
 26 struct sh_dmae_slave_config {
 27         int             slave_id;
 28         dma_addr_t      addr;
 29         u32             chcr;
 30         char            mid_rid;
 31 };
 32 
 33 /**
 34  * struct sh_dmae_channel - DMAC channel platform data
 35  * @offset:             register offset within the main IOMEM resource
 36  * @dmars:              channel DMARS register offset
 37  * @chclr_offset:       channel CHCLR register offset
 38  * @dmars_bit:          channel DMARS field offset within the register
 39  * @chclr_bit:          bit position, to be set to reset the channel
 40  */
 41 struct sh_dmae_channel {
 42         unsigned int    offset;
 43         unsigned int    dmars;
 44         unsigned int    chclr_offset;
 45         unsigned char   dmars_bit;
 46         unsigned char   chclr_bit;
 47 };
 48 
 49 /**
 50  * struct sh_dmae_pdata - DMAC platform data
 51  * @slave:              array of slaves
 52  * @slave_num:          number of slaves in the above array
 53  * @channel:            array of DMA channels
 54  * @channel_num:        number of channels in the above array
 55  * @ts_low_shift:       shift of the low part of the TS field
 56  * @ts_low_mask:        low TS field mask
 57  * @ts_high_shift:      additional shift of the high part of the TS field
 58  * @ts_high_mask:       high TS field mask
 59  * @ts_shift:           array of Transfer Size shifts, indexed by TS value
 60  * @ts_shift_num:       number of shifts in the above array
 61  * @dmaor_init:         DMAOR initialisation value
 62  * @chcr_offset:        CHCR address offset
 63  * @chcr_ie_bit:        CHCR Interrupt Enable bit
 64  * @dmaor_is_32bit:     DMAOR is a 32-bit register
 65  * @needs_tend_set:     the TEND register has to be set
 66  * @no_dmars:           DMAC has no DMARS registers
 67  * @chclr_present:      DMAC has one or several CHCLR registers
 68  * @chclr_bitwise:      channel CHCLR registers are bitwise
 69  * @slave_only:         DMAC cannot be used for MEMCPY
 70  */
 71 struct sh_dmae_pdata {
 72         const struct sh_dmae_slave_config *slave;
 73         int slave_num;
 74         const struct sh_dmae_channel *channel;
 75         int channel_num;
 76         unsigned int ts_low_shift;
 77         unsigned int ts_low_mask;
 78         unsigned int ts_high_shift;
 79         unsigned int ts_high_mask;
 80         const unsigned int *ts_shift;
 81         int ts_shift_num;
 82         u16 dmaor_init;
 83         unsigned int chcr_offset;
 84         u32 chcr_ie_bit;
 85 
 86         unsigned int dmaor_is_32bit:1;
 87         unsigned int needs_tend_set:1;
 88         unsigned int no_dmars:1;
 89         unsigned int chclr_present:1;
 90         unsigned int chclr_bitwise:1;
 91         unsigned int slave_only:1;
 92 };
 93 
 94 /* DMAOR definitions */
 95 #define DMAOR_AE        0x00000004      /* Address Error Flag */
 96 #define DMAOR_NMIF      0x00000002
 97 #define DMAOR_DME       0x00000001      /* DMA Master Enable */
 98 
 99 /* Definitions for the SuperH DMAC */
100 #define DM_INC  0x00004000      /* Destination addresses are incremented */
101 #define DM_DEC  0x00008000      /* Destination addresses are decremented */
102 #define DM_FIX  0x0000c000      /* Destination address is fixed */
103 #define SM_INC  0x00001000      /* Source addresses are incremented */
104 #define SM_DEC  0x00002000      /* Source addresses are decremented */
105 #define SM_FIX  0x00003000      /* Source address is fixed */
106 #define RS_AUTO 0x00000400      /* Auto Request */
107 #define RS_ERS  0x00000800      /* DMA extended resource selector */
108 #define CHCR_DE 0x00000001      /* DMA Enable */
109 #define CHCR_TE 0x00000002      /* Transfer End Flag */
110 #define CHCR_IE 0x00000004      /* Interrupt Enable */
111 
112 #endif
113 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php