View | Details | Raw Unified | Return to bug 271062 | Differences between
and this patch

Collapse All | Expand All

(-)b/sys/dev/isp/isp.c (-2 / +16 lines)
Lines 179-184 isp_reset(ispsoftc_t *isp, int do_load_defaults) Link Here
179
	case ISP_HA_FC_2700:
179
	case ISP_HA_FC_2700:
180
		btype = "2700";
180
		btype = "2700";
181
		break;
181
		break;
182
	case ISP_HA_FC_2800:
183
		btype = "2800";
184
		break;
182
	default:
185
	default:
183
		break;
186
		break;
184
	}
187
	}
Lines 710-717 isp_init(ispsoftc_t *isp) Link Here
710
	icbp->icb_version = ICB_VERSION1;
713
	icbp->icb_version = ICB_VERSION1;
711
	icbp->icb_maxfrmlen = DEFAULT_FRAMESIZE(isp);
714
	icbp->icb_maxfrmlen = DEFAULT_FRAMESIZE(isp);
712
	if (icbp->icb_maxfrmlen < ICB_MIN_FRMLEN || icbp->icb_maxfrmlen > ICB_MAX_FRMLEN) {
715
	if (icbp->icb_maxfrmlen < ICB_MIN_FRMLEN || icbp->icb_maxfrmlen > ICB_MAX_FRMLEN) {
713
		isp_prt(isp, ISP_LOGERR, "bad frame length (%d) from NVRAM- using %d", DEFAULT_FRAMESIZE(isp), ICB_DFLT_FRMLEN);
716
		if (IS_28XX(isp)) {
714
		icbp->icb_maxfrmlen = ICB_DFLT_FRMLEN;
717
			isp_prt(isp, ISP_LOGERR, "bad frame length (%d) from NVRAM - using %d", DEFAULT_FRAMESIZE(isp), ICB_DFLT_FRMLEN_28XX);
718
			icbp->icb_maxfrmlen = ICB_DFLT_FRMLEN_28XX;
719
		} else {
720
			isp_prt(isp, ISP_LOGERR, "bad frame length (%d) from NVRAM - using %d", DEFAULT_FRAMESIZE(isp), ICB_DFLT_FRMLEN);
721
			icbp->icb_maxfrmlen = ICB_DFLT_FRMLEN;
722
		}
715
	}
723
	}
716
724
717
	if (!IS_26XX(isp))
725
	if (!IS_26XX(isp))
Lines 822-833 isp_init(ispsoftc_t *isp) Link Here
822
	} else if (isp->isp_confopts & ISP_CFG_32GB) {
830
	} else if (isp->isp_confopts & ISP_CFG_32GB) {
823
		icbp->icb_fwoptions3 &= ~ICB2400_OPT3_RATE_MASK;
831
		icbp->icb_fwoptions3 &= ~ICB2400_OPT3_RATE_MASK;
824
		icbp->icb_fwoptions3 |= ICB2400_OPT3_RATE_32GB;
832
		icbp->icb_fwoptions3 |= ICB2400_OPT3_RATE_32GB;
833
	} else if (isp->isp_confopts & ISP_CFG_64GB) {
834
		icbp->icb_fwoptions3 &= ~ICB2400_OPT3_RATE_MASK;
835
		icbp->icb_fwoptions3 |= ICB2400_OPT3_RATE_64GB;
825
	} else {
836
	} else {
826
		switch (icbp->icb_fwoptions3 & ICB2400_OPT3_RATE_MASK) {
837
		switch (icbp->icb_fwoptions3 & ICB2400_OPT3_RATE_MASK) {
827
		case ICB2400_OPT3_RATE_4GB:
838
		case ICB2400_OPT3_RATE_4GB:
828
		case ICB2400_OPT3_RATE_8GB:
839
		case ICB2400_OPT3_RATE_8GB:
829
		case ICB2400_OPT3_RATE_16GB:
840
		case ICB2400_OPT3_RATE_16GB:
830
		case ICB2400_OPT3_RATE_32GB:
841
		case ICB2400_OPT3_RATE_32GB:
842
		case ICB2400_OPT3_RATE_64GB:
831
		case ICB2400_OPT3_RATE_AUTO:
843
		case ICB2400_OPT3_RATE_AUTO:
832
			break;
844
			break;
833
		case ICB2400_OPT3_RATE_2GB:
845
		case ICB2400_OPT3_RATE_2GB:
Lines 1537-1542 isp_fclink_test(ispsoftc_t *isp, int chan, int usdelay) Link Here
1537
	if (mbs.param[0] == MBOX_COMMAND_COMPLETE) {
1549
	if (mbs.param[0] == MBOX_COMMAND_COMPLETE) {
1538
		if (mbs.param[1] == MBGSD_10GB)
1550
		if (mbs.param[1] == MBGSD_10GB)
1539
			fcp->isp_gbspeed = 10;
1551
			fcp->isp_gbspeed = 10;
1552
		else if (mbs.param[1] == MBGSD_64GB)
1553
			fcp->isp_gbspeed = 64;
1540
		else if (mbs.param[1] == MBGSD_32GB)
1554
		else if (mbs.param[1] == MBGSD_32GB)
1541
			fcp->isp_gbspeed = 32;
1555
			fcp->isp_gbspeed = 32;
1542
		else if (mbs.param[1] == MBGSD_16GB)
1556
		else if (mbs.param[1] == MBGSD_16GB)
(-)b/sys/dev/isp/isp_pci.c (+28 lines)
Lines 99-104 static struct ispmdvec mdvec_2700 = { Link Here
99
	NULL
99
	NULL
100
};
100
};
101
101
102
static struct ispmdvec mdvec_2800 = {
103
	isp_pci_run_isr_2400,
104
	isp_pci_rd_reg_2600,
105
	isp_pci_wr_reg_2600,
106
	isp_pci_mbxdma,
107
	isp_send_cmd,
108
	isp_pci_irqsetup,
109
	NULL
110
};
111
102
#ifndef	PCIM_CMD_INVEN
112
#ifndef	PCIM_CMD_INVEN
103
#define	PCIM_CMD_INVEN			0x10
113
#define	PCIM_CMD_INVEN			0x10
104
#endif
114
#endif
Lines 143-148 static struct ispmdvec mdvec_2700 = { Link Here
143
#define	PCI_PRODUCT_QLOGIC_ISP2692	0x2b61
153
#define	PCI_PRODUCT_QLOGIC_ISP2692	0x2b61
144
#define	PCI_PRODUCT_QLOGIC_ISP2714	0x2071
154
#define	PCI_PRODUCT_QLOGIC_ISP2714	0x2071
145
#define	PCI_PRODUCT_QLOGIC_ISP2722	0x2261
155
#define	PCI_PRODUCT_QLOGIC_ISP2722	0x2261
156
#define	PCI_PRODUCT_QLOGIC_ISP2812	0x2281
157
#define	PCI_PRODUCT_QLOGIC_ISP2814	0x2081
146
158
147
#define	PCI_QLOGIC_ISP2422	\
159
#define	PCI_QLOGIC_ISP2422	\
148
	((PCI_PRODUCT_QLOGIC_ISP2422 << 16) | PCI_VENDOR_QLOGIC)
160
	((PCI_PRODUCT_QLOGIC_ISP2422 << 16) | PCI_VENDOR_QLOGIC)
Lines 164-169 static struct ispmdvec mdvec_2700 = { Link Here
164
	((PCI_PRODUCT_QLOGIC_ISP2714 << 16) | PCI_VENDOR_QLOGIC)
176
	((PCI_PRODUCT_QLOGIC_ISP2714 << 16) | PCI_VENDOR_QLOGIC)
165
#define	PCI_QLOGIC_ISP2722	\
177
#define	PCI_QLOGIC_ISP2722	\
166
	((PCI_PRODUCT_QLOGIC_ISP2722 << 16) | PCI_VENDOR_QLOGIC)
178
	((PCI_PRODUCT_QLOGIC_ISP2722 << 16) | PCI_VENDOR_QLOGIC)
179
#define	PCI_QLOGIC_ISP2812	\
180
	((PCI_PRODUCT_QLOGIC_ISP2812 << 16) | PCI_VENDOR_QLOGIC)
181
#define	PCI_QLOGIC_ISP2814	\
182
	((PCI_PRODUCT_QLOGIC_ISP2814 << 16) | PCI_VENDOR_QLOGIC)
167
183
168
#define	PCI_DFLT_LTNCY	0x40
184
#define	PCI_DFLT_LTNCY	0x40
169
#define	PCI_DFLT_LNSZ	0x10
185
#define	PCI_DFLT_LNSZ	0x10
Lines 245-250 isp_pci_probe(device_t dev) Link Here
245
	case PCI_QLOGIC_ISP2722:
261
	case PCI_QLOGIC_ISP2722:
246
		device_set_desc(dev, "Qlogic ISP 2722 PCI FC Adapter");
262
		device_set_desc(dev, "Qlogic ISP 2722 PCI FC Adapter");
247
		break;
263
		break;
264
	case PCI_QLOGIC_ISP2812:
265
		device_set_desc(dev, "Qlogic ISP 2812 PCI FC Adapter");
266
		break;
267
	case PCI_QLOGIC_ISP2814:
268
		device_set_desc(dev, "Qlogic ISP 2814 PCI FC Adapter");
269
		break;
248
	default:
270
	default:
249
		return (ENXIO);
271
		return (ENXIO);
250
	}
272
	}
Lines 493-498 isp_pci_attach(device_t dev) Link Here
493
		isp->isp_mdvec = &mdvec_2700;
515
		isp->isp_mdvec = &mdvec_2700;
494
		isp->isp_type = ISP_HA_FC_2700;
516
		isp->isp_type = ISP_HA_FC_2700;
495
		break;
517
		break;
518
	case PCI_QLOGIC_ISP2812:
519
	case PCI_QLOGIC_ISP2814:
520
		did = 0x2800;
521
		isp->isp_mdvec = &mdvec_2800;
522
		isp->isp_type = ISP_HA_FC_2800;
523
		break;
496
	default:
524
	default:
497
		device_printf(dev, "unknown device type\n");
525
		device_printf(dev, "unknown device type\n");
498
		goto bad;
526
		goto bad;
(-)b/sys/dev/isp/ispmbox.h (+3 lines)
Lines 179-184 Link Here
179
#define		MBGSD_8GB	0x04		/* 25XX only */
179
#define		MBGSD_8GB	0x04		/* 25XX only */
180
#define		MBGSD_16GB	0x05		/* 26XX only */
180
#define		MBGSD_16GB	0x05		/* 26XX only */
181
#define		MBGSD_32GB	0x06		/* 27XX only */
181
#define		MBGSD_32GB	0x06		/* 27XX only */
182
#define		MBGSD_64GB	0x07		/* 28XX only */
182
#define		MBGSD_10GB	0x13		/* 26XX only */
183
#define		MBGSD_10GB	0x13		/* 26XX only */
183
#define	MBOX_SEND_RNFT			0x005e
184
#define	MBOX_SEND_RNFT			0x005e
184
#define	MBOX_INIT_FIRMWARE		0x0060
185
#define	MBOX_INIT_FIRMWARE		0x0060
Lines 647-652 typedef struct { Link Here
647
#define	ICB2400_OPT3_RATE_8GB		0x00008000
648
#define	ICB2400_OPT3_RATE_8GB		0x00008000
648
#define	ICB2400_OPT3_RATE_16GB		0x0000A000
649
#define	ICB2400_OPT3_RATE_16GB		0x0000A000
649
#define	ICB2400_OPT3_RATE_32GB		0x0000C000
650
#define	ICB2400_OPT3_RATE_32GB		0x0000C000
651
#define	ICB2400_OPT3_RATE_64GB		0x0000E000
650
#define	ICB2400_OPT3_ENA_OOF_XFRDY	0x00000200
652
#define	ICB2400_OPT3_ENA_OOF_XFRDY	0x00000200
651
#define	ICB2400_OPT3_NO_N2N_LOGI	0x00000100
653
#define	ICB2400_OPT3_NO_N2N_LOGI	0x00000100
652
#define	ICB2400_OPT3_NO_LOCAL_PLOGI	0x00000080
654
#define	ICB2400_OPT3_NO_LOCAL_PLOGI	0x00000080
Lines 661-666 typedef struct { Link Here
661
#define	ICB_MIN_FRMLEN		256
663
#define	ICB_MIN_FRMLEN		256
662
#define	ICB_MAX_FRMLEN		2112
664
#define	ICB_MAX_FRMLEN		2112
663
#define	ICB_DFLT_FRMLEN		1024
665
#define	ICB_DFLT_FRMLEN		1024
666
#define	ICB_DFLT_FRMLEN_28XX	2048
664
#define	ICB_DFLT_RDELAY		5
667
#define	ICB_DFLT_RDELAY		5
665
#define	ICB_DFLT_RCOUNT		3
668
#define	ICB_DFLT_RCOUNT		3
666
669
(-)b/sys/dev/isp/ispvar.h (+3 lines)
Lines 539-544 struct ispsoftc { Link Here
539
#define	ISP_CFG_8GB		0x4000	/* force 8Gb connection (25XX only) */
539
#define	ISP_CFG_8GB		0x4000	/* force 8Gb connection (25XX only) */
540
#define	ISP_CFG_16GB		0x8000	/* force 16Gb connection (26XX only) */
540
#define	ISP_CFG_16GB		0x8000	/* force 16Gb connection (26XX only) */
541
#define	ISP_CFG_32GB		0x10000	/* force 32Gb connection (27XX only) */
541
#define	ISP_CFG_32GB		0x10000	/* force 32Gb connection (27XX only) */
542
#define	ISP_CFG_64GB		0x20000	/* force 64Gb connection (28XX only) */
542
543
543
/*
544
/*
544
 * For each channel, the outer layers should know what role that channel
545
 * For each channel, the outer layers should know what role that channel
Lines 607-616 struct ispsoftc { Link Here
607
#define	ISP_HA_FC_2500		0x05
608
#define	ISP_HA_FC_2500		0x05
608
#define	ISP_HA_FC_2600		0x06
609
#define	ISP_HA_FC_2600		0x06
609
#define	ISP_HA_FC_2700		0x07
610
#define	ISP_HA_FC_2700		0x07
611
#define	ISP_HA_FC_2800		0x08
610
612
611
#define	IS_25XX(isp)	((isp)->isp_type >= ISP_HA_FC_2500)
613
#define	IS_25XX(isp)	((isp)->isp_type >= ISP_HA_FC_2500)
612
#define	IS_26XX(isp)	((isp)->isp_type >= ISP_HA_FC_2600)
614
#define	IS_26XX(isp)	((isp)->isp_type >= ISP_HA_FC_2600)
613
#define	IS_27XX(isp)	((isp)->isp_type >= ISP_HA_FC_2700)
615
#define	IS_27XX(isp)	((isp)->isp_type >= ISP_HA_FC_2700)
616
#define	IS_28XX(isp)	((isp)->isp_type >= ISP_HA_FC_2800)
614
617
615
/*
618
/*
616
 * DMA related macros
619
 * DMA related macros

Return to bug 271062