gossamer
0.0.0
a very lightweight app framework for SAMD and SAML chips
Loading...
Searching...
No Matches
peripherals
dma.h
1
/*
2
* MIT License
3
*
4
* Copyright (c) 2022 Joey Castillo
5
* Based heavily on Adafruit_ZeroDMA
6
* Written by Phil "PaintYourDragon" Burgess for Adafruit Industries,
7
* based partly on DMA insights from Atmel ASFCORE 3.
8
*
9
* Adafruit invests time and resources providing this open source code,
10
* please support Adafruit and open-source hardware by purchasing
11
* products from Adafruit!
12
*
13
* Permission is hereby granted, free of charge, to any person obtaining a copy
14
* of this software and associated documentation files (the "Software"), to deal
15
* in the Software without restriction, including without limitation the rights
16
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
17
* copies of the Software, and to permit persons to whom the Software is
18
* furnished to do so, subject to the following conditions:
19
*
20
* The above copyright notice and this permission notice shall be included in all
21
* copies or substantial portions of the Software.
22
*
23
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
24
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
26
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
28
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
29
* SOFTWARE.
30
*/
31
32
#pragma once
33
34
#include <stdint.h>
35
#include <stdbool.h>
36
#include "dma_util.h"
37
38
#ifndef _SAMD51_
39
40
typedef
struct
{
41
uint8_t channel;
// (0 to DMAC_CH_NUM-1, or 0xFF)
42
volatile
dma_status_t jobStatus;
// Last known DMA job status
43
bool
hasDescriptors;
// 'true' if one or more descriptors assigned
44
bool
loopFlag;
// 'true' if descriptor chain loops back to start
45
void (*callbacks[DMA_CALLBACK_N])(
void
*);
// Callback function (is passed an instance of this struct)
46
}
gossamer_dma_job_t
;
47
54
void
dma_init(
void
);
55
72
bool
dma_configure(
gossamer_dma_job_t
*dmaJob, uint8_t peripheralTrigger, dma_trigger_action_t triggerAction, dma_configuration_flags_t flags);
73
102
DmacDescriptor *dma_add_descriptor(
gossamer_dma_job_t
*dmaJob,
void
*src,
void
*dst, uint32_t count, dma_beat_size_t size, dma_address_increment_t addressIncrement, dma_stepsize_t stepSize, dma_stepsel_t stepSel);
103
104
bool
dma_start_job(
gossamer_dma_job_t
*dmaJob);
105
106
#endif
gossamer_dma_job_t
Definition:
dma.h:40
Generated by
1.9.5