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()
1212 pm8001_chip_intx_interrupt_enable(struct pm8001_hba_info *pm8001_ha) in pm8001_chip_intx_interrupt_enable() argument
1214 pm8001_cw32(pm8001_ha, 0, MSGU_ODMR, ODMR_CLEAR_ALL); in pm8001_chip_intx_interrupt_enable()
1215 pm8001_cw32(pm8001_ha, 0, MSGU_ODCR, ODCR_CLEAR_ALL); in pm8001_chip_intx_interrupt_enable()
1223 pm8001_chip_intx_interrupt_disable(struct pm8001_hba_info *pm8001_ha) in pm8001_chip_intx_interrupt_disable() argument
1225 pm8001_cw32(pm8001_ha, 0, MSGU_ODMR, ODMR_MASK_ALL); in pm8001_chip_intx_interrupt_disable()
1233 pm8001_chip_msix_interrupt_enable(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_msix_interrupt_enable() argument
1240 pm8001_cw32(pm8001_ha, 0, msi_index, MSIX_INTERRUPT_ENABLE); in pm8001_chip_msix_interrupt_enable()
1242 pm8001_cw32(pm8001_ha, 0, MSGU_ODCR, value); in pm8001_chip_msix_interrupt_enable()
1251 pm8001_chip_msix_interrupt_disable(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_msix_interrupt_disable() argument
1257 pm8001_cw32(pm8001_ha, 0, msi_index, MSIX_INTERRUPT_DISABLE); in pm8001_chip_msix_interrupt_disable()
1265 pm8001_chip_interrupt_enable(struct pm8001_hba_info *pm8001_ha, u8 vec) in pm8001_chip_interrupt_enable() argument
1268 pm8001_chip_msix_interrupt_enable(pm8001_ha, 0); in pm8001_chip_interrupt_enable()
1271 pm8001_chip_intx_interrupt_enable(pm8001_ha); in pm8001_chip_interrupt_enable()
1280 pm8001_chip_interrupt_disable(struct pm8001_hba_info *pm8001_ha, u8 vec) in pm8001_chip_interrupt_disable() argument
1283 pm8001_chip_msix_interrupt_disable(pm8001_ha, 0); in pm8001_chip_interrupt_disable()
1286 pm8001_chip_intx_interrupt_disable(pm8001_ha); in pm8001_chip_interrupt_disable()
1338 int pm8001_mpi_build_cmd(struct pm8001_hba_info *pm8001_ha, in pm8001_mpi_build_cmd() argument
1345 if (pm8001_mpi_msg_free_get(circularQ, pm8001_ha->iomb_size, in pm8001_mpi_build_cmd()
1347 PM8001_IO_DBG(pm8001_ha, in pm8001_mpi_build_cmd()
1353 memcpy(pMessage, payload, (pm8001_ha->iomb_size - in pm8001_mpi_build_cmd()
1363 pm8001_cw32(pm8001_ha, circularQ->pi_pci_bar, in pm8001_mpi_build_cmd()
1365 PM8001_IO_DBG(pm8001_ha, in pm8001_mpi_build_cmd()
1372 u32 pm8001_mpi_msg_free_set(struct pm8001_hba_info *pm8001_ha, void *pMsg, in pm8001_mpi_msg_free_set() argument
1381 circularQ->consumer_idx * pm8001_ha->iomb_size); in pm8001_mpi_msg_free_set()
1383 PM8001_FAIL_DBG(pm8001_ha, in pm8001_mpi_msg_free_set()
1390 PM8001_FAIL_DBG(pm8001_ha, in pm8001_mpi_msg_free_set()
1400 pm8001_cw32(pm8001_ha, circularQ->ci_pci_bar, circularQ->ci_offset, in pm8001_mpi_msg_free_set()
1405 PM8001_IO_DBG(pm8001_ha, in pm8001_mpi_msg_free_set()
1419 u32 pm8001_mpi_msg_consume(struct pm8001_hba_info *pm8001_ha, in pm8001_mpi_msg_consume() argument
1433 circularQ->consumer_idx * pm8001_ha->iomb_size); in pm8001_mpi_msg_consume()
1445 PM8001_IO_DBG(pm8001_ha, in pm8001_mpi_msg_consume()
1461 pm8001_cw32(pm8001_ha, in pm8001_mpi_msg_consume()
1474 pm8001_cw32(pm8001_ha, circularQ->ci_pci_bar, in pm8001_mpi_msg_consume()
1519 struct pm8001_hba_info *pm8001_ha = pw->pm8001_ha; in pm8001_work_fn() local
1526 spin_lock_irqsave(&pm8001_ha->lock, flags); in pm8001_work_fn()
1531 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_work_fn()
1538 ccb = &pm8001_ha->ccb_info[i]; in pm8001_work_fn()
1544 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_work_fn()
1560 PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("task 0x%p" in pm8001_work_fn()
1564 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in pm8001_work_fn()
1565 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_work_fn()
1568 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in pm8001_work_fn()
1570 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_work_fn()
1579 struct pm8001_hba_info *pm8001_ha = pw->pm8001_ha; in pm8001_work_fn() local
1583 PM8001_IO_DBG(pm8001_ha, in pm8001_work_fn()
1588 PM8001_IO_DBG(pm8001_ha, in pm8001_work_fn()
1603 spin_lock_irqsave(&pm8001_ha->lock, flags); in pm8001_work_fn()
1609 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_work_fn()
1619 ccb = &pm8001_ha->ccb_info[i]; in pm8001_work_fn()
1625 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_work_fn()
1637 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_work_fn()
1646 PM8001_IO_DBG(pm8001_ha, in pm8001_work_fn()
1654 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_work_fn()
1659 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in pm8001_work_fn()
1661 PM8001_IO_DBG(pm8001_ha, in pm8001_work_fn()
1668 pm8001_open_reject_retry(pm8001_ha, t, pm8001_dev); in pm8001_work_fn()
1669 PM8001_IO_DBG(pm8001_ha, pm8001_printk("...Complete\n")); in pm8001_work_fn()
1691 int pm8001_handle_event(struct pm8001_hba_info *pm8001_ha, void *data, in pm8001_handle_event() argument
1699 pw->pm8001_ha = pm8001_ha; in pm8001_handle_event()
1710 static void pm8001_send_abort_all(struct pm8001_hba_info *pm8001_ha, in pm8001_send_abort_all() argument
1723 PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("dev is null\n")); in pm8001_send_abort_all()
1730 PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("cannot " in pm8001_send_abort_all()
1737 res = pm8001_tag_alloc(pm8001_ha, &ccb_tag); in pm8001_send_abort_all()
1741 ccb = &pm8001_ha->ccb_info[ccb_tag]; in pm8001_send_abort_all()
1746 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_send_abort_all()
1753 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &task_abort, 0); in pm8001_send_abort_all()
1755 pm8001_tag_free(pm8001_ha, ccb_tag); in pm8001_send_abort_all()
1759 static void pm8001_send_read_log(struct pm8001_hba_info *pm8001_ha, in pm8001_send_read_log() argument
1775 PM8001_FAIL_DBG(pm8001_ha, in pm8001_send_read_log()
1781 res = pm8001_tag_alloc(pm8001_ha, &ccb_tag); in pm8001_send_read_log()
1784 PM8001_FAIL_DBG(pm8001_ha, in pm8001_send_read_log()
1795 pm8001_tag_free(pm8001_ha, ccb_tag); in pm8001_send_read_log()
1796 PM8001_FAIL_DBG(pm8001_ha, in pm8001_send_read_log()
1803 ccb = &pm8001_ha->ccb_info[ccb_tag]; in pm8001_send_read_log()
1811 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_send_read_log()
1826 res = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &sata_cmd, 0); in pm8001_send_read_log()
1829 pm8001_tag_free(pm8001_ha, ccb_tag); in pm8001_send_read_log()
1846 mpi_ssp_completion(struct pm8001_hba_info *pm8001_ha , void *piomb) in mpi_ssp_completion() argument
1861 ccb = &pm8001_ha->ccb_info[tag]; in mpi_ssp_completion()
1873 PM8001_FAIL_DBG(pm8001_ha, in mpi_ssp_completion()
1881 PM8001_FAIL_DBG(pm8001_ha, in mpi_ssp_completion()
1887 PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_SUCCESS" in mpi_ssp_completion()
1897 sas_ssp_task_response(pm8001_ha->dev, t, iu); in mpi_ssp_completion()
1903 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
1910 PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_UNDERFLOW" in mpi_ssp_completion()
1919 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
1925 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
1933 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
1940 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
1947 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
1954 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
1961 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
1967 pm8001_handle_event(pm8001_ha, in mpi_ssp_completion()
1972 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
1979 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
1987 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
1994 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2001 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2007 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2013 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2020 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2026 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2032 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2037 pm8001_handle_event(pm8001_ha, in mpi_ssp_completion()
2042 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2048 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2054 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2060 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2067 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2074 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_completion()
2083 PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("task 0x%p done with" in mpi_ssp_completion()
2087 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in mpi_ssp_completion()
2090 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in mpi_ssp_completion()
2097 static void mpi_ssp_event(struct pm8001_hba_info *pm8001_ha , void *piomb) in mpi_ssp_event() argument
2111 ccb = &pm8001_ha->ccb_info[tag]; in mpi_ssp_event()
2115 PM8001_FAIL_DBG(pm8001_ha, in mpi_ssp_event()
2120 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2125 PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_UNDERFLOW\n");) in mpi_ssp_event()
2133 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2135 pm8001_handle_event(pm8001_ha, t, IO_XFER_ERROR_BREAK); in mpi_ssp_event()
2138 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2145 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2153 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2160 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2167 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2173 pm8001_handle_event(pm8001_ha, in mpi_ssp_event()
2178 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2185 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2193 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2200 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2207 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2213 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2215 pm8001_handle_event(pm8001_ha, t, IO_XFER_OPEN_RETRY_TIMEOUT); in mpi_ssp_event()
2218 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2224 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2230 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2236 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2242 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2248 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2254 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2258 PM8001_IO_DBG(pm8001_ha, in mpi_ssp_event()
2271 PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("task 0x%p done with" in mpi_ssp_event()
2275 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in mpi_ssp_event()
2278 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in mpi_ssp_event()
2286 mpi_sata_completion(struct pm8001_hba_info *pm8001_ha, void *piomb) in mpi_sata_completion() argument
2310 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_completion()
2314 ccb = &pm8001_ha->ccb_info[tag]; in mpi_sata_completion()
2320 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_completion()
2329 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_completion()
2336 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_completion()
2343 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_completion()
2353 sata_addr_low[i] = pm8001_ha->sas_addr[j]; in mpi_sata_completion()
2355 sata_addr_hi[i] = pm8001_ha->sas_addr[j]; in mpi_sata_completion()
2377 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_completion()
2382 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_completion()
2389 PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_SUCCESS\n")); in mpi_sata_completion()
2400 pm8001_send_abort_all(pm8001_ha, pm8001_dev); in mpi_sata_completion()
2402 pm8001_tag_free(pm8001_ha, tag); in mpi_sata_completion()
2411 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2419 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2423 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2427 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2435 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2442 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2452 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2461 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2467 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2473 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2480 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2488 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2495 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2502 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2507 pm8001_handle_event(pm8001_ha, in mpi_sata_completion()
2512 pm8001_ccb_task_free_done(pm8001_ha, t, ccb, tag); in mpi_sata_completion()
2517 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2523 pm8001_handle_event(pm8001_ha, in mpi_sata_completion()
2528 pm8001_ccb_task_free_done(pm8001_ha, t, ccb, tag); in mpi_sata_completion()
2533 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2541 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2547 pm8001_handle_event(pm8001_ha, in mpi_sata_completion()
2552 pm8001_ccb_task_free_done(pm8001_ha, t, ccb, tag); in mpi_sata_completion()
2557 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2564 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2570 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2576 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2582 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2588 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2594 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2600 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2606 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2611 pm8001_handle_event(pm8001_ha, pm8001_dev, in mpi_sata_completion()
2615 pm8001_ccb_task_free_done(pm8001_ha, t, ccb, tag); in mpi_sata_completion()
2620 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2626 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2631 pm8001_handle_event(pm8001_ha, pm8001_dev, in mpi_sata_completion()
2635 pm8001_ccb_task_free_done(pm8001_ha, t, ccb, tag); in mpi_sata_completion()
2640 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2647 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2660 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_completion()
2664 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in mpi_sata_completion()
2667 pm8001_ccb_task_free_done(pm8001_ha, t, ccb, tag); in mpi_sata_completion()
2672 static void mpi_sata_event(struct pm8001_hba_info *pm8001_ha , void *piomb) in mpi_sata_event() argument
2686 ccb = &pm8001_ha->ccb_info[tag]; in mpi_sata_event()
2692 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_event()
2696 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_event()
2702 pm8001_dev = pm8001_find_dev(pm8001_ha, dev_id); in mpi_sata_event()
2705 pm8001_send_read_log(pm8001_ha, pm8001_dev); in mpi_sata_event()
2709 ccb = &pm8001_ha->ccb_info[tag]; in mpi_sata_event()
2713 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_event()
2718 PM8001_IO_DBG(pm8001_ha, pm8001_printk( in mpi_sata_event()
2723 PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_UNDERFLOW\n")); in mpi_sata_event()
2731 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2737 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2744 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2752 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2759 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2766 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2771 pm8001_handle_event(pm8001_ha, in mpi_sata_event()
2776 pm8001_ccb_task_free_done(pm8001_ha, t, ccb, tag); in mpi_sata_event()
2781 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2788 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2796 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2803 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2809 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2815 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2821 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2827 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2833 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2839 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()
2861 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2867 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2880 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_event()
2884 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in mpi_sata_event()
2887 pm8001_ccb_task_free_done(pm8001_ha, t, ccb, tag); in mpi_sata_event()
2893 mpi_smp_completion(struct pm8001_hba_info *pm8001_ha, void *piomb) in mpi_smp_completion() argument
2909 ccb = &pm8001_ha->ccb_info[tag]; in mpi_smp_completion()
2915 PM8001_FAIL_DBG(pm8001_ha, in mpi_smp_completion()
2922 PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_SUCCESS\n")); in mpi_smp_completion()
2929 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
2937 PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_UNDERFLOW\n")); in mpi_smp_completion()
2945 PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_NO_DEVICE\n")); in mpi_smp_completion()
2950 PM8001_IO_DBG(pm8001_ha, 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()
2975 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
2982 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
2989 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
2994 pm8001_handle_event(pm8001_ha, in mpi_smp_completion()
2999 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3006 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3014 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3021 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3027 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3034 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3040 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3047 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3053 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3060 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3067 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3080 PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("task 0x%p done with" in mpi_smp_completion()
3084 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in mpi_smp_completion()
3087 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in mpi_smp_completion()
3093 void pm8001_mpi_set_dev_state_resp(struct pm8001_hba_info *pm8001_ha, in pm8001_mpi_set_dev_state_resp() argument
3099 struct pm8001_ccb_info *ccb = &pm8001_ha->ccb_info[tag]; in pm8001_mpi_set_dev_state_resp()
3105 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("Set device id = 0x%x state " in pm8001_mpi_set_dev_state_resp()
3111 pm8001_tag_free(pm8001_ha, tag); in pm8001_mpi_set_dev_state_resp()
3114 void pm8001_mpi_set_nvmd_resp(struct pm8001_hba_info *pm8001_ha, void *piomb) in pm8001_mpi_set_nvmd_resp() argument
3119 struct pm8001_ccb_info *ccb = &pm8001_ha->ccb_info[tag]; in pm8001_mpi_set_nvmd_resp()
3121 complete(pm8001_ha->nvmd_completion); in pm8001_mpi_set_nvmd_resp()
3122 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("Set nvm data complete!\n")); in pm8001_mpi_set_nvmd_resp()
3124 PM8001_FAIL_DBG(pm8001_ha, in pm8001_mpi_set_nvmd_resp()
3130 pm8001_tag_free(pm8001_ha, tag); in pm8001_mpi_set_nvmd_resp()
3134 pm8001_mpi_get_nvmd_resp(struct pm8001_hba_info *pm8001_ha, void *piomb) in pm8001_mpi_get_nvmd_resp() argument
3140 struct pm8001_ccb_info *ccb = &pm8001_ha->ccb_info[tag]; in pm8001_mpi_get_nvmd_resp()
3144 void *virt_addr = pm8001_ha->memoryMap.region[NVMD].virt_ptr; in pm8001_mpi_get_nvmd_resp()
3147 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("Get nvm data complete!\n")); in pm8001_mpi_get_nvmd_resp()
3149 PM8001_FAIL_DBG(pm8001_ha, in pm8001_mpi_get_nvmd_resp()
3151 complete(pm8001_ha->nvmd_completion); in pm8001_mpi_get_nvmd_resp()
3157 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_get_nvmd_resp()
3161 memcpy(pm8001_ha->sas_addr, in pm8001_mpi_get_nvmd_resp()
3164 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_get_nvmd_resp()
3177 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_get_nvmd_resp()
3182 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_get_nvmd_resp()
3190 pm8001_ha->memoryMap.region[NVMD].virt_ptr, in pm8001_mpi_get_nvmd_resp()
3195 pm8001_tag_free(pm8001_ha, tag); in pm8001_mpi_get_nvmd_resp()
3196 complete(pm8001_ha->nvmd_completion); in pm8001_mpi_get_nvmd_resp()
3199 int pm8001_mpi_local_phy_ctl(struct pm8001_hba_info *pm8001_ha, void *piomb) in pm8001_mpi_local_phy_ctl() argument
3207 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_local_phy_ctl()
3211 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_local_phy_ctl()
3228 void pm8001_bytes_dmaed(struct pm8001_hba_info *pm8001_ha, int i) in pm8001_bytes_dmaed() argument
3230 struct pm8001_phy *phy = &pm8001_ha->phy[i]; in pm8001_bytes_dmaed()
3236 sas_ha = pm8001_ha->sas; in pm8001_bytes_dmaed()
3255 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("phy %d byte dmaded.\n", i)); in pm8001_bytes_dmaed()
3258 pm8001_ha->sas->notify_port_event(sas_phy, PORTE_BYTES_DMAED); in pm8001_bytes_dmaed()
3308 struct pm8001_hba_info *pm8001_ha = phy->sas_phy.ha->lldd_ha; in pm8001_get_attached_sas_addr() local
3310 u64 addr = be64_to_cpu(*(__be64 *)pm8001_ha->sas_addr); in pm8001_get_attached_sas_addr()
3330 static void pm8001_hw_event_ack_req(struct pm8001_hba_info *pm8001_ha, in pm8001_hw_event_ack_req() argument
3339 circularQ = &pm8001_ha->inbnd_q_tbl[Qnum]; in pm8001_hw_event_ack_req()
3345 pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0); in pm8001_hw_event_ack_req()
3348 static int pm8001_chip_phy_ctl_req(struct pm8001_hba_info *pm8001_ha,
3357 hw_event_sas_phy_up(struct pm8001_hba_info *pm8001_ha, void *piomb) in hw_event_sas_phy_up() argument
3370 struct pm8001_port *port = &pm8001_ha->port[port_id]; in hw_event_sas_phy_up()
3371 struct sas_ha_struct *sas_ha = pm8001_ha->sas; in hw_event_sas_phy_up()
3372 struct pm8001_phy *phy = &pm8001_ha->phy[phy_id]; in hw_event_sas_phy_up()
3377 PM8001_MSG_DBG(pm8001_ha, in hw_event_sas_phy_up()
3383 PM8001_MSG_DBG(pm8001_ha, in hw_event_sas_phy_up()
3387 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("end device.\n")); in hw_event_sas_phy_up()
3388 pm8001_chip_phy_ctl_req(pm8001_ha, phy_id, in hw_event_sas_phy_up()
3394 PM8001_MSG_DBG(pm8001_ha, in hw_event_sas_phy_up()
3400 PM8001_MSG_DBG(pm8001_ha, in hw_event_sas_phy_up()
3406 PM8001_MSG_DBG(pm8001_ha, in hw_event_sas_phy_up()
3425 if (pm8001_ha->flags == PM8001F_RUN_TIME) in hw_event_sas_phy_up()
3427 pm8001_bytes_dmaed(pm8001_ha, phy_id); in hw_event_sas_phy_up()
3436 hw_event_sata_phy_up(struct pm8001_hba_info *pm8001_ha, void *piomb) in hw_event_sata_phy_up() argument
3449 struct pm8001_port *port = &pm8001_ha->port[port_id]; in hw_event_sata_phy_up()
3450 struct sas_ha_struct *sas_ha = pm8001_ha->sas; in hw_event_sata_phy_up()
3451 struct pm8001_phy *phy = &pm8001_ha->phy[phy_id]; in hw_event_sata_phy_up()
3453 PM8001_MSG_DBG(pm8001_ha, in hw_event_sata_phy_up()
3472 pm8001_bytes_dmaed(pm8001_ha, phy_id); in hw_event_sata_phy_up()
3481 hw_event_phy_down(struct pm8001_hba_info *pm8001_ha, void *piomb) in hw_event_phy_down() argument
3492 struct pm8001_port *port = &pm8001_ha->port[port_id]; in hw_event_phy_down()
3493 struct pm8001_phy *phy = &pm8001_ha->phy[phy_id]; in hw_event_phy_down()
3503 PM8001_MSG_DBG(pm8001_ha, in hw_event_phy_down()
3505 PM8001_MSG_DBG(pm8001_ha, in hw_event_phy_down()
3508 pm8001_hw_event_ack_req(pm8001_ha, 0, HW_EVENT_PHY_DOWN, in hw_event_phy_down()
3512 PM8001_MSG_DBG(pm8001_ha, in hw_event_phy_down()
3516 PM8001_MSG_DBG(pm8001_ha, in hw_event_phy_down()
3521 PM8001_MSG_DBG(pm8001_ha, in hw_event_phy_down()
3523 PM8001_MSG_DBG(pm8001_ha, in hw_event_phy_down()
3526 pm8001_hw_event_ack_req(pm8001_ha, 0, HW_EVENT_PHY_DOWN, in hw_event_phy_down()
3531 PM8001_MSG_DBG(pm8001_ha, in hw_event_phy_down()
3549 int pm8001_mpi_reg_resp(struct pm8001_hba_info *pm8001_ha, void *piomb) in pm8001_mpi_reg_resp() argument
3560 ccb = &pm8001_ha->ccb_info[htag]; in pm8001_mpi_reg_resp()
3564 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3568 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("DEVREG_SUCCESS\n")); in pm8001_mpi_reg_resp()
3572 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3576 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3580 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3584 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3588 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3592 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3596 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3600 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3607 pm8001_tag_free(pm8001_ha, htag); in pm8001_mpi_reg_resp()
3611 int pm8001_mpi_dereg_resp(struct pm8001_hba_info *pm8001_ha, void *piomb) in pm8001_mpi_dereg_resp() argument
3621 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_dereg_resp()
3632 int pm8001_mpi_fw_flash_update_resp(struct pm8001_hba_info *pm8001_ha, in pm8001_mpi_fw_flash_update_resp() argument
3639 struct pm8001_ccb_info *ccb = &pm8001_ha->ccb_info[tag]; in pm8001_mpi_fw_flash_update_resp()
3643 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3647 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3651 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3655 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3659 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3663 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3667 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3671 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3675 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3679 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3686 pm8001_tag_free(pm8001_ha, tag); in pm8001_mpi_fw_flash_update_resp()
3687 complete(pm8001_ha->nvmd_completion); in pm8001_mpi_fw_flash_update_resp()
3691 int pm8001_mpi_general_event(struct pm8001_hba_info *pm8001_ha , void *piomb) in pm8001_mpi_general_event() argument
3698 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_general_event()
3701 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_general_event()
3707 int pm8001_mpi_task_abort_resp(struct pm8001_hba_info *pm8001_ha, void *piomb) in pm8001_mpi_task_abort_resp() argument
3723 PM8001_FAIL_DBG(pm8001_ha, in pm8001_mpi_task_abort_resp()
3729 ccb = &pm8001_ha->ccb_info[tag]; in pm8001_mpi_task_abort_resp()
3734 PM8001_FAIL_DBG(pm8001_ha, in pm8001_mpi_task_abort_resp()
3740 PM8001_FAIL_DBG(pm8001_ha, in pm8001_mpi_task_abort_resp()
3745 PM8001_EH_DBG(pm8001_ha, pm8001_printk("IO_SUCCESS\n")); in pm8001_mpi_task_abort_resp()
3750 PM8001_EH_DBG(pm8001_ha, pm8001_printk("IO_NOT_VALID\n")); in pm8001_mpi_task_abort_resp()
3759 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in pm8001_mpi_task_abort_resp()
3763 pm8001_tag_free(pm8001_ha, tag); in pm8001_mpi_task_abort_resp()
3778 static int mpi_hw_event(struct pm8001_hba_info *pm8001_ha, void* piomb) in mpi_hw_event() argument
3792 struct sas_ha_struct *sas_ha = pm8001_ha->sas; in mpi_hw_event()
3793 struct pm8001_phy *phy = &pm8001_ha->phy[phy_id]; in mpi_hw_event()
3795 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3799 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3804 if (pm8001_ha->flags == PM8001F_RUN_TIME) in mpi_hw_event()
3809 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3811 hw_event_sas_phy_up(pm8001_ha, piomb); in mpi_hw_event()
3814 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3816 hw_event_sata_phy_up(pm8001_ha, piomb); in mpi_hw_event()
3819 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3826 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3831 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3836 hw_event_phy_down(pm8001_ha, piomb); in mpi_hw_event()
3839 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3848 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3850 pm8001_hw_event_ack_req(pm8001_ha, 0, HW_EVENT_BROADCAST_CHANGE, in mpi_hw_event()
3858 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3865 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3873 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3875 pm8001_hw_event_ack_req(pm8001_ha, 0, in mpi_hw_event()
3882 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3884 pm8001_hw_event_ack_req(pm8001_ha, 0, in mpi_hw_event()
3892 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3894 pm8001_hw_event_ack_req(pm8001_ha, 0, in mpi_hw_event()
3902 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3904 pm8001_hw_event_ack_req(pm8001_ha, 0, in mpi_hw_event()
3912 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3916 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3924 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3926 pm8001_hw_event_ack_req(pm8001_ha, 0, in mpi_hw_event()
3931 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3936 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3943 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3945 pm8001_hw_event_ack_req(pm8001_ha, 0, in mpi_hw_event()
3953 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3960 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3967 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3971 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3975 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3979 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3991 static void process_one_iomb(struct pm8001_hba_info *pm8001_ha, void *piomb) in process_one_iomb() argument
3996 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("process_one_iomb:")); in process_one_iomb()
4000 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("OPC_OUB_ECHO\n")); in process_one_iomb()
4003 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4005 mpi_hw_event(pm8001_ha, piomb); in process_one_iomb()
4008 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4010 mpi_ssp_completion(pm8001_ha, piomb); in process_one_iomb()
4013 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4015 mpi_smp_completion(pm8001_ha, piomb); in process_one_iomb()
4018 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4020 pm8001_mpi_local_phy_ctl(pm8001_ha, piomb); in process_one_iomb()
4023 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4025 pm8001_mpi_reg_resp(pm8001_ha, piomb); in process_one_iomb()
4028 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4030 pm8001_mpi_dereg_resp(pm8001_ha, piomb); in process_one_iomb()
4033 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4037 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4039 mpi_sata_completion(pm8001_ha, piomb); in process_one_iomb()
4042 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4044 mpi_sata_event(pm8001_ha, piomb); in process_one_iomb()
4047 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4049 mpi_ssp_event(pm8001_ha, piomb); in process_one_iomb()
4052 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4057 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4062 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4066 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4068 pm8001_mpi_fw_flash_update_resp(pm8001_ha, piomb); in process_one_iomb()
4071 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4075 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4079 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4081 pm8001_mpi_general_event(pm8001_ha, piomb); in process_one_iomb()
4084 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4086 pm8001_mpi_task_abort_resp(pm8001_ha, piomb); in process_one_iomb()
4089 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4091 pm8001_mpi_task_abort_resp(pm8001_ha, piomb); in process_one_iomb()
4094 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4098 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4102 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4106 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4110 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4114 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4116 pm8001_mpi_task_abort_resp(pm8001_ha, piomb); in process_one_iomb()
4119 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4121 pm8001_mpi_get_nvmd_resp(pm8001_ha, piomb); in process_one_iomb()
4124 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4126 pm8001_mpi_set_nvmd_resp(pm8001_ha, piomb); 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_set_dev_state_resp(pm8001_ha, piomb); in process_one_iomb()
4138 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4142 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4146 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4150 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4157 static int process_oq(struct pm8001_hba_info *pm8001_ha, u8 vec) in process_oq() argument
4165 spin_lock_irqsave(&pm8001_ha->lock, flags); in process_oq()
4166 circularQ = &pm8001_ha->outbnd_q_tbl[vec]; in process_oq()
4168 ret = pm8001_mpi_msg_consume(pm8001_ha, circularQ, &pMsg1, &bc); in process_oq()
4171 process_one_iomb(pm8001_ha, (void *)(pMsg1 - 4)); in process_oq()
4173 pm8001_mpi_msg_free_set(pm8001_ha, pMsg1, in process_oq()
4186 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in process_oq()
4224 static int pm8001_chip_smp_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_smp_req() argument
4242 elem = dma_map_sg(pm8001_ha->dev, sg_req, 1, PCI_DMA_TODEVICE); in pm8001_chip_smp_req()
4248 elem = dma_map_sg(pm8001_ha->dev, sg_resp, 1, PCI_DMA_FROMDEVICE); in pm8001_chip_smp_req()
4261 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_smp_req()
4272 rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, in pm8001_chip_smp_req()
4280 dma_unmap_sg(pm8001_ha->dev, &ccb->task->smp_task.smp_resp, 1, in pm8001_chip_smp_req()
4283 dma_unmap_sg(pm8001_ha->dev, &ccb->task->smp_task.smp_req, 1, in pm8001_chip_smp_req()
4293 static int pm8001_chip_ssp_io_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_ssp_io_req() argument
4319 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_ssp_io_req()
4341 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &ssp_cmd, 0); in pm8001_chip_ssp_io_req()
4345 static int pm8001_chip_sata_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_sata_req() argument
4362 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_sata_req()
4365 PM8001_IO_DBG(pm8001_ha, pm8001_printk("no data\n")); in pm8001_chip_sata_req()
4369 PM8001_IO_DBG(pm8001_ha, pm8001_printk("DMA\n")); in pm8001_chip_sata_req()
4372 PM8001_IO_DBG(pm8001_ha, pm8001_printk("PIO\n")); in pm8001_chip_sata_req()
4377 PM8001_IO_DBG(pm8001_ha, pm8001_printk("FPDMA\n")); in pm8001_chip_sata_req()
4435 PM8001_FAIL_DBG(pm8001_ha, in pm8001_chip_sata_req()
4439 pm8001_ccb_task_free(pm8001_ha, task, ccb, tag); in pm8001_chip_sata_req()
4443 pm8001_ccb_task_free_done(pm8001_ha, task, in pm8001_chip_sata_req()
4450 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &sata_cmd, 0); in pm8001_chip_sata_req()
4461 pm8001_chip_phy_start_req(struct pm8001_hba_info *pm8001_ha, u8 phy_id) in pm8001_chip_phy_start_req() argument
4468 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_phy_start_req()
4483 pm8001_ha->sas_addr, SAS_ADDR_SIZE); in pm8001_chip_phy_start_req()
4485 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opcode, &payload, 0); in pm8001_chip_phy_start_req()
4495 int pm8001_chip_phy_stop_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_phy_stop_req() argument
4503 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_phy_stop_req()
4507 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opcode, &payload, 0); in pm8001_chip_phy_stop_req()
4514 static int pm8001_chip_reg_dev_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_reg_dev_req() argument
4529 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_reg_dev_req()
4532 rc = pm8001_tag_alloc(pm8001_ha, &tag); in pm8001_chip_reg_dev_req()
4535 ccb = &pm8001_ha->ccb_info[tag]; in pm8001_chip_reg_dev_req()
4566 rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0); in pm8001_chip_reg_dev_req()
4573 int pm8001_chip_dereg_dev_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_dereg_dev_req() argument
4581 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_dereg_dev_req()
4585 PM8001_MSG_DBG(pm8001_ha, in pm8001_chip_dereg_dev_req()
4587 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0); in pm8001_chip_dereg_dev_req()
4598 static int pm8001_chip_phy_ctl_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_phy_ctl_req() argument
4606 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_phy_ctl_req()
4610 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0); in pm8001_chip_phy_ctl_req()
4614 static u32 pm8001_chip_is_our_interupt(struct pm8001_hba_info *pm8001_ha) in pm8001_chip_is_our_interupt() argument
4620 value = pm8001_cr32(pm8001_ha, 0, MSGU_ODR); in pm8001_chip_is_our_interupt()
4634 pm8001_chip_isr(struct pm8001_hba_info *pm8001_ha, u8 vec) in pm8001_chip_isr() argument
4636 pm8001_chip_interrupt_disable(pm8001_ha, vec); in pm8001_chip_isr()
4637 process_oq(pm8001_ha, vec); in pm8001_chip_isr()
4638 pm8001_chip_interrupt_enable(pm8001_ha, vec); in pm8001_chip_isr()
4642 static int send_task_abort(struct pm8001_hba_info *pm8001_ha, u32 opc, in send_task_abort() argument
4648 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in send_task_abort()
4660 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &task_abort, 0); in send_task_abort()
4669 int pm8001_chip_abort_task(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_abort_task() argument
4674 PM8001_EH_DBG(pm8001_ha, in pm8001_chip_abort_task()
4684 rc = send_task_abort(pm8001_ha, opc, device_id, flag, in pm8001_chip_abort_task()
4687 PM8001_EH_DBG(pm8001_ha, pm8001_printk("rc= %d\n", rc)); in pm8001_chip_abort_task()
4697 int pm8001_chip_ssp_tm_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_ssp_tm_req() argument
4714 if (pm8001_ha->chip_id != chip_8001) in pm8001_chip_ssp_tm_req()
4716 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_ssp_tm_req()
4717 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &sspTMCmd, 0); in pm8001_chip_ssp_tm_req()
4721 int pm8001_chip_get_nvmd_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_get_nvmd_req() argument
4740 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_get_nvmd_req()
4742 rc = pm8001_tag_alloc(pm8001_ha, &tag); in pm8001_chip_get_nvmd_req()
4747 ccb = &pm8001_ha->ccb_info[tag]; in pm8001_chip_get_nvmd_req()
4762 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_get_nvmd_req()
4764 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_get_nvmd_req()
4771 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_get_nvmd_req()
4773 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_get_nvmd_req()
4780 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_get_nvmd_req()
4782 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_get_nvmd_req()
4789 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_get_nvmd_req()
4791 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_get_nvmd_req()
4799 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_get_nvmd_req()
4801 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_get_nvmd_req()
4807 rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &nvmd_req, 0); in pm8001_chip_get_nvmd_req()
4810 pm8001_tag_free(pm8001_ha, tag); in pm8001_chip_get_nvmd_req()
4815 int pm8001_chip_set_nvmd_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_set_nvmd_req() argument
4832 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_set_nvmd_req()
4833 memcpy(pm8001_ha->memoryMap.region[NVMD].virt_ptr, in pm8001_chip_set_nvmd_req()
4837 rc = pm8001_tag_alloc(pm8001_ha, &tag); in pm8001_chip_set_nvmd_req()
4842 ccb = &pm8001_ha->ccb_info[tag]; in pm8001_chip_set_nvmd_req()
4856 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_set_nvmd_req()
4858 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_set_nvmd_req()
4866 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_set_nvmd_req()
4868 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_set_nvmd_req()
4875 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_set_nvmd_req()
4877 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_set_nvmd_req()
4884 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_set_nvmd_req()
4886 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_set_nvmd_req()
4891 rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &nvmd_req, 0); in pm8001_chip_set_nvmd_req()
4894 pm8001_tag_free(pm8001_ha, tag); in pm8001_chip_set_nvmd_req()
4905 pm8001_chip_fw_flash_update_build(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_fw_flash_update_build() argument
4915 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_fw_flash_update_build()
4926 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0); in pm8001_chip_fw_flash_update_build()
4931 pm8001_chip_fw_flash_update_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_fw_flash_update_req() argument
4940 void *buffer = pm8001_ha->memoryMap.region[FW_FLASH].virt_ptr; in pm8001_chip_fw_flash_update_req()
4941 dma_addr_t phys_addr = pm8001_ha->memoryMap.region[FW_FLASH].phys_addr; in pm8001_chip_fw_flash_update_req()
4959 rc = pm8001_tag_alloc(pm8001_ha, &tag); in pm8001_chip_fw_flash_update_req()
4964 ccb = &pm8001_ha->ccb_info[tag]; in pm8001_chip_fw_flash_update_req()
4967 rc = pm8001_chip_fw_flash_update_build(pm8001_ha, &flash_update_info, in pm8001_chip_fw_flash_update_req()
4981 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_get_gsm_dump() local
4984 gsm_dump_offset = pm8001_ha->fatal_forensic_shift_offset; in pm8001_get_gsm_dump()
4991 if (pm8001_ha->chip_id == chip_8001) in pm8001_get_gsm_dump()
5005 if (pm8001_ha->chip_id == chip_8001) in pm8001_get_gsm_dump()
5013 if (pm8001_ha->chip_id == chip_8001) { in pm8001_get_gsm_dump()
5015 if (-1 == pm8001_bar4_shift(pm8001_ha, in pm8001_get_gsm_dump()
5020 if (-1 == pm80xx_bar4_shift(pm8001_ha, in pm8001_get_gsm_dump()
5029 value = pm8001_cr32(pm8001_ha, bar, (work_offset + offset) & in pm8001_get_gsm_dump()
5035 value = pm8001_cr32(pm8001_ha, bar, (work_offset + offset) & in pm8001_get_gsm_dump()
5041 if (-1 == pm8001_bar4_shift(pm8001_ha, 0)) in pm8001_get_gsm_dump()
5043 pm8001_ha->fatal_forensic_shift_offset += 1024; in pm8001_get_gsm_dump()
5045 if (pm8001_ha->fatal_forensic_shift_offset >= 0x100000) in pm8001_get_gsm_dump()
5046 pm8001_ha->fatal_forensic_shift_offset = 0; in pm8001_get_gsm_dump()
5051 pm8001_chip_set_dev_state_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_set_dev_state_req() argument
5061 rc = pm8001_tag_alloc(pm8001_ha, &tag); in pm8001_chip_set_dev_state_req()
5064 ccb = &pm8001_ha->ccb_info[tag]; in pm8001_chip_set_dev_state_req()
5067 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_set_dev_state_req()
5071 rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0); in pm8001_chip_set_dev_state_req()
5077 pm8001_chip_sas_re_initialization(struct pm8001_hba_info *pm8001_ha) in pm8001_chip_sas_re_initialization() argument
5086 rc = pm8001_tag_alloc(pm8001_ha, &tag); in pm8001_chip_sas_re_initialization()
5089 ccb = &pm8001_ha->ccb_info[tag]; in pm8001_chip_sas_re_initialization()
5091 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_sas_re_initialization()
5096 rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0); in pm8001_chip_sas_re_initialization()
5098 pm8001_tag_free(pm8001_ha, tag); in pm8001_chip_sas_re_initialization()