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()
193 pm8001_ha->main_cfg_tbl.pm8001_tbl.inbound_q_nppd_hppd = 0; in init_default_table_values()
194 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_hw_event_pid0_3 = 0; in init_default_table_values()
195 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_hw_event_pid4_7 = 0; in init_default_table_values()
196 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_ncq_event_pid0_3 = 0; in init_default_table_values()
197 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_ncq_event_pid4_7 = 0; in init_default_table_values()
198 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_tgt_ITNexus_event_pid0_3 = in init_default_table_values()
200 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_tgt_ITNexus_event_pid4_7 = in init_default_table_values()
202 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_tgt_ssp_event_pid0_3 = 0; in init_default_table_values()
203 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_tgt_ssp_event_pid4_7 = 0; in init_default_table_values()
204 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_tgt_smp_event_pid0_3 = 0; in init_default_table_values()
205 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_tgt_smp_event_pid4_7 = 0; in init_default_table_values()
207 pm8001_ha->main_cfg_tbl.pm8001_tbl.upper_event_log_addr = in init_default_table_values()
208 pm8001_ha->memoryMap.region[AAP1].phys_addr_hi; in init_default_table_values()
209 pm8001_ha->main_cfg_tbl.pm8001_tbl.lower_event_log_addr = in init_default_table_values()
210 pm8001_ha->memoryMap.region[AAP1].phys_addr_lo; in init_default_table_values()
211 pm8001_ha->main_cfg_tbl.pm8001_tbl.event_log_size = in init_default_table_values()
213 pm8001_ha->main_cfg_tbl.pm8001_tbl.event_log_option = 0x01; in init_default_table_values()
214 pm8001_ha->main_cfg_tbl.pm8001_tbl.upper_iop_event_log_addr = in init_default_table_values()
215 pm8001_ha->memoryMap.region[IOP].phys_addr_hi; in init_default_table_values()
216 pm8001_ha->main_cfg_tbl.pm8001_tbl.lower_iop_event_log_addr = in init_default_table_values()
217 pm8001_ha->memoryMap.region[IOP].phys_addr_lo; in init_default_table_values()
218 pm8001_ha->main_cfg_tbl.pm8001_tbl.iop_event_log_size = in init_default_table_values()
220 pm8001_ha->main_cfg_tbl.pm8001_tbl.iop_event_log_option = 0x01; in init_default_table_values()
221 pm8001_ha->main_cfg_tbl.pm8001_tbl.fatal_err_interrupt = 0x01; in init_default_table_values()
223 pm8001_ha->inbnd_q_tbl[i].element_pri_size_cnt = in init_default_table_values()
224 PM8001_MPI_QUEUE | (pm8001_ha->iomb_size << 16) | (0x00<<30); in init_default_table_values()
225 pm8001_ha->inbnd_q_tbl[i].upper_base_addr = in init_default_table_values()
226 pm8001_ha->memoryMap.region[IB + i].phys_addr_hi; in init_default_table_values()
227 pm8001_ha->inbnd_q_tbl[i].lower_base_addr = in init_default_table_values()
228 pm8001_ha->memoryMap.region[IB + i].phys_addr_lo; in init_default_table_values()
229 pm8001_ha->inbnd_q_tbl[i].base_virt = in init_default_table_values()
230 (u8 *)pm8001_ha->memoryMap.region[IB + i].virt_ptr; in init_default_table_values()
231 pm8001_ha->inbnd_q_tbl[i].total_length = in init_default_table_values()
232 pm8001_ha->memoryMap.region[IB + i].total_len; in init_default_table_values()
233 pm8001_ha->inbnd_q_tbl[i].ci_upper_base_addr = in init_default_table_values()
234 pm8001_ha->memoryMap.region[CI + i].phys_addr_hi; in init_default_table_values()
235 pm8001_ha->inbnd_q_tbl[i].ci_lower_base_addr = in init_default_table_values()
236 pm8001_ha->memoryMap.region[CI + i].phys_addr_lo; in init_default_table_values()
237 pm8001_ha->inbnd_q_tbl[i].ci_virt = in init_default_table_values()
238 pm8001_ha->memoryMap.region[CI + i].virt_ptr; in init_default_table_values()
240 pm8001_ha->inbnd_q_tbl[i].pi_pci_bar = in init_default_table_values()
243 pm8001_ha->inbnd_q_tbl[i].pi_offset = in init_default_table_values()
245 pm8001_ha->inbnd_q_tbl[i].producer_idx = 0; in init_default_table_values()
246 pm8001_ha->inbnd_q_tbl[i].consumer_index = 0; in init_default_table_values()
249 pm8001_ha->outbnd_q_tbl[i].element_size_cnt = in init_default_table_values()
250 PM8001_MPI_QUEUE | (pm8001_ha->iomb_size << 16) | (0x01<<30); in init_default_table_values()
251 pm8001_ha->outbnd_q_tbl[i].upper_base_addr = in init_default_table_values()
252 pm8001_ha->memoryMap.region[OB + i].phys_addr_hi; in init_default_table_values()
253 pm8001_ha->outbnd_q_tbl[i].lower_base_addr = in init_default_table_values()
254 pm8001_ha->memoryMap.region[OB + i].phys_addr_lo; in init_default_table_values()
255 pm8001_ha->outbnd_q_tbl[i].base_virt = in init_default_table_values()
256 (u8 *)pm8001_ha->memoryMap.region[OB + i].virt_ptr; in init_default_table_values()
257 pm8001_ha->outbnd_q_tbl[i].total_length = in init_default_table_values()
258 pm8001_ha->memoryMap.region[OB + i].total_len; in init_default_table_values()
259 pm8001_ha->outbnd_q_tbl[i].pi_upper_base_addr = in init_default_table_values()
260 pm8001_ha->memoryMap.region[PI + i].phys_addr_hi; in init_default_table_values()
261 pm8001_ha->outbnd_q_tbl[i].pi_lower_base_addr = in init_default_table_values()
262 pm8001_ha->memoryMap.region[PI + i].phys_addr_lo; in init_default_table_values()
263 pm8001_ha->outbnd_q_tbl[i].interrup_vec_cnt_delay = in init_default_table_values()
265 pm8001_ha->outbnd_q_tbl[i].pi_virt = in init_default_table_values()
266 pm8001_ha->memoryMap.region[PI + i].virt_ptr; in init_default_table_values()
268 pm8001_ha->outbnd_q_tbl[i].ci_pci_bar = in init_default_table_values()
271 pm8001_ha->outbnd_q_tbl[i].ci_offset = in init_default_table_values()
273 pm8001_ha->outbnd_q_tbl[i].consumer_idx = 0; in init_default_table_values()
274 pm8001_ha->outbnd_q_tbl[i].producer_index = 0; in init_default_table_values()
282 static void update_main_config_table(struct pm8001_hba_info *pm8001_ha) in update_main_config_table() argument
284 void __iomem *address = pm8001_ha->main_cfg_tbl_addr; in update_main_config_table()
286 pm8001_ha->main_cfg_tbl.pm8001_tbl.inbound_q_nppd_hppd); in update_main_config_table()
288 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_hw_event_pid0_3); in update_main_config_table()
290 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_hw_event_pid4_7); in update_main_config_table()
292 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_ncq_event_pid0_3); in update_main_config_table()
294 pm8001_ha->main_cfg_tbl.pm8001_tbl.outbound_ncq_event_pid4_7); in update_main_config_table()
296 pm8001_ha->main_cfg_tbl.pm8001_tbl. in update_main_config_table()
299 pm8001_ha->main_cfg_tbl.pm8001_tbl. in update_main_config_table()
302 pm8001_ha->main_cfg_tbl.pm8001_tbl. in update_main_config_table()
305 pm8001_ha->main_cfg_tbl.pm8001_tbl. in update_main_config_table()
308 pm8001_ha->main_cfg_tbl.pm8001_tbl. in update_main_config_table()
311 pm8001_ha->main_cfg_tbl.pm8001_tbl. in update_main_config_table()
314 pm8001_ha->main_cfg_tbl.pm8001_tbl.upper_event_log_addr); in update_main_config_table()
316 pm8001_ha->main_cfg_tbl.pm8001_tbl.lower_event_log_addr); in update_main_config_table()
318 pm8001_ha->main_cfg_tbl.pm8001_tbl.event_log_size); in update_main_config_table()
320 pm8001_ha->main_cfg_tbl.pm8001_tbl.event_log_option); in update_main_config_table()
322 pm8001_ha->main_cfg_tbl.pm8001_tbl.upper_iop_event_log_addr); in update_main_config_table()
324 pm8001_ha->main_cfg_tbl.pm8001_tbl.lower_iop_event_log_addr); in update_main_config_table()
326 pm8001_ha->main_cfg_tbl.pm8001_tbl.iop_event_log_size); in update_main_config_table()
328 pm8001_ha->main_cfg_tbl.pm8001_tbl.iop_event_log_option); in update_main_config_table()
330 pm8001_ha->main_cfg_tbl.pm8001_tbl.fatal_err_interrupt); in update_main_config_table()
337 static void update_inbnd_queue_table(struct pm8001_hba_info *pm8001_ha, in update_inbnd_queue_table() argument
340 void __iomem *address = pm8001_ha->inbnd_q_tbl_addr; in update_inbnd_queue_table()
343 pm8001_ha->inbnd_q_tbl[number].element_pri_size_cnt); in update_inbnd_queue_table()
345 pm8001_ha->inbnd_q_tbl[number].upper_base_addr); in update_inbnd_queue_table()
347 pm8001_ha->inbnd_q_tbl[number].lower_base_addr); in update_inbnd_queue_table()
349 pm8001_ha->inbnd_q_tbl[number].ci_upper_base_addr); in update_inbnd_queue_table()
351 pm8001_ha->inbnd_q_tbl[number].ci_lower_base_addr); in update_inbnd_queue_table()
358 static void update_outbnd_queue_table(struct pm8001_hba_info *pm8001_ha, in update_outbnd_queue_table() argument
361 void __iomem *address = pm8001_ha->outbnd_q_tbl_addr; in update_outbnd_queue_table()
364 pm8001_ha->outbnd_q_tbl[number].element_size_cnt); in update_outbnd_queue_table()
366 pm8001_ha->outbnd_q_tbl[number].upper_base_addr); in update_outbnd_queue_table()
368 pm8001_ha->outbnd_q_tbl[number].lower_base_addr); in update_outbnd_queue_table()
370 pm8001_ha->outbnd_q_tbl[number].pi_upper_base_addr); in update_outbnd_queue_table()
372 pm8001_ha->outbnd_q_tbl[number].pi_lower_base_addr); in update_outbnd_queue_table()
374 pm8001_ha->outbnd_q_tbl[number].interrup_vec_cnt_delay); in update_outbnd_queue_table()
382 int pm8001_bar4_shift(struct pm8001_hba_info *pm8001_ha, u32 shiftValue) in pm8001_bar4_shift() argument
388 pm8001_cw32(pm8001_ha, 1, SPC_IBW_AXI_TRANSLATION_LOW, shiftValue); in pm8001_bar4_shift()
393 regVal = pm8001_cr32(pm8001_ha, 1, SPC_IBW_AXI_TRANSLATION_LOW); in pm8001_bar4_shift()
397 PM8001_INIT_DBG(pm8001_ha, in pm8001_bar4_shift()
410 static void mpi_set_phys_g3_with_ssc(struct pm8001_hba_info *pm8001_ha, in mpi_set_phys_g3_with_ssc() argument
428 spin_lock_irqsave(&pm8001_ha->lock, flags); in mpi_set_phys_g3_with_ssc()
429 if (-1 == pm8001_bar4_shift(pm8001_ha, in mpi_set_phys_g3_with_ssc()
431 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in mpi_set_phys_g3_with_ssc()
437 pm8001_cw32(pm8001_ha, 2, offset, 0x80001501); in mpi_set_phys_g3_with_ssc()
440 if (-1 == pm8001_bar4_shift(pm8001_ha, in mpi_set_phys_g3_with_ssc()
442 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in mpi_set_phys_g3_with_ssc()
447 pm8001_cw32(pm8001_ha, 2, offset, 0x80001501); in mpi_set_phys_g3_with_ssc()
464 value = pm8001_cr32(pm8001_ha, 2, 0xd8); in mpi_set_phys_g3_with_ssc()
465 pm8001_cw32(pm8001_ha, 2, 0xd8, 0x8000C016); in mpi_set_phys_g3_with_ssc()
468 pm8001_bar4_shift(pm8001_ha, 0x0); in mpi_set_phys_g3_with_ssc()
469 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in mpi_set_phys_g3_with_ssc()
478 static void mpi_set_open_retry_interval_reg(struct pm8001_hba_info *pm8001_ha, in mpi_set_open_retry_interval_reg() argument
493 spin_lock_irqsave(&pm8001_ha->lock, flags); in mpi_set_open_retry_interval_reg()
495 if (-1 == pm8001_bar4_shift(pm8001_ha, in mpi_set_open_retry_interval_reg()
497 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in mpi_set_open_retry_interval_reg()
502 pm8001_cw32(pm8001_ha, 2, offset, value); in mpi_set_open_retry_interval_reg()
505 if (-1 == pm8001_bar4_shift(pm8001_ha, in mpi_set_open_retry_interval_reg()
507 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in mpi_set_open_retry_interval_reg()
512 pm8001_cw32(pm8001_ha, 2, offset, value); in mpi_set_open_retry_interval_reg()
515 pm8001_bar4_shift(pm8001_ha, 0x0); in mpi_set_open_retry_interval_reg()
516 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in mpi_set_open_retry_interval_reg()
524 static int mpi_init_check(struct pm8001_hba_info *pm8001_ha) in mpi_init_check() argument
531 pm8001_cw32(pm8001_ha, 0, MSGU_IBDB_SET, SPC_MSGU_CFG_TABLE_UPDATE); in mpi_init_check()
536 value = pm8001_cr32(pm8001_ha, 0, MSGU_IBDB_SET); in mpi_init_check()
544 pm8001_mr32(pm8001_ha->general_stat_tbl_addr, in mpi_init_check()
559 static int check_fw_ready(struct pm8001_hba_info *pm8001_ha) in check_fw_ready() argument
564 value = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_1); in check_fw_ready()
565 value1 = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_2); in check_fw_ready()
569 value = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_0); in check_fw_ready()
576 value1 = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_3); in check_fw_ready()
584 pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_0); in check_fw_ready()
600 value = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_1) in check_fw_ready()
602 value1 = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_2) in check_fw_ready()
610 static void init_pci_device_addresses(struct pm8001_hba_info *pm8001_ha) in init_pci_device_addresses() argument
618 value = pm8001_cr32(pm8001_ha, 0, 0x44); in init_pci_device_addresses()
620 PM8001_INIT_DBG(pm8001_ha, in init_pci_device_addresses()
624 PM8001_INIT_DBG(pm8001_ha, in init_pci_device_addresses()
626 pm8001_ha->main_cfg_tbl_addr = base_addr = in init_pci_device_addresses()
627 pm8001_ha->io_mem[pcibar].memvirtaddr + offset; in init_pci_device_addresses()
628 pm8001_ha->general_stat_tbl_addr = in init_pci_device_addresses()
629 base_addr + pm8001_cr32(pm8001_ha, pcibar, offset + 0x18); in init_pci_device_addresses()
630 pm8001_ha->inbnd_q_tbl_addr = in init_pci_device_addresses()
631 base_addr + pm8001_cr32(pm8001_ha, pcibar, offset + 0x1C); in init_pci_device_addresses()
632 pm8001_ha->outbnd_q_tbl_addr = in init_pci_device_addresses()
633 base_addr + pm8001_cr32(pm8001_ha, pcibar, offset + 0x20); in init_pci_device_addresses()
640 static int pm8001_chip_init(struct pm8001_hba_info *pm8001_ha) in pm8001_chip_init() argument
644 pci_read_config_word(pm8001_ha->pdev, PCI_DEVICE_ID, &deviceid); in pm8001_chip_init()
648 if (-1 == pm8001_bar4_shift(pm8001_ha, GSM_SM_BASE)) { in pm8001_chip_init()
649 PM8001_FAIL_DBG(pm8001_ha, in pm8001_chip_init()
656 if (-1 == check_fw_ready(pm8001_ha)) { in pm8001_chip_init()
657 PM8001_FAIL_DBG(pm8001_ha, in pm8001_chip_init()
663 init_pci_device_addresses(pm8001_ha); in pm8001_chip_init()
664 init_default_table_values(pm8001_ha); in pm8001_chip_init()
665 read_main_config_table(pm8001_ha); in pm8001_chip_init()
666 read_general_status_table(pm8001_ha); in pm8001_chip_init()
667 read_inbnd_queue_table(pm8001_ha); in pm8001_chip_init()
668 read_outbnd_queue_table(pm8001_ha); in pm8001_chip_init()
670 update_main_config_table(pm8001_ha); in pm8001_chip_init()
672 update_inbnd_queue_table(pm8001_ha, i); in pm8001_chip_init()
674 update_outbnd_queue_table(pm8001_ha, i); in pm8001_chip_init()
677 mpi_set_phys_g3_with_ssc(pm8001_ha, 0); in pm8001_chip_init()
679 mpi_set_open_retry_interval_reg(pm8001_ha, 119); in pm8001_chip_init()
682 if (0 == mpi_init_check(pm8001_ha)) { in pm8001_chip_init()
683 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_init()
692 pm8001_cw32(pm8001_ha, 1, 0x0033c0, 0x1); in pm8001_chip_init()
693 pm8001_cw32(pm8001_ha, 1, 0x0033c4, 0x0); in pm8001_chip_init()
697 static int mpi_uninit_check(struct pm8001_hba_info *pm8001_ha) in mpi_uninit_check() argument
703 pci_read_config_word(pm8001_ha->pdev, PCI_DEVICE_ID, &deviceid); in mpi_uninit_check()
705 if (-1 == pm8001_bar4_shift(pm8001_ha, GSM_SM_BASE)) { in mpi_uninit_check()
706 PM8001_FAIL_DBG(pm8001_ha, in mpi_uninit_check()
712 init_pci_device_addresses(pm8001_ha); in mpi_uninit_check()
715 pm8001_cw32(pm8001_ha, 0, MSGU_IBDB_SET, SPC_MSGU_CFG_TABLE_RESET); in mpi_uninit_check()
721 value = pm8001_cr32(pm8001_ha, 0, MSGU_IBDB_SET); in mpi_uninit_check()
726 PM8001_FAIL_DBG(pm8001_ha, in mpi_uninit_check()
737 pm8001_mr32(pm8001_ha->general_stat_tbl_addr, in mpi_uninit_check()
744 PM8001_FAIL_DBG(pm8001_ha, in mpi_uninit_check()
756 static u32 soft_reset_ready_check(struct pm8001_hba_info *pm8001_ha) in soft_reset_ready_check() argument
759 if (mpi_uninit_check(pm8001_ha) != 0) { in soft_reset_ready_check()
760 PM8001_FAIL_DBG(pm8001_ha, in soft_reset_ready_check()
765 regVal = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_2) in soft_reset_ready_check()
768 PM8001_INIT_DBG(pm8001_ha, in soft_reset_ready_check()
773 spin_lock_irqsave(&pm8001_ha->lock, flags); in soft_reset_ready_check()
774 if (-1 == pm8001_bar4_shift(pm8001_ha, RB6_ACCESS_REG)) { in soft_reset_ready_check()
775 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in soft_reset_ready_check()
776 PM8001_FAIL_DBG(pm8001_ha, in soft_reset_ready_check()
781 pm8001_cw32(pm8001_ha, 2, SPC_RB6_OFFSET, in soft_reset_ready_check()
783 pm8001_cw32(pm8001_ha, 2, SPC_RB6_OFFSET, RB6_MAGIC_NUMBER_RST); in soft_reset_ready_check()
786 regVal = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_2) & in soft_reset_ready_check()
789 regVal1 = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_1); in soft_reset_ready_check()
790 regVal2 = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_2); in soft_reset_ready_check()
791 PM8001_FAIL_DBG(pm8001_ha, in soft_reset_ready_check()
795 PM8001_FAIL_DBG(pm8001_ha, in soft_reset_ready_check()
797 pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_0))); in soft_reset_ready_check()
798 PM8001_FAIL_DBG(pm8001_ha, in soft_reset_ready_check()
800 pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_3))); in soft_reset_ready_check()
801 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in soft_reset_ready_check()
804 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in soft_reset_ready_check()
815 pm8001_chip_soft_rst(struct pm8001_hba_info *pm8001_ha) in pm8001_chip_soft_rst() argument
824 if (soft_reset_ready_check(pm8001_ha) != 0) { in pm8001_chip_soft_rst()
825 PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("FW is not ready\n")); in pm8001_chip_soft_rst()
832 spin_lock_irqsave(&pm8001_ha->lock, flags); in pm8001_chip_soft_rst()
833 if (-1 == pm8001_bar4_shift(pm8001_ha, MBIC_AAP1_ADDR_BASE)) { in pm8001_chip_soft_rst()
834 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_chip_soft_rst()
835 PM8001_FAIL_DBG(pm8001_ha, in pm8001_chip_soft_rst()
840 regVal = pm8001_cr32(pm8001_ha, 2, MBIC_NMI_ENABLE_VPE0_IOP); in pm8001_chip_soft_rst()
841 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
843 pm8001_cw32(pm8001_ha, 2, MBIC_NMI_ENABLE_VPE0_IOP, 0x0); in pm8001_chip_soft_rst()
845 if (-1 == pm8001_bar4_shift(pm8001_ha, MBIC_IOP_ADDR_BASE)) { in pm8001_chip_soft_rst()
846 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_chip_soft_rst()
847 PM8001_FAIL_DBG(pm8001_ha, in pm8001_chip_soft_rst()
852 regVal = pm8001_cr32(pm8001_ha, 2, MBIC_NMI_ENABLE_VPE0_AAP1); in pm8001_chip_soft_rst()
853 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
855 pm8001_cw32(pm8001_ha, 2, MBIC_NMI_ENABLE_VPE0_AAP1, 0x0); in pm8001_chip_soft_rst()
857 regVal = pm8001_cr32(pm8001_ha, 1, PCIE_EVENT_INTERRUPT_ENABLE); in pm8001_chip_soft_rst()
858 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
860 pm8001_cw32(pm8001_ha, 1, PCIE_EVENT_INTERRUPT_ENABLE, 0x0); in pm8001_chip_soft_rst()
862 regVal = pm8001_cr32(pm8001_ha, 1, PCIE_EVENT_INTERRUPT); in pm8001_chip_soft_rst()
863 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
865 pm8001_cw32(pm8001_ha, 1, PCIE_EVENT_INTERRUPT, regVal); in pm8001_chip_soft_rst()
867 regVal = pm8001_cr32(pm8001_ha, 1, PCIE_ERROR_INTERRUPT_ENABLE); in pm8001_chip_soft_rst()
868 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
870 pm8001_cw32(pm8001_ha, 1, PCIE_ERROR_INTERRUPT_ENABLE, 0x0); in pm8001_chip_soft_rst()
872 regVal = pm8001_cr32(pm8001_ha, 1, PCIE_ERROR_INTERRUPT); in pm8001_chip_soft_rst()
873 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
875 pm8001_cw32(pm8001_ha, 1, PCIE_ERROR_INTERRUPT, regVal); in pm8001_chip_soft_rst()
878 regVal = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_1) in pm8001_chip_soft_rst()
884 pm8001_cw32(pm8001_ha, 0, MSGU_HOST_SCRATCH_PAD_0, signature); in pm8001_chip_soft_rst()
888 if (-1 == pm8001_bar4_shift(pm8001_ha, GSM_ADDR_BASE)) { in pm8001_chip_soft_rst()
889 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_chip_soft_rst()
890 PM8001_FAIL_DBG(pm8001_ha, in pm8001_chip_soft_rst()
895 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
898 pm8001_cr32(pm8001_ha, 2, GSM_CONFIG_RESET))); in pm8001_chip_soft_rst()
901 regVal = pm8001_cr32(pm8001_ha, 2, GSM_CONFIG_RESET); in pm8001_chip_soft_rst()
912 pm8001_cw32(pm8001_ha, 2, GSM_CONFIG_RESET, regVal); in pm8001_chip_soft_rst()
913 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
916 pm8001_cr32(pm8001_ha, 2, GSM_CONFIG_RESET))); in pm8001_chip_soft_rst()
920 regVal1 = pm8001_cr32(pm8001_ha, 2, GSM_READ_ADDR_PARITY_CHECK); in pm8001_chip_soft_rst()
921 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
924 pm8001_cw32(pm8001_ha, 2, GSM_READ_ADDR_PARITY_CHECK, 0x0); in pm8001_chip_soft_rst()
925 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
928 pm8001_cr32(pm8001_ha, 2, GSM_READ_ADDR_PARITY_CHECK))); in pm8001_chip_soft_rst()
931 regVal2 = pm8001_cr32(pm8001_ha, 2, GSM_WRITE_ADDR_PARITY_CHECK); in pm8001_chip_soft_rst()
932 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
935 pm8001_cw32(pm8001_ha, 2, GSM_WRITE_ADDR_PARITY_CHECK, 0x0); in pm8001_chip_soft_rst()
936 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
939 pm8001_cr32(pm8001_ha, 2, GSM_WRITE_ADDR_PARITY_CHECK))); in pm8001_chip_soft_rst()
942 regVal3 = pm8001_cr32(pm8001_ha, 2, GSM_WRITE_DATA_PARITY_CHECK); in pm8001_chip_soft_rst()
943 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
946 pm8001_cw32(pm8001_ha, 2, GSM_WRITE_DATA_PARITY_CHECK, 0x0); in pm8001_chip_soft_rst()
947 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
950 pm8001_cr32(pm8001_ha, 2, GSM_WRITE_DATA_PARITY_CHECK))); in pm8001_chip_soft_rst()
955 if (-1 == pm8001_bar4_shift(pm8001_ha, GPIO_ADDR_BASE)) { in pm8001_chip_soft_rst()
956 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_chip_soft_rst()
957 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
962 regVal = pm8001_cr32(pm8001_ha, 2, GPIO_GPIO_0_0UTPUT_CTL_OFFSET); in pm8001_chip_soft_rst()
963 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
968 pm8001_cw32(pm8001_ha, 2, GPIO_GPIO_0_0UTPUT_CTL_OFFSET, regVal); in pm8001_chip_soft_rst()
972 if (-1 == pm8001_bar4_shift(pm8001_ha, SPC_TOP_LEVEL_ADDR_BASE)) { in pm8001_chip_soft_rst()
973 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_chip_soft_rst()
974 PM8001_FAIL_DBG(pm8001_ha, in pm8001_chip_soft_rst()
979 regVal = pm8001_cr32(pm8001_ha, 2, SPC_REG_RESET); in pm8001_chip_soft_rst()
980 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
984 pm8001_cw32(pm8001_ha, 2, SPC_REG_RESET, regVal); in pm8001_chip_soft_rst()
987 regVal = pm8001_cr32(pm8001_ha, 2, SPC_REG_RESET); in pm8001_chip_soft_rst()
988 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
992 pm8001_cw32(pm8001_ha, 2, SPC_REG_RESET, regVal); in pm8001_chip_soft_rst()
998 regVal = pm8001_cr32(pm8001_ha, 2, SPC_REG_RESET); in pm8001_chip_soft_rst()
999 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1003 pm8001_cw32(pm8001_ha, 2, SPC_REG_RESET, regVal); in pm8001_chip_soft_rst()
1010 if (-1 == pm8001_bar4_shift(pm8001_ha, GSM_ADDR_BASE)) { in pm8001_chip_soft_rst()
1011 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_chip_soft_rst()
1012 PM8001_FAIL_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1017 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1019 "Reset = 0x%x\n", pm8001_cr32(pm8001_ha, 2, GSM_CONFIG_RESET))); in pm8001_chip_soft_rst()
1020 regVal = pm8001_cr32(pm8001_ha, 2, GSM_CONFIG_RESET); in pm8001_chip_soft_rst()
1030 pm8001_cw32(pm8001_ha, 2, GSM_CONFIG_RESET, regVal); in pm8001_chip_soft_rst()
1031 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1034 pm8001_cr32(pm8001_ha, 2, GSM_CONFIG_RESET))); in pm8001_chip_soft_rst()
1037 regVal = pm8001_cr32(pm8001_ha, 2, GSM_READ_ADDR_PARITY_CHECK); in pm8001_chip_soft_rst()
1039 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1042 pm8001_cw32(pm8001_ha, 2, GSM_READ_ADDR_PARITY_CHECK, regVal1); in pm8001_chip_soft_rst()
1043 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1046 pm8001_cr32(pm8001_ha, 2, GSM_READ_ADDR_PARITY_CHECK))); in pm8001_chip_soft_rst()
1048 regVal = pm8001_cr32(pm8001_ha, 2, GSM_WRITE_ADDR_PARITY_CHECK); in pm8001_chip_soft_rst()
1049 pm8001_cw32(pm8001_ha, 2, GSM_WRITE_ADDR_PARITY_CHECK, regVal2); in pm8001_chip_soft_rst()
1050 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1053 pm8001_cr32(pm8001_ha, 2, GSM_WRITE_ADDR_PARITY_CHECK))); in pm8001_chip_soft_rst()
1055 regVal = pm8001_cr32(pm8001_ha, 2, GSM_WRITE_DATA_PARITY_CHECK); in pm8001_chip_soft_rst()
1056 pm8001_cw32(pm8001_ha, 2, GSM_WRITE_DATA_PARITY_CHECK, regVal3); in pm8001_chip_soft_rst()
1057 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1060 pm8001_cr32(pm8001_ha, 2, GSM_WRITE_DATA_PARITY_CHECK))); in pm8001_chip_soft_rst()
1064 if (-1 == pm8001_bar4_shift(pm8001_ha, SPC_TOP_LEVEL_ADDR_BASE)) { in pm8001_chip_soft_rst()
1065 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_chip_soft_rst()
1066 PM8001_FAIL_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1071 regVal = pm8001_cr32(pm8001_ha, 2, SPC_REG_RESET); in pm8001_chip_soft_rst()
1073 pm8001_cw32(pm8001_ha, 2, SPC_REG_RESET, regVal); in pm8001_chip_soft_rst()
1084 regVal = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_1) & in pm8001_chip_soft_rst()
1089 regVal = pm8001_cr32(pm8001_ha, 0, in pm8001_chip_soft_rst()
1091 PM8001_FAIL_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1095 PM8001_FAIL_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1097 pm8001_cr32(pm8001_ha, 0, in pm8001_chip_soft_rst()
1099 PM8001_FAIL_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1101 pm8001_cr32(pm8001_ha, 0, in pm8001_chip_soft_rst()
1103 PM8001_FAIL_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1105 pm8001_cr32(pm8001_ha, 0, in pm8001_chip_soft_rst()
1107 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_chip_soft_rst()
1112 pm8001_cw32(pm8001_ha, 0, MSGU_ODCR, ODCR_CLEAR_ALL); in pm8001_chip_soft_rst()
1113 pm8001_cw32(pm8001_ha, 0, MSGU_ODMR, ODMR_CLEAR_ALL); in pm8001_chip_soft_rst()
1118 if (check_fw_ready(pm8001_ha) == -1) { in pm8001_chip_soft_rst()
1119 regVal = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_1); in pm8001_chip_soft_rst()
1121 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1124 regVal = pm8001_cr32(pm8001_ha, 0, MSGU_SCRATCH_PAD_2); in pm8001_chip_soft_rst()
1126 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1129 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1131 pm8001_cr32(pm8001_ha, 0, in pm8001_chip_soft_rst()
1133 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1135 pm8001_cr32(pm8001_ha, 0, in pm8001_chip_soft_rst()
1137 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_chip_soft_rst()
1141 pm8001_bar4_shift(pm8001_ha, 0); in pm8001_chip_soft_rst()
1142 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_chip_soft_rst()
1144 PM8001_INIT_DBG(pm8001_ha, in pm8001_chip_soft_rst()
1149 static void pm8001_hw_chip_rst(struct pm8001_hba_info *pm8001_ha) in pm8001_hw_chip_rst() argument
1153 PM8001_INIT_DBG(pm8001_ha, in pm8001_hw_chip_rst()
1157 regVal = pm8001_cr32(pm8001_ha, 1, SPC_REG_RESET); in pm8001_hw_chip_rst()
1159 pm8001_cw32(pm8001_ha, 1, SPC_REG_RESET, regVal); in pm8001_hw_chip_rst()
1165 regVal = pm8001_cr32(pm8001_ha, 1, SPC_REG_RESET); in pm8001_hw_chip_rst()
1167 pm8001_cw32(pm8001_ha, 1, SPC_REG_RESET, regVal); in pm8001_hw_chip_rst()
1178 PM8001_INIT_DBG(pm8001_ha, in pm8001_hw_chip_rst()
1186 void pm8001_chip_iounmap(struct pm8001_hba_info *pm8001_ha) in pm8001_chip_iounmap() argument
1200 if (pm8001_ha->io_mem[logical].memvirtaddr) { in pm8001_chip_iounmap()
1201 iounmap(pm8001_ha->io_mem[logical].memvirtaddr); in pm8001_chip_iounmap()
1213 pm8001_chip_intx_interrupt_enable(struct pm8001_hba_info *pm8001_ha) in pm8001_chip_intx_interrupt_enable() argument
1215 pm8001_cw32(pm8001_ha, 0, MSGU_ODMR, ODMR_CLEAR_ALL); in pm8001_chip_intx_interrupt_enable()
1216 pm8001_cw32(pm8001_ha, 0, MSGU_ODCR, ODCR_CLEAR_ALL); in pm8001_chip_intx_interrupt_enable()
1224 pm8001_chip_intx_interrupt_disable(struct pm8001_hba_info *pm8001_ha) in pm8001_chip_intx_interrupt_disable() argument
1226 pm8001_cw32(pm8001_ha, 0, MSGU_ODMR, ODMR_MASK_ALL); in pm8001_chip_intx_interrupt_disable()
1236 pm8001_chip_msix_interrupt_enable(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_msix_interrupt_enable() argument
1243 pm8001_cw32(pm8001_ha, 0, msi_index, MSIX_INTERRUPT_ENABLE); in pm8001_chip_msix_interrupt_enable()
1245 pm8001_cw32(pm8001_ha, 0, MSGU_ODCR, value); in pm8001_chip_msix_interrupt_enable()
1254 pm8001_chip_msix_interrupt_disable(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_msix_interrupt_disable() argument
1260 pm8001_cw32(pm8001_ha, 0, msi_index, MSIX_INTERRUPT_DISABLE); in pm8001_chip_msix_interrupt_disable()
1269 pm8001_chip_interrupt_enable(struct pm8001_hba_info *pm8001_ha, u8 vec) in pm8001_chip_interrupt_enable() argument
1272 pm8001_chip_msix_interrupt_enable(pm8001_ha, 0); in pm8001_chip_interrupt_enable()
1274 pm8001_chip_intx_interrupt_enable(pm8001_ha); in pm8001_chip_interrupt_enable()
1283 pm8001_chip_interrupt_disable(struct pm8001_hba_info *pm8001_ha, u8 vec) in pm8001_chip_interrupt_disable() argument
1286 pm8001_chip_msix_interrupt_disable(pm8001_ha, 0); in pm8001_chip_interrupt_disable()
1288 pm8001_chip_intx_interrupt_disable(pm8001_ha); in pm8001_chip_interrupt_disable()
1340 int pm8001_mpi_build_cmd(struct pm8001_hba_info *pm8001_ha, in pm8001_mpi_build_cmd() argument
1347 if (pm8001_mpi_msg_free_get(circularQ, pm8001_ha->iomb_size, in pm8001_mpi_build_cmd()
1349 PM8001_IO_DBG(pm8001_ha, in pm8001_mpi_build_cmd()
1355 memcpy(pMessage, payload, (pm8001_ha->iomb_size - in pm8001_mpi_build_cmd()
1365 pm8001_cw32(pm8001_ha, circularQ->pi_pci_bar, in pm8001_mpi_build_cmd()
1367 PM8001_IO_DBG(pm8001_ha, in pm8001_mpi_build_cmd()
1374 u32 pm8001_mpi_msg_free_set(struct pm8001_hba_info *pm8001_ha, void *pMsg, in pm8001_mpi_msg_free_set() argument
1383 circularQ->consumer_idx * pm8001_ha->iomb_size); in pm8001_mpi_msg_free_set()
1385 PM8001_FAIL_DBG(pm8001_ha, in pm8001_mpi_msg_free_set()
1392 PM8001_FAIL_DBG(pm8001_ha, in pm8001_mpi_msg_free_set()
1402 pm8001_cw32(pm8001_ha, circularQ->ci_pci_bar, circularQ->ci_offset, in pm8001_mpi_msg_free_set()
1407 PM8001_IO_DBG(pm8001_ha, in pm8001_mpi_msg_free_set()
1421 u32 pm8001_mpi_msg_consume(struct pm8001_hba_info *pm8001_ha, in pm8001_mpi_msg_consume() argument
1435 circularQ->consumer_idx * pm8001_ha->iomb_size); in pm8001_mpi_msg_consume()
1447 PM8001_IO_DBG(pm8001_ha, in pm8001_mpi_msg_consume()
1463 pm8001_cw32(pm8001_ha, in pm8001_mpi_msg_consume()
1476 pm8001_cw32(pm8001_ha, circularQ->ci_pci_bar, in pm8001_mpi_msg_consume()
1527 struct pm8001_hba_info *pm8001_ha = pw->pm8001_ha; in pm8001_work_fn() local
1534 spin_lock_irqsave(&pm8001_ha->lock, flags); in pm8001_work_fn()
1539 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_work_fn()
1546 ccb = &pm8001_ha->ccb_info[i]; in pm8001_work_fn()
1552 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_work_fn()
1568 PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("task 0x%p" in pm8001_work_fn()
1572 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in pm8001_work_fn()
1573 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_work_fn()
1576 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in pm8001_work_fn()
1578 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_work_fn()
1587 struct pm8001_hba_info *pm8001_ha = pw->pm8001_ha; in pm8001_work_fn() local
1591 PM8001_IO_DBG(pm8001_ha, in pm8001_work_fn()
1596 PM8001_IO_DBG(pm8001_ha, in pm8001_work_fn()
1611 spin_lock_irqsave(&pm8001_ha->lock, flags); in pm8001_work_fn()
1617 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_work_fn()
1627 ccb = &pm8001_ha->ccb_info[i]; in pm8001_work_fn()
1633 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_work_fn()
1645 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_work_fn()
1654 PM8001_IO_DBG(pm8001_ha, in pm8001_work_fn()
1662 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_work_fn()
1667 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_work_fn()
1669 PM8001_IO_DBG(pm8001_ha, in pm8001_work_fn()
1676 pm8001_open_reject_retry(pm8001_ha, t, pm8001_dev); in pm8001_work_fn()
1677 PM8001_IO_DBG(pm8001_ha, pm8001_printk("...Complete\n")); in pm8001_work_fn()
1699 int pm8001_handle_event(struct pm8001_hba_info *pm8001_ha, void *data, in pm8001_handle_event() argument
1707 pw->pm8001_ha = pm8001_ha; in pm8001_handle_event()
1718 static void pm8001_send_abort_all(struct pm8001_hba_info *pm8001_ha, in pm8001_send_abort_all() argument
1731 PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("dev is null\n")); in pm8001_send_abort_all()
1738 PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("cannot " in pm8001_send_abort_all()
1745 res = pm8001_tag_alloc(pm8001_ha, &ccb_tag); in pm8001_send_abort_all()
1749 ccb = &pm8001_ha->ccb_info[ccb_tag]; in pm8001_send_abort_all()
1754 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_send_abort_all()
1761 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &task_abort, 0); in pm8001_send_abort_all()
1763 pm8001_tag_free(pm8001_ha, ccb_tag); in pm8001_send_abort_all()
1767 static void pm8001_send_read_log(struct pm8001_hba_info *pm8001_ha, in pm8001_send_read_log() argument
1783 PM8001_FAIL_DBG(pm8001_ha, in pm8001_send_read_log()
1789 res = pm8001_tag_alloc(pm8001_ha, &ccb_tag); in pm8001_send_read_log()
1792 PM8001_FAIL_DBG(pm8001_ha, in pm8001_send_read_log()
1803 pm8001_tag_free(pm8001_ha, ccb_tag); in pm8001_send_read_log()
1804 PM8001_FAIL_DBG(pm8001_ha, in pm8001_send_read_log()
1811 ccb = &pm8001_ha->ccb_info[ccb_tag]; in pm8001_send_read_log()
1819 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_send_read_log()
1834 res = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &sata_cmd, 0); in pm8001_send_read_log()
1837 pm8001_tag_free(pm8001_ha, ccb_tag); in pm8001_send_read_log()
1854 mpi_ssp_completion(struct pm8001_hba_info *pm8001_ha , void *piomb) in mpi_ssp_completion() argument
1869 ccb = &pm8001_ha->ccb_info[tag]; in mpi_ssp_completion()
1881 PM8001_FAIL_DBG(pm8001_ha, in mpi_ssp_completion()
1889 PM8001_FAIL_DBG(pm8001_ha, in mpi_ssp_completion()
1895 PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_SUCCESS" in mpi_ssp_completion()
1905 sas_ssp_task_response(pm8001_ha->dev, t, iu); in mpi_ssp_completion()
1911 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
1918 PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_UNDERFLOW" in mpi_ssp_completion()
1927 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
1933 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
1941 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
1948 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
1955 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
1962 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
1969 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
1975 pm8001_handle_event(pm8001_ha, in mpi_ssp_completion()
1980 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
1987 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
1995 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2002 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2009 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2015 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2021 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2028 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2034 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2040 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2045 pm8001_handle_event(pm8001_ha, in mpi_ssp_completion()
2050 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()
2075 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2082 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2091 PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("task 0x%p done with" in mpi_ssp_completion()
2095 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in mpi_ssp_completion()
2098 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in mpi_ssp_completion()
2105 static void mpi_ssp_event(struct pm8001_hba_info *pm8001_ha , void *piomb) in mpi_ssp_event() argument
2119 ccb = &pm8001_ha->ccb_info[tag]; in mpi_ssp_event()
2123 PM8001_FAIL_DBG(pm8001_ha, in mpi_ssp_event()
2128 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2133 PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_UNDERFLOW\n");) in mpi_ssp_event()
2141 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2143 pm8001_handle_event(pm8001_ha, t, IO_XFER_ERROR_BREAK); in mpi_ssp_event()
2146 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2153 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2161 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2168 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2175 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2181 pm8001_handle_event(pm8001_ha, in mpi_ssp_event()
2186 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2193 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2201 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2208 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2215 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2221 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2223 pm8001_handle_event(pm8001_ha, t, IO_XFER_OPEN_RETRY_TIMEOUT); in mpi_ssp_event()
2226 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2232 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2238 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2244 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2250 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2256 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2262 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2266 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2279 PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("task 0x%p done with" in mpi_ssp_event()
2283 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in mpi_ssp_event()
2286 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in mpi_ssp_event()
2294 mpi_sata_completion(struct pm8001_hba_info *pm8001_ha, void *piomb) in mpi_sata_completion() argument
2318 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_completion()
2322 ccb = &pm8001_ha->ccb_info[tag]; in mpi_sata_completion()
2328 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_completion()
2337 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_completion()
2344 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_completion()
2351 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_completion()
2361 sata_addr_low[i] = pm8001_ha->sas_addr[j]; in mpi_sata_completion()
2363 sata_addr_hi[i] = pm8001_ha->sas_addr[j]; in mpi_sata_completion()
2385 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_completion()
2390 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_completion()
2397 PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_SUCCESS\n")); in mpi_sata_completion()
2408 pm8001_send_abort_all(pm8001_ha, pm8001_dev); in mpi_sata_completion()
2410 pm8001_tag_free(pm8001_ha, tag); in mpi_sata_completion()
2419 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2427 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2431 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2435 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2443 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2450 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2460 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2469 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2475 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2481 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2488 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2496 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2503 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2510 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2515 pm8001_handle_event(pm8001_ha, in mpi_sata_completion()
2520 pm8001_ccb_task_free_done(pm8001_ha, t, ccb, tag); in mpi_sata_completion()
2525 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2531 pm8001_handle_event(pm8001_ha, in mpi_sata_completion()
2536 pm8001_ccb_task_free_done(pm8001_ha, t, ccb, tag); in mpi_sata_completion()
2541 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2549 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2555 pm8001_handle_event(pm8001_ha, in mpi_sata_completion()
2560 pm8001_ccb_task_free_done(pm8001_ha, t, ccb, tag); in mpi_sata_completion()
2565 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2572 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2578 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2584 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2590 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2596 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2602 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2608 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2614 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2619 pm8001_handle_event(pm8001_ha, pm8001_dev, in mpi_sata_completion()
2623 pm8001_ccb_task_free_done(pm8001_ha, t, ccb, tag); in mpi_sata_completion()
2628 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2634 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2639 pm8001_handle_event(pm8001_ha, pm8001_dev, in mpi_sata_completion()
2643 pm8001_ccb_task_free_done(pm8001_ha, t, ccb, tag); in mpi_sata_completion()
2648 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2655 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2668 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_completion()
2672 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in mpi_sata_completion()
2675 pm8001_ccb_task_free_done(pm8001_ha, t, ccb, tag); in mpi_sata_completion()
2680 static void mpi_sata_event(struct pm8001_hba_info *pm8001_ha , void *piomb) in mpi_sata_event() argument
2694 ccb = &pm8001_ha->ccb_info[tag]; in mpi_sata_event()
2700 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_event()
2704 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_event()
2710 pm8001_dev = pm8001_find_dev(pm8001_ha, dev_id); in mpi_sata_event()
2713 pm8001_send_read_log(pm8001_ha, pm8001_dev); in mpi_sata_event()
2717 ccb = &pm8001_ha->ccb_info[tag]; in mpi_sata_event()
2721 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_event()
2726 PM8001_IO_DBG(pm8001_ha, pm8001_printk( in mpi_sata_event()
2731 PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_UNDERFLOW\n")); in mpi_sata_event()
2739 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2745 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2752 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2760 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2767 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2774 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2779 pm8001_handle_event(pm8001_ha, in mpi_sata_event()
2784 pm8001_ccb_task_free_done(pm8001_ha, t, ccb, tag); in mpi_sata_event()
2789 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2796 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2804 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2811 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2817 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2823 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2829 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2835 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2841 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2847 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2853 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2859 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2865 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()
2888 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_event()
2892 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in mpi_sata_event()
2895 pm8001_ccb_task_free_done(pm8001_ha, t, ccb, tag); in mpi_sata_event()
2901 mpi_smp_completion(struct pm8001_hba_info *pm8001_ha, void *piomb) in mpi_smp_completion() argument
2916 ccb = &pm8001_ha->ccb_info[tag]; in mpi_smp_completion()
2921 PM8001_FAIL_DBG(pm8001_ha, in mpi_smp_completion()
2928 PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_SUCCESS\n")); in mpi_smp_completion()
2935 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
2943 PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_UNDERFLOW\n")); in mpi_smp_completion()
2951 PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_NO_DEVICE\n")); in mpi_smp_completion()
2956 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
2962 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
2968 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
2974 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
2981 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
2988 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
2995 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3000 pm8001_handle_event(pm8001_ha, in mpi_smp_completion()
3005 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3012 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3020 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3027 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3033 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3040 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3046 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3053 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3059 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3066 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3073 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3086 PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("task 0x%p done with" in mpi_smp_completion()
3090 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in mpi_smp_completion()
3093 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in mpi_smp_completion()
3099 void pm8001_mpi_set_dev_state_resp(struct pm8001_hba_info *pm8001_ha, in pm8001_mpi_set_dev_state_resp() argument
3105 struct pm8001_ccb_info *ccb = &pm8001_ha->ccb_info[tag]; in pm8001_mpi_set_dev_state_resp()
3111 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("Set device id = 0x%x state " in pm8001_mpi_set_dev_state_resp()
3117 pm8001_tag_free(pm8001_ha, tag); in pm8001_mpi_set_dev_state_resp()
3120 void pm8001_mpi_set_nvmd_resp(struct pm8001_hba_info *pm8001_ha, void *piomb) in pm8001_mpi_set_nvmd_resp() argument
3125 struct pm8001_ccb_info *ccb = &pm8001_ha->ccb_info[tag]; in pm8001_mpi_set_nvmd_resp()
3127 complete(pm8001_ha->nvmd_completion); in pm8001_mpi_set_nvmd_resp()
3128 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("Set nvm data complete!\n")); in pm8001_mpi_set_nvmd_resp()
3130 PM8001_FAIL_DBG(pm8001_ha, in pm8001_mpi_set_nvmd_resp()
3136 pm8001_tag_free(pm8001_ha, tag); in pm8001_mpi_set_nvmd_resp()
3140 pm8001_mpi_get_nvmd_resp(struct pm8001_hba_info *pm8001_ha, void *piomb) in pm8001_mpi_get_nvmd_resp() argument
3146 struct pm8001_ccb_info *ccb = &pm8001_ha->ccb_info[tag]; in pm8001_mpi_get_nvmd_resp()
3150 void *virt_addr = pm8001_ha->memoryMap.region[NVMD].virt_ptr; in pm8001_mpi_get_nvmd_resp()
3153 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("Get nvm data complete!\n")); in pm8001_mpi_get_nvmd_resp()
3155 PM8001_FAIL_DBG(pm8001_ha, in pm8001_mpi_get_nvmd_resp()
3157 complete(pm8001_ha->nvmd_completion); in pm8001_mpi_get_nvmd_resp()
3163 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_get_nvmd_resp()
3167 memcpy(pm8001_ha->sas_addr, in pm8001_mpi_get_nvmd_resp()
3170 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_get_nvmd_resp()
3183 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_get_nvmd_resp()
3188 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_get_nvmd_resp()
3196 pm8001_ha->memoryMap.region[NVMD].virt_ptr, in pm8001_mpi_get_nvmd_resp()
3201 pm8001_tag_free(pm8001_ha, tag); in pm8001_mpi_get_nvmd_resp()
3202 complete(pm8001_ha->nvmd_completion); in pm8001_mpi_get_nvmd_resp()
3205 int pm8001_mpi_local_phy_ctl(struct pm8001_hba_info *pm8001_ha, void *piomb) in pm8001_mpi_local_phy_ctl() argument
3215 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_local_phy_ctl()
3219 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_local_phy_ctl()
3222 pm8001_ha->phy[phy_id].reset_success = true; in pm8001_mpi_local_phy_ctl()
3224 if (pm8001_ha->phy[phy_id].enable_completion) { in pm8001_mpi_local_phy_ctl()
3225 complete(pm8001_ha->phy[phy_id].enable_completion); in pm8001_mpi_local_phy_ctl()
3226 pm8001_ha->phy[phy_id].enable_completion = NULL; in pm8001_mpi_local_phy_ctl()
3228 pm8001_tag_free(pm8001_ha, tag); in pm8001_mpi_local_phy_ctl()
3243 void pm8001_bytes_dmaed(struct pm8001_hba_info *pm8001_ha, int i) in pm8001_bytes_dmaed() argument
3245 struct pm8001_phy *phy = &pm8001_ha->phy[i]; in pm8001_bytes_dmaed()
3268 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("phy %d byte dmaded.\n", i)); in pm8001_bytes_dmaed()
3271 pm8001_ha->sas->notify_port_event(sas_phy, PORTE_BYTES_DMAED); in pm8001_bytes_dmaed()
3321 struct pm8001_hba_info *pm8001_ha = phy->sas_phy.ha->lldd_ha; in pm8001_get_attached_sas_addr() local
3323 u64 addr = be64_to_cpu(*(__be64 *)pm8001_ha->sas_addr); in pm8001_get_attached_sas_addr()
3343 static void pm8001_hw_event_ack_req(struct pm8001_hba_info *pm8001_ha, in pm8001_hw_event_ack_req() argument
3352 circularQ = &pm8001_ha->inbnd_q_tbl[Qnum]; in pm8001_hw_event_ack_req()
3358 pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0); in pm8001_hw_event_ack_req()
3361 static int pm8001_chip_phy_ctl_req(struct pm8001_hba_info *pm8001_ha,
3370 hw_event_sas_phy_up(struct pm8001_hba_info *pm8001_ha, void *piomb) in hw_event_sas_phy_up() argument
3383 struct pm8001_port *port = &pm8001_ha->port[port_id]; in hw_event_sas_phy_up()
3384 struct sas_ha_struct *sas_ha = pm8001_ha->sas; in hw_event_sas_phy_up()
3385 struct pm8001_phy *phy = &pm8001_ha->phy[phy_id]; in hw_event_sas_phy_up()
3390 PM8001_MSG_DBG(pm8001_ha, in hw_event_sas_phy_up()
3396 PM8001_MSG_DBG(pm8001_ha, in hw_event_sas_phy_up()
3400 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("end device.\n")); in hw_event_sas_phy_up()
3401 pm8001_chip_phy_ctl_req(pm8001_ha, phy_id, in hw_event_sas_phy_up()
3407 PM8001_MSG_DBG(pm8001_ha, in hw_event_sas_phy_up()
3413 PM8001_MSG_DBG(pm8001_ha, in hw_event_sas_phy_up()
3419 PM8001_MSG_DBG(pm8001_ha, in hw_event_sas_phy_up()
3438 if (pm8001_ha->flags == PM8001F_RUN_TIME) in hw_event_sas_phy_up()
3440 pm8001_bytes_dmaed(pm8001_ha, phy_id); in hw_event_sas_phy_up()
3449 hw_event_sata_phy_up(struct pm8001_hba_info *pm8001_ha, void *piomb) in hw_event_sata_phy_up() argument
3462 struct pm8001_port *port = &pm8001_ha->port[port_id]; in hw_event_sata_phy_up()
3463 struct sas_ha_struct *sas_ha = pm8001_ha->sas; in hw_event_sata_phy_up()
3464 struct pm8001_phy *phy = &pm8001_ha->phy[phy_id]; in hw_event_sata_phy_up()
3466 PM8001_MSG_DBG(pm8001_ha, in hw_event_sata_phy_up()
3485 pm8001_bytes_dmaed(pm8001_ha, phy_id); in hw_event_sata_phy_up()
3494 hw_event_phy_down(struct pm8001_hba_info *pm8001_ha, void *piomb) in hw_event_phy_down() argument
3505 struct pm8001_port *port = &pm8001_ha->port[port_id]; in hw_event_phy_down()
3506 struct pm8001_phy *phy = &pm8001_ha->phy[phy_id]; in hw_event_phy_down()
3516 PM8001_MSG_DBG(pm8001_ha, in hw_event_phy_down()
3518 PM8001_MSG_DBG(pm8001_ha, in hw_event_phy_down()
3521 pm8001_hw_event_ack_req(pm8001_ha, 0, HW_EVENT_PHY_DOWN, in hw_event_phy_down()
3525 PM8001_MSG_DBG(pm8001_ha, in hw_event_phy_down()
3529 PM8001_MSG_DBG(pm8001_ha, in hw_event_phy_down()
3534 PM8001_MSG_DBG(pm8001_ha, in hw_event_phy_down()
3536 PM8001_MSG_DBG(pm8001_ha, in hw_event_phy_down()
3539 pm8001_hw_event_ack_req(pm8001_ha, 0, HW_EVENT_PHY_DOWN, in hw_event_phy_down()
3544 PM8001_MSG_DBG(pm8001_ha, in hw_event_phy_down()
3562 int pm8001_mpi_reg_resp(struct pm8001_hba_info *pm8001_ha, void *piomb) in pm8001_mpi_reg_resp() argument
3573 ccb = &pm8001_ha->ccb_info[htag]; in pm8001_mpi_reg_resp()
3577 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3581 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("DEVREG_SUCCESS\n")); in pm8001_mpi_reg_resp()
3585 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3589 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3593 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3597 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3601 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3605 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3609 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3613 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3620 pm8001_tag_free(pm8001_ha, htag); in pm8001_mpi_reg_resp()
3624 int pm8001_mpi_dereg_resp(struct pm8001_hba_info *pm8001_ha, void *piomb) in pm8001_mpi_dereg_resp() argument
3634 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_dereg_resp()
3645 int pm8001_mpi_fw_flash_update_resp(struct pm8001_hba_info *pm8001_ha, in pm8001_mpi_fw_flash_update_resp() argument
3652 struct pm8001_ccb_info *ccb = &pm8001_ha->ccb_info[tag]; in pm8001_mpi_fw_flash_update_resp()
3656 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3660 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3664 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3668 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3672 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3676 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3680 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3684 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3688 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3692 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3699 pm8001_tag_free(pm8001_ha, tag); in pm8001_mpi_fw_flash_update_resp()
3700 complete(pm8001_ha->nvmd_completion); in pm8001_mpi_fw_flash_update_resp()
3704 int pm8001_mpi_general_event(struct pm8001_hba_info *pm8001_ha , void *piomb) in pm8001_mpi_general_event() argument
3711 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_general_event()
3714 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_general_event()
3720 int pm8001_mpi_task_abort_resp(struct pm8001_hba_info *pm8001_ha, void *piomb) in pm8001_mpi_task_abort_resp() argument
3736 PM8001_FAIL_DBG(pm8001_ha, in pm8001_mpi_task_abort_resp()
3742 ccb = &pm8001_ha->ccb_info[tag]; in pm8001_mpi_task_abort_resp()
3747 PM8001_FAIL_DBG(pm8001_ha, in pm8001_mpi_task_abort_resp()
3753 PM8001_FAIL_DBG(pm8001_ha, in pm8001_mpi_task_abort_resp()
3758 PM8001_EH_DBG(pm8001_ha, pm8001_printk("IO_SUCCESS\n")); in pm8001_mpi_task_abort_resp()
3763 PM8001_EH_DBG(pm8001_ha, pm8001_printk("IO_NOT_VALID\n")); in pm8001_mpi_task_abort_resp()
3772 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in pm8001_mpi_task_abort_resp()
3776 pm8001_tag_free(pm8001_ha, tag); in pm8001_mpi_task_abort_resp()
3791 static int mpi_hw_event(struct pm8001_hba_info *pm8001_ha, void* piomb) in mpi_hw_event() argument
3805 struct sas_ha_struct *sas_ha = pm8001_ha->sas; in mpi_hw_event()
3806 struct pm8001_phy *phy = &pm8001_ha->phy[phy_id]; in mpi_hw_event()
3808 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3812 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3817 if (pm8001_ha->flags == PM8001F_RUN_TIME && in mpi_hw_event()
3823 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3825 hw_event_sas_phy_up(pm8001_ha, piomb); in mpi_hw_event()
3828 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3830 hw_event_sata_phy_up(pm8001_ha, piomb); in mpi_hw_event()
3833 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3840 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3845 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3850 hw_event_phy_down(pm8001_ha, piomb); in mpi_hw_event()
3853 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3862 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3864 pm8001_hw_event_ack_req(pm8001_ha, 0, HW_EVENT_BROADCAST_CHANGE, in mpi_hw_event()
3872 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3879 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3887 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3889 pm8001_hw_event_ack_req(pm8001_ha, 0, in mpi_hw_event()
3896 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3898 pm8001_hw_event_ack_req(pm8001_ha, 0, in mpi_hw_event()
3906 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3908 pm8001_hw_event_ack_req(pm8001_ha, 0, in mpi_hw_event()
3916 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3918 pm8001_hw_event_ack_req(pm8001_ha, 0, in mpi_hw_event()
3926 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3930 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3938 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3940 pm8001_hw_event_ack_req(pm8001_ha, 0, in mpi_hw_event()
3945 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3950 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3957 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3959 pm8001_hw_event_ack_req(pm8001_ha, 0, in mpi_hw_event()
3967 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3974 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3981 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3985 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3989 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3993 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
4005 static void process_one_iomb(struct pm8001_hba_info *pm8001_ha, void *piomb) in process_one_iomb() argument
4010 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("process_one_iomb:")); in process_one_iomb()
4014 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("OPC_OUB_ECHO\n")); in process_one_iomb()
4017 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4019 mpi_hw_event(pm8001_ha, piomb); in process_one_iomb()
4022 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4024 mpi_ssp_completion(pm8001_ha, piomb); in process_one_iomb()
4027 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4029 mpi_smp_completion(pm8001_ha, piomb); in process_one_iomb()
4032 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4034 pm8001_mpi_local_phy_ctl(pm8001_ha, piomb); in process_one_iomb()
4037 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4039 pm8001_mpi_reg_resp(pm8001_ha, piomb); in process_one_iomb()
4042 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4044 pm8001_mpi_dereg_resp(pm8001_ha, piomb); in process_one_iomb()
4047 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4051 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4053 mpi_sata_completion(pm8001_ha, piomb); in process_one_iomb()
4056 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4058 mpi_sata_event(pm8001_ha, piomb); in process_one_iomb()
4061 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4063 mpi_ssp_event(pm8001_ha, piomb); in process_one_iomb()
4066 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4071 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4076 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4080 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4082 pm8001_mpi_fw_flash_update_resp(pm8001_ha, piomb); in process_one_iomb()
4085 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4089 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4093 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4095 pm8001_mpi_general_event(pm8001_ha, piomb); in process_one_iomb()
4098 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4100 pm8001_mpi_task_abort_resp(pm8001_ha, piomb); in process_one_iomb()
4103 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4105 pm8001_mpi_task_abort_resp(pm8001_ha, piomb); in process_one_iomb()
4108 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4112 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()
4124 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4128 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4130 pm8001_mpi_task_abort_resp(pm8001_ha, piomb); in process_one_iomb()
4133 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4135 pm8001_mpi_get_nvmd_resp(pm8001_ha, piomb); in process_one_iomb()
4138 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4140 pm8001_mpi_set_nvmd_resp(pm8001_ha, piomb); in process_one_iomb()
4143 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4147 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4149 pm8001_mpi_set_dev_state_resp(pm8001_ha, piomb); 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()
4171 static int process_oq(struct pm8001_hba_info *pm8001_ha, u8 vec) in process_oq() argument
4179 spin_lock_irqsave(&pm8001_ha->lock, flags); in process_oq()
4180 circularQ = &pm8001_ha->outbnd_q_tbl[vec]; in process_oq()
4182 ret = pm8001_mpi_msg_consume(pm8001_ha, circularQ, &pMsg1, &bc); in process_oq()
4185 process_one_iomb(pm8001_ha, (void *)(pMsg1 - 4)); in process_oq()
4187 pm8001_mpi_msg_free_set(pm8001_ha, pMsg1, in process_oq()
4200 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in process_oq()
4238 static int pm8001_chip_smp_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_smp_req() argument
4256 elem = dma_map_sg(pm8001_ha->dev, sg_req, 1, DMA_TO_DEVICE); in pm8001_chip_smp_req()
4262 elem = dma_map_sg(pm8001_ha->dev, sg_resp, 1, DMA_FROM_DEVICE); in pm8001_chip_smp_req()
4275 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_smp_req()
4286 rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, in pm8001_chip_smp_req()
4294 dma_unmap_sg(pm8001_ha->dev, &ccb->task->smp_task.smp_resp, 1, in pm8001_chip_smp_req()
4297 dma_unmap_sg(pm8001_ha->dev, &ccb->task->smp_task.smp_req, 1, in pm8001_chip_smp_req()
4307 static int pm8001_chip_ssp_io_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_ssp_io_req() argument
4333 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_ssp_io_req()
4355 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &ssp_cmd, 0); in pm8001_chip_ssp_io_req()
4359 static int pm8001_chip_sata_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_sata_req() argument
4376 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_sata_req()
4379 PM8001_IO_DBG(pm8001_ha, pm8001_printk("no data\n")); in pm8001_chip_sata_req()
4383 PM8001_IO_DBG(pm8001_ha, pm8001_printk("DMA\n")); in pm8001_chip_sata_req()
4386 PM8001_IO_DBG(pm8001_ha, pm8001_printk("PIO\n")); in pm8001_chip_sata_req()
4391 PM8001_IO_DBG(pm8001_ha, pm8001_printk("FPDMA\n")); in pm8001_chip_sata_req()
4449 PM8001_FAIL_DBG(pm8001_ha, in pm8001_chip_sata_req()
4453 pm8001_ccb_task_free(pm8001_ha, task, ccb, tag); in pm8001_chip_sata_req()
4457 pm8001_ccb_task_free_done(pm8001_ha, task, in pm8001_chip_sata_req()
4464 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &sata_cmd, 0); in pm8001_chip_sata_req()
4475 pm8001_chip_phy_start_req(struct pm8001_hba_info *pm8001_ha, u8 phy_id) in pm8001_chip_phy_start_req() argument
4482 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_phy_start_req()
4497 pm8001_ha->sas_addr, SAS_ADDR_SIZE); in pm8001_chip_phy_start_req()
4499 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opcode, &payload, 0); in pm8001_chip_phy_start_req()
4509 static int pm8001_chip_phy_stop_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_phy_stop_req() argument
4517 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_phy_stop_req()
4521 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opcode, &payload, 0); in pm8001_chip_phy_stop_req()
4528 static int pm8001_chip_reg_dev_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_reg_dev_req() argument
4543 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_reg_dev_req()
4546 rc = pm8001_tag_alloc(pm8001_ha, &tag); in pm8001_chip_reg_dev_req()
4549 ccb = &pm8001_ha->ccb_info[tag]; in pm8001_chip_reg_dev_req()
4580 rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0); in pm8001_chip_reg_dev_req()
4587 int pm8001_chip_dereg_dev_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_dereg_dev_req() argument
4595 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_dereg_dev_req()
4599 PM8001_MSG_DBG(pm8001_ha, in pm8001_chip_dereg_dev_req()
4601 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0); in pm8001_chip_dereg_dev_req()
4612 static int pm8001_chip_phy_ctl_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_phy_ctl_req() argument
4620 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_phy_ctl_req()
4624 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0); in pm8001_chip_phy_ctl_req()
4628 static u32 pm8001_chip_is_our_interrupt(struct pm8001_hba_info *pm8001_ha) in pm8001_chip_is_our_interrupt() argument
4635 value = pm8001_cr32(pm8001_ha, 0, MSGU_ODR); in pm8001_chip_is_our_interrupt()
4649 pm8001_chip_isr(struct pm8001_hba_info *pm8001_ha, u8 vec) in pm8001_chip_isr() argument
4651 pm8001_chip_interrupt_disable(pm8001_ha, vec); in pm8001_chip_isr()
4652 process_oq(pm8001_ha, vec); in pm8001_chip_isr()
4653 pm8001_chip_interrupt_enable(pm8001_ha, vec); in pm8001_chip_isr()
4657 static int send_task_abort(struct pm8001_hba_info *pm8001_ha, u32 opc, in send_task_abort() argument
4663 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in send_task_abort()
4675 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &task_abort, 0); in send_task_abort()
4684 int pm8001_chip_abort_task(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_abort_task() argument
4689 PM8001_EH_DBG(pm8001_ha, in pm8001_chip_abort_task()
4699 rc = send_task_abort(pm8001_ha, opc, device_id, flag, in pm8001_chip_abort_task()
4702 PM8001_EH_DBG(pm8001_ha, pm8001_printk("rc= %d\n", rc)); in pm8001_chip_abort_task()
4712 int pm8001_chip_ssp_tm_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_ssp_tm_req() argument
4729 if (pm8001_ha->chip_id != chip_8001) in pm8001_chip_ssp_tm_req()
4731 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_ssp_tm_req()
4732 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &sspTMCmd, 0); in pm8001_chip_ssp_tm_req()
4736 int pm8001_chip_get_nvmd_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_get_nvmd_req() argument
4755 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_get_nvmd_req()
4757 rc = pm8001_tag_alloc(pm8001_ha, &tag); in pm8001_chip_get_nvmd_req()
4762 ccb = &pm8001_ha->ccb_info[tag]; in pm8001_chip_get_nvmd_req()
4777 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_get_nvmd_req()
4779 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_get_nvmd_req()
4786 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_get_nvmd_req()
4788 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_get_nvmd_req()
4795 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_get_nvmd_req()
4797 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_get_nvmd_req()
4804 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_get_nvmd_req()
4806 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_get_nvmd_req()
4814 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_get_nvmd_req()
4816 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_get_nvmd_req()
4822 rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &nvmd_req, 0); in pm8001_chip_get_nvmd_req()
4825 pm8001_tag_free(pm8001_ha, tag); in pm8001_chip_get_nvmd_req()
4830 int pm8001_chip_set_nvmd_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_set_nvmd_req() argument
4847 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_set_nvmd_req()
4848 memcpy(pm8001_ha->memoryMap.region[NVMD].virt_ptr, in pm8001_chip_set_nvmd_req()
4852 rc = pm8001_tag_alloc(pm8001_ha, &tag); in pm8001_chip_set_nvmd_req()
4857 ccb = &pm8001_ha->ccb_info[tag]; in pm8001_chip_set_nvmd_req()
4871 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_set_nvmd_req()
4873 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_set_nvmd_req()
4881 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_set_nvmd_req()
4883 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_set_nvmd_req()
4890 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_set_nvmd_req()
4892 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_set_nvmd_req()
4899 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_set_nvmd_req()
4901 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_set_nvmd_req()
4906 rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &nvmd_req, 0); in pm8001_chip_set_nvmd_req()
4909 pm8001_tag_free(pm8001_ha, tag); in pm8001_chip_set_nvmd_req()
4920 pm8001_chip_fw_flash_update_build(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_fw_flash_update_build() argument
4930 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_fw_flash_update_build()
4941 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0); in pm8001_chip_fw_flash_update_build()
4946 pm8001_chip_fw_flash_update_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_fw_flash_update_req() argument
4955 void *buffer = pm8001_ha->memoryMap.region[FW_FLASH].virt_ptr; in pm8001_chip_fw_flash_update_req()
4956 dma_addr_t phys_addr = pm8001_ha->memoryMap.region[FW_FLASH].phys_addr; in pm8001_chip_fw_flash_update_req()
4974 rc = pm8001_tag_alloc(pm8001_ha, &tag); in pm8001_chip_fw_flash_update_req()
4979 ccb = &pm8001_ha->ccb_info[tag]; in pm8001_chip_fw_flash_update_req()
4982 rc = pm8001_chip_fw_flash_update_build(pm8001_ha, &flash_update_info, in pm8001_chip_fw_flash_update_req()
4996 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_get_gsm_dump() local
4999 gsm_dump_offset = pm8001_ha->fatal_forensic_shift_offset; in pm8001_get_gsm_dump()
5006 if (pm8001_ha->chip_id == chip_8001) in pm8001_get_gsm_dump()
5020 if (pm8001_ha->chip_id == chip_8001) in pm8001_get_gsm_dump()
5028 if (pm8001_ha->chip_id == chip_8001) { in pm8001_get_gsm_dump()
5030 if (-1 == pm8001_bar4_shift(pm8001_ha, in pm8001_get_gsm_dump()
5035 if (-1 == pm80xx_bar4_shift(pm8001_ha, in pm8001_get_gsm_dump()
5044 value = pm8001_cr32(pm8001_ha, bar, (work_offset + offset) & in pm8001_get_gsm_dump()
5050 value = pm8001_cr32(pm8001_ha, bar, (work_offset + offset) & in pm8001_get_gsm_dump()
5056 if (-1 == pm8001_bar4_shift(pm8001_ha, 0)) in pm8001_get_gsm_dump()
5058 pm8001_ha->fatal_forensic_shift_offset += 1024; in pm8001_get_gsm_dump()
5060 if (pm8001_ha->fatal_forensic_shift_offset >= 0x100000) in pm8001_get_gsm_dump()
5061 pm8001_ha->fatal_forensic_shift_offset = 0; in pm8001_get_gsm_dump()
5066 pm8001_chip_set_dev_state_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_set_dev_state_req() argument
5076 rc = pm8001_tag_alloc(pm8001_ha, &tag); in pm8001_chip_set_dev_state_req()
5079 ccb = &pm8001_ha->ccb_info[tag]; in pm8001_chip_set_dev_state_req()
5082 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_set_dev_state_req()
5086 rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0); in pm8001_chip_set_dev_state_req()
5092 pm8001_chip_sas_re_initialization(struct pm8001_hba_info *pm8001_ha) in pm8001_chip_sas_re_initialization() argument
5101 rc = pm8001_tag_alloc(pm8001_ha, &tag); in pm8001_chip_sas_re_initialization()
5104 ccb = &pm8001_ha->ccb_info[tag]; in pm8001_chip_sas_re_initialization()
5106 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_sas_re_initialization()
5111 rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0); in pm8001_chip_sas_re_initialization()
5113 pm8001_tag_free(pm8001_ha, tag); in pm8001_chip_sas_re_initialization()