Commit Graph

54 Commits

Author SHA1 Message Date
kib
bd7f0fa0bb Reform the busdma API so that new types may be added without modifying
every architecture's busdma_machdep.c.  It is done by unifying the
bus_dmamap_load_buffer() routines so that they may be called from MI
code.  The MD busdma is then given a chance to do any final processing
in the complete() callback.

The cam changes unify the bus_dmamap_load* handling in cam drivers.

The arm and mips implementations are updated to track virtual
addresses for sync().  Previously this was done in a type specific
way.  Now it is done in a generic way by recording the list of
virtuals in the map.

Submitted by:	jeff (sponsored by EMC/Isilon)
Reviewed by:	kan (previous version), scottl,
	mjacob (isp(4), no objections for target mode changes)
Discussed with:	     ian (arm changes)
Tested by:	marius (sparc64), mips (jmallet), isci(4) on x86 (jharris),
	amd64 (Fabian Keil <freebsd-listen@fabiankeil.de>)
2013-02-12 16:57:20 +00:00
jhb
fcf1c6db52 Add locking to the aic(4) driver and mark it MPSAFE.
- Move 'free_scbs' into the softc rather than having it be a global list
  and convert it to an SLIST instead of a hand-rolled linked-list.
- Use device_printf() and device_get_unit() instead of storing the unit
  number in the softc.
- Remove use of explicit bus space handles and tags.
- Don't call device_set_desc() in the pccard attach routine, instead
  set a default description during the pccard probe if the matching
  product doesn't have a name.

Tested by:	no one
2012-10-15 16:09:59 +00:00
des
d9c2725c35 Snip redundant assignment.
Approved by:	scottl
MFC after:	2 weeks
Coverity ID:	3863
2009-05-13 22:31:25 +00:00
scottl
ff584e70fa Prepare for future integration between CAM and newbus. xpt_bus_register
now takes a device_t to be the parent of the bus that is being created.
Most SIMs have been updated with a reasonable argument, but a few exceptions
just pass NULL for now.  This argument isn't used yet and the newbus
integration likely won't be ready until after 7.0-RELEASE.
2007-06-17 05:55:54 +00:00
scottl
7605c12c0f Remove Giant from CAM. Drivers (SIMs) now register a mutex that CAM will
use to synchornize and protect all data objects that are used for that
SIM.  Drivers that are not yet MPSAFE register Giant and operate as
usual.  RIght now, no drivers are MPSAFE, though a few will be changed
in the coming week as this work settles down.

The driver API has changed, so all CAM drivers will need to be recompiled.
The userland API has not changed, so tools like camcontrol do not need to
be recompiled.
2007-04-15 08:49:19 +00:00
piso
6a2ffa86e5 o break newbus api: add a new argument of type driver_filter_t to
bus_setup_intr()

o add an int return code to all fast handlers

o retire INTR_FAST/IH_FAST

For more info: http://docs.freebsd.org/cgi/getmsg.cgi?fetch=465712+0+current/freebsd-current

Reviewed by: many
Approved by: re@
2007-02-23 12:19:07 +00:00
mjacob
19b599de4a 2nd and final commit that moves us to CAM_NEW_TRAN_CODE
as the default.

Reviewed by multitudes.
2006-11-02 00:54:38 +00:00
mjacob
7e1db24f98 The first of 3 major steps to move the CAM layer forward to using
the CAM_NEW_TRAN_CODE that has been in the tree for some years now.

This first step consists solely of adding to or correcting
CAM_NEW_TRAN_CODE pieces in the kernel source tree such
that a both a GENERIC (at least on i386) and a LINT build
with CAM_NEW_TRAN_CODE as an option will compile correctly
and run (at least with some the h/w I have).

After a short settle time, the other pieces (making
CAM_NEW_TRAN_CODE the default and updating libcam
and camcontrol) will be brought in.

This will be an incompatible change in that the size of structures
related to XPT_PATH_INQ and XPT_{GET,SET}_TRAN_SETTINGS change
in both size and content. However, basic system operation and
basic system utilities work well enough with this change.

Reviewed by:	freebsd-scsi and specific stakeholders
2006-10-31 05:53:29 +00:00
imp
97eacfa4a1 aic_pccard_products can be static.
Noticed by: cscope
2006-10-03 04:51:18 +00:00
imp
2b6cd2aa2c Eliminate support for oldcard by removing the compat shims. 2005-09-20 19:45:08 +00:00
imp
8616206ff9 Eliminate unused argument in PCMCIA_CARD macro.
Provide a backwards compatible way to have the extra macro by defining
PCCARD_API_LEVEL 5 before including pccarddevs for driver writers that
want/need to have the same driver on 5 and 6 with pccard attachments.

Approved by: re (dwhite)
2005-06-24 14:36:54 +00:00
nyan
0fce92f5c4 Remove bus_{mem,p}io.h and related code for a micro-optimization on i386
and amd64.  The optimization is a trivial on recent machines.

Reviewed by:	-arch (imp, marcel, dfr)
2005-05-29 04:42:30 +00:00
nyan
b12fd2aedd Remove ifdef PC98. 2005-04-13 13:02:58 +00:00
imp
4b319958e7 Start each of the license/copyright comments with /*-, minor shuffle of lines 2005-01-06 01:43:34 +00:00
imp
5f2befc69a Fix disordering of pccarddevs.h noticed by bde. Also remove a few
redundant includes and fix some of the include disordering.

Submitted by: bde
2004-05-27 03:49:45 +00:00
imp
1f5642e8bb Move to generating pccarddevs.h on the fly, both for the kernel and
the modules.

Also generate usbdevs.h automatically now, but a non-kernel file is
stopping that at the moment.
2004-05-26 00:53:10 +00:00
njl
05a1f56fc9 Convert callers to the new bus_alloc_resource_any(9) API.
Submitted by:	Mark Santcroos <marks@ripe.net>
Reviewed by:	imp, dfr, bde
2004-03-17 17:50:55 +00:00
obrien
c63dab466c Use __FBSDID().
Also some minor style cleanups.
2003-08-24 17:55:58 +00:00
marcel
a48e8d72dc In aic_reconnect()i, initialize scb. On ia64 the compiler warns about
a possible uninitialized variable.
2003-08-23 09:00:56 +00:00
njl
ea1ca84312 Merge common XPT_CALC_GEOMETRY functions into a single convenience function.
Devices below may experience a change in geometry.

* Due to a bug, aic(4) never used extended geometry.  Changes all drives
  >1G to now use extended translation.
* sbp(4) drives exactly 1 GB in size now no longer use extended geometry.
* umass(4) drives exactly 1 GB in size now no longer use extended geometry.

For all other controllers in this commit, this should be a no-op.

Looked over by:	scottl
2003-06-14 22:17:41 +00:00
imp
0b41fd998b Make sure that pp_name is non-null before setting the device
description.  This allows us to rely entirely on the CIS entries if
necessary...
2003-04-10 04:36:02 +00:00
imp
33cb79e0fa Add second and thrid bus-toaster IDs 2002-11-14 05:08:22 +00:00
phk
1dfc2c167f Be consistent about "static" functions: if the function is marked
static in its prototype, mark it static at the definition too.

Inspired by:    FlexeLint warning #512
2002-09-28 17:15:38 +00:00
alfred
3264aec746 Remove __P. 2002-03-20 02:08:01 +00:00
luoqi
01796e3f81 Support for LG GM82C700, an AIC6360 clone. 2002-03-15 21:30:41 +00:00
joerg
4791f4faa9 Back out the hack from rev 1.13 that was done to initiate a bus rescan
at insert time.  When asking gibbs for approval for an MFC, this was
his reply:

1) It leaks memory if it can't allocate a path.

2) It defers allocation of aic->path until the call to scan the
   bus.  This means the path may be NULL when an interrupt occurs
   prior to the call to scan the bus (stray bus reset for instance),
   which will lead to a panic.

3) The driver in current doesn't recover from the failure to allocate
   aic->path.  The driver doesn't check during normal operation if
   the path is NULL, so again a panic will result.

4) aic_cam_rescan calls malloc with M_WAITOK.  aic_cam_rescan is called
   from attach where it isn't necessarily safe to sleep.

5) And most importantly, it co-opts the xpt_periph from the driver level.
   This was never part of the design (xpt_periph used to be static).  Making
   a call of this type may completely confuse the XPT if other XPT operations
   are ongoing.

In the long term, Justin and Warner agreed to implement solution where
CAM itself will initiate the bus rescan if a new bus is added.  For
the time being (and in particular in light of the upcoming 4.5
release), we now have camcontrol available on the boot floppy, and can
have pccardd initiate the rescan through it.
2002-01-17 20:34:58 +00:00
imp
6fdb4db61f Migrate to PCMCIA_CARD() macros 2001-11-15 07:52:49 +00:00
imp
249aae3888 s/PCCARD_/PCMCIA_/g in NEWCARD device tables to enable easier NetBSD sharing 2001-11-11 20:17:10 +00:00
nyan
5dec8ab9a6 Merged from sys/dev/aic/aic_isa.c revision 1.8. 2001-06-26 11:35:46 +00:00
imp
abebae52ec Add PnP IDs for AHA-1530 and AHA-1520 cards.
PR:		19497, 18378
Submitted by:	Martijn Plak <martijn@be3.com>
2001-06-06 22:32:29 +00:00
nyan
c69012d9c4 Merged from sys/dev/aic/aic_isa.c revision 1.7. 2001-04-01 06:37:59 +00:00
ken
8d74e08df5 Fix a few things in the aic(4) driver:
- enable 10MHz (fast SCSI) operation on boards that support it.  (only
   aic6360 boards with fast SCSI enabled can do it)

 - bounds check sync periods and offsets passed in from the transport layer

 - tell the user which resource allocation failed (for the ISA probe) if we
   weren't able to allocate an IRQ, DRQ or I/O port.
2001-03-16 22:20:19 +00:00
markm
36b9aabb47 Turn on interrupt-entropy harvesting for all/any mass storage devices
I could find. I have no doubt missed a couple.

Interrupt entropy harvesting is still conditional on the
kern.random.sys.harvest_interrupt sysctl.
2001-03-01 17:09:09 +00:00
peter
81e9930fea Sigh, nobody ever got back to me about this. So, here it is..
Implement auto scsi scan at insert time for the aic driver.
2001-02-23 02:32:31 +00:00
imp
4e0af4d009 Use PCCARD_CIS_xxx #defines for the table of oem ids. These usually
translate to all NULLs (as for all the ones in this commit).
2001-01-21 08:15:37 +00:00
imp
cebce29aee Add aic to the list of drivers that might work with NEWCARD. I've added
the same config lines that NetBSD has.  This builds with both NEWCARD
and GENERIC config files.
2001-01-08 01:59:15 +00:00
imp
7fe58ad930 Add module dependencies on CAM module.
Submitted by:	Michael Reifenberger
2000-12-13 05:46:23 +00:00
phk
beadbd4365 Remove unneeded #include <machine/clock.h> 2000-10-15 14:19:01 +00:00
imp
e3b148ff2f remove 5 unnecessary includes, per phk's script 2000-09-20 19:34:17 +00:00
brian
70f4695c61 Terminate aic_ids[] 2000-06-19 22:16:14 +00:00
peter
671412085c Unused include: #include "aic.h" 2000-06-10 11:06:51 +00:00
jake
961b97d434 Back out the previous change to the queue(3) interface.
It was not discussed and should probably not happen.

Requested by:		msmith and others
2000-05-26 02:09:24 +00:00
jake
d93fbc9916 Change the way that the queue(3) structures are declared; don't assume that
the type argument to *_HEAD and *_ENTRY is a struct.

Suggested by:	phk
Reviewed by:	phk
Approved by:	mdodd
2000-05-23 20:41:01 +00:00
phk
6be1308ad1 Remove ~25 unneeded #include <sys/conf.h>
Remove ~60 unneeded #include <sys/malloc.h>
2000-04-19 14:58:28 +00:00
phk
75e82c815e Remove unneeded <sys/buf.h> includes.
Due to some interesting cpp tricks in lockmgr, the LINT kernel shrinks
by 924 bytes.
2000-04-18 15:15:39 +00:00
nyan
243cee01b7 - Added PC-98 Cbus frontend.
- Move dev/aic/aic_isa.c entry from conf/files to conf/files.MACHINE
   because PC-98 uses different file.

Submitted by:	nyan and IMAI Takeshi <take-i@ceres.dti.ne.jp>
2000-03-29 14:32:34 +00:00
imp
7ec55590c7 Add support to aic for pccard attachments. Reports from testers have
been so positive that I'm going to go ahead and commit this now rather
than do another round of patches.

My Adaptec 1460D works great with these changes.
2000-01-14 23:42:36 +00:00
luoqi
e8ce4b1d25 Adjust data pointers for untransmitted bytes in fifos when there's phase
change during data transfer.
1999-12-16 16:11:49 +00:00
luoqi
d59911ee91 Disconnect and tagged queueing now really work. Also fix a bug that's
causing problems to slow devices.
1999-12-04 22:15:02 +00:00
luoqi
15b14d33bd Bug fix: allow reset device command to complete. 1999-10-28 05:28:00 +00:00