scummvm random work
[patches.git] / 0001-use-syscontrol-functions-where-possible.patch
CommitLineData
5e993f12 1From f2501ad7f47f0b912b53e3e2094e9bfe12f2a491 Mon Sep 17 00:00:00 2001
2From: Mike Frysinger <vapier.adi@gmail.com>
3Date: Fri, 4 Jan 2008 17:05:28 -0500
4Subject: [PATCH] use syscontrol functions where possible
5
6this works on my bf548-ezkit 0.1 and should use the bootrom func to
7program the memory which means the otp fps will be taken into account
8---
9 cpu/blackfin/initcode.c | 57 +++++++++++++++++++++++++++++-----------------
10 cpu/blackfin/reset.c | 8 +++++-
11 2 files changed, 42 insertions(+), 23 deletions(-)
12
13diff --git a/cpu/blackfin/initcode.c b/cpu/blackfin/initcode.c
14index 360caa8..1e39043 100644
15--- a/cpu/blackfin/initcode.c
16+++ b/cpu/blackfin/initcode.c
17@@ -299,34 +299,49 @@ void initcode(ADI_BOOT_DATA *bootstruct)
18 bfin_write_SIC_IWR(1);
19 #endif
20
21- serial_putc('L');
22+ /* With newer bootroms, we use the helper function to set up
23+ * the memory controller. Older bootroms lacks such helpers
24+ * so we do it ourselves.
25+ */
26+ if (BOOTROM_CAPS_SYSCONTROL) {
27+ serial_putc('S');
28
29- bfin_write_PLL_LOCKCNT(CONFIG_PLL_LOCKCNT_VAL);
30+ ADI_SYSCTRL_VALUES memory_settings;
31+ memory_settings.uwVrCtl = CONFIG_VR_CTL_VAL;
32+ memory_settings.uwPllCtl = CONFIG_PLL_CTL_VAL;
33+ memory_settings.uwPllDiv = CONFIG_PLL_DIV_VAL;
34+ memory_settings.uwPllLockCnt = CONFIG_PLL_LOCKCNT_VAL;
35+ syscontrol(SYSCTRL_WRITE | SYSCTRL_PLLCTL | SYSCTRL_PLLDIV | SYSCTRL_VRCTL | SYSCTRL_INTVOLTAGE, &memory_settings, NULL);
36+ } else {
37+ serial_putc('L');
38
39- serial_putc('A');
40+ bfin_write_PLL_LOCKCNT(CONFIG_PLL_LOCKCNT_VAL);
41
42- /* Only reprogram when needed to avoid triggering unnecessary
43- * PLL relock sequences.
44- */
45- if (bfin_read_VR_CTL() != CONFIG_VR_CTL_VAL) {
46- serial_putc('!');
47- bfin_write_VR_CTL(CONFIG_VR_CTL_VAL);
48- asm("idle;");
49- }
50+ serial_putc('A');
51
52- serial_putc('C');
53+ /* Only reprogram when needed to avoid triggering unnecessary
54+ * PLL relock sequences.
55+ */
56+ if (bfin_read_VR_CTL() != CONFIG_VR_CTL_VAL) {
57+ serial_putc('!');
58+ bfin_write_VR_CTL(CONFIG_VR_CTL_VAL);
59+ asm("idle;");
60+ }
61
62- bfin_write_PLL_DIV(CONFIG_PLL_DIV_VAL);
63+ serial_putc('C');
64
65- serial_putc('K');
66+ bfin_write_PLL_DIV(CONFIG_PLL_DIV_VAL);
67
68- /* Only reprogram when needed to avoid triggering unnecessary
69- * PLL relock sequences.
70- */
71- if (bfin_read_PLL_CTL() != CONFIG_PLL_CTL_VAL) {
72- serial_putc('!');
73- bfin_write_PLL_CTL(CONFIG_PLL_CTL_VAL);
74- asm("idle;");
75+ serial_putc('K');
76+
77+ /* Only reprogram when needed to avoid triggering unnecessary
78+ * PLL relock sequences.
79+ */
80+ if (bfin_read_PLL_CTL() != CONFIG_PLL_CTL_VAL) {
81+ serial_putc('!');
82+ bfin_write_PLL_CTL(CONFIG_PLL_CTL_VAL);
83+ asm("idle;");
84+ }
85 }
86
87 /* Since we've changed the SCLK above, we may need to update
88diff --git a/cpu/blackfin/reset.c b/cpu/blackfin/reset.c
89index b796740..be08d80 100644
90--- a/cpu/blackfin/reset.c
91+++ b/cpu/blackfin/reset.c
92@@ -8,6 +8,7 @@
93 #include <common.h>
94 #include <command.h>
95 #include <asm/blackfin.h>
96+#include <asm/mach-common/bits/bootrom.h>
97 #include "cpu.h"
98
99 /* A system soft reset makes external memory unusable so force
100@@ -19,7 +20,7 @@
101 * the core reset.
102 */
103 __attribute__ ((__l1_text__, __noreturn__))
104-void bfin_reset(void)
105+static void bfin_reset(void)
106 {
107 /* Wait for completion of "system" events such as cache line
108 * line fills so that we avoid infinite stalls later on as
109@@ -75,7 +76,10 @@ static inline void bfin_reset_trampoline(void)
110 if (board_reset)
111 board_reset();
112 while (1)
113- asm("jump (%0);" : : "a" (bfin_reset));
114+ if (0 /*BOOTROM_CAPS_SYSCONTROL -- current silicon is broken*/)
115+ syscontrol(SYSCTRL_SOFTRESET, NULL, NULL);
116+ else
117+ asm("jump (%0);" : : "a" (bfin_reset));
118 }
119
120 __attribute__ ((__noreturn__))
121--
1221.5.5.3
123