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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox