Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Enumerations | Functions
sym53c500_cs.c File Reference
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/errno.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/string.h>
#include <linux/ioport.h>
#include <linux/blkdev.h>
#include <linux/spinlock.h>
#include <linux/bitops.h>
#include <asm/io.h>
#include <asm/dma.h>
#include <asm/irq.h>
#include <scsi/scsi_ioctl.h>
#include <scsi/scsi_cmnd.h>
#include <scsi/scsi_device.h>
#include <scsi/scsi.h>
#include <scsi/scsi_host.h>
#include <pcmcia/cistpl.h>
#include <pcmcia/ds.h>
#include <pcmcia/ciscode.h>

Go to the source code of this file.

Data Structures

struct  scsi_info_t
 
struct  sym53c500_data
 

Macros

#define SYM53C500_DEBUG   0
 
#define VERBOSE_SYM53C500_DEBUG   0
 
#define USE_FAST_PIO   1
 
#define SYNC_MODE   0 /* Synchronous transfer mode */
 
#define C1_IMG   0x07 /* ID=7 */
 
#define C2_IMG   0x48 /* FE SCSI2 */
 
#define C3_IMG   0x20 /* CDB */
 
#define C4_IMG   0x04 /* ANE */
 
#define C5_IMG   0xa4 /* ? changed from b6= AA PI SIE POL */
 
#define C7_IMG   0x80 /* added for SYM53C500 t. corner */
 
#define TC_LSB   0x00 /* transfer counter lsb */
 
#define TC_MSB   0x01 /* transfer counter msb */
 
#define SCSI_FIFO   0x02 /* scsi fifo register */
 
#define CMD_REG   0x03 /* command register */
 
#define STAT_REG   0x04 /* status register */
 
#define DEST_ID   0x04 /* selection/reselection bus id */
 
#define INT_REG   0x05 /* interrupt status register */
 
#define SRTIMOUT   0x05 /* select/reselect timeout reg */
 
#define SEQ_REG   0x06 /* sequence step register */
 
#define SYNCPRD   0x06 /* synchronous transfer period */
 
#define FIFO_FLAGS   0x07 /* indicates # of bytes in fifo */
 
#define SYNCOFF   0x07 /* synchronous offset register */
 
#define CONFIG1   0x08 /* configuration register */
 
#define CLKCONV   0x09 /* clock conversion register */
 
#define CONFIG2   0x0B /* configuration 2 register */
 
#define CONFIG3   0x0C /* configuration 3 register */
 
#define CONFIG4   0x0D /* configuration 4 register */
 
#define TC_HIGH   0x0E /* transfer counter high */
 
#define PIO_FIFO   0x04 /* PIO FIFO registers (r/w) */
 
#define PIO_STATUS   0x08 /* PIO status (r/w) */
 
#define PIO_FLAG   0x0B /* PIO flag interrupt enable (r/w) */
 
#define CONFIG5   0x09 /* configuration 5 register */
 
#define CONFIG7   0x0d
 
#define REG0(x)   (outb(C4_IMG, (x) + CONFIG4))
 
#define REG1(x)   outb(C7_IMG, (x) + CONFIG7); outb(C5_IMG, (x) + CONFIG5)
 
#define DEB(x)
 
#define VDEB(x)
 
#define LOAD_DMA_COUNT(x, count)
 
#define DMA_OP   0x80
 
#define SCSI_NOP   0x00
 
#define FLUSH_FIFO   0x01
 
#define CHIP_RESET   0x02
 
#define SCSI_RESET   0x03
 
#define RESELECT   0x40
 
#define SELECT_NO_ATN   0x41
 
#define SELECT_ATN   0x42
 
#define SELECT_ATN_STOP   0x43
 
#define ENABLE_SEL   0x44
 
#define DISABLE_SEL   0x45
 
#define SELECT_ATN3   0x46
 
#define RESELECT3   0x47
 
#define TRANSFER_INFO   0x10
 
#define INIT_CMD_COMPLETE   0x11
 
#define MSG_ACCEPT   0x12
 
#define TRANSFER_PAD   0x18
 
#define SET_ATN   0x1a
 
#define RESET_ATN   0x1b
 
#define SEND_MSG   0x20
 
#define SEND_STATUS   0x21
 
#define SEND_DATA   0x22
 
#define DISCONN_SEQ   0x23
 
#define TERMINATE_SEQ   0x24
 
#define TARG_CMD_COMPLETE   0x25
 
#define DISCONN   0x27
 
#define RECV_MSG   0x28
 
#define RECV_CMD   0x29
 
#define RECV_DATA   0x2a
 
#define RECV_CMD_SEQ   0x2b
 
#define TARGET_ABORT_DMA   0x04
 

Enumerations

enum  Phase {
  idle, data_out, data_in, command_ph,
  status_ph, message_out, message_in, idle,
  data_out, data_in, command_ph, status_ph,
  message_out, message_in
}
 

Functions

 MODULE_AUTHOR ("Bob Tracy <[email protected]>")
 
 MODULE_DESCRIPTION ("SYM53C500 PCMCIA SCSI driver")
 
 MODULE_LICENSE ("GPL")
 
 MODULE_DEVICE_TABLE (pcmcia, sym53c500_ids)
 
 module_init (init_sym53c500_cs)
 
 module_exit (exit_sym53c500_cs)
 

Macro Definition Documentation

#define C1_IMG   0x07 /* ID=7 */

Definition at line 84 of file sym53c500_cs.c.

#define C2_IMG   0x48 /* FE SCSI2 */

Definition at line 85 of file sym53c500_cs.c.

#define C3_IMG   0x20 /* CDB */

Definition at line 86 of file sym53c500_cs.c.

#define C4_IMG   0x04 /* ANE */

Definition at line 87 of file sym53c500_cs.c.

#define C5_IMG   0xa4 /* ? changed from b6= AA PI SIE POL */

Definition at line 88 of file sym53c500_cs.c.

#define C7_IMG   0x80 /* added for SYM53C500 t. corner */

Definition at line 89 of file sym53c500_cs.c.

#define CHIP_RESET   0x02

Definition at line 159 of file sym53c500_cs.c.

#define CLKCONV   0x09 /* clock conversion register */

Definition at line 107 of file sym53c500_cs.c.

#define CMD_REG   0x03 /* command register */

Definition at line 97 of file sym53c500_cs.c.

#define CONFIG1   0x08 /* configuration register */

Definition at line 106 of file sym53c500_cs.c.

#define CONFIG2   0x0B /* configuration 2 register */

Definition at line 109 of file sym53c500_cs.c.

#define CONFIG3   0x0C /* configuration 3 register */

Definition at line 110 of file sym53c500_cs.c.

#define CONFIG4   0x0D /* configuration 4 register */

Definition at line 111 of file sym53c500_cs.c.

#define CONFIG5   0x09 /* configuration 5 register */

Definition at line 127 of file sym53c500_cs.c.

#define CONFIG7   0x0d

Definition at line 130 of file sym53c500_cs.c.

#define DEB (   x)

Definition at line 140 of file sym53c500_cs.c.

#define DEST_ID   0x04 /* selection/reselection bus id */

Definition at line 99 of file sym53c500_cs.c.

#define DISABLE_SEL   0x45

Definition at line 166 of file sym53c500_cs.c.

#define DISCONN   0x27

Definition at line 181 of file sym53c500_cs.c.

#define DISCONN_SEQ   0x23

Definition at line 178 of file sym53c500_cs.c.

#define DMA_OP   0x80

Definition at line 155 of file sym53c500_cs.c.

#define ENABLE_SEL   0x44

Definition at line 165 of file sym53c500_cs.c.

#define FIFO_FLAGS   0x07 /* indicates # of bytes in fifo */

Definition at line 104 of file sym53c500_cs.c.

#define FLUSH_FIFO   0x01

Definition at line 158 of file sym53c500_cs.c.

#define INIT_CMD_COMPLETE   0x11

Definition at line 170 of file sym53c500_cs.c.

#define INT_REG   0x05 /* interrupt status register */

Definition at line 100 of file sym53c500_cs.c.

#define LOAD_DMA_COUNT (   x,
  count 
)
Value:
outb(count & 0xff, (x) + TC_LSB); \
outb((count >> 8) & 0xff, (x) + TC_MSB); \
outb((count >> 16) & 0xff, (x) + TC_HIGH);

Definition at line 149 of file sym53c500_cs.c.

#define MSG_ACCEPT   0x12

Definition at line 171 of file sym53c500_cs.c.

#define PIO_FIFO   0x04 /* PIO FIFO registers (r/w) */

Definition at line 119 of file sym53c500_cs.c.

#define PIO_FLAG   0x0B /* PIO flag interrupt enable (r/w) */

Definition at line 126 of file sym53c500_cs.c.

#define PIO_STATUS   0x08 /* PIO status (r/w) */

Definition at line 123 of file sym53c500_cs.c.

#define RECV_CMD   0x29

Definition at line 183 of file sym53c500_cs.c.

#define RECV_CMD_SEQ   0x2b

Definition at line 185 of file sym53c500_cs.c.

#define RECV_DATA   0x2a

Definition at line 184 of file sym53c500_cs.c.

#define RECV_MSG   0x28

Definition at line 182 of file sym53c500_cs.c.

#define REG0 (   x)    (outb(C4_IMG, (x) + CONFIG4))

Definition at line 133 of file sym53c500_cs.c.

#define REG1 (   x)    outb(C7_IMG, (x) + CONFIG7); outb(C5_IMG, (x) + CONFIG5)

Definition at line 135 of file sym53c500_cs.c.

#define RESELECT   0x40

Definition at line 161 of file sym53c500_cs.c.

#define RESELECT3   0x47

Definition at line 168 of file sym53c500_cs.c.

#define RESET_ATN   0x1b

Definition at line 174 of file sym53c500_cs.c.

#define SCSI_FIFO   0x02 /* scsi fifo register */

Definition at line 96 of file sym53c500_cs.c.

#define SCSI_NOP   0x00

Definition at line 157 of file sym53c500_cs.c.

#define SCSI_RESET   0x03

Definition at line 160 of file sym53c500_cs.c.

#define SELECT_ATN   0x42

Definition at line 163 of file sym53c500_cs.c.

#define SELECT_ATN3   0x46

Definition at line 167 of file sym53c500_cs.c.

#define SELECT_ATN_STOP   0x43

Definition at line 164 of file sym53c500_cs.c.

#define SELECT_NO_ATN   0x41

Definition at line 162 of file sym53c500_cs.c.

#define SEND_DATA   0x22

Definition at line 177 of file sym53c500_cs.c.

#define SEND_MSG   0x20

Definition at line 175 of file sym53c500_cs.c.

#define SEND_STATUS   0x21

Definition at line 176 of file sym53c500_cs.c.

#define SEQ_REG   0x06 /* sequence step register */

Definition at line 102 of file sym53c500_cs.c.

#define SET_ATN   0x1a

Definition at line 173 of file sym53c500_cs.c.

#define SRTIMOUT   0x05 /* select/reselect timeout reg */

Definition at line 101 of file sym53c500_cs.c.

#define STAT_REG   0x04 /* status register */

Definition at line 98 of file sym53c500_cs.c.

#define SYM53C500_DEBUG   0

Definition at line 40 of file sym53c500_cs.c.

#define SYNC_MODE   0 /* Synchronous transfer mode */

Definition at line 81 of file sym53c500_cs.c.

#define SYNCOFF   0x07 /* synchronous offset register */

Definition at line 105 of file sym53c500_cs.c.

#define SYNCPRD   0x06 /* synchronous transfer period */

Definition at line 103 of file sym53c500_cs.c.

#define TARG_CMD_COMPLETE   0x25

Definition at line 180 of file sym53c500_cs.c.

#define TARGET_ABORT_DMA   0x04

Definition at line 186 of file sym53c500_cs.c.

#define TC_HIGH   0x0E /* transfer counter high */

Definition at line 112 of file sym53c500_cs.c.

#define TC_LSB   0x00 /* transfer counter lsb */

Definition at line 94 of file sym53c500_cs.c.

#define TC_MSB   0x01 /* transfer counter msb */

Definition at line 95 of file sym53c500_cs.c.

#define TERMINATE_SEQ   0x24

Definition at line 179 of file sym53c500_cs.c.

#define TRANSFER_INFO   0x10

Definition at line 169 of file sym53c500_cs.c.

#define TRANSFER_PAD   0x18

Definition at line 172 of file sym53c500_cs.c.

#define USE_FAST_PIO   1

Definition at line 47 of file sym53c500_cs.c.

#define VDEB (   x)

Definition at line 146 of file sym53c500_cs.c.

#define VERBOSE_SYM53C500_DEBUG   0

Definition at line 41 of file sym53c500_cs.c.

Enumeration Type Documentation

enum Phase
Enumerator:
idle 
data_out 
data_in 
command_ph 
status_ph 
message_out 
message_in 
idle 
data_out 
data_in 
command_ph 
status_ph 
message_out 
message_in 

Definition at line 204 of file sym53c500_cs.c.

Function Documentation

MODULE_AUTHOR ( "Bob Tracy <[email protected]>"  )
MODULE_DESCRIPTION ( "SYM53C500 PCMCIA SCSI driver )
MODULE_DEVICE_TABLE ( pcmcia  ,
sym53c500_ids   
)
module_exit ( exit_sym53c500_cs  )
module_init ( init_sym53c500_cs  )
MODULE_LICENSE ( "GPL"  )