1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-19 10:53:58 +00:00
Commit Graph

75 Commits

Author SHA1 Message Date
Warner Losh
6586fa7c43 MFP4:
o don't access struct resource members directly.
o Set a default device description based on the CIS name.
2003-04-08 07:02:03 +00:00
MIHIRA Sanpei Yoshiro
e21115ab06 fix typo 2003-04-04 14:40:01 +00:00
Warner Losh
b43a533ddb Use %jd and a cast to intmax_t instead of a cast to long.
Minor style nit while I'm here.
2003-03-18 02:40:40 +00:00
Warner Losh
a163d034fa Back out M_* changes, per decision of the TRB.
Approved by: trb
2003-02-19 05:47:46 +00:00
Alfred Perlstein
44956c9863 Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0.
Merge M_NOWAIT/M_DONTWAIT into a single flag M_NOWAIT.
2003-01-21 08:56:16 +00:00
Maxime Henrion
b2423a5f88 Fix printf() format errors.
Reviewed by:	imp
2002-11-14 14:02:32 +00:00
Warner Losh
41e6d507ba Remove an impossible condition. pf->dev is always non-null here. 2002-11-14 05:13:52 +00:00
Warner Losh
bcaa6b0541 MFp4:
o Always release the resources on device detach.
o Attach resources the same with driver added as we do we do in the insert
  case (maybe this should be a routine).
o signal the wakeup of the thread on resume instead of trying to force an
  interrupt.
o Minor debug hacks.
o use 0xffffffff instead of -1 for uint32_t items.
o Don't complain when we're asked to detach no cards.  This is normal.
o Eliminate the now worthless second parameter to card_detach_card.
o minor style(9)isms

Some of these patches may be from: iwasaki-san, jhb, iadowse
2002-11-02 23:00:28 +00:00
Warner Losh
3688a119c4 o Add a nomatch routine so we whine when we don't know what to attach to
the card.
o Add comments about how we're doing the CIS activation.
o Add location and pnp info functions.
o Add better code to hopefully deal with ata cards better (and other drivers
  that allocate resources that we didn't preallocate from the CIS).  OLDCARD
  used to allow it, but NEWCARD was pickier.  I'm not 100% sure this works,
  but it doesn't break anything.
2002-10-07 23:05:33 +00:00
Warner Losh
ca407d8777 MFp4:
o Return the right string for CIS4_STR
	o kill obsolete comment about not doing something that we now do.
2002-10-07 07:18:32 +00:00
Warner Losh
2d7a3e94bd o Dike out the bogus reprobe stuff. It was getting in the way of newbus' own
reprobe code working.  This bogusness was thrust upon me.
o Don't delete the device if no drivers attach.  I had thrust this bogusness
  upon others.

These two changes make kldload of a pccard driver work again.
2002-09-10 06:32:18 +00:00
Warner Losh
912f17daa2 More in the continuing saga of phk vs his strange serial card.
In this installment, we learn that it is bad to access registers that
are only defined for mfc cards in the interrupt handler when we do not
in fact have a mfc card.  For MFC cards, we'll only call the ISR if
the this card interrupted bit is set.  For non mfc cards (which are
basically 90% of pccards in use), we always call the ISR and avoid
touching the suspect registers.  We always pacify the bit in the MFC
case on the off chance that will help in the itnerrupt handler not
being registed.
2002-09-04 06:53:37 +00:00
Poul-Henning Kamp
13c33c582a Drop another cookie to wet Warners appetite:
We need to call the drivers interrupt function even though the card is not
multifunction.
2002-09-03 11:24:25 +00:00
Warner Losh
4ee27e3969 Make modems work:
Don't set the CCR_OPTION register when registering/deregistering
interrupts unless the card is a MFC card.  This makes a lot of cards
work that didn't work before.  These bits are only defined for MFC
cards.

Remove COOKIE_FOR_WARNER kludges that phk introduced.

Add more debug info.

Annoy the purists by committing two minor style nits at the same time.

Many thanks to phk.  He tracked this problem down to what was screwing
things up, so fixing it became trivially easy once the problem was
understood.
2002-08-31 18:34:30 +00:00
Poul-Henning Kamp
a15ddbdd65 Different and more correct workaround for broken cards under NEWCARD:
don't spam the configuration index register.

I'm not sure where those bits truly belong, but spamming the config
index sure doesn't do us any good.
2002-08-31 16:07:17 +00:00
Poul-Henning Kamp
49bf3e26d1 Ignore all config entries which have a non-zero start I/O address.
This is a bandaid which makes some more PCCards work under NEWCARD
which would otherwise not work.

Cards with only fixed address windows still loose.
2002-08-31 14:38:24 +00:00
Warner Losh
6c596e8d0b pccbb -> cbb 2002-08-15 08:02:23 +00:00
Warner Losh
db64ac4457 Don't redundantly include \n in panic messages 2002-08-12 22:34:12 +00:00
Takanori Watanabe
80f1001813 Make oldcard and newcard kernel module work. 2002-05-30 17:38:00 +00:00
Warner Losh
7cdb5c5ec4 Make hw.pccard.debug and hw.pccard.cis_debug tunable/sysctl. Setting to 1
will enable more verbose debugging output from the pccard system.
2002-03-07 08:03:53 +00:00
Takeshi Shibagaki
57ffbd6e54 Add u_int16 prodext value in CISTPL_MANF_ID. This gets a fifth byte
when manufacturer id tuple length is 5. This change is for xe driver.
This is a dirty hack. But there is no better idea.

Reviewd by: imp
2002-02-20 14:30:46 +00:00
Warner Losh
b0fc3f6b1b o Count the number of mem and io spaces we allocate. If none work, bail out
o Add some better debugging code.
o Minor style(9) fixes.
2002-02-19 05:04:37 +00:00
Warner Losh
fbf6f7f1d6 Null interrupt handlers should be OK, so if we don't have a function,
just return.
2002-02-10 05:04:20 +00:00
Warner Losh
27d4dd7420 o Use bus_generic_setup_intr instead of bus_setup_intr.
o Call bus_generic_setup_intr and check its return value.  Don't setup
  func until we successfully get the interrupt from our parent.
o Add comments about some maybe questionable stuff so I can check later
  to make sure that it really is that way.
2002-02-10 03:34:44 +00:00
Warner Losh
5e0cb3e9d3 Boot verbosify printing the CIS, since we don't normally need to do that. 2002-02-09 21:34:06 +00:00
Warner Losh
a0e457a620 Default debugging to OFF now. 2002-02-04 15:55:21 +00:00
Warner Losh
a432b68b87 Add support for suspending/resuming CardBus bridges.
We really should have and use power state information, but none exists
today.

Submitted by: YAMAMOTO Shigeru-san <shigeru@iij.ad.jp>
2001-12-15 05:58:28 +00:00
Warner Losh
e8cb41d36f Only call pccard_function_disable when we have a configured config
entry.  Otherwise we panic on boot for cards that we can't allocate a
config entry for (my 3.3V wavelan card currently fails thusly).
2001-11-26 07:14:00 +00:00
Warner Losh
03bfaba97c Weed out those pccard entries that match everything. These are too
dangerous to allow :-)

This should fix the ed1: <PLANEX ... bug.
2001-11-20 06:15:24 +00:00
Takeshi Shibagaki
a8bc31671a Update cis tuple parser, add a pccarddevs entry,
and improve PCCARD_IVAR_ETHADDR in pccard_read_ivar().

Change points:

(1) Read Function Ext tuple.
(2) Add Ratoc REX-R280 entry(fe driver).
(3) Take ether address from function ext tuple.

Reviewed by: imp
Obtained from: NetBSD
2001-09-02 06:37:41 +00:00
Jonathan Chen
71e7902026 Make pccard_product_lookup non-static again...
When something is exported, do not mark it as static for no apparent reason...

Broken by: me
2001-08-27 11:28:00 +00:00
Warner Losh
533dc59976 More notes to the reader about issues in pccard code here. 2001-08-27 01:24:33 +00:00
Warner Losh
fe63bdcc6a Merge notes, but not code, from my latest tree on pccard_function_init and pccard_function_free 2001-08-27 01:18:21 +00:00
Jonathan Chen
63fa9f4c0d Part two of this NEWCARD update:
Briefly, the significant changes include:
 * Way better resource management in pccbb, pccard and cardbus.
 * pccard hot-removal now appears to work.
 * support pre-fetchable memory in cardbus.
 * update cardbus to support new pci bus interface functions.
 * Fix CIS reading to no longer use rman_get_virtual().

What's not there, but in the works:
 * pccard needs to do interrupt properly and not read the ISR on single
   function cards.
 * real resource management for pccard
 * a complete implementation of CIS parsing
 * need to look into how to correctly use mutex in pccbb
2001-08-27 00:09:42 +00:00
Warner Losh
f40d7afa05 Fix the panics for real this time. When something can't be allocated,
we need to delete the info from the list as well as zero out the res
pointer we saved in the code.

Also made a few style(9) changes while I was at it.  Don't use if
(ptr) or if (!ptr), but compare against NULL.  Compare against NULL
rather than 0.  Don't have useless blocks.

There are likely other problems as well, but at least the wi based
wireless card with memory listed in its cis doesn't panic the system
when the card is inserted.
2001-05-10 06:55:39 +00:00
Warner Losh
dc8e185f93 Add accessor/ivar for the "function". This is so we can generically
match disks and serial ports and maybe others.
2001-04-21 04:08:39 +00:00
Warner Losh
19f1fe42e6 Only try to delete the resource if we actually got it. 2001-04-21 02:29:09 +00:00
Warner Losh
c33c1284cb First step towards making loadable modules independent of having
pccard in the kernel for those drivers with pccard attachments.  This
makes the compat layer a little larger by introducing some inlines,
but should almost make it possible to have independent attachments.
The pccard_match function are the only one left, which I will take
care of shortly.
2001-03-22 06:00:07 +00:00
Warner Losh
2873ce752b Style(9) changes:
put parens around return (statements);
	Use ANSI funcitons only.
2001-03-22 05:41:20 +00:00
Poul-Henning Kamp
37d4006626 Another round of the <sys/queue.h> FOREACH transmogriffer.
Created with:   sed(1)
Reviewed by:    md5(1)
2001-02-04 16:08:18 +00:00
Warner Losh
da15fcf11c Convert the vendor/product cis strings to an array of CIS entries. This
allows us to use the PCCARD_CIS #defines generated to distinguish cards
that don't have a Manufacturer and OEM.
2001-01-21 08:09:00 +00:00
Peter Wemm
7722df0394 This is a bandaid for a problem that is not entirely fixed yet.
The pccard_function_init() call creates a bunch of inactive resources
that are persistant and configured on demand.  When the child driver
"allocates" a resource it is connected up to one of these.  When the
child releases the resource, we should not delete our copy, just
deactivate it again.  Otherwise there is nothing to recreate it again
after several probe functions have run and done an alloc/release cycle.
INVARIANTS shows 0xdeadc0de without this.

More work is needed to do a sweep though the pccard_function_disable()
call to actually delete the resources for real.  Right now, we leak
memory on eject (at best), so Dont Do That(TM) yet.  This affects
16 bit pccards on a cardbus bridge only.  This will be fixed soon, but
for now it gets the cards working.

Reviewed by: imp
2001-01-07 21:32:05 +00:00
Warner Losh
584d978729 This file follows style(9), so adjust various nits in the last few commits
to conform to style(9), plus one other convention that I use:
o Declare variables at the start of the function, rather than in blocks
  when it doesn't help understanding (mine).
o 80 column limit.
o BSD style statement continuation, rather than "gnu" style.
2001-01-07 20:40:23 +00:00
Warner Losh
2f58d9cc31 For bus_setup_intr, cookiep is a pointer to storage for the parent
bus to use.  We need to set it here.

This fixes the problem where a probe routine establishes and
disestablishes the interrupt and then we get a panic in the probe
routine.

However, we pass the pointer to the interrupt hanlder count to the
parent bus, which writes its own cookie there, so there may be some
problems with that which isn't apparent at the moment.

Commit made from: laptop running NEWCARD with sn driver (which works,
but gets the wrong ethernet address).
2001-01-07 20:36:27 +00:00
Warner Losh
486d464d74 o Now that I've had time to test the new interface, reintegrate it back in.
o Fix OLDCARD to use the new interface.
o Rename the offsetp argument to deltap to more closely reflect what it
  is returning (it returns the delta from the requested value to the actual
  value).
o Remove duplicate $FreeBSD$ in pccbb.c
o Allow deltap to be NULL.
o Convert new isa pcic driver and add XXX comments that this function isn't
  actually implemented there (which means that NEWCARD pccard stuff won't
  work there until it is).
o Revert attempts to make old inferface work in NEWCARD.

Subitted by: peter (Parts of the new version code)
2001-01-07 16:31:09 +00:00
Warner Losh
1bc96f7afd Undo the interface change to CARD_GET_MEMORY_OFFSET. It wasn't tested
by even a compile of the OLDCARD code, was unapproved by me the keeper
of OLDCARD and broke OLDCARD and the ray driver.

Adjust new code to cope with the older interface.

If the interface changes in the future, it ***MUST*** be cleared by me
so that the OLDCARD impacts taken into account.  It code in card_if.m
is used jointly by both OLDCARD and NEWCARD.
2001-01-07 08:08:54 +00:00
Jonathan Chen
0c95c70577 * Better kld support in pccbb/cardbus
- pccbb no longer needs to remember whether a card is inserted.
  - pccbb reissues insertion on load of cardbus/pccard modules.
  - got rid of unnecessary delays in power functions.
  - Cardbus children are no longer deleted if probe/attach fails.
  - non-attached child devices are reprobed at driver_added.

* CARD interface to read CIS
  - added card_cis_read/card_cis_free interface to read arbitrary CIS
    data.  This currently is only implemented in cardbus.

* pccard begins to work
  - pccard can now use higher memory space (and uses it by default).
  - set_memory_offset interface changed.
  - fixed ccr access, which was broken at multiple locations.
  - implement an interrupt handler - pccard can now share interrupts.
  - resource alloc/release/activate/deactivate functions gutted: some
    resources are allocated by the bridge before the child device is
    probed or attached.  Thus the resource "belongs" to the bridge, and
    the pccard_*_resource functions need to fudge the owner/rid.
  - changed some error conditions to panics to speed debugging.

* Mutex fix - Giant is entered at the beginning of thread
2001-01-06 18:04:55 +00:00
David Malone
66efa50621 Make a few more mallocs use M_ZERO.
Submitted by:	josh@zipperup.org
Submitted by:	Robert Drehmel <robd@gmx.net>
Approved by:	imp
2000-10-29 16:29:05 +00:00
Warner Losh
fe8d027cd8 o Remove lots of kludges with iospace and irq.
o Make sure that I/O space is aligned properly based on the length of the
  resource we're allocating.
o Add bootverbose message when we fail.
2000-10-22 04:46:56 +00:00
Warner Losh
4659a20822 Get the interrupt correct. 2000-10-20 20:27:22 +00:00