Blame view

drivers/scsi/qla4xxx/ql4_inline.h 2.15 KB
afaf5a2d3   David Somayajulu   [SCSI] Initial Co...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
  /*
   * QLogic iSCSI HBA Driver
   * Copyright (c)  2003-2006 QLogic Corporation
   *
   * See LICENSE.qla4xxx for copyright and licensing details.
   */
  
  /*
   *
   * qla4xxx_lookup_ddb_by_fw_index
   *	This routine locates a device handle given the firmware device
   *	database index.	 If device doesn't exist, returns NULL.
   *
   * Input:
   *	ha - Pointer to host adapter structure.
   *	fw_ddb_index - Firmware's device database index
   *
   * Returns:
   *	Pointer to the corresponding internal device database structure
   */
  static inline struct ddb_entry *
  qla4xxx_lookup_ddb_by_fw_index(struct scsi_qla_host *ha, uint32_t fw_ddb_index)
  {
  	struct ddb_entry *ddb_entry = NULL;
  
  	if ((fw_ddb_index < MAX_DDB_ENTRIES) &&
  	    (ha->fw_ddb_index_map[fw_ddb_index] !=
  		(struct ddb_entry *) INVALID_ENTRY)) {
  		ddb_entry = ha->fw_ddb_index_map[fw_ddb_index];
  	}
  
  	DEBUG3(printk("scsi%d: %s: index [%d], ddb_entry = %p
  ",
  	    ha->host_no, __func__, fw_ddb_index, ddb_entry));
  
  	return ddb_entry;
  }
  
  static inline void
  __qla4xxx_enable_intrs(struct scsi_qla_host *ha)
  {
d915058f4   David C Somayajulu   [SCSI] qla4xxx: a...
42
  	if (is_qla4022(ha) | is_qla4032(ha)) {
afaf5a2d3   David Somayajulu   [SCSI] Initial Co...
43
44
45
46
47
48
49
50
51
52
53
54
55
  		writel(set_rmask(IMR_SCSI_INTR_ENABLE),
  		       &ha->reg->u1.isp4022.intr_mask);
  		readl(&ha->reg->u1.isp4022.intr_mask);
  	} else {
  		writel(set_rmask(CSR_SCSI_INTR_ENABLE), &ha->reg->ctrl_status);
  		readl(&ha->reg->ctrl_status);
  	}
  	set_bit(AF_INTERRUPTS_ON, &ha->flags);
  }
  
  static inline void
  __qla4xxx_disable_intrs(struct scsi_qla_host *ha)
  {
d915058f4   David C Somayajulu   [SCSI] qla4xxx: a...
56
  	if (is_qla4022(ha) | is_qla4032(ha)) {
afaf5a2d3   David Somayajulu   [SCSI] Initial Co...
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
  		writel(clr_rmask(IMR_SCSI_INTR_ENABLE),
  		       &ha->reg->u1.isp4022.intr_mask);
  		readl(&ha->reg->u1.isp4022.intr_mask);
  	} else {
  		writel(clr_rmask(CSR_SCSI_INTR_ENABLE), &ha->reg->ctrl_status);
  		readl(&ha->reg->ctrl_status);
  	}
  	clear_bit(AF_INTERRUPTS_ON, &ha->flags);
  }
  
  static inline void
  qla4xxx_enable_intrs(struct scsi_qla_host *ha)
  {
  	unsigned long flags;
  
  	spin_lock_irqsave(&ha->hardware_lock, flags);
  	__qla4xxx_enable_intrs(ha);
  	spin_unlock_irqrestore(&ha->hardware_lock, flags);
  }
  
  static inline void
  qla4xxx_disable_intrs(struct scsi_qla_host *ha)
  {
  	unsigned long flags;
  
  	spin_lock_irqsave(&ha->hardware_lock, flags);
  	__qla4xxx_disable_intrs(ha);
  	spin_unlock_irqrestore(&ha->hardware_lock, flags);
  }