diff options
Diffstat (limited to 'firmware/target/arm/imx31/gigabeat-s/spi-imx31.h')
-rw-r--r-- | firmware/target/arm/imx31/gigabeat-s/spi-imx31.h | 56 |
1 files changed, 53 insertions, 3 deletions
diff --git a/firmware/target/arm/imx31/gigabeat-s/spi-imx31.h b/firmware/target/arm/imx31/gigabeat-s/spi-imx31.h index 5f6cfc984f..c17a272aaa 100644 --- a/firmware/target/arm/imx31/gigabeat-s/spi-imx31.h +++ b/firmware/target/arm/imx31/gigabeat-s/spi-imx31.h | |||
@@ -16,8 +16,58 @@ | |||
16 | * KIND, either express or implied. | 16 | * KIND, either express or implied. |
17 | * | 17 | * |
18 | ****************************************************************************/ | 18 | ****************************************************************************/ |
19 | #define DATAMASK 0xFF000000 | 19 | #ifndef _SPI_IMX31_H_ |
20 | #define _SPI_IMX31_H_ | ||
20 | 21 | ||
22 | #define USE_CSPI1_MODULE (1 << 0) | ||
23 | #define USE_CSPI2_MODULE (1 << 1) | ||
24 | #define USE_CSPI3_MODULE (1 << 2) | ||
25 | |||
26 | /* SPI_MODULE_MASK is set in target's config */ | ||
27 | enum spi_module_number | ||
28 | { | ||
29 | #if (SPI_MODULE_MASK & USE_CSPI1_MODULE) | ||
30 | CSPI1_NUM = 0, | ||
31 | #endif | ||
32 | #if (SPI_MODULE_MASK & USE_CSPI2_MODULE) | ||
33 | CSPI2_NUM, | ||
34 | #endif | ||
35 | #if (SPI_MODULE_MASK & USE_CSPI3_MODULE) | ||
36 | CSPI3_NUM, | ||
37 | #endif | ||
38 | SPI_NUM_CSPI, | ||
39 | }; | ||
40 | |||
41 | struct spi_node | ||
42 | { | ||
43 | enum spi_module_number num; /* Module number (CSPIx_NUM) */ | ||
44 | unsigned long conreg; /* CSPI conreg setup */ | ||
45 | unsigned long periodreg; /* CSPI periodreg setup */ | ||
46 | }; | ||
47 | |||
48 | struct spi_transfer | ||
49 | { | ||
50 | const void *txbuf; | ||
51 | void *rxbuf; | ||
52 | int count; | ||
53 | }; | ||
54 | |||
55 | /* One-time init of SPI driver */ | ||
21 | void spi_init(void); | 56 | void spi_init(void); |
22 | void spi_send(int address, unsigned long data); | 57 | |
23 | void spi_read(int address, unsigned long* buffer); | 58 | /* Enable the specified module for the node */ |
59 | void spi_enable_module(struct spi_node *node); | ||
60 | |||
61 | /* Disabled the specified module for the node */ | ||
62 | void spi_disable_module(struct spi_node *node); | ||
63 | |||
64 | /* Lock module mutex */ | ||
65 | void spi_lock(struct spi_node *node); | ||
66 | |||
67 | /* Unlock module mutex */ | ||
68 | void spi_unlock(struct spi_node *node); | ||
69 | |||
70 | /* Send and/or receive data on the specified node */ | ||
71 | int spi_transfer(struct spi_node *node, struct spi_transfer *trans); | ||
72 | |||
73 | #endif /* _SPI_IMX31_H_ */ | ||