svn commit: r298422 - in head: release/arm sys/arm/allwinner sys/arm/allwinner/a20 sys/arm/allwinner/a31 sys/arm/conf sys/boot/fdt/dts/arm sys/modules/dtb/allwinner
Jared McNeill
jmcneill at FreeBSD.org
Thu Apr 21 16:49:07 UTC 2016
Author: jmcneill
Date: Thu Apr 21 16:49:04 2016
New Revision: 298422
URL: https://svnweb.freebsd.org/changeset/base/298422
Log:
Replace the A20 kernel config with a generic ALLWINNER kernel config that
supports A20, A31, and A31S. Adds support for the BananaPi M2 (A31S) board.
Submitted by: Emmanuel Vadot <manu at bidouilliste.com>
Reviewed by: jmcneill
Differential Revision: https://reviews.freebsd.org/D5580
Added:
head/sys/arm/allwinner/a31/files.a31 (contents, props changed)
head/sys/arm/allwinner/a31/std.a31 (contents, props changed)
head/sys/arm/allwinner/aw_if_dwc.c
- copied unchanged from r298421, head/sys/arm/allwinner/a20/a20_if_dwc.c
head/sys/arm/allwinner/std.allwinner (contents, props changed)
head/sys/arm/conf/ALLWINNER
- copied, changed from r298421, head/sys/arm/conf/A20
head/sys/boot/fdt/dts/arm/bananapim2.dts (contents, props changed)
Deleted:
head/sys/arm/allwinner/a20/a20_if_dwc.c
head/sys/arm/conf/A20
Modified:
head/release/arm/BANANAPI.conf
head/release/arm/CUBIEBOARD2.conf
head/sys/arm/allwinner/a10_padconf.c
head/sys/arm/allwinner/a20/a20_padconf.c
head/sys/arm/allwinner/a20/files.a20
head/sys/arm/allwinner/a31/a31_padconf.c
head/sys/arm/allwinner/a31/a31s_padconf.c
head/sys/arm/allwinner/files.allwinner
head/sys/modules/dtb/allwinner/Makefile
Modified: head/release/arm/BANANAPI.conf
==============================================================================
--- head/release/arm/BANANAPI.conf Thu Apr 21 16:43:36 2016 (r298421)
+++ head/release/arm/BANANAPI.conf Thu Apr 21 16:49:04 2016 (r298422)
@@ -7,7 +7,7 @@ EMBEDDEDBUILD=1
EMBEDDED_TARGET="arm"
EMBEDDED_TARGET_ARCH="armv6"
EMBEDDEDPORTS="sysutils/u-boot-bananapi"
-KERNEL="A20"
+KERNEL="ALLWINNER"
WORLD_FLAGS="${WORLD_FLAGS} UBLDR_LOADADDR=0x42000000"
IMAGE_SIZE="1G"
PART_SCHEME="MBR"
Modified: head/release/arm/CUBIEBOARD2.conf
==============================================================================
--- head/release/arm/CUBIEBOARD2.conf Thu Apr 21 16:43:36 2016 (r298421)
+++ head/release/arm/CUBIEBOARD2.conf Thu Apr 21 16:49:04 2016 (r298422)
@@ -7,7 +7,7 @@ EMBEDDEDBUILD=1
EMBEDDED_TARGET="arm"
EMBEDDED_TARGET_ARCH="armv6"
EMBEDDEDPORTS="sysutils/u-boot-cubieboard2"
-KERNEL="A20"
+KERNEL="ALLWINNER"
WORLD_FLAGS="${WORLD_FLAGS} UBLDR_LOADADDR=0x42000000"
IMAGE_SIZE="1G"
PART_SCHEME="MBR"
Modified: head/sys/arm/allwinner/a10_padconf.c
==============================================================================
--- head/sys/arm/allwinner/a10_padconf.c Thu Apr 21 16:43:36 2016 (r298421)
+++ head/sys/arm/allwinner/a10_padconf.c Thu Apr 21 16:49:04 2016 (r298422)
@@ -35,6 +35,8 @@ __FBSDID("$FreeBSD$");
#include <arm/allwinner/allwinner_pinctrl.h>
+#ifdef SOC_ALLWINNER_A10
+
const static struct allwinner_pins a10_pins[] = {
{"PA0", 0, 0, {"gpio_in", "gpio_out", "emac", "spi1", "uart2", NULL, NULL, NULL}},
{"PA1", 0, 1, {"gpio_in", "gpio_out", "emac", "spi1", "uart2", NULL, NULL, NULL}},
@@ -225,3 +227,5 @@ const struct allwinner_padconf a10_padco
.npins = sizeof(a10_pins) / sizeof(struct allwinner_pins),
.pins = a10_pins,
};
+
+#endif /* SOC_ALLWINNER_A10 */
Modified: head/sys/arm/allwinner/a20/a20_padconf.c
==============================================================================
--- head/sys/arm/allwinner/a20/a20_padconf.c Thu Apr 21 16:43:36 2016 (r298421)
+++ head/sys/arm/allwinner/a20/a20_padconf.c Thu Apr 21 16:49:04 2016 (r298422)
@@ -35,6 +35,8 @@ __FBSDID("$FreeBSD$");
#include <arm/allwinner/allwinner_pinctrl.h>
+#ifdef SOC_ALLWINNER_A20
+
const static struct allwinner_pins a20_pins[] = {
{"PA0", 0, 0, {"gpio_in", "gpio_out", "emac", "spi1", "uart2", "gmac", NULL, NULL}},
{"PA1", 0, 1, {"gpio_in", "gpio_out", "emac", "spi1", "uart2", "gmac", NULL, NULL}},
@@ -225,3 +227,5 @@ const struct allwinner_padconf a20_padco
.npins = sizeof(a20_pins) / sizeof(struct allwinner_pins),
.pins = a20_pins,
};
+
+#endif /* SOC_ALLWINNER_A20 */
Modified: head/sys/arm/allwinner/a20/files.a20
==============================================================================
--- head/sys/arm/allwinner/a20/files.a20 Thu Apr 21 16:43:36 2016 (r298421)
+++ head/sys/arm/allwinner/a20/files.a20 Thu Apr 21 16:49:04 2016 (r298422)
@@ -1,5 +1,3 @@
# $FreeBSD$
arm/allwinner/a20/a20_padconf.c standard
-arm/allwinner/aw_mp.c optional smp
-arm/allwinner/a20/a20_if_dwc.c optional dwc
Modified: head/sys/arm/allwinner/a31/a31_padconf.c
==============================================================================
--- head/sys/arm/allwinner/a31/a31_padconf.c Thu Apr 21 16:43:36 2016 (r298421)
+++ head/sys/arm/allwinner/a31/a31_padconf.c Thu Apr 21 16:49:04 2016 (r298422)
@@ -35,6 +35,8 @@ __FBSDID("$FreeBSD$");
#include <arm/allwinner/allwinner_pinctrl.h>
+#ifdef SOC_ALLWINNER_A31
+
const static struct allwinner_pins a31_pins[] = {
{"PA0", 0, 0, {"gpio_in", "gpio_out", "gmac", "lcd1", "uart1", NULL, NULL, NULL}},
{"PA1", 0, 1, {"gpio_in", "gpio_out", "gmac", "lcd1", "uart1", NULL, NULL, NULL}},
@@ -214,3 +216,5 @@ const struct allwinner_padconf a31_padco
.npins = nitems(a31_pins),
.pins = a31_pins,
};
+
+#endif /* SOC_ALLWINNER_A31 */
Modified: head/sys/arm/allwinner/a31/a31s_padconf.c
==============================================================================
--- head/sys/arm/allwinner/a31/a31s_padconf.c Thu Apr 21 16:43:36 2016 (r298421)
+++ head/sys/arm/allwinner/a31/a31s_padconf.c Thu Apr 21 16:49:04 2016 (r298422)
@@ -35,6 +35,8 @@ __FBSDID("$FreeBSD$");
#include <arm/allwinner/allwinner_pinctrl.h>
+#ifdef SOC_ALLWINNER_A31S
+
const static struct allwinner_pins a31s_pins[] = {
{"PA0", 0, 0, {"gpio_in", "gpio_out", "gmac", NULL, "uart1", NULL, NULL, NULL}},
{"PA1", 0, 1, {"gpio_in", "gpio_out", "gmac", NULL, "uart1", NULL, NULL, NULL}},
@@ -194,3 +196,5 @@ const struct allwinner_padconf a31s_padc
.npins = nitems(a31s_pins),
.pins = a31s_pins,
};
+
+#endif /* SOC_ALLWINNER_A31S */
Added: head/sys/arm/allwinner/a31/files.a31
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/sys/arm/allwinner/a31/files.a31 Thu Apr 21 16:49:04 2016 (r298422)
@@ -0,0 +1,4 @@
+# $FreeBSD$
+
+arm/allwinner/a31/a31_padconf.c standard
+arm/allwinner/a31/a31s_padconf.c standard
Added: head/sys/arm/allwinner/a31/std.a31
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/sys/arm/allwinner/a31/std.a31 Thu Apr 21 16:49:04 2016 (r298422)
@@ -0,0 +1,15 @@
+# Allwinner A31 common options
+#$FreeBSD$
+
+cpu CPU_CORTEXA
+machine arm armv6
+makeoptions CONF_CFLAGS="-march=armv7a"
+
+makeoptions KERNVIRTADDR=0xc0200000
+options KERNVIRTADDR=0xc0200000
+
+options IPI_IRQ_START=0
+options IPI_IRQ_END=15
+
+files "../allwinner/files.allwinner"
+files "../allwinner/a31/files.a31"
Copied: head/sys/arm/allwinner/aw_if_dwc.c (from r298421, head/sys/arm/allwinner/a20/a20_if_dwc.c)
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/sys/arm/allwinner/aw_if_dwc.c Thu Apr 21 16:49:04 2016 (r298422, copy of r298421, head/sys/arm/allwinner/a20/a20_if_dwc.c)
@@ -0,0 +1,145 @@
+/*-
+ * Copyright (c) 2015 Luiz Otavio O Souza <loos at FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/bus.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+
+#include <machine/bus.h>
+
+#include <dev/dwc/if_dwc.h>
+#include <dev/dwc/if_dwcvar.h>
+#include <dev/ofw/ofw_bus.h>
+#include <dev/ofw/ofw_bus_subr.h>
+
+#include <arm/allwinner/allwinner_machdep.h>
+#include <dev/extres/clk/clk.h>
+#include <dev/extres/regulator/regulator.h>
+
+#include "if_dwc_if.h"
+
+static int
+a20_if_dwc_probe(device_t dev)
+{
+
+ if (!ofw_bus_status_okay(dev))
+ return (ENXIO);
+ if (!ofw_bus_is_compatible(dev, "allwinner,sun7i-a20-gmac"))
+ return (ENXIO);
+ device_set_desc(dev, "A20 Gigabit Ethernet Controller");
+
+ return (BUS_PROBE_DEFAULT);
+}
+
+static int
+a20_if_dwc_init(device_t dev)
+{
+ const char *tx_parent_name;
+ char *phy_type;
+ clk_t clk_tx, clk_tx_parent;
+ regulator_t reg;
+ phandle_t node;
+ int error;
+
+ node = ofw_bus_get_node(dev);
+
+ /* Configure PHY for MII or RGMII mode */
+ if (OF_getprop_alloc(node, "phy-mode", 1, (void **)&phy_type)) {
+ error = clk_get_by_ofw_name(dev, "allwinner_gmac_tx", &clk_tx);
+ if (error != 0) {
+ device_printf(dev, "could not get tx clk\n");
+ return (error);
+ }
+
+ if (strcmp(phy_type, "rgmii") == 0)
+ tx_parent_name = "gmac_int_tx";
+ else
+ tx_parent_name = "mii_phy_tx";
+
+ error = clk_get_by_name(dev, tx_parent_name, &clk_tx_parent);
+ if (error != 0) {
+ device_printf(dev, "could not get clock '%s'\n",
+ tx_parent_name);
+ return (error);
+ }
+
+ error = clk_set_parent_by_clk(clk_tx, clk_tx_parent);
+ if (error != 0) {
+ device_printf(dev, "could not set tx clk parent\n");
+ return (error);
+ }
+ }
+
+ /* Enable PHY regulator if applicable */
+ if (regulator_get_by_ofw_property(dev, "phy-supply", ®) == 0) {
+ error = regulator_enable(reg);
+ if (error != 0) {
+ device_printf(dev, "could not enable PHY regulator\n");
+ return (error);
+ }
+ }
+
+ return (0);
+}
+
+static int
+a20_if_dwc_mac_type(device_t dev)
+{
+
+ return (DWC_GMAC_ALT_DESC);
+}
+
+static int
+a20_if_dwc_mii_clk(device_t dev)
+{
+
+ return (GMAC_MII_CLK_150_250M_DIV102);
+}
+
+static device_method_t a20_dwc_methods[] = {
+ DEVMETHOD(device_probe, a20_if_dwc_probe),
+
+ DEVMETHOD(if_dwc_init, a20_if_dwc_init),
+ DEVMETHOD(if_dwc_mac_type, a20_if_dwc_mac_type),
+ DEVMETHOD(if_dwc_mii_clk, a20_if_dwc_mii_clk),
+
+ DEVMETHOD_END
+};
+
+static devclass_t a20_dwc_devclass;
+
+extern driver_t dwc_driver;
+
+DEFINE_CLASS_1(dwc, a20_dwc_driver, a20_dwc_methods, sizeof(struct dwc_softc),
+ dwc_driver);
+DRIVER_MODULE(a20_dwc, simplebus, a20_dwc_driver, a20_dwc_devclass, 0, 0);
+
+MODULE_DEPEND(a20_dwc, dwc, 1, 1, 1);
Modified: head/sys/arm/allwinner/files.allwinner
==============================================================================
--- head/sys/arm/allwinner/files.allwinner Thu Apr 21 16:43:36 2016 (r298421)
+++ head/sys/arm/allwinner/files.allwinner Thu Apr 21 16:49:04 2016 (r298422)
@@ -10,10 +10,12 @@ arm/allwinner/aw_usbphy.c optional ehci
arm/allwinner/a10_gpio.c optional gpio
arm/allwinner/a10_mmc.c optional mmc
arm/allwinner/a10_sramc.c standard
+arm/allwinner/aw_if_dwc.c optional dwc
arm/allwinner/aw_rtc.c standard
arm/allwinner/aw_wdog.c standard
arm/allwinner/a20/a20_cpu_cfg.c standard
arm/allwinner/allwinner_machdep.c standard
+arm/allwinner/aw_mp.c optional smp
arm/allwinner/axp209.c optional axp209
arm/allwinner/if_emac.c optional emac
arm/allwinner/sunxi_dma_if.m standard
Added: head/sys/arm/allwinner/std.allwinner
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/sys/arm/allwinner/std.allwinner Thu Apr 21 16:49:04 2016 (r298422)
@@ -0,0 +1,16 @@
+# Allwinner common options
+#$FreeBSD$
+
+cpu CPU_CORTEXA
+machine arm armv6
+makeoptions CONF_CFLAGS="-march=armv7a"
+
+makeoptions KERNVIRTADDR=0xc0200000
+options KERNVIRTADDR=0xc0200000
+
+options IPI_IRQ_START=0
+options IPI_IRQ_END=15
+
+files "../allwinner/files.allwinner"
+files "../allwinner/a20/files.a20"
+files "../allwinner/a31/files.a31"
Copied and modified: head/sys/arm/conf/ALLWINNER (from r298421, head/sys/arm/conf/A20)
==============================================================================
--- head/sys/arm/conf/A20 Thu Apr 21 16:43:36 2016 (r298421, copy source)
+++ head/sys/arm/conf/ALLWINNER Thu Apr 21 16:49:04 2016 (r298422)
@@ -1,5 +1,5 @@
#
-# A20 -- Custom configuration for the Allwinner A20 ARM SoC
+# ALLWINNER -- Custom configuration for the Allwinner A20 and A31 ARM SoC
#
# For more information on this file, please read the config(5) manual page,
# and/or the handbook section on Kernel Configuration Files:
@@ -18,14 +18,16 @@
#
# $FreeBSD$
-ident A20
+ident ALLWINNER
include "std.armv6"
-include "../allwinner/a20/std.a20"
+include "../allwinner/std.allwinner"
options INTRNG
options SOC_ALLWINNER_A20
+options SOC_ALLWINNER_A31
+options SOC_ALLWINNER_A31S
options HZ=100
options SCHED_ULE # ULE scheduler
@@ -56,7 +58,7 @@ options WITNESS_SKIPSPIN # Don't run wi
#options BOOTP_WIRED_TO=dwc0
# EXT_RESOURCES pseudo devices
-options EXT_RESOURCES
+options EXT_RESOURCES
device clk
device phy
device hwreset
@@ -125,9 +127,6 @@ device miibus
# Sound support
device sound
-# Pinmux
-device fdt_pinctrl
-
# Framebuffer support
device vt
device kbdmux
@@ -136,6 +135,9 @@ device ukbd
device videomode
device hdmi
+# Pinmux
+device fdt_pinctrl
+
# Flattened Device Tree
options FDT # Configure using FDT/DTB data
makeoptions MODULES_EXTRA=dtb/allwinner
Added: head/sys/boot/fdt/dts/arm/bananapim2.dts
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/sys/boot/fdt/dts/arm/bananapim2.dts Thu Apr 21 16:49:04 2016 (r298422)
@@ -0,0 +1,33 @@
+/*-
+ * Copyright (c) 2016 Emmanuel Vadot <manu at bidouilliste.com>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include "sun6i-a31s-sinovoip-bpi-m2.dts"
+
+&mmc2 {
+ status = "disabled";
+};
Modified: head/sys/modules/dtb/allwinner/Makefile
==============================================================================
--- head/sys/modules/dtb/allwinner/Makefile Thu Apr 21 16:43:36 2016 (r298421)
+++ head/sys/modules/dtb/allwinner/Makefile Thu Apr 21 16:49:04 2016 (r298422)
@@ -2,6 +2,7 @@
# All the dts files for allwinner systems we support.
DTS= \
bananapi.dts \
+ bananapim2.dts \
cubieboard.dts \
cubieboard2.dts \
olimex-a20-som-evb.dts \
More information about the svn-src-head
mailing list