Commit | Line | Data |
---|---|---|
1da177e4 | 1 | /* |
fa90c54f | 2 | * QLogic Fibre Channel HBA Driver |
01e58d8e | 3 | * Copyright (c) 2003-2008 QLogic Corporation |
1da177e4 | 4 | * |
fa90c54f | 5 | * See LICENSE.qla2xxx for copyright and licensing details. |
1da177e4 LT |
6 | */ |
7 | ||
1da177e4 LT |
8 | /* |
9 | * qla2x00_debounce_register | |
10 | * Debounce register. | |
11 | * | |
12 | * Input: | |
13 | * port = register address. | |
14 | * | |
15 | * Returns: | |
16 | * register value. | |
17 | */ | |
18 | static __inline__ uint16_t | |
fa2a1ce5 | 19 | qla2x00_debounce_register(volatile uint16_t __iomem *addr) |
1da177e4 LT |
20 | { |
21 | volatile uint16_t first; | |
22 | volatile uint16_t second; | |
23 | ||
24 | do { | |
25 | first = RD_REG_WORD(addr); | |
26 | barrier(); | |
27 | cpu_relax(); | |
28 | second = RD_REG_WORD(addr); | |
29 | } while (first != second); | |
30 | ||
31 | return (first); | |
32 | } | |
33 | ||
fa2a1ce5 | 34 | static inline void |
e315cd28 | 35 | qla2x00_poll(struct rsp_que *rsp) |
1da177e4 | 36 | { |
d2ba5675 | 37 | unsigned long flags; |
e315cd28 | 38 | struct qla_hw_data *ha = rsp->hw; |
d2ba5675 | 39 | local_irq_save(flags); |
e315cd28 | 40 | ha->isp_ops->intr_handler(0, rsp); |
d2ba5675 | 41 | local_irq_restore(flags); |
1da177e4 LT |
42 | } |
43 | ||
2b6c0cee AV |
44 | static inline uint8_t * |
45 | host_to_fcp_swap(uint8_t *fcp, uint32_t bsize) | |
46 | { | |
47 | uint32_t *ifcp = (uint32_t *) fcp; | |
48 | uint32_t *ofcp = (uint32_t *) fcp; | |
49 | uint32_t iter = bsize >> 2; | |
50 | ||
51 | for (; iter ; iter--) | |
52 | *ofcp++ = swab32(*ifcp++); | |
53 | ||
54 | return fcp; | |
55 | } | |
3d71644c | 56 | |
3d71644c | 57 | static inline int |
e315cd28 | 58 | qla2x00_is_reserved_id(scsi_qla_host_t *vha, uint16_t loop_id) |
3d71644c | 59 | { |
e315cd28 | 60 | struct qla_hw_data *ha = vha->hw; |
e428924c | 61 | if (IS_FWI2_CAPABLE(ha)) |
3d71644c AV |
62 | return (loop_id > NPH_LAST_HANDLE); |
63 | ||
e315cd28 | 64 | return ((loop_id > ha->max_loop_id && loop_id < SNS_FIRST_LOOP_ID) || |
3d71644c | 65 | loop_id == MANAGEMENT_SERVER || loop_id == BROADCAST); |
17d98630 | 66 | } |