Module Name: src
Committed By: skrll
Date: Sun Aug 25 07:25:00 UTC 2024
Modified Files:
src/sys/arch/arm/xilinx: zynq_cemac.c
src/sys/dev/cadence: if_cemac.c if_cemacvar.h
Log Message:
Re-organise to enable other attachments.
To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/xilinx/zynq_cemac.c
cvs rdiff -u -r1.32 -r1.33 src/sys/dev/cadence/if_cemac.c
cvs rdiff -u -r1.3 -r1.4 src/sys/dev/cadence/if_cemacvar.h
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/xilinx/zynq_cemac.c
diff -u src/sys/arch/arm/xilinx/zynq_cemac.c:1.8 src/sys/arch/arm/xilinx/zynq_cemac.c:1.9
--- src/sys/arch/arm/xilinx/zynq_cemac.c:1.8 Sun Aug 25 07:19:57 2024
+++ src/sys/arch/arm/xilinx/zynq_cemac.c Sun Aug 25 07:25:00 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: zynq_cemac.c,v 1.8 2024/08/25 07:19:57 skrll Exp $ */
+/* $NetBSD: zynq_cemac.c,v 1.9 2024/08/25 07:25:00 skrll Exp $ */
/*-
* Copyright (c) 2015 Genetec Corporation. All rights reserved.
* Written by Hashimoto Kenichi for Genetec Corporation.
@@ -26,7 +26,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: zynq_cemac.c,v 1.8 2024/08/25 07:19:57 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: zynq_cemac.c,v 1.9 2024/08/25 07:25:00 skrll Exp $");
#include <sys/param.h>
@@ -47,7 +47,7 @@ static const struct device_compatible_en
DEVICE_COMPAT_EOL
};
-int
+static int
cemac_match(device_t parent, cfdata_t cfdata, void *aux)
{
struct fdt_attach_args * const faa = aux;
@@ -55,13 +55,13 @@ cemac_match(device_t parent, cfdata_t cf
return of_compatible_match(faa->faa_phandle, compat_data);
}
-void
+static void
cemac_attach(device_t parent, device_t self, void *aux)
{
struct fdt_attach_args * const faa = aux;
+ struct cemac_softc *sc = device_private(self);
const int phandle = faa->faa_phandle;
prop_dictionary_t prop = device_properties(self);
- bus_space_handle_t ioh;
char intrstr[128];
const char *macaddr;
bus_addr_t addr;
@@ -73,7 +73,7 @@ cemac_attach(device_t parent, device_t s
return;
}
- error = bus_space_map(faa->faa_bst, addr, size, 0, &ioh);
+ error = bus_space_map(faa->faa_bst, addr, size, 0, &sc->sc_ioh);
if (error) {
aprint_error(": failed to map register %#lx@%#lx: %d\n",
size, addr, error);
@@ -97,8 +97,15 @@ cemac_attach(device_t parent, device_t s
prop_dictionary_set_data(prop, "mac-address", macaddr, len);
}
- cemac_attach_common(self, faa->faa_bst, ioh, faa->faa_dmat,
- CEMAC_FLAG_GEM);
+ sc->sc_dev = self;
+ sc->sc_iot = faa->faa_bst;
+ sc->sc_dmat = faa->faa_dmat;
+ sc->cemac_flags = CEMAC_FLAG_GEM;
+
+ cemac_attach_common(sc);
aprint_normal_dev(self, "interrupting on %s\n", intrstr);
}
+
+CFATTACH_DECL_NEW(cemac, sizeof(struct cemac_softc),
+ cemac_match, cemac_attach, NULL, NULL);
Index: src/sys/dev/cadence/if_cemac.c
diff -u src/sys/dev/cadence/if_cemac.c:1.32 src/sys/dev/cadence/if_cemac.c:1.33
--- src/sys/dev/cadence/if_cemac.c:1.32 Sat Aug 24 11:55:45 2024
+++ src/sys/dev/cadence/if_cemac.c Sun Aug 25 07:25:00 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: if_cemac.c,v 1.32 2024/08/24 11:55:45 skrll Exp $ */
+/* $NetBSD: if_cemac.c,v 1.33 2024/08/25 07:25:00 skrll Exp $ */
/*
* Copyright (c) 2015 Genetec Corporation. All rights reserved.
@@ -40,7 +40,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_cemac.c,v 1.32 2024/08/24 11:55:45 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_cemac.c,v 1.33 2024/08/25 07:25:00 skrll Exp $");
#include <sys/param.h>
#include <sys/types.h>
@@ -87,44 +87,6 @@ __KERNEL_RCSID(0, "$NetBSD: if_cemac.c,v
bus_space_write_4(sc->sc_iot, sc->sc_ioh, (ETH_##x), (y)); \
} while(0)
-#define RX_QLEN 64
-#define TX_QLEN 2 /* I'm very sorry but that's where we can get */
-
-struct cemac_qmeta {
- struct mbuf *m;
- bus_dmamap_t m_dmamap;
-};
-
-struct cemac_softc {
- device_t sc_dev;
- bus_space_tag_t sc_iot;
- bus_space_handle_t sc_ioh;
- bus_dma_tag_t sc_dmat;
- uint8_t sc_enaddr[ETHER_ADDR_LEN];
- struct ethercom sc_ethercom;
- mii_data_t sc_mii;
-
- void *rbqpage;
- unsigned rbqlen;
- bus_addr_t rbqpage_dsaddr;
- bus_dmamap_t rbqpage_dmamap;
- void *tbqpage;
- unsigned tbqlen;
- bus_addr_t tbqpage_dsaddr;
- bus_dmamap_t tbqpage_dmamap;
-
- volatile struct eth_dsc *RDSC;
- int rxqi;
- struct cemac_qmeta rxq[RX_QLEN];
- volatile struct eth_dsc *TDSC;
- int txqi, txqc;
- struct cemac_qmeta txq[TX_QLEN];
- callout_t cemac_tick_ch;
- bool tx_busy;
-
- int cemac_flags;
-};
-
static void cemac_init(struct cemac_softc *);
static int cemac_gctx(struct cemac_softc *);
static int cemac_mediachange(struct ifnet *);
@@ -147,24 +109,10 @@ int cemac_debug = CEMAC_DEBUG;
#define DPRINTFN(n, fmt)
#endif
-CFATTACH_DECL_NEW(cemac, sizeof(struct cemac_softc),
- cemac_match, cemac_attach, NULL, NULL);
-
-
void
-cemac_attach_common(device_t self, bus_space_tag_t iot,
- bus_space_handle_t ioh, bus_dma_tag_t dmat, int flags)
+cemac_attach_common(struct cemac_softc *sc)
{
- struct cemac_softc *sc = device_private(self);
- prop_data_t enaddr;
- uint32_t u;
-
-
- sc->sc_dev = self;
- sc->sc_ioh = ioh;
- sc->sc_iot = iot;
- sc->sc_dmat = dmat;
- sc->cemac_flags = flags;
+ uint32_t u;
aprint_naive("\n");
if (ISSET(sc->cemac_flags, CEMAC_FLAG_GEM))
@@ -193,7 +141,8 @@ cemac_attach_common(device_t self, bus_s
CEMAC_WRITE(ETH_RSR, (u & (ETH_RSR_OVR | ETH_RSR_REC | ETH_RSR_BNA)));
/* Fetch the Ethernet address from property if set. */
- enaddr = prop_dictionary_get(device_properties(self), "mac-address");
+ prop_dictionary_t prop = device_properties(sc->sc_dev);
+ prop_data_t enaddr = prop_dictionary_get(prop, "mac-address");
if (enaddr != NULL) {
KASSERT(prop_object_type(enaddr) == PROP_TYPE_DATA);
Index: src/sys/dev/cadence/if_cemacvar.h
diff -u src/sys/dev/cadence/if_cemacvar.h:1.3 src/sys/dev/cadence/if_cemacvar.h:1.4
--- src/sys/dev/cadence/if_cemacvar.h:1.3 Sat Aug 24 10:13:19 2024
+++ src/sys/dev/cadence/if_cemacvar.h Sun Aug 25 07:25:00 2024
@@ -1,4 +1,4 @@
-/* $NetBSD: if_cemacvar.h,v 1.3 2024/08/24 10:13:19 skrll Exp $ */
+/* $NetBSD: if_cemacvar.h,v 1.4 2024/08/25 07:25:00 skrll Exp $ */
/*-
* Copyright (c) 2015 Genetec Corporation. All rights reserved.
* Written by Hashimoto Kenichi for Genetec Corporation.
@@ -28,13 +28,55 @@
#ifndef _IF_CEMACVAR_H_
#define _IF_CEMACVAR_H_
-int cemac_match(device_t, cfdata_t, void *);
-void cemac_attach(device_t, device_t, void *);
+#include <net/if.h>
+#include <net/if_media.h>
+#include <net/if_ether.h>
+#include <net/if_media.h>
+
+#include <dev/mii/miivar.h>
+
+#define RX_QLEN 64
+#define TX_QLEN 2 /* I'm very sorry but that's where we can get */
+
+struct cemac_qmeta {
+ struct mbuf *m;
+ bus_dmamap_t m_dmamap;
+};
+
+struct cemac_softc {
+ device_t sc_dev;
+ bus_space_tag_t sc_iot;
+ bus_space_handle_t sc_ioh;
+ bus_dma_tag_t sc_dmat;
+ uint8_t sc_enaddr[ETHER_ADDR_LEN];
+ struct ethercom sc_ethercom;
+ mii_data_t sc_mii;
+
+ void *rbqpage;
+ unsigned rbqlen;
+ bus_addr_t rbqpage_dsaddr;
+ bus_dmamap_t rbqpage_dmamap;
+ void *tbqpage;
+ unsigned tbqlen;
+ bus_addr_t tbqpage_dsaddr;
+ bus_dmamap_t tbqpage_dmamap;
+
+ volatile struct eth_dsc *RDSC;
+ int rxqi;
+ struct cemac_qmeta rxq[RX_QLEN];
+ volatile struct eth_dsc *TDSC;
+ int txqi, txqc;
+ struct cemac_qmeta txq[TX_QLEN];
+ callout_t cemac_tick_ch;
+ bool tx_busy;
+
+ unsigned cemac_flags;
+#define CEMAC_FLAG_GEM __BIT(0)
+};
+
int cemac_intr(void *);
-void cemac_attach_common(device_t, bus_space_tag_t, bus_space_handle_t,
- bus_dma_tag_t, int);
+void cemac_attach_common(struct cemac_softc *);
-#define CEMAC_FLAG_GEM 0x0001
#endif /* _IF_CEMACVAR_H_ */