svn commit: r317873 - in head/sys: conf dev/rt gnu/dts/mips mips/conf mips/mediatek

Adrian Chadd adrian at FreeBSD.org
Sat May 6 06:20:37 UTC 2017


Author: adrian
Date: Sat May  6 06:20:34 2017
New Revision: 317873
URL: https://svnweb.freebsd.org/changeset/base/317873

Log:
  [mips] [rt2880] Add oldest Ralink MIPS SOC RT2880 support code.
  
  * Target module have ic plus etherswitch ip175c.
  * Also add etherswitch support code on rt driver.
  
  Reviewed by:	mizhka
  Differential Revision:	https://reviews.freebsd.org/D10336

Added:
  head/sys/gnu/dts/mips/MZK-W04N-XX.dts   (contents, props changed)
  head/sys/mips/conf/RT2880_FDT   (contents, props changed)
  head/sys/mips/mediatek/std.rt2880   (contents, props changed)
Modified:
  head/sys/conf/options.mips
  head/sys/dev/rt/if_rt.c
  head/sys/dev/rt/if_rtreg.h
  head/sys/gnu/dts/mips/rt2880.dtsi
  head/sys/mips/mediatek/mtk_machdep.c
  head/sys/mips/mediatek/mtk_soc.c
  head/sys/mips/mediatek/mtk_soc.h

Modified: head/sys/conf/options.mips
==============================================================================
--- head/sys/conf/options.mips	Sat May  6 06:14:46 2017	(r317872)
+++ head/sys/conf/options.mips	Sat May  6 06:20:34 2017	(r317873)
@@ -152,6 +152,7 @@ RT3050F				opt_rt305x.h
 RT305X				opt_rt305x.h
 RT305X_UBOOT			opt_rt305x.h
 RT305X_USE_UART			opt_rt305x.h
+RT_MDIO				opt_rt305x.h
 
 #
 # Options that affect the pmap.

Modified: head/sys/dev/rt/if_rt.c
==============================================================================
--- head/sys/dev/rt/if_rt.c	Sat May  6 06:14:46 2017	(r317872)
+++ head/sys/dev/rt/if_rt.c	Sat May  6 06:20:34 2017	(r317873)
@@ -70,6 +70,12 @@ __FBSDID("$FreeBSD$");
 #include <dev/mii/mii.h>
 #include <dev/mii/miivar.h>
 
+#ifdef RT_MDIO
+#include <dev/mdio/mdio.h>
+#include <dev/etherswitch/miiproxy.h>
+#include "mdio_if.h"
+#endif
+
 #if 0
 #include <mips/rt305x/rt305x_sysctlvar.h>
 #include <mips/rt305x/rt305xreg.h>
@@ -91,6 +97,7 @@ __FBSDID("$FreeBSD$");
 
 #define	RT_TX_WATCHDOG_TIMEOUT		5
 
+#define RT_CHIPID_RT2880 0x2880
 #define RT_CHIPID_RT3050 0x3050
 #define RT_CHIPID_RT5350 0x5350
 #define RT_CHIPID_MT7620 0x7620
@@ -99,6 +106,7 @@ __FBSDID("$FreeBSD$");
 #ifdef FDT
 /* more specific and new models should go first */
 static const struct ofw_compat_data rt_compat_data[] = {
+	{ "ralink,rt2880-eth",		RT_CHIPID_RT2880 },
 	{ "ralink,rt3050-eth",		RT_CHIPID_RT3050 },
 	{ "ralink,rt3352-eth",		RT_CHIPID_RT3050 },
 	{ "ralink,rt3883-eth",		RT_CHIPID_RT3050 },
@@ -166,6 +174,8 @@ static void	rt_dma_map_addr(void *arg, b
 static void	rt_sysctl_attach(struct rt_softc *sc);
 #ifdef IF_RT_PHY_SUPPORT
 void		rt_miibus_statchg(device_t);
+#endif
+#if defined(IF_RT_PHY_SUPPORT) || defined(RT_MDIO)
 static int	rt_miibus_readreg(device_t, int, int);
 static int	rt_miibus_writereg(device_t, int, int, int);
 #endif
@@ -351,7 +361,7 @@ rt_attach(device_t dev)
 
 	sc->mem_rid = 0;
 	sc->mem = bus_alloc_resource_any(dev, SYS_RES_MEMORY, &sc->mem_rid,
-	    RF_ACTIVE);
+	    RF_ACTIVE | RF_SHAREABLE);
 	if (sc->mem == NULL) {
 		device_printf(dev, "could not allocate memory resource\n");
 		error = ENXIO;
@@ -467,6 +477,9 @@ rt_attach(device_t dev)
 		GDM_DST_PORT_CPU << GDM_OFRC_P_SHIFT   /* fwd Other to CPU */
 		));
 
+	if (sc->rt_chipid == RT_CHIPID_RT2880)
+		RT_WRITE(sc, MDIO_CFG, MDIO_2880_100T_INIT);
+
 	/* allocate Tx and Rx rings */
 	for (i = 0; i < RT_SOFTC_TX_RING_COUNT; i++) {
 		error = rt_alloc_tx_ring(sc, &sc->tx_ring[i], i);
@@ -2733,16 +2746,20 @@ rt_sysctl_attach(struct rt_softc *sc)
 	    "Tx collision count for GDMA ports");
 }
 
-#ifdef IF_RT_PHY_SUPPORT
+#if defined(IF_RT_PHY_SUPPORT) || defined(RT_MDIO)
+/* This code is only work RT2880 and same chip. */
+/* TODO: make RT3052 and later support code. But nobody need it? */
 static int
 rt_miibus_readreg(device_t dev, int phy, int reg)
 {
 	struct rt_softc *sc = device_get_softc(dev);
+	int dat;
 
 	/*
 	 * PSEUDO_PHYAD is a special value for indicate switch attached.
 	 * No one PHY use PSEUDO_PHYAD (0x1e) address.
 	 */
+#ifndef RT_MDIO
 	if (phy == 31) {
 		/* Fake PHY ID for bfeswitch attach */
 		switch (reg) {
@@ -2754,13 +2771,14 @@ rt_miibus_readreg(device_t dev, int phy,
 			return (0x6250);		/* bfeswitch */
 		}
 	}
+#endif
 
 	/* Wait prev command done if any */
 	while (RT_READ(sc, MDIO_ACCESS) & MDIO_CMD_ONGO);
-	RT_WRITE(sc, MDIO_ACCESS,
-	    MDIO_CMD_ONGO ||
-	    ((phy << MDIO_PHY_ADDR_SHIFT) & MDIO_PHY_ADDR_MASK) ||
-	    ((reg << MDIO_PHYREG_ADDR_SHIFT) & MDIO_PHYREG_ADDR_MASK));
+	dat = ((phy << MDIO_PHY_ADDR_SHIFT) & MDIO_PHY_ADDR_MASK) |
+	    ((reg << MDIO_PHYREG_ADDR_SHIFT) & MDIO_PHYREG_ADDR_MASK);
+	RT_WRITE(sc, MDIO_ACCESS, dat);
+	RT_WRITE(sc, MDIO_ACCESS, dat | MDIO_CMD_ONGO);
 	while (RT_READ(sc, MDIO_ACCESS) & MDIO_CMD_ONGO);
 
 	return (RT_READ(sc, MDIO_ACCESS) & MDIO_PHY_DATA_MASK);
@@ -2770,19 +2788,23 @@ static int
 rt_miibus_writereg(device_t dev, int phy, int reg, int val)
 {
 	struct rt_softc *sc = device_get_softc(dev);
+	int dat;
 
 	/* Wait prev command done if any */
 	while (RT_READ(sc, MDIO_ACCESS) & MDIO_CMD_ONGO);
-	RT_WRITE(sc, MDIO_ACCESS,
-	    MDIO_CMD_ONGO || MDIO_CMD_WR ||
-	    ((phy << MDIO_PHY_ADDR_SHIFT) & MDIO_PHY_ADDR_MASK) ||
-	    ((reg << MDIO_PHYREG_ADDR_SHIFT) & MDIO_PHYREG_ADDR_MASK) ||
-	    (val & MDIO_PHY_DATA_MASK));
+	dat = MDIO_CMD_WR |
+	    ((phy << MDIO_PHY_ADDR_SHIFT) & MDIO_PHY_ADDR_MASK) |
+	    ((reg << MDIO_PHYREG_ADDR_SHIFT) & MDIO_PHYREG_ADDR_MASK) |
+	    (val & MDIO_PHY_DATA_MASK);
+	RT_WRITE(sc, MDIO_ACCESS, dat);
+	RT_WRITE(sc, MDIO_ACCESS, dat | MDIO_CMD_ONGO);
 	while (RT_READ(sc, MDIO_ACCESS) & MDIO_CMD_ONGO);
 
 	return (0);
 }
+#endif
 
+#ifdef IF_RT_PHY_SUPPORT
 void
 rt_miibus_statchg(device_t dev)
 {
@@ -2842,3 +2864,85 @@ DRIVER_MODULE(rt, simplebus, rt_driver, 
 MODULE_DEPEND(rt, ether, 1, 1, 1);
 MODULE_DEPEND(rt, miibus, 1, 1, 1);
 
+#ifdef RT_MDIO       
+MODULE_DEPEND(rt, mdio, 1, 1, 1);
+
+static int rtmdio_probe(device_t);
+static int rtmdio_attach(device_t);
+static int rtmdio_detach(device_t);
+
+static struct mtx miibus_mtx;
+
+MTX_SYSINIT(miibus_mtx, &miibus_mtx, "rt mii lock", MTX_DEF);
+
+/*
+ * Declare an additional, separate driver for accessing the MDIO bus.
+ */
+static device_method_t rtmdio_methods[] = {
+	/* Device interface */
+	DEVMETHOD(device_probe,         rtmdio_probe),
+	DEVMETHOD(device_attach,        rtmdio_attach),
+	DEVMETHOD(device_detach,        rtmdio_detach),
+
+	/* bus interface */
+	DEVMETHOD(bus_add_child,        device_add_child_ordered),
+
+	/* MDIO access */
+	DEVMETHOD(mdio_readreg,         rt_miibus_readreg),
+	DEVMETHOD(mdio_writereg,        rt_miibus_writereg),
+};
+
+DEFINE_CLASS_0(rtmdio, rtmdio_driver, rtmdio_methods,
+    sizeof(struct rt_softc));
+static devclass_t rtmdio_devclass;
+
+DRIVER_MODULE(miiproxy, rt, miiproxy_driver, miiproxy_devclass, 0, 0);
+DRIVER_MODULE(rtmdio, simplebus, rtmdio_driver, rtmdio_devclass, 0, 0);
+DRIVER_MODULE(mdio, rtmdio, mdio_driver, mdio_devclass, 0, 0);
+
+static int
+rtmdio_probe(device_t dev)
+{
+	if (!ofw_bus_status_okay(dev))
+		return (ENXIO);
+
+	if (!ofw_bus_is_compatible(dev, "ralink,rt2880-mdio"))
+		return (ENXIO);
+
+	device_set_desc(dev, "FV built-in ethernet interface, MDIO controller");
+	return(0);
+}
+
+static int
+rtmdio_attach(device_t dev)
+{
+	struct rt_softc	*sc;
+	int	error;
+
+	sc = device_get_softc(dev);
+	sc->dev = dev;
+	sc->mem_rid = 0;
+	sc->mem = bus_alloc_resource_any(dev, SYS_RES_MEMORY,
+	    &sc->mem_rid, RF_ACTIVE | RF_SHAREABLE);
+	if (sc->mem == NULL) {
+		device_printf(dev, "couldn't map memory\n");
+		error = ENXIO;
+		goto fail;
+	}
+
+	sc->bst = rman_get_bustag(sc->mem);
+	sc->bsh = rman_get_bushandle(sc->mem);
+
+        bus_generic_probe(dev);
+	bus_enumerate_hinted_children(dev);
+	error = bus_generic_attach(dev);
+fail:
+	return(error);
+}
+
+static int
+rtmdio_detach(device_t dev)
+{
+	return(0);
+}
+#endif

Modified: head/sys/dev/rt/if_rtreg.h
==============================================================================
--- head/sys/dev/rt/if_rtreg.h	Sat May  6 06:14:46 2017	(r317872)
+++ head/sys/dev/rt/if_rtreg.h	Sat May  6 06:20:34 2017	(r317873)
@@ -48,6 +48,10 @@
 #define	    MDIO_PHY_DATA_MASK	0x0000ffff
 #define	    MDIO_PHY_DATA_SHIFT	0
 
+#define	MDIO_CFG	0x04
+#define	    MDIO_2880_100T_INIT	0x1001BC01
+#define	    MDIO_2880_GIGA_INIT	0x1F01DC01
+
 #define	FE_GLO_CFG	0x08 /*Frame Engine Global Configuration */
 #define	    EXT_VLAN_TYPE_MASK	0xffff0000
 #define	    EXT_VLAN_TYPE_SHIFT	16

Added: head/sys/gnu/dts/mips/MZK-W04N-XX.dts
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sys/gnu/dts/mips/MZK-W04N-XX.dts	Sat May  6 06:20:34 2017	(r317873)
@@ -0,0 +1,94 @@
+/dts-v1/;
+
+#include "rt2880.dtsi"
+
+/ {
+	compatible = "MZK-WNH", "ralink,rt2880-soc";
+	model = "Planex MZK-WNH";
+
+/*
+	memory at 0 {
+		device_type = "memory";
+		reg = <0x0 0x2000000>;
+	};
+*/
+
+	cfi at 1f000000 {
+		compatible = "cfi-flash";
+		reg = <0x1f000000 0x800000>;
+		bank-width = <2>;
+		device-width = <2>;
+		#address-cells = <1>;
+		#size-cells = <1>;
+
+		partition at 0 {
+			label = "Bootloader";
+			reg = <0x0 0x30000>;
+			read-only;
+		};
+
+		devdata: partition at 30000 {
+			label = "Config";
+			reg = <0x00030000 0x00010000>;
+			read-only;
+		};
+
+		factory: partition at 40000 {
+			label = "Factory";
+			reg = <0x00040000 0x00010000>;
+			read-only;
+		};
+		kernel: partition at 50000 {
+			label = "kernel";
+			reg = <0x00050000 0x000f0000>;
+			read-only;
+		};
+		rootfs: partition at 160000 {
+			label = "rootfs";
+			reg = <0x00140000 0x002c0000>;
+			read-only;
+		};
+		upgrade: partition at 400000 {
+			label = "upgrade";
+			reg = <0x00050000 0x003b0000>;
+			read-only;
+		};
+
+	};
+
+	gpio-leds {
+		compatible = "gpio-leds";
+
+		status {
+			label = "status";
+			gpios = <&gpio0 12 0>;
+		};
+
+	};
+	gpio-keys-polled {
+		compatible = "gpio-keys-polled";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		poll-interval = <20>;
+
+		reset {
+			label = "reset";
+			gpios = <&gpio0 10 1>;
+			linux,code = <0x198>;
+		};
+
+	};
+
+	ip17x at 0 {
+		compatible = "icplus,ip17x";
+	};
+
+};
+
+&ethernet {
+	mtd-mac-address = <&factory 0x28>;
+};
+
+&wmac {
+	ralink,mtd-eeprom = <&factory 0>;
+};

Modified: head/sys/gnu/dts/mips/rt2880.dtsi
==============================================================================
--- head/sys/gnu/dts/mips/rt2880.dtsi	Sat May  6 06:14:46 2017	(r317872)
+++ head/sys/gnu/dts/mips/rt2880.dtsi	Sat May  6 06:20:34 2017	(r317873)
@@ -5,7 +5,7 @@
 
 	cpus {
 		cpu at 0 {
-			compatible = "mips,mips24KEc";
+			compatible = "mips,mips4KEc";
 		};
 	};
 
@@ -80,6 +80,9 @@
 			ralink,register-map = [ 00 04 08 0c
 						20 24 28 2c
 						30 34 ];
+
+			interrupt-parent = <&intc>;
+			interrupts = <7>;
 		};
 
 		gpio1: gpio at 638 {
@@ -182,13 +185,13 @@
 			compatible = "ralink,rt2880-port", "mediatek,eth-port";
 			reg = <0>;
 		};
+	};
 
-		mdio-bus {
-			#address-cells = <1>;
-			#size-cells = <0>;
-
-			status = "disabled";
-		};
+	mdio-bus {
+		compatible = "ralink,rt2880-mdio";
+		reg = <0x00400000 0x10000>;
+		#address-cells = <1>;
+		#size-cells = <0>;
 	};
 
 	wmac: wmac at 480000 {

Added: head/sys/mips/conf/RT2880_FDT
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sys/mips/conf/RT2880_FDT	Sat May  6 06:20:34 2017	(r317873)
@@ -0,0 +1,77 @@
+#
+# RT2880_FDT -- Kernel configuration file for FreeBSD/MIPS RT2880 SoC
+#
+# This includes all the configurable parts of the kernel.
+#
+# $FreeBSD$
+#
+
+#NO_UNIVERSE
+
+#
+# FDT_DTS_FILE should be modified to suit the target board type.
+#
+#makeoptions 	FDT_DTS_FILE=MZK-W04N-XX.dts
+
+# Start with a base configuration
+include 	"../mediatek/std.rt2880"
+
+ident 		RT2880
+cpu 		CPU_MIPS4KC
+
+# Don't build any modules by default
+makeoptions 	MODULES_OVERRIDE=""
+
+# Default rootfs device configuration, should be changed to suit target board
+options 	ROOTDEVNAME=\""ufs:md0.uzip\"
+
+# Support geom_uzip(4) compressed disk images
+device 		geom_map
+options 	GEOM_UZIP
+
+# Support md(4) and md-based rootfs
+device 		md
+options 	MD_ROOT
+
+# Interrupt controller support
+device 		mtk_intr_v1
+
+# UART device support
+nodevice 	uart_ns8250
+device 		uart_dev_mtk
+
+# SPI and SPI flash support
+device 		mtk_spi_v1
+device 		spibus
+device 		mx25l
+
+# CFI support
+device 		cfi
+device 		cfid
+
+# GPIO and gpioled support
+device 		mtk_gpio_v1
+device 		gpio
+device 		gpioled
+
+# USB (dwcotg) support
+device 		usb
+device 		mtk_usb_phy
+device 		dwcotg
+
+# USB umass(4) storage and da(4) support
+device 		umass
+device 		da
+
+# CAM support, required if umass(4) is enabled above
+device 		pass
+device 		scbus
+
+# Ethernet, BPF and bridge support
+device 		rt
+device 		bpf
+device 		if_bridge
+
+# Extres
+options		EXT_RESOURCES
+device 		clk

Modified: head/sys/mips/mediatek/mtk_machdep.c
==============================================================================
--- head/sys/mips/mediatek/mtk_machdep.c	Sat May  6 06:14:46 2017	(r317872)
+++ head/sys/mips/mediatek/mtk_machdep.c	Sat May  6 06:20:34 2017	(r317873)
@@ -146,7 +146,11 @@ mips_init(void)
 			    ctob(physmem) / (1024 * 1024));
 		}
 
-		if (ctob(physmem) < (448 * 1024 * 1024)) {
+		if (mtk_soc_get_socid() == MTK_SOC_RT2880) {
+			/* RT2880 memory start is 88000000 */
+			dump_avail[1] = phys_avail[1] = ctob(physmem)
+			    + 0x08000000;
+		} else if (ctob(physmem) < (448 * 1024 * 1024)) {
 			/*
 			 * Anything up to 448MB is assumed to be directly
 			 * mappable as low memory...

Modified: head/sys/mips/mediatek/mtk_soc.c
==============================================================================
--- head/sys/mips/mediatek/mtk_soc.c	Sat May  6 06:14:46 2017	(r317872)
+++ head/sys/mips/mediatek/mtk_soc.c	Sat May  6 06:20:34 2017	(r317873)
@@ -53,6 +53,7 @@ static uint32_t mtk_soc_cpuclk = MTK_CPU
 static uint32_t mtk_soc_timerclk = MTK_CPU_CLK_880MHZ / 2;
 
 static const struct ofw_compat_data compat_data[] = {
+	{ "ralink,rt2880-soc",		MTK_SOC_RT2880 },
 	{ "ralink,rt3050-soc",		MTK_SOC_RT3050 },
 	{ "ralink,rt3052-soc",		MTK_SOC_RT3052 },
 	{ "ralink,rt3350-soc",		MTK_SOC_RT3350 },
@@ -77,6 +78,30 @@ static const struct ofw_compat_data comp
 };
 
 static uint32_t
+mtk_detect_cpuclk_rt2880(bus_space_tag_t bst, bus_space_handle_t bsh)
+{
+	uint32_t val;
+
+	val = bus_space_read_4(bst, bsh, SYSCTL_SYSCFG);
+	val >>= RT2880_CPU_CLKSEL_OFF;
+	val &= RT2880_CPU_CLKSEL_MSK;
+
+	switch (val) {
+	case 0:
+		return (MTK_CPU_CLK_250MHZ);
+	case 1:
+		return (MTK_CPU_CLK_266MHZ);
+	case 2:
+		return (MTK_CPU_CLK_280MHZ);
+	case 3:
+		return (MTK_CPU_CLK_300MHZ);
+	}
+
+	/* Never reached */
+	return (0);
+}
+
+static uint32_t
 mtk_detect_cpuclk_rt305x(bus_space_tag_t bst, bus_space_handle_t bsh)
 {
 	uint32_t val;
@@ -260,7 +285,9 @@ mtk_soc_try_early_detect(void)
 	}
 
 	bst = fdtbus_bs_tag;
-	if (mtk_soc_socid == MTK_SOC_MT7621)
+	if (mtk_soc_socid == MTK_SOC_RT2880)
+		base = MTK_RT2880_BASE;
+	else if (mtk_soc_socid == MTK_SOC_MT7621)
 		base = MTK_MT7621_BASE;
 	else
 		base = MTK_DEFAULT_BASE;
@@ -270,6 +297,9 @@ mtk_soc_try_early_detect(void)
 
 	/* First, figure out the CPU clock */
 	switch (mtk_soc_socid) {
+	case MTK_SOC_RT2880:
+		mtk_soc_cpuclk = mtk_detect_cpuclk_rt2880(bst, bsh);
+		break;
 	case MTK_SOC_RT3050:  /* fallthrough */
 	case MTK_SOC_RT3052:
 	case MTK_SOC_RT3350:
@@ -327,6 +357,9 @@ mtk_soc_try_early_detect(void)
 	}
 
 	switch (mtk_soc_socid) {
+	case MTK_SOC_RT2880:
+		mtk_soc_uartclk = mtk_soc_cpuclk / MTK_UARTDIV_2;
+		break;
 	case MTK_SOC_RT3350:  /* fallthrough */
 	case MTK_SOC_RT3050:  /* fallthrough */
 	case MTK_SOC_RT3052:

Modified: head/sys/mips/mediatek/mtk_soc.h
==============================================================================
--- head/sys/mips/mediatek/mtk_soc.h	Sat May  6 06:14:46 2017	(r317872)
+++ head/sys/mips/mediatek/mtk_soc.h	Sat May  6 06:20:34 2017	(r317873)
@@ -32,6 +32,7 @@
 
 enum mtk_soc_id {
 	MTK_SOC_UNKNOWN,
+	MTK_SOC_RT2880,
 	MTK_SOC_RT3050,
 	MTK_SOC_RT3052,
 	MTK_SOC_RT3350,
@@ -47,6 +48,8 @@ enum mtk_soc_id {
 	MTK_SOC_MAX
 };
 
+#define RT2880_CPU_CLKSEL_OFF	20
+#define RT2880_CPU_CLKSEL_MSK	0x3
 #define RT305X_CPU_CLKSEL_OFF	18
 #define RT305X_CPU_CLKSEL_MSK	0x1
 #define RT3352_CPU_CLKSEL_OFF	8
@@ -91,7 +94,10 @@ enum mtk_soc_id {
 #define MTK_MHZ(x)		((x) * 1000 * 1000)
 
 #define MTK_CPU_CLK_UNKNOWN	0
+#define MTK_CPU_CLK_233MHZ	233333333
 #define MTK_CPU_CLK_250MHZ	250000000
+#define MTK_CPU_CLK_266MHZ	266666666
+#define MTK_CPU_CLK_280MHZ	280000000
 #define MTK_CPU_CLK_300MHZ	300000000
 #define MTK_CPU_CLK_320MHZ	320000000
 #define MTK_CPU_CLK_360MHZ	360000000
@@ -111,6 +117,7 @@ enum mtk_soc_id {
 #define MTK_UARTDIV_3		3
 
 #define MTK_DEFAULT_BASE	0x10000000
+#define MTK_RT2880_BASE		0x00300000
 #define MTK_MT7621_BASE		0x1e000000
 #define MTK_DEFAULT_SIZE	0x6000
 

Added: head/sys/mips/mediatek/std.rt2880
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sys/mips/mediatek/std.rt2880	Sat May  6 06:20:34 2017	(r317873)
@@ -0,0 +1,89 @@
+#
+# std.rt2880 -- Base kernel configuration file for FreeBSD/MIPS RT2800 SoC
+#
+# This includes all the required drivers for the SoCs.
+#
+# $FreeBSD$
+#
+
+# Include the standard file list for Mediatek SoCs.
+files 		"../mediatek/files.mediatek"
+
+# Building a mips/mipsel kernel
+machine 	mips mipsel
+
+# Little-endian machine
+makeoptions 	MIPS_LITTLE_ENDIAN=defined
+
+# Default kernel load address
+makeoptions 	KERNLOADADDR=0x88001000
+
+# Mediatek/Ralink SoC support depends on FDT (with static DTB for the moment)
+options 	FDT
+options 	FDT_DTB_STATIC
+
+# We rely on INTRNG code
+options 	INTRNG
+options 	MIPS_NIRQ=256
+
+# We rely on NEW_PCIB code
+options 	NEW_PCIB
+
+# Build kernel with gdb(1) debug symbols
+makeoptions 	DEBUG=-g
+
+# Support for DDB and KDB
+options 	DDB
+options 	KDB
+
+# Debugging for use in -current
+options 	INVARIANTS
+options 	INVARIANT_SUPPORT
+options 	WITNESS
+options 	WITNESS_SKIPSPIN
+options 	DEBUG_REDZONE
+options 	DEBUG_MEMGUARD
+
+# For small memory footprints
+options 	VM_KMEM_SIZE_SCALE=1
+
+# General options, including scheduler, etc.
+options 	SCHED_ULE	# ULE scheduler
+options 	INET		# InterNETworking
+#options 	INET6		# IPv6
+options 	PSEUDOFS	# Pseude-filesystem framework
+options 	FFS		# Berkeley Fast Filesystem
+#options 	SOFTUPDATES	# Enable FFS soft updates support
+#options 	UFS_ACL		# Support for access control lists
+#options 	UFS_DIRHASH	# Improve big directory performance
+#options 	MSDOSFS		# Enable support for MSDOS filesystems
+options 	_KPOSIX_PRIORITY_SCHEDULING	# Posix P1003_1B real-time ext.
+
+#
+# Standard drivers section
+#
+# The drivers in the following section are required in order to successfully
+# compile the kernel.
+#
+
+# FDT clock and pinctrl framework
+device 		fdt_clock
+device 		fdt_pinctrl
+
+# UART support
+device 		uart
+
+# random support
+device 		random
+
+# loop device support
+device 		loop
+
+# ether device support
+device 		ether
+
+# ether switch support
+#device 		etherswitch
+#device 		miibus
+#device 		ip17x
+#device 		mdio


More information about the svn-src-all mailing list