summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcin Bukat <marcin.bukat@gmail.com>2012-12-17 08:44:09 +0100
committerMarcin Bukat <marcin.bukat@gmail.com>2013-01-10 20:23:41 +0100
commit2b6dfdb34e8e750528b91276c504f1664dfdef4c (patch)
tree17dd8a0b5cbdc18600e59c16a076f2580948d88c
parent1fa406dc216cbbabd9f17df6312abf205976276f (diff)
downloadrockbox-2b6dfdb34e8e750528b91276c504f1664dfdef4c.tar.gz
rockbox-2b6dfdb34e8e750528b91276c504f1664dfdef4c.zip
rk27xx: substitute magic constants with meaningful names for clock gating
Change-Id: I6c66c7496db3db78e5c959414464826134dbe200
-rw-r--r--firmware/export/rk27xx.h32
-rw-r--r--firmware/target/arm/rk27xx/adc-rk27xx.c4
-rw-r--r--firmware/target/arm/rk27xx/backlight-rk27xx.c4
-rw-r--r--firmware/target/arm/rk27xx/i2c-rk27xx.c12
-rw-r--r--firmware/target/arm/rk27xx/kernel-rk27xx.c2
-rw-r--r--firmware/target/arm/rk27xx/pcm-rk27xx.c9
-rw-r--r--firmware/target/arm/rk27xx/sd-rk27xx.c6
-rw-r--r--firmware/target/arm/rk27xx/system-rk27xx.c30
-rw-r--r--firmware/target/arm/rk27xx/usb-drv-rk27xx.c2
9 files changed, 66 insertions, 35 deletions
diff --git a/firmware/export/rk27xx.h b/firmware/export/rk27xx.h
index 3ca2bc089d..6fb69d46c1 100644
--- a/firmware/export/rk27xx.h
+++ b/firmware/export/rk27xx.h
@@ -124,6 +124,38 @@
124#define SCU_PLLCON3 (*(volatile unsigned long *)(APB0_SCU + 0x10)) 124#define SCU_PLLCON3 (*(volatile unsigned long *)(APB0_SCU + 0x10))
125#define SCU_DIVCON1 (*(volatile unsigned long *)(APB0_SCU + 0x14)) 125#define SCU_DIVCON1 (*(volatile unsigned long *)(APB0_SCU + 0x14))
126#define SCU_CLKCFG (*(volatile unsigned long *)(APB0_SCU + 0x18)) 126#define SCU_CLKCFG (*(volatile unsigned long *)(APB0_SCU + 0x18))
127#define CLKCFG_OTP (1<<0)
128#define CLKCFG_DSP (1<<1)
129#define CLKCFG_SDRAM (1<<2)
130#define CLKCFG_HDMA (1<<3)
131#define CLKCFG_DWDMA (1<<4)
132#define CLKCFG_UHC (1<<5)
133#define CLKCFG_UDC (1<<6)
134/* 7 - 8 reserved */
135#define CLKCFG_NAND (1<<9)
136#define CLKCFG_A2A (1<<10)
137#define CLKCFG_SRAM (1<<11)
138#define CLKCFG_HCLK_LCDC (1<<12)
139#define CLKCFG_LCDC (1<<13)
140#define CLKCFG_HCLK_VIP (1<<14)
141#define CLKCFG_VIP (1<<15)
142#define CLKCFG_I2S (1<<16)
143#define CLKCFG_PCLK_I2S (1<<17)
144#define CLKCFG_UART0 (1<<18)
145#define CLKCFG_UART1 (1<<19)
146#define CLKCFG_I2C (1<<20)
147#define CLKCFG_SPI (1<<21)
148#define CLKCFG_SD (1<<22)
149#define CLKCFG_PCLK_LSADC (1<<23)
150#define CLKCFG_LSADC (1<<24)
151#define CLKCFG_HCLK_HSADC (1<<25)
152#define CLKCFG_HSADC (1<<26)
153#define CLKCFG_GPIO (1<<27)
154#define CLKCFG_TIMER (1<<28)
155#define CLKCFG_PWM (1<<29)
156#define CLKCFG_RTC (1<<30)
157#define CLKCFG_WDT (1<<31)
158
127#define SCU_RSTCFG (*(volatile unsigned long *)(APB0_SCU + 0x1C)) 159#define SCU_RSTCFG (*(volatile unsigned long *)(APB0_SCU + 0x1C))
128#define SCU_PWM (*(volatile unsigned long *)(APB0_SCU + 0x20)) 160#define SCU_PWM (*(volatile unsigned long *)(APB0_SCU + 0x20))
129#define SCU_CPUPD (*(volatile unsigned long *)(APB0_SCU + 0x24)) 161#define SCU_CPUPD (*(volatile unsigned long *)(APB0_SCU + 0x24))
diff --git a/firmware/target/arm/rk27xx/adc-rk27xx.c b/firmware/target/arm/rk27xx/adc-rk27xx.c
index 48fab390e3..ff4ddcd797 100644
--- a/firmware/target/arm/rk27xx/adc-rk27xx.c
+++ b/firmware/target/arm/rk27xx/adc-rk27xx.c
@@ -31,7 +31,7 @@ unsigned short adc_read(int channel)
31 unsigned short result; 31 unsigned short result;
32 32
33 /* ungate lsadc clocks */ 33 /* ungate lsadc clocks */
34 SCU_CLKCFG &= ~(3<<23); 34 SCU_CLKCFG &= ~(CLKCFG_LSADC|CLKCFG_PCLK_LSADC);
35 35
36 /* wait a bit for clock to stabilize */ 36 /* wait a bit for clock to stabilize */
37 udelay(10); 37 udelay(10);
@@ -51,7 +51,7 @@ unsigned short adc_read(int channel)
51 result = (ADC_DATA & 0x3ff); 51 result = (ADC_DATA & 0x3ff);
52 52
53 /* turn off lsadc clock when not in use */ 53 /* turn off lsadc clock when not in use */
54 SCU_CLKCFG |= (3<<23); 54 SCU_CLKCFG |= (CLKCFG_LSADC|CLKCFG_PCLK_LSADC);
55 55
56 return result; 56 return result;
57} 57}
diff --git a/firmware/target/arm/rk27xx/backlight-rk27xx.c b/firmware/target/arm/rk27xx/backlight-rk27xx.c
index ba056e8b67..f95a63ecde 100644
--- a/firmware/target/arm/rk27xx/backlight-rk27xx.c
+++ b/firmware/target/arm/rk27xx/backlight-rk27xx.c
@@ -97,7 +97,7 @@ void _backlight_on(void)
97 lcd_enable(true); 97 lcd_enable(true);
98#endif 98#endif
99 /* enable PWM clock */ 99 /* enable PWM clock */
100 SCU_CLKCFG &= ~(1<<29); 100 SCU_CLKCFG &= ~CLKCFG_PWM;
101 101
102 /* set output pin as PWM pin */ 102 /* set output pin as PWM pin */
103 SCU_IOMUXB_CON |= (1<<11); /* type<<11<<channel */ 103 SCU_IOMUXB_CON |= (1<<11); /* type<<11<<channel */
@@ -115,7 +115,7 @@ void _backlight_off(void)
115 PWMT0_CTRL &= ~(1<<3) | (1<<0); 115 PWMT0_CTRL &= ~(1<<3) | (1<<0);
116 116
117 /* disable PWM clock */ 117 /* disable PWM clock */
118 SCU_CLKCFG |= (1<<29); 118 SCU_CLKCFG |= CLKCFG_PWM;
119#ifdef HAVE_LCD_ENABLE 119#ifdef HAVE_LCD_ENABLE
120 lcd_enable(false); 120 lcd_enable(false);
121#endif 121#endif
diff --git a/firmware/target/arm/rk27xx/i2c-rk27xx.c b/firmware/target/arm/rk27xx/i2c-rk27xx.c
index 3535c68e42..093fe702f2 100644
--- a/firmware/target/arm/rk27xx/i2c-rk27xx.c
+++ b/firmware/target/arm/rk27xx/i2c-rk27xx.c
@@ -123,7 +123,7 @@ void i2c_init(void)
123 123
124 124
125 /* ungate i2c module clock */ 125 /* ungate i2c module clock */
126 SCU_CLKCFG &= ~(1<< 20); 126 SCU_CLKCFG &= ~CLKCFG_I2C;
127 127
128 I2C_OPR |= (1<<7); /* reset state machine */ 128 I2C_OPR |= (1<<7); /* reset state machine */
129 sleep(HZ/100); 129 sleep(HZ/100);
@@ -146,7 +146,7 @@ void i2c_init(void)
146 I2C_OPR |= (1<<6); /* enable i2c core */ 146 I2C_OPR |= (1<<6); /* enable i2c core */
147 147
148 /* turn off i2c module clock until we need to comunicate */ 148 /* turn off i2c module clock until we need to comunicate */
149 SCU_CLKCFG |= (1<< 20); 149 SCU_CLKCFG |= CLKCFG_I2C;
150} 150}
151 151
152int i2c_write(unsigned char slave, int address, int len, 152int i2c_write(unsigned char slave, int address, int len,
@@ -159,7 +159,7 @@ int i2c_write(unsigned char slave, int address, int len,
159 i2c_iomux(slave); 159 i2c_iomux(slave);
160 160
161 /* ungate i2c clock */ 161 /* ungate i2c clock */
162 SCU_CLKCFG &= ~(1<<20); 162 SCU_CLKCFG &= ~CLKCFG_I2C;
163 163
164 /* clear all flags */ 164 /* clear all flags */
165 I2C_ISR = 0x00; 165 I2C_ISR = 0x00;
@@ -200,7 +200,7 @@ int i2c_write(unsigned char slave, int address, int len,
200 200
201end: 201end:
202 mutex_unlock(&i2c_mtx); 202 mutex_unlock(&i2c_mtx);
203 SCU_CLKCFG |= (1<<20); 203 SCU_CLKCFG |= CLKCFG_I2C;
204 return ret; 204 return ret;
205} 205}
206 206
@@ -213,7 +213,7 @@ int i2c_read(unsigned char slave, int address, int len, unsigned char *data)
213 i2c_iomux(slave); 213 i2c_iomux(slave);
214 214
215 /* ungate i2c module clock */ 215 /* ungate i2c module clock */
216 SCU_CLKCFG &= ~(1<<20); 216 SCU_CLKCFG &= ~CLKCFG_I2C;
217 217
218 /* clear all flags */ 218 /* clear all flags */
219 I2C_ISR = 0x00; 219 I2C_ISR = 0x00;
@@ -270,6 +270,6 @@ int i2c_read(unsigned char slave, int address, int len, unsigned char *data)
270 270
271end: 271end:
272 mutex_unlock(&i2c_mtx); 272 mutex_unlock(&i2c_mtx);
273 SCU_CLKCFG |= (1<<20); 273 SCU_CLKCFG |= CLKCFG_I2C;
274 return ret; 274 return ret;
275} 275}
diff --git a/firmware/target/arm/rk27xx/kernel-rk27xx.c b/firmware/target/arm/rk27xx/kernel-rk27xx.c
index 54a2230384..26911c0ad6 100644
--- a/firmware/target/arm/rk27xx/kernel-rk27xx.c
+++ b/firmware/target/arm/rk27xx/kernel-rk27xx.c
@@ -39,7 +39,7 @@ void tick_start(unsigned int interval_in_ms)
39 unsigned int cycles = 50000 * interval_in_ms; 39 unsigned int cycles = 50000 * interval_in_ms;
40 40
41 /* enable timer clock */ 41 /* enable timer clock */
42 SCU_CLKCFG &= ~(1<<28); 42 SCU_CLKCFG &= ~CLKCFG_TIMER;
43 43
44 /* configure timer0 */ 44 /* configure timer0 */
45 TMR0LR = cycles; 45 TMR0LR = cycles;
diff --git a/firmware/target/arm/rk27xx/pcm-rk27xx.c b/firmware/target/arm/rk27xx/pcm-rk27xx.c
index e4318de408..56c191a0d6 100644
--- a/firmware/target/arm/rk27xx/pcm-rk27xx.c
+++ b/firmware/target/arm/rk27xx/pcm-rk27xx.c
@@ -61,7 +61,7 @@ void pcm_play_dma_stop(void)
61 61
62static void hdma_i2s_transfer(const void *addr, size_t size) 62static void hdma_i2s_transfer(const void *addr, size_t size)
63{ 63{
64 SCU_CLKCFG &= ~(1<<3); /* enable HDMA clock */ 64 SCU_CLKCFG &= ~CLKCFG_HDMA; /* enable HDMA clock */
65 65
66 commit_discard_dcache_range(addr, size); 66 commit_discard_dcache_range(addr, size);
67 67
@@ -117,12 +117,12 @@ void pcm_play_dma_pause(bool pause)
117{ 117{
118 if(pause) 118 if(pause)
119 { 119 {
120 SCU_CLKCFG |= (1<<3); 120 SCU_CLKCFG |= CLKCFG_HDMA;
121 locked = 1; 121 locked = 1;
122 } 122 }
123 else 123 else
124 { 124 {
125 SCU_CLKCFG &= ~(1<<3); 125 SCU_CLKCFG &= ~CLKCFG_HDMA;
126 locked = 0; 126 locked = 0;
127 } 127 }
128} 128}
@@ -148,8 +148,7 @@ static void i2s_init(void)
148#endif 148#endif
149 149
150 /* enable i2s clocks */ 150 /* enable i2s clocks */
151 SCU_CLKCFG &= ~((1<<17) | /* i2s_pclk */ 151 SCU_CLKCFG &= ~(CLKCFG_PCLK_I2S | CLKCFG_I2S);
152 (1<<16)); /* i2s_clk */
153 152
154 /* configure I2S module */ 153 /* configure I2S module */
155 I2S_IER = 0; /* disable all i2s interrupts */ 154 I2S_IER = 0; /* disable all i2s interrupts */
diff --git a/firmware/target/arm/rk27xx/sd-rk27xx.c b/firmware/target/arm/rk27xx/sd-rk27xx.c
index 87a9e37b71..a6049e7154 100644
--- a/firmware/target/arm/rk27xx/sd-rk27xx.c
+++ b/firmware/target/arm/rk27xx/sd-rk27xx.c
@@ -401,7 +401,7 @@ static void init_controller(void)
401 SCU_IOMUXA_CON |= IOMUX_SD; 401 SCU_IOMUXA_CON |= IOMUX_SD;
402 402
403 /* enable and unmask SD interrupts in interrupt controller */ 403 /* enable and unmask SD interrupts in interrupt controller */
404 SCU_CLKCFG &= ~(1<<22); 404 SCU_CLKCFG &= ~CLKCFG_SD;
405 INTC_IMR |= (1<<10); 405 INTC_IMR |= (1<<10);
406 INTC_IECR |= (1<<10); 406 INTC_IECR |= (1<<10);
407 407
@@ -729,12 +729,12 @@ void sd_enable(bool on)
729 /* enable or disable clock signal for SD module */ 729 /* enable or disable clock signal for SD module */
730 if (on) 730 if (on)
731 { 731 {
732 SCU_CLKCFG &= ~(1<<22); 732 SCU_CLKCFG &= ~CLKCFG_SD;
733 led(true); 733 led(true);
734 } 734 }
735 else 735 else
736 { 736 {
737 SCU_CLKCFG |= (1<<22); 737 SCU_CLKCFG |= CLKCFG_SD;
738 led(false); 738 led(false);
739 } 739 }
740} 740}
diff --git a/firmware/target/arm/rk27xx/system-rk27xx.c b/firmware/target/arm/rk27xx/system-rk27xx.c
index d264476328..327ef73422 100644
--- a/firmware/target/arm/rk27xx/system-rk27xx.c
+++ b/firmware/target/arm/rk27xx/system-rk27xx.c
@@ -130,20 +130,20 @@ void system_init(void)
130 MCSDR_T_RCD = 1; /* active to RD/WR delay */ 130 MCSDR_T_RCD = 1; /* active to RD/WR delay */
131 131
132 /* turn off clock for unused modules */ 132 /* turn off clock for unused modules */
133 SCU_CLKCFG |= (1<<31) | /* WDT pclk */ 133 SCU_CLKCFG |= CLKCFG_WDT | /* WDT pclk */
134 (1<<30) | /* RTC pclk */ 134 CLKCFG_RTC | /* RTC pclk */
135 (1<<26) | /* HS_ADC clock */ 135 CLKCFG_HSADC | /* HS_ADC clock */
136 (1<<25) | /* HS_ADC HCLK */ 136 CLKCFG_HCLK_HSADC | /* HS_ADC HCLK */
137 (1<<21) | /* SPI clock */ 137 CLKCFG_SPI | /* SPI clock */
138 (1<<19) | /* UART1 clock */ 138 CLKCFG_UART1 | /* UART1 clock */
139 (1<<18) | /* UART0 clock */ 139 CLKCFG_UART0 | /* UART0 clock */
140 (1<<15) | /* VIP clock */ 140 CLKCFG_VIP | /* VIP clock */
141 (1<<14) | /* VIP HCLK */ 141 CLKCFG_HCLK_VIP | /* VIP HCLK */
142 (1<<13) | /* LCDC clock */ 142 CLKCFG_LCDC | /* LCDC clock */
143 (1<<9) | /* NAND HCLK */ 143 CLKCFG_NAND | /* NAND HCLK */
144 (1<<5) | /* USB host HCLK */ 144 CLKCFG_UHC | /* USB host HCLK */
145 (1<<1) | /* DSP clock */ 145 CLKCFG_DSP | /* DSP clock */
146 (1<<0); /* OTP clock (dunno what it is */ 146 CLKCFG_OTP; /* OTP clock (dunno what it is */
147 147
148 /* turn off DSP pll */ 148 /* turn off DSP pll */
149 SCU_PLLCON2 |= (1<<22); 149 SCU_PLLCON2 |= (1<<22);
@@ -157,7 +157,7 @@ void system_init(void)
157void system_reboot(void) 157void system_reboot(void)
158{ 158{
159 /* use Watchdog to reset */ 159 /* use Watchdog to reset */
160 SCU_CLKCFG &= ~(1<<31); 160 SCU_CLKCFG &= ~CLKCFG_WDT;
161 WDTLR = 1; 161 WDTLR = 1;
162 WDTCON = (1<<4) | (1<<3); 162 WDTCON = (1<<4) | (1<<3);
163 163
diff --git a/firmware/target/arm/rk27xx/usb-drv-rk27xx.c b/firmware/target/arm/rk27xx/usb-drv-rk27xx.c
index 401df17133..9fdfe64f62 100644
--- a/firmware/target/arm/rk27xx/usb-drv-rk27xx.c
+++ b/firmware/target/arm/rk27xx/usb-drv-rk27xx.c
@@ -642,7 +642,7 @@ void usb_drv_init(void)
642 int ep_num; 642 int ep_num;
643 643
644 /* enable USB clock */ 644 /* enable USB clock */
645 SCU_CLKCFG &= ~(1<<6); 645 SCU_CLKCFG &= ~CLKCFG_UDC;
646 646
647 /* 1. do soft disconnect */ 647 /* 1. do soft disconnect */
648 DEV_CTL = DEV_SELF_PWR; 648 DEV_CTL = DEV_SELF_PWR;