Lines Matching refs:asd_ha

25 static int asd_get_user_sas_addr(struct asd_ha_struct *asd_ha)  in asd_get_user_sas_addr()  argument
28 if (asd_ha->hw_prof.sas_addr[0]) in asd_get_user_sas_addr()
31 return sas_request_addr(asd_ha->sas_ha.core.shost, in asd_get_user_sas_addr()
32 asd_ha->hw_prof.sas_addr); in asd_get_user_sas_addr()
35 static void asd_propagate_sas_addr(struct asd_ha_struct *asd_ha) in asd_propagate_sas_addr() argument
40 if (asd_ha->hw_prof.phy_desc[i].sas_addr[0] == 0) in asd_propagate_sas_addr()
45 SAS_ADDR(asd_ha->hw_prof.sas_addr)); in asd_propagate_sas_addr()
46 memcpy(asd_ha->hw_prof.phy_desc[i].sas_addr, in asd_propagate_sas_addr()
47 asd_ha->hw_prof.sas_addr, SAS_ADDR_SIZE); in asd_propagate_sas_addr()
71 struct asd_ha_struct *asd_ha = phy->sas_phy.ha->lldd_ha; in asd_init_phy() local
83 phy->id_frm_tok = asd_alloc_coherent(asd_ha, in asd_init_phy()
97 static void asd_init_ports(struct asd_ha_struct *asd_ha) in asd_init_ports() argument
101 spin_lock_init(&asd_ha->asd_ports_lock); in asd_init_ports()
103 struct asd_port *asd_port = &asd_ha->asd_ports[i]; in asd_init_ports()
112 static int asd_init_phys(struct asd_ha_struct *asd_ha) in asd_init_phys() argument
115 u8 phy_mask = asd_ha->hw_prof.enabled_phys; in asd_init_phys()
118 struct asd_phy *phy = &asd_ha->phys[i]; in asd_init_phys()
120 phy->phy_desc = &asd_ha->hw_prof.phy_desc[i]; in asd_init_phys()
127 phy->sas_phy.ha = &asd_ha->sas_ha; in asd_init_phys()
133 int err = asd_init_phy(&asd_ha->phys[i]); in asd_init_phys()
143 static int asd_init_sw(struct asd_ha_struct *asd_ha) in asd_init_sw() argument
145 struct pci_dev *pcidev = asd_ha->pcidev; in asd_init_sw()
171 asd_ha->io_handle[0].swa_base = REG_BASE_ADDR; in asd_init_sw()
172 asd_ha->io_handle[0].swb_base = REG_BASE_ADDR_CSEQCIO; in asd_init_sw()
173 asd_ha->io_handle[0].swc_base = REG_BASE_ADDR_EXSI; in asd_init_sw()
174 MBAR0_SWB_SIZE = asd_ha->io_handle[0].len - 0x80; in asd_init_sw()
175 if (!asd_ha->iospace) { in asd_init_sw()
178 asd_ha->io_handle[1].swa_base = OCM_BASE_ADDR; in asd_init_sw()
180 spin_lock_init(&asd_ha->iolock); in asd_init_sw()
198 static int asd_init_scbs(struct asd_ha_struct *asd_ha) in asd_init_scbs() argument
200 struct asd_seq_data *seq = &asd_ha->seq; in asd_init_scbs()
204 asd_ha->seq.tc_index_bitmap_bits = asd_ha->hw_prof.max_scbs; in asd_init_scbs()
205 asd_ha->seq.tc_index_array = kcalloc(asd_ha->seq.tc_index_bitmap_bits, in asd_init_scbs()
208 if (!asd_ha->seq.tc_index_array) in asd_init_scbs()
211 bitmap_bytes = (asd_ha->seq.tc_index_bitmap_bits+7)/8; in asd_init_scbs()
213 asd_ha->seq.tc_index_bitmap = kzalloc(bitmap_bytes, GFP_KERNEL); in asd_init_scbs()
214 if (!asd_ha->seq.tc_index_bitmap) { in asd_init_scbs()
215 kfree(asd_ha->seq.tc_index_array); in asd_init_scbs()
216 asd_ha->seq.tc_index_array = NULL; in asd_init_scbs()
223 seq->next_scb.vaddr = dma_pool_alloc(asd_ha->scb_pool, GFP_KERNEL, in asd_init_scbs()
226 kfree(asd_ha->seq.tc_index_bitmap); in asd_init_scbs()
227 kfree(asd_ha->seq.tc_index_array); in asd_init_scbs()
228 asd_ha->seq.tc_index_bitmap = NULL; in asd_init_scbs()
229 asd_ha->seq.tc_index_array = NULL; in asd_init_scbs()
240 static void asd_get_max_scb_ddb(struct asd_ha_struct *asd_ha) in asd_get_max_scb_ddb() argument
242 asd_ha->hw_prof.max_scbs = asd_get_cmdctx_size(asd_ha)/ASD_SCB_SIZE; in asd_get_max_scb_ddb()
243 asd_ha->hw_prof.max_ddbs = asd_get_devctx_size(asd_ha)/ASD_DDB_SIZE; in asd_get_max_scb_ddb()
245 asd_ha->hw_prof.max_scbs, in asd_get_max_scb_ddb()
246 asd_ha->hw_prof.max_ddbs); in asd_get_max_scb_ddb()
253 static int asd_init_dl(struct asd_ha_struct *asd_ha) in asd_init_dl() argument
255 asd_ha->seq.actual_dl in asd_init_dl()
256 = asd_alloc_coherent(asd_ha, in asd_init_dl()
259 if (!asd_ha->seq.actual_dl) in asd_init_dl()
261 asd_ha->seq.dl = asd_ha->seq.actual_dl->vaddr; in asd_init_dl()
262 asd_ha->seq.dl_toggle = ASD_DEF_DL_TOGGLE; in asd_init_dl()
263 asd_ha->seq.dl_next = 0; in asd_init_dl()
264 tasklet_init(&asd_ha->seq.dl_tasklet, asd_dl_tasklet_handler, in asd_init_dl()
265 (unsigned long) asd_ha); in asd_init_dl()
272 static int asd_alloc_edbs(struct asd_ha_struct *asd_ha, gfp_t gfp_flags) in asd_alloc_edbs() argument
274 struct asd_seq_data *seq = &asd_ha->seq; in asd_alloc_edbs()
283 seq->edb_arr[i] = asd_alloc_coherent(asd_ha, ASD_EDB_SIZE, in asd_alloc_edbs()
296 asd_free_coherent(asd_ha, seq->edb_arr[i]); in asd_alloc_edbs()
303 static int asd_alloc_escbs(struct asd_ha_struct *asd_ha, in asd_alloc_escbs() argument
306 struct asd_seq_data *seq = &asd_ha->seq; in asd_alloc_escbs()
316 escb = asd_ascb_alloc_list(asd_ha, &escbs, gfp_flags); in asd_alloc_escbs()
339 static void asd_assign_edbs2escbs(struct asd_ha_struct *asd_ha) in asd_assign_edbs2escbs() argument
341 struct asd_seq_data *seq = &asd_ha->seq; in asd_assign_edbs2escbs()
370 static int asd_init_escbs(struct asd_ha_struct *asd_ha) in asd_init_escbs() argument
372 struct asd_seq_data *seq = &asd_ha->seq; in asd_init_escbs()
376 int edbs = 2*(1+asd_ha->hw_prof.num_phys); in asd_init_escbs()
381 err = asd_alloc_edbs(asd_ha, GFP_KERNEL); in asd_init_escbs()
387 err = asd_alloc_escbs(asd_ha, GFP_KERNEL); in asd_init_escbs()
393 asd_assign_edbs2escbs(asd_ha); in asd_init_escbs()
400 seq->can_queue = 1 + (asd_ha->hw_prof.max_scbs - seq->pending)/2; in asd_init_escbs()
414 int asd_chip_hardrst(struct asd_ha_struct *asd_ha) in asd_chip_hardrst() argument
421 asd_write_reg_dword(asd_ha, COMBIST, HARDRST); in asd_chip_hardrst()
426 reg = asd_read_reg_dword(asd_ha, CHIMINT); in asd_chip_hardrst()
428 asd_write_reg_dword(asd_ha, CHIMINT, in asd_chip_hardrst()
445 static int asd_init_chip(struct asd_ha_struct *asd_ha) in asd_init_chip() argument
449 err = asd_chip_hardrst(asd_ha); in asd_init_chip()
452 pci_name(asd_ha->pcidev)); in asd_init_chip()
456 asd_disable_ints(asd_ha); in asd_init_chip()
458 err = asd_init_seqs(asd_ha); in asd_init_chip()
461 pci_name(asd_ha->pcidev)); in asd_init_chip()
465 err = asd_start_seqs(asd_ha); in asd_init_chip()
468 pci_name(asd_ha->pcidev)); in asd_init_chip()
489 static void asd_extend_devctx_ocm(struct asd_ha_struct *asd_ha) in asd_extend_devctx_ocm() argument
494 dma_addr -= asd_ha->hw_prof.max_ddbs * ASD_DDB_SIZE; in asd_extend_devctx_ocm()
495 asd_write_reg_addr(asd_ha, DEVCTXBASE, (dma_addr_t) dma_addr); in asd_extend_devctx_ocm()
496 d = asd_read_reg_dword(asd_ha, CTXDOMAIN); in asd_extend_devctx_ocm()
498 asd_write_reg_dword(asd_ha, CTXDOMAIN, d); in asd_extend_devctx_ocm()
499 asd_ha->hw_prof.max_ddbs += MAX_DEVS; in asd_extend_devctx_ocm()
502 static int asd_extend_devctx(struct asd_ha_struct *asd_ha) in asd_extend_devctx() argument
509 asd_extend_devctx_ocm(asd_ha); in asd_extend_devctx()
511 asd_ha->hw_prof.ddb_ext = NULL; in asd_extend_devctx()
512 if (max_devs <= asd_ha->hw_prof.max_ddbs || max_devs > 0xFFFF) { in asd_extend_devctx()
513 max_devs = asd_ha->hw_prof.max_ddbs; in asd_extend_devctx()
517 size = (max_devs - asd_ha->hw_prof.max_ddbs + 1) * ASD_DDB_SIZE; in asd_extend_devctx()
519 asd_ha->hw_prof.ddb_ext = asd_alloc_coherent(asd_ha, size, GFP_KERNEL); in asd_extend_devctx()
520 if (!asd_ha->hw_prof.ddb_ext) { in asd_extend_devctx()
523 max_devs = asd_ha->hw_prof.max_ddbs; in asd_extend_devctx()
526 dma_handle = asd_ha->hw_prof.ddb_ext->dma_handle; in asd_extend_devctx()
528 dma_addr -= asd_ha->hw_prof.max_ddbs * ASD_DDB_SIZE; in asd_extend_devctx()
530 asd_write_reg_addr(asd_ha, DEVCTXBASE, dma_handle); in asd_extend_devctx()
531 d = asd_read_reg_dword(asd_ha, CTXDOMAIN); in asd_extend_devctx()
533 asd_write_reg_dword(asd_ha, CTXDOMAIN, d); in asd_extend_devctx()
535 asd_ha->hw_prof.max_ddbs = max_devs; in asd_extend_devctx()
540 static int asd_extend_cmdctx(struct asd_ha_struct *asd_ha) in asd_extend_cmdctx() argument
547 asd_ha->hw_prof.scb_ext = NULL; in asd_extend_cmdctx()
548 if (max_cmnds <= asd_ha->hw_prof.max_scbs || max_cmnds > 0xFFFF) { in asd_extend_cmdctx()
549 max_cmnds = asd_ha->hw_prof.max_scbs; in asd_extend_cmdctx()
553 size = (max_cmnds - asd_ha->hw_prof.max_scbs + 1) * ASD_SCB_SIZE; in asd_extend_cmdctx()
555 asd_ha->hw_prof.scb_ext = asd_alloc_coherent(asd_ha, size, GFP_KERNEL); in asd_extend_cmdctx()
556 if (!asd_ha->hw_prof.scb_ext) { in asd_extend_cmdctx()
559 max_cmnds = asd_ha->hw_prof.max_scbs; in asd_extend_cmdctx()
562 dma_handle = asd_ha->hw_prof.scb_ext->dma_handle; in asd_extend_cmdctx()
564 dma_addr -= asd_ha->hw_prof.max_scbs * ASD_SCB_SIZE; in asd_extend_cmdctx()
566 asd_write_reg_addr(asd_ha, CMDCTXBASE, dma_handle); in asd_extend_cmdctx()
567 d = asd_read_reg_dword(asd_ha, CTXDOMAIN); in asd_extend_cmdctx()
569 asd_write_reg_dword(asd_ha, CTXDOMAIN, d); in asd_extend_cmdctx()
571 asd_ha->hw_prof.max_scbs = max_cmnds; in asd_extend_cmdctx()
588 static int asd_init_ctxmem(struct asd_ha_struct *asd_ha) in asd_init_ctxmem() argument
592 asd_get_max_scb_ddb(asd_ha); in asd_init_ctxmem()
593 asd_extend_devctx(asd_ha); in asd_init_ctxmem()
594 asd_extend_cmdctx(asd_ha); in asd_init_ctxmem()
597 bitmap_bytes = (asd_ha->hw_prof.max_ddbs+7)/8; in asd_init_ctxmem()
599 asd_ha->hw_prof.ddb_bitmap = kzalloc(bitmap_bytes, GFP_KERNEL); in asd_init_ctxmem()
600 if (!asd_ha->hw_prof.ddb_bitmap) in asd_init_ctxmem()
602 spin_lock_init(&asd_ha->hw_prof.ddb_lock); in asd_init_ctxmem()
607 int asd_init_hw(struct asd_ha_struct *asd_ha) in asd_init_hw() argument
612 err = asd_init_sw(asd_ha); in asd_init_hw()
616 err = pci_read_config_dword(asd_ha->pcidev, PCIC_HSTPCIX_CNTRL, &v); in asd_init_hw()
619 pci_name(asd_ha->pcidev)); in asd_init_hw()
622 err = pci_write_config_dword(asd_ha->pcidev, PCIC_HSTPCIX_CNTRL, in asd_init_hw()
626 pci_name(asd_ha->pcidev)); in asd_init_hw()
630 err = asd_read_ocm(asd_ha); in asd_init_hw()
637 err = asd_read_flash(asd_ha); in asd_init_hw()
645 asd_init_ctxmem(asd_ha); in asd_init_hw()
647 if (asd_get_user_sas_addr(asd_ha)) { in asd_init_hw()
649 pci_name(asd_ha->pcidev)); in asd_init_hw()
654 asd_propagate_sas_addr(asd_ha); in asd_init_hw()
656 err = asd_init_phys(asd_ha); in asd_init_hw()
659 pci_name(asd_ha->pcidev)); in asd_init_hw()
663 asd_init_ports(asd_ha); in asd_init_hw()
665 err = asd_init_scbs(asd_ha); in asd_init_hw()
668 pci_name(asd_ha->pcidev)); in asd_init_hw()
672 err = asd_init_dl(asd_ha); in asd_init_hw()
679 err = asd_init_escbs(asd_ha); in asd_init_hw()
685 err = asd_init_chip(asd_ha); in asd_init_hw()
706 static void asd_chip_reset(struct asd_ha_struct *asd_ha) in asd_chip_reset() argument
708 ASD_DPRINTK("chip reset for %s\n", pci_name(asd_ha->pcidev)); in asd_chip_reset()
709 asd_chip_hardrst(asd_ha); in asd_chip_reset()
716 struct asd_ha_struct *asd_ha = (struct asd_ha_struct *) data; in asd_dl_tasklet_handler() local
717 struct asd_seq_data *seq = &asd_ha->seq; in asd_dl_tasklet_handler()
759 static void asd_process_donelist_isr(struct asd_ha_struct *asd_ha) in asd_process_donelist_isr() argument
761 tasklet_schedule(&asd_ha->seq.dl_tasklet); in asd_process_donelist_isr()
768 static void asd_com_sas_isr(struct asd_ha_struct *asd_ha) in asd_com_sas_isr() argument
770 u32 comstat = asd_read_reg_dword(asd_ha, COMSTAT); in asd_com_sas_isr()
773 asd_write_reg_dword(asd_ha, COMSTAT, 0xFFFFFFFF); in asd_com_sas_isr()
777 pci_name(asd_ha->pcidev)); in asd_com_sas_isr()
780 u32 dmaerr = asd_read_reg_dword(asd_ha, DMAERR); in asd_com_sas_isr()
784 pci_name(asd_ha->pcidev), in asd_com_sas_isr()
786 asd_read_reg_dword(asd_ha, CSDMAADR), in asd_com_sas_isr()
787 asd_read_reg_dword(asd_ha, CSDMAADR+4)); in asd_com_sas_isr()
791 asd_read_reg_dword(asd_ha, CSBUFFER), in asd_com_sas_isr()
792 asd_read_reg_dword(asd_ha, CSBUFFER+4), in asd_com_sas_isr()
793 asd_read_reg_dword(asd_ha, CSBUFFER+8), in asd_com_sas_isr()
794 asd_read_reg_dword(asd_ha, CSBUFFER+12)); in asd_com_sas_isr()
796 asd_dump_seq_state(asd_ha, 0); in asd_com_sas_isr()
798 u32 dmaerr = asd_read_reg_dword(asd_ha, DMAERR); in asd_com_sas_isr()
801 pci_name(asd_ha->pcidev), in asd_com_sas_isr()
804 asd_chip_reset(asd_ha); in asd_com_sas_isr()
807 static void asd_arp2_err(struct asd_ha_struct *asd_ha, u32 dchstatus) in asd_arp2_err() argument
849 u32 arp2int = asd_read_reg_dword(asd_ha, CARP2INT); in asd_arp2_err()
853 pci_name(asd_ha->pcidev), in asd_arp2_err()
857 pci_name(asd_ha->pcidev), in asd_arp2_err()
861 pci_name(asd_ha->pcidev), in asd_arp2_err()
869 u32 arp2int = asd_read_reg_dword(asd_ha, in asd_arp2_err()
874 pci_name(asd_ha->pcidev), in asd_arp2_err()
879 pci_name(asd_ha->pcidev), in asd_arp2_err()
883 pci_name(asd_ha->pcidev), lseq, in asd_arp2_err()
887 asd_chip_reset(asd_ha); in asd_arp2_err()
894 static void asd_dch_sas_isr(struct asd_ha_struct *asd_ha) in asd_dch_sas_isr() argument
896 u32 dchstatus = asd_read_reg_dword(asd_ha, DCHSTATUS); in asd_dch_sas_isr()
899 asd_printk("%s: CFIFTOERR\n", pci_name(asd_ha->pcidev)); in asd_dch_sas_isr()
900 asd_chip_reset(asd_ha); in asd_dch_sas_isr()
902 asd_arp2_err(asd_ha, dchstatus); in asd_dch_sas_isr()
909 static void asd_rbi_exsi_isr(struct asd_ha_struct *asd_ha) in asd_rbi_exsi_isr() argument
911 u32 stat0r = asd_read_reg_dword(asd_ha, ASISTAT0R); in asd_rbi_exsi_isr()
920 pci_name(asd_ha->pcidev)); in asd_rbi_exsi_isr()
922 u32 stat1r = asd_read_reg_dword(asd_ha, ASISTAT1R); in asd_rbi_exsi_isr()
925 pci_name(asd_ha->pcidev)); in asd_rbi_exsi_isr()
927 u32 statr = asd_read_reg_dword(asd_ha, ASIERRSTATR); in asd_rbi_exsi_isr()
933 u32 addr = asd_read_reg_dword(asd_ha, ASIERRADDR); in asd_rbi_exsi_isr()
934 u32 data = asd_read_reg_dword(asd_ha, ASIERRDATAR); in asd_rbi_exsi_isr()
939 pci_name(asd_ha->pcidev), in asd_rbi_exsi_isr()
948 asd_chip_reset(asd_ha); in asd_rbi_exsi_isr()
957 static void asd_hst_pcix_isr(struct asd_ha_struct *asd_ha) in asd_hst_pcix_isr() argument
963 pci_read_config_word(asd_ha->pcidev, PCI_STATUS, &status); in asd_hst_pcix_isr()
964 pci_read_config_dword(asd_ha->pcidev, PCIX_STATUS, &pcix_status); in asd_hst_pcix_isr()
965 pci_read_config_dword(asd_ha->pcidev, ECC_CTRL_STAT, &ecc_status); in asd_hst_pcix_isr()
968 asd_printk("parity error for %s\n", pci_name(asd_ha->pcidev)); in asd_hst_pcix_isr()
970 asd_printk("master abort for %s\n", pci_name(asd_ha->pcidev)); in asd_hst_pcix_isr()
972 asd_printk("target abort for %s\n", pci_name(asd_ha->pcidev)); in asd_hst_pcix_isr()
974 asd_printk("data parity for %s\n", pci_name(asd_ha->pcidev)); in asd_hst_pcix_isr()
977 pci_name(asd_ha->pcidev)); in asd_hst_pcix_isr()
978 pci_write_config_dword(asd_ha->pcidev,PCIX_STATUS,pcix_status); in asd_hst_pcix_isr()
983 pci_name(asd_ha->pcidev)); in asd_hst_pcix_isr()
984 pci_write_config_dword(asd_ha->pcidev,PCIX_STATUS,pcix_status); in asd_hst_pcix_isr()
989 pci_name(asd_ha->pcidev)); in asd_hst_pcix_isr()
992 pci_name(asd_ha->pcidev)); in asd_hst_pcix_isr()
993 asd_chip_reset(asd_ha); in asd_hst_pcix_isr()
1005 struct asd_ha_struct *asd_ha = dev_id; in asd_hw_isr() local
1006 u32 chimint = asd_read_reg_dword(asd_ha, CHIMINT); in asd_hw_isr()
1011 asd_write_reg_dword(asd_ha, CHIMINT, chimint); in asd_hw_isr()
1012 (void) asd_read_reg_dword(asd_ha, CHIMINT); in asd_hw_isr()
1015 asd_process_donelist_isr(asd_ha); in asd_hw_isr()
1017 asd_com_sas_isr(asd_ha); in asd_hw_isr()
1019 asd_dch_sas_isr(asd_ha); in asd_hw_isr()
1021 asd_rbi_exsi_isr(asd_ha); in asd_hw_isr()
1023 asd_hst_pcix_isr(asd_ha); in asd_hw_isr()
1030 static struct asd_ascb *asd_ascb_alloc(struct asd_ha_struct *asd_ha, in asd_ascb_alloc() argument
1034 struct asd_seq_data *seq = &asd_ha->seq; in asd_ascb_alloc()
1042 ascb->dma_scb.vaddr = dma_pool_zalloc(asd_ha->scb_pool, in asd_ascb_alloc()
1049 asd_init_ascb(asd_ha, ascb); in asd_ascb_alloc()
1062 dma_pool_free(asd_ha->scb_pool, ascb->dma_scb.vaddr, in asd_ascb_alloc()
1086 *asd_ha, int *num, in asd_ascb_alloc_list()
1092 struct asd_ascb *ascb = asd_ascb_alloc(asd_ha, gfp_flags); in asd_ascb_alloc_list()
1129 static void asd_swap_head_scb(struct asd_ha_struct *asd_ha, in asd_swap_head_scb() argument
1132 struct asd_seq_data *seq = &asd_ha->seq; in asd_swap_head_scb()
1186 int asd_post_ascb_list(struct asd_ha_struct *asd_ha, struct asd_ascb *ascb, in asd_post_ascb_list() argument
1193 spin_lock_irqsave(&asd_ha->seq.pend_q_lock, flags); in asd_post_ascb_list()
1194 can_queue = asd_ha->hw_prof.max_scbs - asd_ha->seq.pending; in asd_post_ascb_list()
1196 asd_ha->seq.pending += num; in asd_post_ascb_list()
1201 spin_unlock_irqrestore(&asd_ha->seq.pend_q_lock, flags); in asd_post_ascb_list()
1202 asd_printk("%s: scb queue full\n", pci_name(asd_ha->pcidev)); in asd_post_ascb_list()
1206 asd_swap_head_scb(asd_ha, ascb); in asd_post_ascb_list()
1212 asd_ha->seq.scbpro += num; in asd_post_ascb_list()
1213 list_splice_init(&list, asd_ha->seq.pend_q.prev); in asd_post_ascb_list()
1214 asd_write_reg_dword(asd_ha, SCBPRO, (u32)asd_ha->seq.scbpro); in asd_post_ascb_list()
1215 spin_unlock_irqrestore(&asd_ha->seq.pend_q_lock, flags); in asd_post_ascb_list()
1238 int asd_post_escb_list(struct asd_ha_struct *asd_ha, struct asd_ascb *ascb, in asd_post_escb_list() argument
1243 spin_lock_irqsave(&asd_ha->seq.pend_q_lock, flags); in asd_post_escb_list()
1244 asd_swap_head_scb(asd_ha, ascb); in asd_post_escb_list()
1245 asd_ha->seq.scbpro += num; in asd_post_escb_list()
1246 asd_write_reg_dword(asd_ha, SCBPRO, (u32)asd_ha->seq.scbpro); in asd_post_escb_list()
1247 spin_unlock_irqrestore(&asd_ha->seq.pend_q_lock, flags); in asd_post_escb_list()
1260 void asd_turn_led(struct asd_ha_struct *asd_ha, int phy_id, int op) in asd_turn_led() argument
1263 u32 v = asd_read_reg_dword(asd_ha, LmCONTROL(phy_id)); in asd_turn_led()
1268 asd_write_reg_dword(asd_ha, LmCONTROL(phy_id), v); in asd_turn_led()
1281 void asd_control_led(struct asd_ha_struct *asd_ha, int phy_id, int op) in asd_control_led() argument
1286 v = asd_read_reg_dword(asd_ha, GPIOOER); in asd_control_led()
1291 asd_write_reg_dword(asd_ha, GPIOOER, v); in asd_control_led()
1293 v = asd_read_reg_dword(asd_ha, GPIOCNFGR); in asd_control_led()
1298 asd_write_reg_dword(asd_ha, GPIOCNFGR, v); in asd_control_led()
1304 static int asd_enable_phy(struct asd_ha_struct *asd_ha, int phy_id) in asd_enable_phy() argument
1306 struct asd_phy *phy = &asd_ha->phys[phy_id]; in asd_enable_phy()
1308 asd_write_reg_byte(asd_ha, LmSEQ_OOB_REG(phy_id, INT_ENABLE_2), 0); in asd_enable_phy()
1309 asd_write_reg_byte(asd_ha, LmSEQ_OOB_REG(phy_id, HOT_PLUG_DELAY), in asd_enable_phy()
1314 asd_write_reg_byte(asd_ha, LmSEQ_OOB_REG(phy_id, PHY_CONTROL_0), in asd_enable_phy()
1316 asd_write_reg_byte(asd_ha, LmSEQ_OOB_REG(phy_id, PHY_CONTROL_1), in asd_enable_phy()
1318 asd_write_reg_byte(asd_ha, LmSEQ_OOB_REG(phy_id, PHY_CONTROL_2), in asd_enable_phy()
1320 asd_write_reg_byte(asd_ha, LmSEQ_OOB_REG(phy_id, PHY_CONTROL_3), in asd_enable_phy()
1323 asd_write_reg_dword(asd_ha, LmSEQ_TEN_MS_COMINIT_TIMEOUT(phy_id), in asd_enable_phy()
1326 asd_write_reg_addr(asd_ha, LmSEQ_TX_ID_ADDR_FRAME(phy_id), in asd_enable_phy()
1329 asd_control_led(asd_ha, phy_id, 1); in asd_enable_phy()
1334 int asd_enable_phys(struct asd_ha_struct *asd_ha, const u8 phy_mask) in asd_enable_phys() argument
1349 asd_enable_phy(asd_ha, i); in asd_enable_phys()
1353 ascb_list = asd_ascb_alloc_list(asd_ha, &k, GFP_KERNEL); in asd_enable_phys()
1366 k = asd_post_ascb_list(asd_ha, ascb_list, num); in asd_enable_phys()