Module Name:    src
Committed By:   nisimura
Date:           Tue Jan 25 10:51:36 UTC 2022

Modified Files:
        src/sys/arch/arm/sociox: if_scx.c

Log Message:
- don't put const for CFATTACH_DECL_NEW()
- MDIO now senses PHY correctly.


To generate a diff of this commit:
cvs rdiff -u -r1.34 -r1.35 src/sys/arch/arm/sociox/if_scx.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/sociox/if_scx.c
diff -u src/sys/arch/arm/sociox/if_scx.c:1.34 src/sys/arch/arm/sociox/if_scx.c:1.35
--- src/sys/arch/arm/sociox/if_scx.c:1.34	Fri Dec 31 14:25:22 2021
+++ src/sys/arch/arm/sociox/if_scx.c	Tue Jan 25 10:51:36 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: if_scx.c,v 1.34 2021/12/31 14:25:22 riastradh Exp $	*/
+/*	$NetBSD: if_scx.c,v 1.35 2022/01/25 10:51:36 nisimura Exp $	*/
 
 /*-
  * Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -46,7 +46,7 @@
 #define NOT_MP_SAFE	0
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_scx.c,v 1.34 2021/12/31 14:25:22 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_scx.c,v 1.35 2022/01/25 10:51:36 nisimura Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -546,10 +546,10 @@ static void scx_fdt_attach(device_t, dev
 static int scx_acpi_match(device_t, cfdata_t, void *);
 static void scx_acpi_attach(device_t, device_t, void *);
 
-const CFATTACH_DECL_NEW(scx_fdt, sizeof(struct scx_softc),
+CFATTACH_DECL_NEW(scx_fdt, sizeof(struct scx_softc),
     scx_fdt_match, scx_fdt_attach, NULL, NULL);
 
-const CFATTACH_DECL_NEW(scx_acpi, sizeof(struct scx_softc),
+CFATTACH_DECL_NEW(scx_acpi, sizeof(struct scx_softc),
     scx_acpi_match, scx_acpi_attach, NULL, NULL);
 
 static void scx_attach_i(struct scx_softc *);
@@ -683,9 +683,6 @@ scx_fdt_attach(device_t parent, device_t
 	const char *phy_type;
 	long ref_clk;
 
-	aprint_naive("\n");
-	aprint_normal(": Socionext Gigabit Ethernet controller\n");
-
 	if (fdtbus_get_reg(phandle, 0, addr+0, size+0) != 0
 	    || bus_space_map(faa->faa_bst, addr[0], size[0], 0, &bsh) != 0) {
 		aprint_error_dev(self, "unable to map device csr\n");
@@ -731,6 +728,7 @@ scx_fdt_attach(device_t parent, device_t
 	sc->sc_phy_id = phy_id;
 	sc->sc_freq = ref_clk;
 
+	aprint_normal("%s", device_xname(self));
 	scx_attach_i(sc);
 	return;
  fail:
@@ -762,15 +760,11 @@ scx_acpi_attach(device_t parent, device_
 	ACPI_INTEGER phy_type, phy_id, ref_freq;
 	ACPI_STATUS rv;
 
-	aprint_naive("\n");
-	aprint_normal(": Socionext Gigabit Ethernet controller\n");
-
 	rv = acpi_resource_parse(self, handle, "_CRS",
 	    &res, &acpi_resource_parse_ops_default);
-	if (ACPI_FAILURE(rv)) {
-		aprint_error_dev(self, "missing crs resources\n");
+	if (ACPI_FAILURE(rv))
 		return;
-	}
+
 	mem = acpi_res_mem(&res, 0);
 	irq = acpi_res_irq(&res, 0);
 	if (mem == NULL || irq == NULL || mem->ar_length == 0) {
@@ -783,8 +777,8 @@ scx_acpi_attach(device_t parent, device_
 		return;
 	}
 	sc->sc_sz = mem->ar_length;
-	sc->sc_ih = acpi_intr_establish(self, (uint64_t)handle, IPL_NET,
-	    NOT_MP_SAFE, scx_intr, sc, device_xname(self));
+	sc->sc_ih = acpi_intr_establish(self, (uint64_t)(uintptr_t)handle,
+	    IPL_NET, NOT_MP_SAFE, scx_intr, sc, device_xname(self));
 	if (sc->sc_ih == NULL) {
 		aprint_error_dev(self, "couldn't establish interrupt\n");
 		goto fail;
@@ -808,7 +802,7 @@ scx_acpi_attach(device_t parent, device_
 	}
 	rv = acpi_dsd_integer(handle, "phy-channel", &phy_id);
 	if (ACPI_FAILURE(rv))
-		phy_id = 7;
+		phy_id = MII_PHY_ANY;
 	rv = acpi_dsd_integer(handle, "socionext,phy-clock-frequency",
 			&ref_freq);
 	if (ACPI_FAILURE(rv))
@@ -819,15 +813,14 @@ scx_acpi_attach(device_t parent, device_
 	sc->sc_sh = bsh;
 	sc->sc_eesh = eebsh;
 	sc->sc_dmat = aa->aa_dmat64;
-
-aprint_normal_dev(self,
-"phy type %d, phy id %d, freq %ld\n", (int)phy_type, (int)phy_id, ref_freq);
 	sc->sc_100mii = (phy_type != 1000);
 	sc->sc_phy_id = (int)phy_id;
 	sc->sc_freq = ref_freq;
+
 aprint_normal_dev(self,
-"GMACGAR %08x\n", mac_read(sc, GMACGAR));
+"phy type %d, phy id %d, freq %ld\n", (int)phy_type, (int)phy_id, ref_freq);
 
+	aprint_normal("%s", device_xname(self));
 	scx_attach_i(sc);
 
 	acpi_resource_cleanup(&res);
@@ -847,22 +840,23 @@ scx_attach_i(struct scx_softc *sc)
 	struct ifnet * const ifp = &sc->sc_ethercom.ec_if;
 	struct mii_data * const mii = &sc->sc_mii;
 	struct ifmedia * const ifm = &mii->mii_media;
-	uint32_t which, dwimp, dwfea;
+	uint32_t which, dwfea, dwimp;
 	uint8_t enaddr[ETHER_ADDR_LEN];
 	bus_dma_segment_t seg;
 	uint32_t csr;
 	int i, nseg, error = 0;
 
+	aprint_naive("\n");
+	aprint_normal(": Socionext Gigabit Ethernet controller\n");
+
 	which = CSR_READ(sc, HWVER);	/* Socionext version 5.00xx */
-	dwimp = mac_read(sc, GMACIMPL);	/* DWC EMAC XX.YY */
-	dwfea = mac_read(sc, HWFEA);	/* DWC feature */
+	dwfea = mac_read(sc, HWFEA);	/* DWC feature bits */
+	dwimp = mac_read(sc, GMACIMPL);	/* DWC implementation XX.YY */
 	aprint_normal_dev(sc->sc_dev,
-	    "Socionext NetSec GbE %x.%x"
-	    " (impl 0x%x, feature 0x%x)\n",
-	    which >> 16, which & 0xffff,
-	    dwimp, dwfea);
+	    "NetSec %x.%x (feature 0x%x imp 0x%0x)\n",
+	    which >> 16, which & 0xffff, dwfea, dwimp);
 
-	/* fetch MAC address in flash. stored in big endian order */
+	/* fetch MAC address in flash 0:7, stored in big endian order */
 	csr = EE_READ(sc, 0x00);
 	enaddr[0] = csr >> 24;
 	enaddr[1] = csr >> 16;
@@ -885,7 +879,7 @@ scx_attach_i(struct scx_softc *sc)
 
 	sc->sc_ethercom.ec_mii = mii;
 	ifmedia_init(ifm, 0, ether_mediachange, scx_ifmedia_sts);
-	mii_attach(sc->sc_dev, mii, 0xffffffff, MII_PHY_ANY,
+	mii_attach(sc->sc_dev, mii, 0xffffffff, sc->sc_phy_id,
 	    MII_OFFSET_ANY, MIIF_DOPAUSE);
 	if (LIST_FIRST(&mii->mii_phys) == NULL) {
 		ifmedia_add(ifm, IFM_ETHER | IFM_NONE, 0, NULL);
@@ -952,8 +946,9 @@ scx_attach_i(struct scx_softc *sc)
 	}
 	sc->sc_seg = seg;
 	sc->sc_nseg = nseg;
+#if 0
 aprint_normal_dev(sc->sc_dev, "descriptor ds_addr %lx, ds_len %lx, nseg %d\n", seg.ds_addr, seg.ds_len, nseg);
-
+#endif
 	strlcpy(ifp->if_xname, device_xname(sc->sc_dev), IFNAMSIZ);
 	ifp->if_softc = sc;
 	ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;

Reply via email to