linux-stable/Documentation
Brent Casavant 22329b511a [PATCH] ioc4: Core driver rewrite
This series of patches reworks the configuration and internal structure
of the SGI IOC4 I/O controller device drivers.

These changes are motivated by several factors:

- The IOC4 chip PCI resources are of mixed use between functions (i.e.
  multiple functions are handled in the same address range, sometimes
  within the same register), muddling resource ownership and initialization
  issues.  Centralizing this ownership in a core driver is desirable.

- The IOC4 chip implements multiple functions (serial, IDE, others not
  yet implemented in the mainline kernel) but is not a multifunction
  PCI device.  In order to properly handle device addition and removal
  as well as module insertion and deletion, an intermediary IOC4-specific
  driver layer is needed to handle these operations cleanly.

- All IOC4 drivers are currently enabled by a single CONFIG value.  As
  not all systems need all IOC4 functions, it is desireable to enable
  these drivers independently.

- The current IOC4 core driver will trigger loading of all function-level
  drivers, as it makes direct calls to them.  This situation should be
  reversed (i.e. function-level drivers cause loading of core driver)
  in order to maintain a clear and least-surprise driver loading model.

- IOC4 hardware design necessitates some driver-level dependency on
  the PCI bus clock speed.  Current code assumes a 66MHz bus, but the
  speed should be autodetected and appropriate compensation taken.

This patch series effects the above changes by a newly and better designed
IOC4 core driver with which the function-level drivers can register and
deregister themselves upon module insertion/removal.  By tracking these
modules, device addition/removal is also handled properly.  PCI resource
management and ownership issues are centralized in this core driver, and
IOC4-wide configuration actions such as bus speed detection are also
handled in this core driver.

This patch:

The SGI IOC4 I/O controller chip implements multiple functions, though it is
not a multi-function PCI device.  Additionally, various PCI resources of the
IOC4 are shared by multiple hardware functions, and thus resource ownership by
driver is not clearly delineated.  Due to the current driver design, all core
and subordinate drivers must be loaded, or none, which is undesirable if not
all IOC4 hardware features are being used.

This patch reorganizes the IOC4 drivers so that the core driver provides a
subdriver registration service.  Through appropriate callbacks the subdrivers
can now handle device addition and removal, as well as module insertion and
deletion (though the IOC4 IDE driver requires further work before module
deletion will work).  The core driver now takes care of allocating PCI
resources and data which must be shared between subdrivers, to clearly
delineate module ownership of these items.

Signed-off-by: Brent Casavant <bcasavan@sgi.com>
Acked-by: Pat Gefre <pfg@sgi.com
Acked-by: Jeremy Higdon <jeremy@sgi.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-21 18:46:32 -07:00
..
DocBook [PATCH] fix "make mandocs" after class_simple.c removal 2005-06-20 15:15:12 -07:00
RCU [PATCH] Update RCU documentation 2005-05-01 08:59:05 -07:00
aoe [PATCH] aoe: update the documentation to mention aoetools 2005-05-03 23:34:54 -07:00
arm Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
block Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cdrom Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cpu-freq [PATCH] cpufreq-stats driver documentation 2005-05-31 19:04:05 -07:00
cris Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
crypto Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
device-mapper Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
driver-model [PATCH] Driver Core: driver model doc update 2005-06-20 15:15:29 -07:00
dvb [PATCH] dvb: bt8xx: updated documentation 2005-05-17 07:59:34 -07:00
early-userspace Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
fb Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
filesystems [PATCH] shmem: restore superblock info 2005-06-21 18:46:18 -07:00
firmware_class Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
fujitsu/frv Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
i2c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
i2o Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
i386 [PATCH] Increase number of e820 entries hard limit from 32 to 128 2005-05-01 08:58:51 -07:00
ia64 Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
infiniband [PATCH] IPoIB: document conversion to debugfs 2005-04-16 15:26:07 -07:00
input Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ioctl Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
isdn Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
kbuild Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
m68k Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mips Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
networking Manual merge of rsync://rsync.kernel.org/pub/scm/linux/kernel/git/jgarzik/netdev-2.6.git 2005-06-18 11:42:35 -07:00
parisc Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
power [PATCH] Driver Core: remove driver model detach_state 2005-05-17 14:54:55 -07:00
powerpc [PATCH] Driver Core: remove driver model detach_state 2005-05-17 14:54:55 -07:00
s390 [PATCH] s390: cio documentation 2005-05-01 08:59:00 -07:00
scsi [SCSI] allow sleeping in ->eh_host_reset_handler() 2005-06-17 12:05:18 -05:00
serial Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sh Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sound Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sparc Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sysctl Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
telephony Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
uml Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
usb Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
video4linux Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
vm Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
w1 Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
watchdog Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
x86_64 [PATCH] x86_64: Add option to disable timer check 2005-05-20 15:48:21 -07:00
00-INDEX [PATCH] remove BK documentation 2005-05-05 16:36:42 -07:00
BUG-HUNTING Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
Changes [PATCH] DocBook: Use xmlto to process the DocBook files. 2005-05-01 08:59:27 -07:00
CodingStyle Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
DMA-API.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
DMA-mapping.txt [PATCH] remove old scsi data direction macros 2005-04-18 13:49:58 -05:00
IO-mapping.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
IPMI.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
IRQ-affinity.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
MSI-HOWTO.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ManagementStyle Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
PCIEBUS-HOWTO.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
README.DAC960 Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
README.cycladesZ Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
SAK.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
SecurityBugs Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
SubmittingDrivers Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
SubmittingPatches Update DCO ("signoff") rules to 1.1 2005-06-13 17:51:55 -07:00
VGA-softcursor.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
atomic_ops.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
basic_profiling.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
binfmt_misc.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cachetlb.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cciss.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cli-sti-removal.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
computone.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cpqarray.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cpusets.txt [PATCH] cpusets+hotplug+preepmt broken 2005-05-20 15:48:19 -07:00
debugging-modules.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
devices.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
digiepca.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
dnotify.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
dontdiff [PATCH] Update dontdiff 2005-05-05 16:36:42 -07:00
eisa.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
exception.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
feature-removal-schedule.txt [PATCH] ieee1394: feature removal notices 2005-05-17 07:59:22 -07:00
floppy.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ftape.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
hayes-esp.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
highuid.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
hpet.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
hw_random.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ibm-acpi.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ide.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
initrd.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
io_ordering.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ioctl-number.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
iostats.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
isapnp.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
java.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
kernel-doc-nano-HOWTO.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
kernel-docs.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
kernel-parameters.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
keys.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
kobject.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
kref.txt [PATCH] kref: add link to original documentation to the kref documentation. 2005-04-18 21:57:30 -07:00
laptop-mode.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ldm.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
locks.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
logo.gif Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
logo.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
magic-number.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mandatory.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mca.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
md.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
memory.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mono.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
moxa-smartio Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mtrr.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
nbd.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
nfsroot.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
nmi_watchdog.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
nommu-mmap.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
numastat.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
oops-tracing.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
paride.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
parport-lowlevel.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
parport.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pci.txt [PATCH] PCI: update PCI documentation for pci_get_slot() depreciation 2005-05-03 23:45:14 -07:00
pm.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pnp.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
preempt-locking.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
prio_tree.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ramdisk.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
riscom8.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
rocket.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
rpc-cache.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
rtc.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sched-coding.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sched-design.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sched-domains.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sched-stats.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
seclvl.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
serial-console.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sgi-ioc4.txt [PATCH] ioc4: Core driver rewrite 2005-06-21 18:46:32 -07:00
sgi-visws.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
smart-config.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
smp.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sonypi.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sparse.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
specialix.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
spinlocks.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
stable_api_nonsense.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
stallion.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
svga.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sx.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sysrq.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
time_interpolators.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
tipar.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
tty.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
unicode.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
voyager.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
xterm-linux.xpm Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
zorro.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00

README.cycladesZ

The Cyclades-Z must have firmware loaded onto the card before it will
operate.  This operation should be performed during system startup,

The firmware, loader program and the latest device driver code are
available from Cyclades at
    ftp://ftp.cyclades.com/pub/cyclades/cyclades-z/linux/