From owner-svn-src-all@freebsd.org Wed Oct 16 00:38:51 2019 Return-Path: Delivered-To: svn-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id F1821157E80; Wed, 16 Oct 2019 00:38:51 +0000 (UTC) (envelope-from jhibbits@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 46tD1l5vC8z42PT; Wed, 16 Oct 2019 00:38:51 +0000 (UTC) (envelope-from jhibbits@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id AA1FF26D0F; Wed, 16 Oct 2019 00:38:51 +0000 (UTC) (envelope-from jhibbits@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id x9G0cp16072023; Wed, 16 Oct 2019 00:38:51 GMT (envelope-from jhibbits@FreeBSD.org) Received: (from jhibbits@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x9G0cpCi072019; Wed, 16 Oct 2019 00:38:51 GMT (envelope-from jhibbits@FreeBSD.org) Message-Id: <201910160038.x9G0cpCi072019@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jhibbits set sender to jhibbits@FreeBSD.org using -f From: Justin Hibbits Date: Wed, 16 Oct 2019 00:38:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r353603 - in head/sys: conf powerpc/amigaone X-SVN-Group: head X-SVN-Commit-Author: jhibbits X-SVN-Commit-Paths: in head/sys: conf powerpc/amigaone X-SVN-Commit-Revision: 353603 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Oct 2019 00:38:52 -0000 Author: jhibbits Date: Wed Oct 16 00:38:50 2019 New Revision: 353603 URL: https://svnweb.freebsd.org/changeset/base/353603 Log: powerpc: Add AmigaOne platform, a subclass of MPC85xx Summary: The AmigaOne platform, encompassing the X5000 and A1222 at this time, is based on the mpc85xx platform, but includes some things not listed in the device tree. Some custom devices, like CPLD, could be added to the device tree with an overlay, or other means. However, some cannot easily be done, such as the power button interrupt. The directory will also become a location to add AmigaOne platform drivers, such as the aforementioned CPLD, and its children. Reviewed by: bdragon Differential Revision: https://reviews.freebsd.org/D21829 Added: head/sys/powerpc/amigaone/ head/sys/powerpc/amigaone/platform_amigaone.c (contents, props changed) Modified: head/sys/conf/files.powerpc head/sys/conf/options.powerpc Modified: head/sys/conf/files.powerpc ============================================================================== --- head/sys/conf/files.powerpc Wed Oct 16 00:13:27 2019 (r353602) +++ head/sys/conf/files.powerpc Wed Oct 16 00:38:50 2019 (r353603) @@ -107,6 +107,7 @@ powerpc/aim/moea64_if.m optional aim powerpc/aim/moea64_native.c optional aim powerpc/aim/mp_cpudep.c optional aim powerpc/aim/slb.c optional aim powerpc64 +powerpc/amigaone/platform_amigaone.c optional amigaone powerpc/booke/locore.S optional booke no-obj powerpc/booke/booke_machdep.c optional booke powerpc/booke/machdep_e500.c optional booke_e500 Modified: head/sys/conf/options.powerpc ============================================================================== --- head/sys/conf/options.powerpc Wed Oct 16 00:13:27 2019 (r353602) +++ head/sys/conf/options.powerpc Wed Oct 16 00:38:50 2019 (r353603) @@ -20,6 +20,8 @@ GFB_NO_FONT_LOADING opt_gfb.h GFB_NO_MODE_CHANGE opt_gfb.h MOEA64_STATS opt_pmap.h +AMIGAONE opt_platform.h +MIKROTIK opt_platform.h MPC85XX opt_platform.h POWERMAC opt_platform.h PS3 opt_platform.h @@ -35,4 +37,3 @@ OFWCONS_POLL_HZ opt_ofw.h # AGP debugging support AGP_DEBUG opt_agp.h -MIKROTIK Added: head/sys/powerpc/amigaone/platform_amigaone.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/powerpc/amigaone/platform_amigaone.c Wed Oct 16 00:38:50 2019 (r353603) @@ -0,0 +1,123 @@ +/*- + * Copyright (c) 2019 Justin Hibbits + * + * 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 ``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 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 +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include + +#include "platform_if.h" + +static void aeon_pbutton_intr(void *_unused); +static void aeon_setup_intr(void *unused); + +static int aeon_probe(platform_t); +static int aeon_attach(platform_t); + +static platform_method_t aeon_methods[] = { + PLATFORMMETHOD(platform_probe, aeon_probe), + PLATFORMMETHOD(platform_attach, aeon_attach), + PLATFORMMETHOD_END +}; + +DEFINE_CLASS_1(aeon, aeon_platform, aeon_methods, 0, mpc85xx_platform); + +PLATFORM_DEF(aeon_platform); + +static bool is_aeon; + +static int +aeon_probe(platform_t plat) +{ + phandle_t rootnode; + char model[32]; + + rootnode = OF_finddevice("/"); + + if (OF_getprop(rootnode, "model", model, sizeof(model)) > 0) { + if (strncmp(model, "varisys,", strlen("varisys,")) == 0) + return (BUS_PROBE_SPECIFIC); + } + + return (ENXIO); +} + +static int +aeon_attach(platform_t plat) +{ + int error; + + error = mpc85xx_attach(plat); + if (error) + return (error); + + is_aeon = true; + + return (0); +} + +/* Notify devd(8) that the power button was pressed (IRQ#4 on A-Eon machines). */ +static void +aeon_pbutton_intr(void *_unused) +{ + devctl_notify("AEON", "power", "press", NULL); +} + +/* Manually configure the power button IRQ handler. */ +static void +aeon_setup_intr(void *unused) +{ + int irq; + + if (!is_aeon) + return; + + if (bootverbose) + printf("Configuring AmigaOne power button.\n"); + + irq = 4; /* From TRM, IRQ4 is raised when power button is pressed. */ + + /* Get us the root PIC. */ + irq = MAP_IRQ(0, irq); + powerpc_config_intr(irq, INTR_TRIGGER_EDGE, INTR_POLARITY_LOW); + powerpc_setup_intr("power_button", irq, NULL, aeon_pbutton_intr, NULL, + INTR_TYPE_MISC, NULL, 0); +} + +SYSINIT(aeon_setup_intr, SI_SUB_CONFIGURE, SI_ORDER_ANY, aeon_setup_intr, NULL);