source: rtems/c/src/lib/libbsp/arm/raspberrypi/include/spi.h @ 7aca0fe

5
Last change on this file since 7aca0fe was 7aca0fe, checked in by Andre Marques <andre.lousa.marques@…>, on 09/05/15 at 20:53:16

RaspberryPi?: Added I2C and SPI bus support.

Further documentation can be found in

https://devel.rtems.org/wiki/GSoC/2015/RaspberryPi_peripherals_and_SD_card

and test data (including sample user applications, device drivers and wiring schemes) can be found in

https://github.com/asuol/RTEMS_rpi_testing

  • Property mode set to 100644
File size: 2.0 KB
RevLine 
[7aca0fe]1/**
2 * @file spi.h
3 *
4 * @ingroup raspberrypi_spi
5 *
6 * @brief Raspberry Pi specific SPI definitions.
7 */
8
9/*
10 *  Copyright (c) 2014-2015 Andre Marques <andre.lousa.marques at gmail.com>
11 *
12 *  The license and distribution terms for this file may be
13 *  found in the file LICENSE in this distribution or at
14 *  http://www.rtems.org/license/LICENSE.
15 */
16
17#ifndef LIBBSP_ARM_RASPBERRYPI_SPI_H
18#define LIBBSP_ARM_RASPBERRYPI_SPI_H
19
20#include <rtems/libi2c.h>
21
22#ifdef __cplusplus
23extern "C" {
24#endif /* __cplusplus */
25
26/**
27 * @name SPI constants.
28 *
29 * @{
30 */
31
32/**
33 * @brief GPU processor core clock rate in Hz.
34 *
35 * Unless configured otherwise on a "config.txt" file present on the SD card
36 * the GPU defaults to 250 MHz. Currently only 250 MHz is supported.
37 */
38
39/* TODO: It would be nice if this value could be probed at startup, probably
40 *       using the Mailbox interface since the usual way of setting this on
41 *       the hardware is through a "config.txt" text file on the SD card.
42 *       Having this setup on the configure.ac script would require changing
43 *       the same setting on two different places. */
44#define GPU_CORE_CLOCK_RATE 250000000
45
46/** @} */
47
48/**
49 * @name SPI directives.
50 *
51 * @{
52 */
53
54/**
55 * @brief Setups the Raspberry Pi SPI bus (located on the GPIO header)
56 *        on the "/dev/spi" device file, and registers the bus on the
57 *        libi2c API.
58 *
59 * @param[in] bidirectional_mode If TRUE sets the SPI bus to use 2-wire SPI,
60 *                               where the MOSI data line doubles as the
61 *                               slave out (SO) and slave in (SI) data lines.
62 *                               If FALSE the bus defaults to the usual
63 *                               3-wire SPI, with 2 separate data lines
64 *                               (MOSI and MISO).
65 *
66 * @retval Returns libi2c bus number.
67 * @retval <0 Could not register the bus. See @see rtems_libi2c_register_bus().
68 */
69extern int rpi_spi_init(bool bidirectional_mode);
70
71/** @} */
72
73#ifdef __cplusplus
74}
75#endif /* __cplusplus */
76
77#endif /* LIBBSP_ARM_RASPBERRYPI_SPI_H */
Note: See TracBrowser for help on using the repository browser.