Linux PARISC architecture development
 help / color / mirror / Atom feed
From: Grant Grundler <grundler@parisc-linux.org>
To: "M. Grabert" <xam@cs.ucc.ie>
Cc: parisc-linux@lists.parisc-linux.org
Subject: [parisc-linux] Re: 2.6.4-rc1-pa3 siimage/NS87415 IDE progess (and another mystery)!
Date: Sun, 11 Jul 2004 16:18:29 -0600	[thread overview]
Message-ID: <20040711221829.GA27835@colo.lackof.org> (raw)
In-Reply-To: <Pine.LNX.4.58.0403091401480.16082@sal.ucc.ie>

[ Note the date! sorry...finally got around to this...]

On Tue, Mar 09, 2004 at 03:26:00PM +0000, M. Grabert wrote:
...
> But NOW I have some very weird problem for you!
...
> Anyway, the IDE hard drive works with the onboard IDE controller of the C3000!
> ... Well, not 100%. Let me explain. The mystery is:
> 
> IDE works fine (without DMA support, like in the 2.4 kernels), as long as
> I interrupt the automatic boot up and to a "sea" followed by a "bo pri".

I looked at what the firmware is doing "out of the ordinary"
and it's only writing three config space registers at 0x40-0x42 offset
of the suckyio IDE. I appended a patch that does the same thing.
Well, almost. We don't want to mask interrupts in CTRL2.

And it seems to work. At least with the CD-532E-B 32X ATAPI CD-ROM drive.
I only tried  to "dd" from a data CD with and without DMA enabled.
w/o DMA I get ~900KB/s and with DMA I get ~2.4MB/s (8K blocks).

Now if someone could explain WTH the following bits in suckyIO
mean, it would likely explain why the DMA didn't work before.
See the 87560.pdf (page 247) available from parisc-linux docs:
	
| 20.4.17 Control Register 1
...
| bit  Description
|  4   Channel 1 Drive 1 IDE/ATAPI Buffer Mode
|      0: Normal IDE prefetch buffer mode (default)
|      1: ATAPI buffer mode (no prefetching)

which I think is related to CTRL3 (0x42):
| 20.4.19 Control Register 3
...
| Bit Description
|  0  Channel 1 Pre-fetch Buffer.
|     0: Disabled
|     1: Enabled
|  1  Channel 2 Pre-fetch Buffer.
|     0: Disabled
|     1: Enabled

(NS87415 data sheet says essentially the identical thing)


Can you (or anyone else) test this patch with IDE disk drive on C3000?
If this works, I can get rid of the magic numbers (define constants)
and commit the code.

grant

Index: drivers/ide/pci/ns87415.c
===================================================================
RCS file: /var/cvs/linux-2.6/drivers/ide/pci/ns87415.c,v
retrieving revision 1.16
diff -u -p -r1.16 ns87415.c
--- drivers/ide/pci/ns87415.c	16 Jun 2004 18:47:42 -0000	1.16
+++ drivers/ide/pci/ns87415.c	11 Jul 2004 21:54:17 -0000
@@ -235,6 +235,25 @@ static ide_pci_device_t ns87415_chipset 
 
 static int __devinit ns87415_init_one(struct pci_dev *dev, const struct pci_device_id *id)
 {
+#ifdef CONFIG_PARISC
+	u8 progif = 0;
+
+	/* Firmware (IODC) doesn't init this unless we interrupt
+	 * the auto-boot and "search".
+	 */
+	pci_read_config_byte(dev, PCI_CLASS_PROG, &progif);
+	pci_write_config_byte(dev, PCI_CLASS_PROG, progif | 0x8f);
+
+	/* IODC clobbers the CTRL registers with:
+	 * CTRL1 = 0xf0 = "ATAPI buffer mode (no prefetching)" for everyone
+	 * CTRL2 = 0x03 = mask chan1/2 interrupts
+	 * CTRL3 = 0x00 = "disable prefetch buffer"/"Master Wait States"
+	 */
+	pci_write_config_byte(dev, 0x40, 0xf0); /* IDE_CTRL1 */
+	pci_write_config_byte(dev, 0x41, 0x00); /* IDE_CTRL2 */
+	pci_write_config_byte(dev, 0x42, 0x00); /* IDE_CTRL3 */
+#endif
+
 	ide_setup_pci_device(dev, &ns87415_chipset);
 	return 0;
 }
_______________________________________________
parisc-linux mailing list
parisc-linux@lists.parisc-linux.org
http://lists.parisc-linux.org/mailman/listinfo/parisc-linux

  reply	other threads:[~2004-07-11 22:18 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-03-09  6:29 [parisc-linux] Results of (IDE) kernel tests with modified io.c M. Grabert
2004-03-09  6:36 ` Randolph Chung
2004-03-09  7:11   ` M. Grabert
2004-03-09  7:29     ` Randolph Chung
2004-03-09 15:26       ` [parisc-linux] 2.6.4-rc1-pa3 siimage/NS87415 IDE progess (and another mystery)! M. Grabert
2004-07-11 22:18         ` Grant Grundler [this message]
2004-07-11 22:48           ` [parisc-linux] " M. Grabert
2004-07-11 23:14           ` Randolph Chung
2004-07-11 23:34             ` Randolph Chung
2004-07-12  0:12               ` Grant Grundler
2004-07-12  3:37               ` M. Grabert
2004-07-12  4:19                 ` M. Grabert
2004-07-12 16:14                   ` Grant Grundler
2004-07-12 18:51                     ` M. Grabert
2004-07-13  3:56                       ` Grant Grundler
2004-07-13  5:59                         ` Grant Grundler
2004-07-12 19:44                     ` Alan Cox
2004-07-12 16:05                 ` Grant Grundler
2004-07-12 18:39                   ` M. Grabert
2004-07-12 18:50                     ` Randolph Chung
2004-07-13  4:17                     ` Grant Grundler
2004-07-11 23:34             ` Grant Grundler
2004-03-09 18:38       ` [parisc-linux] Results of (IDE) kernel tests with modified io.c Grant Grundler
2004-03-09 15:25     ` John David Anglin

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=20040711221829.GA27835@colo.lackof.org \
    --to=grundler@parisc-linux.org \
    --cc=parisc-linux@lists.parisc-linux.org \
    --cc=xam@cs.ucc.ie \
    /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