From: Allen Curtis <acurtis@onz.com>
To: dan@embeddededge.com
Cc: linuxppc-embedded@lists.linuxppc.org
Subject: Misc 8260 fixes/options
Date: Tue, 27 Aug 2002 17:10:10 -0700 [thread overview]
Message-ID: <200208271710.10344.acurtis@onz.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 168 bytes --]
Added support for:
Custom reset vector
Local RAM allocation
fix in pgtable.c
etc..
--
All things come to those who wait. Some of us just have to wait a little
longer...
[-- Attachment #2: 8260misc.patch --]
[-- Type: text/x-diff, Size: 6797 bytes --]
# This is a BitKeeper generated patch for the following project:
# Project Name: Linux 2.4 for PowerPC development tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
# ChangeSet 1.1114.1.2 -> 1.1114.1.3
# arch/ppc/config.in 1.151 -> 1.152
# arch/ppc/kernel/ppc_ksyms.c 1.98 -> 1.99
# include/asm-ppc/commproc.h 1.4 -> 1.5
# arch/ppc/kernel/m8260_setup.c 1.38 -> 1.39
# arch/ppc/mm/pgtable.c 1.21 -> 1.22
# arch/ppc/8260_io/commproc.c 1.12 -> 1.13
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/08/26 acurtis@ws01.onz.com 1.1114.1.3
# Misc 8260 related enhancements and fixes.
# --------------------------------------------
#
diff -Nru a/arch/ppc/8260_io/commproc.c b/arch/ppc/8260_io/commproc.c
--- a/arch/ppc/8260_io/commproc.c Tue Aug 27 16:33:49 2002
+++ b/arch/ppc/8260_io/commproc.c Tue Aug 27 16:33:49 2002
@@ -37,6 +37,10 @@
static uint dp_alloc_top; /* Max offset + 1 */
static uint host_buffer; /* One page of host buffer */
static uint host_end; /* end + 1 */
+#ifdef CONFIG_8260_LRAM
+static uint ldram_buffer; /* Starting address for LDRAM */
+static uint ldram_end; /* end + 1 */
+#endif
cpm8260_t *cpmp; /* Pointer to comm processor space */
/* We allocate this here because it is used almost exclusively for
@@ -67,6 +71,13 @@
vpgaddr = host_buffer;
+#ifdef CONFIG_8260_LRAM
+ /* Local DRAM for CPM communication buffers
+ */
+ ldram_buffer = ioremap(CONFIG_8260_LRAM_BASE, CONFIG_8260_LRAM_SIZE);
+ ldram_end = ldram_buffer + CONFIG_8260_LRAM_BASE;
+#endif
+
/* Tell everyone where the comm processor resides.
*/
cpmp = (cpm8260_t *)commproc;
@@ -126,6 +137,35 @@
return(retloc);
}
+
+#ifdef CONFIG_8260_LRAM
+/* Due to CPM lockup problems, communication buffers should
+ * be allocated with this routine.
+ */
+uint
+m8260_cpm_lramalloc(uint size, uint align)
+{
+ uint retloc;
+ uint align_mask, off;
+ uint savebase;
+
+ align_mask = align - 1;
+ savebase = ldram_buffer;
+
+ if ((off = (ldram_buffer & align_mask)) != 0)
+ ldram_buffer += (align - off);
+
+ if ((ldram_buffer + size) >= ldram_end) {
+ ldram_buffer = savebase;
+ return(0);
+ }
+
+ retloc = ldram_buffer;
+ ldram_buffer += size;
+
+ return(retloc);
+}
+#endif
/* Set a baud rate generator. This needs lots of work. There are
* eight BRGs, which can be connected to the CPM channels or output
diff -Nru a/arch/ppc/config.in b/arch/ppc/config.in
--- a/arch/ppc/config.in Tue Aug 27 16:33:49 2002
+++ b/arch/ppc/config.in Tue Aug 27 16:33:49 2002
@@ -74,6 +74,10 @@
if [ "$CONFIG_EST8260" = "y" -o "$CONFIG_RPX6" = "y" ]; then
define_bool CONFIG_EMBEDDEDBOOT y
fi
+
+ if [ "$CONFIG_TQM8260" = "y" ]; then
+ define_bool CONFIG_8260_RTC_TMCNT
+ fi
fi
if [ "$CONFIG_40x" = "y" ]; then
@@ -379,6 +383,10 @@
fi
fi
+ bool "Set custom reset vector address" CONFIG_RESET_VECTOR
+ if [ "$CONFIG_RESET_VECTOR" = "y" ]; then
+ hex " Physical address of reset vector" CONFIG_RESET_VECTOR_ADDR 0xfff00100
+ fi
bool "Set custom kernel base address" CONFIG_KERNEL_START_BOOL
if [ "$CONFIG_KERNEL_START_BOOL" = "y" ]; then
hex " Virtual address of kernel base" CONFIG_KERNEL_START 0xc0000000
diff -Nru a/arch/ppc/kernel/m8260_setup.c b/arch/ppc/kernel/m8260_setup.c
--- a/arch/ppc/kernel/m8260_setup.c Tue Aug 27 16:33:49 2002
+++ b/arch/ppc/kernel/m8260_setup.c Tue Aug 27 16:33:49 2002
@@ -99,7 +99,7 @@
static static int
m8260_set_rtc_time(unsigned long time)
{
-#ifdef CONFIG_TQM8260
+#ifdef CONFIG_8260_RTC_TMCNT
((immap_t *)IMAP_ADDR)->im_sit.sit_tmcnt = time;
((immap_t *)IMAP_ADDR)->im_sit.sit_tmcntsc = 0x3;
#else
@@ -111,7 +111,7 @@
static unsigned long
m8260_get_rtc_time(void)
{
-#ifdef CONFIG_TQM8260
+#ifdef CONFIG_8260_RTC_TMCNT
return ((immap_t *)IMAP_ADDR)->im_sit.sit_tmcnt;
#else
/* Get time from the RTC.
@@ -132,6 +132,8 @@
*/
#ifdef CONFIG_TQM8260
startaddr = 0x40000104;
+#elif CONFIG_RESET_VECTOR
+ startaddr = CONFIG_RESET_VECTOR_ADDR;
#else
startaddr = 0xff000104;
#endif
@@ -146,13 +148,14 @@
static void
m8260_power_off(void)
{
- m8260_restart(NULL);
+ __cli();
+ while (1);
}
static void
m8260_halt(void)
{
- m8260_restart(NULL);
+ m8260_power_off();
}
diff -Nru a/arch/ppc/kernel/ppc_ksyms.c b/arch/ppc/kernel/ppc_ksyms.c
--- a/arch/ppc/kernel/ppc_ksyms.c Tue Aug 27 16:33:49 2002
+++ b/arch/ppc/kernel/ppc_ksyms.c Tue Aug 27 16:33:49 2002
@@ -353,6 +353,21 @@
EXPORT_SYMBOL(cpm_free_handler);
#endif /* CONFIG_8xx */
+#if defined(CONFIG_8260)
+extern uint m8260_cpm_dpalloc(uint size, uint align);
+extern uint m8260_cpm_hostalloc(uint size, uint align);
+extern void m8260_cpm_setbrg(uint brg, uint rate);
+extern void m8260_cpm_fastbrg(uint brg, uint rate, int div16);
+EXPORT_SYMBOL(m8260_cpm_dpalloc);
+EXPORT_SYMBOL(m8260_cpm_hostalloc);
+EXPORT_SYMBOL(m8260_cpm_setbrg);
+EXPORT_SYMBOL(m8260_cpm_fastbrg);
+#ifdef CONFIG_8260_LRAM
+extern uint m8260_cpm_lramalloc(uint size, uint align);
+EXPORT_SYMBOL(m8260_cpm_lramalloc);
+#endif
+#endif
+
EXPORT_SYMBOL(ret_to_user_hook);
EXPORT_SYMBOL(next_mmu_context);
EXPORT_SYMBOL(set_context);
diff -Nru a/arch/ppc/mm/pgtable.c b/arch/ppc/mm/pgtable.c
--- a/arch/ppc/mm/pgtable.c Tue Aug 27 16:33:49 2002
+++ b/arch/ppc/mm/pgtable.c Tue Aug 27 16:33:49 2002
@@ -356,6 +356,10 @@
/* is x a power of 2? */
#define is_power_of_2(x) ((x) != 0 && (((x) & ((x) - 1)) == 0))
+#define _128KB (128*1024U)
+#define _256MB (256*1024*1024U)
+#define is_size_ok(x) (!((x) < _128KB || (x) > _256MB))
+
/*
* Set up a mapping for a block of I/O.
* virt, phys, size must all be page-aligned.
@@ -373,7 +377,7 @@
/*
* Use a BAT for this if possible...
*/
- if (io_bat_index < 2 && is_power_of_2(size)
+ if (io_bat_index < 2 && is_power_of_2(size) && is_size_ok(size)
&& (virt & (size - 1)) == 0 && (phys & (size - 1)) == 0) {
setbat(io_bat_index, virt, phys, size, flags);
++io_bat_index;
diff -Nru a/include/asm-ppc/commproc.h b/include/asm-ppc/commproc.h
--- a/include/asm-ppc/commproc.h Tue Aug 27 16:33:49 2002
+++ b/include/asm-ppc/commproc.h Tue Aug 27 16:33:49 2002
@@ -67,9 +67,13 @@
* and dual port ram.
*/
extern cpm8xx_t *cpmp; /* Pointer to comm processor */
-uint m8xx_cpm_dpalloc(uint size);
-uint m8xx_cpm_hostalloc(uint size);
-void m8xx_cpm_setbrg(uint brg, uint rate);
+uint m8260_cpm_dpalloc(uint size, uint align);
+uint m8260_cpm_hostalloc(uint size, uint align);
+#ifdef CONFIG_8260_LRAM
+extern uint m8260_cpm_lramalloc(uint size, uint align);
+#endif
+void m8260_cpm_setbrg(uint brg, uint rate);
+void m8260_cpm_fastbrg(uint brg, uint rate, int div16);
/* Buffer descriptors used by many of the CPM protocols.
*/
next reply other threads:[~2002-08-28 0:10 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-08-28 0:10 Allen Curtis [this message]
2002-08-28 5:46 ` Misc 8260 fixes/options Dan Malek
2002-08-28 14:35 ` Allen Curtis
2002-08-28 15:05 ` 601 BAT sizes Hollis Blanchard
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200208271710.10344.acurtis@onz.com \
--to=acurtis@onz.com \
--cc=dan@embeddededge.com \
--cc=linuxppc-embedded@lists.linuxppc.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).