summaryrefslogtreecommitdiffstats
path: root/sys/contrib/dev/fla/fla.c
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2004-07-13 17:44:17 +0000
committerphk <phk@FreeBSD.org>2004-07-13 17:44:17 +0000
commitc56c18c56addb1d745401937a138927593c3817e (patch)
tree4685b885a845c140a60661d423b9ddad9613e097 /sys/contrib/dev/fla/fla.c
parent2d672551f631ab141018ec48a36dde8a86cfa440 (diff)
downloadFreeBSD-src-c56c18c56addb1d745401937a138927593c3817e.zip
FreeBSD-src-c56c18c56addb1d745401937a138927593c3817e.tar.gz
Send the fla driver in the Attic
Diffstat (limited to 'sys/contrib/dev/fla/fla.c')
-rw-r--r--sys/contrib/dev/fla/fla.c288
1 files changed, 0 insertions, 288 deletions
diff --git a/sys/contrib/dev/fla/fla.c b/sys/contrib/dev/fla/fla.c
deleted file mode 100644
index afd5a0a..0000000
--- a/sys/contrib/dev/fla/fla.c
+++ /dev/null
@@ -1,288 +0,0 @@
-/*
- * ----------------------------------------------------------------------------
- * "THE BEER-WARE LICENSE" (Revision 42):
- * <phk@FreeBSD.ORG> wrote this file. As long as you retain this notice you
- * can do whatever you want with this stuff. If we meet some day, and you think
- * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp
- * ----------------------------------------------------------------------------
- *
- * $FreeBSD$
- *
- */
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/sysctl.h>
-#include <sys/kernel.h>
-#include <sys/bio.h>
-#include <sys/malloc.h>
-#include <sys/conf.h>
-#include <sys/module.h>
-#include <machine/resource.h>
-#include <geom/geom_disk.h>
-
-#include <vm/vm.h>
-#include <vm/pmap.h>
-#include <vm/vm_param.h>
-
-#include <sys/bus.h>
-
-#define LEAVE()
-#define ENTER()
-
-#include <contrib/dev/fla/msysosak.h>
-
-static MALLOC_DEFINE(M_FLA, "fla driver", "fla driver storage");
-
-void *
-doc2k_malloc(int bytes)
-{
- return malloc(bytes, M_FLA, M_WAITOK);
-}
-
-void
-doc2k_free(void *ptr)
-{
- free(ptr, M_FLA);
-}
-
-void
-doc2k_delay(unsigned msec)
-{
- DELAY(1000 * msec);
-}
-
-void
-doc2k_memcpy(void *dst, const void *src, unsigned len)
-{
- bcopy(src, dst, len);
-}
-
-int
-doc2k_memcmp(const void *dst, const void *src, unsigned len)
-{
- return (bcmp(src, dst, len));
-}
-
-void
-doc2k_memset(void *dst, int c, unsigned len)
-{
- u_char *p = dst;
- while (len--)
- *p++ = c;
-}
-
-static struct fla_s {
- int busy;
- int unit;
- unsigned nsect;
- struct doc2k_stat ds;
- struct bio_queue_head bio_queue;
- struct disk *disk;
- struct cdev *dev;
-} softc[8];
-
-static int
-flaopen(struct disk *dp)
-{
- struct fla_s *sc;
- int error;
- u_int spu, ncyl, nt, ns;
-
- sc = dp->d_drv1;
-
- error = doc2k_open(sc->unit);
-
- if (error) {
- printf("doc2k_open(%d) -> err %d\n", sc->unit, error);
- return (EIO);
- }
-
- error = doc2k_size(sc->unit, &spu, &ncyl, &nt, &ns);
- sc->disk->d_sectorsize = DEV_BSIZE;
- sc->disk->d_mediasize = (off_t)spu * DEV_BSIZE;
- sc->disk->d_fwsectors = ns;
- sc->disk->d_fwheads = nt;
-
- return (0);
-}
-
-static int
-flaclose(struct disk *dp)
-{
- int error;
- struct fla_s *sc;
-
- sc = dp->d_drv1;
-
- error = doc2k_close(sc->unit);
- if (error) {
- printf("doc2k_close(%d) -> err %d\n", sc->unit, error);
- return (EIO);
- }
- return (0);
-}
-
-static void
-flastrategy(struct bio *bp)
-{
- int unit, error;
- struct fla_s *sc;
- enum doc2k_work what;
-
- sc = bp->bio_disk->d_drv1;
-
-
- bioq_disksort(&sc->bio_queue, bp);
-
- if (sc->busy) {
- return;
- }
-
- sc->busy++;
-
- while (1) {
- bp = bioq_first(&sc->bio_queue);
- if (bp)
- bioq_remove(&sc->bio_queue, bp);
- if (!bp)
- break;
-
- bp->bio_resid = bp->bio_bcount;
- unit = sc->unit;
-
- if (bp->bio_cmd == BIO_DELETE)
- what = DOC2K_ERASE;
- else if (bp->bio_cmd == BIO_READ)
- what = DOC2K_READ;
- else
- what = DOC2K_WRITE;
-
- LEAVE();
-
- error = doc2k_rwe( unit, what, bp->bio_pblkno,
- bp->bio_bcount / DEV_BSIZE, bp->bio_data);
-
- ENTER();
-
- if (error) {
- printf("fla%d: %d = rwe(%p, %d, %d, %jd, %ld, %p)\n",
- unit, error, bp, unit, what,
- (intmax_t)bp->bio_pblkno,
- bp->bio_bcount / DEV_BSIZE, bp->bio_data);
- }
- if (error) {
- bp->bio_error = EIO;
- bp->bio_flags |= BIO_ERROR;
- } else {
- bp->bio_resid = 0;
- }
- biodone(bp);
-
- }
- sc->busy = 0;
- return;
-}
-
-static int
-flaprobe (device_t dev)
-{
- int unit;
- struct fla_s *sc;
- int i;
-
- unit = device_get_unit(dev);
- if (unit >= 8)
- return (ENXIO);
- sc = &softc[unit];
-
- /* This is slightly ugly */
- i = doc2k_probe(unit, KERNBASE + 0xc0000, KERNBASE + 0xe0000);
- if (i)
- return (ENXIO);
-
- i = doc2k_info(unit, &sc->ds);
- if (i)
- return (ENXIO);
-
- bus_set_resource(dev, SYS_RES_MEMORY, 0,
- sc->ds.window - KERNBASE, 8192);
-
- return (0);
-}
-
-static int
-flaattach (device_t dev)
-{
- int unit;
- int i, j, k, l, m, error;
- struct fla_s *sc;
-
- unit = device_get_unit(dev);
- sc = &softc[unit];
-
- error = doc2k_open(unit);
- if (error) {
- printf("doc2k_open(%d) -> err %d\n", unit, error);
- return (EIO);
- }
-
- error = doc2k_size(unit, &sc->nsect, &i, &j, &k );
- if (error) {
- printf("doc2k_size(%d) -> err %d\n", unit, error);
- return (EIO);
- }
-
- printf("fla%d: <%s %s>\n", unit, sc->ds.product, sc->ds.model);
-
- error = doc2k_close(unit);
- if (error) {
- printf("doc2k_close(%d) -> err %d\n", unit, error);
- return (EIO);
- }
-
- m = 1024L * 1024L / DEV_BSIZE;
- l = (sc->nsect * 10 + m/2) / m;
- printf("fla%d: %d.%01dMB (%u sectors),"
- " %d cyls, %d heads, %d S/T, 512 B/S\n",
- unit, l / 10, l % 10, sc->nsect, i, j, k);
-
- if (bootverbose)
- printf("fla%d: JEDEC=0x%x unitsize=%ld mediasize=%ld"
- " chipsize=%ld interleave=%d window=%lx\n",
- unit, sc->ds.type, sc->ds.unitSize, sc->ds.mediaSize,
- sc->ds.chipSize, sc->ds.interleaving, sc->ds.window);
-
- bioq_init(&sc->bio_queue);
-
- sc->disk = disk_alloc();
- sc->disk->d_open = flaopen;
- sc->disk->d_close = flaclose;
- sc->disk->d_strategy = flastrategy;
- sc->disk->d_drv1 = sc;
- sc->disk->d_name = "fla";
- sc->disk->d_maxsize = MAXPHYS;
- sc->unit = unit;
- sc->disk->d_unit = unit;
- sc->disk->d_flags = DISKFLAG_CANDELETE | DISKFLAG_NEEDSGIANT;
- disk_create(sc->disk, DISK_VERSION);
-
- return (0);
-}
-
-static device_method_t fla_methods[] = {
- /* Device interface */
- DEVMETHOD(device_probe, flaprobe),
- DEVMETHOD(device_attach, flaattach),
- {0, 0}
-};
-
-static driver_t fladriver = {
- "fla",
- fla_methods,
- sizeof(struct fla_s),
-};
-
-static devclass_t fla_devclass;
-
-DRIVER_MODULE(fla, isa, fladriver, fla_devclass, 0, 0);
OpenPOWER on IntegriCloud