Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 20 Jul 1996 16:01:07 +0200
From:      Marcus John <marcus.john@wiesbaden.netsurf.de>
To:        freebsd-questions@freebsd.org
Subject:   3C589 on Cirrus PCMCIA bridge CL6729
Message-ID:  <31F0E6A3.157E@wiesbaden.netsurf.de>

next in thread | raw e-mail | index | archive | help
I hope you're the expert I need!
(other experts are also welcome)

' cuz Nate Williams (you!) wrote:

> Hot diggity dog!  Glad to hear it.  The if_ep driver is generally
> 'better' than the if_zp driver since I've been the only one bringing
> over bug-fixes to the if_zp driver, and I haven't been very dedicated to
> the task.  In any case, if_zp will be gone by the time 2.2 is released
> when we have the ability to install via the PC-CARD stuff.
>
> Nate

I'm messing around with a quite modern notebook, 
which has a Cirrus PCMCIA
bridge (type CL 6729) attached on it's PCI-bus. 
After fiddling around with
the base stuff, like moving the PCMCIA base address 
from 0x3e0 to 0x3000 and
reducing MAX_SLOTS to 2 (system hangs otherwise 
when probing for cards), I'm
totally confused by now.

First approach was to get a 3C589-C working with 
the zp-driver and leaving out
the pcic- and crd-stuff. My result is that the 
zp-driver does attach to the card
if-and-only-if I user io=0x300 and irq=10, but no 
frames appear on the wire
(proof by another FreeBSD-box with bpf). In 
contrast to you mails with michael butler
the ep-driver does NOT recognize the 3C589 at all!
So how did he do it?

Second approach was to try 2.2-SNAP960501 with 
pcic- and crd-drivers. Again 50%
success. I get messages when cards are inserted and 
removed, but now drivers can be
bound. OK, I'm aware of that the zp-driver can only 
be used standalone. Therefore I
used a NE-2000 compatible PC-card, but again no 
driver bound. (btw this NE-2000
compatible card works fine, if I run the 
DOS-enabler first and do a soft-reboot to
FreeBSD afterwards - no pcic/crd-stuff neeeded).

So my questions are:

- Am I doing something completely wrong or is it 
just the wierd hardware?

- Why is the Cirrus brigde not properly decoded by 
the boot code, even though
  the boot code should be able to recognize this 
type?

- Which approach shall I further investigate to get 
this *!!* PC-card stuff working
  either wih the 3C589 or th NE-2000 compat.? 
(3C589 would be more interesting,
  because of the higher rates of the 16-bit 
interface)

- Where can I find the nep-driver, which is used in 
the sample configuration
  of /etc/pccard.conf? Is it still state of the 
art?

- What configuration entries are needed in my 
kernel and pccard.conf?

To make this a little bit easier here are:

*
* Verbose dmseg of the pcic/crd-kernel:
*
* (slight overflow due to my -add-ons- )
Calibrating clock(s) relative to mc146818A clock 
... i586 clock: 120282360 Hz, i8254
clock: 1193308 Hz
CLK_USE_I8254_CALIBRATION not specified - using 
default frequency
CLK_USE_I586_CALIBRATION not specified - using old 
calibration method
i586 clock: 0 Hz
CPU: Pentium (120.26-MHz 586-class CPU)
  Origin = "GenuineIntel"  Id = 0x526  Stepping=6
  Features=0x1bf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8>
real memory  = 25165824 (24576K bytes)

FreeBSD Kernel Configuration Utility - Version 1.0
 Type "help" for help or "visual" to go to the 
visual
 configuration interface (requires MGA/VGA display 
or
 serial terminal capable of displaying ANSI 
graphics).
config> ls
Device   port       irq   drq   iomem   iosize   
unit  flags      enabled
fdc0     0x3f0      6     2     0x0     0        0     
0x0        Yes
wdc0     0x1f0      14    -1    0x0     0        0     
0x0        Yes
wdc1     0x170      15    -1    0x0     0        1     
0x0Yes
sc0      0x60       1     -1    0x0     0        0     
0x0        Yes
sio0     0x3f8      4     -1    0x0     0        0     
0x0        Yes
sio1     0x2f8      3     -1    0x0     0        1     
0x0        Yes
lpt0     0xffffffff 7     -1    0x0     0        0     
0x0        Yes
psm0     0x60       12    -1    0x0     0        0     
0x0        Yes
ed0      0x320      11    -1    0xd8000 0        0     
0x0        No
ep0      0x300      11    -1    0x0     0        0     
0x0        Yes
zp0      0x300      11    -1    0xd0000 0        0     
0x0        No
npx0     0xf0       13    -1    0x0     0        0     
0x0        Yes
apm0     0x0        -1    -1    0x0     0        0     
0x0        Yes
config> en ed0
config> q
avail memory = 22675456 (22144K bytes)
BIOS Geometries:
 0:02903f3f 0..656=657 cylinders, 0..63=64 heads, 
1..63=63 sectors
 1:03feff00 0..1022=1023 cylinders, 0..255=256 
heads, 1..0=0 sectors
 2:03fdfe3f 0..1021=1022 cylinders, 0..254=255 
heads, 1..63=63 sectors
 3:01fe0100 0..510=511 cylinders, 0..1=2 heads, 
1..0=0 sectors
 0 accounted for
PC-Card Cirrus Logic PD672X (5 mem & 2 I/O windows)     
<===== Addl. debug by me
pcic: controller irq 10
                 *      Check for a card in this 
slot.
                setb (sp, PCIC_POWER, PCIC_PCPWRE| 
PCIC_DISRST);
                } else {
                        slotp->laststate = 
slotp->state = filled;
                        pccard_event(sp->slotp, 
card_inserted);
                }
                 */
                if (pcic_irq > 0)
                        putb(sp, PCIC_STAT_INT, 
(pcic_irq << 4) | 0xF);
                 *      Check for a card in this 
slot.
                setb (sp, PCIC_POWER, PCIC_PCPWRE| 
PCIC_DISRST);
                if ((getb (sp, PCIC_STATUS) & 
PCIC_CD) != PCIC_CD) {
                        slotp->laststate = 
slotp->state = empty;
                }
                 */
                if (pcic_irq > 0)
                        putb(sp, PCIC_STAT_INT, 
(pcic_irq << 4) | 0xF);
        }
        if (validslots)
                timeout(pcictimeout,0,hz/2);     
<==== End of my stuff
pcibus_setup(1):        mode 1 addr port (0x0cf8) 
is 0x80009070
pcibus_setup(1a):       mode1res=0x80000000 
(0x80000000)
pcibus_check:   device 0 is there (id=e8911060)
Probing for devices on PCI bus 0:
        configuration mode 1 allows 32 devices.
chip0 <generic PCI bridge (vendor=1060 device=e891 
subclass=0)> rev 176 on pci0:0
vga0 <VGA-compatible display device> rev 0 on 
pci0:17
        mapreg[10] type=0 addr=c0000000 
size=800000.
chip1 <generic PCI bridge (vendor=1060 device=e886 
subclass=1)> rev 178 on pci0:18:0
pci0:18:1: UMC, device=0x673a, class=storage (ide) 
[no driver assigned]
chip2 <generic PCI bridge (vendor=1013 device=1100 
subclass=5)> rev 254 int a irq ??
on pci0:23
        mapreg[10] type=1 addr=00003000 size=0004.
pci0: uses 8388608 bytes of memory from c0000000 
upto c07fffff.
pci0: uses 4 bytes of I/O space from 3000 upto 
3003.
Probing for devices on the ISA bus:
sc0 at 0x60-0x6f irq 1 on motherboard
sc0: VGA color <16 virtual consoles, flags=0x0>
pccard driver ed added
ed0 not found at 0x320
pccard driver sio added
sio0 at 0x3f8-0x3ff irq 4 on isa
sio0: type 16550A
sio1 at 0x2f8-0x2ff irq 3 on isa
sio1: type 16550A
lpt0 at 0x278-0x27f irq 7 on isa
lpt0: Interrupt-driven port
lp0: TCP/IP capable interface
psm0 at 0x60-0x63 irq 12 on motherboard
fdc0 at 0x3f0-0x3f7 irq 6 drq 2 on isa
fdc0: NEC 72065B
fd0: 1.44MB 3.5in
wdc0 at 0x1f0-0x1f7 irq 14 on isa
wdc0: unit 0 (wd0): <TOSHIBA MK2720FC>
wd0: 1295MB (2654064 sectors), 2633 cyls, 16 heads, 
63 S/T, 512 B/S
wdc1 at 0x170-0x177 irq 15 on isa
wdc1: unit 0 (atapi): <TOSHIBA CD-ROM 
XM-1302B/2865>, removable, intr, iordis
wcd0: 689Kb/sec, 128Kb cache, audio play, 255 
volume levels, ejectable tray
wcd0: no disc inside, unlocked
ep0 not found at 0x300
zp0: disabled, not probed.
npx0 on motherboard
npx0: INT 16 interface
apm0 on isa
apm: found APM BIOS version 53.14
imasks: bio c000c040, tty c003109a, net c003109a
Card inserted, slot 0                               
<=== NE-2000 in Slot
wd0s2: type 0x6, start 63, end = 717695, size 
717633 : OK
wd0s3: type 0xa5, start 717696, end = 1290239, size 
572544 : OK
wd0s4: type 0x63, start 1290240, end = 2653055, 
size 1362816 : OK
Slot 0, unfielded interrupt (0)
type = 0 type_str=PCCARD isa16bit=1 memsize=16384 
id_msize=16384
nic_addr = 320 ether=0:0:0:0:0:0
ed_probe_pccard: possible failure
....................dead :-(
Return IRQ=11
stray irq 11
Card removed, slot 0
Card inserted, slot 0

*
* Outpout of scanpci:
*
dracula[root-ttyp0/root]> scanpci
PCI says configuration type 1

PCI probing configuration type 1

pci bus 0x0 cardnum 0x00, vendor 0x1060 device 
0xe891
 UMC  Device unknown
  STATUS    0xe200  COMMAND 0x0006
  CLASS     0x06 0x00 0x00  REVISION 0xb0

pci bus 0x0 cardnum 0x11, vendor 0x102c device 
0x00dc
 CT  Device unknown
  STATUS    0x0280  COMMAND 0x01c3
  CLASS     0x03 0x00 0x00  REVISION 0x00
  BASE0     0xc0000000  addr 0xc0000000  MEM
  BASEROM   0x0c000000  addr 0x0c000000  
not-decode-enabled

pci bus 0x0 cardnum 0x12, vendor 0x1060 device 
0xe886
 UMC  Device unknown
  STATUS    0x0200  COMMAND 0x000f
  CLASS     0x06 0x01 0x00  REVISION 0xb2
  BIST      0x00  HEADER 0x80  LATENCY 0x00  CACHE 
0x00

pci bus 0x0 cardnum 0x17, vendor 0x1013 device 
0x1100
 Cirrus Logic CL 6729
  STATUS    0x8400  COMMAND 0x01c3
  CLASS     0x06 0x05 0x00  REVISION 0xfe
  BASE0     0x00003001  addr 0x00003000  I/O
  MAX_LAT   0x00  MIN_GNT 0x00  INT_PIN 0x01  
INT_LINE 0xff

PCI probing configuration type 2

*
* CIS-dump of the 3C589
*
Configuration data for card in slot 1
Tuple #1, code = 0x1 (Common memory descriptor), 
length = 2
    000:  00 ff
        Common memory device information:
                Device number 1, type No device, 
WPS = OFF
                Speed = No speed, Memory block size 
= reserved, 32 units
Tuple #2, code = 0x17 (Attribute memory 
descriptor), length = 3
    000:  43 02 ff
        Attribute memory device information:
                Device number 1, type EEPROM, WPS = 
OFF
                Speed = 150nS, Memory block size = 
8Kb, 1 units
Tuple #3, code = 0x20 (Manufacturer ID), length = 4
    000:  01 01 89 05
        PCMCIA ID = 0x101, OEM ID = 0x589
Tuple #4, code = 0x21 (Functional ID), length = 2
    000:  06 00
        Network/LAN adapter
Tuple #5, code = 0x15 (Version 1 info), length = 57
    000:  04 01 33 43 6f 6d 20 43 6f 72 70 6f 72 61 
74 69
    010:  6f 6e 00 33 43 35 38 39 00 54 50 2f 42 4e 
43 20
    020:  4c 41 4e 20 43 61 72 64 20 56 65 72 2e 20 
32 61
    030:  00 30 30 30 30 30 32 00 ff
        Version = 4.1, Manuf = [3Com 
Corporation],card vers = [3C589]
        Addit. info = [TP/BNC LAN Card Ver. 
2a],[000002]
Tuple #6, code = 0x1a (Configuration map), length = 
6
    000:  02 03 00 00 01 03
        Reg len = 3, config register addr = 
0x10000, last config = 0x3
        Registers: XX------
Tuple #7, code = 0x1b (Configuration entry), length 
= 15
    000:  c1 01 1d 71 55 35 55 54 e0 72 5d 64 30 ff 
ff
        Config index = 0x1(default)
        Interface byte = 0x1 (I/O)
        Vcc pwr:
                Nominal operating supply voltage: 5 
x 1V
                Max current average over 1 second: 
3 x 10mA
                Max current average over 10 ms: 5 x 
10mA
                Power down supply current: 5 x 1mA
        Wait scale Speed = 7.0 x 100 ns
        RDY/BSY scale Speed = 7.0 x 100 ns
        Card decodes 18 address lines, full 8/16 
Bit I/O
                IRQ modes: Level, Pulse
                IRQs:  IOCK 1 4 5 6 8 10 11 12 14
Tuple #8, code = 0x1b (Configuration entry), length 
= 7
    000:  03 01 71 55 26 26 54
        Config index = 0x3
        Vcc pwr:
                Nominal operating supply voltage: 5 
x 1V
                Max current average over 1 second: 
2 x 100mA
                Max current average over 10 ms: 2 x 
100mA
                Power down supply current: 5 x 1mA
Tuple #9, code = 0x19 (JEDEC descr for attribute 
memory), length = 3
    000:  00 00 ff
Tuple #10, code = 0x14 (No link), length = 0
Tuple #11, code = 0x10 (Checksum), length = 5
    000:  89 ff 80 00 00
        Checksum from offset -119, length 128, 
value is 0x0
Tuple #12, code = 0xff (Terminator), length = 218
    000:  00 03 00 00 00 00 00 00 43 32 20 54 45 41 
4d 2d
    010:  45 61 72 6c 20 41 6c 64 72 69 64 67 65 2c 
20 52
    020:  65 78 20 41 6c 6c 65 72 73 2c 20 52 75 73 
73 65
    030:  6c 6c 20 43 68 61 6e 67 2c 20 44 61 76 69 
64 20
    040:  43 68 69 68 2c 20 48 65 72 6d 61 6e 20 4c 
61 6f
    050:  2c 20 47 65 6e 65 20 4c 69 6e 2c 20 4c 69 
61 6e
    060:  67 20 4c 69 6e 2c 20 48 69 65 6e 20 4e 67 
75 79
    070:  65 6e 2c 20 4b 61 70 20 53 6f 68 2c 20 47 
61 72
    080:  79 20 57 61 6e 67 00 ff ff ff ff ff ff ff 
ff ff
    090:  ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
ff ff
    0a0:  ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
ff ff
    0b0:  ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
ff ff
    0c0:  ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
ff ff
    0d0:  ff ff ff ff ff ff ff ff ff ff
2 slots found

*
* CIS-dump of the NE-2000 compat.
*
Configuration data for card in slot 0
Tuple #1, code = 0x1 (Common memory descriptor), 
length = 2
    000:  dc ff
        Common memory device information:
                Device number 1, type Function 
specific, WPS = ON
                Speed = 100nS, Memory block size = 
reserved, 32 units
Tuple #2, code = 0x21 (Functional ID), length = 2
    000:  06 01
        Network/LAN adapter - POST initialize
Tuple #3, code = 0x15 (Version 1 info), length = 54
    000:  04 01 52 50 54 49 00 45 50 34 30 31 20 45 
74 68
    010:  65 72 6e 65 74 20 4e 45 32 30 30 30 20 43 
6f 6d
    020:  70 61 74 69 62 6c 65 00 43 49 53 56 31 30 
30 95
    030:  10 30 53 4c 00 ff
        Version = 4.1, Manuf = [RPTI],card vers = 
[EP401 Ethernet NE2000 Compatible]
        Addit. info = [CISV1000x95^P0SL],[ÿ]
Tuple #4, code = 0x1a (Configuration map), length = 
5
    000:  01 23 f8 03 03
        Reg len = 2, config register addr = 0x3f8, 
last config = 0x23
        Registers: XX------
Tuple #5, code = 0x1b (Configuration entry), length 
= 24
    000:  e0 81 1e 3f 55 c5 4b 5d 1e 36 56 01 8e 7d 
fc 2c
    010:  ca 60 00 03 1f 30 3c 9e
        Config index = 0x20(default)
        Interface byte = 0x81 (I/O)  wait signal 
supported
        Vcc pwr:
                Nominal operating supply voltage: 5 
x 1V
                Minimum operating supply voltage: 4 
x 1V, ext = 0x4b
                Maximum operating supply voltage: 
5.5 x 1V
                Continuous supply current: 1.5 x 
100mA
                Max current average over 1 second: 
3 x 100mA
                Max current average over 10 ms: 5 x 
100mA
        Vpp pwr:
                Nominal operating supply voltage: 
1.2 x 10V, ext = 0x7d
        Wait scale Speed = 2.0 x 10 us
        Card decodes 12 address lines, 8 Bit I/O 
only
                IRQ modes: Level
                IRQ level = 12
Tuple #6, code = 0x1b (Configuration entry), length 
= 7
    000:  21 08 ca 60 20 03 1f
        Config index = 0x21
        Card decodes 10 address lines, limited 8/16 
Bit I/O
                I/O address # 1: block start = 
0x320 block length = 0x20
Tuple #7, code = 0x1b (Configuration entry), length 
= 7
    000:  22 08 ca 60 40 03 1f
        Config index = 0x22
        Card decodes 10 address lines, limited 8/16 
Bit I/O
                I/O address # 1: block start = 
0x340 block length = 0x20
Tuple #8, code = 0x1b (Configuration entry), length 
= 7
    000:  23 08 ca 60 60 03 1f
        Config index = 0x23
        Card decodes 10 address lines, limited 8/16 
Bit I/O
                I/O address # 1: block start = 
0x360 block length = 0x20
Tuple #9, code = 0x14 (No link), length = 0
Tuple #10, code = 0xff (Terminator), length = 0
2 slots found


Many thanks for your time and effort!!!!

marcus.john@wiesbaden.netsurf.de



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?31F0E6A3.157E>