64 Commits

Author SHA1 Message Date
Warner Losh
53af1c8a3d TI cardbus bridges, 12xx and newer, have an interesting register. It
is the diagnostics register at offset 0x93.  When bit 5 is set in this
register, bits 4-7 in ExCA register 0x5 being 0000 are required for
pci interrupt routing.  When it is clear, then bit 4 of ExCA register
0x3 is used to enable it.

The only other issue is that when you route interrupts this way, you
must read ExCA register 0x4 in order to clear the interrupt, else you
get an interrupt storm.

Deal with this requirement by setting things up.  It is believed that
this won't hurt other chipsets, but other chipsets may require their
own work arounds.
2001-08-01 19:41:56 +00:00
Warner Losh
6d5c3c4c96 bsh and bst are unused in softc, except for setting them. We do use the
bsh and bst in the pcic_slot structures.
2001-07-31 15:53:17 +00:00
Warner Losh
1b64899001 Fix typo where I assigned the bus tag and not the bus handled. It
appears that this may be unused, but I'll keep it for the moment.

Noticed by: Shizuka Kudo <shizukakudo_99@yahoo.com>
2001-07-31 15:42:44 +00:00
Warner Losh
372458622f A bunch of interrupt related cleanup.
o Move PIOCSRESOURCE from pccard to pcic so the kernel can give pccardd
  better hints as to what resources to use.
o Implement an undocumented hw.pcic.interrupt_route to allow people that
  need to do so to route their interrupts in a non-standard way.
o Only preallocate a resource in probe if we're routing via pci.
o If we aren't routing via pci, then set the irq to use explicitly
  to defeat the automatic IRQ routing of the pci layer.

This, with the pccardd code should be close to what can be committed
to -stable.
2001-07-31 06:44:37 +00:00
Warner Losh
7e766053f8 Don't use a buffer for the state info from the TI chips. Just print
it directly.  Also, minor style(9) nits near one or two of these
sites.
2001-07-30 07:17:40 +00:00
Warner Losh
d13600a5af Introduce two new tunables from the boot loader.
hw.pcic.irq		Globally set the IRQ for all pcic devices' management
			interrupt (aka card status change or CSC interrupt)
			This is what used to be known as
			machdep.pccard.pcic_irq (which has been retained for
			now for compatibility).
hw.pcic.ignore_fuction_1 Ignores function 1 for all PCIC bridges by not
			attaching to them.  Lucent released a huge batch
			of cards that were imporperly manufactuered (lacking
			the 0 ohm resister to disable slot 1).  This is
			a big hammer to keep those cards from causing problems
			(I've had 4 people contact me saying my patches
			worked great once they added a kludge to always ignore
			function 1, or until they soldered these resistors
			in place!).

No clue where to document these.  They act as both boot loader environment
variables, as well as read-only sysctls after boot.

At the same time, sort sys/systm.h in its proper order after sys/sysctl.h.
2001-07-27 16:07:02 +00:00
Warner Losh
ebea20aed7 Minor nits merged from my stable tree:
o kill blank line that I introduced in cardinfo.h
o Delete unused variable wasinactive.
o return 0 from pccard_resume.
o Set the state and lastsate initially to be empty.
o move comment above code for interrupt dispatching.
o Powerstate interface is now available as of 430002, not 500000 (note that
  this change will be not 100% correct since the power state stuff didn't
  enter current until well after 500000, but it is good enough for the two
  branche we have going now).
2001-07-27 07:47:35 +00:00
Warner Losh
7d978ff754 Give hopefully better diagnostics about the card types we reject. 2001-07-27 07:14:12 +00:00
Warner Losh
dd99c79cc1 Make the multiple interrupts attachment an error not a panic.
Sometimes, when pccardd is restarted, it fails to realize that the
device is already attached and tries to attach it again.  This leads
to bad mojo since the pccard code isn't setup to handle that, so the
panic was put in.  Now it appears that it is triggering too easily, so
I'm backing it off to a non-fatal error.
2001-07-25 15:09:54 +00:00
Warner Losh
c8ce6587d0 When including pci header files, do things differently for 5x and 4x
to make code sharing between the two easier.

Also, only do power management in -current.  It doesn't exist in stable
yet.
2001-07-19 21:43:01 +00:00
Warner Losh
f939cab371 Use INTR_TYPE_AV rather than INTR_TYPE_MISC for the interrupt for
pci interrupts for the bridge.
2001-07-10 04:43:21 +00:00
Warner Losh
0c2e00bb8f Combine a couple of tests to reduce the indentation level. 2001-07-01 23:41:57 +00:00
Warner Losh
554a9d4aa3 Some interrelated interrupt changes.
Frist, for pci slots, make the setup intr save the requested interrupt
vector and arg and return rather than passing it up to our parent.  On
interrupts, we call this vector iff there's a card in the slot.  This
should eliminate some of the hangs or "weird" messages that people see
when ejecting cards and also help close the race window somewhat.
Reading the pci bus one more time for this information is judged to be
an acceptible tradeoff since it is very very fast.

Cleanup a little how we detect unsupported cards.  Only detect
unsupported cards (eg cardbus cards) on card insertion (or more
pedantically when a card is actually present).  This should allow us
to change the message in the future to "cardbus card not supported
with OLDCARD" :-).

Note:
	We may also consider this for the ISA bus case, but there the
	reads are much more expensive and the location of the CD pin
	status lines appears to be less standardized.  Also, the ISA
	management interrupt isn't shared with the card's interrupt.
	The mutliplex the CSC and function interrupts bit also appears
	to be non-standard (or at least not imlemented on all
	bridges).
2001-07-01 23:41:43 +00:00
Warner Losh
c820d555c5 Write zeros into the base/bounds register bars. We need to do this
because NEWBUS (and I think some versions of Windows sometimes) writes
0xffffffff to these registers to disable them.  When they are
"disabled" like this, writing memory ranges to the pcic registers are
ignored and you will get "card (null) (null)" when you insert a call
otherwise.
2001-07-01 23:41:24 +00:00
Warner Losh
6428acdc74 First cut at getting the pcic controller and power information for
each of the bridge chips.  Before we wrongly assumes that all cardbus
bridge chips were intel compatible step A/B.  This mostly worked, but
likely caused problems with certain cirrus logic cardbus bridges.
2001-07-01 23:41:09 +00:00
Warner Losh
8d3428c0b4 Some people are having problems with insert/eject. Add some debug
information until the problems can be tracked down.  Right now these
are unconditional, but later it will be hidden behind a boot verbose.

Also, if there are no events listed in the event mask, return right
away.  Specifically avoid writing back interrupt acks in this case.
2001-06-16 23:26:18 +00:00
Warner Losh
7077bc34aa Save the IRQ that we get in pci attachment.
Print type of pci bridge we find.
Force the IRQ of pci bridges upon all its children.
Allocate the resources on behalf of the bridge when we're testing to see if
they exist.

This should help people who don't read updating instructions very well.

This patch started out with an idea from Shigeru Yamamoto-san in -current.
2001-06-16 06:33:01 +00:00
Warner Losh
a87df403a6 First stab at adding back in CL-PD6729 support. 2001-06-09 07:34:17 +00:00
Warner Losh
9745c41eff Go ahead and request 0x44000000 through 0xfffffff instead of just
0xefffffff

# Note, this is bogus, but less bogus than before.
2001-06-08 18:31:51 +00:00
Warner Losh
0c80bc97b8 The TI-1031 is more like the TI-113x chips rather than the 12xx or
higher chips.  Treat it as if it were a 113x.  This is correct as far
as 16-bit cards go, at least how we're using it.

# It appears that my TI-1031 based pci card that YAMAMOTO shigeru-san gave
# me on my trip to Japan now works.
2001-06-08 07:16:56 +00:00
Warner Losh
81aad9b606 If the chip isn't in power state D0, put it in power state D0. I
elected to do this in the probe rather than the attach so that we don't
disturb things which this might reset.  different cards have different
quirks, according to their datasheets.

This should fix the "I booted in windows and rebooted to FreeBSD and
now things don't work" problem.

PR: 4847, 20670
2001-06-04 17:14:28 +00:00
Warner Losh
58c13f9b7a Add new pci attachment for pcic. This supports pci cards as well as
card bus bridges.

We now always use pci interrupts for pci cards.  This will allow us to
more easily configure things.  You must change your IRQ lines in
/etc/pccard.conf to match what we've probed.  I'm not sure the right
way to deal with this right now.

Development of pci pcmcia has been funded by Monzoon Networks AG.  I
am grateful for their generosity.
2001-06-04 06:49:46 +00:00
Warner Losh
e0e5247337 Fix a minor formatting nit 2001-05-25 19:24:58 +00:00
Warner Losh
ee327e92e1 Move to using the common device list.
Move to table driven probing of these devices since we have such a long list.
2001-05-25 19:22:36 +00:00
Warner Losh
acf5760400 Update copyright info 2001-05-25 18:03:07 +00:00
Warner Losh
8cad38176d Use bus_space functions rather than inb/outb.
Add defines for PCIC_INDEX and PCIC_DATA offsets.
Change PCIC_INDEX_0 to PCIC_PORT_0
Add define for PCIC_NPORT.
Document why the vadem probe works.
2001-05-24 06:54:48 +00:00
Warner Losh
4d5a4ec15f Do what we should have done a long time ago:
o If the class is PCIC_BRIDGE, subclass is PCIS_BRIDGE_PCMCIA and
  programming interface is 0, assume that it is a generic PCMCIA PCI
  chip we can program.  I don't think there are any of these that
  we don't know about, but you never know.
o If the class is PCIC_BRIDGE, subclass is PCIS_BRIDGE_CARDBUS and
  programming interface is 0, assume that it is a YENTA cardbus bridge
  that we know how to cope with.  There are likely some cardbus bridges
  that haven't it made it in here yet.
2001-05-24 04:24:22 +00:00
Warner Losh
e0e34f291e Add recognition for Toshiba ToPIC-100.
Submitted by: Shimodaira Toshio <tshimod1@ym.nsw.co.jp> in [bsd-nomads:15589]
2001-05-23 04:37:00 +00:00
Warner Losh
510937db3c Minor style(9) changes:
return (VALUE);
2001-05-14 06:15:24 +00:00
Warner Losh
e7c00509d5 I'll be making some rather substantial changes to the pci attachment
of the pcic class of devices.  Go ahead and move it to the "usual"
place.  I say "usual" in quotes since it isn't exactly right (not in
dev/blah), but it is closer than before.
2001-05-13 01:52:55 +00:00
Warner Losh
84b00588d8 Ricoh RL5C46x cardbus bridges have the bits for 3E0 and 3E2. The
RL5C47x cards do not.  Only set them for that set of bridges.

Submitted by: shiba (Takeshi Shibagaki-san)
2001-05-08 02:28:41 +00:00
Warner Losh
c18e19a64d Move setting of TI113X_PCI_CARD_CONTROL register sooner 2001-04-17 23:56:12 +00:00
Warner Losh
1f3da134c7 Minor comment that missed the last change 2001-04-17 23:50:24 +00:00
Warner Losh
82d3fe450d When booting, turn on the 3E0 compatibility address for ricoh cardbus
parts.  This is based on the newcard code that turns it off :-).  We
can now reboot after NEWCARD or Windows and have OLDCARD work.  Add
support for the RL5C466 while I'm at it.

Treat TI1031 the same as the CLPD6832.  It doesn't work yet, but sucks
less than it did before.

Also add a few #defines for other changes in the pipe.
2001-04-17 23:15:00 +00:00
Warner Losh
b9f90e4ffc Move ti1031 to the 16-bit bridge section 2001-02-07 01:16:40 +00:00
Warner Losh
a5eccf28a8 Add device id for the OZ Micro 6832. I didn't try to init it like the
Cirrus Logic parts that end in 6832, but maybe some machines will need
that in the future.
2001-01-02 21:42:48 +00:00
John Baldwin
7fa6b7c01e Spelling police in a comment: Defalut -> Default. 2000-09-29 21:14:05 +00:00
Warner Losh
23b7b12ddc Add a detach method to allow this device to be unloaded. 2000-08-30 06:57:38 +00:00
Warner Losh
a7d5d6a892 Add TI-1031 id. It doesn't work yet, but it is nice to have it.
These were on cards that were pci pccard (not cardbus) bridges that
lived in SparcUltras that picked up on ebay.
2000-08-29 04:40:17 +00:00
Peter Wemm
0a8e3ce8a5 Make this compile without depending on the FreeBSD 2.2 compatability
defines.
2000-05-28 16:31:35 +00:00
Warner Losh
748fdadaad Add TI-1211 chipset from datasheet info 2000-04-20 03:16:49 +00:00
Poul-Henning Kamp
3389ae9350 Remove ~25 unneeded #include <sys/conf.h>
Remove ~60 unneeded #include <sys/malloc.h>
2000-04-19 14:58:28 +00:00
Mitsuru IWASAKI
2058e7f3e0 Fix typo in description of Cirrus Logic PD6832 PCI-CardBus Bridge.
This don't hurt anything.
	PCI/CardBus Bridge -> PCI-CardBus Bridge

Submitted by:	Takeshi Shibagaki <sibagaki@lsi.melco.co.jp>
Obtained from:	bsd-nomads ML in Japan
2000-03-30 18:47:00 +00:00
Warner Losh
6ea2fbe9be More fully initialize cardbus bridges. We now call the new generic
cardbus bridge init routine for all cardbuses.  This routine attempts
to compensate for BIOSes that do not setup the cardbus bridge into
legacy mode.  Since this is becoming more common, and cardbus pci
cards have appeared on the market, this makes sense.

Do some TI113x specific initialization.  This came in as part of the
patch.  Report TI1[1234]XX specific config registers protected by
bootverbose.

Minor code cleanup while I'm here.  I've also removed the unused code
present in the original patches, and cleaned it up slightly in places
as well.

The original patches supported more than one card, but these patches
support just one.  We should likely revisit this in the future.

This makes the Compaq card that Walnut Creek CD purchased for me work
in my bouncer box.

This is a MFC candidate.  However, I'd like to get some airtime on
these patches on as many laptops as possible before doing the MFC.  It
does change things somewhat.  In theory, apart from the minor TI
tweaks, this shouldn't change anything if the bridge is in legacy mode
already.

Submitted by: sanpei@sanpei.org (MIHIRA Yoshiro)
2000-03-25 20:29:55 +00:00
Peter Wemm
872309ccd4 Update the pci->pcic compatability module to newbus. This is a simple
conversion to eliminate the compatability shims without making any
significant changes.  This eliminates the shim warnings.

Obtained from:	n_himba (tweaked by me, don't blame him for this)
Approved by:	jkh
2000-02-02 16:49:21 +00:00
Bill Fumerola
4eb47ecfab Fill in the blanks for some of the Texas Instruments cardbus controllers.
Obtained from:	NetBSD (syssrc/sys/dev/pci/pcidevs)
1999-12-31 07:22:24 +00:00
Bill Fumerola
f88e599fcb Copy Texas Instruments cardbus controllers from pcisupport.c, the pcisupport.c
probes are at the 'chip' level and will get overridden by pcic_p if it is
compiled in. It's still nice to get the better probe message if it's not...

Requested by:	imp
1999-12-29 13:33:37 +00:00
Eivind Eklund
e9f0f7d4ad Add the PCI id for the TI PCI-1251B PCI-CardBus bridge.
Submitted by:   Martin Blapp <mb@imp.ch>
1999-11-28 13:37:35 +00:00
Jun Kuriyama
31de378d47 s/Brige/Bridge/. 1999-11-21 00:53:23 +00:00
Warner Losh
077e8ab387 I'm told this makes more laptops work with the new attachment code.
Submitted by: archie cobbs
1999-10-29 04:41:07 +00:00