Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 832b9997 authored by Suraj Jaiswal's avatar Suraj Jaiswal Committed by Lakshit Tyagi
Browse files

data-kernel: EMAc: add support for different phy chips

This change add the phy check for the phy specific code.

Change-Id: I28334df4cf16b6108afc7c44bf8e9623b22add98
parent 56712624
Loading
Loading
Loading
Loading
+39 −23
Original line number Diff line number Diff line
@@ -784,6 +784,7 @@ void DWC_ETH_QOS_handle_phy_interrupt(struct DWC_ETH_QOS_prv_data *pdata)
	int micrel_intr_status = 0;
	EMACDBG("Enter\n");

	if ((pdata->phydev->phy_id & pdata->phydev->drv->phy_id_mask) == MICREL_PHY_ID) {
		DWC_ETH_QOS_mdio_read_direct(
			pdata, pdata->phyaddr, DWC_ETH_QOS_BASIC_STATUS, &phy_intr_status);
		EMACDBG(
@@ -794,10 +795,6 @@ void DWC_ETH_QOS_handle_phy_interrupt(struct DWC_ETH_QOS_prv_data *pdata)
		EMACDBG(
			"MICREL PHY Intr EN Reg (%#x) = %#x\n", DWC_ETH_QOS_MICREL_PHY_INTCS, micrel_intr_status);

	/* Call ack interrupt to clear the WOL interrupt status fields */
	if (pdata->phydev->drv->ack_interrupt)
		pdata->phydev->drv->ack_interrupt(pdata->phydev);

		/* Interrupt received for link state change */
		if (phy_intr_status & LINK_STATE_MASK) {
			EMACDBG("Interrupt received for link UP state\n");
@@ -809,6 +806,25 @@ void DWC_ETH_QOS_handle_phy_interrupt(struct DWC_ETH_QOS_prv_data *pdata)
			EMACDBG("Interrupt received for link down with"
					" auto-negotiation error\n");
		}
	} else {
		DWC_ETH_QOS_mdio_read_direct(
		pdata, pdata->phyaddr, DWC_ETH_QOS_PHY_INTR_STATUS, &phy_intr_status);
		EMACDBG("Phy Interrupt status Reg at offset 0x13 = %#x\n", phy_intr_status);
		/* Interrupt received for link state change */
		if (phy_intr_status & LINK_UP_STATE) {
			pdata->hw_if.stop_mac_tx_rx();
			EMACDBG("Interrupt received for link UP state\n");
			phy_mac_interrupt(pdata->phydev, LINK_UP);
		} else if (phy_intr_status & LINK_DOWN_STATE) {
			EMACDBG("Interrupt received for link DOWN state\n");
			phy_mac_interrupt(pdata->phydev, LINK_DOWN);
		} else if (phy_intr_status & AUTO_NEG_ERROR) {
			EMACDBG("Interrupt received for link down with"
				" auto-negotiation error\n");
		} else if (phy_intr_status & PHY_WOL) {
			EMACDBG("Interrupt received for WoL packet\n");
		}
	}

	EMACDBG("Exit\n");
	return;
+0 −1
Original line number Diff line number Diff line
@@ -799,7 +799,6 @@ static inline int DWC_ETH_QOS_configure_io_macro_dll_settings(
	EMACDBG("Enter\n");

#ifndef DWC_ETH_QOS_EMULATION_PLATFORM
	if (pdata->emac_hw_version_type == EMAC_HW_v2_0_0 || pdata->emac_hw_version_type == EMAC_HW_v2_3_1)
	DWC_ETH_QOS_rgmii_io_macro_dll_reset(pdata);

	/* For RGMII ID mode with internal delay*/