aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2012-04-26 20:13:49 +0200
committerHarald Welte <laforge@gnumonks.org>2012-04-26 20:13:49 +0200
commitc1a989f886183949f2dab8a19ab9e11783e74566 (patch)
tree645bee24593cec41196c2540e618c36e086cf2b8
parenta45232b810868a49ba343a46740cf2125c338966 (diff)
enable SPI clock
-rw-r--r--src/cc32/cc32_irq.c11
-rw-r--r--src/cc32/cc32_spi.c5
-rw-r--r--src/cc32/cc32_sysc.h27
3 files changed, 42 insertions, 1 deletions
diff --git a/src/cc32/cc32_irq.c b/src/cc32/cc32_irq.c
index a382409..d9cb62c 100644
--- a/src/cc32/cc32_irq.c
+++ b/src/cc32/cc32_irq.c
@@ -1,4 +1,5 @@
+#include "cc32_sysc.h"
#include "cc32_irq.h"
#define CC32_SYSC_BASE 0x0F0000
@@ -38,3 +39,13 @@ void cc32_irq_register(enum cc32_irq irq, void (*handler)(enum cc32_irq irq))
{
/* FIXME */
}
+
+void cc32_sysc_clk_enable(enum cc32_clk clk)
+{
+ *SYSC_REG(SCCM0) |= clk;
+}
+
+void cc32_sysc_clk_disable(enum cc32_clk clk)
+{
+ *SYSC_REG(SCCM0) &= ~clk;
+}
diff --git a/src/cc32/cc32_spi.c b/src/cc32/cc32_spi.c
index 09ea845..03aca17 100644
--- a/src/cc32/cc32_spi.c
+++ b/src/cc32/cc32_spi.c
@@ -19,11 +19,12 @@
#include <errno.h>
+#include "cc32_sysc.h"
#include "cc32_spi.h"
#define CC32_SPI_BASE 0x0f9800
-enum cc32_flcon_reg {
+enum cc32_spi_reg {
SPICON2 = 0x08,
SPIDAT = 0x0C,
SPISTS = 0x10,
@@ -61,6 +62,8 @@ int cc32_spi_init(uint8_t cpol, uint8_t cpha, uint8_t divide_2n)
{
uint32_t val;
+ cc32_sysc_clk_enable(CLK_SPI);
+
if (divide_2n < 2 || divide_2n > 256)
return -EINVAL;
diff --git a/src/cc32/cc32_sysc.h b/src/cc32/cc32_sysc.h
new file mode 100644
index 0000000..69f82a9
--- /dev/null
+++ b/src/cc32/cc32_sysc.h
@@ -0,0 +1,27 @@
+#ifndef _CC32_SYSC_H
+#define _CC32_SYSC_H
+
+#include <stdint.h>
+
+enum cc32_clk {
+ CLK_TIMER = (1 << 0),
+ CLK_CRC = (1 << 2),
+ CLK_DES = (1 << 3),
+ CLK_AES = (1 << 4),
+ CLK_RSA = (1 << 5),
+ CLK_FLASH = (1 << 8),
+ CLK_RAM0 = (1 << 11),
+ CLK_RAM12 = (1 << 12),
+ CLK_ISO7816 = (1 << 16),
+ CLK_GPIO = (1 << 18),
+ CLK_SPI = (1 << 20),
+ CLK_VD = (1 << 24),
+ CLK_FD = (1 << 25),
+ CLK_RNG = (1 << 27),
+ CLK_DMA = (1 << 28),
+};
+
+void cc32_sysc_clk_enable(enum cc32_clk clk);
+void cc32_sysc_clk_disable(enum cc32_clk clk);
+
+#endif