Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| soc2010jakubklama:engineapi [2010/06/05 11:32] – JakubKlama | soc2010jakubklama:engineapi [2010/07/21 09:21] (current) – JakubKlama | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| **Warning: | **Warning: | ||
| - | The DMA engine device driver should include "dmae_if.h", %%< | + | The DMA engine device driver should include "gpdma_if.h", %%< |
| files and support following kobject methods: | files and support following kobject methods: | ||
| - | < | + | < |
| int setup_channel(device_t dev, int channel, struct dmae_transfer *xfer) | int setup_channel(device_t dev, int channel, struct dmae_transfer *xfer) | ||
| </ | </ | ||
| Line 12: | Line 12: | ||
| trigger. Returns 0 on success, nonzero on error. | trigger. Returns 0 on success, nonzero on error. | ||
| - | < | + | < |
| int clear_channel(device_t dev, int channel) | int clear_channel(device_t dev, int channel) | ||
| </ | </ | ||
| Line 19: | Line 19: | ||
| kind of operation on that channel. Returns 0 on success, nonzero on error. | kind of operation on that channel. Returns 0 on success, nonzero on error. | ||
| - | < | + | < |
| int start_channel(device_t dev, int channel) | int start_channel(device_t dev, int channel) | ||
| </ | </ | ||
| Line 27: | Line 27: | ||
| nonzero on error. | nonzero on error. | ||
| - | < | + | < |
| int stop_channel(device_t dev, int channel) | int stop_channel(device_t dev, int channel) | ||
| </ | </ | ||
| Line 35: | Line 35: | ||
| ENOTSUP. | ENOTSUP. | ||
| - | < | + | < |
| int poll_channel(device_t dev, int channel, int *status) | int poll_channel(device_t dev, int channel, int *status) | ||
| </ | </ | ||
| - | Returns channel status. | + | Returns channel status. |
| + | nonzero if any error occured or channel status is unavailable. | ||
| + | //*status// is filled with one of //enum gpdma_transfer_status// | ||
| - | < | + | < |
| - | int validate_transfer(device_t dev, int channel, struct | + | int validate_transfer(device_t dev, int channel, struct |
| </ | </ | ||
| - | Returns 0 if supplied transfer can be done usin //channel// on engine //dev//, | + | Returns 0 if supplied transfer can be done using //channel// on engine //dev//, |
| - | or nonzero if cannot. | + | or nonzero if cannot. This method is optional - default implementation returns |
| + | 0. | ||
| - | DMA engines registers themselves using //dmae_register_driver// function in | + | DMA engines registers themselves using //gpdma_register_driver// function in |
| - | their attach method. //dmae_register_driver// is defined as follows: | + | their attach method. //gpdma_register_driver// is defined as follows: |
| - | < | + | < |
| - | int dmae_register_driver(device_t dev, struct dmae_capabilities *caps, bus_dma_tag_t tag); | + | int gpdma_register_driver(device_t dev, struct dmae_capabilities *caps, bus_dma_tag_t tag); |
| </ | </ | ||
| Line 58: | Line 61: | ||
| * caps - DMA capabilities structure defined as follows: | * caps - DMA capabilities structure defined as follows: | ||
| - | < | + | < |
| - | struct | + | struct |
| uint32_t | uint32_t | ||
| uint32_t | uint32_t | ||
| Line 73: | Line 76: | ||
| and can be unregistered (at device detach) using: | and can be unregistered (at device detach) using: | ||
| - | < | + | < |
| - | int dmae_unregister_driver(device_t dev); | + | int gpdma_unregister_driver(device_t dev); |
| </ | </ | ||
| ===== Required data structures: ===== | ===== Required data structures: ===== | ||
| - | < | + | < |
| - | typedef struct | + | typedef struct |
| - | typedef int (*dmae_callback_t)(int status, void *arg); | + | typedef int (*gpdma_callback_t)(int status, void *arg); |
| - | enum dmae_op | + | enum gpdma_op |
| DMAE_FILL | DMAE_FILL | ||
| DMAE_COPY | DMAE_COPY | ||
| Line 89: | Line 92: | ||
| }; | }; | ||
| - | enum dmae_transfer_status | + | enum gpdma_transfer_status |
| DMAE_TRANSFER_COMPLETED, | DMAE_TRANSFER_COMPLETED, | ||
| DMAE_TRANSFER_COMPLETED_STRIDE, | DMAE_TRANSFER_COMPLETED_STRIDE, | ||
| DMAE_TRANSFER_COMPLETED_LINK, | DMAE_TRANSFER_COMPLETED_LINK, | ||
| DMAE_TRANSFER_CANCELLED, | DMAE_TRANSFER_CANCELLED, | ||
| + | DMAE_TRANSFER_IN_PROGRESS, | ||
| DMAE_TRANSFER_ERROR, | DMAE_TRANSFER_ERROR, | ||
| }; | }; | ||
| - | enum dmae_buffer_type | + | enum gpdma_buffer_type |
| DMAEBUF_BLOCK | DMAEBUF_BLOCK | ||
| DMAEBUF_FRAME | DMAEBUF_FRAME | ||
| Line 103: | Line 107: | ||
| }; | }; | ||
| - | struct | + | struct |
| - | struct | + | struct |
| int | int | ||
| int | int | ||
| Line 119: | Line 123: | ||
| }; | }; | ||
| - | struct | + | struct |
| int | int | ||
| int | int | ||
| int | int | ||
| - | # | + | # |
| - | # | + | # |
| - | # | + | # |
| - | # | + | # |
| - | # | + | # |
| - | | + | |
| void * dt_callback_arg; | void * dt_callback_arg; | ||
| - | struct | + | struct |
| - | # | + | # |
| - | # | + | # |
| - | struct | + | struct |
| /* Private fields: */ | /* Private fields: */ | ||
| - | struct | + | struct |
| struct resource * | struct resource * | ||
| }; | }; | ||
| </ | </ | ||