Page MenuHomeFreeBSD

D5580.id15118.diff
No OneTemporary

D5580.id15118.diff

Index: release/arm/BANANAPI.conf
===================================================================
--- release/arm/BANANAPI.conf
+++ release/arm/BANANAPI.conf
@@ -7,7 +7,7 @@
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"
Index: release/arm/CUBIEBOARD2.conf
===================================================================
--- release/arm/CUBIEBOARD2.conf
+++ release/arm/CUBIEBOARD2.conf
@@ -7,7 +7,7 @@
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"
Index: sys/arm/allwinner/a10_padconf.c
===================================================================
--- sys/arm/allwinner/a10_padconf.c
+++ sys/arm/allwinner/a10_padconf.c
@@ -35,6 +35,8 @@
#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 @@
.npins = sizeof(a10_pins) / sizeof(struct allwinner_pins),
.pins = a10_pins,
};
+
+#endif /* SOC_ALLWINNER_A10 */
Index: sys/arm/allwinner/a20/a20_if_dwc.c
===================================================================
--- /dev/null
+++ sys/arm/allwinner/a20/a20_if_dwc.c
@@ -1,145 +0,0 @@
-/*-
- * Copyright (c) 2015 Luiz Otavio O Souza <loos@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", &reg) == 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);
Index: sys/arm/allwinner/a20/a20_padconf.c
===================================================================
--- sys/arm/allwinner/a20/a20_padconf.c
+++ sys/arm/allwinner/a20/a20_padconf.c
@@ -35,6 +35,8 @@
#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 @@
.npins = sizeof(a20_pins) / sizeof(struct allwinner_pins),
.pins = a20_pins,
};
+
+#endif /* SOC_ALLWINNER_A20 */
Index: sys/arm/allwinner/a20/files.a20
===================================================================
--- sys/arm/allwinner/a20/files.a20
+++ sys/arm/allwinner/a20/files.a20
@@ -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
Index: sys/arm/allwinner/a31/a31_padconf.c
===================================================================
--- sys/arm/allwinner/a31/a31_padconf.c
+++ sys/arm/allwinner/a31/a31_padconf.c
@@ -35,6 +35,8 @@
#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 @@
.npins = nitems(a31_pins),
.pins = a31_pins,
};
+
+#endif /* SOC_ALLWINNER_A31 */
Index: sys/arm/allwinner/a31/a31s_padconf.c
===================================================================
--- sys/arm/allwinner/a31/a31s_padconf.c
+++ sys/arm/allwinner/a31/a31s_padconf.c
@@ -35,6 +35,8 @@
#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 @@
.npins = nitems(a31s_pins),
.pins = a31s_pins,
};
+
+#endif /* SOC_ALLWINNER_A31S */
Index: sys/arm/allwinner/a31/files.a31
===================================================================
--- /dev/null
+++ sys/arm/allwinner/a31/files.a31
@@ -0,0 +1,4 @@
+# $FreeBSD$
+
+arm/allwinner/a31/a31_padconf.c standard
+arm/allwinner/a31/a31s_padconf.c standard
Index: sys/arm/allwinner/a31/std.a31
===================================================================
--- /dev/null
+++ sys/arm/allwinner/a31/std.a31
@@ -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"
Index: sys/arm/allwinner/files.allwinner
===================================================================
--- sys/arm/allwinner/files.allwinner
+++ sys/arm/allwinner/files.allwinner
@@ -14,8 +14,10 @@
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/if_gmac.c optional dwc
arm/allwinner/sunxi_dma_if.m standard
dev/iicbus/twsi/a10_twsi.c optional twsi
#arm/allwinner/console.c standard
Index: sys/arm/allwinner/std.allwinner
===================================================================
--- /dev/null
+++ sys/arm/allwinner/std.allwinner
@@ -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"
Index: sys/arm/conf/ALLWINNER
===================================================================
--- sys/arm/conf/ALLWINNER
+++ sys/arm/conf/ALLWINNER
@@ -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,15 @@
#
# $FreeBSD$
-ident A20
+ident ALLWINNER
include "std.armv6"
-include "../allwinner/a20/std.a20"
+include "../allwinner/std.allwinner"
options ARM_INTRNG
options SOC_ALLWINNER_A20
+options SOC_ALLWINNER_A31
options HZ=100
options SCHED_ULE # ULE scheduler
@@ -56,7 +57,7 @@
#options BOOTP_WIRED_TO=dwc0
# EXT_RESOURCES pseudo devices
-options EXT_RESOURCES
+options EXT_RESOURCES
device clk
device phy
device hwreset
@@ -125,9 +126,6 @@
# Sound support
device sound
-# Pinmux
-device fdt_pinctrl
-
# Framebuffer support
device vt
device kbdmux
@@ -136,6 +134,9 @@
device videomode
device hdmi
+# Pinmux
+device fdt_pinctrl
+
# Flattened Device Tree
options FDT # Configure using FDT/DTB data
makeoptions MODULES_EXTRA=dtb/allwinner
Index: sys/boot/fdt/dts/arm/bananapim2.dts
===================================================================
--- /dev/null
+++ sys/boot/fdt/dts/arm/bananapim2.dts
@@ -0,0 +1,33 @@
+/*-
+ * Copyright (c) 2016 Emmanuel Vadot <manu@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";
+};
Index: sys/modules/dtb/allwinner/Makefile
===================================================================
--- sys/modules/dtb/allwinner/Makefile
+++ sys/modules/dtb/allwinner/Makefile
@@ -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 \

File Metadata

Mime Type
text/plain
Expires
Thu, Oct 16, 8:36 PM (49 m, 1 s)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
23803777
Default Alt Text
D5580.id15118.diff (12 KB)

Event Timeline