Lines Matching refs:pm8001_ha

50 static void read_main_config_table(struct pm8001_hba_info *pm8001_ha)  in read_main_config_table()  argument
52 void __iomem *address = pm8001_ha->main_cfg_tbl_addr; in read_main_config_table()
53 pm8001_ha->main_cfg_tbl.pm8001_tbl.signature = in read_main_config_table()
55 pm8001_ha->main_cfg_tbl.pm8001_tbl.interface_rev = in read_main_config_table()
57 pm8001_ha->main_cfg_tbl.pm8001_tbl.firmware_rev = in read_main_config_table()
59 pm8001_ha->main_cfg_tbl.pm8001_tbl.max_out_io = in read_main_config_table()
61 pm8001_ha->main_cfg_tbl.pm8001_tbl.max_sgl = in read_main_config_table()
63 pm8001_ha->main_cfg_tbl.pm8001_tbl.ctrl_cap_flag = in read_main_config_table()
65 pm8001_ha->main_cfg_tbl.pm8001_tbl.gst_offset = in read_main_config_table()
67 pm8001_ha->main_cfg_tbl.pm8001_tbl.inbound_queue_offset = in read_main_config_table()
69 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_queue_offset = in read_main_config_table()
71 pm8001_ha->main_cfg_tbl.pm8001_tbl.hda_mode_flag = in read_main_config_table()
75 pm8001_ha->main_cfg_tbl.pm8001_tbl.anolog_setup_table_offset = in read_main_config_table()
79 pm8001_ha->main_cfg_tbl.pm8001_tbl.fatal_err_dump_offset0 = in read_main_config_table()
81 pm8001_ha->main_cfg_tbl.pm8001_tbl.fatal_err_dump_length0 = in read_main_config_table()
83 pm8001_ha->main_cfg_tbl.pm8001_tbl.fatal_err_dump_offset1 = in read_main_config_table()
85 pm8001_ha->main_cfg_tbl.pm8001_tbl.fatal_err_dump_length1 = in read_main_config_table()
93 static void read_general_status_table(struct pm8001_hba_info *pm8001_ha) in read_general_status_table() argument
95 void __iomem *address = pm8001_ha->general_stat_tbl_addr; in read_general_status_table()
96 pm8001_ha->gs_tbl.pm8001_tbl.gst_len_mpistate = in read_general_status_table()
98 pm8001_ha->gs_tbl.pm8001_tbl.iq_freeze_state0 = in read_general_status_table()
100 pm8001_ha->gs_tbl.pm8001_tbl.iq_freeze_state1 = in read_general_status_table()
102 pm8001_ha->gs_tbl.pm8001_tbl.msgu_tcnt = in read_general_status_table()
104 pm8001_ha->gs_tbl.pm8001_tbl.iop_tcnt = in read_general_status_table()
106 pm8001_ha->gs_tbl.pm8001_tbl.rsvd = in read_general_status_table()
108 pm8001_ha->gs_tbl.pm8001_tbl.phy_state[0] = in read_general_status_table()
110 pm8001_ha->gs_tbl.pm8001_tbl.phy_state[1] = in read_general_status_table()
112 pm8001_ha->gs_tbl.pm8001_tbl.phy_state[2] = in read_general_status_table()
114 pm8001_ha->gs_tbl.pm8001_tbl.phy_state[3] = in read_general_status_table()
116 pm8001_ha->gs_tbl.pm8001_tbl.phy_state[4] = in read_general_status_table()
118 pm8001_ha->gs_tbl.pm8001_tbl.phy_state[5] = in read_general_status_table()
120 pm8001_ha->gs_tbl.pm8001_tbl.phy_state[6] = in read_general_status_table()
122 pm8001_ha->gs_tbl.pm8001_tbl.phy_state[7] = in read_general_status_table()
124 pm8001_ha->gs_tbl.pm8001_tbl.gpio_input_val = in read_general_status_table()
126 pm8001_ha->gs_tbl.pm8001_tbl.rsvd1[0] = in read_general_status_table()
128 pm8001_ha->gs_tbl.pm8001_tbl.rsvd1[1] = in read_general_status_table()
130 pm8001_ha->gs_tbl.pm8001_tbl.recover_err_info[0] = in read_general_status_table()
132 pm8001_ha->gs_tbl.pm8001_tbl.recover_err_info[1] = in read_general_status_table()
134 pm8001_ha->gs_tbl.pm8001_tbl.recover_err_info[2] = in read_general_status_table()
136 pm8001_ha->gs_tbl.pm8001_tbl.recover_err_info[3] = in read_general_status_table()
138 pm8001_ha->gs_tbl.pm8001_tbl.recover_err_info[4] = in read_general_status_table()
140 pm8001_ha->gs_tbl.pm8001_tbl.recover_err_info[5] = in read_general_status_table()
142 pm8001_ha->gs_tbl.pm8001_tbl.recover_err_info[6] = in read_general_status_table()
144 pm8001_ha->gs_tbl.pm8001_tbl.recover_err_info[7] = in read_general_status_table()
152 static void read_inbnd_queue_table(struct pm8001_hba_info *pm8001_ha) in read_inbnd_queue_table() argument
155 void __iomem *address = pm8001_ha->inbnd_q_tbl_addr; in read_inbnd_queue_table()
158 pm8001_ha->inbnd_q_tbl[i].pi_pci_bar = in read_inbnd_queue_table()
160 pm8001_ha->inbnd_q_tbl[i].pi_offset = in read_inbnd_queue_table()
169 static void read_outbnd_queue_table(struct pm8001_hba_info *pm8001_ha) in read_outbnd_queue_table() argument
172 void __iomem *address = pm8001_ha->outbnd_q_tbl_addr; in read_outbnd_queue_table()
175 pm8001_ha->outbnd_q_tbl[i].ci_pci_bar = in read_outbnd_queue_table()
177 pm8001_ha->outbnd_q_tbl[i].ci_offset = in read_outbnd_queue_table()
186 static void init_default_table_values(struct pm8001_hba_info *pm8001_ha) in init_default_table_values() argument
190 void __iomem *addressib = pm8001_ha->inbnd_q_tbl_addr; in init_default_table_values()
191 void __iomem *addressob = pm8001_ha->outbnd_q_tbl_addr; in init_default_table_values()
192 u32 ib_offset = pm8001_ha->ib_offset; in init_default_table_values()
193 u32 ob_offset = pm8001_ha->ob_offset; in init_default_table_values()
194 u32 ci_offset = pm8001_ha->ci_offset; in init_default_table_values()
195 u32 pi_offset = pm8001_ha->pi_offset; in init_default_table_values()
197 pm8001_ha->main_cfg_tbl.pm8001_tbl.inbound_q_nppd_hppd = 0; in init_default_table_values()
198 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_hw_event_pid0_3 = 0; in init_default_table_values()
199 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_hw_event_pid4_7 = 0; in init_default_table_values()
200 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_ncq_event_pid0_3 = 0; in init_default_table_values()
201 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_ncq_event_pid4_7 = 0; in init_default_table_values()
202 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_tgt_ITNexus_event_pid0_3 = in init_default_table_values()
204 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_tgt_ITNexus_event_pid4_7 = in init_default_table_values()
206 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_tgt_ssp_event_pid0_3 = 0; in init_default_table_values()
207 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_tgt_ssp_event_pid4_7 = 0; in init_default_table_values()
208 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_tgt_smp_event_pid0_3 = 0; in init_default_table_values()
209 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_tgt_smp_event_pid4_7 = 0; in init_default_table_values()
211 pm8001_ha->main_cfg_tbl.pm8001_tbl.upper_event_log_addr = in init_default_table_values()
212 pm8001_ha->memoryMap.region[AAP1].phys_addr_hi; in init_default_table_values()
213 pm8001_ha->main_cfg_tbl.pm8001_tbl.lower_event_log_addr = in init_default_table_values()
214 pm8001_ha->memoryMap.region[AAP1].phys_addr_lo; in init_default_table_values()
215 pm8001_ha->main_cfg_tbl.pm8001_tbl.event_log_size = in init_default_table_values()
217 pm8001_ha->main_cfg_tbl.pm8001_tbl.event_log_option = 0x01; in init_default_table_values()
218 pm8001_ha->main_cfg_tbl.pm8001_tbl.upper_iop_event_log_addr = in init_default_table_values()
219 pm8001_ha->memoryMap.region[IOP].phys_addr_hi; in init_default_table_values()
220 pm8001_ha->main_cfg_tbl.pm8001_tbl.lower_iop_event_log_addr = in init_default_table_values()
221 pm8001_ha->memoryMap.region[IOP].phys_addr_lo; in init_default_table_values()
222 pm8001_ha->main_cfg_tbl.pm8001_tbl.iop_event_log_size = in init_default_table_values()
224 pm8001_ha->main_cfg_tbl.pm8001_tbl.iop_event_log_option = 0x01; in init_default_table_values()
225 pm8001_ha->main_cfg_tbl.pm8001_tbl.fatal_err_interrupt = 0x01; in init_default_table_values()
227 pm8001_ha->inbnd_q_tbl[i].element_pri_size_cnt = in init_default_table_values()
228 PM8001_MPI_QUEUE | (pm8001_ha->iomb_size << 16) | (0x00<<30); in init_default_table_values()
229 pm8001_ha->inbnd_q_tbl[i].upper_base_addr = in init_default_table_values()
230 pm8001_ha->memoryMap.region[ib_offset + i].phys_addr_hi; in init_default_table_values()
231 pm8001_ha->inbnd_q_tbl[i].lower_base_addr = in init_default_table_values()
232 pm8001_ha->memoryMap.region[ib_offset + i].phys_addr_lo; in init_default_table_values()
233 pm8001_ha->inbnd_q_tbl[i].base_virt = in init_default_table_values()
234 (u8 *)pm8001_ha->memoryMap.region[ib_offset + i].virt_ptr; in init_default_table_values()
235 pm8001_ha->inbnd_q_tbl[i].total_length = in init_default_table_values()
236 pm8001_ha->memoryMap.region[ib_offset + i].total_len; in init_default_table_values()
237 pm8001_ha->inbnd_q_tbl[i].ci_upper_base_addr = in init_default_table_values()
238 pm8001_ha->memoryMap.region[ci_offset + i].phys_addr_hi; in init_default_table_values()
239 pm8001_ha->inbnd_q_tbl[i].ci_lower_base_addr = in init_default_table_values()
240 pm8001_ha->memoryMap.region[ci_offset + i].phys_addr_lo; in init_default_table_values()
241 pm8001_ha->inbnd_q_tbl[i].ci_virt = in init_default_table_values()
242 pm8001_ha->memoryMap.region[ci_offset + i].virt_ptr; in init_default_table_values()
244 pm8001_ha->inbnd_q_tbl[i].pi_pci_bar = in init_default_table_values()
247 pm8001_ha->inbnd_q_tbl[i].pi_offset = in init_default_table_values()
249 pm8001_ha->inbnd_q_tbl[i].producer_idx = 0; in init_default_table_values()
250 pm8001_ha->inbnd_q_tbl[i].consumer_index = 0; in init_default_table_values()
253 pm8001_ha->outbnd_q_tbl[i].element_size_cnt = in init_default_table_values()
254 PM8001_MPI_QUEUE | (pm8001_ha->iomb_size << 16) | (0x01<<30); in init_default_table_values()
255 pm8001_ha->outbnd_q_tbl[i].upper_base_addr = in init_default_table_values()
256 pm8001_ha->memoryMap.region[ob_offset + i].phys_addr_hi; in init_default_table_values()
257 pm8001_ha->outbnd_q_tbl[i].lower_base_addr = in init_default_table_values()
258 pm8001_ha->memoryMap.region[ob_offset + i].phys_addr_lo; in init_default_table_values()
259 pm8001_ha->outbnd_q_tbl[i].base_virt = in init_default_table_values()
260 (u8 *)pm8001_ha->memoryMap.region[ob_offset + i].virt_ptr; in init_default_table_values()
261 pm8001_ha->outbnd_q_tbl[i].total_length = in init_default_table_values()
262 pm8001_ha->memoryMap.region[ob_offset + i].total_len; in init_default_table_values()
263 pm8001_ha->outbnd_q_tbl[i].pi_upper_base_addr = in init_default_table_values()
264 pm8001_ha->memoryMap.region[pi_offset + i].phys_addr_hi; in init_default_table_values()
265 pm8001_ha->outbnd_q_tbl[i].pi_lower_base_addr = in init_default_table_values()
266 pm8001_ha->memoryMap.region[pi_offset + i].phys_addr_lo; in init_default_table_values()
267 pm8001_ha->outbnd_q_tbl[i].interrup_vec_cnt_delay = in init_default_table_values()
269 pm8001_ha->outbnd_q_tbl[i].pi_virt = in init_default_table_values()
270 pm8001_ha->memoryMap.region[pi_offset + i].virt_ptr; in init_default_table_values()
272 pm8001_ha->outbnd_q_tbl[i].ci_pci_bar = in init_default_table_values()
275 pm8001_ha->outbnd_q_tbl[i].ci_offset = in init_default_table_values()
277 pm8001_ha->outbnd_q_tbl[i].consumer_idx = 0; in init_default_table_values()
278 pm8001_ha->outbnd_q_tbl[i].producer_index = 0; in init_default_table_values()
286 static void update_main_config_table(struct pm8001_hba_info *pm8001_ha) in update_main_config_table() argument
288 void __iomem *address = pm8001_ha->main_cfg_tbl_addr; in update_main_config_table()
290 pm8001_ha->main_cfg_tbl.pm8001_tbl.inbound_q_nppd_hppd); in update_main_config_table()
292 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_hw_event_pid0_3); in update_main_config_table()
294 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_hw_event_pid4_7); in update_main_config_table()
296 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_ncq_event_pid0_3); in update_main_config_table()
298 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_ncq_event_pid4_7); in update_main_config_table()
300 pm8001_ha->main_cfg_tbl.pm8001_tbl. in update_main_config_table()
303 pm8001_ha->main_cfg_tbl.pm8001_tbl. in update_main_config_table()
306 pm8001_ha->main_cfg_tbl.pm8001_tbl. in update_main_config_table()
309 pm8001_ha->main_cfg_tbl.pm8001_tbl. in update_main_config_table()
312 pm8001_ha->main_cfg_tbl.pm8001_tbl. in update_main_config_table()
315 pm8001_ha->main_cfg_tbl.pm8001_tbl. in update_main_config_table()
318 pm8001_ha->main_cfg_tbl.pm8001_tbl.upper_event_log_addr); in update_main_config_table()
320 pm8001_ha->main_cfg_tbl.pm8001_tbl.lower_event_log_addr); in update_main_config_table()
322 pm8001_ha->main_cfg_tbl.pm8001_tbl.event_log_size); in update_main_config_table()
324 pm8001_ha->main_cfg_tbl.pm8001_tbl.event_log_option); in update_main_config_table()
326 pm8001_ha->main_cfg_tbl.pm8001_tbl.upper_iop_event_log_addr); in update_main_config_table()
328 pm8001_ha->main_cfg_tbl.pm8001_tbl.lower_iop_event_log_addr); in update_main_config_table()
330 pm8001_ha->main_cfg_tbl.pm8001_tbl.iop_event_log_size); in update_main_config_table()
332 pm8001_ha->main_cfg_tbl.pm8001_tbl.iop_event_log_option); in update_main_config_table()
334 pm8001_ha->main_cfg_tbl.pm8001_tbl.fatal_err_interrupt); in update_main_config_table()
342 static void update_inbnd_queue_table(struct pm8001_hba_info *pm8001_ha, in update_inbnd_queue_table() argument
345 void __iomem *address = pm8001_ha->inbnd_q_tbl_addr; in update_inbnd_queue_table()
348 pm8001_ha->inbnd_q_tbl[number].element_pri_size_cnt); in update_inbnd_queue_table()
350 pm8001_ha->inbnd_q_tbl[number].upper_base_addr); in update_inbnd_queue_table()
352 pm8001_ha->inbnd_q_tbl[number].lower_base_addr); in update_inbnd_queue_table()
354 pm8001_ha->inbnd_q_tbl[number].ci_upper_base_addr); in update_inbnd_queue_table()
356 pm8001_ha->inbnd_q_tbl[number].ci_lower_base_addr); in update_inbnd_queue_table()
364 static void update_outbnd_queue_table(struct pm8001_hba_info *pm8001_ha, in update_outbnd_queue_table() argument
367 void __iomem *address = pm8001_ha->outbnd_q_tbl_addr; in update_outbnd_queue_table()
370 pm8001_ha->outbnd_q_tbl[number].element_size_cnt); in update_outbnd_queue_table()
372 pm8001_ha->outbnd_q_tbl[number].upper_base_addr); in update_outbnd_queue_table()
374 pm8001_ha->outbnd_q_tbl[number].lower_base_addr); in update_outbnd_queue_table()
376 pm8001_ha->outbnd_q_tbl[number].pi_upper_base_addr); in update_outbnd_queue_table()
378 pm8001_ha->outbnd_q_tbl[number].pi_lower_base_addr); in update_outbnd_queue_table()
380 pm8001_ha->outbnd_q_tbl[number].interrup_vec_cnt_delay); in update_outbnd_queue_table()
388 int pm8001_bar4_shift(struct pm8001_hba_info *pm8001_ha, u32 shiftValue) in pm8001_bar4_shift() argument
394 pm8001_cw32(pm8001_ha, 1, SPC_IBW_AXI_TRANSLATION_LOW, shiftValue); in pm8001_bar4_shift()
399 regVal = pm8001_cr32(pm8001_ha, 1, SPC_IBW_AXI_TRANSLATION_LOW); in pm8001_bar4_shift()
403 PM8001_INIT_DBG(pm8001_ha, in pm8001_bar4_shift()
416 static void mpi_set_phys_g3_with_ssc(struct pm8001_hba_info *pm8001_ha, in mpi_set_phys_g3_with_ssc() argument
434 spin_lock_irqsave(&pm8001_ha->lock, flags); in mpi_set_phys_g3_with_ssc()
435 if (-1 == pm8001_bar4_shift(pm8001_ha, in mpi_set_phys_g3_with_ssc()
437 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in mpi_set_phys_g3_with_ssc()
443 pm8001_cw32(pm8001_ha, 2, offset, 0x80001501); in mpi_set_phys_g3_with_ssc()
446 if (-1 == pm8001_bar4_shift(pm8001_ha, in mpi_set_phys_g3_with_ssc()
448 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in mpi_set_phys_g3_with_ssc()
453 pm8001_cw32(pm8001_ha, 2, offset, 0x80001501); in mpi_set_phys_g3_with_ssc()
470 value = pm8001_cr32(pm8001_ha, 2, 0xd8); in mpi_set_phys_g3_with_ssc()
471 pm8001_cw32(pm8001_ha, 2, 0xd8, 0x8000C016); in mpi_set_phys_g3_with_ssc()
474 pm8001_bar4_shift(pm8001_ha, 0x0); in mpi_set_phys_g3_with_ssc()
475 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in mpi_set_phys_g3_with_ssc()
484 static void mpi_set_open_retry_interval_reg(struct pm8001_hba_info *pm8001_ha, in mpi_set_open_retry_interval_reg() argument
499 spin_lock_irqsave(&pm8001_ha->lock, flags); in mpi_set_open_retry_interval_reg()
501 if (-1 == pm8001_bar4_shift(pm8001_ha, in mpi_set_open_retry_interval_reg()
503 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in mpi_set_open_retry_interval_reg()
508 pm8001_cw32(pm8001_ha, 2, offset, value); in mpi_set_open_retry_interval_reg()
511 if (-1 == pm8001_bar4_shift(pm8001_ha, in mpi_set_open_retry_interval_reg()
513 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in mpi_set_open_retry_interval_reg()
518 pm8001_cw32(pm8001_ha, 2, offset, value); in mpi_set_open_retry_interval_reg()
521 pm8001_bar4_shift(pm8001_ha, 0x0); in mpi_set_open_retry_interval_reg()
522 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in mpi_set_open_retry_interval_reg()
530 static int mpi_init_check(struct pm8001_hba_info *pm8001_ha) in mpi_init_check() argument
537 pm8001_cw32(pm8001_ha, 0, MSGU_IBDB_SET, SPC_MSGU_CFG_TABLE_UPDATE); in mpi_init_check()
542 value = pm8001_cr32(pm8001_ha, 0, MSGU_IBDB_SET); in mpi_init_check()
550 pm8001_mr32(pm8001_ha->general_stat_tbl_addr, in mpi_init_check()
565 static int check_fw_ready(struct pm8001_hba_info *pm8001_ha) in check_fw_ready() argument
570 value = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_1); in check_fw_ready()
571 value1 = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_2); in check_fw_ready()
575 value = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_0); in check_fw_ready()
582 value1 = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_3); in check_fw_ready()
590 pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_0); in check_fw_ready()
606 value = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_1) in check_fw_ready()
608 value1 = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_2) in check_fw_ready()
616 static void init_pci_device_addresses(struct pm8001_hba_info *pm8001_ha) in init_pci_device_addresses() argument
624 value = pm8001_cr32(pm8001_ha, 0, 0x44); in init_pci_device_addresses()
626 PM8001_INIT_DBG(pm8001_ha, in init_pci_device_addresses()
630 PM8001_INIT_DBG(pm8001_ha, in init_pci_device_addresses()
632 pm8001_ha->main_cfg_tbl_addr = base_addr = in init_pci_device_addresses()
633 pm8001_ha->io_mem[pcibar].memvirtaddr + offset; in init_pci_device_addresses()
634 pm8001_ha->general_stat_tbl_addr = in init_pci_device_addresses()
635 base_addr + pm8001_cr32(pm8001_ha, pcibar, offset + 0x18); in init_pci_device_addresses()
636 pm8001_ha->inbnd_q_tbl_addr = in init_pci_device_addresses()
637 base_addr + pm8001_cr32(pm8001_ha, pcibar, offset + 0x1C); in init_pci_device_addresses()
638 pm8001_ha->outbnd_q_tbl_addr = in init_pci_device_addresses()
639 base_addr + pm8001_cr32(pm8001_ha, pcibar, offset + 0x20); in init_pci_device_addresses()
646 static int pm8001_chip_init(struct pm8001_hba_info *pm8001_ha) in pm8001_chip_init() argument
650 pci_read_config_word(pm8001_ha->pdev, PCI_DEVICE_ID, &deviceid); in pm8001_chip_init()
654 if (-1 == pm8001_bar4_shift(pm8001_ha, GSM_SM_BASE)) { in pm8001_chip_init()
655 PM8001_FAIL_DBG(pm8001_ha, in pm8001_chip_init()
662 if (-1 == check_fw_ready(pm8001_ha)) { in pm8001_chip_init()
663 PM8001_FAIL_DBG(pm8001_ha, in pm8001_chip_init()
669 init_pci_device_addresses(pm8001_ha); in pm8001_chip_init()
670 init_default_table_values(pm8001_ha); in pm8001_chip_init()
671 read_main_config_table(pm8001_ha); in pm8001_chip_init()
672 read_general_status_table(pm8001_ha); in pm8001_chip_init()
673 read_inbnd_queue_table(pm8001_ha); in pm8001_chip_init()
674 read_outbnd_queue_table(pm8001_ha); in pm8001_chip_init()
676 update_main_config_table(pm8001_ha); in pm8001_chip_init()
678 update_inbnd_queue_table(pm8001_ha, i); in pm8001_chip_init()
680 update_outbnd_queue_table(pm8001_ha, i); in pm8001_chip_init()
683 mpi_set_phys_g3_with_ssc(pm8001_ha, 0); in pm8001_chip_init()
685 mpi_set_open_retry_interval_reg(pm8001_ha, 119); in pm8001_chip_init()
688 if (0 == mpi_init_check(pm8001_ha)) { in pm8001_chip_init()
689 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_init()
698 pm8001_cw32(pm8001_ha, 1, 0x0033c0, 0x1); in pm8001_chip_init()
699 pm8001_cw32(pm8001_ha, 1, 0x0033c4, 0x0); in pm8001_chip_init()
703 static int mpi_uninit_check(struct pm8001_hba_info *pm8001_ha) in mpi_uninit_check() argument
709 pci_read_config_word(pm8001_ha->pdev, PCI_DEVICE_ID, &deviceid); in mpi_uninit_check()
711 if (-1 == pm8001_bar4_shift(pm8001_ha, GSM_SM_BASE)) { in mpi_uninit_check()
712 PM8001_FAIL_DBG(pm8001_ha, in mpi_uninit_check()
718 init_pci_device_addresses(pm8001_ha); in mpi_uninit_check()
721 pm8001_cw32(pm8001_ha, 0, MSGU_IBDB_SET, SPC_MSGU_CFG_TABLE_RESET); in mpi_uninit_check()
727 value = pm8001_cr32(pm8001_ha, 0, MSGU_IBDB_SET); in mpi_uninit_check()
732 PM8001_FAIL_DBG(pm8001_ha, in mpi_uninit_check()
743 pm8001_mr32(pm8001_ha->general_stat_tbl_addr, in mpi_uninit_check()
750 PM8001_FAIL_DBG(pm8001_ha, in mpi_uninit_check()
762 static u32 soft_reset_ready_check(struct pm8001_hba_info *pm8001_ha) in soft_reset_ready_check() argument
765 if (mpi_uninit_check(pm8001_ha) != 0) { in soft_reset_ready_check()
766 PM8001_FAIL_DBG(pm8001_ha, in soft_reset_ready_check()
771 regVal = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_2) in soft_reset_ready_check()
774 PM8001_INIT_DBG(pm8001_ha, in soft_reset_ready_check()
779 spin_lock_irqsave(&pm8001_ha->lock, flags); in soft_reset_ready_check()
780 if (-1 == pm8001_bar4_shift(pm8001_ha, RB6_ACCESS_REG)) { in soft_reset_ready_check()
781 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in soft_reset_ready_check()
782 PM8001_FAIL_DBG(pm8001_ha, in soft_reset_ready_check()
787 pm8001_cw32(pm8001_ha, 2, SPC_RB6_OFFSET, in soft_reset_ready_check()
789 pm8001_cw32(pm8001_ha, 2, SPC_RB6_OFFSET, RB6_MAGIC_NUMBER_RST); in soft_reset_ready_check()
792 regVal = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_2) & in soft_reset_ready_check()
795 regVal1 = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_1); in soft_reset_ready_check()
796 regVal2 = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_2); in soft_reset_ready_check()
797 PM8001_FAIL_DBG(pm8001_ha, in soft_reset_ready_check()
801 PM8001_FAIL_DBG(pm8001_ha, in soft_reset_ready_check()
803 pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_0))); in soft_reset_ready_check()
804 PM8001_FAIL_DBG(pm8001_ha, in soft_reset_ready_check()
806 pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_3))); in soft_reset_ready_check()
807 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in soft_reset_ready_check()
810 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in soft_reset_ready_check()
821 pm8001_chip_soft_rst(struct pm8001_hba_info *pm8001_ha) in pm8001_chip_soft_rst() argument
830 if (soft_reset_ready_check(pm8001_ha) != 0) { in pm8001_chip_soft_rst()
831 PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("FW is not ready\n")); in pm8001_chip_soft_rst()
838 spin_lock_irqsave(&pm8001_ha->lock, flags); in pm8001_chip_soft_rst()
839 if (-1 == pm8001_bar4_shift(pm8001_ha, MBIC_AAP1_ADDR_BASE)) { in pm8001_chip_soft_rst()
840 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_chip_soft_rst()
841 PM8001_FAIL_DBG(pm8001_ha, in pm8001_chip_soft_rst()
846 regVal = pm8001_cr32(pm8001_ha, 2, MBIC_NMI_ENABLE_VPE0_IOP); in pm8001_chip_soft_rst()
847 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
849 pm8001_cw32(pm8001_ha, 2, MBIC_NMI_ENABLE_VPE0_IOP, 0x0); in pm8001_chip_soft_rst()
851 if (-1 == pm8001_bar4_shift(pm8001_ha, MBIC_IOP_ADDR_BASE)) { in pm8001_chip_soft_rst()
852 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_chip_soft_rst()
853 PM8001_FAIL_DBG(pm8001_ha, in pm8001_chip_soft_rst()
858 regVal = pm8001_cr32(pm8001_ha, 2, MBIC_NMI_ENABLE_VPE0_AAP1); in pm8001_chip_soft_rst()
859 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
861 pm8001_cw32(pm8001_ha, 2, MBIC_NMI_ENABLE_VPE0_AAP1, 0x0); in pm8001_chip_soft_rst()
863 regVal = pm8001_cr32(pm8001_ha, 1, PCIE_EVENT_INTERRUPT_ENABLE); in pm8001_chip_soft_rst()
864 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
866 pm8001_cw32(pm8001_ha, 1, PCIE_EVENT_INTERRUPT_ENABLE, 0x0); in pm8001_chip_soft_rst()
868 regVal = pm8001_cr32(pm8001_ha, 1, PCIE_EVENT_INTERRUPT); in pm8001_chip_soft_rst()
869 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
871 pm8001_cw32(pm8001_ha, 1, PCIE_EVENT_INTERRUPT, regVal); in pm8001_chip_soft_rst()
873 regVal = pm8001_cr32(pm8001_ha, 1, PCIE_ERROR_INTERRUPT_ENABLE); in pm8001_chip_soft_rst()
874 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
876 pm8001_cw32(pm8001_ha, 1, PCIE_ERROR_INTERRUPT_ENABLE, 0x0); in pm8001_chip_soft_rst()
878 regVal = pm8001_cr32(pm8001_ha, 1, PCIE_ERROR_INTERRUPT); in pm8001_chip_soft_rst()
879 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
881 pm8001_cw32(pm8001_ha, 1, PCIE_ERROR_INTERRUPT, regVal); in pm8001_chip_soft_rst()
884 regVal = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_1) in pm8001_chip_soft_rst()
890 pm8001_cw32(pm8001_ha, 0, MSGU_HOST_SCRATCH_PAD_0, signature); in pm8001_chip_soft_rst()
894 if (-1 == pm8001_bar4_shift(pm8001_ha, GSM_ADDR_BASE)) { in pm8001_chip_soft_rst()
895 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_chip_soft_rst()
896 PM8001_FAIL_DBG(pm8001_ha, in pm8001_chip_soft_rst()
901 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
904 pm8001_cr32(pm8001_ha, 2, GSM_CONFIG_RESET))); in pm8001_chip_soft_rst()
907 regVal = pm8001_cr32(pm8001_ha, 2, GSM_CONFIG_RESET); in pm8001_chip_soft_rst()
918 pm8001_cw32(pm8001_ha, 2, GSM_CONFIG_RESET, regVal); in pm8001_chip_soft_rst()
919 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
922 pm8001_cr32(pm8001_ha, 2, GSM_CONFIG_RESET))); in pm8001_chip_soft_rst()
926 regVal1 = pm8001_cr32(pm8001_ha, 2, GSM_READ_ADDR_PARITY_CHECK); in pm8001_chip_soft_rst()
927 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
930 pm8001_cw32(pm8001_ha, 2, GSM_READ_ADDR_PARITY_CHECK, 0x0); in pm8001_chip_soft_rst()
931 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
934 pm8001_cr32(pm8001_ha, 2, GSM_READ_ADDR_PARITY_CHECK))); in pm8001_chip_soft_rst()
937 regVal2 = pm8001_cr32(pm8001_ha, 2, GSM_WRITE_ADDR_PARITY_CHECK); in pm8001_chip_soft_rst()
938 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
941 pm8001_cw32(pm8001_ha, 2, GSM_WRITE_ADDR_PARITY_CHECK, 0x0); in pm8001_chip_soft_rst()
942 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
945 pm8001_cr32(pm8001_ha, 2, GSM_WRITE_ADDR_PARITY_CHECK))); in pm8001_chip_soft_rst()
948 regVal3 = pm8001_cr32(pm8001_ha, 2, GSM_WRITE_DATA_PARITY_CHECK); in pm8001_chip_soft_rst()
949 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
952 pm8001_cw32(pm8001_ha, 2, GSM_WRITE_DATA_PARITY_CHECK, 0x0); in pm8001_chip_soft_rst()
953 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
956 pm8001_cr32(pm8001_ha, 2, GSM_WRITE_DATA_PARITY_CHECK))); in pm8001_chip_soft_rst()
961 if (-1 == pm8001_bar4_shift(pm8001_ha, GPIO_ADDR_BASE)) { in pm8001_chip_soft_rst()
962 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_chip_soft_rst()
963 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
968 regVal = pm8001_cr32(pm8001_ha, 2, GPIO_GPIO_0_0UTPUT_CTL_OFFSET); in pm8001_chip_soft_rst()
969 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
974 pm8001_cw32(pm8001_ha, 2, GPIO_GPIO_0_0UTPUT_CTL_OFFSET, regVal); in pm8001_chip_soft_rst()
978 if (-1 == pm8001_bar4_shift(pm8001_ha, SPC_TOP_LEVEL_ADDR_BASE)) { in pm8001_chip_soft_rst()
979 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_chip_soft_rst()
980 PM8001_FAIL_DBG(pm8001_ha, in pm8001_chip_soft_rst()
985 regVal = pm8001_cr32(pm8001_ha, 2, SPC_REG_RESET); in pm8001_chip_soft_rst()
986 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
990 pm8001_cw32(pm8001_ha, 2, SPC_REG_RESET, regVal); in pm8001_chip_soft_rst()
993 regVal = pm8001_cr32(pm8001_ha, 2, SPC_REG_RESET); in pm8001_chip_soft_rst()
994 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
998 pm8001_cw32(pm8001_ha, 2, SPC_REG_RESET, regVal); in pm8001_chip_soft_rst()
1004 regVal = pm8001_cr32(pm8001_ha, 2, SPC_REG_RESET); in pm8001_chip_soft_rst()
1005 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1009 pm8001_cw32(pm8001_ha, 2, SPC_REG_RESET, regVal); in pm8001_chip_soft_rst()
1016 if (-1 == pm8001_bar4_shift(pm8001_ha, GSM_ADDR_BASE)) { in pm8001_chip_soft_rst()
1017 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_chip_soft_rst()
1018 PM8001_FAIL_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1023 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1025 "Reset = 0x%x\n", pm8001_cr32(pm8001_ha, 2, GSM_CONFIG_RESET))); in pm8001_chip_soft_rst()
1026 regVal = pm8001_cr32(pm8001_ha, 2, GSM_CONFIG_RESET); in pm8001_chip_soft_rst()
1036 pm8001_cw32(pm8001_ha, 2, GSM_CONFIG_RESET, regVal); in pm8001_chip_soft_rst()
1037 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1040 pm8001_cr32(pm8001_ha, 2, GSM_CONFIG_RESET))); in pm8001_chip_soft_rst()
1043 regVal = pm8001_cr32(pm8001_ha, 2, GSM_READ_ADDR_PARITY_CHECK); in pm8001_chip_soft_rst()
1045 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1048 pm8001_cw32(pm8001_ha, 2, GSM_READ_ADDR_PARITY_CHECK, regVal1); in pm8001_chip_soft_rst()
1049 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1052 pm8001_cr32(pm8001_ha, 2, GSM_READ_ADDR_PARITY_CHECK))); in pm8001_chip_soft_rst()
1054 regVal = pm8001_cr32(pm8001_ha, 2, GSM_WRITE_ADDR_PARITY_CHECK); in pm8001_chip_soft_rst()
1055 pm8001_cw32(pm8001_ha, 2, GSM_WRITE_ADDR_PARITY_CHECK, regVal2); in pm8001_chip_soft_rst()
1056 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1059 pm8001_cr32(pm8001_ha, 2, GSM_WRITE_ADDR_PARITY_CHECK))); in pm8001_chip_soft_rst()
1061 regVal = pm8001_cr32(pm8001_ha, 2, GSM_WRITE_DATA_PARITY_CHECK); in pm8001_chip_soft_rst()
1062 pm8001_cw32(pm8001_ha, 2, GSM_WRITE_DATA_PARITY_CHECK, regVal3); in pm8001_chip_soft_rst()
1063 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1066 pm8001_cr32(pm8001_ha, 2, GSM_WRITE_DATA_PARITY_CHECK))); in pm8001_chip_soft_rst()
1070 if (-1 == pm8001_bar4_shift(pm8001_ha, SPC_TOP_LEVEL_ADDR_BASE)) { in pm8001_chip_soft_rst()
1071 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_chip_soft_rst()
1072 PM8001_FAIL_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1077 regVal = pm8001_cr32(pm8001_ha, 2, SPC_REG_RESET); in pm8001_chip_soft_rst()
1079 pm8001_cw32(pm8001_ha, 2, SPC_REG_RESET, regVal); in pm8001_chip_soft_rst()
1090 regVal = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_1) & in pm8001_chip_soft_rst()
1095 regVal = pm8001_cr32(pm8001_ha, 0, in pm8001_chip_soft_rst()
1097 PM8001_FAIL_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1101 PM8001_FAIL_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1103 pm8001_cr32(pm8001_ha, 0, in pm8001_chip_soft_rst()
1105 PM8001_FAIL_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1107 pm8001_cr32(pm8001_ha, 0, in pm8001_chip_soft_rst()
1109 PM8001_FAIL_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1111 pm8001_cr32(pm8001_ha, 0, in pm8001_chip_soft_rst()
1113 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_chip_soft_rst()
1118 pm8001_cw32(pm8001_ha, 0, MSGU_ODCR, ODCR_CLEAR_ALL); in pm8001_chip_soft_rst()
1119 pm8001_cw32(pm8001_ha, 0, MSGU_ODMR, ODMR_CLEAR_ALL); in pm8001_chip_soft_rst()
1124 if (check_fw_ready(pm8001_ha) == -1) { in pm8001_chip_soft_rst()
1125 regVal = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_1); in pm8001_chip_soft_rst()
1127 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1130 regVal = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_2); in pm8001_chip_soft_rst()
1132 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1135 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1137 pm8001_cr32(pm8001_ha, 0, in pm8001_chip_soft_rst()
1139 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1141 pm8001_cr32(pm8001_ha, 0, in pm8001_chip_soft_rst()
1143 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_chip_soft_rst()
1147 pm8001_bar4_shift(pm8001_ha, 0); in pm8001_chip_soft_rst()
1148 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_chip_soft_rst()
1150 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1155 static void pm8001_hw_chip_rst(struct pm8001_hba_info *pm8001_ha) in pm8001_hw_chip_rst() argument
1159 PM8001_INIT_DBG(pm8001_ha, in pm8001_hw_chip_rst()
1163 regVal = pm8001_cr32(pm8001_ha, 1, SPC_REG_RESET); in pm8001_hw_chip_rst()
1165 pm8001_cw32(pm8001_ha, 1, SPC_REG_RESET, regVal); in pm8001_hw_chip_rst()
1171 regVal = pm8001_cr32(pm8001_ha, 1, SPC_REG_RESET); in pm8001_hw_chip_rst()
1173 pm8001_cw32(pm8001_ha, 1, SPC_REG_RESET, regVal); in pm8001_hw_chip_rst()
1184 PM8001_INIT_DBG(pm8001_ha, in pm8001_hw_chip_rst()
1192 void pm8001_chip_iounmap(struct pm8001_hba_info *pm8001_ha) in pm8001_chip_iounmap() argument
1206 if (pm8001_ha->io_mem[logical].memvirtaddr) { in pm8001_chip_iounmap()
1207 iounmap(pm8001_ha->io_mem[logical].memvirtaddr); in pm8001_chip_iounmap()
1219 pm8001_chip_intx_interrupt_enable(struct pm8001_hba_info *pm8001_ha) in pm8001_chip_intx_interrupt_enable() argument
1221 pm8001_cw32(pm8001_ha, 0, MSGU_ODMR, ODMR_CLEAR_ALL); in pm8001_chip_intx_interrupt_enable()
1222 pm8001_cw32(pm8001_ha, 0, MSGU_ODCR, ODCR_CLEAR_ALL); in pm8001_chip_intx_interrupt_enable()
1230 pm8001_chip_intx_interrupt_disable(struct pm8001_hba_info *pm8001_ha) in pm8001_chip_intx_interrupt_disable() argument
1232 pm8001_cw32(pm8001_ha, 0, MSGU_ODMR, ODMR_MASK_ALL); in pm8001_chip_intx_interrupt_disable()
1243 pm8001_chip_msix_interrupt_enable(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_msix_interrupt_enable() argument
1250 pm8001_cw32(pm8001_ha, 0, msi_index, MSIX_INTERRUPT_ENABLE); in pm8001_chip_msix_interrupt_enable()
1252 pm8001_cw32(pm8001_ha, 0, MSGU_ODCR, value); in pm8001_chip_msix_interrupt_enable()
1262 pm8001_chip_msix_interrupt_disable(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_msix_interrupt_disable() argument
1268 pm8001_cw32(pm8001_ha, 0, msi_index, MSIX_INTERRUPT_DISABLE); in pm8001_chip_msix_interrupt_disable()
1278 pm8001_chip_interrupt_enable(struct pm8001_hba_info *pm8001_ha, u8 vec) in pm8001_chip_interrupt_enable() argument
1281 pm8001_chip_msix_interrupt_enable(pm8001_ha, 0); in pm8001_chip_interrupt_enable()
1283 pm8001_chip_intx_interrupt_enable(pm8001_ha); in pm8001_chip_interrupt_enable()
1293 pm8001_chip_interrupt_disable(struct pm8001_hba_info *pm8001_ha, u8 vec) in pm8001_chip_interrupt_disable() argument
1296 pm8001_chip_msix_interrupt_disable(pm8001_ha, 0); in pm8001_chip_interrupt_disable()
1298 pm8001_chip_intx_interrupt_disable(pm8001_ha); in pm8001_chip_interrupt_disable()
1352 int pm8001_mpi_build_cmd(struct pm8001_hba_info *pm8001_ha, in pm8001_mpi_build_cmd() argument
1360 if (pm8001_mpi_msg_free_get(circularQ, pm8001_ha->iomb_size, in pm8001_mpi_build_cmd()
1362 PM8001_IO_DBG(pm8001_ha, in pm8001_mpi_build_cmd()
1367 if (nb > (pm8001_ha->iomb_size - sizeof(struct mpi_msg_hdr))) in pm8001_mpi_build_cmd()
1368 nb = pm8001_ha->iomb_size - sizeof(struct mpi_msg_hdr); in pm8001_mpi_build_cmd()
1370 if (nb + sizeof(struct mpi_msg_hdr) < pm8001_ha->iomb_size) in pm8001_mpi_build_cmd()
1371 memset(pMessage + nb, 0, pm8001_ha->iomb_size - in pm8001_mpi_build_cmd()
1381 pm8001_cw32(pm8001_ha, circularQ->pi_pci_bar, in pm8001_mpi_build_cmd()
1383 PM8001_DEVIO_DBG(pm8001_ha, in pm8001_mpi_build_cmd()
1390 u32 pm8001_mpi_msg_free_set(struct pm8001_hba_info *pm8001_ha, void *pMsg, in pm8001_mpi_msg_free_set() argument
1399 circularQ->consumer_idx * pm8001_ha->iomb_size); in pm8001_mpi_msg_free_set()
1401 PM8001_FAIL_DBG(pm8001_ha, in pm8001_mpi_msg_free_set()
1408 PM8001_FAIL_DBG(pm8001_ha, in pm8001_mpi_msg_free_set()
1418 pm8001_cw32(pm8001_ha, circularQ->ci_pci_bar, circularQ->ci_offset, in pm8001_mpi_msg_free_set()
1423 PM8001_IO_DBG(pm8001_ha, in pm8001_mpi_msg_free_set()
1437 u32 pm8001_mpi_msg_consume(struct pm8001_hba_info *pm8001_ha, in pm8001_mpi_msg_consume() argument
1451 circularQ->consumer_idx * pm8001_ha->iomb_size); in pm8001_mpi_msg_consume()
1455 PM8001_DEVIO_DBG(pm8001_ha, pm8001_printk( in pm8001_mpi_msg_consume()
1467 PM8001_IO_DBG(pm8001_ha, in pm8001_mpi_msg_consume()
1483 pm8001_cw32(pm8001_ha, in pm8001_mpi_msg_consume()
1496 pm8001_cw32(pm8001_ha, circularQ->ci_pci_bar, in pm8001_mpi_msg_consume()
1547 struct pm8001_hba_info *pm8001_ha = pw->pm8001_ha; in pm8001_work_fn() local
1554 spin_lock_irqsave(&pm8001_ha->lock, flags); in pm8001_work_fn()
1559 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_work_fn()
1566 ccb = &pm8001_ha->ccb_info[i]; in pm8001_work_fn()
1572 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_work_fn()
1588 PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("task 0x%p" in pm8001_work_fn()
1592 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in pm8001_work_fn()
1593 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_work_fn()
1596 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in pm8001_work_fn()
1598 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_work_fn()
1607 struct pm8001_hba_info *pm8001_ha = pw->pm8001_ha; in pm8001_work_fn() local
1611 PM8001_IO_DBG(pm8001_ha, in pm8001_work_fn()
1616 PM8001_IO_DBG(pm8001_ha, in pm8001_work_fn()
1627 PM8001_DEVIO_DBG(pm8001_ha, pm8001_printk( in pm8001_work_fn()
1632 spin_lock_irqsave(&pm8001_ha->lock, flags); in pm8001_work_fn()
1638 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_work_fn()
1648 ccb = &pm8001_ha->ccb_info[i]; in pm8001_work_fn()
1654 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_work_fn()
1666 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_work_fn()
1675 PM8001_IO_DBG(pm8001_ha, in pm8001_work_fn()
1683 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_work_fn()
1688 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_work_fn()
1690 PM8001_IO_DBG(pm8001_ha, in pm8001_work_fn()
1697 pm8001_open_reject_retry(pm8001_ha, t, pm8001_dev); in pm8001_work_fn()
1698 PM8001_IO_DBG(pm8001_ha, pm8001_printk("...Complete\n")); in pm8001_work_fn()
1720 int pm8001_handle_event(struct pm8001_hba_info *pm8001_ha, void *data, in pm8001_handle_event() argument
1728 pw->pm8001_ha = pm8001_ha; in pm8001_handle_event()
1739 static void pm8001_send_abort_all(struct pm8001_hba_info *pm8001_ha, in pm8001_send_abort_all() argument
1752 PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("dev is null\n")); in pm8001_send_abort_all()
1759 PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("cannot " in pm8001_send_abort_all()
1766 res = pm8001_tag_alloc(pm8001_ha, &ccb_tag); in pm8001_send_abort_all()
1770 ccb = &pm8001_ha->ccb_info[ccb_tag]; in pm8001_send_abort_all()
1775 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_send_abort_all()
1782 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &task_abort, in pm8001_send_abort_all()
1785 pm8001_tag_free(pm8001_ha, ccb_tag); in pm8001_send_abort_all()
1789 static void pm8001_send_read_log(struct pm8001_hba_info *pm8001_ha, in pm8001_send_read_log() argument
1805 PM8001_FAIL_DBG(pm8001_ha, in pm8001_send_read_log()
1811 res = pm8001_tag_alloc(pm8001_ha, &ccb_tag); in pm8001_send_read_log()
1814 PM8001_FAIL_DBG(pm8001_ha, in pm8001_send_read_log()
1825 pm8001_tag_free(pm8001_ha, ccb_tag); in pm8001_send_read_log()
1826 PM8001_FAIL_DBG(pm8001_ha, in pm8001_send_read_log()
1833 ccb = &pm8001_ha->ccb_info[ccb_tag]; in pm8001_send_read_log()
1841 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_send_read_log()
1856 res = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &sata_cmd, in pm8001_send_read_log()
1860 pm8001_tag_free(pm8001_ha, ccb_tag); in pm8001_send_read_log()
1877 mpi_ssp_completion(struct pm8001_hba_info *pm8001_ha , void *piomb) in mpi_ssp_completion() argument
1892 ccb = &pm8001_ha->ccb_info[tag]; in mpi_ssp_completion()
1904 PM8001_FAIL_DBG(pm8001_ha, in mpi_ssp_completion()
1912 PM8001_FAIL_DBG(pm8001_ha, in mpi_ssp_completion()
1917 PM8001_IOERR_DBG(pm8001_ha, pm8001_printk( in mpi_ssp_completion()
1923 PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_SUCCESS" in mpi_ssp_completion()
1933 sas_ssp_task_response(pm8001_ha->dev, t, iu); in mpi_ssp_completion()
1939 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
1946 PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_UNDERFLOW" in mpi_ssp_completion()
1955 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
1961 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
1969 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
1976 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
1983 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
1990 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
1997 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2003 pm8001_handle_event(pm8001_ha, in mpi_ssp_completion()
2008 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2015 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2023 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2030 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2037 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2043 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2049 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2056 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2062 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2068 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2073 pm8001_handle_event(pm8001_ha, in mpi_ssp_completion()
2078 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2084 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2090 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2096 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2103 PM8001_DEVIO_DBG(pm8001_ha, in mpi_ssp_completion()
2110 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2119 PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("task 0x%p done with" in mpi_ssp_completion()
2123 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in mpi_ssp_completion()
2126 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in mpi_ssp_completion()
2133 static void mpi_ssp_event(struct pm8001_hba_info *pm8001_ha , void *piomb) in mpi_ssp_event() argument
2147 ccb = &pm8001_ha->ccb_info[tag]; in mpi_ssp_event()
2151 PM8001_FAIL_DBG(pm8001_ha, in mpi_ssp_event()
2156 PM8001_DEVIO_DBG(pm8001_ha, in mpi_ssp_event()
2161 PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_UNDERFLOW\n");) in mpi_ssp_event()
2169 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2171 pm8001_handle_event(pm8001_ha, t, IO_XFER_ERROR_BREAK); in mpi_ssp_event()
2174 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2181 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2189 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2196 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2203 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2209 pm8001_handle_event(pm8001_ha, in mpi_ssp_event()
2214 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2221 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2229 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2236 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2243 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2249 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2251 pm8001_handle_event(pm8001_ha, t, IO_XFER_OPEN_RETRY_TIMEOUT); in mpi_ssp_event()
2254 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2260 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2266 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2272 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2278 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2284 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2290 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2294 PM8001_DEVIO_DBG(pm8001_ha, in mpi_ssp_event()
2307 PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("task 0x%p done with" in mpi_ssp_event()
2311 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in mpi_ssp_event()
2314 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in mpi_ssp_event()
2322 mpi_sata_completion(struct pm8001_hba_info *pm8001_ha, void *piomb) in mpi_sata_completion() argument
2346 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_completion()
2350 ccb = &pm8001_ha->ccb_info[tag]; in mpi_sata_completion()
2356 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_completion()
2365 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_completion()
2372 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_completion()
2379 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_completion()
2385 PM8001_IOERR_DBG(pm8001_ha, pm8001_printk( in mpi_sata_completion()
2395 sata_addr_low[i] = pm8001_ha->sas_addr[j]; in mpi_sata_completion()
2397 sata_addr_hi[i] = pm8001_ha->sas_addr[j]; in mpi_sata_completion()
2419 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_completion()
2424 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_completion()
2431 PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_SUCCESS\n")); in mpi_sata_completion()
2442 pm8001_send_abort_all(pm8001_ha, pm8001_dev); in mpi_sata_completion()
2444 pm8001_tag_free(pm8001_ha, tag); in mpi_sata_completion()
2453 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2461 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2465 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2469 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2477 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2484 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2494 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2503 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2509 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2515 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2522 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2530 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2537 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2544 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2549 pm8001_handle_event(pm8001_ha, in mpi_sata_completion()
2554 pm8001_ccb_task_free_done(pm8001_ha, t, ccb, tag); in mpi_sata_completion()
2559 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2565 pm8001_handle_event(pm8001_ha, in mpi_sata_completion()
2570 pm8001_ccb_task_free_done(pm8001_ha, t, ccb, tag); in mpi_sata_completion()
2575 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2583 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2589 pm8001_handle_event(pm8001_ha, in mpi_sata_completion()
2594 pm8001_ccb_task_free_done(pm8001_ha, t, ccb, tag); in mpi_sata_completion()
2599 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2606 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2612 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2618 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2624 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2630 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2636 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2642 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2648 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2653 pm8001_handle_event(pm8001_ha, pm8001_dev, in mpi_sata_completion()
2657 pm8001_ccb_task_free_done(pm8001_ha, t, ccb, tag); in mpi_sata_completion()
2662 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2668 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2673 pm8001_handle_event(pm8001_ha, pm8001_dev, in mpi_sata_completion()
2677 pm8001_ccb_task_free_done(pm8001_ha, t, ccb, tag); in mpi_sata_completion()
2682 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2689 PM8001_DEVIO_DBG(pm8001_ha, in mpi_sata_completion()
2702 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_completion()
2706 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in mpi_sata_completion()
2709 pm8001_ccb_task_free_done(pm8001_ha, t, ccb, tag); in mpi_sata_completion()
2714 static void mpi_sata_event(struct pm8001_hba_info *pm8001_ha , void *piomb) in mpi_sata_event() argument
2728 ccb = &pm8001_ha->ccb_info[tag]; in mpi_sata_event()
2734 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_event()
2738 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_event()
2744 pm8001_dev = pm8001_find_dev(pm8001_ha, dev_id); in mpi_sata_event()
2747 pm8001_send_read_log(pm8001_ha, pm8001_dev); in mpi_sata_event()
2751 ccb = &pm8001_ha->ccb_info[tag]; in mpi_sata_event()
2755 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_event()
2760 PM8001_DEVIO_DBG(pm8001_ha, pm8001_printk( in mpi_sata_event()
2765 PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_UNDERFLOW\n")); in mpi_sata_event()
2773 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2779 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2786 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2794 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2801 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2808 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2813 pm8001_handle_event(pm8001_ha, in mpi_sata_event()
2818 pm8001_ccb_task_free_done(pm8001_ha, t, ccb, tag); in mpi_sata_event()
2823 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2830 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2838 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2845 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2851 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2857 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2863 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2869 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2875 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2881 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2887 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2893 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2899 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2903 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2909 PM8001_DEVIO_DBG(pm8001_ha, in mpi_sata_event()
2922 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_event()
2926 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in mpi_sata_event()
2929 pm8001_ccb_task_free_done(pm8001_ha, t, ccb, tag); in mpi_sata_event()
2935 mpi_smp_completion(struct pm8001_hba_info *pm8001_ha, void *piomb) in mpi_smp_completion() argument
2950 ccb = &pm8001_ha->ccb_info[tag]; in mpi_smp_completion()
2955 PM8001_FAIL_DBG(pm8001_ha, in mpi_smp_completion()
2957 PM8001_IOERR_DBG(pm8001_ha, in mpi_smp_completion()
2966 PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_SUCCESS\n")); in mpi_smp_completion()
2973 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
2981 PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_UNDERFLOW\n")); in mpi_smp_completion()
2989 PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_NO_DEVICE\n")); in mpi_smp_completion()
2994 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3000 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3006 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3012 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3019 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3026 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3033 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3038 pm8001_handle_event(pm8001_ha, in mpi_smp_completion()
3043 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3050 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3058 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3065 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3071 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3078 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3084 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3091 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3097 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3104 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3111 PM8001_DEVIO_DBG(pm8001_ha, in mpi_smp_completion()
3124 PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("task 0x%p done with" in mpi_smp_completion()
3128 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in mpi_smp_completion()
3131 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in mpi_smp_completion()
3137 void pm8001_mpi_set_dev_state_resp(struct pm8001_hba_info *pm8001_ha, in pm8001_mpi_set_dev_state_resp() argument
3143 struct pm8001_ccb_info *ccb = &pm8001_ha->ccb_info[tag]; in pm8001_mpi_set_dev_state_resp()
3149 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("Set device id = 0x%x state " in pm8001_mpi_set_dev_state_resp()
3155 pm8001_tag_free(pm8001_ha, tag); in pm8001_mpi_set_dev_state_resp()
3158 void pm8001_mpi_set_nvmd_resp(struct pm8001_hba_info *pm8001_ha, void *piomb) in pm8001_mpi_set_nvmd_resp() argument
3163 struct pm8001_ccb_info *ccb = &pm8001_ha->ccb_info[tag]; in pm8001_mpi_set_nvmd_resp()
3165 complete(pm8001_ha->nvmd_completion); in pm8001_mpi_set_nvmd_resp()
3166 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("Set nvm data complete!\n")); in pm8001_mpi_set_nvmd_resp()
3168 PM8001_FAIL_DBG(pm8001_ha, in pm8001_mpi_set_nvmd_resp()
3174 pm8001_tag_free(pm8001_ha, tag); in pm8001_mpi_set_nvmd_resp()
3178 pm8001_mpi_get_nvmd_resp(struct pm8001_hba_info *pm8001_ha, void *piomb) in pm8001_mpi_get_nvmd_resp() argument
3184 struct pm8001_ccb_info *ccb = &pm8001_ha->ccb_info[tag]; in pm8001_mpi_get_nvmd_resp()
3188 void *virt_addr = pm8001_ha->memoryMap.region[NVMD].virt_ptr; in pm8001_mpi_get_nvmd_resp()
3191 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("Get nvm data complete!\n")); in pm8001_mpi_get_nvmd_resp()
3193 PM8001_FAIL_DBG(pm8001_ha, in pm8001_mpi_get_nvmd_resp()
3195 complete(pm8001_ha->nvmd_completion); in pm8001_mpi_get_nvmd_resp()
3201 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_get_nvmd_resp()
3205 memcpy(pm8001_ha->sas_addr, in pm8001_mpi_get_nvmd_resp()
3208 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_get_nvmd_resp()
3221 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_get_nvmd_resp()
3226 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_get_nvmd_resp()
3234 pm8001_ha->memoryMap.region[NVMD].virt_ptr, in pm8001_mpi_get_nvmd_resp()
3239 pm8001_tag_free(pm8001_ha, tag); in pm8001_mpi_get_nvmd_resp()
3240 complete(pm8001_ha->nvmd_completion); in pm8001_mpi_get_nvmd_resp()
3243 int pm8001_mpi_local_phy_ctl(struct pm8001_hba_info *pm8001_ha, void *piomb) in pm8001_mpi_local_phy_ctl() argument
3253 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_local_phy_ctl()
3257 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_local_phy_ctl()
3260 pm8001_ha->phy[phy_id].reset_success = true; in pm8001_mpi_local_phy_ctl()
3262 if (pm8001_ha->phy[phy_id].enable_completion) { in pm8001_mpi_local_phy_ctl()
3263 complete(pm8001_ha->phy[phy_id].enable_completion); in pm8001_mpi_local_phy_ctl()
3264 pm8001_ha->phy[phy_id].enable_completion = NULL; in pm8001_mpi_local_phy_ctl()
3266 pm8001_tag_free(pm8001_ha, tag); in pm8001_mpi_local_phy_ctl()
3281 void pm8001_bytes_dmaed(struct pm8001_hba_info *pm8001_ha, int i) in pm8001_bytes_dmaed() argument
3283 struct pm8001_phy *phy = &pm8001_ha->phy[i]; in pm8001_bytes_dmaed()
3306 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("phy %d byte dmaded.\n", i)); in pm8001_bytes_dmaed()
3309 pm8001_ha->sas->notify_port_event(sas_phy, PORTE_BYTES_DMAED); in pm8001_bytes_dmaed()
3359 struct pm8001_hba_info *pm8001_ha = phy->sas_phy.ha->lldd_ha; in pm8001_get_attached_sas_addr() local
3361 u64 addr = be64_to_cpu(*(__be64 *)pm8001_ha->sas_addr); in pm8001_get_attached_sas_addr()
3381 static void pm8001_hw_event_ack_req(struct pm8001_hba_info *pm8001_ha, in pm8001_hw_event_ack_req() argument
3390 circularQ = &pm8001_ha->inbnd_q_tbl[Qnum]; in pm8001_hw_event_ack_req()
3396 pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, in pm8001_hw_event_ack_req()
3400 static int pm8001_chip_phy_ctl_req(struct pm8001_hba_info *pm8001_ha,
3409 hw_event_sas_phy_up(struct pm8001_hba_info *pm8001_ha, void *piomb) in hw_event_sas_phy_up() argument
3422 struct pm8001_port *port = &pm8001_ha->port[port_id]; in hw_event_sas_phy_up()
3423 struct sas_ha_struct *sas_ha = pm8001_ha->sas; in hw_event_sas_phy_up()
3424 struct pm8001_phy *phy = &pm8001_ha->phy[phy_id]; in hw_event_sas_phy_up()
3429 PM8001_MSG_DBG(pm8001_ha, in hw_event_sas_phy_up()
3435 PM8001_MSG_DBG(pm8001_ha, in hw_event_sas_phy_up()
3439 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("end device.\n")); in hw_event_sas_phy_up()
3440 pm8001_chip_phy_ctl_req(pm8001_ha, phy_id, in hw_event_sas_phy_up()
3446 PM8001_MSG_DBG(pm8001_ha, in hw_event_sas_phy_up()
3452 PM8001_MSG_DBG(pm8001_ha, in hw_event_sas_phy_up()
3458 PM8001_DEVIO_DBG(pm8001_ha, in hw_event_sas_phy_up()
3477 if (pm8001_ha->flags == PM8001F_RUN_TIME) in hw_event_sas_phy_up()
3479 pm8001_bytes_dmaed(pm8001_ha, phy_id); in hw_event_sas_phy_up()
3488 hw_event_sata_phy_up(struct pm8001_hba_info *pm8001_ha, void *piomb) in hw_event_sata_phy_up() argument
3501 struct pm8001_port *port = &pm8001_ha->port[port_id]; in hw_event_sata_phy_up()
3502 struct sas_ha_struct *sas_ha = pm8001_ha->sas; in hw_event_sata_phy_up()
3503 struct pm8001_phy *phy = &pm8001_ha->phy[phy_id]; in hw_event_sata_phy_up()
3505 PM8001_DEVIO_DBG(pm8001_ha, in hw_event_sata_phy_up()
3524 pm8001_bytes_dmaed(pm8001_ha, phy_id); in hw_event_sata_phy_up()
3533 hw_event_phy_down(struct pm8001_hba_info *pm8001_ha, void *piomb) in hw_event_phy_down() argument
3544 struct pm8001_port *port = &pm8001_ha->port[port_id]; in hw_event_phy_down()
3545 struct pm8001_phy *phy = &pm8001_ha->phy[phy_id]; in hw_event_phy_down()
3555 PM8001_MSG_DBG(pm8001_ha, in hw_event_phy_down()
3557 PM8001_MSG_DBG(pm8001_ha, in hw_event_phy_down()
3560 pm8001_hw_event_ack_req(pm8001_ha, 0, HW_EVENT_PHY_DOWN, in hw_event_phy_down()
3564 PM8001_MSG_DBG(pm8001_ha, in hw_event_phy_down()
3568 PM8001_MSG_DBG(pm8001_ha, in hw_event_phy_down()
3573 PM8001_MSG_DBG(pm8001_ha, in hw_event_phy_down()
3575 PM8001_MSG_DBG(pm8001_ha, in hw_event_phy_down()
3578 pm8001_hw_event_ack_req(pm8001_ha, 0, HW_EVENT_PHY_DOWN, in hw_event_phy_down()
3583 PM8001_DEVIO_DBG(pm8001_ha, in hw_event_phy_down()
3601 int pm8001_mpi_reg_resp(struct pm8001_hba_info *pm8001_ha, void *piomb) in pm8001_mpi_reg_resp() argument
3612 ccb = &pm8001_ha->ccb_info[htag]; in pm8001_mpi_reg_resp()
3616 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3620 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("DEVREG_SUCCESS\n")); in pm8001_mpi_reg_resp()
3624 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3628 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3632 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3636 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3640 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3644 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3648 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3652 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3659 pm8001_tag_free(pm8001_ha, htag); in pm8001_mpi_reg_resp()
3663 int pm8001_mpi_dereg_resp(struct pm8001_hba_info *pm8001_ha, void *piomb) in pm8001_mpi_dereg_resp() argument
3673 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_dereg_resp()
3684 int pm8001_mpi_fw_flash_update_resp(struct pm8001_hba_info *pm8001_ha, in pm8001_mpi_fw_flash_update_resp() argument
3691 struct pm8001_ccb_info *ccb = &pm8001_ha->ccb_info[tag]; in pm8001_mpi_fw_flash_update_resp()
3695 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3699 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3703 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3707 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3711 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3715 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3719 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3723 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3727 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3731 PM8001_DEVIO_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3738 pm8001_tag_free(pm8001_ha, tag); in pm8001_mpi_fw_flash_update_resp()
3739 complete(pm8001_ha->nvmd_completion); in pm8001_mpi_fw_flash_update_resp()
3743 int pm8001_mpi_general_event(struct pm8001_hba_info *pm8001_ha , void *piomb) in pm8001_mpi_general_event() argument
3750 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_general_event()
3753 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_general_event()
3759 int pm8001_mpi_task_abort_resp(struct pm8001_hba_info *pm8001_ha, void *piomb) in pm8001_mpi_task_abort_resp() argument
3775 PM8001_FAIL_DBG(pm8001_ha, in pm8001_mpi_task_abort_resp()
3781 ccb = &pm8001_ha->ccb_info[tag]; in pm8001_mpi_task_abort_resp()
3786 PM8001_FAIL_DBG(pm8001_ha, in pm8001_mpi_task_abort_resp()
3792 PM8001_FAIL_DBG(pm8001_ha, in pm8001_mpi_task_abort_resp()
3797 PM8001_EH_DBG(pm8001_ha, pm8001_printk("IO_SUCCESS\n")); in pm8001_mpi_task_abort_resp()
3802 PM8001_EH_DBG(pm8001_ha, pm8001_printk("IO_NOT_VALID\n")); in pm8001_mpi_task_abort_resp()
3811 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in pm8001_mpi_task_abort_resp()
3815 pm8001_tag_free(pm8001_ha, tag); in pm8001_mpi_task_abort_resp()
3830 static int mpi_hw_event(struct pm8001_hba_info *pm8001_ha, void* piomb) in mpi_hw_event() argument
3844 struct sas_ha_struct *sas_ha = pm8001_ha->sas; in mpi_hw_event()
3845 struct pm8001_phy *phy = &pm8001_ha->phy[phy_id]; in mpi_hw_event()
3847 PM8001_DEVIO_DBG(pm8001_ha, pm8001_printk( in mpi_hw_event()
3852 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3857 if (pm8001_ha->flags == PM8001F_RUN_TIME && in mpi_hw_event()
3863 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3865 hw_event_sas_phy_up(pm8001_ha, piomb); in mpi_hw_event()
3868 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3870 hw_event_sata_phy_up(pm8001_ha, piomb); in mpi_hw_event()
3873 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3880 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3885 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3890 hw_event_phy_down(pm8001_ha, piomb); in mpi_hw_event()
3893 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3902 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3904 pm8001_hw_event_ack_req(pm8001_ha, 0, HW_EVENT_BROADCAST_CHANGE, in mpi_hw_event()
3912 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3919 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3927 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3929 pm8001_hw_event_ack_req(pm8001_ha, 0, in mpi_hw_event()
3936 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3938 pm8001_hw_event_ack_req(pm8001_ha, 0, in mpi_hw_event()
3946 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3948 pm8001_hw_event_ack_req(pm8001_ha, 0, in mpi_hw_event()
3956 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3958 pm8001_hw_event_ack_req(pm8001_ha, 0, in mpi_hw_event()
3966 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3970 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3978 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3980 pm8001_hw_event_ack_req(pm8001_ha, 0, in mpi_hw_event()
3985 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3990 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3997 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3999 pm8001_hw_event_ack_req(pm8001_ha, 0, in mpi_hw_event()
4007 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
4014 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
4021 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
4025 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
4029 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
4033 PM8001_DEVIO_DBG(pm8001_ha, in mpi_hw_event()
4045 static void process_one_iomb(struct pm8001_hba_info *pm8001_ha, void *piomb) in process_one_iomb() argument
4050 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("process_one_iomb:")); in process_one_iomb()
4054 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("OPC_OUB_ECHO\n")); in process_one_iomb()
4057 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4059 mpi_hw_event(pm8001_ha, piomb); in process_one_iomb()
4062 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4064 mpi_ssp_completion(pm8001_ha, piomb); in process_one_iomb()
4067 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4069 mpi_smp_completion(pm8001_ha, piomb); in process_one_iomb()
4072 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4074 pm8001_mpi_local_phy_ctl(pm8001_ha, piomb); in process_one_iomb()
4077 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4079 pm8001_mpi_reg_resp(pm8001_ha, piomb); in process_one_iomb()
4082 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4084 pm8001_mpi_dereg_resp(pm8001_ha, piomb); in process_one_iomb()
4087 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4091 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4093 mpi_sata_completion(pm8001_ha, piomb); in process_one_iomb()
4096 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4098 mpi_sata_event(pm8001_ha, piomb); in process_one_iomb()
4101 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4103 mpi_ssp_event(pm8001_ha, piomb); in process_one_iomb()
4106 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4111 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4116 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4120 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4122 pm8001_mpi_fw_flash_update_resp(pm8001_ha, piomb); in process_one_iomb()
4125 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4129 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4133 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4135 pm8001_mpi_general_event(pm8001_ha, piomb); in process_one_iomb()
4138 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4140 pm8001_mpi_task_abort_resp(pm8001_ha, piomb); in process_one_iomb()
4143 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4145 pm8001_mpi_task_abort_resp(pm8001_ha, piomb); in process_one_iomb()
4148 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4152 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4156 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4160 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4164 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4168 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4170 pm8001_mpi_task_abort_resp(pm8001_ha, piomb); in process_one_iomb()
4173 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4175 pm8001_mpi_get_nvmd_resp(pm8001_ha, piomb); in process_one_iomb()
4178 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4180 pm8001_mpi_set_nvmd_resp(pm8001_ha, piomb); in process_one_iomb()
4183 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4187 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4189 pm8001_mpi_set_dev_state_resp(pm8001_ha, piomb); in process_one_iomb()
4192 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4196 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4200 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4204 PM8001_DEVIO_DBG(pm8001_ha, in process_one_iomb()
4211 static int process_oq(struct pm8001_hba_info *pm8001_ha, u8 vec) in process_oq() argument
4219 spin_lock_irqsave(&pm8001_ha->lock, flags); in process_oq()
4220 circularQ = &pm8001_ha->outbnd_q_tbl[vec]; in process_oq()
4222 ret = pm8001_mpi_msg_consume(pm8001_ha, circularQ, &pMsg1, &bc); in process_oq()
4225 process_one_iomb(pm8001_ha, (void *)(pMsg1 - 4)); in process_oq()
4227 pm8001_mpi_msg_free_set(pm8001_ha, pMsg1, in process_oq()
4240 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in process_oq()
4278 static int pm8001_chip_smp_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_smp_req() argument
4296 elem = dma_map_sg(pm8001_ha->dev, sg_req, 1, DMA_TO_DEVICE); in pm8001_chip_smp_req()
4302 elem = dma_map_sg(pm8001_ha->dev, sg_resp, 1, DMA_FROM_DEVICE); in pm8001_chip_smp_req()
4315 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_smp_req()
4326 rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, in pm8001_chip_smp_req()
4334 dma_unmap_sg(pm8001_ha->dev, &ccb->task->smp_task.smp_resp, 1, in pm8001_chip_smp_req()
4337 dma_unmap_sg(pm8001_ha->dev, &ccb->task->smp_task.smp_req, 1, in pm8001_chip_smp_req()
4347 static int pm8001_chip_ssp_io_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_ssp_io_req() argument
4373 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_ssp_io_req()
4394 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &ssp_cmd, in pm8001_chip_ssp_io_req()
4399 static int pm8001_chip_sata_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_sata_req() argument
4416 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_sata_req()
4419 PM8001_IO_DBG(pm8001_ha, pm8001_printk("no data\n")); in pm8001_chip_sata_req()
4423 PM8001_IO_DBG(pm8001_ha, pm8001_printk("DMA\n")); in pm8001_chip_sata_req()
4426 PM8001_IO_DBG(pm8001_ha, pm8001_printk("PIO\n")); in pm8001_chip_sata_req()
4431 PM8001_IO_DBG(pm8001_ha, pm8001_printk("FPDMA\n")); in pm8001_chip_sata_req()
4488 PM8001_FAIL_DBG(pm8001_ha, in pm8001_chip_sata_req()
4492 pm8001_ccb_task_free(pm8001_ha, task, ccb, tag); in pm8001_chip_sata_req()
4496 pm8001_ccb_task_free_done(pm8001_ha, task, in pm8001_chip_sata_req()
4503 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &sata_cmd, in pm8001_chip_sata_req()
4514 pm8001_chip_phy_start_req(struct pm8001_hba_info *pm8001_ha, u8 phy_id) in pm8001_chip_phy_start_req() argument
4521 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_phy_start_req()
4536 pm8001_ha->sas_addr, SAS_ADDR_SIZE); in pm8001_chip_phy_start_req()
4538 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opcode, &payload, in pm8001_chip_phy_start_req()
4548 static int pm8001_chip_phy_stop_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_phy_stop_req() argument
4556 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_phy_stop_req()
4560 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opcode, &payload, in pm8001_chip_phy_stop_req()
4568 static int pm8001_chip_reg_dev_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_reg_dev_req() argument
4583 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_reg_dev_req()
4586 rc = pm8001_tag_alloc(pm8001_ha, &tag); in pm8001_chip_reg_dev_req()
4589 ccb = &pm8001_ha->ccb_info[tag]; in pm8001_chip_reg_dev_req()
4620 rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, in pm8001_chip_reg_dev_req()
4628 int pm8001_chip_dereg_dev_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_dereg_dev_req() argument
4636 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_dereg_dev_req()
4640 PM8001_MSG_DBG(pm8001_ha, in pm8001_chip_dereg_dev_req()
4642 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, in pm8001_chip_dereg_dev_req()
4653 static int pm8001_chip_phy_ctl_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_phy_ctl_req() argument
4661 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_phy_ctl_req()
4665 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, in pm8001_chip_phy_ctl_req()
4670 static u32 pm8001_chip_is_our_interrupt(struct pm8001_hba_info *pm8001_ha) in pm8001_chip_is_our_interrupt() argument
4677 value = pm8001_cr32(pm8001_ha, 0, MSGU_ODR); in pm8001_chip_is_our_interrupt()
4690 pm8001_chip_isr(struct pm8001_hba_info *pm8001_ha, u8 vec) in pm8001_chip_isr() argument
4692 pm8001_chip_interrupt_disable(pm8001_ha, vec); in pm8001_chip_isr()
4693 PM8001_DEVIO_DBG(pm8001_ha, pm8001_printk( in pm8001_chip_isr()
4695 vec, pm8001_cr32(pm8001_ha, 0, 0x30))); in pm8001_chip_isr()
4696 process_oq(pm8001_ha, vec); in pm8001_chip_isr()
4697 pm8001_chip_interrupt_enable(pm8001_ha, vec); in pm8001_chip_isr()
4701 static int send_task_abort(struct pm8001_hba_info *pm8001_ha, u32 opc, in send_task_abort() argument
4707 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in send_task_abort()
4719 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &task_abort, in send_task_abort()
4727 int pm8001_chip_abort_task(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_abort_task() argument
4732 PM8001_EH_DBG(pm8001_ha, in pm8001_chip_abort_task()
4742 rc = send_task_abort(pm8001_ha, opc, device_id, flag, in pm8001_chip_abort_task()
4745 PM8001_EH_DBG(pm8001_ha, pm8001_printk("rc= %d\n", rc)); in pm8001_chip_abort_task()
4755 int pm8001_chip_ssp_tm_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_ssp_tm_req() argument
4772 if (pm8001_ha->chip_id != chip_8001) in pm8001_chip_ssp_tm_req()
4774 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_ssp_tm_req()
4775 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &sspTMCmd, in pm8001_chip_ssp_tm_req()
4780 int pm8001_chip_get_nvmd_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_get_nvmd_req() argument
4799 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_get_nvmd_req()
4801 rc = pm8001_tag_alloc(pm8001_ha, &tag); in pm8001_chip_get_nvmd_req()
4806 ccb = &pm8001_ha->ccb_info[tag]; in pm8001_chip_get_nvmd_req()
4821 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_get_nvmd_req()
4823 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_get_nvmd_req()
4830 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_get_nvmd_req()
4832 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_get_nvmd_req()
4839 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_get_nvmd_req()
4841 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_get_nvmd_req()
4848 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_get_nvmd_req()
4850 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_get_nvmd_req()
4858 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_get_nvmd_req()
4860 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_get_nvmd_req()
4866 rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &nvmd_req, in pm8001_chip_get_nvmd_req()
4870 pm8001_tag_free(pm8001_ha, tag); in pm8001_chip_get_nvmd_req()
4875 int pm8001_chip_set_nvmd_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_set_nvmd_req() argument
4892 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_set_nvmd_req()
4893 memcpy(pm8001_ha->memoryMap.region[NVMD].virt_ptr, in pm8001_chip_set_nvmd_req()
4897 rc = pm8001_tag_alloc(pm8001_ha, &tag); in pm8001_chip_set_nvmd_req()
4902 ccb = &pm8001_ha->ccb_info[tag]; in pm8001_chip_set_nvmd_req()
4916 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_set_nvmd_req()
4918 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_set_nvmd_req()
4926 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_set_nvmd_req()
4928 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_set_nvmd_req()
4935 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_set_nvmd_req()
4937 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_set_nvmd_req()
4944 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_set_nvmd_req()
4946 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_set_nvmd_req()
4951 rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &nvmd_req, in pm8001_chip_set_nvmd_req()
4955 pm8001_tag_free(pm8001_ha, tag); in pm8001_chip_set_nvmd_req()
4967 pm8001_chip_fw_flash_update_build(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_fw_flash_update_build() argument
4977 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_fw_flash_update_build()
4988 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, in pm8001_chip_fw_flash_update_build()
4994 pm8001_chip_fw_flash_update_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_fw_flash_update_req() argument
5003 void *buffer = pm8001_ha->memoryMap.region[FW_FLASH].virt_ptr; in pm8001_chip_fw_flash_update_req()
5004 dma_addr_t phys_addr = pm8001_ha->memoryMap.region[FW_FLASH].phys_addr; in pm8001_chip_fw_flash_update_req()
5011 PM8001_DEVIO_DBG(pm8001_ha, pm8001_printk( in pm8001_chip_fw_flash_update_req()
5024 rc = pm8001_tag_alloc(pm8001_ha, &tag); in pm8001_chip_fw_flash_update_req()
5029 ccb = &pm8001_ha->ccb_info[tag]; in pm8001_chip_fw_flash_update_req()
5032 rc = pm8001_chip_fw_flash_update_build(pm8001_ha, &flash_update_info, in pm8001_chip_fw_flash_update_req()
5046 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_get_gsm_dump() local
5049 gsm_dump_offset = pm8001_ha->fatal_forensic_shift_offset; in pm8001_get_gsm_dump()
5056 if (pm8001_ha->chip_id == chip_8001) in pm8001_get_gsm_dump()
5070 if (pm8001_ha->chip_id == chip_8001) in pm8001_get_gsm_dump()
5078 if (pm8001_ha->chip_id == chip_8001) { in pm8001_get_gsm_dump()
5080 if (-1 == pm8001_bar4_shift(pm8001_ha, in pm8001_get_gsm_dump()
5085 if (-1 == pm80xx_bar4_shift(pm8001_ha, in pm8001_get_gsm_dump()
5094 value = pm8001_cr32(pm8001_ha, bar, (work_offset + offset) & in pm8001_get_gsm_dump()
5100 value = pm8001_cr32(pm8001_ha, bar, (work_offset + offset) & in pm8001_get_gsm_dump()
5106 if (-1 == pm8001_bar4_shift(pm8001_ha, 0)) in pm8001_get_gsm_dump()
5108 pm8001_ha->fatal_forensic_shift_offset += 1024; in pm8001_get_gsm_dump()
5110 if (pm8001_ha->fatal_forensic_shift_offset >= 0x100000) in pm8001_get_gsm_dump()
5111 pm8001_ha->fatal_forensic_shift_offset = 0; in pm8001_get_gsm_dump()
5116 pm8001_chip_set_dev_state_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_set_dev_state_req() argument
5126 rc = pm8001_tag_alloc(pm8001_ha, &tag); in pm8001_chip_set_dev_state_req()
5129 ccb = &pm8001_ha->ccb_info[tag]; in pm8001_chip_set_dev_state_req()
5132 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_set_dev_state_req()
5136 rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, in pm8001_chip_set_dev_state_req()
5143 pm8001_chip_sas_re_initialization(struct pm8001_hba_info *pm8001_ha) in pm8001_chip_sas_re_initialization() argument
5152 rc = pm8001_tag_alloc(pm8001_ha, &tag); in pm8001_chip_sas_re_initialization()
5155 ccb = &pm8001_ha->ccb_info[tag]; in pm8001_chip_sas_re_initialization()
5157 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_sas_re_initialization()
5162 rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, in pm8001_chip_sas_re_initialization()
5165 pm8001_tag_free(pm8001_ha, tag); in pm8001_chip_sas_re_initialization()