summaryrefslogtreecommitdiff
path: root/firmware/export
diff options
context:
space:
mode:
authorCástor Muñoz <cmvidal@gmail.com>2015-09-26 01:35:15 +0200
committerCástor Muñoz <cmvidal@gmail.com>2015-12-17 07:05:53 +0100
commitf753b8ead1a798b90b6c2ecd0c62c2f4b6c4eea7 (patch)
tree9232929017de920020b47623c2eec05d8ca5ada2 /firmware/export
parentad5e5c42fb00334ec0e9b0e9e8c69c4b7d05ac7a (diff)
iPod Classic: s5l8702 clocking rewrite+documentation
This is a rewrite of the clocking section, the resulting system frequencies are the same as the current git version. This pàtch uses fixed FClk and just one register is written to switch all system frequencies, it needs less steps than the current git version to reach the desired frequency, so it is faster and safer. Includes functions to step-up/down over a table of predefined set of frequencies. The major difference is that Vcore is decreased from 1050 to 1000 mV. See clocking-s5l8702.h for more information. Change-Id: I58ac6634e1996adbe1c0c0918a7ce94ad1917d8e
Diffstat (limited to 'firmware/export')
-rw-r--r--firmware/export/s5l8702.h108
1 files changed, 75 insertions, 33 deletions
diff --git a/firmware/export/s5l8702.h b/firmware/export/s5l8702.h
index 1a59d47036..6ec59eaf37 100644
--- a/firmware/export/s5l8702.h
+++ b/firmware/export/s5l8702.h
@@ -39,6 +39,12 @@
#define TTB_SIZE 0x4000
#define TTB_BASE_ADDR (DRAM_ORIG + DRAM_SIZE - TTB_SIZE)
+#define IRAM0_ORIG 0x22000000
+#define IRAM0_SIZE 0x20000
+#define IRAM1_ORIG 0x22020000
+#define IRAM1_SIZE 0x20000
+
+
/////SYSTEM CONTROLLER/////
#define CLKCON0 (*((volatile uint32_t*)(0x3C500000)))
#define CLKCON1 (*((volatile uint32_t*)(0x3C500004)))
@@ -151,6 +157,9 @@
/////I2C/////
+#define I2CCLKGATE(i) ((i) == 1 ? CLOCKGATE_I2C1 : \
+ CLOCKGATE_I2C0)
+
#define IICCON(bus) (*((uint32_t volatile*)(0x3C600000 + 0x300000 * (bus))))
#define IICSTAT(bus) (*((uint32_t volatile*)(0x3C600004 + 0x300000 * (bus))))
#define IICADD(bus) (*((uint32_t volatile*)(0x3C600008 + 0x300000 * (bus))))
@@ -374,9 +383,9 @@
#define SPIBASE(i) ((i) == 2 ? 0x3d200000 : \
(i) == 1 ? 0x3ce00000 : \
0x3c300000)
-#define SPICLKGATE(i) ((i) == 2 ? 0x2f : \
- (i) == 1 ? 0x2b : \
- 0x22)
+#define SPICLKGATE(i) ((i) == 2 ? CLOCKGATE_SPI2 : \
+ (i) == 1 ? CLOCKGATE_SPI1 : \
+ CLOCKGATE_SPI0)
#define SPIDMA(i) ((i) == 2 ? 0xd : \
(i) == 1 ? 0xf : \
0x5)
@@ -658,6 +667,10 @@
/////I2S/////
+#define I2SCLKGATE(i) ((i) == 2 ? CLOCKGATE_I2S2 : \
+ (i) == 1 ? CLOCKGATE_I2S1 : \
+ CLOCKGATE_I2S0)
+
#define I2SCLKCON (*((volatile uint32_t*)(0x3CA00000)))
#define I2STXCON (*((volatile uint32_t*)(0x3CA00004)))
#define I2STXCOM (*((volatile uint32_t*)(0x3CA00008)))
@@ -676,38 +689,67 @@
/////CLOCK GATES/////
-#define CLOCKGATE_USB_1 2
-#define CLOCKGATE_USB_2 35
-#define CLOCKGATE_DMAC0 25
-#define CLOCKGATE_DMAC1 26
-#define CLOCKGATE_UART 41
+#define CLOCKGATE_SHA 0
+#define CLOCKGATE_LCD 1
+#define CLOCKGATE_USBOTG 2
+#define CLOCKGATE_SMx 3
+#define CLOCKGATE_SM1 4
+#define CLOCKGATE_ATA 5
+#define CLOCKGATE_SDCI 9
+#define CLOCKGATE_AES 10
+#define CLOCKGATE_DMAC0 25
+#define CLOCKGATE_DMAC1 26
+#define CLOCKGATE_ROM 30
+
+#define CLOCKGATE_RTC 32
+#define CLOCKGATE_CWHEEL 33
+#define CLOCKGATE_SPI0 34
+#define CLOCKGATE_USBPHY 35
+#define CLOCKGATE_I2C0 36
+#define CLOCKGATE_TIMER 37
+#define CLOCKGATE_I2C1 38
+#define CLOCKGATE_I2S0 39
+#define CLOCKGATE_UART 41
+#define CLOCKGATE_I2S1 42
+#define CLOCKGATE_SPI1 43
+#define CLOCKGATE_GPIO 44
+#define CLOCKGATE_CHIPID 46
+#define CLOCKGATE_I2S2 47
+#define CLOCKGATE_SPI2 48
/////INTERRUPTS/////
-#define IRQ_TIMER32 7
-#define IRQ_TIMER 8
-#define IRQ_USB_FUNC 19
-#define IRQ_DMAC(d) 16 + d
-#define IRQ_DMAC0 16
-#define IRQ_DMAC1 17
-#define IRQ_WHEEL 23
-#define IRQ_ATA 29
-#define IRQ_MMC 44
-
-#define IRQ_UART(i) (24+i)
-#define IRQ_UART0 24
-#define IRQ_UART1 25
-#define IRQ_UART2 26
-#define IRQ_UART3 27
-#define IRQ_UART4 28 /* obsolete/not implemented on s5l8702 ??? */
-
-#define IRQ_EXT0 0
-#define IRQ_EXT1 1
-#define IRQ_EXT2 2
-#define IRQ_EXT3 3
-#define IRQ_EXT4 31
-#define IRQ_EXT5 32
-#define IRQ_EXT6 33
+#define IRQ_TIMER32 7
+#define IRQ_TIMER 8
+#define IRQ_SPI(i) (9+i) /* TBC */
+#define IRQ_SPI0 9
+#define IRQ_SPI1 10
+#define IRQ_SPI2 11
+#define IRQ_LCD 14
+#define IRQ_DMAC(d) (16+d)
+#define IRQ_DMAC0 16
+#define IRQ_DMAC1 17
+#define IRQ_USB_FUNC 19
+#define IRQ_I2C 21 /* TBC */
+#define IRQ_WHEEL 23
+#define IRQ_UART(i) (24+i)
+#define IRQ_UART0 24
+#define IRQ_UART1 25
+#define IRQ_UART2 26
+#define IRQ_UART3 27
+#define IRQ_UART4 28 /* obsolete/not implemented on s5l8702 ??? */
+#define IRQ_ATA 29
+#define IRQ_SBOOT 36
+#define IRQ_AES 39
+#define IRQ_SHA 40
+#define IRQ_MMC 44
+
+#define IRQ_EXT0 0
+#define IRQ_EXT1 1
+#define IRQ_EXT2 2
+#define IRQ_EXT3 3
+#define IRQ_EXT4 31
+#define IRQ_EXT5 32
+#define IRQ_EXT6 33
#endif
-