From owner-freebsd-questions Sat Jul 20 05:55:14 1996 Return-Path: owner-questions Received: (from root@localhost) by freefall.freebsd.org (8.7.5/8.7.3) id FAA14243 for questions-outgoing; Sat, 20 Jul 1996 05:55:14 -0700 (PDT) Received: from wiesbaden.netsurf.de (nero.wiesbaden.netsurf.de [194.163.168.140]) by freefall.freebsd.org (8.7.5/8.7.3) with SMTP id FAA14238 for ; Sat, 20 Jul 1996 05:55:04 -0700 (PDT) Received: from idefix by wiesbaden.netsurf.de with smtp (Smail3.1.28.1 #10) id m0uhbZZ-001leWC; Sat, 20 Jul 96 14:55 MET DST Message-ID: <31F0E6A3.157E@wiesbaden.netsurf.de> Date: Sat, 20 Jul 1996 16:01:07 +0200 From: Marcus John X-Mailer: Mozilla 2.01 (WinNT; I) MIME-Version: 1.0 To: freebsd-questions@freebsd.org Subject: 3C589 on Cirrus PCMCIA bridge CL6729 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Sender: owner-questions@freebsd.org X-Loop: FreeBSD.org Precedence: bulk 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 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 rev 176 on pci0:0 vga0 rev 0 on pci0:17 mapreg[10] type=0 addr=c0000000 size=800000. chip1 rev 178 on pci0:18:0 pci0:18:1: UMC, device=0x673a, class=storage (ide) [no driver assigned] chip2 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): 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): , 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