Commit Graph

59 Commits

Author SHA1 Message Date
mycroft
eefae40298 Hide the use of config_interrupts() in one place. 2003-09-25 19:29:48 +00:00
mycroft
f9d629fb93 Fix more probe delay and/or failure problems:
1) Don't wait for DRQ on an IDENTIFY command -- if it's not set when we see
   BSY clear, abort the command and ignore the drive.  (Do this by testing
   for DRQ in the read/write cases in __wdccommand_intr().)
2) Don't wait for DRQ to deassert when we finish an IDENTIFY (or any other
   non-block command that reads data) -- we don't do this for block I/O, and
   empirically it doesn't clear on my CF cards at all, causing a pointless 1s
   delay.
3) Add comments to some of the delay()s, and add missing ones in wdcreset()
   and the WDCC_RECAL in the so-called "pre-ATA" probe.
4) Slightly simplify the reset sequence -- we were doing an extra I/O.
5) Modify the register writability test to make sure that registers are not
   overlapped -- this can happen in some weird cases with a missing device 1.
6) Check the error register value after the reset -- if it's not 01h or 81h,
   as appropriate (see ATA spec), punt.
Tested with a number of ATA-only, ATAPI-only, mixed ATA-ATAPI, CF, and IDE
disk configurations.

Also remove the SINGLE_DRIVE nonsense again.
2003-09-23 09:19:22 +00:00
bouyer
c6beeca692 Since we can't detect ghost drives in the wdc back-end, resurect
WDC_CAPABILITY_SINGLE_DRIVE.
2003-09-21 11:14:00 +00:00
mycroft
d40837608f 1) Use config_interrupts() to attach IDE and ATAPI drives. This eliminates
most polling.
2) Clean up some goofiness in pciide -- get rid of the whole "candisable" path
   (it's gratuitous) and simplify the code by calling pciide_map_compat_intr(),
   *_set_modes() and wdc_print_modes() from central locations.
3) Add a register writability and register ghost test to eliminate phantom
   drives more quickly.
2003-09-19 21:35:56 +00:00
matt
374319260c Don't free chqueue since it's no longer malloc'ed. 2003-03-30 02:06:29 +00:00
ichiro
26d61dcb91 add product TOSHIBA PA2673U CBIDE2 (IODATA OEM) 2003-03-27 12:19:44 +00:00
matt
d641dc322f Don't malloc channel_queue, put it in the softc instead. 2003-03-22 20:09:35 +00:00
thorpej
b75a007d9f Add trailing ; to CFATTACH_DECL. 2002-10-02 16:51:16 +00:00
thorpej
71adb76f75 Use CFATTACH_DECL(). 2002-09-30 21:57:46 +00:00
thorpej
f818766afe Declare all cfattach structures const. 2002-09-27 20:31:45 +00:00
lukem
06de426449 SIMPLEQ rototill:
- implement SIMPLEQ_REMOVE(head, elm, type, field).  whilst it's O(n),
  this mirrors the functionality of SLIST_REMOVE() (the other
  singly-linked list type) and FreeBSD's STAILQ_REMOVE()
- remove the unnecessary elm arg from SIMPLEQ_REMOVE_HEAD().
  this mirrors the functionality of SLIST_REMOVE_HEAD() (the other
  singly-linked list type) and FreeBSD's STAILQ_REMOVE_HEAD()
- remove notes about SIMPLEQ not supporting arbitrary element removal
- use SIMPLEQ_FOREACH() instead of home-grown for loops
- use SIMPLEQ_EMPTY() appropriately
- use SIMPLEQ_*() instead of accessing sqh_first,sqh_last,sqe_next directly
- reorder manual page; be consistent about how the types are listed
- other minor cleanups
2002-06-01 23:50:52 +00:00
martin
a35450fe90 Backout previous. While it fixes half of the problem for me, it is not
the right fix.
2002-03-31 13:27:32 +00:00
martin
6d37025002 Establish/disestablish the interrupt handler when enabling/disabling the
controller - no matter if we are called from attach or not.
This makes my FreeCOM CD drive work at first attach (PR 13480).

Something is wrong with the detach code; it won't work on second attach
and will panic on second detach - but that has to wait until the kids
took care of some easter eggs.
2002-03-31 07:19:03 +00:00
simonb
c37d15083b Fix a tyop in a comment. 2002-01-29 00:31:55 +00:00
soren
3faa83dcb4 To make dev/pcmcia work on platforms with 64-bit bus_addr_t and
32-bit bus_size_t (sparc), change the pcmcia_mem_map(9) offsetp
argument to bus_size_t as it is used as a bus_space offset.
2001-12-16 17:53:17 +00:00
lukem
ab5d9d2b0c add RCSIDs 2001-11-13 07:24:43 +00:00
christos
d9b3639de6 quirk for panasonic adapter. 2001-10-14 19:21:45 +00:00
bouyer
937a7a3ed9 Pull up the thorpej_scsipi branch to main branch.
This is a completely rewritten scsipi_xfer execution engine, and the
associated changes to HBA drivers. Overview of changes & features:
- All xfers are queued in the mid-layer, rather than doing so in an
  ad-hoc fashion in individual adapter drivers.
- Adapter/channel resource management in the mid-layer, avoids even trying
  to start running an xfer if the adapter/channel doesn't have the resources.
- Better communication between the mid-layer and the adapters.
- Asynchronous event notification mechanism from adapter to mid-layer and
  peripherals.
- Better peripheral queue management: freeze/thaw, sorted requeueing during
  recovery, etc.
- Clean separation of peripherals, adapters, and adapter channels (no more
  scsipi_link).
- Kernel thread for each scsipi_channel makes error recovery much easier
  (no more dealing with interrupt context when recovering from an error).
- Mid-layer support for tagged queueing: commands can have the tag type
  set explicitly, tag IDs are allocated in the mid-layer (thus eliminating
  the need to use buggy tag ID allocation schemes in many adapter drivers).
- support for QUEUE FULL and CHECK CONDITION status in mid-layer; the command
  will be requeued, or a REQUEST SENSE will be sent as appropriate.

Just before the merge syssrc has been tagged with thorpej_scsipi_beforemerge
2001-04-25 17:53:04 +00:00
uch
c567a80bdc CF memory mapped addressing mode. http://www.compactflash.org/cfspc1_4.pdf 2001-03-08 15:20:57 +00:00
jdolecek
522f569810 make some more constant arrays 'const' 2001-02-21 21:39:52 +00:00
takemura
1c518d67a0 Add WDC_CAPABILITY_SINGLE_DRIVE to ignore secound drive. Wdc on pcmcia will
be attached with this flag.
Some CF Card (for ex. IBM MicroDrive and SanDisk) doesn't seem to implement
drive select command. In this case, you can't eliminate ghost drive properly.
So you should use this flag to ignore the ghost by force.
2001-01-06 14:55:49 +00:00
sato
4e15bd1d3a add Novac PCMCIA-IDE Card(Card for HD530P PCMCIA-IDE Box).
No vendor ID, no product ID, and the wpp_cis_info is 'PCMCIA', 'PnPIDE'.
2000-12-27 10:41:00 +00:00
haya
22be9ab855 Add IO Data CBIDE2 ata interface card. 2000-12-20 09:56:34 +00:00
abs
cf699a23e5 Add a 'value engineered' generic pcmcia CD-ROM drive, badged 'AMACOM'.
No vendor ID, no product ID, and the wpp_cis_info is 'PCMCIA', 'CD-ROM'.
I'd be encouraged at some progress towards 'generic devices', except
someone else is bound to produce something that identifies the same, but
requires a quirk. Can I go back to my sparc now?
Make two other comments consistent while here.
2000-12-18 17:21:11 +00:00
haya
a4df364077 METHOD CHANGE: Use CIS_FUNCE data which is decoded by pcmcia_cis.c,
instead of decode cis tuple by itself.  This change leads to suppress
one power-cycling.
2000-10-25 09:32:11 +00:00
abs
c9355a957c Add the pccard controller for a Toshiba Portege drive. No vendor ID, no
product ID, and in this temporary loan, no bleeding power supply so it
can only probe the controller and not the drive. Still, its something.
2000-07-20 23:20:01 +00:00
mrg
261538ecac remove include of <vm/vm.h> 2000-06-28 16:39:25 +00:00
bouyer
3b69a8011b make it compile again after ATAPI changes. 2000-04-01 17:52:14 +00:00
enami
158df7b6f1 Don't establish an interrupt if attach is in progress. Anyway, current wdc
and its children doesn't require interrupt on attach.
2000-02-21 03:55:22 +00:00
enami
9267b8f018 Remove unnecessary includes. 2000-02-05 04:41:49 +00:00
enami
730f15bb19 Free resources on attach failure. 2000-02-04 09:31:07 +00:00
enami
19aa9f2cbb The workaround for Hagiwara SYS-COM Compact Flash card is no longer necessary. 2000-02-01 06:48:15 +00:00
enami
7acb650645 - fix comment style/indentaion.
- add comment to refer aic_pcmcia_enable.
2000-01-24 23:14:23 +00:00
augustss
903e37734d Add EXP Computer Inc. PCMCIA controller.
From Brad Spencer <brad@anduin.eldar.org> in PR 9140.
2000-01-08 07:34:49 +00:00
sommerfeld
d4cc45ba08 Fix hot-swapping for controllers which grab two ranges of port space.
(if the mapping of the second range succeeded, it would forget about
the window of the second address range, causing a subsequent insertion
event to fail..).

My Sony PCGA-CD51 now hot-swaps a lot better now.
1999-12-09 03:22:41 +00:00
soren
6f6045c97d Regen. 1999-11-27 01:03:33 +00:00
takemura
cad52c9e08 Add a entry for Mobile Dock 2, which is 2.5" HDD adapter. 1999-11-21 10:13:08 +00:00
enami
a2369d8e97 Cancel active transfers on aic/wdc detach.
Also makes LS-120 drive works for me again.
1999-10-20 15:22:24 +00:00
enami
67e874d814 Allow to detach wdc, atapibus, wd and cd. 1999-09-23 11:04:29 +00:00
enami
99024b0423 print newline. 1999-09-22 10:03:37 +00:00
abs
ab9ab83d05 Add ID for IBM 'PCMCIA Portable CD-ROM Drive'. We only have one of these and it
may be broken (it choked under Windows), but it at least now probes.
1999-02-19 21:49:43 +00:00
bouyer
47ab212504 Rename pio_mode, etc ... to PIO_cap, etc ... for consistency with the
ata_drive_datas struct. Suggested by Soren S. Jorvan.
1998-12-03 18:24:30 +00:00
pk
0f7176ff24 Remove unwanted inclusion of an isa header file. 1998-11-22 21:58:50 +00:00
drochner
3e38051bc5 in wdc_softc: access the per-channel data via a pointer array instead of
an array of fixed-sized channel_softc elements. This way IDE controllers
which more than 1 channel (pciide) can extend the channel data easily
for private needs.
To avoid the double dereference at runtime, change the argument of
wdcstart() to the channel data pointer instead of the array index.
1998-11-21 15:41:41 +00:00
thorpej
792462c236 Add support for power management and lazy interrupt establishment
to PCMCIA IDE controllers (include PCMCIA flash cards).
1998-11-20 01:52:22 +00:00
enami
9ddbeaedbb - match if the function just probing is disk and its interface is ATA.
- use product table only for the card which requires quirks or doesn't
  have disk device interface tuple.
1998-10-29 09:49:51 +00:00
enami
634f1b5bf7 fix typo and some indentation. 1998-10-29 09:42:45 +00:00
bouyer
19fddaeeb5 Merge bouyer-ide 1998-10-12 16:09:10 +00:00
thorpej
e0fa7545bf Use pcmcia_io_free() where appropriate. 1998-10-10 22:01:24 +00:00
enami
b85655c706 Use an appropriate value for wpp_quirk_flag. 1998-09-18 14:43:58 +00:00