linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Ryuichi Oikawa <roikawa@rr.iij4u.or.jp>
To: linuxppc-dev@lists.linuxppc.org
Subject: PowerDomain 3940UWD
Date: Fri, 10 Sep 1999 02:14:36 +0900	[thread overview]
Message-ID: <19990910021436Q.roikawa@rr.iij4u.or.jp> (raw)


Hello all,

I've tried Adaptec PowerDomain 3094UWD, dual channel UW SCSI card
with PCI-PCI bridge and two SCSI controllers under the bridge,
and I noticed driver related and OF related problems.

First I tried vger 2.2.12 kernel that caused machine check exception
at first IO write transaction. I thought that this was normal because
OF didn't properly set up P2P bridge's IO forwarding window.
The real problem was this part(aic7xxx.c):

#ifdef MMAPIO
          if ( !(temp_p->flags & AHC_MULTI_CHANNEL) ||
               ((temp_p->chip != (AHC_AIC7870 | AHC_PCI)) &&
                (temp_p->chip != (AHC_AIC7880 | AHC_PCI))) )
          {
	   ...... select MMIO and does ioremap ....
           ...... if it fails select normal IO ....
	  }
#endif

that rejected my SCSI card from MMIO forcing normal IO resulting in machin
check. So I had to ignore this statement by #if !defined(__powerpc__) ...
#endif statement.

Does anyone know what is this restriction for?


After that aic7xxx.c properly detected two SCSI chips but entered in a
timeout/resetting loop:-(  Apparently interrupts weren't fixed-up by
pcibios_fixup. So I scanned OF searching for correnct IRQ number and
found it at AAPL,interrupts field of P2P bridge. SCSI controllers didn't
have any AAPL,interrupts of course. It seems OF inserts AAPL,interrupts
only at the top node of the slot when it detects a card in the physical
slot. Therefore I had to change arch/ppc/kernel/prom.c as 

--- prom.c.orig	Sun Aug 29 00:22:21 1999
+++ prom.c	Thu Sep  9 22:38:07 1999
@@ -915,8 +915,12 @@
 	}
 
 	ip = (int *) get_property(np, "AAPL,interrupts", &l);
-	if (ip == 0)
-		ip = (int *) get_property(np, "interrupts", &l);
+	if (ip == 0) {
+	  if(get_property(np, "AAPL,slot-name", &l) != 0 && np->parent != 0)
+	    ip = (int *) get_property(np->parent, "AAPL,interrupts", &l);
+	  else
+	    ip = (int *) get_property(np, "interrupts", &l);
+	}
 	if (ip != 0) {
 		np->intrs = (struct interrupt_info *) mem_start;
 		np->n_intrs = l / sizeof(int);

,and now aic7xxx.c is working fine for both SCSI channel.

I don't know if it is OF(PowerMac8500, OF 1.0.5) version specific,
or SCSI card specific, or PowerMac OF nature. Any ideas?


Regards,

Ryuichi Oikawa
roikawa@rr.iij4u.or.jp


** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/

             reply	other threads:[~1999-09-09 17:14 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1999-09-09 17:14 Ryuichi Oikawa [this message]
1999-09-09 18:14 ` PowerDomain 3940UWD Michel Lanners
1999-09-11 17:57   ` Ryuichi Oikawa
1999-09-12 21:02     ` Michel Lanners
1999-09-18 19:07       ` Ryuichi Oikawa

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=19990910021436Q.roikawa@rr.iij4u.or.jp \
    --to=roikawa@rr.iij4u.or.jp \
    --cc=linuxppc-dev@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).