All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mark Einon <mark.einon@gmail.com>
To: gregkh@suse.de
Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org,
	o.hartmann@telovital.com, Mark Einon <mark.einon@gmail.com>
Subject: [PATCH 09/12] staging: et131x: Replace magic numbers in et1310_phy.c with defines
Date: Sun,  4 Sep 2011 11:24:40 +0100	[thread overview]
Message-ID: <1315131883-11068-10-git-send-email-mark.einon@gmail.com> (raw)
In-Reply-To: <1315131883-11068-1-git-send-email-mark.einon@gmail.com>

Replaced et131x_phy.c magic numbers specifying registers and their values with defines, defined in et131x_phy.h

Signed-off-by: Mark Einon <mark.einon@gmail.com>
---
 drivers/staging/et131x/et1310_phy.c |   77 +++++++++++++++++---------------
 drivers/staging/et131x/et1310_phy.h |   84 ++++++++++++++++++++++++++--------
 2 files changed, 105 insertions(+), 56 deletions(-)

diff --git a/drivers/staging/et131x/et1310_phy.c b/drivers/staging/et131x/et1310_phy.c
index 6c3ceed..3c82f44 100644
--- a/drivers/staging/et131x/et1310_phy.c
+++ b/drivers/staging/et131x/et1310_phy.c
@@ -122,12 +122,11 @@ int et131x_mdio_reset(struct mii_bus *bus)
 	struct net_device *netdev = bus->priv;
 	struct et131x_adapter *adapter = netdev_priv(netdev);
 
-	et131x_mii_write(adapter, MII_BMCR, 0x8000);
+	et131x_mii_write(adapter, MII_BMCR, BMCR_RESET);
 
 	return 0;
 }
 
-
 int et131x_mii_read(struct et131x_adapter *adapter, u8 reg, u16 *value)
 {
 	struct phy_device *phydev = adapter->phydev;
@@ -293,9 +292,9 @@ void et1310_phy_power_down(struct et131x_adapter *adapter, bool down)
 	u16 data;
 
 	et131x_mii_read(adapter, MII_BMCR, &data);
-	data &= ~0x0800;	/* Power UP */
-	if (down) /* Power DOWN */
-		data |= 0x0800;
+	data &= ~BMCR_PDOWN;
+	if (down)
+		data |= BMCR_PDOWN;
 	et131x_mii_write(adapter, MII_BMCR, data);
 }
 
@@ -333,19 +332,20 @@ static void et1310_phy_link_status(struct et131x_adapter *adapter,
 	et131x_mii_read(adapter, PHY_PHY_STATUS, &vmi_phystatus);
 	et131x_mii_read(adapter, MII_BMCR, &control);
 
-	*link_status = (vmi_phystatus & 0x0040) ? 1 : 0;
-	*autoneg = (control & 0x1000) ? ((vmi_phystatus & 0x0020) ?
+	*link_status = (vmi_phystatus & ET_PHY_LSTATUS) ? 1 : 0;
+	*autoneg = (control & ET_PHY_AUTONEG_STATUS) ?
+			((vmi_phystatus & ET_PHY_AUTONEG_ENABLE) ?
 					    TRUEPHY_ANEG_COMPLETE :
 					    TRUEPHY_ANEG_NOT_COMPLETE) :
-		    TRUEPHY_ANEG_DISABLED;
-	*linkspeed = (vmi_phystatus & 0x0300) >> 8;
-	*duplex_mode = (vmi_phystatus & 0x0080) >> 7;
+							TRUEPHY_ANEG_DISABLED;
+	*linkspeed = (vmi_phystatus & ET_PHY_SPEED_STATUS) >> 8;
+	*duplex_mode = (vmi_phystatus & ET_PHY_DUPLEX_STATUS) >> 7;
 	/* NOTE: Need to complete this */
 	*mdi_mdix = 0;
 
-	*masterslave = (is1000BaseT & 0x4000) ?
+	*masterslave = (is1000BaseT & ET_1000BT_MSTR_SLV) ?
 			TRUEPHY_CFG_MASTER : TRUEPHY_CFG_SLAVE;
-	*polarity = (vmi_phystatus & 0x0400) ?
+	*polarity = (vmi_phystatus & ET_PHY_POLARITY_STATUS) ?
 			TRUEPHY_POLARITY_INVERTED : TRUEPHY_POLARITY_NORMAL;
 }
 
@@ -402,15 +402,17 @@ void et131x_xcvr_init(struct et131x_adapter *adapter)
 	/* Zero out the adapter structure variable representing BMSR */
 	adapter->bmsr = 0;
 
-	et131x_mii_read(adapter, (u8) offsetof(struct mi_regs, isr), &isr);
-	et131x_mii_read(adapter, (u8) offsetof(struct mi_regs, imr), &imr);
+	et131x_mii_read(adapter, PHY_INTERRUPT_STATUS, &isr);
+	et131x_mii_read(adapter, PHY_INTERRUPT_MASK, &imr);
 
 	/* Set the link status interrupt only.  Bad behavior when link status
 	 * and auto neg are set, we run into a nested interrupt problem
 	 */
-	imr |= 0x0105;
+	imr |= (ET_PHY_INT_MASK_AUTONEGSTAT &
+		ET_PHY_INT_MASK_LINKSTAT &
+		ET_PHY_INT_MASK_ENABLE);
 
-	et131x_mii_write(adapter, (u8) offsetof(struct mi_regs, imr), imr);
+	et131x_mii_write(adapter, PHY_INTERRUPT_MASK, imr);
 
 	/* Set the LED behavior such that LED 1 indicates speed (off =
 	 * 10Mbits, blink = 100Mbits, on = 1000Mbits) and LED 2 indicates
@@ -421,19 +423,17 @@ void et131x_xcvr_init(struct et131x_adapter *adapter)
 	 * EEPROM. However, the above description is the default.
 	 */
 	if ((adapter->eeprom_data[1] & 0x4) == 0) {
-		et131x_mii_read(adapter, (u8) offsetof(struct mi_regs, lcr2),
-		       &lcr2);
+		et131x_mii_read(adapter, PHY_LED_2, &lcr2);
 
-		lcr2 &= 0x00FF;
-		lcr2 |= 0xA000;	/* led link */
+		lcr2 &= (ET_LED2_LED_100TX & ET_LED2_LED_1000T);
+		lcr2 |= (LED_VAL_LINKON_ACTIVE << LED_LINK_SHIFT);
 
 		if ((adapter->eeprom_data[1] & 0x8) == 0)
-			lcr2 |= 0x0300;
+			lcr2 |= (LED_VAL_1000BT_100BTX << LED_TXRX_SHIFT);
 		else
-			lcr2 |= 0x0400;
+			lcr2 |= (LED_VAL_LINKON << LED_TXRX_SHIFT);
 
-		et131x_mii_write(adapter, (u8) offsetof(struct mi_regs, lcr2),
-			lcr2);
+		et131x_mii_write(adapter, PHY_LED_2, lcr2);
 	}
 }
 
@@ -464,14 +464,16 @@ void et131x_mii_check(struct et131x_adapter *adapter,
 				 */
 				u16 register18;
 
-				et131x_mii_read(adapter, 0x12, &register18);
-				et131x_mii_write(adapter, 0x12,
+				et131x_mii_read(adapter, PHY_MPHY_CONTROL_REG,
+						 &register18);
+				et131x_mii_write(adapter, PHY_MPHY_CONTROL_REG,
 						 register18 | 0x4);
-				et131x_mii_write(adapter, 0x10,
+				et131x_mii_write(adapter, PHY_INDEX_REG,
 						 register18 | 0x8402);
-				et131x_mii_write(adapter, 0x11,
+				et131x_mii_write(adapter, PHY_DATA_REG,
 						 register18 | 511);
-				et131x_mii_write(adapter, 0x12, register18);
+				et131x_mii_write(adapter, PHY_MPHY_CONTROL_REG,
+						 register18);
 			}
 
 			/* Free the packets being actively sent & stopped */
@@ -516,22 +518,25 @@ void et131x_mii_check(struct et131x_adapter *adapter,
 				 */
 				u16 register18;
 
-				et131x_mii_read(adapter, 0x12, &register18);
-				et131x_mii_write(adapter, 0x12,
+				et131x_mii_read(adapter, PHY_MPHY_CONTROL_REG,
+						 &register18);
+				et131x_mii_write(adapter, PHY_MPHY_CONTROL_REG,
 						 register18 | 0x4);
-				et131x_mii_write(adapter, 0x10,
+				et131x_mii_write(adapter, PHY_INDEX_REG,
 						 register18 | 0x8402);
-				et131x_mii_write(adapter, 0x11,
+				et131x_mii_write(adapter, PHY_DATA_REG,
 						 register18 | 511);
-				et131x_mii_write(adapter, 0x12, register18);
+				et131x_mii_write(adapter, PHY_MPHY_CONTROL_REG,
+						 register18);
 			}
 
 			et1310_config_flow_control(adapter);
 
 			if (phydev && phydev->speed == SPEED_1000 &&
 					adapter->registry_jumbo_packet > 2048)
-				et1310_phy_and_or_reg(adapter, 0x16, 0xcfff,
-								   0x2000);
+				et1310_phy_and_or_reg(adapter, PHY_CONFIG,
+						~ET_PHY_CONFIG_TX_FIFO_DEPTH,
+						ET_PHY_CONFIG_FIFO_DEPTH_32);
 
 			et131x_set_rx_dma_timer(adapter);
 			et1310_config_mac_regs2(adapter);
diff --git a/drivers/staging/et131x/et1310_phy.h b/drivers/staging/et131x/et1310_phy.h
index 9cbc185..104008e 100644
--- a/drivers/staging/et131x/et1310_phy.h
+++ b/drivers/staging/et131x/et1310_phy.h
@@ -61,6 +61,25 @@
 
 #include "et1310_address_map.h"
 
+/* some defines for modem registers that seem to be 'reserved' */
+#define PHY_INDEX_REG              0x10
+#define PHY_DATA_REG               0x11
+#define PHY_MPHY_CONTROL_REG       0x12
+
+/* defines for specified registers */
+#define PHY_LOOPBACK_CONTROL       0x13	/* TRU_VMI_LOOPBACK_CONTROL_1_REG 19 */
+					/* TRU_VMI_LOOPBACK_CONTROL_2_REG 20 */
+#define PHY_REGISTER_MGMT_CONTROL  0x15	/* TRU_VMI_MI_SEQ_CONTROL_REG     21 */
+#define PHY_CONFIG                 0x16	/* TRU_VMI_CONFIGURATION_REG      22 */
+#define PHY_PHY_CONTROL            0x17	/* TRU_VMI_PHY_CONTROL_REG        23 */
+#define PHY_INTERRUPT_MASK         0x18	/* TRU_VMI_INTERRUPT_MASK_REG     24 */
+#define PHY_INTERRUPT_STATUS       0x19	/* TRU_VMI_INTERRUPT_STATUS_REG   25 */
+#define PHY_PHY_STATUS             0x1A	/* TRU_VMI_PHY_STATUS_REG         26 */
+#define PHY_LED_1                  0x1B	/* TRU_VMI_LED_CONTROL_1_REG      27 */
+#define PHY_LED_2                  0x1C	/* TRU_VMI_LED_CONTROL_2_REG      28 */
+					/* TRU_VMI_LINK_CONTROL_REG       29 */
+					/* TRU_VMI_TIMING_CONTROL_REG        */
+
 /* PHY Register Mapping(MI) Management Interface Regs */
 struct mi_regs {
 	u8 bmcr;	/* Basic mode control reg(Reg 0x00) */
@@ -90,6 +109,9 @@ struct mi_regs {
 	u8 mi_res4[3];	/* Future use by MI working group(Reg 0x1D - 0x1F) */
 };
 
+/* MI Register 10: Gigabit basic mode status reg(Reg 0x0A) */
+#define ET_1000BT_MSTR_SLV 0x4000
+
 /* MI Register 16 - 18: Reserved Reg(0x10-0x12) */
 
 /* MI Register 19: Loopback Control Reg(0x13)
@@ -128,6 +150,13 @@ struct mi_regs {
  *	2-0:	mac_if_mode
  */
 
+#define ET_PHY_CONFIG_TX_FIFO_DEPTH	0x3000
+
+#define ET_PHY_CONFIG_FIFO_DEPTH_8	0x0000
+#define ET_PHY_CONFIG_FIFO_DEPTH_16	0x1000
+#define ET_PHY_CONFIG_FIFO_DEPTH_32	0x2000
+#define ET_PHY_CONFIG_FIFO_DEPTH_64	0x3000
+
 /* MI Register 23: PHY CONTROL Reg(0x17)
  *	15:	reserved
  *	14:	tdr_en
@@ -156,6 +185,9 @@ struct mi_regs {
  *	0:	int_en
  */
 
+#define ET_PHY_INT_MASK_AUTONEGSTAT	0x0100
+#define ET_PHY_INT_MASK_LINKSTAT	0x0004
+#define ET_PHY_INT_MASK_ENABLE		0x0001
 
 /* MI Register 25: Interrupt Status Reg(0x19)
  *	15-10:	reserved
@@ -187,6 +219,12 @@ struct mi_regs {
  *	1:	pause_en
  *	0:	asymmetric_dir
  */
+#define ET_PHY_AUTONEG_STATUS	0x1000
+#define ET_PHY_POLARITY_STATUS	0x0400
+#define ET_PHY_SPEED_STATUS	0x0300
+#define ET_PHY_DUPLEX_STATUS	0x0080
+#define ET_PHY_LSTATUS		0x0040
+#define ET_PHY_AUTONEG_ENABLE	0x0020
 
 /* MI Register 27: LED Control Reg 1(0x1B)
  *	15-14:	reserved
@@ -205,11 +243,35 @@ struct mi_regs {
  *	7-4:	led_100BaseTX
  *	3-0:	led_1000BaseT
  */
+#define ET_LED2_LED_LINK	0xF000
+#define ET_LED2_LED_TXRX	0x0F00
+#define ET_LED2_LED_100TX	0x00F0
+#define ET_LED2_LED_1000T	0x000F
 
-/* MI Register 29 - 31: Reserved Reg(0x1D - 0x1E) */
+/* defines for LED control reg 2 values */
+#define LED_VAL_1000BT			0x0
+#define LED_VAL_100BTX			0x1
+#define LED_VAL_10BT			0x2
+#define LED_VAL_1000BT_100BTX		0x3 /* 1000BT on, 100BTX blink */
+#define LED_VAL_LINKON			0x4
+#define LED_VAL_TX			0x5
+#define LED_VAL_RX			0x6
+#define LED_VAL_TXRX			0x7 /* TX or RX */
+#define LED_VAL_DUPLEXFULL		0x8
+#define LED_VAL_COLLISION		0x9
+#define LED_VAL_LINKON_ACTIVE		0xA /* Link on, activity blink */
+#define LED_VAL_LINKON_RECV		0xB /* Link on, receive blink */
+#define LED_VAL_DUPLEXFULL_COLLISION	0xC /* Duplex on, collision blink */
+#define LED_VAL_BLINK			0xD
+#define LED_VAL_ON			0xE
+#define LED_VAL_OFF			0xF
+
+#define LED_LINK_SHIFT			12
+#define LED_TXRX_SHIFT			8
+#define LED_100TX_SHIFT			4
 
+/* MI Register 29 - 31: Reserved Reg(0x1D - 0x1E) */
 
-/* Prototypes for ET1310_phy.c */
 /* Defines for PHY access routines */
 
 /* Define bit operation flags */
@@ -249,22 +311,4 @@ struct mi_regs {
 #define TRUEPHY_ADV_DUPLEX_BOTH     \
 	(TRUEPHY_ADV_DUPLEX_FULL | TRUEPHY_ADV_DUPLEX_HALF)
 
-/* some defines for modem registers that seem to be 'reserved' */
-#define PHY_INDEX_REG              0x10
-#define PHY_DATA_REG               0x11
-
-#define PHY_MPHY_CONTROL_REG       0x12
-#define PHY_LOOPBACK_CONTROL       0x13	/* TRU_VMI_LOOPBACK_CONTROL_1_REG 19 */
-					/* TRU_VMI_LOOPBACK_CONTROL_2_REG 20 */
-#define PHY_REGISTER_MGMT_CONTROL  0x15	/* TRU_VMI_MI_SEQ_CONTROL_REG     21 */
-#define PHY_CONFIG                 0x16	/* TRU_VMI_CONFIGURATION_REG      22 */
-#define PHY_PHY_CONTROL            0x17	/* TRU_VMI_PHY_CONTROL_REG        23 */
-#define PHY_INTERRUPT_MASK         0x18	/* TRU_VMI_INTERRUPT_MASK_REG     24 */
-#define PHY_INTERRUPT_STATUS       0x19	/* TRU_VMI_INTERRUPT_STATUS_REG   25 */
-#define PHY_PHY_STATUS             0x1A	/* TRU_VMI_PHY_STATUS_REG         26 */
-#define PHY_LED_1                  0x1B	/* TRU_VMI_LED_CONTROL_1_REG      27 */
-#define PHY_LED_2                  0x1C	/* TRU_VMI_LED_CONTROL_2_REG      28 */
-					/* TRU_VMI_LINK_CONTROL_REG       29 */
-					/* TRU_VMI_TIMING_CONTROL_REG        */
-
 #endif /* _ET1310_PHY_H_ */
-- 
1.7.6


  parent reply	other threads:[~2011-09-04 10:28 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-09-04 10:24 [PATCH 00/12] staging: et131x: Following mvoe to use phydev, remove detritus Mark Einon
2011-09-04 10:24 ` [PATCH 01/12] staging: et131x: Remove private adapter->linkspeed and use phydev->speed instead Mark Einon
2011-09-04 10:24 ` [PATCH 02/12] staging: et131x: Remove private adapter->duplex_mode and use phydev->duplex instead Mark Einon
2011-09-04 10:24 ` [PATCH 03/12] staging: et131x: Remove redundant struct adapter members Mark Einon
2011-09-04 10:24 ` [PATCH 04/12] staging: et131x: Remove PHY interrupt handling code from driver isr handler Mark Einon
2011-09-04 10:24 ` [PATCH 05/12] staging: et131x: remove calls to netif_carrier_[on|off] from et131x_mii_check Mark Einon
2011-09-04 10:24 ` [PATCH 06/12] staging: et131x: Remove registry_rx_mem_end from struct et131x_adapter Mark Einon
2011-09-04 10:24 ` [PATCH 07/12] staging: et131x: Remove cached_mask_value from et131x_adapter Mark Einon
2011-09-04 10:24 ` [PATCH 08/12] staging: et131x: Remove duplicated register defines from et1310_phy.h Mark Einon
2011-09-04 10:24 ` Mark Einon [this message]
2011-09-04 10:24 ` [PATCH 10/12] staging: et131x: Remove struct mi_regs " Mark Einon
2011-09-04 10:24 ` [PATCH 11/12] staging: et131x: Remove ai_force_[duplex|speed] from et131x_adapter Mark Einon
2011-09-04 10:24 ` [PATCH 12/12] staging: et131x: Update README file Mark Einon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1315131883-11068-10-git-send-email-mark.einon@gmail.com \
    --to=mark.einon@gmail.com \
    --cc=devel@driverdev.osuosl.org \
    --cc=gregkh@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=o.hartmann@telovital.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.