From: Hartvig Ekner <hartvig@ekner.info>
To: Linux MIPS mailing list <linux-mips@linux-mips.org>
Subject: Patch to disable PCI coherency on AU1500 platforms
Date: Tue, 01 Apr 2003 14:30:10 +0200 [thread overview]
Message-ID: <3E898652.2717AEF2@ekner.info> (raw)
[-- Attachment #1: Type: text/plain, Size: 501 bytes --]
The patch below sets the NC bit in the PCI_CFG register to disable HW coherency when
running non-coherent. Until now, this bit was cleared which means corruption when using PCI
DMA masters, even if the kernel was correctly compiled with CONFIG_NONCOHERENT_IO.
Pb1500 specific notes: I don't have a PB1500, so I cannot test if it works there. Note: I also
removed what I think was an extraneous write to the PCI_CMEM register, so if somebody
could test this on a PB1500 it would be great.
/Hartvig
[-- Attachment #2: setup_patch --]
[-- Type: text/plain, Size: 2467 bytes --]
Index: db1x00/setup.c
===================================================================
RCS file: /home/cvs/linux/arch/mips/au1000/db1x00/Attic/setup.c,v
retrieving revision 1.1.2.4
diff -u -r1.1.2.4 setup.c
--- db1x00/setup.c 21 Mar 2003 19:00:46 -0000 1.1.2.4
+++ db1x00/setup.c 1 Apr 2003 12:14:54 -0000
@@ -78,9 +78,8 @@
void __init au1x00_setup(void)
{
char *argptr;
- u32 pin_func, static_cfg0;
- u32 sys_freqctrl, sys_clksrc;
- u32 prid = read_c0_prid();
+ u32 pin_func;
+// u32 prid = read_c0_prid();
argptr = prom_getcmdline();
@@ -187,6 +186,19 @@
#ifdef CONFIG_BLK_DEV_IDE
ide_ops = &std_ide_ops;
+#endif
+
+#ifdef CONFIG_PCI
+ /* Although YAMON has setup the PCI controller, some things
+ may need to change. Eventually, all the PCI initialization
+ should be done here (as in eg. ../pb1500/setup.c)
+ */
+
+#ifdef CONFIG_NONCOHERENT_IO
+ /* Must disable PCI coherency if running non-coherent */
+
+ au_writel(au_readl(Au1500_PCI_CFG) | (1<<16), Au1500_PCI_CFG);
+#endif
#endif
#if 0
Index: pb1500/setup.c
===================================================================
RCS file: /home/cvs/linux/arch/mips/au1000/pb1500/setup.c,v
retrieving revision 1.1.2.12
diff -u -r1.1.2.12 setup.c
--- pb1500/setup.c 21 Mar 2003 19:00:47 -0000 1.1.2.12
+++ pb1500/setup.c 1 Apr 2003 12:14:54 -0000
@@ -35,6 +35,7 @@
#include <linux/console.h>
#include <linux/mc146818rtc.h>
#include <linux/delay.h>
+#include <linux/proc_fs.h>
#include <asm/cpu.h>
#include <asm/bootinfo.h>
@@ -90,6 +91,7 @@
char *argptr;
u32 pin_func, static_cfg0;
u32 sys_freqctrl, sys_clksrc;
+ u32 pcicfg;
argptr = prom_getcmdline();
@@ -232,15 +234,25 @@
#ifdef CONFIG_PCI
// Setup PCI bus controller
- au_writel(0, Au1500_PCI_CMEM);
- au_writel(0x00003fff, Au1500_CFG_BASE);
+
+ au_writel(0x00003fff, Au1500_PCI_CMEM);
+
#if defined(__MIPSEB__)
- au_writel(0xf | (2<<6) | (1<<4), Au1500_PCI_CFG);
+ pcicfg = 0xf | (2<<6) | (1<<4);
#else
- au_writel(0xf, Au1500_PCI_CFG);
+ pcicfg = 0xf;
#endif
+
+#ifdef CONFIG_NONCOHERENT_IO
+ /* Must disable PCI coherency if running non-coherent */
+
+ pcicfg |= (1<<16);
+#endif
+
+ au_writel(pcicfg, Au1500_PCI_CFG);
+
au_writel(0xf0000000, Au1500_PCI_MWMASK_DEV);
- au_writel(0, Au1500_PCI_MWBASE_REV_CCL);
+ au_writel(0, Au1500_PCI_MWBASE_REV_CCL);
au_writel(0x02a00356, Au1500_PCI_STATCMD);
au_writel(0x00003c04, Au1500_PCI_HDRTYPE);
au_writel(0x00000008, Au1500_PCI_MBAR);
next reply other threads:[~2003-04-01 12:22 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-04-01 12:30 Hartvig Ekner [this message]
2003-04-01 18:30 ` Patch to disable PCI coherency on AU1500 platforms Pete Popov
2003-04-01 20:07 ` Hartvig Ekner
2003-04-01 20:40 ` Pete Popov
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=3E898652.2717AEF2@ekner.info \
--to=hartvig@ekner.info \
--cc=linux-mips@linux-mips.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.