aboutsummaryrefslogtreecommitdiff
path: root/src/spim.h
blob: 2a7a5aade203e0dfe4b66483dec65ef3116f5e9b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#ifndef SPIM_H
#define SPIM_H

#include "types.h"

#define SPI_MAX_BUFFER_SIZE 256

enum spim_clk_frequency_bps {
	K125 = 0x02000000,
	K250 = 0x04000000,
	K500 = 0x08000000,
	M1 = 0x10000000,
	M2 = 0x20000000,
	M4 = 0x40000000,
	M8 = 0x80000000,
};

enum spim_clk_phase {
	LEADING = 0,
	TRAILING = 1,
};

enum spim_clk_polarity {
	ACTIVE_HIGH = 0,
	ACTIVE_LOW = 1,
};

struct spim_setup_info {
	u8 sclk_pin;
	u8 miso_pin;
	u8 mosi_pin;
	u8 ss_pin;
	enum clk_frequency_bps clk_freqency;
	u8 rxd_len;
	u8 txd_len;
	enum spim_clk_phase clk_phase;
	enum spim_clk_polarity clk_polarity;
	u8 over_read_char;
};

u8 spim_setup(u8 spi_index, struct spim_setup_info setup_info);

void spim_send(u8 spi_index, u8 *write_buffer, u8 *read_buffer);

void spim_stop(u8 spi_index);

#endif