RTEMS 6.1-rc1
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
39extern "C" {
40#endif /* __cplusplus */
41
42#define TWI_AMOUNT_PINS 2
43
44typedef 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;
64
65int i2c_bus_register_atsam(
66 const char *bus_path,
67 Twihs *register_base,
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 */
Inter-Integrated Circuit (I2C) Driver API.
ISR_Vector_number rtems_vector_number
This integer type represents interrupt vector numbers.
Definition: intr.h:102
Twihs hardware registers.
Definition: component_twihs.h:41
Definition: pio.h:172
Definition: atsam-i2c.h:44
I2C bus control.
Definition: i2c.h:123
I2C transfer message.
Definition: i2c.h:151
Definition: thread.h:265
This header file provides the API of Self-Contained Objects.