RTEMS
6.3
Toggle main menu visibility
Loading...
Searching...
No Matches
bsps
arm
atsam
include
bsp
atsam-i2c.h
1
/* SPDX-License-Identifier: BSD-2-Clause */
2
3
/*
4
* Copyright (c) 2016 embedded brains GmbH & Co. KG
5
*
6
* Redistribution and use in source and binary forms, with or without
7
* modification, are permitted provided that the following conditions
8
* are met:
9
* 1. Redistributions of source code must retain the above copyright
10
* notice, this list of conditions and the following disclaimer.
11
* 2. Redistributions in binary form must reproduce the above copyright
12
* notice, this list of conditions and the following disclaimer in the
13
* documentation and/or other materials provided with the distribution.
14
*
15
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
19
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25
* POSSIBILITY OF SUCH DAMAGE.
26
*/
27
28
#ifndef LIBBSP_ARM_ATSAM_ATSAM_I2C_H
29
#define LIBBSP_ARM_ATSAM_ATSAM_I2C_H
30
31
#include <libchip/chip.h>
32
#include <
libchip/include/pio.h
>
33
34
#include <bsp.h>
35
#include <
rtems/thread.h
>
36
#include <
dev/i2c/i2c.h
>
37
38
#ifdef __cplusplus
39
extern
"C"
{
40
#endif
/* __cplusplus */
41
42
#define TWI_AMOUNT_PINS 2
43
44
typedef
struct
{
45
i2c_bus
base;
46
Twihs
*regs;
47
48
/* First message and number of messages that have to be processed. */
49
i2c_msg
*msgs;
50
uint32_t msg_todo;
51
52
/* Information about the current transfer. */
53
bool
stop_request;
54
uint32_t current_msg_todo;
55
uint8_t *current_msg_byte;
56
57
/* Error information that can be returned to the task */
58
uint32_t err;
59
60
uint32_t output_clock;
61
rtems_binary_semaphore
sem;
62
rtems_vector_number
irq;
63
}
atsam_i2c_bus
;
64
65
int
i2c_bus_register_atsam(
66
const
char
*bus_path,
67
Twihs
*register_base,
68
rtems_vector_number
irq,
69
const
Pin pins[TWI_AMOUNT_PINS]
70
);
71
72
#ifdef __cplusplus
73
}
74
#endif
/* __cplusplus */
75
76
#endif
/* LIBBSP_ARM_ATSAM_ATSAM_I2C_H */
i2c.h
Inter-Integrated Circuit (I2C) Driver API.
rtems_vector_number
ISR_Vector_number rtems_vector_number
This integer type represents interrupt vector numbers.
Definition
intr.h:102
pio.h
Twihs
Twihs hardware registers.
Definition
component_twihs.h:41
atsam_i2c_bus
Definition
atsam-i2c.h:44
i2c_bus
I2C bus control.
Definition
i2c.h:123
i2c_msg
I2C transfer message.
Definition
i2c.h:151
rtems_binary_semaphore
Definition
thread.h:280
thread.h
This header file provides the API of Self-Contained Objects.
Generated by
1.18.0