aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/e1000e/phy.c
diff options
context:
space:
mode:
authorBruce Allan <bruce.w.allan@intel.com>2008-08-26 21:36:50 -0400
committerJeff Garzik <jgarzik@redhat.com>2008-09-03 10:06:47 -0400
commitf4187b56e1f8a05dd110875d5094b21b51ebd79b (patch)
tree7c3f97f98c808b6f6ab8ea6acdfb2f324e8a3c09 /drivers/net/e1000e/phy.c
parent2f15f9d60190a62bc8ac50fa84fea31fc0b00ecf (diff)
e1000e: add support for 82567LM-3 and 82567LF-3 (ICH10D) parts
Add support for new LOM devices on the latest generation ICHx platforms. Signed-off-by: Bruce Allan <bruce.w.allan@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers/net/e1000e/phy.c')
-rw-r--r--drivers/net/e1000e/phy.c85
1 files changed, 85 insertions, 0 deletions
diff --git a/drivers/net/e1000e/phy.c b/drivers/net/e1000e/phy.c
index b133dcf0e950..16724f84d5ce 100644
--- a/drivers/net/e1000e/phy.c
+++ b/drivers/net/e1000e/phy.c
@@ -1720,6 +1720,91 @@ s32 e1000e_get_cfg_done(struct e1000_hw *hw)
1720 return 0; 1720 return 0;
1721} 1721}
1722 1722
1723/**
1724 * e1000e_phy_init_script_igp3 - Inits the IGP3 PHY
1725 * @hw: pointer to the HW structure
1726 *
1727 * Initializes a Intel Gigabit PHY3 when an EEPROM is not present.
1728 **/
1729s32 e1000e_phy_init_script_igp3(struct e1000_hw *hw)
1730{
1731 hw_dbg(hw, "Running IGP 3 PHY init script\n");
1732
1733 /* PHY init IGP 3 */
1734 /* Enable rise/fall, 10-mode work in class-A */
1735 e1e_wphy(hw, 0x2F5B, 0x9018);
1736 /* Remove all caps from Replica path filter */
1737 e1e_wphy(hw, 0x2F52, 0x0000);
1738 /* Bias trimming for ADC, AFE and Driver (Default) */
1739 e1e_wphy(hw, 0x2FB1, 0x8B24);
1740 /* Increase Hybrid poly bias */
1741 e1e_wphy(hw, 0x2FB2, 0xF8F0);
1742 /* Add 4% to Tx amplitude in Gig mode */
1743 e1e_wphy(hw, 0x2010, 0x10B0);
1744 /* Disable trimming (TTT) */
1745 e1e_wphy(hw, 0x2011, 0x0000);
1746 /* Poly DC correction to 94.6% + 2% for all channels */
1747 e1e_wphy(hw, 0x20DD, 0x249A);
1748 /* ABS DC correction to 95.9% */
1749 e1e_wphy(hw, 0x20DE, 0x00D3);
1750 /* BG temp curve trim */
1751 e1e_wphy(hw, 0x28B4, 0x04CE);
1752 /* Increasing ADC OPAMP stage 1 currents to max */
1753 e1e_wphy(hw, 0x2F70, 0x29E4);
1754 /* Force 1000 ( required for enabling PHY regs configuration) */
1755 e1e_wphy(hw, 0x0000, 0x0140);
1756 /* Set upd_freq to 6 */
1757 e1e_wphy(hw, 0x1F30, 0x1606);
1758 /* Disable NPDFE */
1759 e1e_wphy(hw, 0x1F31, 0xB814);
1760 /* Disable adaptive fixed FFE (Default) */
1761 e1e_wphy(hw, 0x1F35, 0x002A);
1762 /* Enable FFE hysteresis */
1763 e1e_wphy(hw, 0x1F3E, 0x0067);
1764 /* Fixed FFE for short cable lengths */
1765 e1e_wphy(hw, 0x1F54, 0x0065);
1766 /* Fixed FFE for medium cable lengths */
1767 e1e_wphy(hw, 0x1F55, 0x002A);
1768 /* Fixed FFE for long cable lengths */
1769 e1e_wphy(hw, 0x1F56, 0x002A);
1770 /* Enable Adaptive Clip Threshold */
1771 e1e_wphy(hw, 0x1F72, 0x3FB0);
1772 /* AHT reset limit to 1 */
1773 e1e_wphy(hw, 0x1F76, 0xC0FF);
1774 /* Set AHT master delay to 127 msec */
1775 e1e_wphy(hw, 0x1F77, 0x1DEC);
1776 /* Set scan bits for AHT */
1777 e1e_wphy(hw, 0x1F78, 0xF9EF);
1778 /* Set AHT Preset bits */
1779 e1e_wphy(hw, 0x1F79, 0x0210);
1780 /* Change integ_factor of channel A to 3 */
1781 e1e_wphy(hw, 0x1895, 0x0003);
1782 /* Change prop_factor of channels BCD to 8 */
1783 e1e_wphy(hw, 0x1796, 0x0008);
1784 /* Change cg_icount + enable integbp for channels BCD */
1785 e1e_wphy(hw, 0x1798, 0xD008);
1786 /*
1787 * Change cg_icount + enable integbp + change prop_factor_master
1788 * to 8 for channel A
1789 */
1790 e1e_wphy(hw, 0x1898, 0xD918);
1791 /* Disable AHT in Slave mode on channel A */
1792 e1e_wphy(hw, 0x187A, 0x0800);
1793 /*
1794 * Enable LPLU and disable AN to 1000 in non-D0a states,
1795 * Enable SPD+B2B
1796 */
1797 e1e_wphy(hw, 0x0019, 0x008D);
1798 /* Enable restart AN on an1000_dis change */
1799 e1e_wphy(hw, 0x001B, 0x2080);
1800 /* Enable wh_fifo read clock in 10/100 modes */
1801 e1e_wphy(hw, 0x0014, 0x0045);
1802 /* Restart AN, Speed selection is 1000 */
1803 e1e_wphy(hw, 0x0000, 0x1340);
1804
1805 return 0;
1806}
1807
1723/* Internal function pointers */ 1808/* Internal function pointers */
1724 1809
1725/** 1810/**