svn commit: r362389 - head/sys/dev/pci

Michal Meloun mmel at FreeBSD.org
Fri Jun 19 17:25:55 UTC 2020


Author: mmel
Date: Fri Jun 19 17:25:54 2020
New Revision: 362389
URL: https://svnweb.freebsd.org/changeset/base/362389

Log:
  diff --git a/sys/dev/pci/pci_dw_mv.c b/sys/dev/pci/pci_dw_mv.c
  index 06a29fefbdd..571fc00f6c1 100644
  --- a/sys/dev/pci/pci_dw_mv.c
  +++ b/sys/dev/pci/pci_dw_mv.c
  @@ -64,15 +64,11 @@ __FBSDID("$FreeBSD$");
  
   #define MV_GLOBAL_CONTROL_REG		0x8000
   #define PCIE_APP_LTSSM_EN		(1 << 2)
  -//#define PCIE_DEVICE_TYPE_SHIFT		4
  -//#define PCIE_DEVICE_TYPE_MASK		0xF
  -//#define PCIE_DEVICE_TYPE_RC		0x4/
  
   #define MV_GLOBAL_STATUS_REG		0x8008
   #define	 MV_STATUS_RDLH_LINK_UP			(1 << 1)
   #define  MV_STATUS_PHY_LINK_UP			(1 << 9)
  
  -
   #define MV_INT_CAUSE1			0x801C
   #define MV_INT_MASK1			0x8020
   #define  INT_A_ASSERT_MASK			(1 <<  9)
  @@ -90,11 +86,7 @@ __FBSDID("$FreeBSD$");
   #define MV_ARUSER_REG			0x805C
   #define MV_AWUSER_REG			0x8060
  
  -
  -
   #define	MV_MAX_LANES	8
  -
  -
   struct pci_mv_softc {
   	struct pci_dw_softc	dw_sc;
   	device_t		dev;
  @@ -112,7 +104,6 @@ static struct ofw_compat_data compat_data[] = {
   	{NULL,		 	  0},
   };
  
  -
   static int
   pci_mv_phy_init(struct pci_mv_softc *sc)
   {
  @@ -121,18 +112,23 @@ pci_mv_phy_init(struct pci_mv_softc *sc)
   	for (i = 0; i < MV_MAX_LANES; i++) {
   		rv =  phy_get_by_ofw_idx(sc->dev, sc->node, i, &(sc->phy[i]));
   		if (rv != 0 && rv != ENOENT) {
  -	  		device_printf(sc->dev, "Cannot get phy[%d]\n", i);
  -	  		goto fail;
  -	  	}
  -	  	if (sc->phy[i] == NULL)
  -	  		continue;
  -	  	rv = phy_enable(sc->phy[i]);
  -	  	if (rv != 0) {
  -	  		device_printf(sc->dev, "Cannot enable phy[%d]\n", i);
  -	  		goto fail;
  -	  	}
  -	  }
  -	  return (0);
  +			device_printf(sc->dev, "Cannot get phy[%d]\n", i);
  +/* XXX revert when phy driver will be implemented */
  +#if 0
  +		goto fail;
  +#else
  +		continue;
  +#endif
  +		}
  +		if (sc->phy[i] == NULL)
  +			continue;
  +		rv = phy_enable(sc->phy[i]);
  +		if (rv != 0) {
  +			device_printf(sc->dev, "Cannot enable phy[%d]\n", i);
  +			goto fail;
  +		}
  +	}
  +	return (0);
  
   fail:
   	for (i = 0; i < MV_MAX_LANES; i++) {
  @@ -173,13 +169,14 @@ pci_mv_init(struct pci_mv_softc *sc)
   	/* Enable local interrupts */
   	pci_dw_dbi_wr4(sc->dev, DW_MSI_INTR0_MASK, 0xFFFFFFFF);
   	pci_dw_dbi_wr4(sc->dev, MV_INT_MASK1, 0xFFFFFFFF);
  -	pci_dw_dbi_wr4(sc->dev, MV_INT_MASK2, 0xFFFFFFFF);
  +	pci_dw_dbi_wr4(sc->dev, MV_INT_MASK2, 0xFFFFFFFD);
   	pci_dw_dbi_wr4(sc->dev, MV_INT_CAUSE1, 0xFFFFFFFF);
   	pci_dw_dbi_wr4(sc->dev, MV_INT_CAUSE2, 0xFFFFFFFF);
  
   	/* Errors have own interrupt, not yet populated in DTt */
   	pci_dw_dbi_wr4(sc->dev, MV_ERR_INT_MASK, 0);
   }
  +
   static int pci_mv_intr(void *arg)
   {
   	struct pci_mv_softc *sc = arg;
  @@ -188,8 +185,6 @@ static int pci_mv_intr(void *arg)
   	/* Ack all interrups */
   	cause1 = pci_dw_dbi_rd4(sc->dev, MV_INT_CAUSE1);
   	cause2 = pci_dw_dbi_rd4(sc->dev, MV_INT_CAUSE2);
  -	if (cause1 == 0 || cause2 == 0)
  -		return(FILTER_STRAY);
  
   	pci_dw_dbi_wr4(sc->dev, MV_INT_CAUSE1, cause1);
   	pci_dw_dbi_wr4(sc->dev, MV_INT_CAUSE2, cause2);

Modified:
  head/sys/dev/pci/pci_dw_mv.c

Modified: head/sys/dev/pci/pci_dw_mv.c
==============================================================================
--- head/sys/dev/pci/pci_dw_mv.c	Fri Jun 19 16:26:42 2020	(r362388)
+++ head/sys/dev/pci/pci_dw_mv.c	Fri Jun 19 17:25:54 2020	(r362389)
@@ -64,15 +64,11 @@ __FBSDID("$FreeBSD$");
 
 #define MV_GLOBAL_CONTROL_REG		0x8000
 #define PCIE_APP_LTSSM_EN		(1 << 2)
-//#define PCIE_DEVICE_TYPE_SHIFT		4
-//#define PCIE_DEVICE_TYPE_MASK		0xF
-//#define PCIE_DEVICE_TYPE_RC		0x4/
 
 #define MV_GLOBAL_STATUS_REG		0x8008
 #define	 MV_STATUS_RDLH_LINK_UP			(1 << 1)
 #define  MV_STATUS_PHY_LINK_UP			(1 << 9)
 
-
 #define MV_INT_CAUSE1			0x801C
 #define MV_INT_MASK1			0x8020
 #define  INT_A_ASSERT_MASK			(1 <<  9)
@@ -90,11 +86,7 @@ __FBSDID("$FreeBSD$");
 #define MV_ARUSER_REG			0x805C
 #define MV_AWUSER_REG			0x8060
 
-
-
 #define	MV_MAX_LANES	8
-
-
 struct pci_mv_softc {
 	struct pci_dw_softc	dw_sc;
 	device_t		dev;
@@ -112,7 +104,6 @@ static struct ofw_compat_data compat_data[] = {
 	{NULL,		 	  0},
 };
 
-
 static int
 pci_mv_phy_init(struct pci_mv_softc *sc)
 {
@@ -121,18 +112,23 @@ pci_mv_phy_init(struct pci_mv_softc *sc)
 	for (i = 0; i < MV_MAX_LANES; i++) {
 		rv =  phy_get_by_ofw_idx(sc->dev, sc->node, i, &(sc->phy[i]));
 		if (rv != 0 && rv != ENOENT) {
-	  		device_printf(sc->dev, "Cannot get phy[%d]\n", i);
-	  		goto fail;
-	  	}
-	  	if (sc->phy[i] == NULL)
-	  		continue;
-	  	rv = phy_enable(sc->phy[i]);
-	  	if (rv != 0) {
-	  		device_printf(sc->dev, "Cannot enable phy[%d]\n", i);
-	  		goto fail;
-	  	}
-	  }
-	  return (0);
+			device_printf(sc->dev, "Cannot get phy[%d]\n", i);
+/* XXX revert when phy driver will be implemented */
+#if 0
+		goto fail;
+#else
+		continue;
+#endif
+		}
+		if (sc->phy[i] == NULL)
+			continue;
+		rv = phy_enable(sc->phy[i]);
+		if (rv != 0) {
+			device_printf(sc->dev, "Cannot enable phy[%d]\n", i);
+			goto fail;
+		}
+	}
+	return (0);
 
 fail:
 	for (i = 0; i < MV_MAX_LANES; i++) {
@@ -173,13 +169,14 @@ pci_mv_init(struct pci_mv_softc *sc)
 	/* Enable local interrupts */
 	pci_dw_dbi_wr4(sc->dev, DW_MSI_INTR0_MASK, 0xFFFFFFFF);
 	pci_dw_dbi_wr4(sc->dev, MV_INT_MASK1, 0xFFFFFFFF);
-	pci_dw_dbi_wr4(sc->dev, MV_INT_MASK2, 0xFFFFFFFF);
+	pci_dw_dbi_wr4(sc->dev, MV_INT_MASK2, 0xFFFFFFFD);
 	pci_dw_dbi_wr4(sc->dev, MV_INT_CAUSE1, 0xFFFFFFFF);
 	pci_dw_dbi_wr4(sc->dev, MV_INT_CAUSE2, 0xFFFFFFFF);
 
 	/* Errors have own interrupt, not yet populated in DTt */
 	pci_dw_dbi_wr4(sc->dev, MV_ERR_INT_MASK, 0);
 }
+
 static int pci_mv_intr(void *arg)
 {
 	struct pci_mv_softc *sc = arg;
@@ -188,8 +185,6 @@ static int pci_mv_intr(void *arg)
 	/* Ack all interrups */
 	cause1 = pci_dw_dbi_rd4(sc->dev, MV_INT_CAUSE1);
 	cause2 = pci_dw_dbi_rd4(sc->dev, MV_INT_CAUSE2);
-	if (cause1 == 0 || cause2 == 0)
-		return(FILTER_STRAY);
 
 	pci_dw_dbi_wr4(sc->dev, MV_INT_CAUSE1, cause1);
 	pci_dw_dbi_wr4(sc->dev, MV_INT_CAUSE2, cause2);
@@ -325,4 +320,4 @@ DEFINE_CLASS_1(pcib, pci_mv_driver, pci_mv_methods,
     sizeof(struct pci_mv_softc), pci_dw_driver);
 static devclass_t pci_mv_devclass;
 DRIVER_MODULE( pci_mv, simplebus, pci_mv_driver, pci_mv_devclass,
-    NULL, NULL);
\ No newline at end of file
+    NULL, NULL);


More information about the svn-src-all mailing list