summaryrefslogtreecommitdiff
path: root/firmware/target/arm/imx31/gigabeat-s/spi-imx31.h
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/imx31/gigabeat-s/spi-imx31.h')
-rw-r--r--firmware/target/arm/imx31/gigabeat-s/spi-imx31.h56
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 */
27enum 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
41struct 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
48struct spi_transfer
49{
50 const void *txbuf;
51 void *rxbuf;
52 int count;
53};
54
55/* One-time init of SPI driver */
21void spi_init(void); 56void spi_init(void);
22void spi_send(int address, unsigned long data); 57
23void spi_read(int address, unsigned long* buffer); 58/* Enable the specified module for the node */
59void spi_enable_module(struct spi_node *node);
60
61/* Disabled the specified module for the node */
62void spi_disable_module(struct spi_node *node);
63
64/* Lock module mutex */
65void spi_lock(struct spi_node *node);
66
67/* Unlock module mutex */
68void spi_unlock(struct spi_node *node);
69
70/* Send and/or receive data on the specified node */
71int spi_transfer(struct spi_node *node, struct spi_transfer *trans);
72
73#endif /* _SPI_IMX31_H_ */