⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 readme.53c700

📁 linux和2410结合开发 用他可以生成2410所需的zImage文件
💻 53C700
字号:
General Description===================This driver supports the 53c700 and 53c700-66 chips.  It also supportsthe 53c710 but only in 53c700 emulation mode.  It is full featured anddoes sync (-66 and 710 only), disconnects and tag command queueing.Since the 53c700 must be interfaced to a bus, you need to wrapper thecard detector around this driver.  For an example, see theNCR_D700.[ch] or lasi700.[ch] files.The comments in the 53c700.[ch] files tell you which parts you need tofill in to get the driver working.Compile Time Flags==================The driver may be either io mapped or memory mapped.  This isselectable by configuration flags:CONFIG_53C700_MEM_MAPPEDdefine if the driver is memory mapped.CONFIG_53C700_IO_MAPPEDdefine if the driver is to be io mapped.One or other of the above flags *must* be defined.Other flags are:CONFIG_53C700_LE_ON_BEdefine if the chipset must be supported in little endian mode on a bigendian architecture (used for the 700 on parisc).CONFIG_53C700_USE_CONSISTENTallocate consistent memory (should only be used if your architecturehas a mixture of consistent and inconsistent memory).  Fullyconsistent or fully inconsistent architectures should not define this.Using the Chip Core Driver==========================In order to plumb the 53c700 chip core driver into a working SCSIdriver, you need to know three things about the way the chip is wiredinto your system (or expansion card).1. The clock speed of the SCSI core2. The interrupt line used3. The memory (or io space) location of the 53c700 registers.Optionally, you may also need to know other things, like how to readthe SCSI Id from the card bios or whether the chip is wired fordifferential operation.Usually you can find items 2. and 3. from general spec. documents oreven by examining the configuration of a working driver under anotheroperating system.The clock speed is usually buried deep in the technical literature.It is required because it is used to set up both the synchronous andasynchronous dividers for the chip.  As a general rule of thumb,manufacturers set the clock speed at the lowest possible settingconsistent with the best operation of the chip (although some chooseto drive it off the CPU or bus clock rather than going to the expenseof an extra clock chip).  The best operation clock speeds are:53c700 - 25MHz53c700-66 - 50MHz53c710 - 40MhzWriting Your Glue Driver========================This will be a standard SCSI driver (I don't know of a good documentdescribing this, just copy from some other driver) with at least adetect and release entry.In the detect routine, you need to allocate a structNCR_700_Host_Parameters sized memory area and clear it (so that thedefault values for everything are 0).  Then you must fill in theparameters that matter to you (see below), plumb the NCR_700_intrroutine into the interrupt line and call NCR_700_detect with the hosttemplate and the new parameters as arguments.  You should also callthe relevant request_*_region function and place the register baseaddress into the `base' pointer of the host parameters.In the release routine, you must free the NCR_700_Host_Parameters thatyou allocated, call the corresponding release_*_region and free theinterrupt.Handling Interrupts-------------------In general, you should just plumb the card's interrupt line in with request_irq(irq, NCR_700_intr, <irq flags>, <driver name>, host);where host is the return from the relevant NCR_700_detect() routine.You may also write your own interrupt handling routine which callsNCR_700_intr() directly.  However, you should only really do this ifyou have a card with more than one chip on it and you can read aregister to tell which set of chips wants the interrupt.Settable NCR_700_Host_Parameters--------------------------------The following are a list of the user settable parameters:clock: (MANDATORY)Set to the clock speed of the chip in MHz.base: (MANDATORY)set to the base of the io or mem region for the register set. On 64bit architectures this is only 32 bits wide, so the registers must bemapped into the low 32 bits of memory.pci_dev: (OPTIONAL)set to the PCI board device.  Leave NULL for a non-pci board.  This isused for the pci_alloc_consistent() and pci_map_*() functions.dmode_extra: (OPTIONAL, 53c710 only)extra flags for the DMODE register.  These are used to control busoutput pins on the 710.  The settings should be a combination ofDMODE_FC1 and DMODE_FC2.  What these pins actually do is entirely upto the board designer.  Usually it is safe to ignore this setting.differential: (OPTIONAL)set to 1 if the chip drives a differential bus.force_le_on_be: (OPTIONAL, only if CONFIG_53C700_LE_ON_BE is set)set to 1 if the chip is operating in little endian mode on a bigendian architecture.chip710: (OPTIONAL)set to 1 if the chip is a 53c710.burst_disable: (OPTIONAL, 53c710 only)disable 8 byte bursting for DMA transfers.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -