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()
2646 PM8001_IO_DBG(pm8001_ha, in mpi_sata_completion()
2659 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_completion()
2663 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in mpi_sata_completion()
2666 pm8001_ccb_task_free_done(pm8001_ha, t, ccb, tag); in mpi_sata_completion()
2671 static void mpi_sata_event(struct pm8001_hba_info *pm8001_ha , void *piomb) in mpi_sata_event() argument
2685 ccb = &pm8001_ha->ccb_info[tag]; in mpi_sata_event()
2691 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_event()
2695 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_event()
2701 pm8001_dev = pm8001_find_dev(pm8001_ha, dev_id); in mpi_sata_event()
2704 pm8001_send_read_log(pm8001_ha, pm8001_dev); in mpi_sata_event()
2708 ccb = &pm8001_ha->ccb_info[tag]; in mpi_sata_event()
2712 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_event()
2717 PM8001_IO_DBG(pm8001_ha, pm8001_printk( in mpi_sata_event()
2722 PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_UNDERFLOW\n")); in mpi_sata_event()
2730 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2736 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2743 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2751 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2758 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2765 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2770 pm8001_handle_event(pm8001_ha, in mpi_sata_event()
2775 pm8001_ccb_task_free_done(pm8001_ha, t, ccb, tag); in mpi_sata_event()
2780 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2787 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2795 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2802 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2808 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2814 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2820 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2826 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2832 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2838 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2844 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2850 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2856 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2860 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2866 PM8001_IO_DBG(pm8001_ha, in mpi_sata_event()
2879 PM8001_FAIL_DBG(pm8001_ha, in mpi_sata_event()
2883 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in mpi_sata_event()
2886 pm8001_ccb_task_free_done(pm8001_ha, t, ccb, tag); in mpi_sata_event()
2892 mpi_smp_completion(struct pm8001_hba_info *pm8001_ha, void *piomb) in mpi_smp_completion() argument
2908 ccb = &pm8001_ha->ccb_info[tag]; in mpi_smp_completion()
2914 PM8001_FAIL_DBG(pm8001_ha, in mpi_smp_completion()
2921 PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_SUCCESS\n")); in mpi_smp_completion()
2928 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
2936 PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_UNDERFLOW\n")); in mpi_smp_completion()
2944 PM8001_IO_DBG(pm8001_ha, pm8001_printk("IO_NO_DEVICE\n")); in mpi_smp_completion()
2949 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
2955 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
2961 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
2967 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()
2993 pm8001_handle_event(pm8001_ha, in mpi_smp_completion()
2998 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3005 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3013 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3020 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3026 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3033 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3039 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3046 PM8001_IO_DBG(pm8001_ha, in mpi_smp_completion()
3052 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()
3079 PM8001_FAIL_DBG(pm8001_ha, pm8001_printk("task 0x%p done with" in mpi_smp_completion()
3083 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in mpi_smp_completion()
3086 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in mpi_smp_completion()
3092 void pm8001_mpi_set_dev_state_resp(struct pm8001_hba_info *pm8001_ha, in pm8001_mpi_set_dev_state_resp() argument
3098 struct pm8001_ccb_info *ccb = &pm8001_ha->ccb_info[tag]; in pm8001_mpi_set_dev_state_resp()
3104 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("Set device id = 0x%x state " in pm8001_mpi_set_dev_state_resp()
3110 pm8001_tag_free(pm8001_ha, tag); in pm8001_mpi_set_dev_state_resp()
3113 void pm8001_mpi_set_nvmd_resp(struct pm8001_hba_info *pm8001_ha, void *piomb) in pm8001_mpi_set_nvmd_resp() argument
3118 struct pm8001_ccb_info *ccb = &pm8001_ha->ccb_info[tag]; in pm8001_mpi_set_nvmd_resp()
3120 complete(pm8001_ha->nvmd_completion); in pm8001_mpi_set_nvmd_resp()
3121 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("Set nvm data complete!\n")); in pm8001_mpi_set_nvmd_resp()
3123 PM8001_FAIL_DBG(pm8001_ha, in pm8001_mpi_set_nvmd_resp()
3129 pm8001_tag_free(pm8001_ha, tag); in pm8001_mpi_set_nvmd_resp()
3133 pm8001_mpi_get_nvmd_resp(struct pm8001_hba_info *pm8001_ha, void *piomb) in pm8001_mpi_get_nvmd_resp() argument
3139 struct pm8001_ccb_info *ccb = &pm8001_ha->ccb_info[tag]; in pm8001_mpi_get_nvmd_resp()
3143 void *virt_addr = pm8001_ha->memoryMap.region[NVMD].virt_ptr; in pm8001_mpi_get_nvmd_resp()
3146 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("Get nvm data complete!\n")); in pm8001_mpi_get_nvmd_resp()
3148 PM8001_FAIL_DBG(pm8001_ha, in pm8001_mpi_get_nvmd_resp()
3150 complete(pm8001_ha->nvmd_completion); in pm8001_mpi_get_nvmd_resp()
3156 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_get_nvmd_resp()
3160 memcpy(pm8001_ha->sas_addr, in pm8001_mpi_get_nvmd_resp()
3163 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_get_nvmd_resp()
3176 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_get_nvmd_resp()
3181 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_get_nvmd_resp()
3189 pm8001_ha->memoryMap.region[NVMD].virt_ptr, in pm8001_mpi_get_nvmd_resp()
3194 pm8001_tag_free(pm8001_ha, tag); in pm8001_mpi_get_nvmd_resp()
3195 complete(pm8001_ha->nvmd_completion); in pm8001_mpi_get_nvmd_resp()
3198 int pm8001_mpi_local_phy_ctl(struct pm8001_hba_info *pm8001_ha, void *piomb) in pm8001_mpi_local_phy_ctl() argument
3206 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_local_phy_ctl()
3210 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_local_phy_ctl()
3227 void pm8001_bytes_dmaed(struct pm8001_hba_info *pm8001_ha, int i) in pm8001_bytes_dmaed() argument
3229 struct pm8001_phy *phy = &pm8001_ha->phy[i]; in pm8001_bytes_dmaed()
3235 sas_ha = pm8001_ha->sas; in pm8001_bytes_dmaed()
3254 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("phy %d byte dmaded.\n", i)); in pm8001_bytes_dmaed()
3257 pm8001_ha->sas->notify_port_event(sas_phy, PORTE_BYTES_DMAED); in pm8001_bytes_dmaed()
3303 struct pm8001_hba_info *pm8001_ha = phy->sas_phy.ha->lldd_ha; in pm8001_get_attached_sas_addr() local
3305 u64 addr = be64_to_cpu(*(__be64 *)pm8001_ha->sas_addr); in pm8001_get_attached_sas_addr()
3325 static void pm8001_hw_event_ack_req(struct pm8001_hba_info *pm8001_ha, in pm8001_hw_event_ack_req() argument
3334 circularQ = &pm8001_ha->inbnd_q_tbl[Qnum]; in pm8001_hw_event_ack_req()
3340 pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0); in pm8001_hw_event_ack_req()
3343 static int pm8001_chip_phy_ctl_req(struct pm8001_hba_info *pm8001_ha,
3352 hw_event_sas_phy_up(struct pm8001_hba_info *pm8001_ha, void *piomb) in hw_event_sas_phy_up() argument
3365 struct pm8001_port *port = &pm8001_ha->port[port_id]; in hw_event_sas_phy_up()
3366 struct sas_ha_struct *sas_ha = pm8001_ha->sas; in hw_event_sas_phy_up()
3367 struct pm8001_phy *phy = &pm8001_ha->phy[phy_id]; in hw_event_sas_phy_up()
3372 PM8001_MSG_DBG(pm8001_ha, in hw_event_sas_phy_up()
3378 PM8001_MSG_DBG(pm8001_ha, in hw_event_sas_phy_up()
3382 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("end device.\n")); in hw_event_sas_phy_up()
3383 pm8001_chip_phy_ctl_req(pm8001_ha, phy_id, in hw_event_sas_phy_up()
3389 PM8001_MSG_DBG(pm8001_ha, in hw_event_sas_phy_up()
3395 PM8001_MSG_DBG(pm8001_ha, in hw_event_sas_phy_up()
3401 PM8001_MSG_DBG(pm8001_ha, in hw_event_sas_phy_up()
3420 if (pm8001_ha->flags == PM8001F_RUN_TIME) in hw_event_sas_phy_up()
3422 pm8001_bytes_dmaed(pm8001_ha, phy_id); in hw_event_sas_phy_up()
3431 hw_event_sata_phy_up(struct pm8001_hba_info *pm8001_ha, void *piomb) in hw_event_sata_phy_up() argument
3444 struct pm8001_port *port = &pm8001_ha->port[port_id]; in hw_event_sata_phy_up()
3445 struct sas_ha_struct *sas_ha = pm8001_ha->sas; in hw_event_sata_phy_up()
3446 struct pm8001_phy *phy = &pm8001_ha->phy[phy_id]; in hw_event_sata_phy_up()
3448 PM8001_MSG_DBG(pm8001_ha, in hw_event_sata_phy_up()
3467 pm8001_bytes_dmaed(pm8001_ha, phy_id); in hw_event_sata_phy_up()
3476 hw_event_phy_down(struct pm8001_hba_info *pm8001_ha, void *piomb) in hw_event_phy_down() argument
3487 struct pm8001_port *port = &pm8001_ha->port[port_id]; in hw_event_phy_down()
3488 struct pm8001_phy *phy = &pm8001_ha->phy[phy_id]; in hw_event_phy_down()
3498 PM8001_MSG_DBG(pm8001_ha, in hw_event_phy_down()
3500 PM8001_MSG_DBG(pm8001_ha, in hw_event_phy_down()
3503 pm8001_hw_event_ack_req(pm8001_ha, 0, HW_EVENT_PHY_DOWN, in hw_event_phy_down()
3507 PM8001_MSG_DBG(pm8001_ha, in hw_event_phy_down()
3511 PM8001_MSG_DBG(pm8001_ha, 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()
3526 PM8001_MSG_DBG(pm8001_ha, in hw_event_phy_down()
3544 int pm8001_mpi_reg_resp(struct pm8001_hba_info *pm8001_ha, void *piomb) in pm8001_mpi_reg_resp() argument
3555 ccb = &pm8001_ha->ccb_info[htag]; in pm8001_mpi_reg_resp()
3559 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3563 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("DEVREG_SUCCESS\n")); in pm8001_mpi_reg_resp()
3567 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3571 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3575 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3579 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3583 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3587 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3591 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3595 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_reg_resp()
3602 pm8001_tag_free(pm8001_ha, htag); in pm8001_mpi_reg_resp()
3606 int pm8001_mpi_dereg_resp(struct pm8001_hba_info *pm8001_ha, void *piomb) in pm8001_mpi_dereg_resp() argument
3616 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_dereg_resp()
3627 int pm8001_mpi_fw_flash_update_resp(struct pm8001_hba_info *pm8001_ha, in pm8001_mpi_fw_flash_update_resp() argument
3634 struct pm8001_ccb_info *ccb = &pm8001_ha->ccb_info[tag]; in pm8001_mpi_fw_flash_update_resp()
3638 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3642 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3646 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3650 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3654 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3658 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3662 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3666 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3670 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3674 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_fw_flash_update_resp()
3681 pm8001_tag_free(pm8001_ha, tag); in pm8001_mpi_fw_flash_update_resp()
3682 complete(pm8001_ha->nvmd_completion); in pm8001_mpi_fw_flash_update_resp()
3686 int pm8001_mpi_general_event(struct pm8001_hba_info *pm8001_ha , void *piomb) in pm8001_mpi_general_event() argument
3693 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_general_event()
3696 PM8001_MSG_DBG(pm8001_ha, in pm8001_mpi_general_event()
3702 int pm8001_mpi_task_abort_resp(struct pm8001_hba_info *pm8001_ha, void *piomb) in pm8001_mpi_task_abort_resp() argument
3718 PM8001_FAIL_DBG(pm8001_ha, in pm8001_mpi_task_abort_resp()
3724 ccb = &pm8001_ha->ccb_info[tag]; in pm8001_mpi_task_abort_resp()
3729 PM8001_FAIL_DBG(pm8001_ha, in pm8001_mpi_task_abort_resp()
3735 PM8001_FAIL_DBG(pm8001_ha, in pm8001_mpi_task_abort_resp()
3740 PM8001_EH_DBG(pm8001_ha, pm8001_printk("IO_SUCCESS\n")); in pm8001_mpi_task_abort_resp()
3745 PM8001_EH_DBG(pm8001_ha, pm8001_printk("IO_NOT_VALID\n")); in pm8001_mpi_task_abort_resp()
3754 pm8001_ccb_task_free(pm8001_ha, t, ccb, tag); in pm8001_mpi_task_abort_resp()
3758 pm8001_tag_free(pm8001_ha, tag); in pm8001_mpi_task_abort_resp()
3773 static int mpi_hw_event(struct pm8001_hba_info *pm8001_ha, void* piomb) in mpi_hw_event() argument
3787 struct sas_ha_struct *sas_ha = pm8001_ha->sas; in mpi_hw_event()
3788 struct pm8001_phy *phy = &pm8001_ha->phy[phy_id]; in mpi_hw_event()
3790 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3794 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3799 if (pm8001_ha->flags == PM8001F_RUN_TIME) in mpi_hw_event()
3804 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3806 hw_event_sas_phy_up(pm8001_ha, piomb); in mpi_hw_event()
3809 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3811 hw_event_sata_phy_up(pm8001_ha, piomb); in mpi_hw_event()
3814 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3821 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3826 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3831 hw_event_phy_down(pm8001_ha, piomb); in mpi_hw_event()
3834 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3843 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3845 pm8001_hw_event_ack_req(pm8001_ha, 0, HW_EVENT_BROADCAST_CHANGE, in mpi_hw_event()
3853 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3860 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3868 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3870 pm8001_hw_event_ack_req(pm8001_ha, 0, in mpi_hw_event()
3877 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3879 pm8001_hw_event_ack_req(pm8001_ha, 0, 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()
3897 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3899 pm8001_hw_event_ack_req(pm8001_ha, 0, in mpi_hw_event()
3907 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3911 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3919 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3921 pm8001_hw_event_ack_req(pm8001_ha, 0, in mpi_hw_event()
3926 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3931 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()
3948 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3955 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3962 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3966 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3970 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3974 PM8001_MSG_DBG(pm8001_ha, in mpi_hw_event()
3986 static void process_one_iomb(struct pm8001_hba_info *pm8001_ha, void *piomb) in process_one_iomb() argument
3991 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("process_one_iomb:")); in process_one_iomb()
3995 PM8001_MSG_DBG(pm8001_ha, pm8001_printk("OPC_OUB_ECHO\n")); in process_one_iomb()
3998 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4000 mpi_hw_event(pm8001_ha, piomb); in process_one_iomb()
4003 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4005 mpi_ssp_completion(pm8001_ha, piomb); in process_one_iomb()
4008 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4010 mpi_smp_completion(pm8001_ha, piomb); in process_one_iomb()
4013 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4015 pm8001_mpi_local_phy_ctl(pm8001_ha, piomb); in process_one_iomb()
4018 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4020 pm8001_mpi_reg_resp(pm8001_ha, piomb); in process_one_iomb()
4023 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4025 pm8001_mpi_dereg_resp(pm8001_ha, piomb); in process_one_iomb()
4028 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4032 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4034 mpi_sata_completion(pm8001_ha, piomb); in process_one_iomb()
4037 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4039 mpi_sata_event(pm8001_ha, piomb); in process_one_iomb()
4042 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4044 mpi_ssp_event(pm8001_ha, piomb); in process_one_iomb()
4047 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4052 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4057 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4061 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4063 pm8001_mpi_fw_flash_update_resp(pm8001_ha, piomb); in process_one_iomb()
4066 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4070 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4074 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4076 pm8001_mpi_general_event(pm8001_ha, piomb); in process_one_iomb()
4079 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4081 pm8001_mpi_task_abort_resp(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()
4093 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4097 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4101 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4105 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4109 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4111 pm8001_mpi_task_abort_resp(pm8001_ha, piomb); in process_one_iomb()
4114 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4116 pm8001_mpi_get_nvmd_resp(pm8001_ha, piomb); in process_one_iomb()
4119 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4121 pm8001_mpi_set_nvmd_resp(pm8001_ha, piomb); 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_set_dev_state_resp(pm8001_ha, piomb); in process_one_iomb()
4133 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4137 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4141 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4145 PM8001_MSG_DBG(pm8001_ha, in process_one_iomb()
4152 static int process_oq(struct pm8001_hba_info *pm8001_ha, u8 vec) in process_oq() argument
4160 spin_lock_irqsave(&pm8001_ha->lock, flags); in process_oq()
4161 circularQ = &pm8001_ha->outbnd_q_tbl[vec]; in process_oq()
4163 ret = pm8001_mpi_msg_consume(pm8001_ha, circularQ, &pMsg1, &bc); in process_oq()
4166 process_one_iomb(pm8001_ha, (void *)(pMsg1 - 4)); in process_oq()
4168 pm8001_mpi_msg_free_set(pm8001_ha, pMsg1, in process_oq()
4181 spin_unlock_irqrestore(&pm8001_ha->lock, flags); in process_oq()
4219 static int pm8001_chip_smp_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_smp_req() argument
4237 elem = dma_map_sg(pm8001_ha->dev, sg_req, 1, PCI_DMA_TODEVICE); in pm8001_chip_smp_req()
4243 elem = dma_map_sg(pm8001_ha->dev, sg_resp, 1, PCI_DMA_FROMDEVICE); in pm8001_chip_smp_req()
4256 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_smp_req()
4267 rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, in pm8001_chip_smp_req()
4275 dma_unmap_sg(pm8001_ha->dev, &ccb->task->smp_task.smp_resp, 1, in pm8001_chip_smp_req()
4278 dma_unmap_sg(pm8001_ha->dev, &ccb->task->smp_task.smp_req, 1, in pm8001_chip_smp_req()
4288 static int pm8001_chip_ssp_io_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_ssp_io_req() argument
4314 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_ssp_io_req()
4336 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &ssp_cmd, 0); in pm8001_chip_ssp_io_req()
4340 static int pm8001_chip_sata_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_sata_req() argument
4357 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_sata_req()
4360 PM8001_IO_DBG(pm8001_ha, pm8001_printk("no data\n")); in pm8001_chip_sata_req()
4364 PM8001_IO_DBG(pm8001_ha, pm8001_printk("DMA\n")); in pm8001_chip_sata_req()
4367 PM8001_IO_DBG(pm8001_ha, pm8001_printk("PIO\n")); in pm8001_chip_sata_req()
4372 PM8001_IO_DBG(pm8001_ha, pm8001_printk("FPDMA\n")); in pm8001_chip_sata_req()
4430 PM8001_FAIL_DBG(pm8001_ha, in pm8001_chip_sata_req()
4434 pm8001_ccb_task_free(pm8001_ha, task, ccb, tag); in pm8001_chip_sata_req()
4438 pm8001_ccb_task_free_done(pm8001_ha, task, in pm8001_chip_sata_req()
4445 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &sata_cmd, 0); in pm8001_chip_sata_req()
4456 pm8001_chip_phy_start_req(struct pm8001_hba_info *pm8001_ha, u8 phy_id) in pm8001_chip_phy_start_req() argument
4463 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_phy_start_req()
4478 pm8001_ha->sas_addr, SAS_ADDR_SIZE); in pm8001_chip_phy_start_req()
4480 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opcode, &payload, 0); in pm8001_chip_phy_start_req()
4490 int pm8001_chip_phy_stop_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_phy_stop_req() argument
4498 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_phy_stop_req()
4502 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opcode, &payload, 0); in pm8001_chip_phy_stop_req()
4509 static int pm8001_chip_reg_dev_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_reg_dev_req() argument
4524 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_reg_dev_req()
4527 rc = pm8001_tag_alloc(pm8001_ha, &tag); in pm8001_chip_reg_dev_req()
4530 ccb = &pm8001_ha->ccb_info[tag]; in pm8001_chip_reg_dev_req()
4561 rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0); in pm8001_chip_reg_dev_req()
4568 int pm8001_chip_dereg_dev_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_dereg_dev_req() argument
4576 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_dereg_dev_req()
4580 PM8001_MSG_DBG(pm8001_ha, in pm8001_chip_dereg_dev_req()
4582 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0); in pm8001_chip_dereg_dev_req()
4593 static int pm8001_chip_phy_ctl_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_phy_ctl_req() argument
4601 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_phy_ctl_req()
4605 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0); in pm8001_chip_phy_ctl_req()
4609 static u32 pm8001_chip_is_our_interupt(struct pm8001_hba_info *pm8001_ha) in pm8001_chip_is_our_interupt() argument
4615 value = pm8001_cr32(pm8001_ha, 0, MSGU_ODR); in pm8001_chip_is_our_interupt()
4629 pm8001_chip_isr(struct pm8001_hba_info *pm8001_ha, u8 vec) in pm8001_chip_isr() argument
4631 pm8001_chip_interrupt_disable(pm8001_ha, vec); in pm8001_chip_isr()
4632 process_oq(pm8001_ha, vec); in pm8001_chip_isr()
4633 pm8001_chip_interrupt_enable(pm8001_ha, vec); in pm8001_chip_isr()
4637 static int send_task_abort(struct pm8001_hba_info *pm8001_ha, u32 opc, in send_task_abort() argument
4643 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in send_task_abort()
4655 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &task_abort, 0); in send_task_abort()
4664 int pm8001_chip_abort_task(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_abort_task() argument
4669 PM8001_EH_DBG(pm8001_ha, in pm8001_chip_abort_task()
4679 rc = send_task_abort(pm8001_ha, opc, device_id, flag, in pm8001_chip_abort_task()
4682 PM8001_EH_DBG(pm8001_ha, pm8001_printk("rc= %d\n", rc)); in pm8001_chip_abort_task()
4692 int pm8001_chip_ssp_tm_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_ssp_tm_req() argument
4709 if (pm8001_ha->chip_id != chip_8001) in pm8001_chip_ssp_tm_req()
4711 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_ssp_tm_req()
4712 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &sspTMCmd, 0); in pm8001_chip_ssp_tm_req()
4716 int pm8001_chip_get_nvmd_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_get_nvmd_req() argument
4735 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_get_nvmd_req()
4737 rc = pm8001_tag_alloc(pm8001_ha, &tag); in pm8001_chip_get_nvmd_req()
4742 ccb = &pm8001_ha->ccb_info[tag]; in pm8001_chip_get_nvmd_req()
4757 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_get_nvmd_req()
4759 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_get_nvmd_req()
4766 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_get_nvmd_req()
4768 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_get_nvmd_req()
4775 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_get_nvmd_req()
4777 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_get_nvmd_req()
4784 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_get_nvmd_req()
4786 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_get_nvmd_req()
4794 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_get_nvmd_req()
4796 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_get_nvmd_req()
4802 rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &nvmd_req, 0); in pm8001_chip_get_nvmd_req()
4805 pm8001_tag_free(pm8001_ha, tag); in pm8001_chip_get_nvmd_req()
4810 int pm8001_chip_set_nvmd_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_set_nvmd_req() argument
4827 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_set_nvmd_req()
4828 memcpy(pm8001_ha->memoryMap.region[NVMD].virt_ptr, in pm8001_chip_set_nvmd_req()
4832 rc = pm8001_tag_alloc(pm8001_ha, &tag); in pm8001_chip_set_nvmd_req()
4837 ccb = &pm8001_ha->ccb_info[tag]; in pm8001_chip_set_nvmd_req()
4851 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_set_nvmd_req()
4853 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_set_nvmd_req()
4861 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_set_nvmd_req()
4863 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_set_nvmd_req()
4870 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_set_nvmd_req()
4872 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_set_nvmd_req()
4879 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_hi); in pm8001_chip_set_nvmd_req()
4881 cpu_to_le32(pm8001_ha->memoryMap.region[NVMD].phys_addr_lo); in pm8001_chip_set_nvmd_req()
4886 rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &nvmd_req, 0); in pm8001_chip_set_nvmd_req()
4889 pm8001_tag_free(pm8001_ha, tag); in pm8001_chip_set_nvmd_req()
4900 pm8001_chip_fw_flash_update_build(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_fw_flash_update_build() argument
4910 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_fw_flash_update_build()
4921 ret = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0); in pm8001_chip_fw_flash_update_build()
4926 pm8001_chip_fw_flash_update_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_fw_flash_update_req() argument
4935 void *buffer = pm8001_ha->memoryMap.region[FW_FLASH].virt_ptr; in pm8001_chip_fw_flash_update_req()
4936 dma_addr_t phys_addr = pm8001_ha->memoryMap.region[FW_FLASH].phys_addr; in pm8001_chip_fw_flash_update_req()
4954 rc = pm8001_tag_alloc(pm8001_ha, &tag); in pm8001_chip_fw_flash_update_req()
4959 ccb = &pm8001_ha->ccb_info[tag]; in pm8001_chip_fw_flash_update_req()
4962 rc = pm8001_chip_fw_flash_update_build(pm8001_ha, &flash_update_info, in pm8001_chip_fw_flash_update_req()
4976 struct pm8001_hba_info *pm8001_ha = sha->lldd_ha; in pm8001_get_gsm_dump() local
4979 gsm_dump_offset = pm8001_ha->fatal_forensic_shift_offset; in pm8001_get_gsm_dump()
4986 if (pm8001_ha->chip_id == chip_8001) in pm8001_get_gsm_dump()
5000 if (pm8001_ha->chip_id == chip_8001) in pm8001_get_gsm_dump()
5008 if (pm8001_ha->chip_id == chip_8001) { in pm8001_get_gsm_dump()
5010 if (-1 == pm8001_bar4_shift(pm8001_ha, in pm8001_get_gsm_dump()
5015 if (-1 == pm80xx_bar4_shift(pm8001_ha, in pm8001_get_gsm_dump()
5024 value = pm8001_cr32(pm8001_ha, bar, (work_offset + offset) & in pm8001_get_gsm_dump()
5030 value = pm8001_cr32(pm8001_ha, bar, (work_offset + offset) & in pm8001_get_gsm_dump()
5036 if (-1 == pm8001_bar4_shift(pm8001_ha, 0)) in pm8001_get_gsm_dump()
5038 pm8001_ha->fatal_forensic_shift_offset += 1024; in pm8001_get_gsm_dump()
5040 if (pm8001_ha->fatal_forensic_shift_offset >= 0x100000) in pm8001_get_gsm_dump()
5041 pm8001_ha->fatal_forensic_shift_offset = 0; in pm8001_get_gsm_dump()
5046 pm8001_chip_set_dev_state_req(struct pm8001_hba_info *pm8001_ha, in pm8001_chip_set_dev_state_req() argument
5056 rc = pm8001_tag_alloc(pm8001_ha, &tag); in pm8001_chip_set_dev_state_req()
5059 ccb = &pm8001_ha->ccb_info[tag]; in pm8001_chip_set_dev_state_req()
5062 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_set_dev_state_req()
5066 rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0); in pm8001_chip_set_dev_state_req()
5072 pm8001_chip_sas_re_initialization(struct pm8001_hba_info *pm8001_ha) in pm8001_chip_sas_re_initialization() argument
5081 rc = pm8001_tag_alloc(pm8001_ha, &tag); in pm8001_chip_sas_re_initialization()
5084 ccb = &pm8001_ha->ccb_info[tag]; in pm8001_chip_sas_re_initialization()
5086 circularQ = &pm8001_ha->inbnd_q_tbl[0]; in pm8001_chip_sas_re_initialization()
5091 rc = pm8001_mpi_build_cmd(pm8001_ha, circularQ, opc, &payload, 0); in pm8001_chip_sas_re_initialization()
5093 pm8001_tag_free(pm8001_ha, tag); in pm8001_chip_sas_re_initialization()