Lines Matching refs:asd_ha
43 static int asd_get_user_sas_addr(struct asd_ha_struct *asd_ha) in asd_get_user_sas_addr() argument
46 if (asd_ha->hw_prof.sas_addr[0]) in asd_get_user_sas_addr()
49 return sas_request_addr(asd_ha->sas_ha.core.shost, in asd_get_user_sas_addr()
50 asd_ha->hw_prof.sas_addr); in asd_get_user_sas_addr()
53 static void asd_propagate_sas_addr(struct asd_ha_struct *asd_ha) in asd_propagate_sas_addr() argument
58 if (asd_ha->hw_prof.phy_desc[i].sas_addr[0] == 0) in asd_propagate_sas_addr()
63 SAS_ADDR(asd_ha->hw_prof.sas_addr)); in asd_propagate_sas_addr()
64 memcpy(asd_ha->hw_prof.phy_desc[i].sas_addr, in asd_propagate_sas_addr()
65 asd_ha->hw_prof.sas_addr, SAS_ADDR_SIZE); in asd_propagate_sas_addr()
89 struct asd_ha_struct *asd_ha = phy->sas_phy.ha->lldd_ha; in asd_init_phy() local
101 phy->id_frm_tok = asd_alloc_coherent(asd_ha, in asd_init_phy()
115 static void asd_init_ports(struct asd_ha_struct *asd_ha) in asd_init_ports() argument
119 spin_lock_init(&asd_ha->asd_ports_lock); in asd_init_ports()
121 struct asd_port *asd_port = &asd_ha->asd_ports[i]; in asd_init_ports()
130 static int asd_init_phys(struct asd_ha_struct *asd_ha) in asd_init_phys() argument
133 u8 phy_mask = asd_ha->hw_prof.enabled_phys; in asd_init_phys()
136 struct asd_phy *phy = &asd_ha->phys[i]; in asd_init_phys()
138 phy->phy_desc = &asd_ha->hw_prof.phy_desc[i]; in asd_init_phys()
145 phy->sas_phy.ha = &asd_ha->sas_ha; in asd_init_phys()
151 int err = asd_init_phy(&asd_ha->phys[i]); in asd_init_phys()
161 static int asd_init_sw(struct asd_ha_struct *asd_ha) in asd_init_sw() argument
163 struct pci_dev *pcidev = asd_ha->pcidev; in asd_init_sw()
189 asd_ha->io_handle[0].swa_base = REG_BASE_ADDR; in asd_init_sw()
190 asd_ha->io_handle[0].swb_base = REG_BASE_ADDR_CSEQCIO; in asd_init_sw()
191 asd_ha->io_handle[0].swc_base = REG_BASE_ADDR_EXSI; in asd_init_sw()
192 MBAR0_SWB_SIZE = asd_ha->io_handle[0].len - 0x80; in asd_init_sw()
193 if (!asd_ha->iospace) { in asd_init_sw()
196 asd_ha->io_handle[1].swa_base = OCM_BASE_ADDR; in asd_init_sw()
198 spin_lock_init(&asd_ha->iolock); in asd_init_sw()
216 static int asd_init_scbs(struct asd_ha_struct *asd_ha) in asd_init_scbs() argument
218 struct asd_seq_data *seq = &asd_ha->seq; in asd_init_scbs()
222 asd_ha->seq.tc_index_bitmap_bits = asd_ha->hw_prof.max_scbs; in asd_init_scbs()
223 asd_ha->seq.tc_index_array = kzalloc(asd_ha->seq.tc_index_bitmap_bits* in asd_init_scbs()
225 if (!asd_ha->seq.tc_index_array) in asd_init_scbs()
228 bitmap_bytes = (asd_ha->seq.tc_index_bitmap_bits+7)/8; in asd_init_scbs()
230 asd_ha->seq.tc_index_bitmap = kzalloc(bitmap_bytes, GFP_KERNEL); in asd_init_scbs()
231 if (!asd_ha->seq.tc_index_bitmap) in asd_init_scbs()
237 seq->next_scb.vaddr = dma_pool_alloc(asd_ha->scb_pool, GFP_KERNEL, in asd_init_scbs()
240 kfree(asd_ha->seq.tc_index_bitmap); in asd_init_scbs()
241 kfree(asd_ha->seq.tc_index_array); in asd_init_scbs()
242 asd_ha->seq.tc_index_bitmap = NULL; in asd_init_scbs()
243 asd_ha->seq.tc_index_array = NULL; in asd_init_scbs()
254 static void asd_get_max_scb_ddb(struct asd_ha_struct *asd_ha) in asd_get_max_scb_ddb() argument
256 asd_ha->hw_prof.max_scbs = asd_get_cmdctx_size(asd_ha)/ASD_SCB_SIZE; in asd_get_max_scb_ddb()
257 asd_ha->hw_prof.max_ddbs = asd_get_devctx_size(asd_ha)/ASD_DDB_SIZE; in asd_get_max_scb_ddb()
259 asd_ha->hw_prof.max_scbs, in asd_get_max_scb_ddb()
260 asd_ha->hw_prof.max_ddbs); in asd_get_max_scb_ddb()
267 static int asd_init_dl(struct asd_ha_struct *asd_ha) in asd_init_dl() argument
269 asd_ha->seq.actual_dl in asd_init_dl()
270 = asd_alloc_coherent(asd_ha, in asd_init_dl()
273 if (!asd_ha->seq.actual_dl) in asd_init_dl()
275 asd_ha->seq.dl = asd_ha->seq.actual_dl->vaddr; in asd_init_dl()
276 asd_ha->seq.dl_toggle = ASD_DEF_DL_TOGGLE; in asd_init_dl()
277 asd_ha->seq.dl_next = 0; in asd_init_dl()
278 tasklet_init(&asd_ha->seq.dl_tasklet, asd_dl_tasklet_handler, in asd_init_dl()
279 (unsigned long) asd_ha); in asd_init_dl()
286 static int asd_alloc_edbs(struct asd_ha_struct *asd_ha, gfp_t gfp_flags) in asd_alloc_edbs() argument
288 struct asd_seq_data *seq = &asd_ha->seq; in asd_alloc_edbs()
296 seq->edb_arr[i] = asd_alloc_coherent(asd_ha, ASD_EDB_SIZE, in asd_alloc_edbs()
309 asd_free_coherent(asd_ha, seq->edb_arr[i]); in asd_alloc_edbs()
316 static int asd_alloc_escbs(struct asd_ha_struct *asd_ha, in asd_alloc_escbs() argument
319 struct asd_seq_data *seq = &asd_ha->seq; in asd_alloc_escbs()
329 escb = asd_ascb_alloc_list(asd_ha, &escbs, gfp_flags); in asd_alloc_escbs()
352 static void asd_assign_edbs2escbs(struct asd_ha_struct *asd_ha) in asd_assign_edbs2escbs() argument
354 struct asd_seq_data *seq = &asd_ha->seq; in asd_assign_edbs2escbs()
383 static int asd_init_escbs(struct asd_ha_struct *asd_ha) in asd_init_escbs() argument
385 struct asd_seq_data *seq = &asd_ha->seq; in asd_init_escbs()
389 int edbs = 2*(1+asd_ha->hw_prof.num_phys); in asd_init_escbs()
394 err = asd_alloc_edbs(asd_ha, GFP_KERNEL); in asd_init_escbs()
400 err = asd_alloc_escbs(asd_ha, GFP_KERNEL); in asd_init_escbs()
406 asd_assign_edbs2escbs(asd_ha); in asd_init_escbs()
413 seq->can_queue = 1 + (asd_ha->hw_prof.max_scbs - seq->pending)/2; in asd_init_escbs()
427 int asd_chip_hardrst(struct asd_ha_struct *asd_ha) in asd_chip_hardrst() argument
434 asd_write_reg_dword(asd_ha, COMBIST, HARDRST); in asd_chip_hardrst()
439 reg = asd_read_reg_dword(asd_ha, CHIMINT); in asd_chip_hardrst()
441 asd_write_reg_dword(asd_ha, CHIMINT, in asd_chip_hardrst()
458 static int asd_init_chip(struct asd_ha_struct *asd_ha) in asd_init_chip() argument
462 err = asd_chip_hardrst(asd_ha); in asd_init_chip()
465 pci_name(asd_ha->pcidev)); in asd_init_chip()
469 asd_disable_ints(asd_ha); in asd_init_chip()
471 err = asd_init_seqs(asd_ha); in asd_init_chip()
474 pci_name(asd_ha->pcidev)); in asd_init_chip()
478 err = asd_start_seqs(asd_ha); in asd_init_chip()
481 pci_name(asd_ha->pcidev)); in asd_init_chip()
502 static void asd_extend_devctx_ocm(struct asd_ha_struct *asd_ha) in asd_extend_devctx_ocm() argument
507 dma_addr -= asd_ha->hw_prof.max_ddbs * ASD_DDB_SIZE; in asd_extend_devctx_ocm()
508 asd_write_reg_addr(asd_ha, DEVCTXBASE, (dma_addr_t) dma_addr); in asd_extend_devctx_ocm()
509 d = asd_read_reg_dword(asd_ha, CTXDOMAIN); in asd_extend_devctx_ocm()
511 asd_write_reg_dword(asd_ha, CTXDOMAIN, d); in asd_extend_devctx_ocm()
512 asd_ha->hw_prof.max_ddbs += MAX_DEVS; in asd_extend_devctx_ocm()
515 static int asd_extend_devctx(struct asd_ha_struct *asd_ha) in asd_extend_devctx() argument
522 asd_extend_devctx_ocm(asd_ha); in asd_extend_devctx()
524 asd_ha->hw_prof.ddb_ext = NULL; in asd_extend_devctx()
525 if (max_devs <= asd_ha->hw_prof.max_ddbs || max_devs > 0xFFFF) { in asd_extend_devctx()
526 max_devs = asd_ha->hw_prof.max_ddbs; in asd_extend_devctx()
530 size = (max_devs - asd_ha->hw_prof.max_ddbs + 1) * ASD_DDB_SIZE; in asd_extend_devctx()
532 asd_ha->hw_prof.ddb_ext = asd_alloc_coherent(asd_ha, size, GFP_KERNEL); in asd_extend_devctx()
533 if (!asd_ha->hw_prof.ddb_ext) { in asd_extend_devctx()
536 max_devs = asd_ha->hw_prof.max_ddbs; in asd_extend_devctx()
539 dma_handle = asd_ha->hw_prof.ddb_ext->dma_handle; in asd_extend_devctx()
541 dma_addr -= asd_ha->hw_prof.max_ddbs * ASD_DDB_SIZE; in asd_extend_devctx()
543 asd_write_reg_addr(asd_ha, DEVCTXBASE, dma_handle); in asd_extend_devctx()
544 d = asd_read_reg_dword(asd_ha, CTXDOMAIN); in asd_extend_devctx()
546 asd_write_reg_dword(asd_ha, CTXDOMAIN, d); in asd_extend_devctx()
548 asd_ha->hw_prof.max_ddbs = max_devs; in asd_extend_devctx()
553 static int asd_extend_cmdctx(struct asd_ha_struct *asd_ha) in asd_extend_cmdctx() argument
560 asd_ha->hw_prof.scb_ext = NULL; in asd_extend_cmdctx()
561 if (max_cmnds <= asd_ha->hw_prof.max_scbs || max_cmnds > 0xFFFF) { in asd_extend_cmdctx()
562 max_cmnds = asd_ha->hw_prof.max_scbs; in asd_extend_cmdctx()
566 size = (max_cmnds - asd_ha->hw_prof.max_scbs + 1) * ASD_SCB_SIZE; in asd_extend_cmdctx()
568 asd_ha->hw_prof.scb_ext = asd_alloc_coherent(asd_ha, size, GFP_KERNEL); in asd_extend_cmdctx()
569 if (!asd_ha->hw_prof.scb_ext) { in asd_extend_cmdctx()
572 max_cmnds = asd_ha->hw_prof.max_scbs; in asd_extend_cmdctx()
575 dma_handle = asd_ha->hw_prof.scb_ext->dma_handle; in asd_extend_cmdctx()
577 dma_addr -= asd_ha->hw_prof.max_scbs * ASD_SCB_SIZE; in asd_extend_cmdctx()
579 asd_write_reg_addr(asd_ha, CMDCTXBASE, dma_handle); in asd_extend_cmdctx()
580 d = asd_read_reg_dword(asd_ha, CTXDOMAIN); in asd_extend_cmdctx()
582 asd_write_reg_dword(asd_ha, CTXDOMAIN, d); in asd_extend_cmdctx()
584 asd_ha->hw_prof.max_scbs = max_cmnds; in asd_extend_cmdctx()
601 static int asd_init_ctxmem(struct asd_ha_struct *asd_ha) in asd_init_ctxmem() argument
605 asd_get_max_scb_ddb(asd_ha); in asd_init_ctxmem()
606 asd_extend_devctx(asd_ha); in asd_init_ctxmem()
607 asd_extend_cmdctx(asd_ha); in asd_init_ctxmem()
610 bitmap_bytes = (asd_ha->hw_prof.max_ddbs+7)/8; in asd_init_ctxmem()
612 asd_ha->hw_prof.ddb_bitmap = kzalloc(bitmap_bytes, GFP_KERNEL); in asd_init_ctxmem()
613 if (!asd_ha->hw_prof.ddb_bitmap) in asd_init_ctxmem()
615 spin_lock_init(&asd_ha->hw_prof.ddb_lock); in asd_init_ctxmem()
620 int asd_init_hw(struct asd_ha_struct *asd_ha) in asd_init_hw() argument
625 err = asd_init_sw(asd_ha); in asd_init_hw()
629 err = pci_read_config_dword(asd_ha->pcidev, PCIC_HSTPCIX_CNTRL, &v); in asd_init_hw()
632 pci_name(asd_ha->pcidev)); in asd_init_hw()
635 pci_write_config_dword(asd_ha->pcidev, PCIC_HSTPCIX_CNTRL, in asd_init_hw()
639 pci_name(asd_ha->pcidev)); in asd_init_hw()
643 err = asd_read_ocm(asd_ha); in asd_init_hw()
650 err = asd_read_flash(asd_ha); in asd_init_hw()
658 asd_init_ctxmem(asd_ha); in asd_init_hw()
660 if (asd_get_user_sas_addr(asd_ha)) { in asd_init_hw()
662 pci_name(asd_ha->pcidev)); in asd_init_hw()
667 asd_propagate_sas_addr(asd_ha); in asd_init_hw()
669 err = asd_init_phys(asd_ha); in asd_init_hw()
672 pci_name(asd_ha->pcidev)); in asd_init_hw()
676 asd_init_ports(asd_ha); in asd_init_hw()
678 err = asd_init_scbs(asd_ha); in asd_init_hw()
681 pci_name(asd_ha->pcidev)); in asd_init_hw()
685 err = asd_init_dl(asd_ha); in asd_init_hw()
692 err = asd_init_escbs(asd_ha); in asd_init_hw()
698 err = asd_init_chip(asd_ha); in asd_init_hw()
719 static void asd_chip_reset(struct asd_ha_struct *asd_ha) in asd_chip_reset() argument
721 struct sas_ha_struct *sas_ha = &asd_ha->sas_ha; in asd_chip_reset()
723 ASD_DPRINTK("chip reset for %s\n", pci_name(asd_ha->pcidev)); in asd_chip_reset()
724 asd_chip_hardrst(asd_ha); in asd_chip_reset()
732 struct asd_ha_struct *asd_ha = (struct asd_ha_struct *) data; in asd_dl_tasklet_handler() local
733 struct asd_seq_data *seq = &asd_ha->seq; in asd_dl_tasklet_handler()
775 static void asd_process_donelist_isr(struct asd_ha_struct *asd_ha) in asd_process_donelist_isr() argument
777 tasklet_schedule(&asd_ha->seq.dl_tasklet); in asd_process_donelist_isr()
784 static void asd_com_sas_isr(struct asd_ha_struct *asd_ha) in asd_com_sas_isr() argument
786 u32 comstat = asd_read_reg_dword(asd_ha, COMSTAT); in asd_com_sas_isr()
789 asd_write_reg_dword(asd_ha, COMSTAT, 0xFFFFFFFF); in asd_com_sas_isr()
793 pci_name(asd_ha->pcidev)); in asd_com_sas_isr()
796 u32 dmaerr = asd_read_reg_dword(asd_ha, DMAERR); in asd_com_sas_isr()
800 pci_name(asd_ha->pcidev), in asd_com_sas_isr()
802 asd_read_reg_dword(asd_ha, CSDMAADR), in asd_com_sas_isr()
803 asd_read_reg_dword(asd_ha, CSDMAADR+4)); in asd_com_sas_isr()
807 asd_read_reg_dword(asd_ha, CSBUFFER), in asd_com_sas_isr()
808 asd_read_reg_dword(asd_ha, CSBUFFER+4), in asd_com_sas_isr()
809 asd_read_reg_dword(asd_ha, CSBUFFER+8), in asd_com_sas_isr()
810 asd_read_reg_dword(asd_ha, CSBUFFER+12)); in asd_com_sas_isr()
812 asd_dump_seq_state(asd_ha, 0); in asd_com_sas_isr()
814 u32 dmaerr = asd_read_reg_dword(asd_ha, DMAERR); in asd_com_sas_isr()
817 pci_name(asd_ha->pcidev), in asd_com_sas_isr()
820 asd_chip_reset(asd_ha); in asd_com_sas_isr()
823 static void asd_arp2_err(struct asd_ha_struct *asd_ha, u32 dchstatus) in asd_arp2_err() argument
865 u32 arp2int = asd_read_reg_dword(asd_ha, CARP2INT); in asd_arp2_err()
869 pci_name(asd_ha->pcidev), in asd_arp2_err()
873 pci_name(asd_ha->pcidev), in asd_arp2_err()
877 pci_name(asd_ha->pcidev), in asd_arp2_err()
885 u32 arp2int = asd_read_reg_dword(asd_ha, in asd_arp2_err()
890 pci_name(asd_ha->pcidev), in asd_arp2_err()
895 pci_name(asd_ha->pcidev), in asd_arp2_err()
899 pci_name(asd_ha->pcidev), lseq, in asd_arp2_err()
903 asd_chip_reset(asd_ha); in asd_arp2_err()
910 static void asd_dch_sas_isr(struct asd_ha_struct *asd_ha) in asd_dch_sas_isr() argument
912 u32 dchstatus = asd_read_reg_dword(asd_ha, DCHSTATUS); in asd_dch_sas_isr()
915 asd_printk("%s: CFIFTOERR\n", pci_name(asd_ha->pcidev)); in asd_dch_sas_isr()
916 asd_chip_reset(asd_ha); in asd_dch_sas_isr()
918 asd_arp2_err(asd_ha, dchstatus); in asd_dch_sas_isr()
925 static void asd_rbi_exsi_isr(struct asd_ha_struct *asd_ha) in asd_rbi_exsi_isr() argument
927 u32 stat0r = asd_read_reg_dword(asd_ha, ASISTAT0R); in asd_rbi_exsi_isr()
936 pci_name(asd_ha->pcidev)); in asd_rbi_exsi_isr()
938 u32 stat1r = asd_read_reg_dword(asd_ha, ASISTAT1R); in asd_rbi_exsi_isr()
941 pci_name(asd_ha->pcidev)); in asd_rbi_exsi_isr()
943 u32 statr = asd_read_reg_dword(asd_ha, ASIERRSTATR); in asd_rbi_exsi_isr()
949 u32 addr = asd_read_reg_dword(asd_ha, ASIERRADDR); in asd_rbi_exsi_isr()
950 u32 data = asd_read_reg_dword(asd_ha, ASIERRDATAR); in asd_rbi_exsi_isr()
955 pci_name(asd_ha->pcidev), in asd_rbi_exsi_isr()
964 asd_chip_reset(asd_ha); in asd_rbi_exsi_isr()
973 static void asd_hst_pcix_isr(struct asd_ha_struct *asd_ha) in asd_hst_pcix_isr() argument
979 pci_read_config_word(asd_ha->pcidev, PCI_STATUS, &status); in asd_hst_pcix_isr()
980 pci_read_config_dword(asd_ha->pcidev, PCIX_STATUS, &pcix_status); in asd_hst_pcix_isr()
981 pci_read_config_dword(asd_ha->pcidev, ECC_CTRL_STAT, &ecc_status); in asd_hst_pcix_isr()
984 asd_printk("parity error for %s\n", pci_name(asd_ha->pcidev)); in asd_hst_pcix_isr()
986 asd_printk("master abort for %s\n", pci_name(asd_ha->pcidev)); in asd_hst_pcix_isr()
988 asd_printk("target abort for %s\n", pci_name(asd_ha->pcidev)); in asd_hst_pcix_isr()
990 asd_printk("data parity for %s\n", pci_name(asd_ha->pcidev)); in asd_hst_pcix_isr()
993 pci_name(asd_ha->pcidev)); in asd_hst_pcix_isr()
994 pci_write_config_dword(asd_ha->pcidev,PCIX_STATUS,pcix_status); in asd_hst_pcix_isr()
999 pci_name(asd_ha->pcidev)); in asd_hst_pcix_isr()
1000 pci_write_config_dword(asd_ha->pcidev,PCIX_STATUS,pcix_status); in asd_hst_pcix_isr()
1005 pci_name(asd_ha->pcidev)); in asd_hst_pcix_isr()
1008 pci_name(asd_ha->pcidev)); in asd_hst_pcix_isr()
1009 asd_chip_reset(asd_ha); in asd_hst_pcix_isr()
1021 struct asd_ha_struct *asd_ha = dev_id; in asd_hw_isr() local
1022 u32 chimint = asd_read_reg_dword(asd_ha, CHIMINT); in asd_hw_isr()
1027 asd_write_reg_dword(asd_ha, CHIMINT, chimint); in asd_hw_isr()
1028 (void) asd_read_reg_dword(asd_ha, CHIMINT); in asd_hw_isr()
1031 asd_process_donelist_isr(asd_ha); in asd_hw_isr()
1033 asd_com_sas_isr(asd_ha); in asd_hw_isr()
1035 asd_dch_sas_isr(asd_ha); in asd_hw_isr()
1037 asd_rbi_exsi_isr(asd_ha); in asd_hw_isr()
1039 asd_hst_pcix_isr(asd_ha); in asd_hw_isr()
1046 static struct asd_ascb *asd_ascb_alloc(struct asd_ha_struct *asd_ha, in asd_ascb_alloc() argument
1050 struct asd_seq_data *seq = &asd_ha->seq; in asd_ascb_alloc()
1058 ascb->dma_scb.vaddr = dma_pool_alloc(asd_ha->scb_pool, in asd_ascb_alloc()
1066 asd_init_ascb(asd_ha, ascb); in asd_ascb_alloc()
1079 dma_pool_free(asd_ha->scb_pool, ascb->dma_scb.vaddr, in asd_ascb_alloc()
1103 *asd_ha, int *num, in asd_ascb_alloc_list()
1109 struct asd_ascb *ascb = asd_ascb_alloc(asd_ha, gfp_flags); in asd_ascb_alloc_list()
1146 static void asd_swap_head_scb(struct asd_ha_struct *asd_ha, in asd_swap_head_scb() argument
1149 struct asd_seq_data *seq = &asd_ha->seq; in asd_swap_head_scb()
1205 int asd_post_ascb_list(struct asd_ha_struct *asd_ha, struct asd_ascb *ascb, in asd_post_ascb_list() argument
1212 spin_lock_irqsave(&asd_ha->seq.pend_q_lock, flags); in asd_post_ascb_list()
1213 can_queue = asd_ha->hw_prof.max_scbs - asd_ha->seq.pending; in asd_post_ascb_list()
1215 asd_ha->seq.pending += num; in asd_post_ascb_list()
1220 spin_unlock_irqrestore(&asd_ha->seq.pend_q_lock, flags); in asd_post_ascb_list()
1221 asd_printk("%s: scb queue full\n", pci_name(asd_ha->pcidev)); in asd_post_ascb_list()
1225 asd_swap_head_scb(asd_ha, ascb); in asd_post_ascb_list()
1231 asd_ha->seq.scbpro += num; in asd_post_ascb_list()
1232 list_splice_init(&list, asd_ha->seq.pend_q.prev); in asd_post_ascb_list()
1233 asd_write_reg_dword(asd_ha, SCBPRO, (u32)asd_ha->seq.scbpro); in asd_post_ascb_list()
1234 spin_unlock_irqrestore(&asd_ha->seq.pend_q_lock, flags); in asd_post_ascb_list()
1257 int asd_post_escb_list(struct asd_ha_struct *asd_ha, struct asd_ascb *ascb, in asd_post_escb_list() argument
1262 spin_lock_irqsave(&asd_ha->seq.pend_q_lock, flags); in asd_post_escb_list()
1263 asd_swap_head_scb(asd_ha, ascb); in asd_post_escb_list()
1264 asd_ha->seq.scbpro += num; in asd_post_escb_list()
1265 asd_write_reg_dword(asd_ha, SCBPRO, (u32)asd_ha->seq.scbpro); in asd_post_escb_list()
1266 spin_unlock_irqrestore(&asd_ha->seq.pend_q_lock, flags); in asd_post_escb_list()
1279 void asd_turn_led(struct asd_ha_struct *asd_ha, int phy_id, int op) in asd_turn_led() argument
1282 u32 v = asd_read_reg_dword(asd_ha, LmCONTROL(phy_id)); in asd_turn_led()
1287 asd_write_reg_dword(asd_ha, LmCONTROL(phy_id), v); in asd_turn_led()
1300 void asd_control_led(struct asd_ha_struct *asd_ha, int phy_id, int op) in asd_control_led() argument
1305 v = asd_read_reg_dword(asd_ha, GPIOOER); in asd_control_led()
1310 asd_write_reg_dword(asd_ha, GPIOOER, v); in asd_control_led()
1312 v = asd_read_reg_dword(asd_ha, GPIOCNFGR); in asd_control_led()
1317 asd_write_reg_dword(asd_ha, GPIOCNFGR, v); in asd_control_led()
1323 static int asd_enable_phy(struct asd_ha_struct *asd_ha, int phy_id) in asd_enable_phy() argument
1325 struct asd_phy *phy = &asd_ha->phys[phy_id]; in asd_enable_phy()
1327 asd_write_reg_byte(asd_ha, LmSEQ_OOB_REG(phy_id, INT_ENABLE_2), 0); in asd_enable_phy()
1328 asd_write_reg_byte(asd_ha, LmSEQ_OOB_REG(phy_id, HOT_PLUG_DELAY), in asd_enable_phy()
1333 asd_write_reg_byte(asd_ha, LmSEQ_OOB_REG(phy_id, PHY_CONTROL_0), in asd_enable_phy()
1335 asd_write_reg_byte(asd_ha, LmSEQ_OOB_REG(phy_id, PHY_CONTROL_1), in asd_enable_phy()
1337 asd_write_reg_byte(asd_ha, LmSEQ_OOB_REG(phy_id, PHY_CONTROL_2), in asd_enable_phy()
1339 asd_write_reg_byte(asd_ha, LmSEQ_OOB_REG(phy_id, PHY_CONTROL_3), in asd_enable_phy()
1342 asd_write_reg_dword(asd_ha, LmSEQ_TEN_MS_COMINIT_TIMEOUT(phy_id), in asd_enable_phy()
1345 asd_write_reg_addr(asd_ha, LmSEQ_TX_ID_ADDR_FRAME(phy_id), in asd_enable_phy()
1348 asd_control_led(asd_ha, phy_id, 1); in asd_enable_phy()
1353 int asd_enable_phys(struct asd_ha_struct *asd_ha, const u8 phy_mask) in asd_enable_phys() argument
1368 asd_enable_phy(asd_ha, i); in asd_enable_phys()
1372 ascb_list = asd_ascb_alloc_list(asd_ha, &k, GFP_KERNEL); in asd_enable_phys()
1385 k = asd_post_ascb_list(asd_ha, ascb_list, num); in asd_enable_phys()