Commit Graph

100 Commits

Author SHA1 Message Date
Warner Losh
d95b5da991 Switch to using suspend/resume methods rather than the APM hooks.
Should have no effect, but does make things a little cleaner.  I
thought this was the race that was causing problems, but it turned out
to be in pccardd waking up after the empty/insert events had happened
and being confused.

Minor cleanup:
o Remove isahd from pccard_devinfo
o remove extra from controller
o formatting nits
o use PCCARD_DEVINFO(d) rather than a bare device_get_ivars(d)
1999-12-08 07:55:20 +00:00
Bill Paul
8d29af8945 Fix alloc_driver() so that calls devclass_get_device() with slt->slotnum
as the unit argument instead of 0. disable_slot() calls
devclass_get_device() correctly, however because alloc_driver() does
it wrong, disable_slot() is unable to locate the child devices
attached to the pccard bus and thus fails to call device_delete_child()
on them. The end result is that when a card is removed, its detach
routine is never called, and re-insertion always fails.

With this fix (and the previous one to if_wi.c), I can now insert,
remove and re-insert my WaveLAN/IEEE card and things behave correctly.
kldunloading the if_wi.ko module also seems to work properly now.

Ok'ed by: imp
1999-12-08 05:34:17 +00:00
Warner Losh
4e3e1583d1 Remove unused junk: next fields and list head. Likely not completely
needed on software reaching EOL, but I'd have caught the hang bug sooner
had I done this earlier.
1999-12-06 01:35:37 +00:00
Matthew N. Dodd
fe0d408987 Remove the 'ivars' arguement to device_add_child() and
device_add_child_ordered().  'ivars' may now be set using the
device_set_ivars() function.

This makes it easier for us to change how arbitrary data structures are
associated with a device_t.  Eventually we won't be modifying device_t
to add additional pointers for ivars, softc data etc.

Despite my best efforts I've probably forgotten something so let me know
if this breaks anything.  I've been running with this change for months
and its been quite involved actually isolating all the changes from
the rest of the local changes in my tree.

Reviewed by:	peter, dfr
1999-12-03 08:41:24 +00:00
Warner Losh
b152132e64 Print device names for children that fail to detach.
Free child array when we're done with it.

Forgotten by: imp
Submitted by: Nick Hibma <hibma@skylink.it>
1999-12-02 19:51:34 +00:00
Warner Losh
03599baeb2 Make pccardc beep actually work. The kernel was doing the wrong thing
with the beep information it had (like ignoring it).

Submitted by: sanpei@sanpei.org (MIHIRA-san Yoshiro)

Add $FreeBSD$ to pccard_beep.c while I'm here.
1999-12-02 19:46:41 +00:00
Warner Losh
4ecd5f6e8c /tmp/msg 1999-12-02 05:46:22 +00:00
Warner Losh
e09f49b6fa Fix the hang on card eject problem and maybe the hang on suspend
problem.

o Create new timeout routine so we don't detach the card inside a ISR
  but instead drop back to spl0 via a timeout of 0.
o Actually delete the child of the pccard device rather than just faking
  it badly.
o Fix sio, ed and ep to have pccard detach routines that are int rather
  than void.
o Fix ep and ed pccard detach routines to use if_detach rather than just
  if_down.  if_detach destroys the device, while if_down just marks it
  down.  In this incarnation of the pccard things, we map the disable
  the slot action to detach the driver, which removes the driver from the
  device tree.  When that is done, a panic would soon follow as the
  ifconfig tried to down the device.

Didn't fix:
o Should cache the pccard dev child's pointer in struct slot
o remove now unused parts of struct slot
o Any driver using softc after detach has been called.  sio's softc used
  to be statically allocated, so you could check sc->gone, but that is
  now gone.
o Didn't remove gone from softc of drivers that use the old pccard method.

Didn't test:
o ed driver changes
o sio driver changes on pccards
o suspend (no laptop or apm support on my desktop)
1999-12-01 07:38:54 +00:00
Warner Losh
27e8060d4a Kill unneeded includes
Found by phk's script a while ago.
1999-11-20 05:02:00 +00:00
Warner Losh
923a651ddf Remove debug printfs and Debugger() calls.
Add support for memory mapping

This should allow pccard that need memory mapping to work, but I don't
have one to test against.
1999-10-25 23:17:24 +00:00
Warner Losh
4f76d87b21 Massive rewrite of pccard to convert it to newbus.
o Gut the compatibility interface, you now must attach with newbus.
o Unit numbers from pccardd are now ignored.  This may change the units
  assigned to a card.  It now uses the first available unit.
o kill old skeleton code that is now obsolete.
o Use newbus attachment code.
o cleanup interfile dependencies some.
o kill list of devices per slot.  we use the device tree for what we need.
o Remove now obsolete code.
o The ep driver (and maybe ed) may need some config file tweaks to
  allow it to attach.  See config files that were committed for examples
  on how to do this.

Drivers to be commited shortly.

This is an interrum fix until the new pccard.  ed, ep and sio will be
supported by me with this release, although others are welcome to try
to support other devices before new pccard is working.

I plan on doing minimal further work on this code base.  Be careful
when upgrading, since this code is known to work on my laptop and
those of a couple others as well, but your milage may vary.

BUGS TO BE FIXED:

o system memory isn't allocated yet, it will be soon.
o No devices actually have a pccard newbus attach in the tree.

BUGS THAT MIGHT BE FIXED:

o card removal, including suspend, usually hangs the system.

Many thanks to Peter Wemm and Doug Rabson for helping me to fill in
the missing bits of New Bus understanding at FreeBSD Con '99.
1999-10-25 02:41:58 +00:00
Warner Losh
35c0baa6b7 Remove name field from controller information. Fix name setting in
pc98 case that I missed before.  Attempt to get the irq for the PCIC
first from the loader env var and second from the config system.  I've
been able to boot my laptop with a kernel that hardwired the irq to
10.  This should allow boot -c to finally start working for pcic irq,
but I've not tested that.  Add $FreeBSD$ to slot.h.
1999-10-16 05:11:46 +00:00
Warner Losh
b5137699ae Reorganize the attachement point for pcic (it was unattached and
floating before).  Attach pccard devices to pcic, one per slot
(although this may change to one per pcic).  pcic is now attached to
isa (to act as a bridge) and pccard is attached to pcic, cbb and
pc98ic (the last two are card bus bridge and the pc98ic version of
pcic, neither of which are in the tree yet).  Move pccard compat code
into pccard/pccard_compat.c.

THIS REQUIRES A CONFIG FILE CHANGE.  You must change your pcic/card
entries to be:
# PCCARD (PCMCIA) support
controller	pcic0	at isa?
controller	pcic1	at isa?
controller	card0

The old system was upside down and this corrects that problem.  It
will make it easier to add support for YENTA pccard/card bus bridges.

Much more cleanup needs to happen before newbus devices can have
pccard attachments.  My previous commit's comments were premature.
1999-10-15 17:29:21 +00:00
Warner Losh
53cdc67254 Make it easier to have completely new bus attachment points for pccard
devices.  There may still be problems with said drivers, if so please
let me know.

o Move attach-like functionality to the nbk attach compatibility code.
o Smarter probe code: for the compatibility code probe succeeds if
  strcmp succeeds, for noncompatibility you can do anything you like.
o Get rid of some compiler warnings introduced in last commit.
1999-10-15 03:10:13 +00:00
Warner Losh
58a49816c7 *** empty log message *** 1999-09-26 21:52:43 +00:00
Poul-Henning Kamp
d6a0e38a1b Remove five now unused fields from struct cdevsw. They should never
have been there in the first place.  A GENERIC kernel shrinks almost 1k.

Add a slightly different safetybelt under nostop for tty drivers.

Add some missing FreeBSD tags
1999-09-25 18:24:47 +00:00
Warner Losh
b99d6b5edc Kludge together support for the old pccard system with newbus. This
will allow newbus based drivers to have pccard attachments.  Also
start printing out probe messages for pccards stating the resources
used and regularize many of the pccard printfs.

Reviewed by: Peter Wemm.
1999-09-06 06:34:44 +00:00
Peter Wemm
c3aac50f28 $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
Poul-Henning Kamp
9dcbe2404a Convert DEVFS hooks in (most) drivers to make_dev().
Diskslice/label code not yet handled.

Vinum, i4b, alpha, pc98 not dealt with (left to respective Maintainers)

Add the correct hook for devfs to kern_conf.c

The net result of this excercise is that a lot less files depends on DEVFS,
and devtoname() gets more sensible output in many cases.

A few drivers had minor additional cleanups performed relating to cdevsw
registration.

A few drivers don't register a cdevsw{} anymore, but only use make_dev().
1999-08-23 20:59:21 +00:00
Warner Losh
0226bd1a3e o Add additional printfs for error cases when we can't attach the device.
o Add field to dev_desc for the size of the io port range.  This isn't
  used yet in the committed sources, but will make the transition easier
  in the future.

If you build this into your kernel, you will need to rebuild pccardd.
1999-08-01 18:12:51 +00:00
Poul-Henning Kamp
2447bec829 Simplify cdevsw registration.
The cdevsw_add() function now finds the major number(s) in the
struct cdevsw passed to it.  cdevsw_add_generic() is no longer
needed, cdevsw_add() does the same thing.

cdevsw_add() will print an message if the d_maj field looks bogus.

Remove nblkdev and nchrdev variables.  Most places they were used
bogusly.  Instead check a dev_t for validity by seeing if devsw()
or bdevsw() returns NULL.

Move bdevsw() and devsw() functions to kern/kern_conf.c

Bump __FreeBSD_version to 400006

This commit removes:
        72 bogus makedev() calls
        26 bogus SYSINIT functions

if_xe.c bogusly accessed cdevsw[], author/maintainer please fix.

I4b and vinum not changed.  Patches emailed to authors.  LINT
probably broken until they catch up.
1999-05-31 11:29:30 +00:00
Poul-Henning Kamp
4e2f199e0c This commit should be a extensive NO-OP:
Reformat and initialize correctly all "struct cdevsw".

        Initialize the d_maj and d_bmaj fields.

        The d_reset field was not removed, although it is never used.

I used a program to do most of this, so all the files now use the
same consistent format.  Please keep it that way.

Vinum and i4b not modified, patches emailed to respective authors.
1999-05-30 16:53:49 +00:00
Bill Paul
134a826b50 Unbreak slot_irq_handler(). The problem here is that slot_irq_handler()
abuses its argument, which is supposed to be an integer unit number, as
a pointer to the head of the 'struct slot' list. When this code was
hacked^Wupdated for newbus, a new mechanism for registering slot_irq_handler()
was put in place and the significance of the unit number was overlooked.
When registering an interrupt, we have both device_id and unit. The unit
number is passed as 'unit' but /sys/i386/usa/intr_machdep.c:register_intr()
drops unit on the floor and uses device_id instead. Since pccard_alloc_intr()
always sets device_id to 0, this means the unit number is always zero, and
slot_irq_handler() is always called with 0, which becomes a NULL pointer
which slot_irq_handler() tries to dereference and the kernel explodes.

Result: if you assign a PCMCIA driver in the kernel config file like this:

device wi0 at isa? port? irq?

Then the system will panic the moment a PCMCIA device is attached and
an interrupt is triggered.

The quick fix: make pccard_alloc_intr() pass the unit number as both
the device_id and unit arguments to register_pcic_intr(). The correct fix
would be to rewrite /sys/pccard to be less disgusting.
1999-05-04 15:43:02 +00:00
Nate Williams
b79fadf33d - When the card is inserted, call pccard_insert_beep instead of
pccard_remove_beep.

Submitted by:	PAO
1999-05-02 04:19:27 +00:00
John Polstra
7c44ad261e Eliminate compiler warning about missing type in declaration.
Remove useless initialization of static variable to 0.

Move static variable declaration into the only function that uses
it.
1999-04-27 18:47:39 +00:00
John Polstra
b1f2f2d538 Fix the code that prints the "Initializing PC-card drivers" message
so that the list of drivers is correct.  This is a slightly
simplified version of the patch from the PR.

PR:		misc/10544
Submitted by:	Christophe Colle <colle@krtkg1.rug.ac.be>
1999-04-27 18:34:13 +00:00
Poul-Henning Kamp
f711d546d2 Suser() simplification:
1:
  s/suser/suser_xxx/

2:
  Add new function: suser(struct proc *), prototyped in <sys/proc.h>.

3:
  s/suser_xxx(\([a-zA-Z0-9_]*\)->p_ucred, \&\1->p_acflag)/suser(\1)/

The remaining suser_xxx() calls will be scrutinized and dealt with
later.

There may be some unneeded #include <sys/cred.h>, but they are left
as an exercise for Bruce.

More changes to the suser() API will come along with the "jail" code.
1999-04-27 11:18:52 +00:00
Roger Hardiman
6fe7bbc584 Updated to use new APIC (SMP) safe interrupt register/unregister
functions.
Posted for review to -smp and -mobile and -hackers with no objections.

Reviewed by:	Nate
1999-03-10 15:00:54 +00:00
Guido van Rooij
05440e6882 On second thought: do previous fux in pcic.c better.
Now we just untimeout the call to inserted() if it exists.
1999-02-14 20:41:01 +00:00
Jun Kuriyama
a766716a9a Add "beep" ioctl. (#10 is reserved for PIOCSVIR)
Obtained from:	PAO3
Reviewed by:	-current list
1999-02-13 11:32:00 +00:00
Matthew Dillon
fe08c21a53 Fix warnings in preparation for adding -Wall -Wcast-qual to the
kernel compile.

    This commit includes significant work to proper handle const arguments
    for the DDB symbol routines.
1999-01-27 23:45:44 +00:00
Bruce Evans
dc34e67676 Include <sys/select.h> -- don't depend on pollution in <sys/proc.h>. 1999-01-27 10:10:03 +00:00
Peter Wemm
9b3df7693a Initial update pccard code for KLD module support. Module support
however is only marginally useful until the new-style bus (pci and isa)
stuff comes onboard to give us a better shot at actually pci and isa
drivers loadable (or preloadable anyway).
1999-01-19 00:18:28 +00:00
Peter Wemm
08274d68df Add #include to get a prototype for update_intr_masks(). 1998-11-09 09:30:55 +00:00
Nate Williams
cf0ee54fec - Fix a bug where a "power_off_slot' timeout was not cancelled when the
computer 'suspended', although the slot was powered off.  There was a
  race where the slow could be powered off *after* it was assigned a
  new driver when the computer was 'resumed'.

Noticed by:	Brian Somers <brian@Awfulhak.org>
1998-09-24 17:56:31 +00:00
Brian Somers
8aa2558802 Make PCIC_RESUME_RESET an proper option.
My laptop (a CTX Cybernote) needs this.  It claims to have a

  PC-Card VLSI 82C146 (5 mem & 2 I/O windows)
1998-09-08 18:09:51 +00:00
Warner Losh
344131cb71 o renable pccard_remove_driver (it was used in the skel.c driver)
o update skel.c to lots of stuff that has happened since the last time
  it was updated.
1998-08-26 07:09:58 +00:00
Bruce Evans
86a14a7a0a Use [u]intptr_t instead of [u_]long for casts between pointers and
integers.  Don't forget to cast to (void *) as well.
1998-08-16 01:21:52 +00:00
Bruce Evans
9a2daf9190 Changed the type of an isa/general interrupt handler to take a
`void *' arg.  Fixed or hid most of the resulting type mismatches.
Handlers can now be updated locally (except for reworking their
global declarations in isa_device.h).
1998-06-18 15:32:09 +00:00
Doug Rabson
ecbb00a262 This commit fixes various 64bit portability problems required for
FreeBSD/alpha.  The most significant item is to change the command
argument to ioctl functions from int to u_long.  This change brings us
inline with various other BSD versions.  Driver writers may like to
use (__FreeBSD_version == 300003) to detect this change.

The prototype FreeBSD/alpha machdep will follow in a couple of days
time.
1998-06-07 17:13:14 +00:00
KATO Takenori
a6ed0310a9 Include pc98.h instead of isa.h when PC98 is defined. 1998-05-05 13:21:08 +00:00
Nate Williams
480895cbea - Give up trying for a simple solution for correctly recognizing if a card
was really removed, or simply 'faked' by a suspend/resume.  Keep track
  of both current and previous state, and send that information to the
  userland programs.

[
XXX - This breaks binary compatability with older pccardd programs, but
they don't work reliably. :(
]
1998-04-20 15:21:02 +00:00
Nate Williams
c839c3ace3 - Whoops, better have the structure created before trying to use it in
the patch I just submitted.

Noticed by:     phk
1998-04-09 14:01:13 +00:00
Nate Williams
9d24fe0e45 - Fix bug I introduced a few months ago. If a driver fails the probe,
correctly unregister the interrupt from the system.

[ My fix is much simpler than the one provided in the PR ]

PR:		6249
1998-04-08 15:00:02 +00:00
Bruce Evans
6b16931c00 Removed unused #includes. 1998-02-25 05:58:50 +00:00
Eivind Eklund
7b778b5e61 Make all file-system (MFS, FFS, NFS, LFS, DEVFS) related option new-style.
This introduce an xxxFS_BOOT for each of the rootable filesystems.
(Presently not required, but encouraged to allow a smooth move of option *FS
to opt_dontuse.h later.)

LFS is temporarily disabled, and will be re-enabled tomorrow.
1998-01-24 02:54:56 +00:00
Mike Smith
53922aaf18 Specify the minor number correctly when creating devfs entries. 1998-01-02 13:35:06 +00:00
Nate Williams
052492ab36 - Renamed 'card.h' to 'cardinfo.h', to avoid namespace collisions with
the card.h that config builds.

[ Repository renaming done in the background to save the card.h history ]
1997-11-18 21:04:01 +00:00
Nate Williams
40b8c3d008 MF22:
(update_intr_masks might not need to be done in 3.X, but the new generic
 interrupt code is incomplete w/regard to support for the PCCARD code, so
 to avoid any potential problems use it.  It can't hurt).

- Correctly register pcic_imask with the system interrupt code.

- Call update_intr_masks() so that pcic_imask modifications that occur
  when card interrupts are registered get updated in the system
  interrupt code.
1997-11-15 14:20:31 +00:00
Nate Williams
ec510cabb0 - Disable cards when doing a suspend by emulating that they have been
removed.  Add a new state 'suspend' so we 'fake' insertion events at
  resume time for the cards that have been suspended.

[
The code still works if you remove the card during suspend, switch the
card during suspend, or combinations of both.
]

Reviewed by:	frf@xocolatl.com
1997-10-28 17:51:25 +00:00