From d4ebee28d2226a6174bc6c9e27ae30bc0924cef2 Mon Sep 17 00:00:00 2001 From: Poul-Henning Kamp Date: Fri, 6 Aug 1999 15:59:07 +0000 Subject: [PATCH] Add driver support for M-systems DiskOnChip Products. Sponsored by: M-systems Inc. http://www.m-sys.com --- sys/conf/NOTES | 5 +- sys/contrib/dev/fla/COPYRIGHT | 102 ++++ sys/contrib/dev/fla/README | 73 +++ sys/contrib/dev/fla/fla.c | 451 +++++++++++++++ sys/contrib/dev/fla/i386/msysosak.o.uu | 724 +++++++++++++++++++++++++ sys/contrib/dev/fla/msysosak.h | 135 +++++ sys/contrib/dev/fla/patch.00 | 23 + sys/contrib/dev/fla/patch.01 | 16 + sys/contrib/dev/fla/prep.fla.sh | 44 ++ sys/i386/conf/LINT | 5 +- sys/i386/conf/NOTES | 5 +- 11 files changed, 1580 insertions(+), 3 deletions(-) create mode 100644 sys/contrib/dev/fla/COPYRIGHT create mode 100644 sys/contrib/dev/fla/README create mode 100644 sys/contrib/dev/fla/fla.c create mode 100644 sys/contrib/dev/fla/i386/msysosak.o.uu create mode 100644 sys/contrib/dev/fla/msysosak.h create mode 100644 sys/contrib/dev/fla/patch.00 create mode 100644 sys/contrib/dev/fla/patch.01 create mode 100644 sys/contrib/dev/fla/prep.fla.sh diff --git a/sys/conf/NOTES b/sys/conf/NOTES index d934efd591c..bb57bfdd05d 100644 --- a/sys/conf/NOTES +++ b/sys/conf/NOTES @@ -2,7 +2,7 @@ # LINT -- config file for checking all the sources, tries to pull in # as much of the source tree as it can. # -# $Id: LINT,v 1.621 1999/08/04 17:29:33 green Exp $ +# $Id: LINT,v 1.622 1999/08/06 14:01:54 hm Exp $ # # NB: You probably don't want to try running a kernel built from this # file. Instead, you should start from GENERIC, and add options from @@ -1129,6 +1129,9 @@ options FDC_YE #XXX newbus broken disk fd0 at fdc0 drive 0 disk fd1 at fdc0 drive 1 +# M-systems DiskOnchip products see src/sys/contrib/dev/fla/README +device fla0 at isa? + # # Other standard PC hardware: `mse', `sio', etc. # diff --git a/sys/contrib/dev/fla/COPYRIGHT b/sys/contrib/dev/fla/COPYRIGHT new file mode 100644 index 00000000000..9618a678181 --- /dev/null +++ b/sys/contrib/dev/fla/COPYRIGHT @@ -0,0 +1,102 @@ + +SOFTWARE LICENSE AGREEMENT + +IMPORTANT! READ CAREFULLY: +THIS SOFTWARE LICENSE AGREEMENT (the ``Agreement'') is a legal +agreement between you (either an individual or a single entity) and +M-Systems Flash Disk Pioneers Ltd. ("M-Systems"). +This Agreement relates to the M-Systems' software accompanying this +Agreement, which includes computer software and may include associated +media, printed materials, and ``online'' or electronic documentation +(the ``Licensed Software''). +By downloading, installing, copying, or otherwise using the Licensed +Software, you agree to be bound by the terms of this Agreement. +If you do not agree to the terms of this Agreement, do not install, +copy or use the Licensed Software. + +The Licensed Software is protected by copyright laws and international +copyright treaties, as well as other intellectual property laws and +treaties. The Licensed Software is licensed, not sold. +The Licensed Software is being provided solely for use with M-Systems' +DiskOnChip® product lines. +1. License Grant. +(a) Grant of License. Subject to the terms and conditions of this + Agreement, M-Systems hereby grants you a nonexclusive, + royalty-free, worldwide license (including the right to + sublicense) to use, copy and distribute the Licensed Software + with M-Systems DiskOnChip® products. +(b) Restrictions on Use. The Licensed Software is licensed solely + for use with and to support M-Systems' DiskOnChip® products. + Use of this Licensed Software with, or to support, any other + flash disk, flash card, resident flash array or solid state + disk of any kind is expressly prohibited, and constitutes an + illegal infringement of M-Systems' patent, copyright and other + rights in and to the Licensed Software. +2. Limitations on Reverse Engineering, Decompilation, and + Disassembly. You may not reverse engineer, decompile, or + disassemble the Licensed Software, except and only to the + extent that such activity is expressly permitted by applicable + law notwithstanding this limitation. +3. Termination. Without prejudice to any other rights, M-Systems + may terminate this Agreement if you fail to comply with the + terms and conditions of this Agreement. In such event, you must + destroy all copies of the Licensed Software and all of its + component parts. +4. Intellectual Property Rights. Title to the Licensed Software, + and all rights with respect to the Software not specifically + granted under this Agreement, including without limitation + all rights of modification, disassembly and decompilation and + all copyright, patent, trademark, trade secret and other + proprietary rights and interests are reserved to M-Systems. + You may not remove or alter the "README" or "COPYRIGHT" files + or copyright notices in the Licensed Software. +5. DISCLAIMER OF WARRANTIES. To the maximum extent permitted by + applicable law, M-Systems and its suppliers provide the Product + and any (if any) support services related to the Product + ("Support Services") AS IS AND WITH ALL FAULTS, and hereby + disclaim all warranties and conditions, either express, + implied or statutory, including, but not limited to, any + (if any) implied warranties or conditions of merchantability, + of fitness for a particular purpose, of lack of viruses, of + accuracy or completeness of responses, of results, and of lack + of negligence or lack of workmanlike effort, all with regard + to the Product, and the provision of or failure to provide + Support Services. ALSO, THERE IS NO WARRANTY OR CONDITION OF + TITLE, QUIET ENJOYMENT, QUIET POSSESSION, CORRESPONDENCE TO + DESCRIPTION OR NON-INFRINGEMENT, WITH REGARD TO THE PRODUCT. + THE ENTIRE RISK AS TO THE QUALITY OF OR ARISING OUT OF USE OR + PERFORMANCE OF THE PRODUCT AND SUPPORT SERVICES, IF ANY, + REMAINS WITH YOU. +6. EXCLUSION OF INCIDENTAL, CONSEQUENTIAL AND CERTAIN OTHER + DAMAGES. To the maximum extent permitted by applicable law, + in no event shall M-Systems or its suppliers be liable for + any special, incidental, indirect, or consequential damages + whatsoever (including, but not limited to, damages for loss + of profits or confidential or other information, for business + interruption, for personal injury, for loss of privacy, for + failure to meet any duty including of good faith or of + reasonable care, for negligence, and for any other pecuniary + or other loss whatsoever) arising out of or in any way related + to the use of or inability to use the Product, the provision + of or failure to provide Support Services, or otherwise under + or in connection with any provision of Agreement, even in the + event of the fault, tort (including negligence), strict + liability, breach of contract or breach of warranty of + M-Systems or any supplier, and even if M-Systems or any + supplier has been advised of the possibility of such damages. +7. LIMITATION OF LIABILITY AND REMEDIES. Notwithstanding any + damages that you might incur for any reason whatsoever + (including, without limitation, all damages referenced above + and all direct or general damages), the entire liability of + M-Systems and any of its suppliers under any provision of this + Agreement and your exclusive remedy for all of the foregoing + shall be limited to the greater of the amount actually paid by + you for the Product or U.S.$5.00. The foregoing limitations, + exclusions and disclaimers shall apply to the maximum extent + permitted by applicable law, even if any remedy fails its + essential purpose. +8. Miscellaneous + The laws of the State of California, United States of America, + exclusive of conflict-of-laws provisions, shall govern this + Agreement in all respects. + diff --git a/sys/contrib/dev/fla/README b/sys/contrib/dev/fla/README new file mode 100644 index 00000000000..e11f553050f --- /dev/null +++ b/sys/contrib/dev/fla/README @@ -0,0 +1,73 @@ +README and FAQ for the fla driver. + +$Id: README,v 1.3 1999/08/01 14:30:46 phk Exp $ + +[0] COPYRIGHT & LICENSE + + Please read the COPYRIGHT file carefully. If you cannot + agree to be bound by the terms of this license, please + contact M-systems and make arrangements with them. + +[1] Which devices are supported ? + + The driver has been tested with the following devices: + + DiskOnChip2000 (8, 12, 24, 32, 40, 72, 144 MB) + DiskOnChipMillenium (8 MB) + +[2] Which firmware version ? + + The driver has only been tested with version 1.21, but should + also work with earlier versions. + +[3] How many devices ? + + The driver supports up to 8 devices but have been tested only + with 5 due to hardware limitations in my test setup. + +[4] Which FreeBSD versions ? + + The driver is tested for 4.0-CURRENT and 3.2-STABLE. Porting + to earlier versions of FreeBSD should be a simple matter of + modifying the fla.c file. [patches are welcome] + + For 3.2-STABLE sources earlier than 1999-08-01 you + will need to apply the patch in file patch.00 + +[5] Can I install FreeBSD with sysinstall ? + + Yes, from medio july FreeBSD-4.X snapshots have recognized the + fla devices in sysinstall. You need to build a custom kernel + with the driver though. See below about booting from a fla + device. + +[6] How to boot from a fla device ? + + The FreeBSD kernel recognizes the root device using various + hacks. These hacks doesn't recognize the fla device so some + "real" hacks are needed to boot from your fla device. + + In 4.0 current the easiest way is to configure your kernel with + the + options ROOTDEVNAME=\"fla0\" + + In older versions you may need the patch in file patch.01. + Be aware that with this patch the kernel will probably not + boot on normal disks. + +[7] How to disklabel a fla device ? + + Look at the script in prep.fla.sh, it will do the job for you. + +[8] Who to contact ? + + doc2k@phk.freebsd.dk will offer limited best-effort help + to the extent time permits. + +[9] Will more documentation be forthcoming ? + + YES. + +Good Luck, + +Poul-Henning diff --git a/sys/contrib/dev/fla/fla.c b/sys/contrib/dev/fla/fla.c new file mode 100644 index 00000000000..052a994aab0 --- /dev/null +++ b/sys/contrib/dev/fla/fla.c @@ -0,0 +1,451 @@ +/* + * ---------------------------------------------------------------------------- + * "THE BEER-WARE LICENSE" (Revision 42): + * 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 + * ---------------------------------------------------------------------------- + * + * $Id: fla.c,v 1.3 1999/08/06 15:22:09 phk Exp $ + * + */ + +#include "fla.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#if __FreeBSD_version > 400000 /* XXX ? */ +#include +#include +#include + +#define dev2ul(foo) ((unsigned long)dev2udev(foo)) +#endif + +#if __FreeBSD_version < 400000 /* XXX ? */ +#include + +#define dev2ul(foo) ((unsigned long)foo) + +static int +physread(dev_t dev, struct uio *uio, int ioflag) +{ + return(physio(cdevsw[major(dev)]->d_strategy, + NULL, dev, 1, minphys, uio)); +} + +static int +physwrite(dev_t dev, struct uio *uio, int ioflag) +{ + return(physio(cdevsw[major(dev)]->d_strategy, + NULL, dev, 0, minphys, uio)); +} + +#define nopoll seltrue +#define noparms NULL +#endif + +#include <../../contrib/dev/fla/msysosak.h> + +MALLOC_DEFINE(M_FLA, "fla driver", "fla driver storage"); + +static int fla_debug = 0; +SYSCTL_INT(_debug, OID_AUTO, fladebug, CTLFLAG_RW, &fla_debug, 0, ""); + +#define CDEV_MAJOR 102 +#define BDEV_MAJOR 28 + +static d_strategy_t flastrategy; +static d_open_t flaopen; +static d_close_t flaclose; +static d_ioctl_t flaioctl; +static d_psize_t flapsize; + +static struct cdevsw fla_cdevsw = { + /* open */ flaopen, + /* close */ flaclose, + /* read */ physread, + /* write */ physwrite, + /* ioctl */ flaioctl, + /* stop */ nostop, + /* reset */ noreset, + /* devtotty */ nodevtotty, + /* poll */ nopoll, + /* mmap */ nommap, + /* strategy */ flastrategy, + /* name */ "fla", + /* parms */ noparms, + /* maj */ CDEV_MAJOR, + /* dump */ nodump, + /* psize */ flapsize, + /* flags */ D_DISK | D_CANFREE, + /* maxio */ 0, + /* bmaj */ BDEV_MAJOR +}; + + + +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 { + unsigned nsect; + struct doc2k_stat ds; + struct diskslices *dk_slices; + struct buf_queue_head buf_queue; +} softc[NFLA]; + +static int +flaopen(dev_t dev, int flag, int fmt, struct proc *p) +{ + int unit; + struct fla_s *sc; + int error; + struct disklabel dk_dd; + + if (fla_debug) + printf("flaopen(%lx %x %x %p)\n", + dev2ul(dev), flag, fmt, p); + unit = dkunit(dev); + if (unit >= NFLA) + return (ENXIO); + sc = &softc[unit]; + if (!sc->nsect) + return (ENXIO); + bzero(&dk_dd, sizeof(dk_dd)); + error = doc2k_size(unit, &dk_dd.d_secperunit, + &dk_dd.d_ncylinders, &dk_dd.d_ntracks, &dk_dd.d_nsectors); + dk_dd.d_secsize = DEV_BSIZE; + dk_dd.d_secpercyl = dk_dd.d_ntracks * dk_dd.d_nsectors; + + error = dsopen("fla", dev, fmt, 0, &sc->dk_slices, &dk_dd, + flastrategy, NULL, &fla_cdevsw); + return (error); +} + +static int +flaclose(dev_t dev, int flags, int fmt, struct proc *p) +{ + int unit; + struct fla_s *sc; + + if (fla_debug) + printf("flaclose(%lx %x %x %p)\n", + dev2ul(dev), flags, fmt, p); + unit = dkunit(dev); + sc = &softc[unit]; + dsclose(dev, fmt, sc->dk_slices); + return (0); +} + +static int +flaioctl(dev_t dev, u_long cmd, caddr_t addr, int flags, struct proc *p) +{ + int unit, error; + struct fla_s *sc; + + if (fla_debug) + printf("flaioctl(%lx %lx %p %x %p)\n", + dev2ul(dev), cmd, addr, flags, p); + unit = dkunit(dev); + sc = &softc[unit]; + error = dsioctl("fla", dev, cmd, addr, flags, &sc->dk_slices, + flastrategy, NULL); + if (error == ENOIOCTL) + error = ENOTTY; + return (error); +} + +static void +flastrategy(struct buf *bp) +{ + int unit, error; + u_long ef; + struct fla_s *sc; + static int busy; + enum doc2k_work what; + + if (fla_debug) + printf("flastrategy(%p) %lx %lx, %d, %ld, %p)\n", + bp, dev2ul(bp->b_dev), bp->b_flags, bp->b_blkno, + bp->b_bcount / DEV_BSIZE, bp->b_data); + unit = dkunit(bp->b_dev); + sc = &softc[unit]; + + if (dscheck(bp, sc->dk_slices) <= 0) { + biodone(bp); + return; + } + + ef = read_eflags(); + disable_intr(); + + bufqdisksort(&sc->buf_queue, bp); + + if (busy) { + write_eflags(ef); + return; + } + + busy++; + + while (1) { + bp = bufq_first(&sc->buf_queue); + if (bp) + bufq_remove(&sc->buf_queue, bp); + + write_eflags(ef); + if (!bp) + break; + + bp->b_resid = bp->b_bcount; + unit = dkunit(bp->b_dev); + + if (bp->b_flags & B_FREEBUF) + what = DOC2K_ERASE; + else if (bp->b_flags & B_READ) + what = DOC2K_READ; + else + what = DOC2K_WRITE; + + error = doc2k_rwe( unit, what, bp->b_pblkno, + bp->b_bcount / DEV_BSIZE, bp->b_data); + + if (fla_debug || error) { + printf("fla%d: %d = rwe(%p, %d, %d, %d, %ld, %p)\n", + unit, error, bp, unit, what, bp->b_pblkno, + bp->b_bcount / DEV_BSIZE, bp->b_data); + } + if (error) { + bp->b_error = EIO; + bp->b_flags |= B_ERROR; + } else { + bp->b_resid = 0; + } + biodone(bp); + + ef = read_eflags(); + disable_intr(); + } + busy = 0; + return; +} + +static int +flapsize(dev_t dev) +{ + int unit; + struct fla_s *sc; + + if (fla_debug) + printf("flapsize(%lx)\n", dev2ul(dev)); + unit = dkunit(dev); + sc = &softc[unit]; + if (!sc->nsect) + return 0; + + return (dssize(dev, &sc->dk_slices, flaopen, flaclose)); +} + +static int +flarealprobe(int unit) +{ + struct fla_s *sc; + int i; + + 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); + + return (0); +} + + +static int +flarealattach(int unit) +{ + int i, j, k, l, m, error; + struct fla_s *sc; + + 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); + + 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); + + bufq_init(&sc->buf_queue); + + return (0); +} + + +#if __FreeBSD_version > 400000 /* XXX ? */ + +static int +flaprobe (device_t dev) +{ + int unit; + struct fla_s *sc; + device_t bus; + int i; + + unit = device_get_unit(dev); + sc = &softc[unit]; + i = flarealprobe(unit); + if (i) + return (i); + + bus = device_get_parent(dev); + ISA_SET_RESOURCE(bus, dev, SYS_RES_MEMORY, 0, + sc->ds.window - KERNBASE, 8192); + + return (0); +} + + +static int +flaattach (device_t dev) +{ + int unit, i; + + unit = device_get_unit(dev); + i = flarealattach(unit); + return (i); +} + +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; + +DEV_DRIVER_MODULE(fla, isa, fladriver, fla_devclass, fla_cdevsw, 0, 0); +#endif + + +#if __FreeBSD_version < 400000 /* XXX ? */ + +static int +flaprobe (struct isa_device *dvp) +{ + int unit; + struct fla_s *sc; + int i; + + unit = dvp->id_unit; + sc = &softc[unit]; + i = flarealprobe(unit); + if (i) + return (0); + + dvp->id_maddr = (caddr_t)sc->ds.window; + dvp->id_msize = 8192; + + cdevsw_add_generic(BDEV_MAJOR, CDEV_MAJOR, &fla_cdevsw); + return (-1); +} + + +static int +flaattach (struct isa_device *dvp) +{ + int unit, i; + + unit = dvp->id_unit; + i = flarealattach(unit); + return (i); +} + +struct isa_driver fladriver = { + flaprobe, flaattach, "fla", +}; + +#endif diff --git a/sys/contrib/dev/fla/i386/msysosak.o.uu b/sys/contrib/dev/fla/i386/msysosak.o.uu new file mode 100644 index 00000000000..4d1faaf9197 --- /dev/null +++ b/sys/contrib/dev/fla/i386/msysosak.o.uu @@ -0,0 +1,724 @@ + +SOFTWARE LICENSE AGREEMENT + +IMPORTANT! READ CAREFULLY: +THIS SOFTWARE LICENSE AGREEMENT (the ``Agreement'') is a legal +agreement between you (either an individual or a single entity) and +M-Systems Flash Disk Pioneers Ltd. ("M-Systems"). +This Agreement relates to the M-Systems' software accompanying this +Agreement, which includes computer software and may include associated +media, printed materials, and ``online'' or electronic documentation +(the ``Licensed Software''). +By downloading, installing, copying, or otherwise using the Licensed +Software, you agree to be bound by the terms of this Agreement. +If you do not agree to the terms of this Agreement, do not install, +copy or use the Licensed Software. + +The Licensed Software is protected by copyright laws and international +copyright treaties, as well as other intellectual property laws and +treaties. The Licensed Software is licensed, not sold. +The Licensed Software is being provided solely for use with M-Systems' +DiskOnChip® product lines. +1. License Grant. +(a) Grant of License. Subject to the terms and conditions of this + Agreement, M-Systems hereby grants you a nonexclusive, + royalty-free, worldwide license (including the right to + sublicense) to use, copy and distribute the Licensed Software + with M-Systems DiskOnChip® products. +(b) Restrictions on Use. The Licensed Software is licensed solely + for use with and to support M-Systems' DiskOnChip® products. + Use of this Licensed Software with, or to support, any other + flash disk, flash card, resident flash array or solid state + disk of any kind is expressly prohibited, and constitutes an + illegal infringement of M-Systems' patent, copyright and other + rights in and to the Licensed Software. +2. Limitations on Reverse Engineering, Decompilation, and + Disassembly. You may not reverse engineer, decompile, or + disassemble the Licensed Software, except and only to the + extent that such activity is expressly permitted by applicable + law notwithstanding this limitation. +3. Termination. Without prejudice to any other rights, M-Systems + may terminate this Agreement if you fail to comply with the + terms and conditions of this Agreement. In such event, you must + destroy all copies of the Licensed Software and all of its + component parts. +4. Intellectual Property Rights. Title to the Licensed Software, + and all rights with respect to the Software not specifically + granted under this Agreement, including without limitation + all rights of modification, disassembly and decompilation and + all copyright, patent, trademark, trade secret and other + proprietary rights and interests are reserved to M-Systems. + You may not remove or alter the "README" or "COPYRIGHT" files + or copyright notices in the Licensed Software. +5. DISCLAIMER OF WARRANTIES. To the maximum extent permitted by + applicable law, M-Systems and its suppliers provide the Product + and any (if any) support services related to the Product + ("Support Services") AS IS AND WITH ALL FAULTS, and hereby + disclaim all warranties and conditions, either express, + implied or statutory, including, but not limited to, any + (if any) implied warranties or conditions of merchantability, + of fitness for a particular purpose, of lack of viruses, of + accuracy or completeness of responses, of results, and of lack + of negligence or lack of workmanlike effort, all with regard + to the Product, and the provision of or failure to provide + Support Services. ALSO, THERE IS NO WARRANTY OR CONDITION OF + TITLE, QUIET ENJOYMENT, QUIET POSSESSION, CORRESPONDENCE TO + DESCRIPTION OR NON-INFRINGEMENT, WITH REGARD TO THE PRODUCT. + THE ENTIRE RISK AS TO THE QUALITY OF OR ARISING OUT OF USE OR + PERFORMANCE OF THE PRODUCT AND SUPPORT SERVICES, IF ANY, + REMAINS WITH YOU. +6. EXCLUSION OF INCIDENTAL, CONSEQUENTIAL AND CERTAIN OTHER + DAMAGES. To the maximum extent permitted by applicable law, + in no event shall M-Systems or its suppliers be liable for + any special, incidental, indirect, or consequential damages + whatsoever (including, but not limited to, damages for loss + of profits or confidential or other information, for business + interruption, for personal injury, for loss of privacy, for + failure to meet any duty including of good faith or of + reasonable care, for negligence, and for any other pecuniary + or other loss whatsoever) arising out of or in any way related + to the use of or inability to use the Product, the provision + of or failure to provide Support Services, or otherwise under + or in connection with any provision of Agreement, even in the + event of the fault, tort (including negligence), strict + liability, breach of contract or breach of warranty of + M-Systems or any supplier, and even if M-Systems or any + supplier has been advised of the possibility of such damages. +7. LIMITATION OF LIABILITY AND REMEDIES. Notwithstanding any + damages that you might incur for any reason whatsoever + (including, without limitation, all damages referenced above + and all direct or general damages), the entire liability of + M-Systems and any of its suppliers under any provision of this + Agreement and your exclusive remedy for all of the foregoing + shall be limited to the greater of the amount actually paid by + you for the Product or U.S.$5.00. The foregoing limitations, + exclusions and disclaimers shall apply to the maximum extent + permitted by applicable law, even if any remedy fails its + essential purpose. +8. Miscellaneous + The laws of the State of California, United States of America, + exclusive of conflict-of-laws provisions, shall govern this + Agreement in all respects. + +begin 664 msysosak.o +M?T5,1@$!`0!&C\____A2-9+/P^O/HE]W(L;B=@QTO?WB<.+11")&(G(C67,6UY?R<.058GE@^P8BT4( +MB47HC47H4&H%Z/S____)PXUV`%6)Y8/L&(M%"(E%Z(U%Z%!J`>C\____R<.- +M=@!5B>6#[!A64XM="(MU#(M%$(M5%(M-&(E=Z(E%^(E5_(E-](/^`70<<@J# +M_@)T)>LSC78`C47H4&H&Z/S____K*(UV`(U%Z%!J!^C\____ZQB-=@"-1>A0 +M:@GH_/___^L(C78`N!`G``"-9>!;7LG#58GER<.-=@!5B>6X`0```,G#B?95 +MB>7)PXUV`%6)Y8M%",<``````#'`R<-5B>7)PY"0D%6)Y5.+70CV`PAT"_]S +M;(N#B````/_0Q@,`,<"+7?S)PXUV`%6)Y593BUT(,?:#?0P!=4R-0S10Z/S_ +M__^#Q`2%P'4(N`D```#K;Y!J`?^SE````.C\_____[.4````Z/S___^#Q`SV +M`PAT3&H!_W-LBX.$````_]")QNL[C78`]@,(=!)J`/]S;(N#A````/_0B<:# +MQ`C_LY0```#H_/___VH`_[.4````Z/S___^-0S10Z/S___^)\(UE^%M>R<.- +M=@!5B>6+10AJ`/]U#/]P;(M`53BUT(4^@7____@\0$A`2`<+WVL'Z`U+H_/___X/$#(7`#X6(`0``:@!6Z"O___^#Q`B%P'48_W9L +MBX:(````_]"X&P```.ED`0``C78`/0````!U%?]V;(N&B````/_0N!D```#I +M10$``&:!N/X!``!5JG4=@+C"`0```'04!<8!``!0Z/S___^)1A"#Q`3K")#' +M1A``````QT88`````,=&%`````"`#@C_=A!6Z*?^__^)PX/$"(7;=0JX&P`` +M`.GI````@?L`````=0RX&0```.G7````B?:`.^ET&XL#)?\`_P`]ZP"0`'0- +MN`H```#IN````(UV`(U#"U#H_/___X/$!&8]``(/A9H````/MD,-B48$#[9# +M$(E&'`^W0Q:)1B`/MTL.`TX0B4X4#[=#%@'(B488#[9#$`^W4Q8/K\(!R(E& +M)(U#$5#H_/___R7__P``P>`%2,'H"4")1B@#1B2)1BR-0Q-0Z/S___\E__\` +M`(7`=0.+0R`#1A`K1BPQTO=V!$")1@@]]`\``'88BWX$P><)B7X,QT8P`@`` +M`(`.`C'`ZP:0N`L```"-9?1;7E_)PXUV`%6)Y5.+10B+70S_<&R+@(P```#_ +MT(E#$#'`BUW\R<.058GE@^P$5U93BW4,BUX,BT80BU4(BWH0`<>+5A2)5?S' +M1A0`````.584`````_]"#Q`R%P'4?BTT,45?HB?S__XG"@\0(`W<$@\," +M@?O_`0``=KHQP(UE]%M>7\G#58GE@^P$5U93BUT,BWL,BT,0BU4(BW(0`<:+ +M4Q2)5?S'0Q0`````.5,46#[`13BT4(BUT,C57\4O]S$/]P;(M` +M6+50B+30R+01`#0A#_<110_W)LBX*`````_]#)PU6)Y8/L!%=64XM= +M"(M%#(M`#(E%_/]S$%/HBOO__X/$"(7`=",]`````'0KBWW\B<;\N0D```#S +MI6H`4^AG^___@\0(A7\G#D%6) +MY593BUT(C7,X5O^SE````.C\____@\0(A`,B4$4,<#)PXGV58GE5E.+=0B+ +M30R+010#01"+5D`/KU9$.=!_+(M9$(G8F?=^/(M&/"G0.4$4?QG_<03_<13_ +M<0Q3C48X4(M&7/_0,<#K!XGVN#,```"-9?A;7LG#58GE4XM="(M-#(M!%`-! +M$(M30`^O4T0YT'\1BT$0F?=[/(M#/"G0.4$4?@BX,P```.L7\G#B?95B>575E.+?0R#/0``````=0WH +MM0$``(7`#X6C`0``BP<[!0````!R"[@4````Z8\!``"0BP>-%,"-%%"---4` +M````:@%6Z*GX__^#Q`B%P`^%;`$``(-]"`]W5(M-"/\DC1@```")]O8&`71K +M5N@Y_O__@\0$ZV#V!@AT"[L?````Z3$!``"0]@8!=0]6Z.G]__^)PX/$!.L$ +MB?8QVX7;=#96Z`3^__^#Q`3I]0```/8&"'08=!:+10A(@_@/=PC_)(58```` +MD/8&`G4+NS<```#IX0```)"#?0@0#X>^````BTT(_R2-F````%;H'OG__^LR +M5NC6]___ZRK_=PS_-^C\____@\0$4.C\____Z8,```!75NC9^O__ZWJ-=@!6 +MZ(;X__^)PX/$!.MXC78`5U;HW?K__^M>C78`5U;HY?O__^M2C78`5U;H-?S_ +M_^M&C78`5U;H)]KL!````A=MU +M#VH`5NA#]___BL\C78`N!\```#K,I`QV[X`````.QT`````7\G#D)"058GEBT4(#[=5#(M((-/BB=#)PY!5B>6#[`Q75E.+=0B+30QF +MB4WV@WXT`'1[#[?9BT8T9H$\F*W>=4QF@7R8`JW>=4-J!&H(C47X4%-6Z*W_ +M__^#Q`B#P`A0C49<4(N&@````/_0BU8TC47XBWWX9@MX!&:)/)J+5C1FBT@" +M9@M(!F:)3)H"#[=5]HM&-&:+!)"+?1!FB0>+1C1FBT20`HM-%&:)`>M$:@1J +M"(U%^%`/MT7V4%;H1?___X/$"(/`"%"-1EQ0BX:`````_]"-1?B+3?AF"T@$ +MBWT09HD/9HM(`F8+2`:+?11FB0^-9>A;7E_)PU6)Y8/L%%=64XM="(M%$(MU +M#&:)1?*+?11FB7WL9HE%^(U5^&:)0@2)^<'A$(M%^"7__P``B47X"4WXBT($ +M)?__``")0@0)2@1J!&H(4@^WQE!3Z+3^__^#Q`B#P`A0C4-<4(N#A````/_0 +M@\04A!;7E_) +MPXGV58GE@^P$BTT(#[=5#(M!+(`\`@!]%HU%_E"-1?Q04E'H,_[__P^W1?[K +M!I"X__\``,G#D%6)Y8M%"(M5#(G1P>D+BT`X#[8$`<'J"(G1@^$'T_B#X`,/ +MMH`(````R<.058GE5U93BWT(BW4,BET0@W\X``^$C````(GRP>H+BT#^`)T'7<'AH+BT6#[`175E.+=0B+?0R#?C@`=!=75N@(____B$7^@\0(/!%T!@^V +M1?[K.6H$:@*-1?Y0C4<&4(U&7%"+AH````#_T(U=_HI%_@I#`27_````4%=6 +MZ/;^__^*1?X*0P$E_P```(UE\%M>7\G#C78`58GE@^P(5U93BWT(BT4,,=+W +M=QC!X@F)5?S'1?C_____#[?0BTQ;7E_)PXUV`%6)Y8/L!%.+70AJ!&H$C47\ +M4`^W10Q04^@?_/__@\0(!0@$``!0C4-<4(N#@````/_0BT7\9@M%_B7__P`` +MBUWXR<.058GE@^P(5U93BUT(BW40BWT4:@1J"(U%^%`/MT4,4%/HT_O__X/$ +M"`4(`@``4(U#7%"+@X````#_T(M5_&8+5?YFB1:+1?B)!XUE[%M>7\G#C78` +M58GE@^P(5U93BW4(BTT0BWT4BUT,C57X9HE*!,'A$(M"!"7__P``B4($"4H$ +MB7WX:@1J"%(/M]M35NAE^___@\0(!0@"``!0C49<4(N&A````/_0C67L6UY? +MR<-5B>575E.+70B+50RX`0```(72=`;V0A0"=0VX&@```.FI````C78`C7M< +MB=;\N0T```#SI<=#+`````#'0S``````QT,,`````#M#8'T+D/]##`'`.T-@ +M?/:+2PR)2R"+0V@/KT-DT_AFB4,<#[?0@<(``@``N`$```#3X#G"=B2^`0`` +M`(GV_T,@9L%K'`$/MU,<@<(``@``BTL@B?#3X#G"=^/'`P$```#'0SS_____ +M_W-XZ/S___]0Z/S___^)@Y````!FQT,J```QP(UE]%M>7\G#B?95B>53BUT( +M#[=#'%#H_/___XE#+`^W0Q`!P%#H_/___XE#,(-[+`!T!(7`=0>X/P```.L" +M,<"+7?S)PY!5B>6#[`A64XMU"`^W70R+1BS&!`-KC47\4(U%^E!35N@7_O__ +M_W7\:@!35NA?_O__C67P6U[)PU6)Y8/L$%=64XMU"(M]#`^WSXM&+(`\`?]T +M(8H$`21_/$!V#+@=````Z?D```")]@^WUXM&+(`\`O]U!&;_3@@/M]^+1BR` +M)`.`BT8L@`P#:HU%_%"-1?I04U;HI/W__X/$$(-^-`!T$XM&-&;'!)BMWHM& +M-&;'1)@"K=X/M]^+3B#3XP^WQT#3X#G#1;7E_)PY!5B>6#[`A75E.+70B+=0S_=11H``(``/]U$%:->UQ7BX.$```` +M_]")1?B#Q!2#^!UU,F:+1?ZT`&:)1?Z`3?\1QD7^$6H15E/HF_K__VH$:@*- +M1?Y0C48&4%>+@X0```#_T.L):E564^A[^O__BT7XC67L6UY?R<-5B>6#[`A7 +M5E.+=0B_`@```(M&>,=`'`$```!J`F@``@``_[:0````BU4,4HU>7%.+AH`` +M``#_T(/$%(/X&75-:@1J"(U%^%"+50Q24XN&@````/_0:@1J"(U%^%"+51!2 +M4XN&A````/_0@\0HA7\G#B?95B>6#[`Q75E.+?0B+30QFB4WV +M,?:-1?Y0C47\4`^WP5!7Z)GW__]FBUW^@\009CM?''-,9H/^$W=&#[?3BTA;7E_)PU6)Y8/L#%=64XM]"(M- +M#&:)3?J+31!FB4WX#[?1BTA;7E_)PXUV`%6) +MY8/L!%=64XM]"(MU#`^WUHM'+(`D`H")T8E-_(GVBTW\45?HUOW__XG##[?# +M4%?H>OO__X/$$(7`=05F.?-UWC'`C67P6UY?R<-5B>6#[!Q75E.+?0B+30QF +MB4WR#[?1BTP[3QAS/Y!65^B9]___@\0(@_C_=!W_1>PYV'064U!7Z/+[__^#Q`R% +MP`^%M0```/]'5/]%Z$:!PP`"``"+3>@[3QARPH-][`!T2&C__P``#[=%\E`/ +MMT7^4%?H__3__X/$$(7`=7X/MTWRBUP(#`+K2HUV`(M-\&8[3?YT,<=%]!$1$1%J!&H$C47T4`^WP5!7 +MZ+;S__^#Q`@%"`0``%"-1UQ0BX>$````_]"#Q!0/MU7RBTP`````#[?&BTT(BU$P#[<$0E!1ZPZ0_T7L)?__``!0BUT(4^@2]/__@\0( +M9CW__W7E.7W\=0B+3>PY3?AS$8M=[(E=^(E]_&:)=?:%_W0.1HM-"&8[<1`/ +M@DW___^+3?R+70@[2QAW'@^W7?:+30B+03!FBQ18BT4,9HD04U'HF_S__^L& +MD+@_````C67@6UY?R<.-=@!5B>6#[`A75E.+70B+=0QFBWLH9H-["`!T:(GV +M9O]#*&:+0RAF.T,<<@AFBT,>9HE#*`^W4RB+0RR`/`+_=3V-1?Q0C47Z4`^W +M0RA04^B>]?__@\009H%]^FD\=!(/MT,H4%/HA/?__X/$"(7`=0UFBT,H9HD& +M,<#K#XGV9CE[*'6:5E/H6_[__XUE[%M>7\G#C78`58GE5U93BUT(BW4,BWT0 +M.W,\=0F+0WB#>!P`=%<[,=`'`````"%_W0%BT-$B0>+0T"-9?1;7E_)PU6)Y8/L$%=64XM]#&:) +M??0/M]^)WHM]"`-W+(U%_E"-1?Q04U?HMO#__XU%^%"-1?904U?HF_3__X/$ +M(&:!??S__W0(9H%]]FD\=`C&!O_I\@```(`F$&:+1?Z+?0AF.T<<L49H'[555T";@7````ZQ*)]@^W1?10BWT(5^C:^?__,<"- +M9>1;7E_)PU6)Y8/L$%=64XM%#(M="#'2]W,89HE%_`^WR(E-\(M#,&:+-$C! +MX@F)5?B_`0```,=%]`````!F@?[__W0R#[?6BT,L@#P"_W0FB@0")'\\0'8= +M45/HPOG__X/$"(7`#X5>`0``#[=5_(M#,&:+-%!FB77^9H'^__]T39`/MT7^ +M4%/H]>[__P-%^%!3Z+?Q__^#Q!`\_W0H/!%T"SQ5#Y3`#[;(B4WT#[=%_E!3 +MZ(;P__]FB47^1X/$"&8]__]UO&:!??[__W56@_\3=A8/MT7\4%/H1/G__X/$ +M"(7`#X7@````C47^4%/HI_S__X/$"(7`#X7+````#[=%_%`/MT7^4%/H5/?_ +M_X/$#(7`#X6P````#[=5_(M#,&:+-%`/MU7^BT,L@#P"_W0)B@0")'\\0'=] +M:@+_=1`/MT7^4%/H..[__X/$"`-%^%!3Z%_U__^%P'5NBTW\9CE+*G9C9CEU +M_G0X#[=5_HM#+(`\`@!\*XH$`B1_/#]W-P^W5?Z+0RS^!`*#??0`=#X'P```.L+#[?6 +MBT,L_@0",<"-9>1;7E_)PY!5B>575E.+=0B+?0RX'0```(,^`'0*N!<```#K +M/(UV`#M^)'8'N!L```#K+?]&3#';C78`@_@==2`Y?CQU!\=&//____^+51!2 +M5U;HY/W__X/$#$.#^P-^VXUE]%M>7\G#C78`58GE@^P05U93BUT(BWT,@SL` +M=`RX%P```.D6`0``B?:+=1"-!#X[0R1V&;@;````Z?\```"-=@"X'P```.GR +M````B?;'1?@`````Z=8```!74^@Q\/__B47P@\0(@_C_#X2Y````B?@QTO=S +M&&:)1?8/M\B+0S`/MQ1(BT,L@#P"_W0HB@0")'\\0'8?45/H6/?__X/$"(7` +M#X65````5U/HXN___XE%\(/$"&:+1?ZT`&:)1?[&1?X`:@"+=?!64^BB[O__ +M:@1J`HU%_E"+1?"#P`90C4-<4(N#A````/_0BTL@T^Z)\0^WT8M#+(/$((`\ +M`@!]"P^W5?:+0S!FBPQ09HMU]F8Y____,<"-9>1;7E_)PU6)Y3'`R<.058GEBT4(BT`D +MR<.058GE4XM="(-[+`!T"_]S+.C\____@\0$@WLP`'0+_W,PZ/S___^#Q`2# +M>S0`=`O_6#["A7 +M5E.+50B+71"-!-*-!(*--(4@````:@YJ`(U%\%#H_/___\=&-`````#'1C@` +M````4U;H)O#__X/$%(7`#X62`P``BT44C4Y''-"9CM> +M'G(89CM>!'029CM>!G0,#[?3BT8L@#P"_W0<#[?3BT8L@#P"_W0&Q@0":^L* +M#[?3BT8LQ@0":F9#9CM>''*^,=MF.UX<''+49L=&"```9HM>'F8[7AQS,`^W +MPP-&+(`X$'0%@#B0=1`/M\-05N@^\___@\0(ZPF0@#CO=0/&`/]F0V8[7AQR +MT&;'1@@``&:+7AYF.UX<''+K9HM& +M'F:)1BC'1E``````QT9,`````,=&2`````#'1E@`````QT94`````(M]#(DW +MQT<$L!L``,='"%0?``#'1Q2X'P``QT<@_"```,='&/0@``#'1QP((0``QT<, +M`````,='$``````/MT8

`"4.C\____B48T@\0$A'',>#[?# +MBU8T9L<$@JW>BU8T9L=$@@*MWF9#9CM>''+B#[=&'(M.((/!]=/@4.C\____ +MB<*)5CB#Q`2%TG05#[=&'(M.((/!]=/@4&I54NC\____,<"-9564X,]``````!^"KAF````ZU:-=@"+-0````"-%/4`````N`````#'!`)8 +M(0``QT0"!`````#_!0`````QTKM,````N5````"0C032C02"P>`"QP08```` +M`,<$"`````!"@_H'=N,QP(UE^%M>R<.0D%6)Y8M-"(M5#(G0P>@(B$$!B!') +MPXUV`%6)Y8M%"&8/ME`!9L'B"&8/M@`!P@^WPLG#B?95B>564XMU"(M=#`^W +MPU!6Z+?____!ZQ!3@\8"5NBJ____C67X6U[)PXUV`%6)Y593BUT(4^BJ____ +MB<:#PP)3Z)____\/M];!X!`!PHG0C67X6U[)PY"058GEN`$```#)PXGV58GE +MR<.-=@!5B>7)PXUV`%6)Y3'`R<.058GER<.-=@!5B>7)PXUV`%6)Y3'`R<.0 +M58GE,<#)PY!5B>7)PXUV`%6)Y5=64XM]#(,]``````=V"KAF````Z:T````Q +M]H,]``````7\G# +MD)"058GEBU4(BT(8BT`HQH`&$````(M"&(M`*,:`!A````K)PXGV58GEBU4( +MBT(8BT`HQH`&$````(M"&(M`*,:`!A```"K)PXGV58GEBT4(BT`8BT`HQH`& +M$````LG#C78`58GE@^P$5E.+=0C&1?\`BT88]D`<"'0L,&(UV`(M#*(I5 +M_XJ`!Q````#"B%7_08/Y`7[IBT88BT`HBH`'$```)(`E_P```(UE]%M>R<.- +M=@!5B>575E.+70B+=0R+31#V0Q4!=3>+?13WQP0```!T)(L1@>+_`0``QP90 +M````@_H'=PF!`0`!``#K;Y"#`?CK:8UV`,<&`````.M>BT,89HLY9B-X"(GX +M#[?0*1&+?13WQP0```!T!H'"``(``(M#&`^W0`HYPG,+QP8`````ZQV-=@"+ +M0Q@/MT`&.<)S"<<&`0```.L'D,<&4````(M#&`^W0`I((<(!$8UE]%M>7\G# +MB?95B>6#[`164XMU",9%_P`QR8M>&(M#*(I5_XJ`(!````#"B%7_08/Y`W[I +MBT88BT`HBH`$$```B$7^,564XMU"#';B?96Z(+___^#Q`2%P'4' +MN`$```#K"T.!^R]U``!^XS'`C67X6U[)PXGV58GE@^P$4XM-"(M5#,9%_P"+ +M01B+0"B(D`00```QVXM)&(GVBT$HBE7_BH`@$````,*(5?]#@_L#?NF+7?C) +MPU6)Y8/L!%93BW4(BUT,QD7_`&H(5NBF____BT88BT`HB)@%$```,6+30B+01B+4"B*@@$0``"$P'4;QH("$```A8M!&(M`*,:``A```(6+01C& +M0!4`R<.058GE4XM%"(M=#&H`_W`@,Z5L!``")/0P```"+31")#1````#'!10` +M````````@ST4``````^%*`$``(M-$(D-%````)"A%`````4`X/__HQ0````Y +M^'(I4(M-"%'H`____X/$"(7`=-R+'10```#&@P(0``"$QH,"$```A.O&B?:+ +M31")#10```"-=@"A%`````4`X/__HQ0````Y^')54(M-"%'HN_[__XG&@\0( +MA?9TVHL=%````,:#`A```(7&@P(0``"%4XM-"%'H\/W__X/$"(7`=;6Z!1`` +M`(/^,'4%NAL0``"A%````,'H#8@$&NN9D(D]%````.MF_S44````BTT(4>A9 +M_O__B<:#Q`B%]G1$BQT4````4XM-"%'HG/W__X/$"(7`=2VZ!1```(/^,'4% +MNAL0``"*!!H/MM"+'10```")V,'H#27_````.<(/A*3^__^!!10`````(``` +MBTT0.0T4````7\G#D%6)Y593BW4(BT8(#Z]&$$B+70PAP_9& +M%0%T#XG8P>@)P>`(#[;3B<,)TVH55N@B_/__BT88BU`HBT`DB!P0BT88BT@H +MBU`DB=C!Z`B(!`J+1AB+2"B+4"2)V,'H$(@$"HM&&(/$"/9`'`AT"HM`*,:` +M'A````!J,5;HUOO__XUE^%M>R<.-=@!5B>564XM="(MU#&H34^BY^___BT,8 +MBU`HBT`DB?&(#!"+0QB#Q`CV0!P(=`F+0"B(B!X0``!J$5/HCOO__XUE^%M> +MR<.-=@!5B>6#[!!75E.+=0B+?0R+1AB)1?R`>!0!=C*+#XG(BUW\,=+W7\G# +MC78`58GE@^P$5E.+70B+=0QJ`/]S'.C\____B<*+0QB)4"A64^B!____BT,( +M#Z]#$(E%_(L6B=`QTO=U_(G!#[;!4%/H)OO__XUE]%M>R<.-=@!5B>6#[`17 +M5E.+?0B+=1#&1?\`BT<8]D`<"'0\BT`HBE7_BH`=$````,*(5?].B?.!_@`! +M``!^!;L``0``4XM7&(M")`-"*%"+30Q1Z/S___^#Q`SK!(GV,=LYWGX:B?`I +MV%"+5QB+0B0#0BA0BT4,`=A0Z/S___^+1QCV0!P(=`^+0"B*@!\0``"+30R( +M!`Z-9?!;7E_)PU6)Y5.+70C_=1#_=0R+4QB+0B0#0BA0Z/S___^+0QCV0!P( +M=`J+0"C&@!X0````BUW\R<-5B>53BUT(_W40#[9%#%"+4QB+0B0#0BA0Z/S_ +M__^+0QCV0!P(=`J+0"C&@!X0````BUW\R<.)]E6)Y8/L!%93BW4(QD7_`&IP +M5NCU_?__BT88BU`HBD7_BI(-$````-"(1?\QR8/$"(M>&)"+0RB*5?^*@"`0 +M````PHA5_T&#^0%^Z8M&&(M0*(M`)(H<$&H85NAY^?__#[;#C67T6U[)PXUV +M`%6)Y593BUT(BW40#[9%#%!3Z(K]__]64^C[_/__4^@5^?__C67X6U[)PXGV +M58GE4XM="/9#%0)T%&C_````4^A<_?__4^CN^/__@\0,#[9%#%!3Z$C]__]H +M@````%/H/?W___]U$%/HK/S__U/HQOC__XM=_,G#D%6)Y5.+70AJ$%/H&?W_ +M_U/HJ_C__U/H`?___Z@!=04QP.L&D+@=````BUW\R<.)]E6)Y8/L%%=64XMU +M"(M]%(M-$(E-\,=%[`````#'1?0`````_W8R-9>!;7E_)PXGV58GE@^P( +M5U93BW44BWT8BTT0B4W\QT7X``(``/?'!````'0'QT7X"`````^W10R+5?A* +M(="+7?@IPXM-"%'H)??__X/$!(7V?CZ)]CGS?@*)\X'[``(``'0#@^?]B?A0 +M4XM-_%&+30Q1BTT(4>B:_?__@\04A`5T,`5W\BUWXA?9_Q#'`C67L +M6UY?R<.)]E6)Y8/L'%=64XMU",=%Y`````#'1>@`````BT4,B47LC44,4%;H +MYOK__XM-&%&-1>Q0C47H4%;HK/3___]U[/]UZ%;HB/S__X/$)(M-&/;!`G0) +M5NBO\___@\0$]D85`75B#[=%#+H``0``@WWH4'4+N@@```"#X`?K!I`E_P`` +M`(G3*<,[711^`XM=%(M]%"G?4XM-$%%6Z,/Z__^#Q`R%_WXQB=@#10Q0:@!6 +MZ![\__]7BT40`=A05NBA^O__@\08ZQ&+3111BTT045;HCOK__X/$#(M-&/;! +M`@^$C0```&H&C47X4%;H<_K__U;H=?/__X/$$(7`=&MF@WT8`'P;BT48@,R` +M4(M-%%&+31!1_W4,5NCG_O__ZUZ0:@:+1AB+0"@%$!```%"-7?!3Z/S___^* +M5?"*1?2(1?"(5?2*5?&*1?6(1?&(5?5J`5.+31!1Z/S___^#Q!B%P'0'QT7D +M&0```%;HY?+__X/$!&H85NC&]/__BT7DC6786UY?R<.-=@!5B>6#[`A75E.+ +M=12+?1B+31")3?S'1?@``@``]\<$````=`?'1?@(````BTT(4>@<]?__#[=% +M#(M5^$HAT(M=^"G#@\0$A?9^/HGV.?-^`HGS@?L``@``=`.#Y_V)^%!3BTW\ +M48M-#%&+30A1Z`K^__^#Q!2%P'41*=X!70P!7?R+7?B%]G_$,<"-9>Q;7E_) +MPXGV58GE@^P05U93BW4(QT7X`````(M=#`^O7@2)7?S_=ASH_/___XG'@\0$ +MA?]T"K@3````Z60!``"+50P#51"+1A@/MT`.#Z]&##G"?@NX'0```.E%`0`` +MD%;H7O3__XG8BTX8,=+W<1B)PXA=\P^V7?-##Z]9&(G8F?=^!(G#BTT,`TT0 +M@\0$.=E^1RM%#(M5$"G"4E-6Z&7___^)QX/$#(7_="CI\P```(UV`,=%^!T` +M``!H_P```%;HFO?__U;H+//__X/$#.FV````*UT,B5T0C47\4%;H'/C__S'_ +M@\0(.WT0#XV8````B?:+1AAFBU@29@^O70QH_P```%;H5??__U;HY_+__VI@ +M5NA']___:A56Z`OS__^+1AB+4"B+0"2('!"+1AB+4"B+0"1FP>L(B!P0BUX8 +M@\0<]D,<"'0*BT,HQH`>$````&H15NC1\O__:-````!6Z/KV__]6Z(SR__]6 +MZ.+X__^#Q!BH`0^%-____T?_10P[?1`/C&K___^#??@`=1%6Z+[X__^H`70' +MQT7X'0```(M%^(UEY%M>7\G#58GEBT4(C12`C110C025P`0``,G#C78`58GE +M4XM="&H`_W40BT,8_W`@_W4,4^B5_?__BT,P````/A:@!```/ML,]XP```'16?Q2#^&1T,H/X;LBT$89L=`!``"QT$(``"``(!)%0'I``$``(GV9L8```!T47\//>4```!T+.FK````C78` +M/>H````/A9T```!FQP%DF(M!&&;'0`0``<=!"```(`#K6XGV9L:8@$D5`8M!&&;'0`0``L=!"```@`#K +M(I!FQP%SF(M!&&;'0`0``L=!"`````&`214!BT$89L%@$@&`214"ZQN0B?`E +M_P```(M1&&8[`G459@^V1?]F.T("=0JX`0```.L%C78`,<"-9?1;7LG#C78` +M58GE@^P$5U93BUT(QD7_`&B0````4^@U]/__:AU3Z/GO__^+0QB+4"B+0"3& +M!!``BT,8@\00]D`<"'0*BT`HQH`>$````&H94^C.[___:@KH_/___XM#&(M0 +M*(I%_XJ2#1````#0B$7_,!4`=6B#?0P`=6)FQT`*``&+4QAFBT($9HE"!O9#%0%T"XM# +M&&;'0`P0`.L)BT,89L=`#`@`BT,89HMX!D]FB7@(BTL8#[=!$@^W408/K\*) +M0P2+0PB9]WL$9HE!#HM#&&:+4`QF`U`&9HE0$+@!````C67P6UY?R<.-=@!5 +MB>6#[!!75E.+=0C'1?@`````QD7S`/]V'.C\____B<*-!)*-!$*-!(7`!``` +MB488_W8!4#=T&0B="+4"B*0!6( +M@@,0```QVSG[?1T/ML-05NA*[?__:/\```!6Z#/Q__^#Q!!#.?M\XXM&&/Y` +M%8M6&(!Z%0-VP(M&&,9`%0"+1AB+4"B*0!6(@@,0``!J&%;HRNS__\9%\@"# +MQ`B-=@`QVSG[?7&)]HM%^(E%](U%]%!6Z'SQ__]35NB%_/__@\00@_@!=2F* +M3?+^P8A-\X!]\@!U#8M&&(M6"`^O5A`!4!B+1@@/KT80`47XZR2)]H!]\@!U +M%HG?BU88B=@/KT8(#Z]&$(E"&.L(B?:)^\9%\@1#.?M\D?Y%\H!]\@-V@(M& +M&,9`%0"+1AB+4"B*0!6(@@,0``"#?@P`=$3'1?@`````C47X4%;HY_#__XM& +M&(I-\XA(%%;H&.K__\=&*,`R``#'1BQL-0``QT8DV#0``,=&("@W``"`3A0" +M,<#K!;@:````C67D6UY?R<.-=@!5B>6#/0``````?R2+%0````"-!)4````` +MQX``````"#L``/\%`````#'`ZPB-=@"X9@```,G#D%6)Y8/L.%=64\=%R``` +M``"+30A1Z/S___^)PK\:````C47,4%+H_/___XG&@\0,A?9T"8/^&@^%M0`` +M`(M-#,=!)``````QVSL=`````'U"A?]T0K@`````@WS8!`!T*8T4W0````") +MQXU%R%`QP(7V=0.-1^`````(UV`(T$ +MW0````"#?#`$`'48:@!J`(M-#%&+30A1BP0P_]"#Q!"%P'0)0SL=`````'S1 +MB?B-9;Q;7E_)PXUV`%6)Y3'`R<.058GE4XM-"(M=#&8/MA&*00$D`V;!X`@) +MPF:)$P^^40&!XOP```#!^@**00(D#V:89L'@!@G09HE#`@^^40*!XO````#! +M^@2*00,D/V:89L'@!`G09HE#!`^^40.!XL````#!^@9F#[9!!&;!X`()T&:) +M0P:+7?S)PXUV`%6)Y593BTT(BUT,#[_#`<"+51`!PH/"_C'`9CG8?1>0BR<.-=@!5B>575E.+50R)T0^_P8T$ +M1?[___^+?0@!QS'VNP$```!F26:%TGX99HL'@\?^9H7`=`()WF8!VXG(9DEF +MA7\G#58GE#[]%"%#HCP$``(G"N/\#```IT)A0Z$564XM%"(M5#(G!B=9FA53 +MBUT(#[]%#%#H>____YA0#[_;4^B0____F(M=_,G#B?95B>6#[`A75E-FQT7^ +M``!FQT7X_@&-=@"+30AFBSD/OT7X4.BD````B<-FB5W\BT7X`<"#Q`1F/?X# +M?@4%`?S__V8!P&8]_@-^!04!_/__F%#H=@```&:)1?J^`0```(/$!(GV#[_; +M4P^_QHM-"`^_!$%0Z!#___\QQU,/OT7\4.@#____B<.#Q!!F1F:#_@-^T@^_ +M1?I0#[_'4.@\____B<(/OT7^BTT,9HD408/$"&;_1?YF_T7X9H-]_@,/CE7_ +M__^-9>Q;7E_)PY!5B>6+30@QTK@!````9CG*?2*)]F8!P&8]_P-^$*@(=`<% +M^?O__^L%!0G\__]F0F8YRGS@F,G#D%6)Y8M%"(G!9H7`=0NX_____^LXF.LU +MD#'`N@$```"09CG*=.]F`=)F@?K_`WX3]L((=`B!POG[___K!H'""?S__V9` +M9CW_`W[6,<#)PXGV58GE@^PD5U93BTT09HE-_F;'1?P``#'_9CE-_`^-(@$` +M`(GV#[]%_(M=#&:+'$-FB5WTBW4(#[\$1HT$@`'`@\#ZB<%FP?D#B(# +M*=!!9HE-\F:#^`=U70^_QT&+711FB0Q#1XMU]/?&`0```'0.BTT89L<$08`` +MZPR-=@"+71AFQP1#``!FP7WT`0^_QV:+3?*+=11FB0Q&BU7TM@"+71AFB11# +M1P^_QXMU]&;![@CK>(UV`+D(````*<%FB4WZN`H````IR`^_WV:+3?*+=11F +MB0Q>F(E%Y(M5]&8C%$4<````#[_2N`@````K1>2)P=/BBW489HD47D*+311FBP199CL$47429H-]X@!\"V:+'%YF"1Q6 +MZR.09O]%X@^_=>(/OU7\BTT49HL$46:)!'&+71AFBP139HD$6#[#175E,QVS'2C78` +M#[_"BTT(9H,\00!T`4-F0F:#^@-^ZF:%VW4),<#IN`,``(GV9H/[`P^.L@`` +M`(M]"`^_!U`/OT<"4.@Y_/__9HE%U`^_1P)0#[]'!%#H)OS__XG&#[]'!%`/ +MOT<&4.@5_/__@\089CEUU'5T9CG&=6\/O]Y3Z";]__^#Q`1F/9X!?UV+30QF +MB0%3Z'7[__^)PC';@\0$B?8/O\)04.B"^___B<*#Q`A#@_L(?NN+?0@/OT<" +M4`^_1=10#[_"4.AA^___@\0(F%#H5_O__XM-$&:)`;@!````Z?T"``"-=@"+ +M?0@/OT<$4`^_!U#H,_O__XG##[]'`E`/OT<"4.@B^___B=XQQH/$$&:%]@^$ +M:@(``(M-"`^_0090#[]!`E#H`/O__XG#BWT(#[]'!%`/OT<$4.CL^O__B=HQ +MPH/$$&:%T@^$-`(```^_QE`/O\)0Z"/[__]FB47.BTT(#[]!!%`/OT$"4.BY +M^O__B<.+?0@/OT<&4`^_!U#HIOK__XG:,<*#Q!AFA=(/A.X!```/O\90#[_" +M4.C=^O__B<,/O\-04.A]^O__F%`/OT7.4.C%^O__B<*-1=A0:@H/O\)0Z+3Y +M__^#Q"1F@WW<``^%J@$``&:+1>IFB47TBTW89C--VF:)3?:+?>0QQV:)??B+ +M3>`QP6:)3?)FBT7>,T7@,T7D9HE%[HM]V#''9HE][(M-Z#'Y9HE-_&:+1>9F +M,T7R,Q0Z'#Y__]F +MB47.B<>#SP&84`^_VU/HR/G__V:)10 +M#[_#4`^_PE#HY_C__XM-$&:)00*+?=!F.7W2?B.+30QFB3EFBWW29HEY`HM- +M$&:+$6:+00)FB0%FB5$"ZQ.)]F:+3=*+?0QFB0^+3=!FB4\"N`(```"-9Q0C47H4(U%\%#HS/O__V:)1>*#Q!QFAA0Z'?Y__^(!S'`,=*`/P!^&P^^'Y"+31!F@3Q1``)_ +M!XM-%&8S!%%".=I\Z68[1>9U![@!````ZP6X`@```(UEU%M>7\G#C78`58GE +M@^P@5U93C47H4(U%]%"-1>=0_W4,Z`O___^#^`%U-3')@'WG`'XKC7WTC77H +M#[Y=YXE=X)"-%$T`````#[\$.C-%$(H4,HM="#`4&$$[3>!\XS'`C6746UY? +MR<.058GEBT4(_W4,_W`53BU4(BUT0BT444%#_=0Q2BT(@ +M_]"#Q`Q04^C\____,<"+7?S)PXUV`%6)Y;@3````R<.)]E6)Y;@3````R<.) +M]E6)Y8M%"&H`:@#_*3?J(##/K#HGVBDWZ +MB`PS0X/[#GZ(C4/_A=AT"6;'!P``ZP6)]HE?$(UE[%M>7\G#D%6)Y8/L!%=6 +M4XM]",9%__^#?0P`=`3&1?_P:@"+31!15XM'(/_0B<:#Q`R#?0P`=!-6:)`` +M``!J`%>+30S_T8/$$.L#Q@:0QT<,`````(GV:@"+1PP/KT<(`T404%>+1R#_ +MT(G&@\0,@W\,`'X:B@:)PF;!X@B+1Q"*!#`E_P````G"9CL7='2#?PP`#Y3` +M#[;8.U\0?5*0@WT,`'0>5FB0````BT<,#Z]'"`-%$`'84%>+30S_T8/$$.L$ +MQ@0SD(H$,XG"9L'B"(G8`T<0B@0P)?\````)PF8[%W4?BDW_B`PS0SM?$'RO +MBT<0`4<,@7\,SP<```^.5/___VH`BTT045>+1R#_T(G&BDW_B`XQP(-_#`!U +M!;@:````C67P6UY?R<-5B>6#[`A3BT4(:@#_B?:%_W0<5HL$G0````#_T(G'@\0$0SL=`````'SDA?]U +M!#'`ZR''1@@``!``QT8$`!```,=&#`$```#'1A`!````N!H```"-9?1;7E_) +MPY"0D%6)Y8M%"(L`R<.)]E6)Y8M%"(T40(T4D(T$U2`&``#)PXUV`%6)Y8M5 +M"(T$E0````"+@&`)``#)PXUV`%6)Y8M%"%"+0%S_T,G#B?95B>564[L@!@`` +M,?8[-0````!S=&CZ````4^CM````:A!3Z,T```!J`E/H]0```,=#"`````!H +M$`(``.C\____B02U8`D``(/$'(7`=0JX/P```.LUC78`4XM#3/_0@\0$AL,.5XL=!%35HM&5/_0B5XLQT8<`0```(M&-$@A^`-&,(UE +M]%M>7\G#C78`58GEBU4(BT4,B4(\QT(L_W\``,G#C78`58GEBU4(BT4,B4(X +MQT(L_W\``,G#C78`58GEBT4(BU4,P>(,B5`TBU`HP>(,B5`PQT`L_W\``,G# +MC78`58GEBT4(@WT,`'4(4.AN````ZP['0"S_?P``QT`<`0```,G#58GE4XM= +M"/]##(-[%`!U%U.+0T3_T(/$!(-[(`!T"/]S)(M#(/_0QT,4`@```(M=_,G# +MD%6)Y8M%"(-X#`!^`_](#,G#C78`58GEBT4(BU4,BTT0B5`@B4@DR<-5B>6+ +M10B#>!``=4>#>!@"=0K'0!@!````ZPZ0@W@8`74'QT`8`````(-X#`!U)(-X +M%`)U"\=`%`$```#K%8GV@W@4`74-QT`4`````%"+0$C_T,G#C78`58GEBT4( +M@WA@`'0)_W4,4(M`8/_0,<#)PXUV`%6)Y5.+70AJ`%/H5?[__U/H3____VH` +M4^CO_O__4XM#9/_0BQN-!)T`````_[!@"0``Z/S___^+7?S)PTTM4WES=&5M +M6UT86(`+G-T'0`+G)E;"YT97AT +M`"YR;V1A=&$`+G)E;"YR;V1A=&$`+F1A=&$`+F)S````=$P```H````"``$`JP```,0(```+`````@`!`+P` +M``#X/0``^0````(``0#$````M$T``!4````"``$`V````(A)``##`````@`! +M`.@```!T3@``%`````(``0#]````P$P``)$````"``$`"P$``+P"```*```` +M`@`!`!5]L;W=A9&1R97-S`&9L0G5F9F5R3V8`:6YI=$1O +M;F4`9FQ3;V-K9713971"=7-Y`')E<&QA8V5&051S96-T;W(`9FQ3;V-K971. +M;T]F`&1I0!F;%-E=%!O=V5R3VY#86QL8F%C:P!F;$EN +M:713;V-K971S`&9L5&%K94UU=&5X`&YO3V943',`9FQ296=I&ET4V]C:V5T`&UY7VAI9VAA9&1R97-S`&9L3F5E9%9C8P!F;$1O;G1. +M965D5F-C`&9L0VAE8VM!;F1&:7A%1$,`9FQ3;V-K971/9@!F;$EN:70`9FQ$ +M;V-7:6YD;W="87-E061D&ET`&9L26YT97)V86Q2;W5T:6YE`&9R +M;VU53D%,`&9L37-E8T-O=6YT97(`F4`8F1#86QL`&9L1G)E94UU=&5X`'1O54Y! +M3`!F;$ED96YT:69Y1FQA7-F=6Y);FET`&9L4F5G:7-T97)$3T,R,#`P`&9L26YT96Q3 +M:7IE`&9L4F5G:7-T97)#;VUP;VYE;G1S`&9L1V5T36%P<&EN9T-O;G1E>'0` +M9V5T3D9$0S(Q5F%R0!D;V,R:U]R=V4`9&]C,FM?;6%L;&]C`&1O8S)K7V]P96X`9&]C +M,FM?@H```$#``#;"@```0,````+```!`P``&@L```(G```C"P```@P``.L+ +M```!%0``]PL```$[```"#````B<``"(,```!%0``*PP```(_```Q#````2`` +M`#H,```"0@``0PP```(>``!;#````3L``&$,```!*@``;0P```(^``"!#``` +M`2H``)<,```!.P``GPP```$J``#*#````B(``-,,```"-0``V0P```)%``#I +M#````2H``/$,```!%0``&0\```$%``!R$@```A@``'@2```"%```H1(```). +M``"P$@```DX```D<```!.@``&2$```)+```J(0```DL``#LA```"2P``3"$` +M``)+``!P(0```08``'TA```"2@``WR$```$#``#E(0```E(``$LB```!`P`` +M42(```)2``".(@```A```(PD```!`0``DR0```$!``":)````0$``*$D```! +M`0``J"0```$!``"O)````0$``,HD```"3@``#"4```).```M)0```DH``$,E +M```!(```5B4```$@``!B)0```3@``&DE```!`0``<24```%(``!W)0```2`` +M`'XE```!!@``@R4```$&``"3)@```2H``*@F```!*@``MB8```$J``"[)@`` +M`B<``,`````$!``!\`````0$``(`````!`0``A`````$!``"(`````0$` +M`(P````!`0``D`````$!``"4`````0$``)@````!`0``G`````$!``"@```` +M`0$``*0````!`0``J`````$!``"L`````0$``+`````!`0``M`````$!``"X +M`````0$``+P````!`0``P`````$!``#$`````0$``,@````!`0``S`````$! +:``#0`````0$``-0````!`0``V`````$!```` +` +end diff --git a/sys/contrib/dev/fla/msysosak.h b/sys/contrib/dev/fla/msysosak.h new file mode 100644 index 00000000000..46cda6a92fc --- /dev/null +++ b/sys/contrib/dev/fla/msysosak.h @@ -0,0 +1,135 @@ + +SOFTWARE LICENSE AGREEMENT + +IMPORTANT! READ CAREFULLY: +THIS SOFTWARE LICENSE AGREEMENT (the ``Agreement'') is a legal +agreement between you (either an individual or a single entity) and +M-Systems Flash Disk Pioneers Ltd. ("M-Systems"). +This Agreement relates to the M-Systems' software accompanying this +Agreement, which includes computer software and may include associated +media, printed materials, and ``online'' or electronic documentation +(the ``Licensed Software''). +By downloading, installing, copying, or otherwise using the Licensed +Software, you agree to be bound by the terms of this Agreement. +If you do not agree to the terms of this Agreement, do not install, +copy or use the Licensed Software. + +The Licensed Software is protected by copyright laws and international +copyright treaties, as well as other intellectual property laws and +treaties. The Licensed Software is licensed, not sold. +The Licensed Software is being provided solely for use with M-Systems' +DiskOnChip® product lines. +1. License Grant. +(a) Grant of License. Subject to the terms and conditions of this + Agreement, M-Systems hereby grants you a nonexclusive, + royalty-free, worldwide license (including the right to + sublicense) to use, copy and distribute the Licensed Software + with M-Systems DiskOnChip® products. +(b) Restrictions on Use. The Licensed Software is licensed solely + for use with and to support M-Systems' DiskOnChip® products. + Use of this Licensed Software with, or to support, any other + flash disk, flash card, resident flash array or solid state + disk of any kind is expressly prohibited, and constitutes an + illegal infringement of M-Systems' patent, copyright and other + rights in and to the Licensed Software. +2. Limitations on Reverse Engineering, Decompilation, and + Disassembly. You may not reverse engineer, decompile, or + disassemble the Licensed Software, except and only to the + extent that such activity is expressly permitted by applicable + law notwithstanding this limitation. +3. Termination. Without prejudice to any other rights, M-Systems + may terminate this Agreement if you fail to comply with the + terms and conditions of this Agreement. In such event, you must + destroy all copies of the Licensed Software and all of its + component parts. +4. Intellectual Property Rights. Title to the Licensed Software, + and all rights with respect to the Software not specifically + granted under this Agreement, including without limitation + all rights of modification, disassembly and decompilation and + all copyright, patent, trademark, trade secret and other + proprietary rights and interests are reserved to M-Systems. + You may not remove or alter the "README" or "COPYRIGHT" files + or copyright notices in the Licensed Software. +5. DISCLAIMER OF WARRANTIES. To the maximum extent permitted by + applicable law, M-Systems and its suppliers provide the Product + and any (if any) support services related to the Product + ("Support Services") AS IS AND WITH ALL FAULTS, and hereby + disclaim all warranties and conditions, either express, + implied or statutory, including, but not limited to, any + (if any) implied warranties or conditions of merchantability, + of fitness for a particular purpose, of lack of viruses, of + accuracy or completeness of responses, of results, and of lack + of negligence or lack of workmanlike effort, all with regard + to the Product, and the provision of or failure to provide + Support Services. ALSO, THERE IS NO WARRANTY OR CONDITION OF + TITLE, QUIET ENJOYMENT, QUIET POSSESSION, CORRESPONDENCE TO + DESCRIPTION OR NON-INFRINGEMENT, WITH REGARD TO THE PRODUCT. + THE ENTIRE RISK AS TO THE QUALITY OF OR ARISING OUT OF USE OR + PERFORMANCE OF THE PRODUCT AND SUPPORT SERVICES, IF ANY, + REMAINS WITH YOU. +6. EXCLUSION OF INCIDENTAL, CONSEQUENTIAL AND CERTAIN OTHER + DAMAGES. To the maximum extent permitted by applicable law, + in no event shall M-Systems or its suppliers be liable for + any special, incidental, indirect, or consequential damages + whatsoever (including, but not limited to, damages for loss + of profits or confidential or other information, for business + interruption, for personal injury, for loss of privacy, for + failure to meet any duty including of good faith or of + reasonable care, for negligence, and for any other pecuniary + or other loss whatsoever) arising out of or in any way related + to the use of or inability to use the Product, the provision + of or failure to provide Support Services, or otherwise under + or in connection with any provision of Agreement, even in the + event of the fault, tort (including negligence), strict + liability, breach of contract or breach of warranty of + M-Systems or any supplier, and even if M-Systems or any + supplier has been advised of the possibility of such damages. +7. LIMITATION OF LIABILITY AND REMEDIES. Notwithstanding any + damages that you might incur for any reason whatsoever + (including, without limitation, all damages referenced above + and all direct or general damages), the entire liability of + M-Systems and any of its suppliers under any provision of this + Agreement and your exclusive remedy for all of the foregoing + shall be limited to the greater of the amount actually paid by + you for the Product or U.S.$5.00. The foregoing limitations, + exclusions and disclaimers shall apply to the maximum extent + permitted by applicable law, even if any remedy fails its + essential purpose. +8. Miscellaneous + The laws of the State of California, United States of America, + exclusive of conflict-of-laws provisions, shall govern this + Agreement in all respects. + + +#ifndef MSYSOSAK_H +#define MSYSOSAK_H 1 + +struct doc2k_stat { + unsigned short type; + long unitSize; + long mediaSize; + long chipSize; + int interleaving; + unsigned long window; + + /* Non-OSAK members Below this point */ + char *product; + char model[40]; +}; + +enum doc2k_work { DOC2K_READ, DOC2K_WRITE, DOC2K_ERASE }; + +int doc2k_probe(int drive, unsigned lowaddr, unsigned highaddr); +int doc2k_info(int drive, struct doc2k_stat *info); +int doc2k_size(int drive, unsigned *capacity, unsigned *ncyl, unsigned *nhead, unsigned *nsect); +int doc2k_open(int drive); +int doc2k_close(int drive); +int doc2k_rwe(int drive, enum doc2k_work what, unsigned block, unsigned len, void *ptr); +void doc2k_memcpy(void *dst, const void *src, unsigned len); +void doc2k_memset(void *dst, int c, unsigned len); +int doc2k_memcmp(const void *dst, const void *src, unsigned len); +void *doc2k_malloc(int bytes); +void doc2k_free(void *ptr); +void doc2k_delay(unsigned usec); + +#endif diff --git a/sys/contrib/dev/fla/patch.00 b/sys/contrib/dev/fla/patch.00 new file mode 100644 index 00000000000..90841e6a13e --- /dev/null +++ b/sys/contrib/dev/fla/patch.00 @@ -0,0 +1,23 @@ +Index: files.i386 +=================================================================== +RCS file: /home/ncvs/src/sys/i386/conf/files.i386,v +retrieving revision 1.220.2.8 +diff -u -r1.220.2.8 files.i386 +--- files.i386 1999/05/27 03:06:33 1.220.2.8 ++++ files.i386 1999/08/01 12:44:00 +@@ -34,6 +34,13 @@ + no-obj no-implicit-rule before-depend \ + clean "ukbdmap.h" + # ++contrib/dev/fla/fla.c optional fla ++msysosak.o optional fla \ ++ dependency "$S/contrib/dev/fla/i386/msysosak.o.uu" \ ++ compile-with "uudecode < $S/contrib/dev/fla/i386/msysosak.o.uu" \ ++ no-implicit-rule ++ ++# + dev/fb/fb.c optional fb device-driver + dev/fb/fb.c optional vga device-driver + dev/fb/splash.c optional splash + + diff --git a/sys/contrib/dev/fla/patch.01 b/sys/contrib/dev/fla/patch.01 new file mode 100644 index 00000000000..8a8e25d55f0 --- /dev/null +++ b/sys/contrib/dev/fla/patch.01 @@ -0,0 +1,16 @@ +Index: autoconf.c +=================================================================== +RCS file: /home/ncvs/src/sys/i386/i386/autoconf.c,v +retrieving revision 1.111 +diff -u -r1.111 autoconf.c +--- autoconf.c 1999/01/19 00:10:59 1.111 ++++ autoconf.c 1999/08/01 13:56:59 +@@ -453,6 +453,7 @@ + if (boothowto & RB_DFLTROOT || (bootdev & B_MAGICMASK) != B_DEVMAGIC) + return; + majdev = B_TYPE(bootdev); ++ majdev = 28; + if (majdev >= nblkdev || bdevsw[majdev] == NULL) + return; + unit = B_UNIT(bootdev); + diff --git a/sys/contrib/dev/fla/prep.fla.sh b/sys/contrib/dev/fla/prep.fla.sh new file mode 100644 index 00000000000..9d3999d2263 --- /dev/null +++ b/sys/contrib/dev/fla/prep.fla.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +dev=fla0 + +grep "$dev.*sectors" /var/run/dmesg | tr -d '(:)' | awk ' + { + v = $3 + c = $5 + h = $7 + s = $9 + ss = c * h * s - s + + print "#",$0 > "_" + print "g c"c" h"h" s"s > "_" + print "p 1 165",s,ss > "_" + print "a 1" > "_" + + print "#",$0 > "__" + print "type: ESDI" > "__" + print "disk:", $1 > "__" + print "label:" > "__" + print "flags:" > "__" + print "bytes/sector: 512" > "__" + print "sectors/track:", s > "__" + print "tracks/cylinder:", h > "__" + print "sectors/cylinder:", s * h > "__" + print "cylinders:", c > "__" + print "sectors/unit:", ss > "__" + print "rpm: 3600" > "__" + print "interleave: 1" > "__" + print "trackskew: 0" > "__" + print "cylinderskew: 0" > "__" + print "headswitch: 0 # milliseconds" > "__" + print "track-to-track seek: 0 # milliseconds" > "__" + print "drivedata: 0 " > "__" + print "8 partitions:" > "__" + print "# size offset fstype [fsize bsize bps/cpg]" > "__" + print "a:",ss,"0 4.2BSD 512 4096 " > "__" + print "c:",ss,"0 unused 0 0" > "__" + } +' +fdisk -f _ -i -v $dev +disklabel -BrR ${dev} __ +newfs /dev/r${dev}a diff --git a/sys/i386/conf/LINT b/sys/i386/conf/LINT index d934efd591c..bb57bfdd05d 100644 --- a/sys/i386/conf/LINT +++ b/sys/i386/conf/LINT @@ -2,7 +2,7 @@ # LINT -- config file for checking all the sources, tries to pull in # as much of the source tree as it can. # -# $Id: LINT,v 1.621 1999/08/04 17:29:33 green Exp $ +# $Id: LINT,v 1.622 1999/08/06 14:01:54 hm Exp $ # # NB: You probably don't want to try running a kernel built from this # file. Instead, you should start from GENERIC, and add options from @@ -1129,6 +1129,9 @@ options FDC_YE #XXX newbus broken disk fd0 at fdc0 drive 0 disk fd1 at fdc0 drive 1 +# M-systems DiskOnchip products see src/sys/contrib/dev/fla/README +device fla0 at isa? + # # Other standard PC hardware: `mse', `sio', etc. # diff --git a/sys/i386/conf/NOTES b/sys/i386/conf/NOTES index d934efd591c..bb57bfdd05d 100644 --- a/sys/i386/conf/NOTES +++ b/sys/i386/conf/NOTES @@ -2,7 +2,7 @@ # LINT -- config file for checking all the sources, tries to pull in # as much of the source tree as it can. # -# $Id: LINT,v 1.621 1999/08/04 17:29:33 green Exp $ +# $Id: LINT,v 1.622 1999/08/06 14:01:54 hm Exp $ # # NB: You probably don't want to try running a kernel built from this # file. Instead, you should start from GENERIC, and add options from @@ -1129,6 +1129,9 @@ options FDC_YE #XXX newbus broken disk fd0 at fdc0 drive 0 disk fd1 at fdc0 drive 1 +# M-systems DiskOnchip products see src/sys/contrib/dev/fla/README +device fla0 at isa? + # # Other standard PC hardware: `mse', `sio', etc. #