diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-09-10 16:37:36 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-09-10 16:37:36 -0400 |
| commit | ec5b103ecfde929004b691f29183255aeeadecd5 (patch) | |
| tree | 3b16d0654c074b5b36d06e56110c7218a8685655 /include/linux | |
| parent | d0048f0b91ee35ab940ec6cbdfdd238c55b12a14 (diff) | |
| parent | 5622ff1a4dd7dcb1c09953d8066a4e7c4c350b2d (diff) | |
Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma
Pull slave-dmaengine updates from Vinod Koul:
"This pull brings:
- Andy's DW driver updates
- Guennadi's sh driver updates
- Pl08x driver fixes from Tomasz & Alban
- Improvements to mmp_pdma by Daniel
- TI EDMA fixes by Joel
- New drivers:
- Hisilicon k3dma driver
- Renesas rcar dma driver
- New API for publishing slave driver capablities
- Various fixes across the subsystem by Andy, Jingoo, Sachin etc..."
* 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma: (94 commits)
dma: edma: Remove limits on number of slots
dma: edma: Leave linked to Null slot instead of DUMMY slot
dma: edma: Find missed events and issue them
ARM: edma: Add function to manually trigger an EDMA channel
dma: edma: Write out and handle MAX_NR_SG at a given time
dma: edma: Setup parameters to DMA MAX_NR_SG at a time
dmaengine: pl330: use dma_set_max_seg_size to set the sg limit
dmaengine: dma_slave_caps: remove sg entries
dma: replace devm_request_and_ioremap by devm_ioremap_resource
dma: ste_dma40: Fix potential null pointer dereference
dma: ste_dma40: Remove duplicate const
dma: imx-dma: Remove redundant NULL check
dma: dmagengine: fix function names in comments
dma: add driver for R-Car HPB-DMAC
dma: k3dma: use devm_ioremap_resource() instead of devm_request_and_ioremap()
dma: imx-sdma: Staticize sdma_driver_data structures
pch_dma: Add MODULE_DEVICE_TABLE
dmaengine: PL08x: Add cyclic transfer support
dmaengine: PL08x: Fix reading the byte count in cctl
dmaengine: PL08x: Add support for different maximum transfer size
...
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/amba/pl080.h | 1 | ||||
| -rw-r--r-- | include/linux/dma/mmp-pdma.h | 15 | ||||
| -rw-r--r-- | include/linux/dmaengine.h | 37 | ||||
| -rw-r--r-- | include/linux/fsl/mxs-dma.h | 20 | ||||
| -rw-r--r-- | include/linux/platform_data/dma-rcar-hpbdma.h | 103 | ||||
| -rw-r--r-- | include/linux/platform_data/edma.h | 2 | ||||
| -rw-r--r-- | include/linux/sh_dma.h | 55 | ||||
| -rw-r--r-- | include/linux/shdma-base.h | 3 |
8 files changed, 192 insertions, 44 deletions
diff --git a/include/linux/amba/pl080.h b/include/linux/amba/pl080.h index 3e7b62fbefbd..91b84a7f0539 100644 --- a/include/linux/amba/pl080.h +++ b/include/linux/amba/pl080.h | |||
| @@ -87,6 +87,7 @@ | |||
| 87 | #define PL080_CONTROL_SB_SIZE_MASK (0x7 << 12) | 87 | #define PL080_CONTROL_SB_SIZE_MASK (0x7 << 12) |
| 88 | #define PL080_CONTROL_SB_SIZE_SHIFT (12) | 88 | #define PL080_CONTROL_SB_SIZE_SHIFT (12) |
| 89 | #define PL080_CONTROL_TRANSFER_SIZE_MASK (0xfff << 0) | 89 | #define PL080_CONTROL_TRANSFER_SIZE_MASK (0xfff << 0) |
| 90 | #define PL080S_CONTROL_TRANSFER_SIZE_MASK (0x1ffffff << 0) | ||
| 90 | #define PL080_CONTROL_TRANSFER_SIZE_SHIFT (0) | 91 | #define PL080_CONTROL_TRANSFER_SIZE_SHIFT (0) |
| 91 | 92 | ||
| 92 | #define PL080_BSIZE_1 (0x0) | 93 | #define PL080_BSIZE_1 (0x0) |
diff --git a/include/linux/dma/mmp-pdma.h b/include/linux/dma/mmp-pdma.h new file mode 100644 index 000000000000..2dc9b2bc18fc --- /dev/null +++ b/include/linux/dma/mmp-pdma.h | |||
| @@ -0,0 +1,15 @@ | |||
| 1 | #ifndef _MMP_PDMA_H_ | ||
| 2 | #define _MMP_PDMA_H_ | ||
| 3 | |||
| 4 | struct dma_chan; | ||
| 5 | |||
| 6 | #ifdef CONFIG_MMP_PDMA | ||
| 7 | bool mmp_pdma_filter_fn(struct dma_chan *chan, void *param); | ||
| 8 | #else | ||
| 9 | static inline bool mmp_pdma_filter_fn(struct dma_chan *chan, void *param) | ||
| 10 | { | ||
| 11 | return false; | ||
| 12 | } | ||
| 13 | #endif | ||
| 14 | |||
| 15 | #endif /* _MMP_PDMA_H_ */ | ||
diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h index 0c72b89a172c..0bc727534108 100644 --- a/include/linux/dmaengine.h +++ b/include/linux/dmaengine.h | |||
| @@ -373,6 +373,25 @@ struct dma_slave_config { | |||
| 373 | unsigned int slave_id; | 373 | unsigned int slave_id; |
| 374 | }; | 374 | }; |
| 375 | 375 | ||
| 376 | /* struct dma_slave_caps - expose capabilities of a slave channel only | ||
| 377 | * | ||
| 378 | * @src_addr_widths: bit mask of src addr widths the channel supports | ||
| 379 | * @dstn_addr_widths: bit mask of dstn addr widths the channel supports | ||
| 380 | * @directions: bit mask of slave direction the channel supported | ||
| 381 | * since the enum dma_transfer_direction is not defined as bits for each | ||
| 382 | * type of direction, the dma controller should fill (1 << <TYPE>) and same | ||
| 383 | * should be checked by controller as well | ||
| 384 | * @cmd_pause: true, if pause and thereby resume is supported | ||
| 385 | * @cmd_terminate: true, if terminate cmd is supported | ||
| 386 | */ | ||
| 387 | struct dma_slave_caps { | ||
| 388 | u32 src_addr_widths; | ||
| 389 | u32 dstn_addr_widths; | ||
| 390 | u32 directions; | ||
| 391 | bool cmd_pause; | ||
| 392 | bool cmd_terminate; | ||
| 393 | }; | ||
| 394 | |||
| 376 | static inline const char *dma_chan_name(struct dma_chan *chan) | 395 | static inline const char *dma_chan_name(struct dma_chan *chan) |
| 377 | { | 396 | { |
| 378 | return dev_name(&chan->dev->device); | 397 | return dev_name(&chan->dev->device); |
| @@ -535,6 +554,7 @@ struct dma_tx_state { | |||
| 535 | * struct with auxiliary transfer status information, otherwise the call | 554 | * struct with auxiliary transfer status information, otherwise the call |
| 536 | * will just return a simple status code | 555 | * will just return a simple status code |
| 537 | * @device_issue_pending: push pending transactions to hardware | 556 | * @device_issue_pending: push pending transactions to hardware |
| 557 | * @device_slave_caps: return the slave channel capabilities | ||
| 538 | */ | 558 | */ |
| 539 | struct dma_device { | 559 | struct dma_device { |
| 540 | 560 | ||
| @@ -600,6 +620,7 @@ struct dma_device { | |||
| 600 | dma_cookie_t cookie, | 620 | dma_cookie_t cookie, |
| 601 | struct dma_tx_state *txstate); | 621 | struct dma_tx_state *txstate); |
| 602 | void (*device_issue_pending)(struct dma_chan *chan); | 622 | void (*device_issue_pending)(struct dma_chan *chan); |
| 623 | int (*device_slave_caps)(struct dma_chan *chan, struct dma_slave_caps *caps); | ||
| 603 | }; | 624 | }; |
| 604 | 625 | ||
| 605 | static inline int dmaengine_device_control(struct dma_chan *chan, | 626 | static inline int dmaengine_device_control(struct dma_chan *chan, |
| @@ -673,6 +694,21 @@ static inline struct dma_async_tx_descriptor *dmaengine_prep_interleaved_dma( | |||
| 673 | return chan->device->device_prep_interleaved_dma(chan, xt, flags); | 694 | return chan->device->device_prep_interleaved_dma(chan, xt, flags); |
| 674 | } | 695 | } |
| 675 | 696 | ||
| 697 | static inline int dma_get_slave_caps(struct dma_chan *chan, struct dma_slave_caps *caps) | ||
| 698 | { | ||
| 699 | if (!chan || !caps) | ||
| 700 | return -EINVAL; | ||
| 701 | |||
| 702 | /* check if the channel supports slave transactions */ | ||
| 703 | if (!test_bit(DMA_SLAVE, chan->device->cap_mask.bits)) | ||
| 704 | return -ENXIO; | ||
| 705 | |||
| 706 | if (chan->device->device_slave_caps) | ||
| 707 | return chan->device->device_slave_caps(chan, caps); | ||
| 708 | |||
| 709 | return -ENXIO; | ||
| 710 | } | ||
| 711 | |||
| 676 | static inline int dmaengine_terminate_all(struct dma_chan *chan) | 712 | static inline int dmaengine_terminate_all(struct dma_chan *chan) |
| 677 | { | 713 | { |
| 678 | return dmaengine_device_control(chan, DMA_TERMINATE_ALL, 0); | 714 | return dmaengine_device_control(chan, DMA_TERMINATE_ALL, 0); |
| @@ -1006,6 +1042,7 @@ static inline void dma_release_channel(struct dma_chan *chan) | |||
| 1006 | int dma_async_device_register(struct dma_device *device); | 1042 | int dma_async_device_register(struct dma_device *device); |
| 1007 | void dma_async_device_unregister(struct dma_device *device); | 1043 | void dma_async_device_unregister(struct dma_device *device); |
| 1008 | void dma_run_dependencies(struct dma_async_tx_descriptor *tx); | 1044 | void dma_run_dependencies(struct dma_async_tx_descriptor *tx); |
| 1045 | struct dma_chan *dma_get_slave_channel(struct dma_chan *chan); | ||
| 1009 | struct dma_chan *net_dma_find_channel(void); | 1046 | struct dma_chan *net_dma_find_channel(void); |
| 1010 | #define dma_request_channel(mask, x, y) __dma_request_channel(&(mask), x, y) | 1047 | #define dma_request_channel(mask, x, y) __dma_request_channel(&(mask), x, y) |
| 1011 | #define dma_request_slave_channel_compat(mask, x, y, dev, name) \ | 1048 | #define dma_request_slave_channel_compat(mask, x, y, dev, name) \ |
diff --git a/include/linux/fsl/mxs-dma.h b/include/linux/fsl/mxs-dma.h deleted file mode 100644 index 55d870238399..000000000000 --- a/include/linux/fsl/mxs-dma.h +++ /dev/null | |||
| @@ -1,20 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * Copyright 2011 Freescale Semiconductor, Inc. All Rights Reserved. | ||
| 3 | * | ||
| 4 | * This program is free software; you can redistribute it and/or modify | ||
| 5 | * it under the terms of the GNU General Public License version 2 as | ||
| 6 | * published by the Free Software Foundation. | ||
| 7 | */ | ||
| 8 | |||
| 9 | #ifndef __MACH_MXS_DMA_H__ | ||
| 10 | #define __MACH_MXS_DMA_H__ | ||
| 11 | |||
| 12 | #include <linux/dmaengine.h> | ||
| 13 | |||
| 14 | struct mxs_dma_data { | ||
| 15 | int chan_irq; | ||
| 16 | }; | ||
| 17 | |||
| 18 | extern int mxs_dma_is_apbh(struct dma_chan *chan); | ||
| 19 | extern int mxs_dma_is_apbx(struct dma_chan *chan); | ||
| 20 | #endif /* __MACH_MXS_DMA_H__ */ | ||
diff --git a/include/linux/platform_data/dma-rcar-hpbdma.h b/include/linux/platform_data/dma-rcar-hpbdma.h new file mode 100644 index 000000000000..648b8ea61a22 --- /dev/null +++ b/include/linux/platform_data/dma-rcar-hpbdma.h | |||
| @@ -0,0 +1,103 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (C) 2011-2013 Renesas Electronics Corporation | ||
| 3 | * Copyright (C) 2013 Cogent Embedded, Inc. | ||
| 4 | * | ||
| 5 | * This program is free software; you can redistribute it and/or modify | ||
| 6 | * it under the terms of the GNU General Public License version 2 | ||
| 7 | * as published by the Free Software Foundation. | ||
| 8 | */ | ||
| 9 | |||
| 10 | #ifndef __DMA_RCAR_HPBDMA_H | ||
| 11 | #define __DMA_RCAR_HPBDMA_H | ||
| 12 | |||
| 13 | #include <linux/bitops.h> | ||
| 14 | #include <linux/types.h> | ||
| 15 | |||
| 16 | /* Transmit sizes and respective register values */ | ||
| 17 | enum { | ||
| 18 | XMIT_SZ_8BIT = 0, | ||
| 19 | XMIT_SZ_16BIT = 1, | ||
| 20 | XMIT_SZ_32BIT = 2, | ||
| 21 | XMIT_SZ_MAX | ||
| 22 | }; | ||
| 23 | |||
| 24 | /* DMA control register (DCR) bits */ | ||
| 25 | #define HPB_DMAE_DCR_DTAMD (1u << 26) | ||
| 26 | #define HPB_DMAE_DCR_DTAC (1u << 25) | ||
| 27 | #define HPB_DMAE_DCR_DTAU (1u << 24) | ||
| 28 | #define HPB_DMAE_DCR_DTAU1 (1u << 23) | ||
| 29 | #define HPB_DMAE_DCR_SWMD (1u << 22) | ||
| 30 | #define HPB_DMAE_DCR_BTMD (1u << 21) | ||
| 31 | #define HPB_DMAE_DCR_PKMD (1u << 20) | ||
| 32 | #define HPB_DMAE_DCR_CT (1u << 18) | ||
| 33 | #define HPB_DMAE_DCR_ACMD (1u << 17) | ||
| 34 | #define HPB_DMAE_DCR_DIP (1u << 16) | ||
| 35 | #define HPB_DMAE_DCR_SMDL (1u << 13) | ||
| 36 | #define HPB_DMAE_DCR_SPDAM (1u << 12) | ||
| 37 | #define HPB_DMAE_DCR_SDRMD_MASK (3u << 10) | ||
| 38 | #define HPB_DMAE_DCR_SDRMD_MOD (0u << 10) | ||
| 39 | #define HPB_DMAE_DCR_SDRMD_AUTO (1u << 10) | ||
| 40 | #define HPB_DMAE_DCR_SDRMD_TIMER (2u << 10) | ||
| 41 | #define HPB_DMAE_DCR_SPDS_MASK (3u << 8) | ||
| 42 | #define HPB_DMAE_DCR_SPDS_8BIT (0u << 8) | ||
| 43 | #define HPB_DMAE_DCR_SPDS_16BIT (1u << 8) | ||
| 44 | #define HPB_DMAE_DCR_SPDS_32BIT (2u << 8) | ||
| 45 | #define HPB_DMAE_DCR_DMDL (1u << 5) | ||
| 46 | #define HPB_DMAE_DCR_DPDAM (1u << 4) | ||
| 47 | #define HPB_DMAE_DCR_DDRMD_MASK (3u << 2) | ||
| 48 | #define HPB_DMAE_DCR_DDRMD_MOD (0u << 2) | ||
| 49 | #define HPB_DMAE_DCR_DDRMD_AUTO (1u << 2) | ||
| 50 | #define HPB_DMAE_DCR_DDRMD_TIMER (2u << 2) | ||
| 51 | #define HPB_DMAE_DCR_DPDS_MASK (3u << 0) | ||
| 52 | #define HPB_DMAE_DCR_DPDS_8BIT (0u << 0) | ||
| 53 | #define HPB_DMAE_DCR_DPDS_16BIT (1u << 0) | ||
| 54 | #define HPB_DMAE_DCR_DPDS_32BIT (2u << 0) | ||
| 55 | |||
| 56 | /* Asynchronous reset register (ASYNCRSTR) bits */ | ||
| 57 | #define HPB_DMAE_ASYNCRSTR_ASRST41 BIT(10) | ||
| 58 | #define HPB_DMAE_ASYNCRSTR_ASRST40 BIT(9) | ||
| 59 | #define HPB_DMAE_ASYNCRSTR_ASRST39 BIT(8) | ||
| 60 | #define HPB_DMAE_ASYNCRSTR_ASRST27 BIT(7) | ||
| 61 | #define HPB_DMAE_ASYNCRSTR_ASRST26 BIT(6) | ||
| 62 | #define HPB_DMAE_ASYNCRSTR_ASRST25 BIT(5) | ||
| 63 | #define HPB_DMAE_ASYNCRSTR_ASRST24 BIT(4) | ||
| 64 | #define HPB_DMAE_ASYNCRSTR_ASRST23 BIT(3) | ||
| 65 | #define HPB_DMAE_ASYNCRSTR_ASRST22 BIT(2) | ||
| 66 | #define HPB_DMAE_ASYNCRSTR_ASRST21 BIT(1) | ||
| 67 | #define HPB_DMAE_ASYNCRSTR_ASRST20 BIT(0) | ||
| 68 | |||
| 69 | struct hpb_dmae_slave_config { | ||
| 70 | unsigned int id; | ||
| 71 | dma_addr_t addr; | ||
| 72 | u32 dcr; | ||
| 73 | u32 port; | ||
| 74 | u32 rstr; | ||
| 75 | u32 mdr; | ||
| 76 | u32 mdm; | ||
| 77 | u32 flags; | ||
| 78 | #define HPB_DMAE_SET_ASYNC_RESET BIT(0) | ||
| 79 | #define HPB_DMAE_SET_ASYNC_MODE BIT(1) | ||
| 80 | u32 dma_ch; | ||
| 81 | }; | ||
| 82 | |||
| 83 | #define HPB_DMAE_CHANNEL(_irq, _s_id) \ | ||
| 84 | { \ | ||
| 85 | .ch_irq = _irq, \ | ||
| 86 | .s_id = _s_id, \ | ||
| 87 | } | ||
| 88 | |||
| 89 | struct hpb_dmae_channel { | ||
| 90 | unsigned int ch_irq; | ||
| 91 | unsigned int s_id; | ||
| 92 | }; | ||
| 93 | |||
| 94 | struct hpb_dmae_pdata { | ||
| 95 | const struct hpb_dmae_slave_config *slaves; | ||
| 96 | int num_slaves; | ||
| 97 | const struct hpb_dmae_channel *channels; | ||
| 98 | int num_channels; | ||
| 99 | const unsigned int ts_shift[XMIT_SZ_MAX]; | ||
| 100 | int num_hw_channels; | ||
| 101 | }; | ||
| 102 | |||
| 103 | #endif | ||
diff --git a/include/linux/platform_data/edma.h b/include/linux/platform_data/edma.h index 57300fd7cc03..179fb91bb5f2 100644 --- a/include/linux/platform_data/edma.h +++ b/include/linux/platform_data/edma.h | |||
| @@ -180,4 +180,6 @@ struct edma_soc_info { | |||
| 180 | const s16 (*xbar_chans)[2]; | 180 | const s16 (*xbar_chans)[2]; |
| 181 | }; | 181 | }; |
| 182 | 182 | ||
| 183 | int edma_trigger_channel(unsigned); | ||
| 184 | |||
| 183 | #endif | 185 | #endif |
diff --git a/include/linux/sh_dma.h b/include/linux/sh_dma.h index 4e83f3e034f3..b7b43b82231e 100644 --- a/include/linux/sh_dma.h +++ b/include/linux/sh_dma.h | |||
| @@ -33,13 +33,44 @@ struct sh_dmae_slave_config { | |||
| 33 | char mid_rid; | 33 | char mid_rid; |
| 34 | }; | 34 | }; |
| 35 | 35 | ||
| 36 | /** | ||
| 37 | * struct sh_dmae_channel - DMAC channel platform data | ||
| 38 | * @offset: register offset within the main IOMEM resource | ||
| 39 | * @dmars: channel DMARS register offset | ||
| 40 | * @chclr_offset: channel CHCLR register offset | ||
| 41 | * @dmars_bit: channel DMARS field offset within the register | ||
| 42 | * @chclr_bit: bit position, to be set to reset the channel | ||
| 43 | */ | ||
| 36 | struct sh_dmae_channel { | 44 | struct sh_dmae_channel { |
| 37 | unsigned int offset; | 45 | unsigned int offset; |
| 38 | unsigned int dmars; | 46 | unsigned int dmars; |
| 39 | unsigned int dmars_bit; | ||
| 40 | unsigned int chclr_offset; | 47 | unsigned int chclr_offset; |
| 48 | unsigned char dmars_bit; | ||
| 49 | unsigned char chclr_bit; | ||
| 41 | }; | 50 | }; |
| 42 | 51 | ||
| 52 | /** | ||
| 53 | * struct sh_dmae_pdata - DMAC platform data | ||
| 54 | * @slave: array of slaves | ||
| 55 | * @slave_num: number of slaves in the above array | ||
| 56 | * @channel: array of DMA channels | ||
| 57 | * @channel_num: number of channels in the above array | ||
| 58 | * @ts_low_shift: shift of the low part of the TS field | ||
| 59 | * @ts_low_mask: low TS field mask | ||
| 60 | * @ts_high_shift: additional shift of the high part of the TS field | ||
| 61 | * @ts_high_mask: high TS field mask | ||
| 62 | * @ts_shift: array of Transfer Size shifts, indexed by TS value | ||
| 63 | * @ts_shift_num: number of shifts in the above array | ||
| 64 | * @dmaor_init: DMAOR initialisation value | ||
| 65 | * @chcr_offset: CHCR address offset | ||
| 66 | * @chcr_ie_bit: CHCR Interrupt Enable bit | ||
| 67 | * @dmaor_is_32bit: DMAOR is a 32-bit register | ||
| 68 | * @needs_tend_set: the TEND register has to be set | ||
| 69 | * @no_dmars: DMAC has no DMARS registers | ||
| 70 | * @chclr_present: DMAC has one or several CHCLR registers | ||
| 71 | * @chclr_bitwise: channel CHCLR registers are bitwise | ||
| 72 | * @slave_only: DMAC cannot be used for MEMCPY | ||
| 73 | */ | ||
| 43 | struct sh_dmae_pdata { | 74 | struct sh_dmae_pdata { |
| 44 | const struct sh_dmae_slave_config *slave; | 75 | const struct sh_dmae_slave_config *slave; |
| 45 | int slave_num; | 76 | int slave_num; |
| @@ -59,42 +90,22 @@ struct sh_dmae_pdata { | |||
| 59 | unsigned int needs_tend_set:1; | 90 | unsigned int needs_tend_set:1; |
| 60 | unsigned int no_dmars:1; | 91 | unsigned int no_dmars:1; |
| 61 | unsigned int chclr_present:1; | 92 | unsigned int chclr_present:1; |
| 93 | unsigned int chclr_bitwise:1; | ||
| 62 | unsigned int slave_only:1; | 94 | unsigned int slave_only:1; |
| 63 | }; | 95 | }; |
| 64 | 96 | ||
| 65 | /* DMA register */ | ||
| 66 | #define SAR 0x00 | ||
| 67 | #define DAR 0x04 | ||
| 68 | #define TCR 0x08 | ||
| 69 | #define CHCR 0x0C | ||
| 70 | #define DMAOR 0x40 | ||
| 71 | |||
| 72 | #define TEND 0x18 /* USB-DMAC */ | ||
| 73 | |||
| 74 | /* DMAOR definitions */ | 97 | /* DMAOR definitions */ |
| 75 | #define DMAOR_AE 0x00000004 | 98 | #define DMAOR_AE 0x00000004 |
| 76 | #define DMAOR_NMIF 0x00000002 | 99 | #define DMAOR_NMIF 0x00000002 |
| 77 | #define DMAOR_DME 0x00000001 | 100 | #define DMAOR_DME 0x00000001 |
| 78 | 101 | ||
| 79 | /* Definitions for the SuperH DMAC */ | 102 | /* Definitions for the SuperH DMAC */ |
| 80 | #define REQ_L 0x00000000 | ||
| 81 | #define REQ_E 0x00080000 | ||
| 82 | #define RACK_H 0x00000000 | ||
| 83 | #define RACK_L 0x00040000 | ||
| 84 | #define ACK_R 0x00000000 | ||
| 85 | #define ACK_W 0x00020000 | ||
| 86 | #define ACK_H 0x00000000 | ||
| 87 | #define ACK_L 0x00010000 | ||
| 88 | #define DM_INC 0x00004000 | 103 | #define DM_INC 0x00004000 |
| 89 | #define DM_DEC 0x00008000 | 104 | #define DM_DEC 0x00008000 |
| 90 | #define DM_FIX 0x0000c000 | 105 | #define DM_FIX 0x0000c000 |
| 91 | #define SM_INC 0x00001000 | 106 | #define SM_INC 0x00001000 |
| 92 | #define SM_DEC 0x00002000 | 107 | #define SM_DEC 0x00002000 |
| 93 | #define SM_FIX 0x00003000 | 108 | #define SM_FIX 0x00003000 |
| 94 | #define RS_IN 0x00000200 | ||
| 95 | #define RS_OUT 0x00000300 | ||
| 96 | #define TS_BLK 0x00000040 | ||
| 97 | #define TM_BUR 0x00000020 | ||
| 98 | #define CHCR_DE 0x00000001 | 109 | #define CHCR_DE 0x00000001 |
| 99 | #define CHCR_TE 0x00000002 | 110 | #define CHCR_TE 0x00000002 |
| 100 | #define CHCR_IE 0x00000004 | 111 | #define CHCR_IE 0x00000004 |
diff --git a/include/linux/shdma-base.h b/include/linux/shdma-base.h index 5b1c9848124c..f92c0a43c54c 100644 --- a/include/linux/shdma-base.h +++ b/include/linux/shdma-base.h | |||
| @@ -96,7 +96,7 @@ struct shdma_ops { | |||
| 96 | dma_addr_t (*slave_addr)(struct shdma_chan *); | 96 | dma_addr_t (*slave_addr)(struct shdma_chan *); |
| 97 | int (*desc_setup)(struct shdma_chan *, struct shdma_desc *, | 97 | int (*desc_setup)(struct shdma_chan *, struct shdma_desc *, |
| 98 | dma_addr_t, dma_addr_t, size_t *); | 98 | dma_addr_t, dma_addr_t, size_t *); |
| 99 | int (*set_slave)(struct shdma_chan *, int, bool); | 99 | int (*set_slave)(struct shdma_chan *, int, dma_addr_t, bool); |
| 100 | void (*setup_xfer)(struct shdma_chan *, int); | 100 | void (*setup_xfer)(struct shdma_chan *, int); |
| 101 | void (*start_xfer)(struct shdma_chan *, struct shdma_desc *); | 101 | void (*start_xfer)(struct shdma_chan *, struct shdma_desc *); |
| 102 | struct shdma_desc *(*embedded_desc)(void *, int); | 102 | struct shdma_desc *(*embedded_desc)(void *, int); |
| @@ -116,7 +116,6 @@ struct shdma_dev { | |||
| 116 | 116 | ||
| 117 | int shdma_request_irq(struct shdma_chan *, int, | 117 | int shdma_request_irq(struct shdma_chan *, int, |
| 118 | unsigned long, const char *); | 118 | unsigned long, const char *); |
| 119 | void shdma_free_irq(struct shdma_chan *); | ||
| 120 | bool shdma_reset(struct shdma_dev *sdev); | 119 | bool shdma_reset(struct shdma_dev *sdev); |
| 121 | void shdma_chan_probe(struct shdma_dev *sdev, | 120 | void shdma_chan_probe(struct shdma_dev *sdev, |
| 122 | struct shdma_chan *schan, int id); | 121 | struct shdma_chan *schan, int id); |
