NCR53C8XX problems

NCR53C8XX problems

Post by Darin Smit » Wed, 12 Apr 2000 04:00:00



Howdy everybody,

Sorry to cross-post & risk starting some kind of holy war here, but I'm
stuck.

I'm running into a lot of difficulties getting an NCR53C825A (SCSI
controller) to work with Linux kernel 2.2.14 on a custom PowerPC (750)
based board.  The driver originates from 386bsd and FreeBSD and is
ported to NetBSD and Linux...thus the choice of groups to xpost to,
hoping someone can shed some light on the matter.

We currently have it running nicely on a Linux 2.0.30 based system,
using version 1.18h of the driver.  Sometime between Linux 2.0.27 and
2.0.38 the driver changed enough that it wouldn't work for us.  I don't
know the specifics because I wasn't here at the time.
Now, we are in an effort to get to the 2.2.x series of kernels (for
various reasons).

At any rate, as I understand it, the messages they were seeing back then
(going from 2.0.29 or 30 to 2.0.38) were the same as I'm seeing now:

ncr53c8xx: at PCI bus 0, device 12, function 0
ncr53c8xx: PCI_CACHE_LINE_SIZE not set, features based on CACHE LINE
SIZE not us
ed.
ncr53c8xx: 53c825a detected
ncr53c825a-0: rev=0x14, base=0x1ffeb00, io_port=0x1000000, irq=11
ncr53c825a-0: ID 7, Fast-10, Parity Checking
ncr53c825a-0: on-chip RAM at 0x1fff000
CACHE TEST FAILED: ncr wrote 2, host read 0.
CACHE TEST FAILED: ncr wrote 2, read back 0.
CACHE INCORRECTLY CONFIGURED.
ncr53c825a-0: detaching...
scsi : 0 hosts.
scsi : detected total.

Using 2.0.30 with v1.18h of the driver, we get this output:
ncr53c8xx:
setup=disc:y,specf:y,ultra:y,tags:0,sync:255,burst:7,wide:y,diff:0
ncr53c8xx:
setup=mpar:y,spar:y,fsn=n,verb:1,debug:0x0,led:n,settle:2,irqm:0
ncr53c8xx: at PCI bus 0, device 12, function 0
IRQ from table (900ffbc8) - dev: 12, val: 1
SCSI: Mapped base moved from 3AFFEB00 to 01ffeb00
ncr53c8xx: unit=0 chip=825 rev=0x0 base=0x1ffeb00, io_port=0x1000000,
irq=11
Rewrite script 904de824..904df6e8 - 90b150c0
Rewrite script 904df6e8..904e0570 - 90b15f84
ncr53c825-0: requesting shared irq 11 (dev_id=0x90b14080)
ncr53c825-0: resetting, command processing suspended for 2 seconds
ncr53c825-0: restart (scsi reset).
ncr53c825-0: initial value of dmode/dcntl/ctest3/4/5 = (hex)
c0/00/00/00/00
ncr53c825-0: final value of dmode/dcntl/ctest3/4/5 = (hex)
ca/00/00/00/00
scsi0 : ncr53c8xx - revision 1.18h
scsi : 1 host.
Started kswapd v 1.4.2.2
ncr53c825-0: command processing resumed
  Vendor: WDIGTL    Model: WDE4550           Rev: 1.50
  Type:   Direct-Access                      ANSI SCSI revision: 02
Detected scsi disk sda at scsi0, channel 0, id 0, lun 0
scsi : detected 1 SCSI disk total.
ncr53c825-0-<0,0>: WIDE SCSI (16 bit) enabled.
ncr53c825-0-<0,0>: asynchronous.
SCSI device sda: hdwr sector= 512 bytes. Sectors= 8891602 [4341 MB] [4.3
GB]

**********************

One option is to play with the arguments (maybe use safe:y)...but I
unfortunately don't have the keyboard to play with at boot right now,
and I'm doing a network boot.  In any case, it would be nice to know
what is causing this...

So, after spending some time going through the sources I think that:
1) It is not an endianness issue, as only 2 of the cache tests failed
and the endianness code from Cort looks fine.
2) The SCRIPTS (tm) code changed significantly between these versions of
the driver.
3) Might be an io-mapping issue (this is using NCR_IOMAPPED), but it
finds the proper address, so I kind of doubt that too.

It looks like the code goes and stores a 1 (host_wr) in np->ncr_cache,
writes a 2 (ncr_wr) to the NCR's nc_temp register, then runs some kind
of "snooptest" script.  Then it reads back the value in np->ncr_cache as
host_rd. It copies the value from the register nc_scratcha to ncr_rd and
copies the value from register nc_temp to ncr_bk.

Then it performs the following tests:
compare host_wr & ncr_rd...if !=, error.  (We get no error here)
compare host_rd & ncr_wr...if !=, error.  (We get an error here:
ncr_wr=2, host_rd=0)
compare ncr_bk & ncr_wr...if !=, error.  (We get an error here:
ncr_wr=2, ncr_bk=0)

So I must conclude that it is expected that the "snooptest" will store
the value from np->ncr_cache (host_wr) in the nc_scratcha register, and
will store the value from nc_temp in np->ncr_cache.  What happens to
nc_temp?  Obviously, it is getting slam-dunked by something...we wrote a
2, did the script thing, and read back a 0.

There is some strangeness here.  Also the complaint about
PCI_CACHE_LINE_SIZE not being set.  It seems that the old driver didn't
have that functionality.

Looks like this is coming from:
        /*
         * Fix up for recent chips that support CACHE LINE SIZE.
         * If PCI config space is not OK, remove features that shall not
be
         * used by the chip. No need to trigger possible chip bugs.
         */

        if ((chip->features & FE_CLSE) && cache_line_size == 0) {
                chip->features &= ~FE_CACHE_SET;
                printk("ncr53c8xx: PCI_CACHE_LINE_SIZE not set, features
based o
n CACHE LINE SIZE not used.\n");
        }

I've just now undef'ed the SCSI_NCR_PCI_FIX_UP_SUPPORT in
sym53c8xx_defs.h to keep from even reaching that code but haven't gotten
the opportunity to try it out yet.  Has anyone else seen this & have any
tips on what it might be (and how to get around it)?

The hardware is mostly PReP compliant:  RTC moved to Watchdog timer
location because they are on the same chip, no keyboard controller, no
VGA, serial console only.  I've worked around most of these issues using
equivalent "creative programming" to what was done to get 2.0.x kernels
running.  Our ethernet driver seems to work, as well as a driver written
in-house, it finds the serial ports fine, and the PCI io-mappings seem
correct.  IRQ's look good too.

Any help is greatly appreciated!

--Darin

 
 
 

1. wd 8013 NIC and ncr53c8xx problem

Hello

I have a problem with my ncr53c810 card (Asus SC200) and a SMC Elite 16
T network card (WD 8013). My machine runs under Debian Linux 2.2 and it
uses the ncr53c8xx driver which is compiled into the kernel. When the
NCR-bios of the motherboard is turned on the NIC is not working although
the wd.o module is loaded correctly and the eth0 interface is up. When I
turn the SDMS-bios support off everything works fine. At the moment I'm
booting from floppy and I can mount the SCSI partitions but I can't boot
from SCSI. So how to solve the SDMS-bios problem? Is it possible that
the bios is interfering with the memory of my NICs?

My NICs are on:
eth0: irq=10, io=0x300, mem=0xCC000
eth1: irq=3,  io=0x280, mem=0xD0000

My ncr53c810 is on irq=11, io=0xe400

My machine:
Debian 2.2 kernel 2.2.17, vanilla kernel, ncr53c8xx driver compiled into
kernel. To make SMC nic running according to ethernet HOWTO using kernel
parameter 'reserve=0x300,32,0x200,32 ether=10,0x300,eth0'
Asus P/I-TP55N motherboard, Asus SC200 SCSI adapter, 32 MB RAM, Pentium
133, 2 SMC Elite 16T network cards.

Kernelmessages concerning SCSI:
sym53c8xx: at PCI bus 0, device 12, function 0
sym53c8xx: not initializing, device not supported
ncr53c8xx: at PCI bus 0, device 12, function 0
ncr53c8xx: PCI_LATENCY_TIMER=0, bursting should'nt be allowed.
ncr53c8xx: 53c810 detected
ncr53c810-0: rev=0x01, base=0xdf800000, io_port=0xe400, irq=11
ncr53c810-0: ID 7, Fast-10, Parity Checking
ncr53c810-0: restart (scsi reset).scsi0 : ncr53c8xx - version 3.2a-2
scsi : 1 host.
  Vendor: IBM       Model: DCAS-34330        Rev: S60B
  Type:   Direct-Access                      ANSI SCSI revision: 02
Detected scsi disk sda at scsi0, channel 0, id 0, lun 0
  Vendor: IOMEGA    Model: ZIP 100           Rev: E.08
  Type:   Direct-Access                      ANSI SCSI revision: 02
Detected scsi removable disk sdb at scsi0, channel 0, id 2, lun 0
  Vendor: JVC       Model: XR-W2010          Rev: 1.51
  Type:   WORM                               ANSI SCSI revision: 02
Detected scsi CD-ROM sr0 at scsi0, channel 0, id 6, lun 0
ncr53c810-0-<0,0>: tagged command queue depth set to 4
scsi : detected 1 SCSI cdrom 2 SCSI disks total.
ncr53c810-0-<6,*>: device did not report SYNC.
Uniform CD-ROM driver Revision: 3.11
ncr53c810-0-<0,*>: FAST-5 SCSI 5.0 MB/s (200 ns, offset 8)
SCSI device sda: hdwr sector= 512 bytes. Sectors= 8467200 [4134 MB] [4.1
GB]
ncr53c810-0-<2,*>: device did not report SYNC.

Thank you in advance.

regards

-Olaf

Sent via Deja.com http://www.deja.com/
Before you buy.

2. WHAT IS THE $PKGDIR??? Netscape failes

3. ncr53c8xx problems with DAT drive

4. Reading audio CDs with Mitsumi CDROM

5. NCR53C8XX problem with kernel 2.2.3 setup

6. Any hope of Matrox Millennium on ODT 3.0?

7. ncr53c8xx and wd 8013 NIC problem

8. Kmail: Can you do IMAP and POP at the same time?

9. Problem with PCI SCSI ncr53c8xx

10. NCR53C8XX timeout problems, please help.

11. Problem compile with ncr53c8xx.

12. ncr53c8xx and wd 8013 NIC problem