Linux-2.6.12-rc2
Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!
This commit is contained in:
18
drivers/zorro/Kconfig
Normal file
18
drivers/zorro/Kconfig
Normal file
@@ -0,0 +1,18 @@
|
||||
#
|
||||
# Zorro configuration
|
||||
#
|
||||
config ZORRO_NAMES
|
||||
bool "Zorro device name database"
|
||||
depends on ZORRO
|
||||
---help---
|
||||
By default, the kernel contains a database of all known Zorro device
|
||||
names to make the information in /proc/iomem comprehensible to the
|
||||
user. This database increases the size of the kernel image by about
|
||||
15KB, but it gets freed after the system boots up, so it doesn't
|
||||
take up kernel memory. Anyway, if you are building an installation
|
||||
floppy or kernel for an embedded system where kernel image size
|
||||
really matters, you can disable this feature and you'll get device
|
||||
ID numbers instead of names.
|
||||
|
||||
When in doubt, say Y.
|
||||
|
21
drivers/zorro/Makefile
Normal file
21
drivers/zorro/Makefile
Normal file
@@ -0,0 +1,21 @@
|
||||
#
|
||||
# Makefile for the Zorro bus specific drivers.
|
||||
#
|
||||
|
||||
obj-$(CONFIG_ZORRO) += zorro.o zorro-driver.o zorro-sysfs.o names.o
|
||||
obj-$(CONFIG_PROC_FS) += proc.o
|
||||
|
||||
hostprogs-y := gen-devlist
|
||||
|
||||
# Files generated that shall be removed upon make clean
|
||||
clean-files := devlist.h
|
||||
|
||||
# Dependencies on generated files need to be listed explicitly
|
||||
$(obj)/names.o: $(obj)/devlist.h
|
||||
|
||||
# And that's how to generate them
|
||||
quiet_cmd_devlist = DEVLIST $@
|
||||
cmd_devlist = ( cd $(obj); ./gen-devlist ) < $<
|
||||
$(obj)/devlist.h: $(src)/zorro.ids $(obj)/gen-devlist
|
||||
$(call cmd,devlist)
|
||||
|
107
drivers/zorro/gen-devlist.c
Normal file
107
drivers/zorro/gen-devlist.c
Normal file
@@ -0,0 +1,107 @@
|
||||
/*
|
||||
* Generate devlist.h from the Zorro ID file.
|
||||
*
|
||||
* (c) 2000 Geert Uytterhoeven <geert@linux-m68k.org>
|
||||
*
|
||||
* Based on the PCI version:
|
||||
*
|
||||
* (c) 1999--2000 Martin Mares <mj@ucw.cz>
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#define MAX_NAME_SIZE 63
|
||||
|
||||
static void
|
||||
pq(FILE *f, const char *c)
|
||||
{
|
||||
while (*c) {
|
||||
if (*c == '"')
|
||||
fprintf(f, "\\\"");
|
||||
else
|
||||
fputc(*c, f);
|
||||
c++;
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
main(void)
|
||||
{
|
||||
char line[1024], *c, *bra, manuf[8];
|
||||
int manufs = 0;
|
||||
int mode = 0;
|
||||
int lino = 0;
|
||||
int manuf_len = 0;
|
||||
FILE *devf;
|
||||
|
||||
devf = fopen("devlist.h", "w");
|
||||
if (!devf) {
|
||||
fprintf(stderr, "Cannot create output file!\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
while (fgets(line, sizeof(line)-1, stdin)) {
|
||||
lino++;
|
||||
if ((c = strchr(line, '\n')))
|
||||
*c = 0;
|
||||
if (!line[0] || line[0] == '#')
|
||||
continue;
|
||||
if (line[0] == '\t') {
|
||||
switch (mode) {
|
||||
case 1:
|
||||
if (strlen(line) > 5 && line[5] == ' ') {
|
||||
c = line + 5;
|
||||
while (*c == ' ')
|
||||
*c++ = 0;
|
||||
if (manuf_len + strlen(c) + 1 > MAX_NAME_SIZE) {
|
||||
/* Too long, try cutting off long description */
|
||||
bra = strchr(c, '[');
|
||||
if (bra && bra > c && bra[-1] == ' ')
|
||||
bra[-1] = 0;
|
||||
if (manuf_len + strlen(c) + 1 > MAX_NAME_SIZE) {
|
||||
fprintf(stderr, "Line %d: Product name too long\n", lino);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
fprintf(devf, "\tPRODUCT(%s,%s,\"", manuf, line+1);
|
||||
pq(devf, c);
|
||||
fputs("\")\n", devf);
|
||||
} else goto err;
|
||||
break;
|
||||
default:
|
||||
goto err;
|
||||
}
|
||||
} else if (strlen(line) > 4 && line[4] == ' ') {
|
||||
c = line + 4;
|
||||
while (*c == ' ')
|
||||
*c++ = 0;
|
||||
if (manufs)
|
||||
fputs("ENDMANUF()\n\n", devf);
|
||||
manufs++;
|
||||
strcpy(manuf, line);
|
||||
manuf_len = strlen(c);
|
||||
if (manuf_len + 24 > MAX_NAME_SIZE) {
|
||||
fprintf(stderr, "Line %d: manufacturer name too long\n", lino);
|
||||
return 1;
|
||||
}
|
||||
fprintf(devf, "MANUF(%s,\"", manuf);
|
||||
pq(devf, c);
|
||||
fputs("\")\n", devf);
|
||||
mode = 1;
|
||||
} else {
|
||||
err:
|
||||
fprintf(stderr, "Line %d: Syntax error in mode %d: %s\n", lino, mode, line);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
fputs("ENDMANUF()\n\
|
||||
\n\
|
||||
#undef MANUF\n\
|
||||
#undef PRODUCT\n\
|
||||
#undef ENDMANUF\n", devf);
|
||||
|
||||
fclose(devf);
|
||||
|
||||
return 0;
|
||||
}
|
109
drivers/zorro/names.c
Normal file
109
drivers/zorro/names.c
Normal file
@@ -0,0 +1,109 @@
|
||||
/*
|
||||
* Zorro Device Name Tables
|
||||
*
|
||||
* Copyright (C) 1999--2000 Geert Uytterhoeven
|
||||
*
|
||||
* Based on the PCI version:
|
||||
*
|
||||
* Copyright 1992--1999 Drew Eckhardt, Frederic Potter,
|
||||
* David Mosberger-Tang, Martin Mares
|
||||
*/
|
||||
|
||||
#include <linux/config.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/zorro.h>
|
||||
|
||||
|
||||
#ifdef CONFIG_ZORRO_NAMES
|
||||
|
||||
struct zorro_prod_info {
|
||||
__u16 prod;
|
||||
unsigned short seen;
|
||||
const char *name;
|
||||
};
|
||||
|
||||
struct zorro_manuf_info {
|
||||
__u16 manuf;
|
||||
unsigned short nr;
|
||||
const char *name;
|
||||
struct zorro_prod_info *prods;
|
||||
};
|
||||
|
||||
/*
|
||||
* This is ridiculous, but we want the strings in
|
||||
* the .init section so that they don't take up
|
||||
* real memory.. Parse the same file multiple times
|
||||
* to get all the info.
|
||||
*/
|
||||
#define MANUF( manuf, name ) static char __manufstr_##manuf[] __initdata = name;
|
||||
#define ENDMANUF()
|
||||
#define PRODUCT( manuf, prod, name ) static char __prodstr_##manuf##prod[] __initdata = name;
|
||||
#include "devlist.h"
|
||||
|
||||
|
||||
#define MANUF( manuf, name ) static struct zorro_prod_info __prods_##manuf[] __initdata = {
|
||||
#define ENDMANUF() };
|
||||
#define PRODUCT( manuf, prod, name ) { 0x##prod, 0, __prodstr_##manuf##prod },
|
||||
#include "devlist.h"
|
||||
|
||||
static struct zorro_manuf_info __initdata zorro_manuf_list[] = {
|
||||
#define MANUF( manuf, name ) { 0x##manuf, sizeof(__prods_##manuf) / sizeof(struct zorro_prod_info), __manufstr_##manuf, __prods_##manuf },
|
||||
#define ENDMANUF()
|
||||
#define PRODUCT( manuf, prod, name )
|
||||
#include "devlist.h"
|
||||
};
|
||||
|
||||
#define MANUFS (sizeof(zorro_manuf_list)/sizeof(struct zorro_manuf_info))
|
||||
|
||||
void __init zorro_name_device(struct zorro_dev *dev)
|
||||
{
|
||||
const struct zorro_manuf_info *manuf_p = zorro_manuf_list;
|
||||
int i = MANUFS;
|
||||
char *name = dev->name;
|
||||
|
||||
do {
|
||||
if (manuf_p->manuf == ZORRO_MANUF(dev->id))
|
||||
goto match_manuf;
|
||||
manuf_p++;
|
||||
} while (--i);
|
||||
|
||||
/* Couldn't find either the manufacturer nor the product */
|
||||
sprintf(name, "Zorro device %08x", dev->id);
|
||||
return;
|
||||
|
||||
match_manuf: {
|
||||
struct zorro_prod_info *prod_p = manuf_p->prods;
|
||||
int i = manuf_p->nr;
|
||||
|
||||
while (i > 0) {
|
||||
if (prod_p->prod ==
|
||||
((ZORRO_PROD(dev->id)<<8) | ZORRO_EPC(dev->id)))
|
||||
goto match_prod;
|
||||
prod_p++;
|
||||
i--;
|
||||
}
|
||||
|
||||
/* Ok, found the manufacturer, but unknown product */
|
||||
sprintf(name, "Zorro device %08x (%s)", dev->id, manuf_p->name);
|
||||
return;
|
||||
|
||||
/* Full match */
|
||||
match_prod: {
|
||||
char *n = name + sprintf(name, "%s %s", manuf_p->name, prod_p->name);
|
||||
int nr = prod_p->seen + 1;
|
||||
prod_p->seen = nr;
|
||||
if (nr > 1)
|
||||
sprintf(n, " (#%d)", nr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
void __init zorro_name_device(struct zorro_dev *dev)
|
||||
{
|
||||
}
|
||||
|
||||
#endif
|
139
drivers/zorro/proc.c
Normal file
139
drivers/zorro/proc.c
Normal file
@@ -0,0 +1,139 @@
|
||||
/*
|
||||
* $Id: proc.c,v 1.1.2.1 1998/06/07 23:21:01 geert Exp $
|
||||
*
|
||||
* Procfs interface for the Zorro bus.
|
||||
*
|
||||
* Copyright (C) 1998-2003 Geert Uytterhoeven
|
||||
*
|
||||
* Heavily based on the procfs interface for the PCI bus, which is
|
||||
*
|
||||
* Copyright (C) 1997, 1998 Martin Mares <mj@atrey.karlin.mff.cuni.cz>
|
||||
*/
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/zorro.h>
|
||||
#include <linux/proc_fs.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/smp_lock.h>
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/amigahw.h>
|
||||
#include <asm/setup.h>
|
||||
|
||||
static loff_t
|
||||
proc_bus_zorro_lseek(struct file *file, loff_t off, int whence)
|
||||
{
|
||||
loff_t new = -1;
|
||||
|
||||
lock_kernel();
|
||||
switch (whence) {
|
||||
case 0:
|
||||
new = off;
|
||||
break;
|
||||
case 1:
|
||||
new = file->f_pos + off;
|
||||
break;
|
||||
case 2:
|
||||
new = sizeof(struct ConfigDev) + off;
|
||||
break;
|
||||
}
|
||||
if (new < 0 || new > sizeof(struct ConfigDev)) {
|
||||
unlock_kernel();
|
||||
return -EINVAL;
|
||||
}
|
||||
unlock_kernel();
|
||||
return (file->f_pos = new);
|
||||
}
|
||||
|
||||
static ssize_t
|
||||
proc_bus_zorro_read(struct file *file, char *buf, size_t nbytes, loff_t *ppos)
|
||||
{
|
||||
struct inode *ino = file->f_dentry->d_inode;
|
||||
struct proc_dir_entry *dp = PDE(ino);
|
||||
struct zorro_dev *z = dp->data;
|
||||
struct ConfigDev cd;
|
||||
loff_t pos = *ppos;
|
||||
|
||||
if (pos >= sizeof(struct ConfigDev))
|
||||
return 0;
|
||||
if (nbytes >= sizeof(struct ConfigDev))
|
||||
nbytes = sizeof(struct ConfigDev);
|
||||
if (pos + nbytes > sizeof(struct ConfigDev))
|
||||
nbytes = sizeof(struct ConfigDev) - pos;
|
||||
|
||||
/* Construct a ConfigDev */
|
||||
memset(&cd, 0, sizeof(cd));
|
||||
cd.cd_Rom = z->rom;
|
||||
cd.cd_SlotAddr = z->slotaddr;
|
||||
cd.cd_SlotSize = z->slotsize;
|
||||
cd.cd_BoardAddr = (void *)zorro_resource_start(z);
|
||||
cd.cd_BoardSize = zorro_resource_len(z);
|
||||
|
||||
if (copy_to_user(buf, &cd, nbytes))
|
||||
return -EFAULT;
|
||||
*ppos += nbytes;
|
||||
|
||||
return nbytes;
|
||||
}
|
||||
|
||||
static struct file_operations proc_bus_zorro_operations = {
|
||||
.llseek = proc_bus_zorro_lseek,
|
||||
.read = proc_bus_zorro_read,
|
||||
};
|
||||
|
||||
static int
|
||||
get_zorro_dev_info(char *buf, char **start, off_t pos, int count)
|
||||
{
|
||||
u_int slot;
|
||||
off_t at = 0;
|
||||
int len, cnt;
|
||||
|
||||
for (slot = cnt = 0; slot < zorro_num_autocon && count > cnt; slot++) {
|
||||
struct zorro_dev *z = &zorro_autocon[slot];
|
||||
len = sprintf(buf, "%02x\t%08x\t%08lx\t%08lx\t%02x\n", slot,
|
||||
z->id, zorro_resource_start(z),
|
||||
zorro_resource_len(z), z->rom.er_Type);
|
||||
at += len;
|
||||
if (at >= pos) {
|
||||
if (!*start) {
|
||||
*start = buf + (pos - (at - len));
|
||||
cnt = at - pos;
|
||||
} else
|
||||
cnt += len;
|
||||
buf += len;
|
||||
}
|
||||
}
|
||||
return (count > cnt) ? cnt : count;
|
||||
}
|
||||
|
||||
static struct proc_dir_entry *proc_bus_zorro_dir;
|
||||
|
||||
static int __init zorro_proc_attach_device(u_int slot)
|
||||
{
|
||||
struct proc_dir_entry *entry;
|
||||
char name[4];
|
||||
|
||||
sprintf(name, "%02x", slot);
|
||||
entry = create_proc_entry(name, 0, proc_bus_zorro_dir);
|
||||
if (!entry)
|
||||
return -ENOMEM;
|
||||
entry->proc_fops = &proc_bus_zorro_operations;
|
||||
entry->data = &zorro_autocon[slot];
|
||||
entry->size = sizeof(struct zorro_dev);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int __init zorro_proc_init(void)
|
||||
{
|
||||
u_int slot;
|
||||
|
||||
if (MACH_IS_AMIGA && AMIGAHW_PRESENT(ZORRO)) {
|
||||
proc_bus_zorro_dir = proc_mkdir("zorro", proc_bus);
|
||||
create_proc_info_entry("devices", 0, proc_bus_zorro_dir,
|
||||
get_zorro_dev_info);
|
||||
for (slot = 0; slot < zorro_num_autocon; slot++)
|
||||
zorro_proc_attach_device(slot);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
__initcall(zorro_proc_init);
|
150
drivers/zorro/zorro-driver.c
Normal file
150
drivers/zorro/zorro-driver.c
Normal file
@@ -0,0 +1,150 @@
|
||||
/*
|
||||
* Zorro Driver Services
|
||||
*
|
||||
* Copyright (C) 2003 Geert Uytterhoeven
|
||||
*
|
||||
* Loosely based on drivers/pci/pci-driver.c
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file COPYING in the main directory of this archive
|
||||
* for more details.
|
||||
*/
|
||||
|
||||
#include <linux/init.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/zorro.h>
|
||||
|
||||
|
||||
/**
|
||||
* zorro_match_device - Tell if a Zorro device structure has a matching
|
||||
* Zorro device id structure
|
||||
* @ids: array of Zorro device id structures to search in
|
||||
* @dev: the Zorro device structure to match against
|
||||
*
|
||||
* Used by a driver to check whether a Zorro device present in the
|
||||
* system is in its list of supported devices. Returns the matching
|
||||
* zorro_device_id structure or %NULL if there is no match.
|
||||
*/
|
||||
|
||||
const struct zorro_device_id *
|
||||
zorro_match_device(const struct zorro_device_id *ids,
|
||||
const struct zorro_dev *z)
|
||||
{
|
||||
while (ids->id) {
|
||||
if (ids->id == ZORRO_WILDCARD || ids->id == z->id)
|
||||
return ids;
|
||||
ids++;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
static int zorro_device_probe(struct device *dev)
|
||||
{
|
||||
int error = 0;
|
||||
struct zorro_driver *drv = to_zorro_driver(dev->driver);
|
||||
struct zorro_dev *z = to_zorro_dev(dev);
|
||||
|
||||
if (!z->driver && drv->probe) {
|
||||
const struct zorro_device_id *id;
|
||||
|
||||
id = zorro_match_device(drv->id_table, z);
|
||||
if (id)
|
||||
error = drv->probe(z, id);
|
||||
if (error >= 0) {
|
||||
z->driver = drv;
|
||||
error = 0;
|
||||
}
|
||||
}
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* zorro_register_driver - register a new Zorro driver
|
||||
* @drv: the driver structure to register
|
||||
*
|
||||
* Adds the driver structure to the list of registered drivers
|
||||
* Returns the number of Zorro devices which were claimed by the driver
|
||||
* during registration. The driver remains registered even if the
|
||||
* return value is zero.
|
||||
*/
|
||||
|
||||
int zorro_register_driver(struct zorro_driver *drv)
|
||||
{
|
||||
int count = 0;
|
||||
|
||||
/* initialize common driver fields */
|
||||
drv->driver.name = drv->name;
|
||||
drv->driver.bus = &zorro_bus_type;
|
||||
drv->driver.probe = zorro_device_probe;
|
||||
|
||||
/* register with core */
|
||||
count = driver_register(&drv->driver);
|
||||
return count ? count : 1;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* zorro_unregister_driver - unregister a zorro driver
|
||||
* @drv: the driver structure to unregister
|
||||
*
|
||||
* Deletes the driver structure from the list of registered Zorro drivers,
|
||||
* gives it a chance to clean up by calling its remove() function for
|
||||
* each device it was responsible for, and marks those devices as
|
||||
* driverless.
|
||||
*/
|
||||
|
||||
void zorro_unregister_driver(struct zorro_driver *drv)
|
||||
{
|
||||
driver_unregister(&drv->driver);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* zorro_bus_match - Tell if a Zorro device structure has a matching Zorro
|
||||
* device id structure
|
||||
* @ids: array of Zorro device id structures to search in
|
||||
* @dev: the Zorro device structure to match against
|
||||
*
|
||||
* Used by a driver to check whether a Zorro device present in the
|
||||
* system is in its list of supported devices.Returns the matching
|
||||
* zorro_device_id structure or %NULL if there is no match.
|
||||
*/
|
||||
|
||||
static int zorro_bus_match(struct device *dev, struct device_driver *drv)
|
||||
{
|
||||
struct zorro_dev *z = to_zorro_dev(dev);
|
||||
struct zorro_driver *zorro_drv = to_zorro_driver(drv);
|
||||
const struct zorro_device_id *ids = zorro_drv->id_table;
|
||||
|
||||
if (!ids)
|
||||
return 0;
|
||||
|
||||
while (ids->id) {
|
||||
if (ids->id == ZORRO_WILDCARD || ids->id == z->id)
|
||||
return 1;
|
||||
ids++;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
struct bus_type zorro_bus_type = {
|
||||
.name = "zorro",
|
||||
.match = zorro_bus_match
|
||||
};
|
||||
|
||||
|
||||
static int __init zorro_driver_init(void)
|
||||
{
|
||||
return bus_register(&zorro_bus_type);
|
||||
}
|
||||
|
||||
postcore_initcall(zorro_driver_init);
|
||||
|
||||
EXPORT_SYMBOL(zorro_match_device);
|
||||
EXPORT_SYMBOL(zorro_register_driver);
|
||||
EXPORT_SYMBOL(zorro_unregister_driver);
|
||||
EXPORT_SYMBOL(zorro_dev_driver);
|
||||
EXPORT_SYMBOL(zorro_bus_type);
|
98
drivers/zorro/zorro-sysfs.c
Normal file
98
drivers/zorro/zorro-sysfs.c
Normal file
@@ -0,0 +1,98 @@
|
||||
/*
|
||||
* File Attributes for Zorro Devices
|
||||
*
|
||||
* Copyright (C) 2003 Geert Uytterhoeven
|
||||
*
|
||||
* Loosely based on drivers/pci/pci-sysfs.c
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file COPYING in the main directory of this archive
|
||||
* for more details.
|
||||
*/
|
||||
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/zorro.h>
|
||||
#include <linux/stat.h>
|
||||
|
||||
#include "zorro.h"
|
||||
|
||||
|
||||
/* show configuration fields */
|
||||
#define zorro_config_attr(name, field, format_string) \
|
||||
static ssize_t \
|
||||
show_##name(struct device *dev, char *buf) \
|
||||
{ \
|
||||
struct zorro_dev *z; \
|
||||
\
|
||||
z = to_zorro_dev(dev); \
|
||||
return sprintf(buf, format_string, z->field); \
|
||||
} \
|
||||
static DEVICE_ATTR(name, S_IRUGO, show_##name, NULL);
|
||||
|
||||
zorro_config_attr(id, id, "0x%08x\n");
|
||||
zorro_config_attr(type, rom.er_Type, "0x%02x\n");
|
||||
zorro_config_attr(serial, rom.er_SerialNumber, "0x%08x\n");
|
||||
zorro_config_attr(slotaddr, slotaddr, "0x%04x\n");
|
||||
zorro_config_attr(slotsize, slotsize, "0x%04x\n");
|
||||
|
||||
static ssize_t zorro_show_resource(struct device *dev, char *buf)
|
||||
{
|
||||
struct zorro_dev *z = to_zorro_dev(dev);
|
||||
|
||||
return sprintf(buf, "0x%08lx 0x%08lx 0x%08lx\n",
|
||||
zorro_resource_start(z), zorro_resource_end(z),
|
||||
zorro_resource_flags(z));
|
||||
}
|
||||
|
||||
static DEVICE_ATTR(resource, S_IRUGO, zorro_show_resource, NULL);
|
||||
|
||||
static ssize_t zorro_read_config(struct kobject *kobj, char *buf, loff_t off,
|
||||
size_t count)
|
||||
{
|
||||
struct zorro_dev *z = to_zorro_dev(container_of(kobj, struct device,
|
||||
kobj));
|
||||
struct ConfigDev cd;
|
||||
unsigned int size = sizeof(cd);
|
||||
|
||||
if (off > size)
|
||||
return 0;
|
||||
if (off+count > size)
|
||||
count = size-off;
|
||||
|
||||
/* Construct a ConfigDev */
|
||||
memset(&cd, 0, sizeof(cd));
|
||||
cd.cd_Rom = z->rom;
|
||||
cd.cd_SlotAddr = z->slotaddr;
|
||||
cd.cd_SlotSize = z->slotsize;
|
||||
cd.cd_BoardAddr = (void *)zorro_resource_start(z);
|
||||
cd.cd_BoardSize = zorro_resource_len(z);
|
||||
|
||||
memcpy(buf, (void *)&cd+off, count);
|
||||
return count;
|
||||
}
|
||||
|
||||
static struct bin_attribute zorro_config_attr = {
|
||||
.attr = {
|
||||
.name = "config",
|
||||
.mode = S_IRUGO | S_IWUSR,
|
||||
.owner = THIS_MODULE
|
||||
},
|
||||
.size = sizeof(struct ConfigDev),
|
||||
.read = zorro_read_config,
|
||||
};
|
||||
|
||||
void zorro_create_sysfs_dev_files(struct zorro_dev *z)
|
||||
{
|
||||
struct device *dev = &z->dev;
|
||||
|
||||
/* current configuration's attributes */
|
||||
device_create_file(dev, &dev_attr_id);
|
||||
device_create_file(dev, &dev_attr_type);
|
||||
device_create_file(dev, &dev_attr_serial);
|
||||
device_create_file(dev, &dev_attr_slotaddr);
|
||||
device_create_file(dev, &dev_attr_slotsize);
|
||||
device_create_file(dev, &dev_attr_resource);
|
||||
sysfs_create_bin_file(&dev->kobj, &zorro_config_attr);
|
||||
}
|
||||
|
193
drivers/zorro/zorro.c
Normal file
193
drivers/zorro/zorro.c
Normal file
@@ -0,0 +1,193 @@
|
||||
/*
|
||||
* $Id: zorro.c,v 1.1.2.1 1998/06/07 23:21:02 geert Exp $
|
||||
*
|
||||
* Zorro Bus Services
|
||||
*
|
||||
* Copyright (C) 1995-2003 Geert Uytterhoeven
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file COPYING in the main directory of this archive
|
||||
* for more details.
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/zorro.h>
|
||||
#include <linux/bitops.h>
|
||||
#include <asm/setup.h>
|
||||
#include <asm/amigahw.h>
|
||||
|
||||
#include "zorro.h"
|
||||
|
||||
|
||||
/*
|
||||
* Zorro Expansion Devices
|
||||
*/
|
||||
|
||||
u_int zorro_num_autocon = 0;
|
||||
struct zorro_dev zorro_autocon[ZORRO_NUM_AUTO];
|
||||
|
||||
|
||||
/*
|
||||
* Single Zorro bus
|
||||
*/
|
||||
|
||||
struct zorro_bus zorro_bus = {\
|
||||
.resources = {
|
||||
/* Zorro II regions (on Zorro II/III) */
|
||||
{ .name = "Zorro II exp", .start = 0x00e80000, .end = 0x00efffff },
|
||||
{ .name = "Zorro II mem", .start = 0x00200000, .end = 0x009fffff },
|
||||
/* Zorro III regions (on Zorro III only) */
|
||||
{ .name = "Zorro III exp", .start = 0xff000000, .end = 0xffffffff },
|
||||
{ .name = "Zorro III cfg", .start = 0x40000000, .end = 0x7fffffff }
|
||||
},
|
||||
.name = "Zorro bus"
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Find Zorro Devices
|
||||
*/
|
||||
|
||||
struct zorro_dev *zorro_find_device(zorro_id id, struct zorro_dev *from)
|
||||
{
|
||||
struct zorro_dev *z;
|
||||
|
||||
if (!MACH_IS_AMIGA || !AMIGAHW_PRESENT(ZORRO))
|
||||
return NULL;
|
||||
|
||||
for (z = from ? from+1 : &zorro_autocon[0];
|
||||
z < zorro_autocon+zorro_num_autocon;
|
||||
z++)
|
||||
if (id == ZORRO_WILDCARD || id == z->id)
|
||||
return z;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Bitmask indicating portions of available Zorro II RAM that are unused
|
||||
* by the system. Every bit represents a 64K chunk, for a maximum of 8MB
|
||||
* (128 chunks, physical 0x00200000-0x009fffff).
|
||||
*
|
||||
* If you want to use (= allocate) portions of this RAM, you should clear
|
||||
* the corresponding bits.
|
||||
*
|
||||
* Possible uses:
|
||||
* - z2ram device
|
||||
* - SCSI DMA bounce buffers
|
||||
*
|
||||
* FIXME: use the normal resource management
|
||||
*/
|
||||
|
||||
DECLARE_BITMAP(zorro_unused_z2ram, 128);
|
||||
|
||||
|
||||
static void __init mark_region(unsigned long start, unsigned long end,
|
||||
int flag)
|
||||
{
|
||||
if (flag)
|
||||
start += Z2RAM_CHUNKMASK;
|
||||
else
|
||||
end += Z2RAM_CHUNKMASK;
|
||||
start &= ~Z2RAM_CHUNKMASK;
|
||||
end &= ~Z2RAM_CHUNKMASK;
|
||||
|
||||
if (end <= Z2RAM_START || start >= Z2RAM_END)
|
||||
return;
|
||||
start = start < Z2RAM_START ? 0x00000000 : start-Z2RAM_START;
|
||||
end = end > Z2RAM_END ? Z2RAM_SIZE : end-Z2RAM_START;
|
||||
while (start < end) {
|
||||
u32 chunk = start>>Z2RAM_CHUNKSHIFT;
|
||||
if (flag)
|
||||
set_bit(chunk, zorro_unused_z2ram);
|
||||
else
|
||||
clear_bit(chunk, zorro_unused_z2ram);
|
||||
start += Z2RAM_CHUNKSIZE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static struct resource __init *zorro_find_parent_resource(struct zorro_dev *z)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < zorro_bus.num_resources; i++)
|
||||
if (zorro_resource_start(z) >= zorro_bus.resources[i].start &&
|
||||
zorro_resource_end(z) <= zorro_bus.resources[i].end)
|
||||
return &zorro_bus.resources[i];
|
||||
return &iomem_resource;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Initialization
|
||||
*/
|
||||
|
||||
static int __init zorro_init(void)
|
||||
{
|
||||
struct zorro_dev *z;
|
||||
unsigned int i;
|
||||
|
||||
if (!MACH_IS_AMIGA || !AMIGAHW_PRESENT(ZORRO))
|
||||
return 0;
|
||||
|
||||
pr_info("Zorro: Probing AutoConfig expansion devices: %d device%s\n",
|
||||
zorro_num_autocon, zorro_num_autocon == 1 ? "" : "s");
|
||||
|
||||
/* Initialize the Zorro bus */
|
||||
INIT_LIST_HEAD(&zorro_bus.devices);
|
||||
strcpy(zorro_bus.dev.bus_id, "zorro");
|
||||
device_register(&zorro_bus.dev);
|
||||
|
||||
/* Request the resources */
|
||||
zorro_bus.num_resources = AMIGAHW_PRESENT(ZORRO3) ? 4 : 2;
|
||||
for (i = 0; i < zorro_bus.num_resources; i++)
|
||||
request_resource(&iomem_resource, &zorro_bus.resources[i]);
|
||||
|
||||
/* Register all devices */
|
||||
for (i = 0; i < zorro_num_autocon; i++) {
|
||||
z = &zorro_autocon[i];
|
||||
z->id = (z->rom.er_Manufacturer<<16) | (z->rom.er_Product<<8);
|
||||
if (z->id == ZORRO_PROD_GVP_EPC_BASE) {
|
||||
/* GVP quirk */
|
||||
unsigned long magic = zorro_resource_start(z)+0x8000;
|
||||
z->id |= *(u16 *)ZTWO_VADDR(magic) & GVP_PRODMASK;
|
||||
}
|
||||
sprintf(z->name, "Zorro device %08x", z->id);
|
||||
zorro_name_device(z);
|
||||
z->resource.name = z->name;
|
||||
if (request_resource(zorro_find_parent_resource(z), &z->resource))
|
||||
printk(KERN_ERR "Zorro: Address space collision on device %s "
|
||||
"[%lx:%lx]\n",
|
||||
z->name, zorro_resource_start(z), zorro_resource_end(z));
|
||||
sprintf(z->dev.bus_id, "%02x", i);
|
||||
z->dev.parent = &zorro_bus.dev;
|
||||
z->dev.bus = &zorro_bus_type;
|
||||
device_register(&z->dev);
|
||||
zorro_create_sysfs_dev_files(z);
|
||||
}
|
||||
|
||||
/* Mark all available Zorro II memory */
|
||||
zorro_for_each_dev(z) {
|
||||
if (z->rom.er_Type & ERTF_MEMLIST)
|
||||
mark_region(zorro_resource_start(z), zorro_resource_end(z)+1, 1);
|
||||
}
|
||||
|
||||
/* Unmark all used Zorro II memory */
|
||||
for (i = 0; i < m68k_num_memory; i++)
|
||||
if (m68k_memory[i].addr < 16*1024*1024)
|
||||
mark_region(m68k_memory[i].addr,
|
||||
m68k_memory[i].addr+m68k_memory[i].size, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
subsys_initcall(zorro_init);
|
||||
|
||||
EXPORT_SYMBOL(zorro_find_device);
|
||||
EXPORT_SYMBOL(zorro_unused_z2ram);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
4
drivers/zorro/zorro.h
Normal file
4
drivers/zorro/zorro.h
Normal file
@@ -0,0 +1,4 @@
|
||||
|
||||
extern void zorro_name_device(struct zorro_dev *z);
|
||||
extern void zorro_create_sysfs_dev_files(struct zorro_dev *z);
|
||||
|
476
drivers/zorro/zorro.ids
Normal file
476
drivers/zorro/zorro.ids
Normal file
@@ -0,0 +1,476 @@
|
||||
#
|
||||
# List of Zorro IDs
|
||||
#
|
||||
# Maintained by Geert Uytterhoeven <zorro@linux-m68k.org>
|
||||
# If you have any new entries, please send them to the maintainer.
|
||||
#
|
||||
# $Id: zorro.ids,v 1.19 2002/10/14 13:08:58 geert Exp $
|
||||
#
|
||||
|
||||
# Manufacturers and Products. Please keep sorted.
|
||||
|
||||
# Syntax:
|
||||
# manufacturer manufacturer_name
|
||||
# product product_name <-- single tab
|
||||
|
||||
00d3 Pacific Peripherals
|
||||
0000 SE 2000 A500 [HD Controller]
|
||||
0a00 [SCSI Host Adapter]
|
||||
00dd Kupke
|
||||
0000 Golem RAM Box 2MB [RAM Expansion]
|
||||
0100 MacroSystems USA
|
||||
# The Stormbringer is actually made by Memphis
|
||||
0000 Stormbringer [Accelerator]
|
||||
1300 Warp Engine [Accelerator, SCSI Host Adapter and RAM Expansion]
|
||||
0200 3-State
|
||||
0200 Megamix 2000 [RAM Expansion]
|
||||
0201 Commodore Braunschweig
|
||||
0100 A2088 XT/A2286 AT [ISA Bus Bridge]
|
||||
0200 A2286 AT [ISA Bus Bridge]
|
||||
5400 A4091 [SCSI Host Adapter]
|
||||
6700 A2386-SX [ISA Bus Bridge]
|
||||
0202 Commodore West Chester
|
||||
0100 A2090/A2090A [SCSI Host Adapter]
|
||||
0200 A590/A2091 [SCSI Host Adapter]
|
||||
0300 A590/A2091 [SCSI Host Adapter]
|
||||
0400 A2090B 2090 Autoboot [SCSI Host Adapter]
|
||||
0900 A2060 [ArcNet Card]
|
||||
0a00 A590/A2052/A2058/A2091 [RAM Expansion]
|
||||
2000 A560 [RAM Expansion]
|
||||
4500 A2232 Prototype [Multi I/O]
|
||||
4600 A2232 [Multi I/O]
|
||||
5000 A2620 68020 [Accelerator and RAM Expansion]
|
||||
5100 A2630 68030 [Accelerator and RAM Expansion]
|
||||
5400 A4091 [SCSI Host Adapter]
|
||||
5a00 A2065 [Ethernet Card]
|
||||
6000 Romulator Card
|
||||
6100 A3000 Test Fixture [Miscellaneous Expansion Card]
|
||||
6700 A2386-SX [ISA Bus Bridge]
|
||||
7000 A2065 [Ethernet Card]
|
||||
0203 Commodore West Chester
|
||||
0300 A2090/A2090A Combitec/MacroSystem [SCSI Host Adapter]
|
||||
02f4 Progressive Peripherals & Systems
|
||||
0200 EXP8000 [RAM Expansion]
|
||||
6900 A2000 68040 [Accelerator]
|
||||
9600 68040 [Accelerator]
|
||||
02ff Kolff Computer Supplies
|
||||
0000 KCS Power PC [ISA Bus Bridge]
|
||||
03ec Cardco Ltd.
|
||||
0400 Kronos 2000 [SCSI Host Adapter]
|
||||
0c00 A1000 [SCSI Host Adapter]
|
||||
0e00 Escort [SCSI Host Adapter]
|
||||
f500 A2410 HiRes [Graphics Card]
|
||||
03ed A-Squared
|
||||
0100 Live! 2000 [Video Card]
|
||||
03ee Comspec Communications
|
||||
0100 AX2000 [RAM Expansion]
|
||||
03f1 Anakin Research
|
||||
0100 Easyl Drawing Tablet Interface
|
||||
03f2 Microbotics
|
||||
0000 StarBoard II [RAM Expansion]
|
||||
0200 StarDrive [SCSI Host Adapter]
|
||||
0300 8-Up (Rev A) [RAM Expansion]
|
||||
0400 8-Up (Rev Z) [RAM Expansion]
|
||||
2000 Delta [RAM Expansion]
|
||||
4000 8-Star [RAM Expansion]
|
||||
4100 8-Star [Miscellaneous Expansion Card]
|
||||
4400 VXL RAM*32 [RAM Expansion]
|
||||
4500 VXL-30 [Accelerator]
|
||||
6000 Delta [Miscellaneous Expansion Card]
|
||||
8100 MBX 1200/1200z [RAM Expansion]
|
||||
9600 Hardframe 2000 [SCSI Host Adapter]
|
||||
9e00 Hardframe 2000 [SCSI Host Adapter]
|
||||
c100 MBX 1200/1200z [Miscellaneous Expansion Card]
|
||||
03f4 Access Associates Alegra
|
||||
03f6 Expansion Technologies/Pacific Cypress
|
||||
03ff ASDG
|
||||
0100 [RAM Expansion]
|
||||
0200 [RAM Expansion]
|
||||
fe00 EB-920 Lan Rover [Ethernet Card]
|
||||
ff00 GPIB/Dual IEEE-488/Twin-X [Multi I/O]
|
||||
0404 Ronin/Imtronics
|
||||
3900 Hurricane 2800 [Accelerator and RAM Expansion]
|
||||
5700 Hurricane 2800 [Accelerator and RAM Expansion]
|
||||
0406 Commodore/University of Lowell
|
||||
0000 A2410 HiRes [Graphics Card]
|
||||
041d Ameristar
|
||||
0100 A2065 [Ethernet Card]
|
||||
0900 A560 [ArcNet Card]
|
||||
0a00 A4066 [Ethernet Card]
|
||||
2000 1600-GX [Graphics Card]
|
||||
0420 Supra
|
||||
0100 SupraDrive 4x4 [SCSI Host Adapter]
|
||||
0200 1000 [RAM Expansion]
|
||||
0300 2000 DMA [SCSI Host Adapter]
|
||||
0500 500 [SCSI Host Adapter and RAM Expansion]
|
||||
0800 500 [SCSI Host Adapter]
|
||||
0900 500XP/2000 [RAM Expansion]
|
||||
0a00 500RX/2000 [RAM Expansion]
|
||||
0b00 2400zi [Modem]
|
||||
0c00 500XP/SupraDrive WordSync [SCSI Host Adapter]
|
||||
0d00 SupraDrive WordSync II [SCSI Host Adapter]
|
||||
1000 2400zi+ [Modem]
|
||||
0422 Computer Systems Assosiates
|
||||
1100 Magnum 40 [Accelerator and SCSI Host Adapter]
|
||||
1500 12 Gauge [SCSI Host Adapter]
|
||||
0439 Marc Michael Groth
|
||||
0502 M-Tech
|
||||
0300 AT500 [RAM Expansion]
|
||||
06e1 Great Valley Products
|
||||
0800 Impact Series I [SCSI Host Adapter and RAM Expansion]
|
||||
2000 Impact Vision 24 [Graphics Card]
|
||||
07da ByteBox
|
||||
0000 A500
|
||||
07db Hacker Test Board
|
||||
07dc DKB/Power Computing
|
||||
0900 SecureKey
|
||||
0e00 DKM 3128 [RAM Expansion]
|
||||
0f00 Rapid Fire [SCSI Host Adapter]
|
||||
1000 DKM 1202 [FPU and RAM Expansion]
|
||||
1200 Cobra/Viper II 68EC030 [Accelerator]
|
||||
1700 WildFire 060 [Accelerator]
|
||||
ff00 WildFire 060 [Accelerator]
|
||||
07e1 Great Valley Products
|
||||
0100 Impact Series I (4K) [SCSI Host Adapter]
|
||||
0200 Impact Series I (16K/2) [SCSI Host Adapter]
|
||||
0300 Impact Series I (16K/2) [SCSI Host Adapter]
|
||||
0800 Impact 3001 [IDE Interface]
|
||||
0900 Impact 3001 [RAM Expansion]
|
||||
0a00 Impact Series II [RAM Expansion]
|
||||
0b20 GForce 040 [Accelerator]
|
||||
0b30 GForce 040 [Accelerator and SCSI Host Adapter]
|
||||
0b40 A1291 [SCSI Host Adapter]
|
||||
0b60 Combo 030 R4 [Accelerator]
|
||||
0b70 Combo 030 R4 [Accelerator and SCSI Host Adapter]
|
||||
0b78 Phone Pak
|
||||
0b98 IO-Extender [Multi I/O]
|
||||
0ba0 GForce 030 [Accelerator]
|
||||
0bb0 GForce 030 [Accelerator and SCSI Host Adapter]
|
||||
0bc0 A530 [Accelerator]
|
||||
0bd0 A530 [Accelerator and SCSI Host Adapter]
|
||||
0be0 Combo 030 R3 [Accelerator]
|
||||
0bf0 Combo 030 R3 [Accelerator and SCSI Host Adapter]
|
||||
0bf8 Series-II [SCSI Host Adapter]
|
||||
0d00 Impact 3001 [IDE Interface]
|
||||
1600 GForce 040/060 [Accelerator and SCSI Host Adapter]
|
||||
2000 Impact Vision 24 [Graphics Card]
|
||||
4400 Rembrandt [Graphics Card]
|
||||
ff00 GForce 040 [Accelerator]
|
||||
07e5 California Access/Synergy
|
||||
0100 Malibu [SCSI Host Adapter]
|
||||
07e6 Xetec
|
||||
0100 FastCard [SCSI Host Adapter]
|
||||
0200 FastCard [RAM Expansion]
|
||||
0300 FastCard Plus [SCSI Host Adapter]
|
||||
07ea Progressive Peripherals & Systems
|
||||
0000 Mercury [Accelerator]
|
||||
0100 A3000 68040 [Accelerator]
|
||||
6900 A2000 68040 [Accelerator]
|
||||
9600 Zeus [Accelerator, SCSI Host Adapter and RAM Expansion]
|
||||
bb00 A500 68040 [Accelerator]
|
||||
# The AteoBus and Pixel64 are actually made by Ateo Concepts
|
||||
fc00 AteoBus [Expansion Bus Bridge]
|
||||
fe00 Pixel64 [Graphics Card]
|
||||
ff00 Pixel64 RAM [Graphics Card]
|
||||
07ec Xebec
|
||||
07f2 Spirit Technology
|
||||
0100 Insider IN1000 [RAM Expansion]
|
||||
0200 Insider IN500 [RAM Expansion]
|
||||
0300 SIN500 [RAM Expansion]
|
||||
0400 HDA 506 [HD Controller]
|
||||
0500 AX-S [Miscellaneous Expansion Card]
|
||||
0600 OctaByte [RAM Expansion]
|
||||
0800 Inmate [SCSI Host Adapter and RAM Expansion]
|
||||
07f3 Spirit Technology
|
||||
07fe BSC/Alfadata
|
||||
0300 ALF 3 [SCSI Host Adapter]
|
||||
0801 BSC/Alfadata
|
||||
0100 ALF 2 [SCSI Host Adapter]
|
||||
0200 ALF 2 [SCSI Host Adapter]
|
||||
0300 ALF 3 [SCSI Host Adapter]
|
||||
0400 Oktagon 500 [SCSI Host Adapter]
|
||||
0600 Tandem AT-2008/508 [IDE Interface]
|
||||
0800 Oktagon 2008 [RAM Expansion]
|
||||
1000 MultiFace I [Multi I/O]
|
||||
2000 FrameMaster II [Graphics Card]
|
||||
4000 ISDN MasterCard [ISDN Interface]
|
||||
0802 Cardco Ltd.
|
||||
0400 Kronos 2000 [SCSI Host Adapter]
|
||||
0c00 A1000 [SCSI Host Adapter]
|
||||
0804 Jochheim
|
||||
0100 [RAM Expansion]
|
||||
2000 [RAM Expansion]
|
||||
0807 Checkpoint Technologies
|
||||
0000 Serial Solution [Multi Serial]
|
||||
0810 Edotronik
|
||||
0100 IEEE-488 Interface Card
|
||||
0200 CBM-8032 Card
|
||||
0300 [Multi Serial]
|
||||
0400 24Bit Realtime Video Digitizer
|
||||
0500 32Bit Parallel I/O Interface
|
||||
0600 PIC Prototyping Card
|
||||
0700 16 Channel ADC Interface
|
||||
0800 VME-Bus Controller
|
||||
0900 DSP96000 Realtime Data Acquisition DSP Card
|
||||
0813 NES Inc.
|
||||
0000 [RAM Expansion]
|
||||
0817 ICD
|
||||
0100 Advantage 2000 [SCSI Host Adapter]
|
||||
0300 Advantage [IDE Interface]
|
||||
0400 Advantage 2080 [RAM Expansion]
|
||||
0819 Kupke
|
||||
0100 Omti [HD Controller]
|
||||
0200 Golem SCSI-II [SCSI Host Adapter]
|
||||
0300 Golem Box
|
||||
0400 030/882 [Accelerator]
|
||||
0500 Golem [SCSI Host Adapter]
|
||||
081d Great Valley Products
|
||||
0900 A2000-RAM8/2 [Miscellaneous Expansion Card]
|
||||
0a00 Impact Series II [RAM Expansion]
|
||||
081e Interworks Network
|
||||
0820 Hardital Synthesis
|
||||
0100 Super Big Bang [Accelerator, SCSI Host Adapter and RAM Expansion]
|
||||
1400 TQM 68030+68882 [Accelerator]
|
||||
0828 Applied Engineering
|
||||
1000 DL2000 [Modem]
|
||||
e000 RAM Works [RAM Expansion]
|
||||
082c BSC/Alfadata
|
||||
0400 Oktagon 500 [SCSI Host Adapter]
|
||||
0500 Oktagon 2008 [SCSI Host Adapter]
|
||||
0600 Tandem AT-2008/508 [IDE Interface]
|
||||
0700 Alpha 1200 [RAM Expansion]
|
||||
0800 Oktagon 2008 [RAM Expansion]
|
||||
1000 MultiFace I [Multi I/O]
|
||||
1100 MultiFace II [Multi I/O]
|
||||
1200 MultiFace III [Multi I/O]
|
||||
2000 FrameMaster II [Graphics Card]
|
||||
2100 Graffiti RAM [Graphics Card]
|
||||
2200 Graffiti [Graphics Card]
|
||||
4000 ISDN MasterCard [ISDN Interface]
|
||||
4100 ISDN MasterCard II [ISDN Interface]
|
||||
0835 Phoenix
|
||||
2100 ST506 [HD Controller]
|
||||
2200 [SCSI Host Adapter]
|
||||
be00 [RAM Expansion]
|
||||
0836 Advanced Storage Systems
|
||||
0100 Nexus [SCSI Host Adapter]
|
||||
0800 Nexus [RAM Expansion]
|
||||
0838 Impulse
|
||||
0000 FireCracker 24 (NTSC) [Graphics Card]
|
||||
0100 FireCracker 24 (PAL) [Graphics Card]
|
||||
0840 IVS
|
||||
0200 GrandSlam PIC 2 [RAM Expansion]
|
||||
0400 GrandSlam PIC 1 [RAM Expansion]
|
||||
1000 OverDrive [HD Controller]
|
||||
3000 TrumpCard Classic [SCSI Host Adapter]
|
||||
3400 TrumpCard Pro/GrandSlam [SCSI Host Adapter]
|
||||
4000 Meta-4 [RAM Expansion]
|
||||
bf00 Wavetools [Audio Card]
|
||||
f300 Vector [SCSI Host Adapter]
|
||||
f400 Vector [SCSI Host Adapter]
|
||||
0841 Vector
|
||||
e300 Connection [Multi I/O]
|
||||
0845 XPert ProDev
|
||||
0100 Visiona RAM [Graphics Card]
|
||||
0200 Visiona [Graphics Card]
|
||||
0300 Merlin RAM [Graphics Card]
|
||||
0400 Merlin [Graphics Card]
|
||||
c900 Merlin [Graphics Card]
|
||||
0849 Hydra Systems
|
||||
0100 Amiganet [Ethernet Card]
|
||||
084f Sunrize Industries
|
||||
0100 AD1012 [Audio Card]
|
||||
0200 AD516 [Audio Card]
|
||||
0300 DD512 [Audio Card]
|
||||
0850 Triceratops
|
||||
0100 [Multi I/O]
|
||||
0851 Applied Magic Inc.
|
||||
0100 DMI Resolver [Graphics Card]
|
||||
0200 Vivid 24 [Graphics Card]
|
||||
0600 Digital Broadcaster [Video Card]
|
||||
085e GFX-Base
|
||||
0000 GDA-1 VRAM [Graphics Card]
|
||||
0100 GDA-1 [Graphics Card]
|
||||
0860 RocTec
|
||||
0100 RH 800C [HD Controller]
|
||||
0200 RH 800C [RAM Expansion]
|
||||
0861 Kato
|
||||
# The Rainbow II and III are actually made by Ingenieurb<72>ro Helfrich
|
||||
2000 Rainbow II [Graphics Card]
|
||||
2100 Rainbow III [Graphics Card]
|
||||
8000 Melody MPEG [Audio Card]
|
||||
0862 Atlantis
|
||||
0864 Protar
|
||||
0865 ACS
|
||||
0866 Software Results Enterprises
|
||||
0100 Golden Gate 2 Bus+ [ISA Bus Bridge]
|
||||
086a Unknown
|
||||
0100 Horizon [Graphics Card]
|
||||
0200 Blackbox [Graphics Card]
|
||||
0300 Voyager [Graphics Card]
|
||||
086d Masoboshi
|
||||
0300 MasterCard SC201 [RAM Expansion]
|
||||
0400 MasterCard MC702 [SCSI Host Adapter and IDE Interface]
|
||||
0700 MVD 819
|
||||
086f Mainhattan-Data/A-Team
|
||||
0100 [IDE Interface]
|
||||
0877 Village Tronic
|
||||
0100 Domino RAM [Graphics Card]
|
||||
0200 Domino [Graphics Card]
|
||||
0300 Domino 16M Prototype [Graphics Card]
|
||||
0b00 Picasso II/II+ RAM [Graphics Card]
|
||||
0c00 Picasso II/II+ [Graphics Card]
|
||||
0d00 Picasso II/II+ (Segmented Mode) [Graphics Card]
|
||||
1500 Picasso IV Z2 RAM [Graphics Card]
|
||||
1600 Picasso IV Z2 RAM [Graphics Card]
|
||||
1700 Picasso IV Z2 [Graphics Card]
|
||||
1800 Picasso IV Z3 [Graphics Card]
|
||||
c900 Ariadne [Ethernet Card and Parallel Ports]
|
||||
ca00 Ariadne II [Ethernet Card]
|
||||
087b Utilities Unlimited
|
||||
1500 Emplant Deluxe [Macintosh Emulator]
|
||||
2000 Emplant Deluxe [Macintosh Emulator]
|
||||
0880 Amitrix
|
||||
0100 [Multi I/O]
|
||||
0200 CD-RAM [RAM Expansion]
|
||||
0885 ArMax
|
||||
0000 OmniBus [Graphics Card]
|
||||
088d ZEUS Electronic Development
|
||||
0300 [ISDN Interface]
|
||||
0400 Spider [Video Card]
|
||||
088f NewTek
|
||||
0000 VideoToaster [Video Card]
|
||||
0890 M-Tech Germany
|
||||
0100 AT500 [IDE Interface]
|
||||
0300 68030 [Accelerator]
|
||||
0600 68020i [Accelerator]
|
||||
2000 A1200 T68030 RTC [Accelerator]
|
||||
2100 Viper Mk V/E-Matrix 530 [Accelerator and RAM Expansion]
|
||||
2200 8MB [RAM Expansion]
|
||||
2400 Viper Mk V/E-Matrix 530 [SCSI Host Adapter and IDE Interface]
|
||||
0891 Great Valley Products
|
||||
0100 EGS 28/24 Spectrum RAM [Graphics Card]
|
||||
0200 EGS 28/24 Spectrum [Graphics Card]
|
||||
0892 Apollo
|
||||
0100 A1200 [FPU and RAM Expansion]
|
||||
0893 Ingenieurb<72>ro Helfrich
|
||||
0500 Piccolo RAM [Graphics Card]
|
||||
0600 Piccolo [Graphics Card]
|
||||
0700 PeggyPlus MPEG [Video Card]
|
||||
0800 VideoCruncher [Video Card]
|
||||
0a00 Piccolo SD64 RAM [Graphics Card]
|
||||
0b00 Piccolo SD64 [Graphics Card]
|
||||
089b MacroSystems USA
|
||||
1300 Warp Engine 40xx [Accelerator, SCSI Host Adapter and RAM Expansion]
|
||||
089e ElBox Computer
|
||||
0600 1200/4 [RAM Expansion]
|
||||
0800 FastATA 1200 [IDE Interface]
|
||||
1200 FastATA 1200 [IDE Interface]
|
||||
1300 FastATA 1200 [IDE Interface]
|
||||
1800 FastATA 1200 [IDE Interface]
|
||||
1900 FastATA 4000 [IDE Interface]
|
||||
1d00 FastATA 4000 [IDE Interface]
|
||||
1e00 FastATA ZIV [IDE Interface]
|
||||
0a00 Harms Professional
|
||||
1000 030 Plus [Accelerator]
|
||||
d000 3500 Professional [Accelerator and RAM Expansion]
|
||||
0a50 Micronik
|
||||
0a00 RCA 120 [RAM Expansion]
|
||||
0f0f Micronik
|
||||
0100 Z3i A1200 [Zorro III Extender and SCSI Host Adapter]
|
||||
1000 MegaMicro
|
||||
0300 SCRAM 500 [SCSI Host Adapter]
|
||||
0400 SCRAM 500 [RAM Expansion]
|
||||
1028 Ronin/Imtronics
|
||||
3900 Hurricane 2800 [Accelerator and RAM Expansion]
|
||||
5700 Hurricane 2800 [Accelerator and RAM Expansion]
|
||||
102f Ateo Concepts
|
||||
fc00 AteoBus [Expansion Bus Bridge]
|
||||
fe00 Pixel64 [Graphics Card]
|
||||
ff00 Pixel64 RAM [Graphics Card]
|
||||
1212 Individual Computers
|
||||
0000 Buddha [IDE Interface]
|
||||
1700 X-Surf [Ethernet Card and IDE Interface]
|
||||
2a00 Catweasel [IDE Interface and Floppy Controller]
|
||||
1248 Kupke
|
||||
0100 Golem HD 3000 [HD Controller]
|
||||
1267 RBM-Computertechnik
|
||||
0100 IOBlix [Multi I/O]
|
||||
1388 ITH
|
||||
0100 ISDN-Master II [ISDN Interface]
|
||||
1389 VMC
|
||||
0100 ISDN Blaster Z2 [ISDN Interface]
|
||||
0200 HyperCom 4 [Multi I/O]
|
||||
0600 HyperCom 4+ [Multi I/O]
|
||||
157c Information
|
||||
6400 ISDN Engine I [ISDN Interface]
|
||||
2017 Vortex
|
||||
0700 Golden Gate 80386SX [ISA Bus Bridge]
|
||||
0800 Golden Gate [RAM Expansion]
|
||||
0900 Golden Gate 80486 [ISA Bus Bridge]
|
||||
2062 Expansion Systems
|
||||
0100 DataFlyer 4000SX [SCSI Host Adapter]
|
||||
0200 DataFlyer 4000SX [RAM Expansion]
|
||||
2100 ReadySoft
|
||||
0100 AMax II/IV [Macintosh Emulator]
|
||||
2140 Phase 5
|
||||
0100 Blizzard [RAM Expansion]
|
||||
0200 Blizzard [Accelerator]
|
||||
0600 Blizzard 1220-IV [Accelerator]
|
||||
0a00 FastLane Z3 [RAM Expansion]
|
||||
0b00 Blizzard 1230-II/Fastlane Z3/CyberSCSI/CyberStorm060 [Accelerator and/or SCSI Host Adapter]
|
||||
0c00 Blizzard 1220/CyberStorm [Accelerator and SCSI Host Adapter]
|
||||
0d00 Blizzard 1230 [Accelerator]
|
||||
1100 Blizzard 1230-IV/1260 [Accelerator]
|
||||
1800 Blizzard 2060 [Accelerator]
|
||||
1900 CyberStorm Mk II [Flash ROM]
|
||||
2200 CyberVision64 [Graphics Card]
|
||||
3200 CyberVision64-3D Prototype [Graphics Card]
|
||||
4300 CyberVision64-3D [Graphics Card]
|
||||
6400 CyberStorm Mk III [Accelerator and SCSI Host Adapter]
|
||||
6e00 Blizzard 603e+ [Accelerator and SCSI Host Adapter]
|
||||
2169 DPS
|
||||
0100 Personal Animation Recorder [Video Card]
|
||||
2200 Apollo
|
||||
0000 A620 68020 [Accelerator]
|
||||
0100 A620 68020 [Accelerator]
|
||||
2222 Apollo
|
||||
2200 AT-Apollo
|
||||
2300 1230/1240/1260/2030/4040/4060 [Accelerator]
|
||||
38a5 Petsoff LP
|
||||
0000 Delfina [Audio Card]
|
||||
0100 Delfina Lite [Audio Card]
|
||||
0200 Delfina Plus [Audio Card]
|
||||
3ff7 Uwe Gerlach
|
||||
d400 RAM/ROM [Miscellaneous Expansion Card]
|
||||
4231 ACT
|
||||
0100 Prelude [Audio Card]
|
||||
4754 MacroSystems Germany
|
||||
0300 Maestro [Audio Card]
|
||||
0400 VLab [Video Card]
|
||||
0500 Maestro Pro [Audio Card]
|
||||
0600 Retina [Graphics Card]
|
||||
0800 MultiEvolution [SCSI Host Adapter]
|
||||
0c00 Toccata [Audio Card]
|
||||
0d00 Toccata Pro [Audio Card]
|
||||
1000 Retina Z3 [Graphics Card]
|
||||
1200 VLab Motion [Video Card]
|
||||
1300 Altais [Graphics Card]
|
||||
fd00 Falcon '040 [Accelerator]
|
||||
6766 Combitec
|
||||
8000 SKI Peripherals
|
||||
0800 MAST Fireball [SCSI Host Adapter]
|
||||
8000 [SCSI Host Adapter and Dual Serial Card]
|
||||
a9ad Reis-Ware
|
||||
1100 Scan King [Scanner Interface]
|
||||
aa01 Cameron
|
||||
1000 Personal A4 [Scanner Interface]
|
||||
aa11 Reis-Ware
|
||||
1100 Handyscanner [Scanner Interface]
|
||||
b5a8 Phoenix
|
||||
2100 ST506 [HD Controller]
|
||||
2200 [SCSI Host Adapter]
|
||||
be00 [RAM Expansion]
|
||||
c008 Combitec
|
||||
2a00 [HD Controller]
|
||||
2b00 SRAM [RAM Expansion]
|
Reference in New Issue
Block a user