Home | History | Annotate | Download | only in pci
History log of /src/sys/dev/pci/siside.c
RevisionDateAuthorComments
 1.38  05-Feb-2019  mrg add missing break; after "100NEW" configuration.
don't also set "133OLD", since the 100NEW cards don't support 133.
 1.37  23-Jun-2018  maxv branches: 1.37.2;
constify
 1.36  31-May-2014  christos branches: 1.36.20; 1.36.26;
PR/48858: Roy Bixler: siside0:0:1:0: lost interrupt, submitter claims this
makes the cdrom work.
 1.35  24-May-2014  abs Add in missing space after "96X UDMA%d". Changes "96X UDMA6746" to "96X UDMA6 746"
 1.34  07-Oct-2013  jakllsch branches: 1.34.2;
Use the universal pciide_detach() for detach function of all remaining
pciide-core drivers, except pciide at pnpbios which isn't actually PCI.
 1.33  31-Jul-2012  bouyer branches: 1.33.2; 1.33.4;
Apply back changes that were reverted on Jul 24 and Jul 26 (general ata/wdc
cleanup and SATA PMP support), now that I'm back to fix the fallouts.
 1.32  26-Jul-2012  jakllsch Revert, with intention of restoring in a less invasive way, the SATA Port
Multiplier code.

ok christos@
 1.31  24-Jul-2012  jakllsch Revert dsl@'s changes of Sun, 15 Jul 2012 10:55:35 +0000 and
Sun, 15 Jul 2012 10:56:50 +0000, excepting the kernel version bump.
First step in reverting regressions to ata(4) subsystem during the addition of
port multiplier support.
 1.30  15-Jul-2012  dsl Some namespace protection (and add greppablity).
Prefix the DRIVE_ and DRIVET_ constants from atavar.h with ATA_.
Don't use an enum for drive_type - you don't know how big it will be.
Move driver_type to avoid implicit structure padding (esp on arm).
This change is purely lexical and mechanical.

Update to 6.99.9 - this wasn't done when the SATA PMP changes
were made - I'm sure they warranted a bump.
 1.29  02-Jul-2012  bouyer Add sata Port MultiPlier (PMP) support to the ata bus layer,
as described in
http://mail-index.netbsd.org/tech-kern/2012/06/23/msg013442.html
PMP support in integrated to the atabus layer.
struct ata_channel's ch_drive[] is not dynamically allocated, and ch_ndrive
(renamed to ch_ndrives) closely reflects the size of the ch_drive[] array.
Add helper functions atabus_alloc_drives() and atabus_free_drives()
to manage ch_drive[]/ch_ndrives.
Add wdc_maxdrives to struct wdc_softc so that bus front-end can specify
how much drive they really support (master/slave or single).
ata_reset_drive() callback gains a uint32_t *sigp argument which,
when not NULL, will contain the signature of the device being reset.
While there, some cosmetic changes:
- added a drive_type enum to ata_drive_datas, and stop encoding the
probed drive type in drive_flags (we were out of drive flags anyway).
- rename DRIVE_ATAPIST to DRIVE_ATAPIDSCW to better reflect what this
really is
- remove ata_channel->ata_drives, it's redundant with the pointer in
ata_drive_datas
- factor out the interpretation of SATA signatures in sata_interpet_sig()

propagate these changes to the ATA HBA drivers, and add support for PMP
to ahcisata(4) and siisata(4).

Thanks to:
- Protocase (http://www.protocase.com/) which provided a system
with lots of controllers, SATA PMP and drive slots
- Conservation Genomics Laboratory, Department of Biology, New Mexico State
University for hosting the above system
- Brook Milligan, who set up remote access and has been very responsive
when SATA cable move was needed
 1.28  24-May-2011  joerg branches: 1.28.4; 1.28.10;
Properly use format string
 1.27  04-Apr-2011  dyoung Neither pci_dma64_available(), pci_probe_device(), pci_mapreg_map(9),
pci_find_rom(), pci_intr_map(9), pci_enumerate_bus(), nor the match
predicate passed to pciide_compat_intr_establish() should ever modify
their pci_attach_args argument, so make their pci_attach_args arguments
const and deal with the fallout throughout the kernel.

For the most part, these changes add a 'const' where there was no
'const' before, however, some drivers and MD code used to modify
pci_attach_args. Now those drivers either copy their pci_attach_args
and modify the copy, or refrain from modifying pci_attach_args:

Xen: according to Manuel Bouyer, writing to pci_attach_args in
pci_intr_map() was a leftover from Xen 2. Probably a bug. I
stopped writing it. I have not tested this change.

siside(4): sis_hostbr_match() needlessly wrote to pci_attach_args.
Probably a bug. I use a temporary variable. I have not tested this
change.

slide(4): sl82c105_chip_map() overwrote the caller's pci_attach_args.
Probably a bug. Use a local pci_attach_args. I have not tested
this change.

viaide(4): via_sata_chip_map() and via_sata_chip_map_new() overwrote the
caller's pci_attach_args. Probably a bug. Make a local copy of the
caller's pci_attach_args and modify the copy. I have not tested
this change.

While I'm here, make pci_mapreg_submap() static.

With these changes in place, I have tested the compilation of these
kernels:

alpha GENERIC
amd64 GENERIC XEN3_DOM0
arc GENERIC
atari HADES MILAN-PCIIDE
bebox GENERIC
cats GENERIC
cobalt GENERIC
evbarm-eb NSLU2
evbarm-el ADI_BRH ARMADILLO9 CP3100 GEMINI GEMINI_MASTER GEMINI_SLAVE GUMSTIX
HDL_G IMX31LITE INTEGRATOR IQ31244 IQ80310 IQ80321 IXDP425 IXM1200
KUROBOX_PRO LUBBOCK MARVELL_NAS NAPPI SHEEVAPLUG SMDK2800 TEAMASA_NPWR
TEAMASA_NPWR_FC TS7200 TWINTAIL ZAO425
evbmips-el AP30 DBAU1500 DBAU1550 MALTA MERAKI MTX-1 OMSAL400 RB153 WGT624V3
evbmips64-el XLSATX
evbppc EV64260 MPC8536DS MPC8548CDS OPENBLOCKS200 OPENBLOCKS266
OPENBLOCKS266_OPT P2020RDB PMPPC RB800 WALNUT
hp700 GENERIC
i386 ALL XEN3_DOM0 XEN3_DOMU
ibmnws GENERIC
macppc GENERIC
mvmeppc GENERIC
netwinder GENERIC
ofppc GENERIC
prep GENERIC
sandpoint GENERIC
sgimips GENERIC32_IP2x
sparc GENERIC_SUN4U KRUPS
sparc64 GENERIC

As of Sun Apr 3 15:26:26 CDT 2011, I could not compile these kernels
with or without my patches in place:

### evbmips-el GDIUM

nbmake: nbmake: don't know how to make /home/dyoung/pristine-nbsd/src/sys/arch/mips/mips/softintr.c. Stop

### evbarm-el MPCSA_GENERIC
src/sys/arch/evbarm/conf/MPCSA_GENERIC:318: ds1672rtc*: unknown device `ds1672rtc'

### ia64 GENERIC

/tmp/genassym.28085/assym.c: In function 'f111':
/tmp/genassym.28085/assym.c:67: error: invalid application of 'sizeof' to incomplete type 'struct pcb'
/tmp/genassym.28085/assym.c:76: error: dereferencing pointer to incomplete type

### sgimips GENERIC32_IP3x

crmfb.o: In function `crmfb_attach':
crmfb.c:(.text+0x2304): undefined reference to `ddc_read_edid'
crmfb.c:(.text+0x2304): relocation truncated to fit: R_MIPS_26 against `ddc_read_edid'
crmfb.c:(.text+0x234c): undefined reference to `edid_parse'
crmfb.c:(.text+0x234c): relocation truncated to fit: R_MIPS_26 against `edid_parse'
crmfb.c:(.text+0x2354): undefined reference to `edid_print'
crmfb.c:(.text+0x2354): relocation truncated to fit: R_MIPS_26 against `edid_print'
 1.26  05-Nov-2010  jakllsch branches: 1.26.2;
Pave the way for detachment of pciide(4)-family ATA controllers.
 1.25  19-Oct-2009  bouyer branches: 1.25.2; 1.25.4;
Remove closes 3 & 4 from my licence. Lots of thanks to Soren Jacobsen
for the booring work !
 1.24  12-Mar-2009  bsh Turn off interrupt disable bit in command status reg.
This is necessary to make S-ATA drives work on some motherboards with
SiS964 including my ASUS P4S800D.
 1.23  18-Mar-2008  cube branches: 1.23.4; 1.23.12; 1.23.18;
Split device_t and softc for ATA devices, as well as wd(4). Other
cosmetic changes where appropriate.
 1.22  09-Feb-2007  ad branches: 1.22.20; 1.22.36; 1.22.40;
Merge newlock2 to head.
 1.21  16-Nov-2006  christos __unused removal on arguments; approved by core.
 1.20  12-Oct-2006  christos - sprinkle __unused on function decls.
- fix a couple of unused bugs
- no more -Wno-unused for i386
 1.19  26-Jun-2006  xtraeme branches: 1.19.4; 1.19.6;
Add support for SIS 660/760 IDE Controllers and SIS 181/182
SATA Controllers (from obsd).
 1.18  11-Dec-2005  christos branches: 1.18.4; 1.18.8; 1.18.16;
merge ktrace-lwp.
 1.17  16-Jun-2005  bouyer branches: 1.17.2;
Add quirk for SIS 96x that masquerade as a SIS503. Based on patch sent by
Robert Fuller in kern/30431, information found in the linux kernel.
While here, add SIS 965 to the table (from FreeBSD).
 1.16  30-May-2005  christos - const poisoning
- avoid variable shadowing.
 1.15  24-May-2005  lukem add __KERNEL_RCSID
 1.14  27-Feb-2005  perry branches: 1.14.2;
nuke trailing whitespace
 1.13  21-Aug-2004  thorpej branches: 1.13.4; 1.13.6;
atastart() (called only at splbio(), and from interrupts) can change
drive_flags, to make sure all drive_flags manipulations are done at
splbio().
 1.12  20-Aug-2004  thorpej Move most of wdc_softc into a new atac_softc structure that contains
info common to all types of ATA controllers.
 1.11  19-Aug-2004  thorpej - Add and use a CHAN_TO_WDC() macro to get the wdc_softc from an
ata_channel.
- Add and use a CHAN_TO_WDC_REGS() macro to get the wdc_regs from an
ata_channel.
- Add and use a CHAN_TO_PCIIDE() macro to get the pciide_softc from an
ata_channel.
- Add and use a CHAN_TO_PCHAN() macro to get the pciide_channel from an
ata_channel. (This one just hides a cast, and is really just for
consistency with the others.)
 1.10  14-Aug-2004  thorpej - Split the register handles out of struct wdc_channel into a separate
wdc_regs structure, and array of which (indexed per channel) is pointed
to by struct wdc_softc.
- Move the resulting wdc_channel structure to atavar.h and rename it to
ata_channel. Rename the corresponding flags.
- Add a "ch_ndrive" member to struct ata_channel, which indicates the
maximum number of drives that can be present on the channel. For now,
this is always 2. Add an ATA_MAXDRIVES constant that places an upper
limit on this value, also currently 2.
 1.9  13-Aug-2004  thorpej WDCDEBUG -> ATADEBUG.
 1.8  13-Aug-2004  thorpej Don't bother with bits that tell of the presence of optional callbacks;
just check the function pointers for NULL.
 1.7  21-Jul-2004  mycroft branches: 1.7.2;
Add the SiS 741, per PR 26394.
 1.6  22-Apr-2004  skd Added initial support for SIS 180 SATA controller. Patterned after
VIA 8237 support.
 1.5  03-Jan-2004  thorpej branches: 1.5.2;
More wdc_channel structure member namespace cleanup:
- channel -> ch_channel
- wdc -> ch_wdc
 1.4  03-Jan-2004  thorpej Rename "struct channel_softc" to "struct wdc_channel".
 1.3  27-Nov-2003  fvdl There are some cards that map the ATA control and IDE DMA registers
in a different fashion. Individually, they have the same functionality,
but their layout is different. An example of such a chipset is
the Promise 203xx.

To be able to deal with this, transform the cmd and dma bus_space handles
into an array of handles, each seperately created with bus_space_subregion.
The code generated by using the extra indirection shouldn't change much,
since the extra indirection is negated by having the offset calculation
already done in bus_space_subregion. E.g.

bus_space_write_4(tag, handle, offset, value)

becomes

bus_space_write_4(tag, handles[offset], 0, value)

Reviewed by Manuel Bouyer. Tested on wdc_isa, wdc_pcmcia, viaide, piixide (i386)
and on cmdide (sparc64).
 1.2  11-Oct-2003  thorpej Cosmetic changes:
- Use static to unexport symbols that don't need to be exported.
- ANSI'ify.
- Some whitespace nits.
 1.1  08-Oct-2003  bouyer Split pciide in per-chip family driver, as proposed in
http://mail-index.netbsd.org/tech-kern/2003/09/25/0007.html
We now have:
acardide* at pci? dev ? function ? # Acard IDE controllers
aceride* at pci? dev ? function ? # Acer Lab IDE controllers
cmdide* at pci? dev ? function ? # CMD tech IDE controllers
cypide* at pci? dev ? function ? # Cypress IDE controllers
hptide* at pci? dev ? function ? # Triones/HighPoint IDE controllers
optiide* at pci? dev ? function ? # Opti IDE controllers
piixide* at pci? dev ? function ? # Intel IDE controllers
pdcide* at pci? dev ? function ? # Promise IDE controllers
siside* at pci? dev ? function ? # SiS IDE controllers
slide* at pci? dev ? function ? # Symphony Labs IDE controllers
viaide* at pci? dev ? function ? # VIA/AMD/Nvidia IDE controllers
pciide* at pci? dev ? function ? flags 0x0000 # GENERIC pciide driver

serverworks driver not commited yet; there are still copyright issues about
it.
 1.5.2.1  23-Jul-2004  he branches: 1.5.2.1.2;
Pull up revision 1.7 (requested by mycroft in ticket #691):
Add support for SiS 741. Fixes PR#26394.
 1.5.2.1.2.1  05-Jul-2005  riz Pull up revision 1.17 via patch (requested by bouyer in ticket #2032):
Add quick for SIS 96x that masquerade as a SIS503. Based on patch sent by
Robert Fuller in kern/30431, information found in the linux kernel.
While here, add SIS 965 to the table (from FreeBSD).
 1.7.2.7  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.7.2.6  04-Mar-2005  skrll Sync with HEAD.

Hi Perry!
 1.7.2.5  21-Sep-2004  skrll Fix the sync with head I botched.
 1.7.2.4  18-Sep-2004  skrll Sync with HEAD.
 1.7.2.3  25-Aug-2004  skrll Sync with HEAD.
 1.7.2.2  03-Aug-2004  skrll Sync with HEAD
 1.7.2.1  21-Jul-2004  skrll file siside.c was added on branch ktrace-lwp on 2004-08-03 10:49:12 +0000
 1.13.6.1  19-Mar-2005  yamt sync with head. xen and whitespace. xen part is not finished.
 1.13.4.1  29-Apr-2005  kent sync with -current
 1.14.2.1  26-Jun-2005  tron Pull up revision 1.17 (requested by bouyer in ticket #498):
Add quirk for SIS 96x that masquerade as a SIS503. Based on patch sent by
Robert Fuller in kern/30431, information found in the linux kernel.
While here, add SIS 965 to the table (from FreeBSD).
 1.17.2.3  24-Mar-2008  yamt sync with head.
 1.17.2.2  26-Feb-2007  yamt sync with head.
 1.17.2.1  30-Dec-2006  yamt sync with head.
 1.18.16.1  13-Jul-2006  gdamore Merge from HEAD.
 1.18.8.1  11-Aug-2006  yamt sync with head
 1.18.4.1  09-Sep-2006  rpaulo sync with head
 1.19.6.2  10-Dec-2006  yamt sync with head.
 1.19.6.1  22-Oct-2006  yamt sync with head
 1.19.4.2  06-Feb-2007  ad Quiten noisy boot messages.
 1.19.4.1  18-Nov-2006  ad Sync with head.
 1.22.40.1  03-Apr-2008  mjf Sync with HEAD.
 1.22.36.1  24-Mar-2008  keiichi sync with head.
 1.22.20.1  23-Mar-2008  matt sync with HEAD
 1.23.18.1  13-May-2009  jym Sync with HEAD.

Commit is split, to avoid a "too many arguments" protocol error.
 1.23.12.1  28-Apr-2009  skrll Sync with HEAD.
 1.23.4.2  11-Mar-2010  yamt sync with head
 1.23.4.1  04-May-2009  yamt sync with head.
 1.25.4.3  31-May-2011  rmind sync with head
 1.25.4.2  21-Apr-2011  rmind sync with head
 1.25.4.1  05-Mar-2011  rmind sync with head
 1.25.2.1  06-Nov-2010  uebayasi Sync with HEAD.
 1.26.2.1  06-Jun-2011  jruoho Sync with HEAD.
 1.28.10.1  03-Jun-2014  msaitoh Pull up following revision(s) (requested by abs in ticket #1069):
sys/dev/pci/siside.c: revision 1.35

Add in missing space after "96X UDMA%d". Changes "96X UDMA6746" to
"96X UDMA6 746"
 1.28.4.2  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.28.4.1  30-Oct-2012  yamt sync with head
 1.33.4.1  18-May-2014  rmind sync with head
 1.33.2.2  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.33.2.1  09-Oct-2012  bouyer Support transfers of up to MACHINE_MAXPHYS in all pciide variants, and ahci.
wd(4) limits its maxphys depending on the drives's capability (64k sectors
for LBA48, 256 sectors for LBA and 128 sectors for older devices).

I assumed all pciide controllers could do MACHINE_MAXPHYS transfers, but
this may not be true. The capabilities of each controller variants should be
looked at more closely.
 1.34.2.1  10-Aug-2014  tls Rebase.
 1.36.26.1  25-Jun-2018  pgoyette Sync with HEAD
 1.36.20.1  01-Aug-2019  martin Pull up following revision(s) (requested by msaitoh in ticket #1314):

sys/dev/pci/siside.c: revision 1.38

add missing break; after "100NEW" configuration.
don't also set "133OLD", since the 100NEW cards don't support 133.
 1.37.2.1  10-Jun-2019  christos Sync with HEAD

RSS XML Feed