Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 16 Feb 2008 13:50:03 GMT
From:      Mark Willson <mark@hydrus.org.uk>
To:        freebsd-bugs@FreeBSD.org
Subject:   Re: kern/112179: [sis] [patch] sis driver for natsemi DP83815D autonegotiate failure
Message-ID:  <200802161350.m1GDo362011328@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/112179; it has been noted by GNATS.

From: Mark Willson <mark@hydrus.org.uk>
To: bug-followup@FreeBSD.org, mark@hydrus.org.uk, volker@vwsoft.com
Cc:  
Subject: Re: kern/112179: [sis] [patch] sis driver for natsemi DP83815D autonegotiate failure
Date: Sat, 16 Feb 2008 13:41:34 GMT

 > Date: Tue, 12 Feb 2008 22:42:30 +0100
 > From: Volker <volker@vwsoft.com>
 > Subject: Re: kern/112179: [sis] [patch] sis driver for natsemi DP83815D autonegotiate
 >  failure
 >
 > Mark,
 >
 > is this problem still valid for you? Can you please check with
 > 6.3-RELEASE?
 >
 
 Volker,
 
 Following up from my earlier email, I have tested an unpatched
 version of if_sis.c on 6.3-RELEASE and the problem still exists.
 
 Based on your comments re the patch, here's a revised version:
 
 --- sys/pci/if_sis.c
 +++ sys/pci/if_sis.c
 @@ -1895,23 +1895,22 @@
  	}
  
  	/*
 -	 * Short Cable Receive Errors (MP21.E)
 -	 * also: Page 78 of the DP83815 data sheet (september 2002 version)
 -	 * recommends the following register settings "for optimum
 -	 * performance." for rev 15C.  The driver from NS also sets
 -	 * the PHY_CR register for later versions.
 +	 * Short Cable Receive Errors (MP21.E) also: Page 78 of the
 +	 * DP83815 data sheet (september 2002 version) recommends the
 +	 * following register settings "for optimum performance." for rev
 +	 * 15C.  However, the same settings need to be applied to rev 15D
 +	 * to avoid auto-negotiation failures.  The driver from NS also
 +	 * sets the PHY_CR register for later versions.
  	 */
  	if (sc->sis_type == SIS_TYPE_83815 && sc->sis_srr <= NS_SRR_15D) {
  		CSR_WRITE_4(sc, NS_PHY_PAGE, 0x0001);
  		CSR_WRITE_4(sc, NS_PHY_CR, 0x189C);
 -		if (sc->sis_srr == NS_SRR_15C) {
 -			/* set val for c2 */
 -			CSR_WRITE_4(sc, NS_PHY_TDATA, 0x0000);
 -			/* load/kill c2 */
 -			CSR_WRITE_4(sc, NS_PHY_DSPCFG, 0x5040);
 -			/* rais SD off, from 4 to c */
 -			CSR_WRITE_4(sc, NS_PHY_SDCFG, 0x008C);
 -		}
 +		/* set val for c2 */
 +		CSR_WRITE_4(sc, NS_PHY_TDATA, 0x0000);
 +		/* load/kill c2 */
 +		CSR_WRITE_4(sc, NS_PHY_DSPCFG, 0x5040);
 +		/* rais SD off, from 4 to c */
 +		CSR_WRITE_4(sc, NS_PHY_SDCFG, 0x008C);
  		CSR_WRITE_4(sc, NS_PHY_PAGE, 0);
  	}
  
 -mark



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200802161350.m1GDo362011328>