From patchwork Fri Jan 11 22:31:15 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Horatiu Vultur X-Patchwork-Id: 1023798 X-Patchwork-Delegate: daniel.schwierzeck@googlemail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=microchip.com Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 43bz2z6L4Xz9sCr for ; Sat, 12 Jan 2019 10:04:43 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 6043DC2222B; Fri, 11 Jan 2019 23:04:42 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAD_ENC_HEADER, SPF_HELO_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 7321FC21D4A; Fri, 11 Jan 2019 23:04:36 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 54EBAC21D4A; Fri, 11 Jan 2019 23:04:35 +0000 (UTC) Received: from NAM05-BY2-obe.outbound.protection.outlook.com (mail-eopbgr710056.outbound.protection.outlook.com [40.107.71.56]) by lists.denx.de (Postfix) with ESMTPS id 4C7D6C21C38 for ; Fri, 11 Jan 2019 23:04:34 +0000 (UTC) Received: from DM5PR19CA0044.namprd19.prod.outlook.com (2603:10b6:3:9a::30) by BN8PR19MB2755.namprd19.prod.outlook.com (2603:10b6:408:87::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1516.18; Fri, 11 Jan 2019 23:04:31 +0000 Received: from BY2FFO11FD016.protection.gbl (2a01:111:f400:7c0c::111) by DM5PR19CA0044.outlook.office365.com (2603:10b6:3:9a::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1516.13 via Frontend Transport; Fri, 11 Jan 2019 23:04:31 +0000 Received-SPF: SoftFail (protection.outlook.com: domain of transitioning microchip.com discourages use of 208.19.99.223 as permitted sender) Received: from AUSMBX3.microsemi.net (208.19.99.223) by BY2FFO11FD016.mail.protection.outlook.com (10.1.14.148) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.20.1471.13 via Frontend Transport; Fri, 11 Jan 2019 23:04:30 +0000 Received: from AUSMBX2.microsemi.net (10.201.34.32) by AUSMBX3.microsemi.net (10.201.34.33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1531.3; Fri, 11 Jan 2019 16:34:21 -0600 Received: from xrelay.vitesse.com (10.9.45.188) by ausmbx2.microsemi.net (10.201.34.32) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1531.3 via Frontend Transport; Fri, 11 Jan 2019 16:34:20 -0600 Received: from soft-dev3.microsemi.net (soft-dev3.microsemi.net [10.205.27.16]) by xrelay.vitesse.com (8.13.8/8.13.8) with ESMTP id x0BMWMCo018804; Fri, 11 Jan 2019 14:34:09 -0800 From: Horatiu Vultur To: Date: Fri, 11 Jan 2019 23:31:15 +0100 Message-ID: <1547245880-23438-2-git-send-email-horatiu.vultur@microchip.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1547245880-23438-1-git-send-email-horatiu.vultur@microchip.com> References: <1547245880-23438-1-git-send-email-horatiu.vultur@microchip.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131917214709524784; (5a93feec-e11d-4f7b-166a-08d09f1f276b); () X-Forefront-Antispam-Report: CIP:208.19.99.223; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(136003)(346002)(396003)(376002)(39860400002)(2980300002)(189003)(199004)(5660300001)(77096007)(26005)(4326008)(6346003)(53936002)(53416004)(68736007)(76176011)(107886003)(51416003)(105596002)(498600001)(48376002)(97736004)(50466002)(106466001)(6916009)(30864003)(2906002)(50226002)(8676002)(81156014)(81166006)(8936002)(36756003)(2351001)(6666004)(356004)(305945005)(47776003)(44832011)(86362001)(575784001)(336012)(69596002)(476003)(316002)(486006)(54906003)(2616005)(126002)(11346002)(446003)(16586007); DIR:OUT; SFP:1101; SCL:1; SRVR:BN8PR19MB2755; H:AUSMBX3.microsemi.net; FPR:; SPF:SoftFail; LANG:en; PTR:InfoDomainNonexistent; MX:1; A:1; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD016; 1:X63v2XSMNgK0r+ZlbDe7Nob5CG2T8rNr8C0yHgU8fgeuSel7E0itRHo0LmTIgXRn44dFdXMGvz0NlqUeb851uP+z+WKyJxGoruqqmsVGKDN7ul43ugYqL27f/aiC74Oh X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0b0d9753-9a10-4ff8-1394-08d6781924e9 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(5600109)(711020)(2017052603328); SRVR:BN8PR19MB2755; X-Microsoft-Exchange-Diagnostics: 1; BN8PR19MB2755; 3:l547yeg0HV4poyhtrNLdNSlKqNFbwaXHheiDhUCbab2Q3MXuHFFLM/qATPhlZ9+mBKJovjrwkKcY1ofDiAW36iDWZbolRtpLTL+aP+V45FWe4vVZkPcj1lueKr5VOpDQ9tCYlM73/wFv6R2BfoDHFsA0rM6pJz8FIKSJNT5mYkgWRaUQZnj6adFYB/siDlrQ4Hva94UYQLBEbPevthKw03IISu5ib7mgbcoa3Rl/Q5ehnMesMBBJPUQAMqj4bvlcTitGNQZIZZVJ6qbHfqjP69BjJKiRQ31HAX3xj/wAp2EsYC4DRWCpunr5rgVabnxgr7DlMh/K+o9FSJWqDXtILQdl4xaQMHeOhP4EQRTUOYFCny5qBKcE5gBbwehRm3ZR; 25:ZqjSNIrftRXWpNWFkg5/XtjSsQ5UVgCvhGTo2uAnhH4btMHq6XJ+TDS5j2R+h/Y3kLiIWEsszZZ1ACeJIfFYyVCBYZdNQDL/OU8ibMa2GYVQJHJmwIuS/RqRUx0h8i+Z/gndGTEeT4kyItKwO9ii1+faqHc8SK2CtcJqkDFdZVUqxGMMxrj9K8XMganMDaFb1XK52eRRACL+/qlLbKh1yPqwBawgCynjdmlh/+mTMCbIjybW5aBd3s4QfDBxYFrKHqV7stgcxW12zsFcfTD5scB1fqfzg0eT3AGlsYtI186hLsCqpu5gwriWPS2JFHvyYvcfapitqy+Yxth0UjZQIA== X-MS-TrafficTypeDiagnostic: BN8PR19MB2755: X-Microsoft-Exchange-Diagnostics: 1; BN8PR19MB2755; 31:yPuh+OzWM9BGStmB1xW3wPVdSjAQJYRsEVYOdUYD6sCpTBK6Eq4PbnZkwplo4WVv1/Q8/FxoJlMJaJR+4pg+/8pyd7zMvpcQOyGTM4zUDpbHFEDJ4hlwfFt97ZVg0lm9civQ/IPG+VgG4BsqhJ3JAg4BtlWBR/0dEtYucD2zfH87U1RdHTT97KhG40jtrzmllGj+ivkw0EX3h6WDy5m0ls3FQFiSvzrt4Bb7X7URxoQ=; 4:ExfED4+OYDZXkSv1ocY6zCvotxXzHUNEE4fgynkBqtSvul2KvIdhpWnUK47xDPsSTSkDvvqKLb/9j7BYjXgargaFFv4kgBDgDWadhcjlDnOn6mmOsaeawKhZY7RVh4r3gD00+10dObc6Pjs/M+W6uLQGL7x35TDEpf9OM1L4WKzrrzmSX96yECwXZhXz7pX4iyjjXg6dRDPvhLat3ZyopaNCKAEh7pefrfyUnDYjkAuoo6tP+SkN0MEdqJXmj9swyN6oJplyuHd53bKMR41GRxV8iJRZEzQYqvEnE9YJOnaceZbGz7HtPP2gFxovh1qg X-Microsoft-Antispam-PRVS: X-Forefront-PRVS: 09144DB0F7 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN8PR19MB2755; 23:qAfZ0mWAifIoBfoGoivT15ikPCLYpEBKvxwn+hVX/?= QpoG/1suu5ZS8/IFMnsX5TWnYupYHOa4Tfn89P5lMZSLFOFNzyd6FUDzdz38B//79vCtWnHsqJNbx21jnO22P+2iQ3w4BE3A8oUxEtvIwCcIWBtrniE0kh0+ckYuBe6yFJyJI7IA6hmcDG8r3ZBNxZoiON3rEhRTyF9qbQB8GvdvgPX4LYW7uDnQrKnYQydStLFlJQ6RUe1suronWRRARxpZJLSITTIbKa/jsT16PCu+YgRrF+BLAm/uDZbp6sLyycKrMFr+rA7qoKaKPeEMFw0/em388OWdwK+U9jeUWuwHlxzGp8jmLVpXWB8ZFHgwSL+OCdgEFYrcb1B5TQI5Q6DRfJgR8qBAhcaxU+UzFU6KE9QBcit617NXFEkcRemtNb6dQtTivsgJn5cpNFzW/K0OEJLNyzOpvJo6I0KsI2a9UZY0EWGzm/tjmgejYLaqL20dw7SqRP1DEPVeK0Yl7UxbS1GLpxXa8H7evUrfS4BzefLKpYPp8qKXAQ3fMWQqrmEHEyTLVLQECLWz/F/zsQa6D9H4dPZdWT/EBWs7E3F+LFKfGp1wsadrHjKLNCFIv9hCsuns8ccAJ1UOv7qDNso9oNiku6BrUH1bu3iQBis4FNz8KTGnx2jgxqun7gGwkCUlo1T7MQPCBRwczA9cqll0GIitTuvjVqh2f4RcR6ECTPVpMOOLldrzT28nN6OGp8zryznb2QrMj5KXTMNReyraUgIfC5IWwk9RSqeCjkwWKsMYyZyYbGka6YwdWuckiVMiD4/SHLdv/8xP4uoY1/boCKX9Y1mq0HFeImwtUKXd0V1tWTIjpTgMdSX8DGeUWtzy5CDsQjGuSsRPUxoBGF9KAC//m/+n9tg8qi9YTumMR290TSTporod9CF1qdP8r650d5yfnciPUnKQi0TSHzAhbEfLC6f+/mtpQiHCnZivRizMGwOte04l/J8OUqW84Npf+r1iqSDHroNZ2sBlwAbb/bMxot4eiMgLWAFjsz+R06ZBLn4kj3uf3GoX9BQSNCYJjT13OAEm0hqsS/0SXfIuqzGJ7wOPuUS7S6gBGcG1uBsk+/YGJGl381hgFNXundBPeKvOgapVHFHqToculhFnFrEVJquSIKqi19Ve5MfrZ6DaC2VkEeJR+PryOo2esQ= X-Microsoft-Antispam-Message-Info: qSHJJNb22yHuWHqCXryzXXQLE7WQytL9LYBPSOqPOaISc/IjLl+Wp+qsk+I7W5QCRrm0pqmCl5GaKD8Gk7nzYwW6+b5Ahn+aqAe1LqgnyrZ18q4l5GPCxdtOK/xR2SaV+BVJyHHEW2TcQ4bfXO8Ya8MbHPrciwISgsB3Uj8nxRs9AaQ8ToQEROWauHDPJX44wVs9xFoA8Cm5OKE07p+Ux/a58P3CR8s7EUHJkqEbgxUZt5PN4tKk9po51SCA+ADhD5fl0To5jH8Ymtsaxivg0zaVCD/Oj2NFcJFP5t7P088PgceF9I2UoGdCHnlSxs5ydJUslZpGxI5DCx2koNaem+NO921WoS2qGAy41CDNBUnhB3MA+J/V62Ew8treWQLITN4xhv+mbz4BjFjSiIOQRlCD0YAM5Sm3jbthIsVI60U= X-Microsoft-Exchange-Diagnostics: 1; BN8PR19MB2755; 6:uWMKe/B+79w0CzW3bIK+W/gP383TjnrPCD06rTS5G5M1wRDs9aRef+SXaoS2k5P5sUp/VrdOABZPDDKMuwr6yiJmMoFvj+HWU/pPUu2koW/lf51n2clQyFgHkWbPGVmIuoooxCqKZpyMbzUOXDCJMeQQ28mkb2Lnz9CSZdlzeb/FCn01cDkiGp3NyEwnjSeUxBM3wXj5egpMEtUDuboknwD2WHm8pEdGIFBCVZtWQIUGXyZE6EE5+GKQHIsSxNOrdeycW2rsAu5PFQBydKZI4mG7rqHgBmxHpXcd0j/HGZJUy27xg6Ktr7flPnjXL7j/5qfGI7e4mvXoN6f1SRPxsDVfn96lOC+LddBMv0qsEg78yYRNTXxrng9q0bfr8RIyg8n3RG6/9mFDBSu1jjMdva5qUixLcrvWxfeNpyQfe7cv3Z6VYzzqEuHkczwLDwE5zjceSDp7ozR2hEy4E4KMVw==; 5:hGSQPyGDnIgt6iQwMQSWlxn4Nkg6KW6d4BuIof0sHlnytlean76oO6b5eZH2A5OQU3SC2mK5B6jyRSxj5vxsw4/w/n1B3Q3u+UVcQBz6eUmLMIU+BC/19jydD5d+blddw3JN7/xLR7rLQjsPWuP702EMVeLgqZURNd8pmxT8VAo46r5rTcaYIGef0KQJRU741TtvXd76IBvrvj8heFLmcw==; 7:YhqCKkATDeo0JQyaEezA8pZow9LVffS/+VyaRPQmtGz4bkoAojtDLsGown6xMfdZey/V6Bzj1Lq8aDHpmVijMXGXqG7LEDFjcW/ktSYT1br6HOnU4jFVNOyZK0/goHdXKj318dRxFIf1pGxuwIMNuA== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jan 2019 23:04:30.6711 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0b0d9753-9a10-4ff8-1394-08d6781924e9 X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[208.19.99.223]; Helo=[AUSMBX3.microsemi.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR19MB2755 Subject: [U-Boot] [PATCH v6 1/6] pinctrl: mscc: Add gpio and pinctrl for Jaguar2 SOC family X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" The Jaguar2 SOC family has 63 gpio pins therefore I extended mscc-common to support new numbe of pins and remove any platform dependency from mscc-common. Signed-off-by: Horatiu Vultur Reviewed-by: Daniel Schwierzeck --- MAINTAINERS | 1 + drivers/pinctrl/mscc/Kconfig | 9 + drivers/pinctrl/mscc/Makefile | 1 + drivers/pinctrl/mscc/mscc-common.c | 90 +++++++--- drivers/pinctrl/mscc/mscc-common.h | 17 +- drivers/pinctrl/mscc/pinctrl-jr2.c | 323 ++++++++++++++++++++++++++++++++++ drivers/pinctrl/mscc/pinctrl-luton.c | 16 +- drivers/pinctrl/mscc/pinctrl-ocelot.c | 16 +- 8 files changed, 444 insertions(+), 29 deletions(-) create mode 100644 drivers/pinctrl/mscc/pinctrl-jr2.c diff --git a/MAINTAINERS b/MAINTAINERS index 494962e..495d3e5 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -525,6 +525,7 @@ F: board/mscc/ F: configs/mscc* F: drivers/gpio/mscc_sgpio.c F: include/configs/vcoreiii.h +F: drivers/pinctrl/mscc/ MIPS JZ4780 M: Ezequiel Garcia diff --git a/drivers/pinctrl/mscc/Kconfig b/drivers/pinctrl/mscc/Kconfig index cfc6c06..d07ea1b 100644 --- a/drivers/pinctrl/mscc/Kconfig +++ b/drivers/pinctrl/mscc/Kconfig @@ -20,3 +20,12 @@ config PINCTRL_MSCC_LUTON help Support pin multiplexing and pin configuration control on Microsemi luton SoCs. + +config PINCTRL_MSCC_JR2 + depends on SOC_JR2 && PINCTRL_FULL && OF_CONTROL + select PINCTRL_MSCC + default y + bool "Microsemi jr2 family pin control driver" + help + Support pin multiplexing and pin configuration control on + Microsemi jr2 SoCs. diff --git a/drivers/pinctrl/mscc/Makefile b/drivers/pinctrl/mscc/Makefile index 6910671..8038d54 100644 --- a/drivers/pinctrl/mscc/Makefile +++ b/drivers/pinctrl/mscc/Makefile @@ -3,3 +3,4 @@ obj-y += mscc-common.o obj-$(CONFIG_PINCTRL_MSCC_OCELOT) += pinctrl-ocelot.o obj-$(CONFIG_PINCTRL_MSCC_LUTON) += pinctrl-luton.o +obj-$(CONFIG_PINCTRL_MSCC_JR2) += pinctrl-jr2.o diff --git a/drivers/pinctrl/mscc/mscc-common.c b/drivers/pinctrl/mscc/mscc-common.c index d74b8a6..bd3e6ea 100644 --- a/drivers/pinctrl/mscc/mscc-common.c +++ b/drivers/pinctrl/mscc/mscc-common.c @@ -22,16 +22,37 @@ #include #include "mscc-common.h" -#define MSCC_GPIO_OUT_SET 0x0 -#define MSCC_GPIO_OUT_CLR 0x4 -#define MSCC_GPIO_OUT 0x8 -#define MSCC_GPIO_IN 0xc -#define MSCC_GPIO_OE 0x10 -#define MSCC_GPIO_INTR 0x14 -#define MSCC_GPIO_INTR_ENA 0x18 -#define MSCC_GPIO_INTR_IDENT 0x1c -#define MSCC_GPIO_ALT0 0x20 -#define MSCC_GPIO_ALT1 0x24 +static void mscc_writel(unsigned int offset, void *addr) +{ + if (offset < 32) + writel(BIT(offset), addr); + else + writel(BIT(offset % 32), addr + 4); +} + +static unsigned int mscc_readl(unsigned int offset, void *addr) +{ + if (offset < 32) + return readl(addr); + else + return readl(addr + 4); +} + +static void mscc_setbits(unsigned int offset, void *addr) +{ + if (offset < 32) + writel(readl(addr) | BIT(offset), addr); + else + writel(readl(addr + 4) | BIT(offset % 32), addr + 4); +} + +static void mscc_clrbits(unsigned int offset, void *addr) +{ + if (offset < 32) + writel(readl(addr) & ~BIT(offset), addr); + else + writel(readl(addr + 4) & ~BIT(offset % 32), addr + 4); +} static int mscc_get_functions_count(struct udevice *dev) { @@ -67,7 +88,7 @@ static int mscc_pinmux_set_mux(struct udevice *dev, { struct mscc_pinctrl *info = dev_get_priv(dev); struct mscc_pin_caps *pin = info->mscc_pins[pin_selector].drv_data; - int f; + int f, offset, regoff; f = mscc_pin_function_idx(pin_selector, selector, info->mscc_pins); if (f < 0) @@ -79,15 +100,22 @@ static int mscc_pinmux_set_mux(struct udevice *dev, * This is racy because both registers can't be updated at the same time * but it doesn't matter much for now. */ + offset = pin->pin; + regoff = info->mscc_gpios[MSCC_GPIO_ALT0]; + if (offset >= 32) { + offset = offset % 32; + regoff = info->mscc_gpios[MSCC_GPIO_ALT1]; + } + if (f & BIT(0)) - setbits_le32(info->regs + MSCC_GPIO_ALT0, BIT(pin->pin)); + mscc_setbits(offset, info->regs + regoff); else - clrbits_le32(info->regs + MSCC_GPIO_ALT0, BIT(pin->pin)); + mscc_clrbits(offset, info->regs + regoff); if (f & BIT(1)) - setbits_le32(info->regs + MSCC_GPIO_ALT1, BIT(pin->pin - 1)); + mscc_setbits(offset, info->regs + regoff + 4); else - clrbits_le32(info->regs + MSCC_GPIO_ALT1, BIT(pin->pin - 1)); + mscc_clrbits(offset, info->regs + regoff + 4); return 0; } @@ -120,8 +148,8 @@ static int mscc_create_group_func_map(struct udevice *dev, } info->func[f].ngroups = npins; - info->func[f].groups = devm_kzalloc(dev, npins * - sizeof(char *), GFP_KERNEL); + info->func[f].groups = devm_kzalloc(dev, npins * sizeof(char *), + GFP_KERNEL); if (!info->func[f].groups) return -ENOMEM; @@ -150,9 +178,15 @@ static int mscc_gpio_get(struct udevice *dev, unsigned int offset) struct mscc_pinctrl *info = dev_get_priv(dev->parent); unsigned int val; - val = readl(info->regs + MSCC_GPIO_IN); + if (mscc_readl(offset, info->regs + info->mscc_gpios[MSCC_GPIO_OE]) & + BIT(offset % 32)) + val = mscc_readl(offset, + info->regs + info->mscc_gpios[MSCC_GPIO_OUT]); + else + val = mscc_readl(offset, + info->regs + info->mscc_gpios[MSCC_GPIO_IN]); - return !!(val & BIT(offset)); + return !!(val & BIT(offset % 32)); } static int mscc_gpio_set(struct udevice *dev, unsigned int offset, int value) @@ -160,9 +194,11 @@ static int mscc_gpio_set(struct udevice *dev, unsigned int offset, int value) struct mscc_pinctrl *info = dev_get_priv(dev->parent); if (value) - writel(BIT(offset), info->regs + MSCC_GPIO_OUT_SET); + mscc_writel(offset, + info->regs + info->mscc_gpios[MSCC_GPIO_OUT_SET]); else - writel(BIT(offset), info->regs + MSCC_GPIO_OUT_CLR); + mscc_writel(offset, + info->regs + info->mscc_gpios[MSCC_GPIO_OUT_CLR]); return 0; } @@ -172,16 +208,16 @@ static int mscc_gpio_get_direction(struct udevice *dev, unsigned int offset) struct mscc_pinctrl *info = dev_get_priv(dev->parent); unsigned int val; - val = readl(info->regs + MSCC_GPIO_OE); + val = mscc_readl(offset, info->regs + info->mscc_gpios[MSCC_GPIO_OE]); - return (val & BIT(offset)) ? GPIOF_OUTPUT : GPIOF_INPUT; + return (val & BIT(offset % 32)) ? GPIOF_OUTPUT : GPIOF_INPUT; } static int mscc_gpio_direction_input(struct udevice *dev, unsigned int offset) { struct mscc_pinctrl *info = dev_get_priv(dev->parent); - clrbits_le32(info->regs + MSCC_GPIO_OE, BIT(offset)); + mscc_clrbits(offset, info->regs + info->mscc_gpios[MSCC_GPIO_OE]); return 0; } @@ -191,7 +227,7 @@ static int mscc_gpio_direction_output(struct udevice *dev, { struct mscc_pinctrl *info = dev_get_priv(dev->parent); - setbits_le32(info->regs + MSCC_GPIO_OE, BIT(offset)); + mscc_setbits(offset, info->regs + info->mscc_gpios[MSCC_GPIO_OE]); return mscc_gpio_set(dev, offset, value); } @@ -215,7 +251,8 @@ const struct pinctrl_ops mscc_pinctrl_ops = { int mscc_pinctrl_probe(struct udevice *dev, int num_func, const struct mscc_pin_data *mscc_pins, int num_pins, - char *const *function_names) + char * const *function_names, + const unsigned long *mscc_gpios) { struct mscc_pinctrl *priv = dev_get_priv(dev); int ret; @@ -230,6 +267,7 @@ int mscc_pinctrl_probe(struct udevice *dev, int num_func, priv->mscc_pins = mscc_pins; priv->num_pins = num_pins; priv->function_names = function_names; + priv->mscc_gpios = mscc_gpios; ret = mscc_pinctrl_register(dev, priv); return ret; diff --git a/drivers/pinctrl/mscc/mscc-common.h b/drivers/pinctrl/mscc/mscc-common.h index b0001db..3c5c1fa 100644 --- a/drivers/pinctrl/mscc/mscc-common.h +++ b/drivers/pinctrl/mscc/mscc-common.h @@ -9,6 +9,19 @@ #define MSCC_FUNC_PER_PIN 4 +enum mscc_regs_gpio { + MSCC_GPIO_OUT_SET, + MSCC_GPIO_OUT_CLR, + MSCC_GPIO_OUT, + MSCC_GPIO_IN, + MSCC_GPIO_OE, + MSCC_GPIO_INTR, + MSCC_GPIO_INTR_ENA, + MSCC_GPIO_INTR_IDENT, + MSCC_GPIO_ALT0, + MSCC_GPIO_ALT1, +}; + struct mscc_pin_caps { unsigned int pin; unsigned char functions[MSCC_FUNC_PER_PIN]; @@ -41,11 +54,13 @@ struct mscc_pinctrl { const struct mscc_pin_data *mscc_pins; int num_pins; char * const *function_names; + const unsigned long *mscc_gpios; }; int mscc_pinctrl_probe(struct udevice *dev, int num_func, const struct mscc_pin_data *mscc_pins, int num_pins, - char * const *function_names); + char * const *function_names, + const unsigned long *mscc_gpios); const struct pinctrl_ops mscc_pinctrl_ops; const struct dm_gpio_ops mscc_gpio_ops; diff --git a/drivers/pinctrl/mscc/pinctrl-jr2.c b/drivers/pinctrl/mscc/pinctrl-jr2.c new file mode 100644 index 0000000..d4af76f --- /dev/null +++ b/drivers/pinctrl/mscc/pinctrl-jr2.c @@ -0,0 +1,323 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) +/* + * Microsemi SoCs pinctrl driver + * + * Author: + * Copyright (c) 2018 Microsemi Corporation + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "mscc-common.h" + +enum { + FUNC_NONE, + FUNC_GPIO, + FUNC_IRQ0_IN, + FUNC_IRQ0_OUT, + FUNC_IRQ1_IN, + FUNC_IRQ1_OUT, + FUNC_MIIM1, + FUNC_MIIM2, + FUNC_PCI_WAKE, + FUNC_PTP0, + FUNC_PTP1, + FUNC_PTP2, + FUNC_PTP3, + FUNC_PWM, + FUNC_RECO_CLK0, + FUNC_RECO_CLK1, + FUNC_SFP0, + FUNC_SFP1, + FUNC_SFP2, + FUNC_SFP3, + FUNC_SFP4, + FUNC_SFP5, + FUNC_SFP6, + FUNC_SFP7, + FUNC_SFP8, + FUNC_SFP9, + FUNC_SFP10, + FUNC_SFP11, + FUNC_SFP12, + FUNC_SFP13, + FUNC_SFP14, + FUNC_SFP15, + FUNC_SG0, + FUNC_SG1, + FUNC_SG2, + FUNC_SI, + FUNC_TACHO, + FUNC_TWI, + FUNC_TWI2, + FUNC_TWI_SCL_M, + FUNC_UART, + FUNC_UART2, + FUNC_MAX +}; + +char *jr2_function_names[] = { + [FUNC_NONE] = "none", + [FUNC_GPIO] = "gpio", + [FUNC_IRQ0_IN] = "irq0_in", + [FUNC_IRQ0_OUT] = "irq0_out", + [FUNC_IRQ1_IN] = "irq1_in", + [FUNC_IRQ1_OUT] = "irq1_out", + [FUNC_MIIM1] = "miim1", + [FUNC_MIIM2] = "miim2", + [FUNC_PCI_WAKE] = "pci_wake", + [FUNC_PTP0] = "ptp0", + [FUNC_PTP1] = "ptp1", + [FUNC_PTP2] = "ptp2", + [FUNC_PTP3] = "ptp3", + [FUNC_PWM] = "pwm", + [FUNC_RECO_CLK0] = "reco_clk0", + [FUNC_RECO_CLK1] = "reco_clk1", + [FUNC_SFP0] = "sfp0", + [FUNC_SFP1] = "sfp1", + [FUNC_SFP2] = "sfp2", + [FUNC_SFP3] = "sfp3", + [FUNC_SFP4] = "sfp4", + [FUNC_SFP5] = "sfp5", + [FUNC_SFP6] = "sfp6", + [FUNC_SFP7] = "sfp7", + [FUNC_SFP8] = "sfp8", + [FUNC_SFP9] = "sfp9", + [FUNC_SFP10] = "sfp10", + [FUNC_SFP11] = "sfp11", + [FUNC_SFP12] = "sfp12", + [FUNC_SFP13] = "sfp13", + [FUNC_SFP14] = "sfp14", + [FUNC_SFP15] = "sfp15", + [FUNC_SG0] = "sg0", + [FUNC_SG1] = "sg1", + [FUNC_SG2] = "sg2", + [FUNC_SI] = "si", + [FUNC_TACHO] = "tacho", + [FUNC_TWI] = "twi", + [FUNC_TWI2] = "twi2", + [FUNC_TWI_SCL_M] = "twi_scl_m", + [FUNC_UART] = "uart", + [FUNC_UART2] = "uart2", +}; + +#define JR2_P(p, f0, f1) \ +static struct mscc_pin_caps jr2_pin_##p = { \ + .pin = p, \ + .functions = { \ + FUNC_GPIO, FUNC_##f0, FUNC_##f1, FUNC_NONE \ + }, \ +} + +JR2_P(0, SG0, NONE); +JR2_P(1, SG0, NONE); +JR2_P(2, SG0, NONE); +JR2_P(3, SG0, NONE); +JR2_P(4, SG1, NONE); +JR2_P(5, SG1, NONE); +JR2_P(6, IRQ0_IN, IRQ0_OUT); +JR2_P(7, IRQ1_IN, IRQ1_OUT); +JR2_P(8, PTP0, NONE); +JR2_P(9, PTP1, NONE); +JR2_P(10, UART, NONE); +JR2_P(11, UART, NONE); +JR2_P(12, SG1, NONE); +JR2_P(13, SG1, NONE); +JR2_P(14, TWI, TWI_SCL_M); +JR2_P(15, TWI, NONE); +JR2_P(16, SI, TWI_SCL_M); +JR2_P(17, SI, TWI_SCL_M); +JR2_P(18, SI, TWI_SCL_M); +JR2_P(19, PCI_WAKE, NONE); +JR2_P(20, IRQ0_OUT, TWI_SCL_M); +JR2_P(21, IRQ1_OUT, TWI_SCL_M); +JR2_P(22, TACHO, NONE); +JR2_P(23, PWM, NONE); +JR2_P(24, UART2, NONE); +JR2_P(25, UART2, SI); +JR2_P(26, PTP2, SI); +JR2_P(27, PTP3, SI); +JR2_P(28, TWI2, SI); +JR2_P(29, TWI, SI); +JR2_P(30, SG2, SI); +JR2_P(31, SG2, SI); +JR2_P(32, SG2, SI); +JR2_P(33, SG2, SI); +JR2_P(34, NONE, TWI_SCL_M); +JR2_P(35, NONE, TWI_SCL_M); +JR2_P(36, NONE, TWI_SCL_M); +JR2_P(37, NONE, TWI_SCL_M); +JR2_P(38, NONE, TWI_SCL_M); +JR2_P(39, NONE, TWI_SCL_M); +JR2_P(40, NONE, TWI_SCL_M); +JR2_P(41, NONE, TWI_SCL_M); +JR2_P(42, NONE, TWI_SCL_M); +JR2_P(43, NONE, TWI_SCL_M); +JR2_P(44, NONE, SFP8); +JR2_P(45, NONE, SFP9); +JR2_P(46, NONE, SFP10); +JR2_P(47, NONE, SFP11); +JR2_P(48, SFP0, NONE); +JR2_P(49, SFP1, SI); +JR2_P(50, SFP2, SI); +JR2_P(51, SFP3, SI); +JR2_P(52, SFP4, NONE); +JR2_P(53, SFP5, NONE); +JR2_P(54, SFP6, NONE); +JR2_P(55, SFP7, NONE); +JR2_P(56, MIIM1, SFP12); +JR2_P(57, MIIM1, SFP13); +JR2_P(58, MIIM2, SFP14); +JR2_P(59, MIIM2, SFP15); +JR2_P(60, NONE, NONE); +JR2_P(61, NONE, NONE); +JR2_P(62, NONE, NONE); +JR2_P(63, NONE, NONE); + +#define JR2_PIN(n) { \ + .name = "GPIO_"#n, \ + .drv_data = &jr2_pin_##n \ +} + +const struct mscc_pin_data jr2_pins[] = { + JR2_PIN(0), + JR2_PIN(1), + JR2_PIN(2), + JR2_PIN(3), + JR2_PIN(4), + JR2_PIN(5), + JR2_PIN(6), + JR2_PIN(7), + JR2_PIN(8), + JR2_PIN(9), + JR2_PIN(10), + JR2_PIN(11), + JR2_PIN(12), + JR2_PIN(13), + JR2_PIN(14), + JR2_PIN(15), + JR2_PIN(16), + JR2_PIN(17), + JR2_PIN(18), + JR2_PIN(19), + JR2_PIN(20), + JR2_PIN(21), + JR2_PIN(22), + JR2_PIN(23), + JR2_PIN(24), + JR2_PIN(25), + JR2_PIN(26), + JR2_PIN(27), + JR2_PIN(28), + JR2_PIN(29), + JR2_PIN(30), + JR2_PIN(31), + JR2_PIN(32), + JR2_PIN(33), + JR2_PIN(34), + JR2_PIN(35), + JR2_PIN(36), + JR2_PIN(37), + JR2_PIN(38), + JR2_PIN(39), + JR2_PIN(40), + JR2_PIN(41), + JR2_PIN(42), + JR2_PIN(43), + JR2_PIN(44), + JR2_PIN(45), + JR2_PIN(46), + JR2_PIN(47), + JR2_PIN(48), + JR2_PIN(49), + JR2_PIN(50), + JR2_PIN(51), + JR2_PIN(52), + JR2_PIN(53), + JR2_PIN(54), + JR2_PIN(55), + JR2_PIN(56), + JR2_PIN(57), + JR2_PIN(58), + JR2_PIN(59), + JR2_PIN(60), + JR2_PIN(61), + JR2_PIN(62), + JR2_PIN(63), +}; + +const unsigned long jr2_gpios[] = { + [MSCC_GPIO_OUT_SET] = 0x00, + [MSCC_GPIO_OUT_CLR] = 0x08, + [MSCC_GPIO_OUT] = 0x10, + [MSCC_GPIO_IN] = 0x18, + [MSCC_GPIO_OE] = 0x20, + [MSCC_GPIO_INTR] = 0x28, + [MSCC_GPIO_INTR_ENA] = 0x30, + [MSCC_GPIO_INTR_IDENT] = 0x38, + [MSCC_GPIO_ALT0] = 0x40, + [MSCC_GPIO_ALT1] = 0x48, +}; + +static int jr2_gpio_probe(struct udevice *dev) +{ + struct gpio_dev_priv *uc_priv; + + uc_priv = dev_get_uclass_priv(dev); + uc_priv->bank_name = "jr2-gpio"; + uc_priv->gpio_count = ARRAY_SIZE(jr2_pins); + + return 0; +} + +static struct driver jr2_gpio_driver = { + .name = "jr2-gpio", + .id = UCLASS_GPIO, + .probe = jr2_gpio_probe, + .ops = &mscc_gpio_ops, +}; + +int jr2_pinctrl_probe(struct udevice *dev) +{ + int ret; + + ret = mscc_pinctrl_probe(dev, FUNC_MAX, jr2_pins, + ARRAY_SIZE(jr2_pins), + jr2_function_names, + jr2_gpios); + + if (ret) + return ret; + + ret = device_bind(dev, &jr2_gpio_driver, "jr2-gpio", NULL, + dev_of_offset(dev), NULL); + + if (ret) + return ret; + + return 0; +} + +static const struct udevice_id jr2_pinctrl_of_match[] = { + { .compatible = "mscc,jaguar2-pinctrl" }, + {}, +}; + +U_BOOT_DRIVER(jr2_pinctrl) = { + .name = "jr2-pinctrl", + .id = UCLASS_PINCTRL, + .of_match = of_match_ptr(jr2_pinctrl_of_match), + .probe = jr2_pinctrl_probe, + .priv_auto_alloc_size = sizeof(struct mscc_pinctrl), + .ops = &mscc_pinctrl_ops, +}; diff --git a/drivers/pinctrl/mscc/pinctrl-luton.c b/drivers/pinctrl/mscc/pinctrl-luton.c index 7166588..8c636ff 100644 --- a/drivers/pinctrl/mscc/pinctrl-luton.c +++ b/drivers/pinctrl/mscc/pinctrl-luton.c @@ -123,6 +123,19 @@ static const struct mscc_pin_data luton_pins[] = { LUTON_PIN(31), }; +const unsigned long luton_gpios[] = { + [MSCC_GPIO_OUT_SET] = 0x00, + [MSCC_GPIO_OUT_CLR] = 0x04, + [MSCC_GPIO_OUT] = 0x08, + [MSCC_GPIO_IN] = 0x0c, + [MSCC_GPIO_OE] = 0x10, + [MSCC_GPIO_INTR] = 0x14, + [MSCC_GPIO_INTR_ENA] = 0x18, + [MSCC_GPIO_INTR_IDENT] = 0x1c, + [MSCC_GPIO_ALT0] = 0x20, + [MSCC_GPIO_ALT1] = 0x24, +}; + static int luton_gpio_probe(struct udevice *dev) { struct gpio_dev_priv *uc_priv; @@ -146,7 +159,8 @@ int luton_pinctrl_probe(struct udevice *dev) int ret; ret = mscc_pinctrl_probe(dev, FUNC_MAX, luton_pins, - ARRAY_SIZE(luton_pins), luton_function_names); + ARRAY_SIZE(luton_pins), luton_function_names, + luton_gpios); if (ret) return ret; diff --git a/drivers/pinctrl/mscc/pinctrl-ocelot.c b/drivers/pinctrl/mscc/pinctrl-ocelot.c index 10f9b90..fb02061 100644 --- a/drivers/pinctrl/mscc/pinctrl-ocelot.c +++ b/drivers/pinctrl/mscc/pinctrl-ocelot.c @@ -138,6 +138,19 @@ static const struct mscc_pin_data ocelot_pins[] = { OCELOT_PIN(21), }; +const unsigned long ocelot_gpios[] = { + [MSCC_GPIO_OUT_SET] = 0x00, + [MSCC_GPIO_OUT_CLR] = 0x04, + [MSCC_GPIO_OUT] = 0x08, + [MSCC_GPIO_IN] = 0x0c, + [MSCC_GPIO_OE] = 0x10, + [MSCC_GPIO_INTR] = 0x14, + [MSCC_GPIO_INTR_ENA] = 0x18, + [MSCC_GPIO_INTR_IDENT] = 0x1c, + [MSCC_GPIO_ALT0] = 0x20, + [MSCC_GPIO_ALT1] = 0x24, +}; + static int ocelot_gpio_probe(struct udevice *dev) { struct gpio_dev_priv *uc_priv; @@ -162,7 +175,8 @@ int ocelot_pinctrl_probe(struct udevice *dev) ret = mscc_pinctrl_probe(dev, FUNC_MAX, ocelot_pins, ARRAY_SIZE(ocelot_pins), - ocelot_function_names); + ocelot_function_names, + ocelot_gpios); if (ret) return ret; From patchwork Fri Jan 11 22:31:16 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Horatiu Vultur X-Patchwork-Id: 1023799 X-Patchwork-Delegate: daniel.schwierzeck@googlemail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=microchip.com Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 43bz3w3jxfz9s9h for ; Sat, 12 Jan 2019 10:05:32 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 36CDBC221F7; Fri, 11 Jan 2019 23:05:31 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAD_ENC_HEADER, SPF_HELO_PASS, UPPERCASE_50_75 autolearn=no autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 177AEC221FC; Fri, 11 Jan 2019 23:05:09 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 062C9C22219; Fri, 11 Jan 2019 23:05:06 +0000 (UTC) Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-eopbgr800071.outbound.protection.outlook.com [40.107.80.71]) by lists.denx.de (Postfix) with ESMTPS id 87BBCC22262 for ; Fri, 11 Jan 2019 23:04:58 +0000 (UTC) Received: from BN6PR19CA0065.namprd19.prod.outlook.com (2603:10b6:404:e3::27) by SN2PR19MB0735.namprd19.prod.outlook.com (2603:10b6:804:29::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1516.16; Fri, 11 Jan 2019 23:04:55 +0000 Received: from BL2FFO11FD016.protection.gbl (2a01:111:f400:7c09::172) by BN6PR19CA0065.outlook.office365.com (2603:10b6:404:e3::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1516.14 via Frontend Transport; Fri, 11 Jan 2019 23:04:55 +0000 Authentication-Results: spf=softfail (sender IP is 208.19.100.23) smtp.mailfrom=microchip.com; lists.denx.de; dkim=none (message not signed) header.d=none;lists.denx.de; dmarc=none action=none header.from=microchip.com; Received-SPF: SoftFail (protection.outlook.com: domain of transitioning microchip.com discourages use of 208.19.100.23 as permitted sender) Received: from AVMBX3.microsemi.net (208.19.100.23) by BL2FFO11FD016.mail.protection.outlook.com (10.173.160.224) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.20.1471.13 via Frontend Transport; Fri, 11 Jan 2019 23:04:55 +0000 Received: from AVMBX3.microsemi.net (10.100.34.33) by AVMBX3.microsemi.net (10.100.34.33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1531.3; Fri, 11 Jan 2019 14:34:49 -0800 Received: from xrelay.vitesse.com (10.9.45.188) by avmbx3.microsemi.net (10.100.34.33) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1531.3 via Frontend Transport; Fri, 11 Jan 2019 14:34:49 -0800 Received: from soft-dev3.microsemi.net (soft-dev3.microsemi.net [10.205.27.16]) by xrelay.vitesse.com (8.13.8/8.13.8) with ESMTP id x0BMWMCp018804; Fri, 11 Jan 2019 14:34:37 -0800 From: Horatiu Vultur To: Date: Fri, 11 Jan 2019 23:31:16 +0100 Message-ID: <1547245880-23438-3-git-send-email-horatiu.vultur@microchip.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1547245880-23438-1-git-send-email-horatiu.vultur@microchip.com> References: <1547245880-23438-1-git-send-email-horatiu.vultur@microchip.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131917214956291206; (5a93feec-e11d-4f7b-166a-08d09f1f276b); () X-Forefront-Antispam-Report: CIP:208.19.100.23; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(346002)(2980300002)(199004)(189003)(77096007)(30864003)(53416004)(336012)(48376002)(44832011)(356004)(6666004)(6916009)(446003)(26005)(4326008)(11346002)(69596002)(5660300001)(97736004)(50466002)(486006)(2906002)(107886003)(14444005)(36756003)(126002)(2616005)(305945005)(86362001)(575784001)(105596002)(16586007)(476003)(54906003)(81156014)(50226002)(53946003)(68736007)(8936002)(76176011)(508600001)(2351001)(81166006)(47776003)(8676002)(53936002)(106466001)(51416003); DIR:OUT; SFP:1101; SCL:1; SRVR:SN2PR19MB0735; H:AVMBX3.microsemi.net; FPR:; SPF:SoftFail; LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD016; 1:Zd/NDP00eM/yygXA/JeOy8Qvxg7d4gXaq3Z1NkKKcjChOgSQQZXzCYu/Ed+1I4aZUOIk+qw6VwyPMBtHvaqJv8FqkNOjv2vD4XNO2GwTfaoOmZTAMrgMkmU9FTVTMNWL X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d8671276-34ff-4747-9977-08d6781933a5 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(5600109)(711020)(2017052603328); SRVR:SN2PR19MB0735; X-Microsoft-Exchange-Diagnostics: 1; SN2PR19MB0735; 3:z6IrwRkbYzWLlpym66+EUcaEzeXpNRdVABmk7416yK7C2wbdqjmcqlh1C4D5XnVZX1hC7QNmVN4+2m6k2peOi/jJgP5V2QbiCG58VGD8tEndgJ+5XRtQJYRZezDS2uaCjuUQYoIw7ep5OUjQyXNd+1vvN6ur41ezYaNUHIb4BNLze+BsxL2yAch0SayydDr0u/5XgbHd7cRcHEGPjaygENuK68Pzbb+YO3rGd7HsyX4jthN8Gel22rOHRmW6PnBYtILvyHdXZ86XYUu7CKkl4y2isL8RJoIaqjvT6uSWL4JunnGlPbwVnFV1I+kSetRU2vZaKL8hWURsBPyJCOrS5ozwAKKSQDpqut00cB9ZQiKVMRN4nOr6z8cVqQcjHkdG; 25:GaXXdQj56kp+J1LyahFEndV+BJzJ2ZPFOo4BL+SMx2bGaLP4POb2pW1EN5I7vqHPONHaPawIRUEt1gv4WHHYZxu95bc13GGnQe1l8nHltDfekE4YSAsbbHqsfEBWLQ1jkezKvt1YrkHPf7OLSmn/U/oWQdnY2JtR/c7ntntfDrW9p2vjHen4FF5SVo4SwmwHKW3TpQLE3AOUznGY3ZduSIo+mpoOhmTcl3rSHNoSz4IdZcOzCygzRLyo/4Y2gsX8IPFppAleBJxMm7PdyTZZkEkyR6k+ozF9hD+3FzzlR1VZWqPNUniaRSlnY4ZTdICAkxfGtPRJIX+jP/cDr0KdVw== X-MS-TrafficTypeDiagnostic: SN2PR19MB0735: X-Microsoft-Exchange-Diagnostics: 1; SN2PR19MB0735; 31:rGN6jdfzJIeToG5+OhP9FPdVut+BTirvJkBilNzo9dhNShs8LWvQJROzMDNEZtLh1RStbdhm1z3ZOt7vbd3fUlac3Mf93uqnrUsYdoXVDRM6c8dzf6U6DcLrOSIbtkhVzhHCs/dRCsL2dyn+M6HYtrbH4XH3X/13KESf+5xdgTM6H5UmBx2l2/mEDmk7Aw5Kjeh3S7CUfFvC8KFDgZy+ni7dfa4YtApzfs+SNZ14SBM=; 4:2Rp86fej/+qP3uPb/zyrvRhT2mKARgUcPfk/Hncgjz0ixBFQJoVpd9cIa/zjxGaWz6TVKcJm026I7vGsfCePChv/i+2Qu01EIz/X+6+N0cbdXy9c+OA3OP2SHxwNmqf5n6fiROye3gxX7ICuvrkegWDhUor6FQs7j33Zj1AUuX5RIYfo86gJitvE1AeQnVwCXif+bsnoYelUHEfiDmYAJCMYBEgvZ02dDuju+aUFNJBFruOr3cnJx5B92GP4ngMDsekCBUGTNMCd8b+3lX+YdUsYS8uySP0lKOWUZOGRr9g= X-Microsoft-Antispam-PRVS: X-Forefront-PRVS: 09144DB0F7 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN2PR19MB0735; 23:PnScVO+3I8eGsRuBUHc8Mvzp0sLkOCbVfmi86ru/5?= kgXE44gm6vCSxijM/pQfu4Nt7reesc2EGzpielrVdlC+jEohTLo7GQxfCteTIpWhPg8sKmZt+0X7r3CP00geTQkOryuIR4555Rjxz1g8wIybtfNAgdnscnNlBc88FVk+491bpovroc+y2zToz7aUJLX89GPZBbwdzCXSNcUaYhcGXFZ22yHV76uGxEE5a4814NCgb0VGGzMlZ1Z0NGwkiJYKLCooqWGxXg1CD9bTSYc5dm8KnOk8zn7OpGcAbsFXQg3rC7qIFtdmatxU2IjxbpZrV+j1HbOkZCeg7EDZ1gp0JUoDYTETS7LzbNuyHCna6EeXX9T1tk3xh3G4Jj3At72FAGw/hfACeXUdYkvBuR/o86vTanTJvsuqf6wC7scsNTecukf+sY9e3I/gOxWi8d/BbL4ndTRjR2ezZtjY5wcdN4104ibpSUIB/gRf9Wk+e00Bf70DMNEE915pnQJvsegDy13TcikMEAf6DAxjLWbDPZXgSTwJlZoE0/rRpPLprE0exLNnrDm55y+UlMhsu1dM+VbHzmCe5/eHWiTqc/KWDV17waC1Z/UMfWcFcGhIh9oCB76wjMaHzM8MBASdxpWc6zNfjmKfzuh5OM4Ph5v3jF/wlLTAUJMJ+HxMOOAbhrQlsjenLCllaZD7R6GqnqOAZ+qPYjUbN7P3CBV+/41NhU/sYX3cg0egKx6KuxJ9ZUYJOtVi6Y3eXzkg7D3YK687wVwxU26xHPP84S4RTFzelDY++VRG/GPM1XNph2h6e1W7hxV+Feo1c2fZbTkmI0PNghBfQ+vZMUVqUxFbemj5SJwL0BaEPQwL3zUF0PKvYOj3/+TPevULKXUoFfrve3zplx5DMgQpOHC+3EjeVvUFpOIs8/VT98Udl/Ts6eDxeZnmmmo5pr2OVaGF/9Sn4E7ojRiIsvWZy4YaDhtbk5VkfvyZ+ivEdGhZB8U9M84AWVuJSTlUrQbmP5Vjr5O5AZdhsRqu/R0G+3eo4izUXLTv48yvwhFibvPErKVVtoaFTNQRhtukSEEbqGE6mJGteYFWNQ3AoYss8Xo2D3nc9DIb8GKsIOsLj5h4Oi/QBIEGtE= X-Microsoft-Antispam-Message-Info: tiXK8tueZOymc9/5qTGn/D8lPNgg+6bFk1Iyh+vPpMQ+6tA8pO/mShZ1KjQWIWfUJAlybU1QIr0Lxhs7FvKv6LqR+VnthsyloHkylw1VazQ+bEe4eP4YOMsDk5A61+EdoctB+JOWuqHxNdGge0MoSyCZJEszU4ZW10K7jtE46KeACiWvMXGlwGGEqN1kcgrN8XvU8JAUeZreweNSFeRz7bQ8e6SfLNLKxz0SHKm84dEtIVu/GNmj0GplCJAcOn/dBaT+5wOYUjuhpxkfyu87QwKlOUC9TTGFv1XMU7PQEspwiyUE4zv33TB3rD7J4u8rs/V1t6mvcg71aD2808G+J+wuNBOHr3Lscf4KmVdvUluv6Z8uDeTUcRY0c9wnCfQtmdBmSxZj1b+O+cwMgnwCkQ9i3pAoglxNuvunQORoSsc= X-Microsoft-Exchange-Diagnostics: 1; SN2PR19MB0735; 6:PFrjV2/VIYjiTdXHBEaCr827XQVZn3yguX+4wBo0xegc/qlNqCiqH5LbdUfh/oqiTZz8SbCdiVZVxlFxua0fjYqhDYq0Hd3hBuJ3+UutJkem4q2w4ghQy6FtWen9FncsI5uRIk1+aM3vYXn3PkZQDQfeyvUr+Dw4g3hQcBIpZuuuMrA/q8wobBmBSPMTlMZawjNxqvnwoswOL5IvvcIyAluX3s3p/pYEHKbls17bIjFJ3zWjOvHTSOr5f0pHGOUDdWkD6HLYTYr5WaEMQayE5AbJsn6Rx02uh2Jj2Iih0IdBd1Jh/8soV8JoYevUKyIxo04I0n6dhTEbnoMemDQGpRsgmC8hnXWajOoxfRLfCaO8h5AkY6E5GvDKZgunlVNE2Y7lvoAH1mFUTr+DeaSV88i+Hh575q1H2EfSGqmXgtBOwoKnbV+fdhVlGrlfO24s/kdsiOojlDAJLo6YNmGuww==; 5:RBqsZji47SzzJovtBW2zgUp0iEZn1WkqcvNVkamU66R7P+YkXz/LI0TOuHyeIhGkNqN6Ad1Q7T07CHsVifaVB31ufSj2M6zWoPpaZqxRcc21mG03emooSGWT/3qbgjklz6Cck1/mX+6bNnN9fz4axzQ5jYloNgiTvVWReg1DxK+uS8BwNQCCwzyNjkQ8+zVnFxCINsCU4PFhG+4rRkJxXg==; 7:PvY6sv1ah9j1Qe3ejvpF6G4c3D/L11uvAl4rQg+4N2/kT9uKk2KHP8It1VMpkBPTczweDCZTe75AEFCSIWq25GlYJHeh6Cf4JweSYg/jmo2hIvV2Q60up9c6k0zhrOlVb7eAx21Bh2833wDj/yAelw== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jan 2019 23:04:55.4104 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d8671276-34ff-4747-9977-08d6781933a5 X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[208.19.100.23]; Helo=[AVMBX3.microsemi.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN2PR19MB0735 Subject: [U-Boot] [PATCH v6 2/6] MSCC: Add support for Jaguar2 SOC family X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" As the Ocelot and Luton SoCs, this family of SoCs are found in Microsemi Switches solution. Signed-off-by: Horatiu Vultur Reviewed-by: Daniel Schwierzeck --- arch/mips/mach-mscc/Kconfig | 9 + arch/mips/mach-mscc/cpu.c | 7 + arch/mips/mach-mscc/dram.c | 2 +- arch/mips/mach-mscc/include/mach/common.h | 5 + arch/mips/mach-mscc/include/mach/ddr.h | 38 ++- arch/mips/mach-mscc/include/mach/jr2/jr2.h | 24 ++ .../mach-mscc/include/mach/jr2/jr2_devcpu_gcb.h | 20 ++ .../include/mach/jr2/jr2_devcpu_gcb_miim_regs.h | 25 ++ .../mips/mach-mscc/include/mach/jr2/jr2_icpu_cfg.h | 321 +++++++++++++++++++++ arch/mips/mach-mscc/reset.c | 17 ++ 10 files changed, 460 insertions(+), 8 deletions(-) create mode 100644 arch/mips/mach-mscc/include/mach/jr2/jr2.h create mode 100644 arch/mips/mach-mscc/include/mach/jr2/jr2_devcpu_gcb.h create mode 100644 arch/mips/mach-mscc/include/mach/jr2/jr2_devcpu_gcb_miim_regs.h create mode 100644 arch/mips/mach-mscc/include/mach/jr2/jr2_icpu_cfg.h diff --git a/arch/mips/mach-mscc/Kconfig b/arch/mips/mach-mscc/Kconfig index 37ef432..fc6aa03 100644 --- a/arch/mips/mach-mscc/Kconfig +++ b/arch/mips/mach-mscc/Kconfig @@ -33,6 +33,13 @@ config SOC_LUTON help This supports MSCC Luton family of SOCs. +config SOC_JR2 + bool "Jaguar2 SOC Family" + select SOC_VCOREIII + select DESIGNWARE_SPI + help + This supports MSCC Jaguar2 family of SOCs. + endchoice config SYS_CONFIG_NAME @@ -65,4 +72,6 @@ source "board/mscc/ocelot/Kconfig" source "board/mscc/luton/Kconfig" +source "board/mscc/jr2/Kconfig" + endmenu diff --git a/arch/mips/mach-mscc/cpu.c b/arch/mips/mach-mscc/cpu.c index 5be8ff6..4729b7a 100644 --- a/arch/mips/mach-mscc/cpu.c +++ b/arch/mips/mach-mscc/cpu.c @@ -87,8 +87,15 @@ int mach_cpu_init(void) ICPU_SPI_MST_CFG_CS_DESELECT_TIME(0x19) + ICPU_SPI_MST_CFG_CLK_DIV(9), BASE_CFG + ICPU_SPI_MST_CFG); #else +#ifdef CONFIG_SOC_OCELOT writel(ICPU_SPI_MST_CFG_CS_DESELECT_TIME(0x19) + ICPU_SPI_MST_CFG_CLK_DIV(9), BASE_CFG + ICPU_SPI_MST_CFG); +#endif +#ifdef CONFIG_SOC_JR2 + writel(ICPU_SPI_MST_CFG_FAST_READ_ENA + + ICPU_SPI_MST_CFG_CS_DESELECT_TIME(0x19) + + ICPU_SPI_MST_CFG_CLK_DIV(14), BASE_CFG + ICPU_SPI_MST_CFG); +#endif /* * Legacy and mainline linux kernel expect that the * interruption map was set as it was done by redboot. diff --git a/arch/mips/mach-mscc/dram.c b/arch/mips/mach-mscc/dram.c index 309007c..8002e07 100644 --- a/arch/mips/mach-mscc/dram.c +++ b/arch/mips/mach-mscc/dram.c @@ -19,7 +19,7 @@ static inline int vcoreiii_train_bytelane(void) ret = hal_vcoreiii_train_bytelane(0); -#ifdef CONFIG_SOC_OCELOT +#if defined(CONFIG_SOC_OCELOT) || defined(CONFIG_SOC_JR2) if (ret) return ret; ret = hal_vcoreiii_train_bytelane(1); diff --git a/arch/mips/mach-mscc/include/mach/common.h b/arch/mips/mach-mscc/include/mach/common.h index d18ae78..9cb2fbb 100644 --- a/arch/mips/mach-mscc/include/mach/common.h +++ b/arch/mips/mach-mscc/include/mach/common.h @@ -16,6 +16,11 @@ #include #include #include +#elif defined(CONFIG_SOC_JR2) +#include +#include +#include +#include #else #error Unsupported platform #endif diff --git a/arch/mips/mach-mscc/include/mach/ddr.h b/arch/mips/mach-mscc/include/mach/ddr.h index f445e63..7552acb 100644 --- a/arch/mips/mach-mscc/include/mach/ddr.h +++ b/arch/mips/mach-mscc/include/mach/ddr.h @@ -161,7 +161,7 @@ #endif -#ifdef CONFIG_SOC_OCELOT +#if defined(CONFIG_SOC_OCELOT) || defined(CONFIG_SOC_JR2) #define MIPS_VCOREIII_MEMORY_16BIT 1 #endif @@ -239,7 +239,7 @@ ICPU_MEMCTRL_CFG_MSB_ROW_ADDR(VC3_MPAR_row_addr_cnt - 1) | \ ICPU_MEMCTRL_CFG_MSB_COL_ADDR(VC3_MPAR_col_addr_cnt - 1) -#ifdef CONFIG_SOC_OCELOT +#if defined(CONFIG_SOC_OCELOT) || defined(CONFIG_SOC_JR2) #define MSCC_MEMPARM_PERIOD \ ICPU_MEMCTRL_REF_PERIOD_MAX_PEND_REF(8) | \ ICPU_MEMCTRL_REF_PERIOD_REF_PERIOD(VC3_MPAR_tREFI) @@ -378,7 +378,7 @@ static inline void memphy_soft_reset(void) PAUSE(); } -#ifdef CONFIG_SOC_OCELOT +#if defined(CONFIG_SOC_OCELOT) || defined(CONFIG_SOC_JR2) static u8 training_data[] = { 0xfe, 0x11, 0x33, 0x55, 0x77, 0x99, 0xbb, 0xdd }; static inline void sleep_100ns(u32 val) @@ -398,6 +398,7 @@ static inline void sleep_100ns(u32 val) ; } +#if defined(CONFIG_SOC_OCELOT) static inline void hal_vcoreiii_ddr_reset_assert(void) { /* DDR has reset pin on GPIO 19 toggle Low-High to release */ @@ -448,6 +449,26 @@ static inline void hal_vcoreiii_ddr_failed(void) panic("DDR init failed\n"); } +#else /* JR2 */ +static inline void hal_vcoreiii_ddr_reset_assert(void) +{ + /* Ensure the memory controller physical iface is forced reset */ + writel(readl(BASE_CFG + ICPU_MEMPHY_CFG) | + ICPU_MEMPHY_CFG_PHY_RST, BASE_CFG + ICPU_MEMPHY_CFG); + + /* Ensure the memory controller is forced reset */ + writel(readl(BASE_CFG + ICPU_RESET) | + ICPU_RESET_MEM_RST_FORCE, BASE_CFG + ICPU_RESET); +} + +static inline void hal_vcoreiii_ddr_failed(void) +{ + writel(0, BASE_CFG + ICPU_RESET); + writel(PERF_SOFT_RST_SOFT_CHIP_RST, BASE_CFG + PERF_SOFT_RST); + + panic("DDR init failed\n"); +} +#endif /* * DDR memory sanity checking done, possibly enable ECC. @@ -738,7 +759,7 @@ static inline void hal_vcoreiii_init_memctl(void) /* Wait for ZCAL to clear */ while (readl(BASE_CFG + ICPU_MEMPHY_ZCAL) & ICPU_MEMPHY_ZCAL_ZCAL_ENA) ; -#ifdef CONFIG_SOC_OCELOT +#if defined(CONFIG_SOC_OCELOT) || defined(CONFIG_SOC_JR2) /* Check no ZCAL_ERR */ if (readl(BASE_CFG + ICPU_MEMPHY_ZCAL_STAT) & ICPU_MEMPHY_ZCAL_STAT_ZCAL_ERR) @@ -752,7 +773,7 @@ static inline void hal_vcoreiii_init_memctl(void) writel(MSCC_MEMPARM_MEMCFG, BASE_CFG + ICPU_MEMCTRL_CFG); writel(MSCC_MEMPARM_PERIOD, BASE_CFG + ICPU_MEMCTRL_REF_PERIOD); -#ifdef CONFIG_SOC_OCELOT +#if defined(CONFIG_SOC_OCELOT) || defined(CONFIG_SOC_JR2) writel(MSCC_MEMPARM_TIMING0, BASE_CFG + ICPU_MEMCTRL_TIMING0); #else /* Luton */ clrbits_le32(BASE_CFG + ICPU_MEMCTRL_TIMING0, ((1 << 20) - 1)); @@ -767,7 +788,7 @@ static inline void hal_vcoreiii_init_memctl(void) writel(MSCC_MEMPARM_MR2, BASE_CFG + ICPU_MEMCTRL_MR2_VAL); writel(MSCC_MEMPARM_MR3, BASE_CFG + ICPU_MEMCTRL_MR3_VAL); -#ifdef CONFIG_SOC_OCELOT +#if defined(CONFIG_SOC_OCELOT) /* Termination setup - enable ODT */ writel(ICPU_MEMCTRL_TERMRES_CTRL_LOCAL_ODT_RD_ENA | /* Assert ODT0 for any write */ @@ -778,6 +799,9 @@ static inline void hal_vcoreiii_init_memctl(void) hal_vcoreiii_ddr_reset_release(); writel(readl(BASE_CFG + ICPU_GPR(7)) + 1, BASE_CFG + ICPU_GPR(7)); +#elif defined(CONFIG_SOC_JR2) + writel(ICPU_MEMCTRL_TERMRES_CTRL_ODT_WR_ENA(3), + BASE_CFG + ICPU_MEMCTRL_TERMRES_CTRL); #else /* Luton */ /* Termination setup - disable ODT */ writel(0, BASE_CFG + ICPU_MEMCTRL_TERMRES_CTRL); @@ -796,7 +820,7 @@ static inline void hal_vcoreiii_wait_memctl(void) /* Settle...? */ sleep_100ns(10000); -#ifdef CONFIG_SOC_OCELOT +#if defined(CONFIG_SOC_OCELOT) || defined(CONFIG_SOC_JR2) /* Establish data contents in DDR RAM for training */ __raw_writel(0xcacafefe, ((void __iomem *)MSCC_DDR_TO)); diff --git a/arch/mips/mach-mscc/include/mach/jr2/jr2.h b/arch/mips/mach-mscc/include/mach/jr2/jr2.h new file mode 100644 index 0000000..67244f6 --- /dev/null +++ b/arch/mips/mach-mscc/include/mach/jr2/jr2.h @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Microsemi Jaguar2 Switch driver + * + * Copyright (c) 2018 Microsemi Corporation + */ + +#ifndef _MSCC_JR2_H_ +#define _MSCC_JR2_H_ + +#include +#include + +/* + * Target offset base(s) + */ +#define MSCC_IO_ORIGIN1_OFFSET 0x70000000 +#define MSCC_IO_ORIGIN1_SIZE 0x00200000 +#define MSCC_IO_ORIGIN2_OFFSET 0x71000000 +#define MSCC_IO_ORIGIN2_SIZE 0x01000000 +#define BASE_CFG ((void __iomem *)0x70000000) +#define BASE_DEVCPU_GCB ((void __iomem *)0x71010000) + +#endif diff --git a/arch/mips/mach-mscc/include/mach/jr2/jr2_devcpu_gcb.h b/arch/mips/mach-mscc/include/mach/jr2/jr2_devcpu_gcb.h new file mode 100644 index 0000000..4a1228d --- /dev/null +++ b/arch/mips/mach-mscc/include/mach/jr2/jr2_devcpu_gcb.h @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2018 Microsemi Corporation + */ + +#ifndef _MSCC_JR2_DEVCPU_GCB_H_ +#define _MSCC_JR2_DEVCPU_GCB_H_ + +#define PERF_GPR 0x4 + +#define PERF_SOFT_RST 0x8 + +#define PERF_SOFT_RST_SOFT_NON_CFG_RST BIT(2) +#define PERF_SOFT_RST_SOFT_SWC_RST BIT(1) +#define PERF_SOFT_RST_SOFT_CHIP_RST BIT(0) + +#define GPIO_GPIO_ALT(x) (0x78 + 4 * (x)) +#define GPIO_GPIO_ALT1(x) (0x80 + 4 * (x)) + +#endif diff --git a/arch/mips/mach-mscc/include/mach/jr2/jr2_devcpu_gcb_miim_regs.h b/arch/mips/mach-mscc/include/mach/jr2/jr2_devcpu_gcb_miim_regs.h new file mode 100644 index 0000000..3c84edc --- /dev/null +++ b/arch/mips/mach-mscc/include/mach/jr2/jr2_devcpu_gcb_miim_regs.h @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2018 Microsemi Corporation + */ + +#ifndef _MSCC_JR2_DEVCPU_GCB_MIIM_REGS_H_ +#define _MSCC_JR2_DEVCPU_GCB_MIIM_REGS_H_ + +#define MIIM_MII_STATUS(gi) (0xc8 + (gi * 36)) +#define MIIM_MII_CMD(gi) (0xd0 + (gi * 36)) +#define MIIM_MII_DATA(gi) (0xd4 + (gi * 36)) + +#define MSCC_F_MII_STATUS_MIIM_STAT_BUSY(x) ((x) ? BIT(3) : 0) + +#define MSCC_F_MII_CMD_MIIM_CMD_VLD(x) ((x) ? BIT(31) : 0) +#define MSCC_F_MII_CMD_MIIM_CMD_PHYAD(x) (GENMASK(29, 25) & ((x) << 25)) +#define MSCC_F_MII_CMD_MIIM_CMD_REGAD(x) (GENMASK(24, 20) & ((x) << 20)) +#define MSCC_F_MII_CMD_MIIM_CMD_WRDATA(x) (GENMASK(19, 4) & ((x) << 4)) +#define MSCC_F_MII_CMD_MIIM_CMD_OPR_FIELD(x) (GENMASK(2, 1) & ((x) << 1)) +#define MSCC_F_MII_CMD_MIIM_CMD_SCAN(x) ((x) ? BIT(0) : 0) + +#define MSCC_M_MII_DATA_MIIM_DATA_SUCCESS GENMASK(17, 16) +#define MSCC_X_MII_DATA_MIIM_DATA_RDDATA(x) (((x) >> 0) & GENMASK(15, 0)) + +#endif diff --git a/arch/mips/mach-mscc/include/mach/jr2/jr2_icpu_cfg.h b/arch/mips/mach-mscc/include/mach/jr2/jr2_icpu_cfg.h new file mode 100644 index 0000000..6e0bbe2 --- /dev/null +++ b/arch/mips/mach-mscc/include/mach/jr2/jr2_icpu_cfg.h @@ -0,0 +1,321 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2018 Microsemi Corporation + */ + +#ifndef _MSCC_JR2_ICPU_CFG_H_ +#define _MSCC_JR2_ICPU_CFG_H_ + +#define ICPU_GPR(x) (0x4 * (x)) +#define ICPU_GPR_RSZ 0x4 + +#define ICPU_RESET 0x20 + +#define ICPU_RESET_CORE_RST_CPU_ONLY BIT(3) +#define ICPU_RESET_CORE_RST_PROTECT BIT(2) +#define ICPU_RESET_CORE_RST_FORCE BIT(1) +#define ICPU_RESET_MEM_RST_FORCE BIT(0) + +#define ICPU_GENERAL_CTRL 0x24 + +#define ICPU_GENERAL_CTRL_CPU_BUSIF_SLEEP_DIS BIT(15) +#define ICPU_GENERAL_CTRL_CPU_BUSIF_WERR_ENA BIT(14) +#define ICPU_GENERAL_CTRL_CPU_8051_IROM_ENA BIT(13) +#define ICPU_GENERAL_CTRL_CPU_MIPS_DIS BIT(12) +#define ICPU_GENERAL_CTRL_IF_MIIM_SLV_ENA BIT(11) +#define ICPU_GENERAL_CTRL_IF_PI_SLV_DONEPOL BIT(10) +#define ICPU_GENERAL_CTRL_IF_PI_MST_ENA BIT(9) +#define ICPU_GENERAL_CTRL_IF_PI_SLV_ENA BIT(8) +#define ICPU_GENERAL_CTRL_IF_SI_OWNER(x) (((x) << 6) & GENMASK(7, 6)) +#define ICPU_GENERAL_CTRL_IF_SI_OWNER_M GENMASK(7, 6) +#define ICPU_GENERAL_CTRL_IF_SI_OWNER_X(x) (((x) & GENMASK(7, 6)) >> 4) +#define ICPU_GENERAL_CTRL_IF_SI1_OWNER(x) (((x) << 4) & GENMASK(5, 4)) +#define ICPU_GENERAL_CTRL_IF_SI1_OWNER_M GENMASK(5, 4) +#define ICPU_GENERAL_CTRL_IF_SI1_OWNER_X(x) (((x) & GENMASK(5, 4)) >> 4) +#define ICPU_GENERAL_CTRL_SSI_MST_CONTENTION BIT(3) +#define ICPU_GENERAL_CTRL_CPU_BE_ENA BIT(2) +#define ICPU_GENERAL_CTRL_CPU_DIS BIT(1) +#define ICPU_GENERAL_CTRL_BOOT_MODE_ENA BIT(0) + +#define ICPU_SPI_MST_CFG 0x3c + +#define ICPU_SPI_MST_CFG_A32B_ENA BIT(11) +#define ICPU_SPI_MST_CFG_FAST_READ_ENA BIT(10) +#define ICPU_SPI_MST_CFG_CS_DESELECT_TIME(x) (((x) << 5) & GENMASK(9, 5)) +#define ICPU_SPI_MST_CFG_CS_DESELECT_TIME_M GENMASK(9, 5) +#define ICPU_SPI_MST_CFG_CS_DESELECT_TIME_X(x) (((x) & GENMASK(9, 5)) >> 5) +#define ICPU_SPI_MST_CFG_CLK_DIV(x) ((x) & GENMASK(4, 0)) +#define ICPU_SPI_MST_CFG_CLK_DIV_M GENMASK(4, 0) + +#define ICPU_SW_MODE 0x50 + +#define ICPU_SW_MODE_SW_PIN_CTRL_MODE BIT(13) +#define ICPU_SW_MODE_SW_SPI_SCK BIT(12) +#define ICPU_SW_MODE_SW_SPI_SCK_OE BIT(11) +#define ICPU_SW_MODE_SW_SPI_SDO BIT(10) +#define ICPU_SW_MODE_SW_SPI_SDO_OE BIT(9) +#define ICPU_SW_MODE_SW_SPI_CS(x) (((x) << 5) & GENMASK(8, 5)) +#define ICPU_SW_MODE_SW_SPI_CS_M GENMASK(8, 5) +#define ICPU_SW_MODE_SW_SPI_CS_X(x) (((x) & GENMASK(8, 5)) >> 5) +#define ICPU_SW_MODE_SW_SPI_CS_OE(x) (((x) << 1) & GENMASK(4, 1)) +#define ICPU_SW_MODE_SW_SPI_CS_OE_M GENMASK(4, 1) +#define ICPU_SW_MODE_SW_SPI_CS_OE_X(x) (((x) & GENMASK(4, 1)) >> 1) +#define ICPU_SW_MODE_SW_SPI_SDI BIT(0) + +#define ICPU_INTR_ENA 0x88 + +#define ICPU_DST_INTR_MAP(x) (0x98 + 0x4 * (x)) +#define ICPU_DST_INTR_MAP_RSZ 0x4 + +#define ICPU_TIMER_TICK_DIV 0x108 + +#define ICPU_TIMER_VALUE(x) (0x10c + 0x4 * (x)) +#define ICPU_TIMER_VALUE_RSZ 0x4 + +#define ICPU_TIMER_CTRL(x) (0x124 + 0x4 * (x)) +#define ICPU_TIMER_CTRL_RSZ 0x4 + +#define ICPU_TIMER_CTRL_MAX_FREQ_ENA BIT(3) +#define ICPU_TIMER_CTRL_ONE_SHOT_ENA BIT(2) +#define ICPU_TIMER_CTRL_TIMER_ENA BIT(1) +#define ICPU_TIMER_CTRL_FORCE_RELOAD BIT(0) + +#define ICPU_MEMCTRL_CTRL 0x130 + +#define ICPU_MEMCTRL_CTRL_PWR_DOWN BIT(3) +#define ICPU_MEMCTRL_CTRL_MDSET BIT(2) +#define ICPU_MEMCTRL_CTRL_STALL_REF_ENA BIT(1) +#define ICPU_MEMCTRL_CTRL_INITIALIZE BIT(0) + +#define ICPU_MEMCTRL_CFG 0x134 + +#define ICPU_MEMCTRL_CFG_DDR_512MBYTE_PLUS BIT(16) +#define ICPU_MEMCTRL_CFG_DDR_ECC_ERR_ENA BIT(15) +#define ICPU_MEMCTRL_CFG_DDR_ECC_COR_ENA BIT(14) +#define ICPU_MEMCTRL_CFG_DDR_ECC_ENA BIT(13) +#define ICPU_MEMCTRL_CFG_DDR_WIDTH BIT(12) +#define ICPU_MEMCTRL_CFG_DDR_MODE BIT(11) +#define ICPU_MEMCTRL_CFG_BURST_SIZE BIT(10) +#define ICPU_MEMCTRL_CFG_BURST_LEN BIT(9) +#define ICPU_MEMCTRL_CFG_BANK_CNT BIT(8) +#define ICPU_MEMCTRL_CFG_MSB_ROW_ADDR(x) (((x) << 4) & GENMASK(7, 4)) +#define ICPU_MEMCTRL_CFG_MSB_ROW_ADDR_M GENMASK(7, 4) +#define ICPU_MEMCTRL_CFG_MSB_ROW_ADDR_X(x) (((x) & GENMASK(7, 4)) >> 4) +#define ICPU_MEMCTRL_CFG_MSB_COL_ADDR(x) ((x) & GENMASK(3, 0)) +#define ICPU_MEMCTRL_CFG_MSB_COL_ADDR_M GENMASK(3, 0) + +#define ICPU_MEMCTRL_STAT 0x138 + +#define ICPU_MEMCTRL_STAT_RDATA_MASKED BIT(5) +#define ICPU_MEMCTRL_STAT_RDATA_DUMMY BIT(4) +#define ICPU_MEMCTRL_STAT_RDATA_ECC_ERR BIT(3) +#define ICPU_MEMCTRL_STAT_RDATA_ECC_COR BIT(2) +#define ICPU_MEMCTRL_STAT_PWR_DOWN_ACK BIT(1) +#define ICPU_MEMCTRL_STAT_INIT_DONE BIT(0) + +#define ICPU_MEMCTRL_REF_PERIOD 0x13c + +#define ICPU_MEMCTRL_REF_PERIOD_MAX_PEND_REF(x) (((x) << 16) & GENMASK(19, 16)) +#define ICPU_MEMCTRL_REF_PERIOD_MAX_PEND_REF_M GENMASK(19, 16) +#define ICPU_MEMCTRL_REF_PERIOD_MAX_PEND_REF_X(x) (((x) & GENMASK(19, 16)) >> 16) +#define ICPU_MEMCTRL_REF_PERIOD_REF_PERIOD(x) ((x) & GENMASK(15, 0)) +#define ICPU_MEMCTRL_REF_PERIOD_REF_PERIOD_M GENMASK(15, 0) + +#define ICPU_MEMCTRL_ZQCAL 0x140 + +#define ICPU_MEMCTRL_ZQCAL_ZQCAL_LONG BIT(1) +#define ICPU_MEMCTRL_ZQCAL_ZQCAL_SHORT BIT(0) + +#define ICPU_MEMCTRL_TIMING0 0x144 + +#define ICPU_MEMCTRL_TIMING0_RD_TO_WR_DLY(x) (((x) << 28) & GENMASK(31, 28)) +#define ICPU_MEMCTRL_TIMING0_RD_TO_WR_DLY_M GENMASK(31, 28) +#define ICPU_MEMCTRL_TIMING0_RD_TO_WR_DLY_X(x) (((x) & GENMASK(31, 28)) >> 28) +#define ICPU_MEMCTRL_TIMING0_WR_CS_CHANGE_DLY(x) (((x) << 24) & GENMASK(27, 24)) +#define ICPU_MEMCTRL_TIMING0_WR_CS_CHANGE_DLY_M GENMASK(27, 24) +#define ICPU_MEMCTRL_TIMING0_WR_CS_CHANGE_DLY_X(x) (((x) & GENMASK(27, 24)) >> 24) +#define ICPU_MEMCTRL_TIMING0_RD_CS_CHANGE_DLY(x) (((x) << 20) & GENMASK(23, 20)) +#define ICPU_MEMCTRL_TIMING0_RD_CS_CHANGE_DLY_M GENMASK(23, 20) +#define ICPU_MEMCTRL_TIMING0_RD_CS_CHANGE_DLY_X(x) (((x) & GENMASK(23, 20)) >> 20) +#define ICPU_MEMCTRL_TIMING0_RAS_TO_PRECH_DLY(x) (((x) << 16) & GENMASK(19, 16)) +#define ICPU_MEMCTRL_TIMING0_RAS_TO_PRECH_DLY_M GENMASK(19, 16) +#define ICPU_MEMCTRL_TIMING0_RAS_TO_PRECH_DLY_X(x) (((x) & GENMASK(19, 16)) >> 16) +#define ICPU_MEMCTRL_TIMING0_WR_TO_PRECH_DLY(x) (((x) << 12) & GENMASK(15, 12)) +#define ICPU_MEMCTRL_TIMING0_WR_TO_PRECH_DLY_M GENMASK(15, 12) +#define ICPU_MEMCTRL_TIMING0_WR_TO_PRECH_DLY_X(x) (((x) & GENMASK(15, 12)) >> 12) +#define ICPU_MEMCTRL_TIMING0_RD_TO_PRECH_DLY(x) (((x) << 8) & GENMASK(11, 8)) +#define ICPU_MEMCTRL_TIMING0_RD_TO_PRECH_DLY_M GENMASK(11, 8) +#define ICPU_MEMCTRL_TIMING0_RD_TO_PRECH_DLY_X(x) (((x) & GENMASK(11, 8)) >> 8) +#define ICPU_MEMCTRL_TIMING0_WR_DATA_XFR_DLY(x) (((x) << 4) & GENMASK(7, 4)) +#define ICPU_MEMCTRL_TIMING0_WR_DATA_XFR_DLY_M GENMASK(7, 4) +#define ICPU_MEMCTRL_TIMING0_WR_DATA_XFR_DLY_X(x) (((x) & GENMASK(7, 4)) >> 4) +#define ICPU_MEMCTRL_TIMING0_RD_DATA_XFR_DLY(x) ((x) & GENMASK(3, 0)) +#define ICPU_MEMCTRL_TIMING0_RD_DATA_XFR_DLY_M GENMASK(3, 0) + +#define ICPU_MEMCTRL_TIMING1 0x148 + +#define ICPU_MEMCTRL_TIMING1_RAS_TO_RAS_SAME_BANK_DLY(x) (((x) << 24) & GENMASK(31, 24)) +#define ICPU_MEMCTRL_TIMING1_RAS_TO_RAS_SAME_BANK_DLY_M GENMASK(31, 24) +#define ICPU_MEMCTRL_TIMING1_RAS_TO_RAS_SAME_BANK_DLY_X(x) (((x) & GENMASK(31, 24)) >> 24) +#define ICPU_MEMCTRL_TIMING1_BANK8_FAW_DLY(x) (((x) << 16) & GENMASK(23, 16)) +#define ICPU_MEMCTRL_TIMING1_BANK8_FAW_DLY_M GENMASK(23, 16) +#define ICPU_MEMCTRL_TIMING1_BANK8_FAW_DLY_X(x) (((x) & GENMASK(23, 16)) >> 16) +#define ICPU_MEMCTRL_TIMING1_PRECH_TO_RAS_DLY(x) (((x) << 12) & GENMASK(15, 12)) +#define ICPU_MEMCTRL_TIMING1_PRECH_TO_RAS_DLY_M GENMASK(15, 12) +#define ICPU_MEMCTRL_TIMING1_PRECH_TO_RAS_DLY_X(x) (((x) & GENMASK(15, 12)) >> 12) +#define ICPU_MEMCTRL_TIMING1_RAS_TO_RAS_DLY(x) (((x) << 8) & GENMASK(11, 8)) +#define ICPU_MEMCTRL_TIMING1_RAS_TO_RAS_DLY_M GENMASK(11, 8) +#define ICPU_MEMCTRL_TIMING1_RAS_TO_RAS_DLY_X(x) (((x) & GENMASK(11, 8)) >> 8) +#define ICPU_MEMCTRL_TIMING1_RAS_TO_CAS_DLY(x) (((x) << 4) & GENMASK(7, 4)) +#define ICPU_MEMCTRL_TIMING1_RAS_TO_CAS_DLY_M GENMASK(7, 4) +#define ICPU_MEMCTRL_TIMING1_RAS_TO_CAS_DLY_X(x) (((x) & GENMASK(7, 4)) >> 4) +#define ICPU_MEMCTRL_TIMING1_WR_TO_RD_DLY(x) ((x) & GENMASK(3, 0)) +#define ICPU_MEMCTRL_TIMING1_WR_TO_RD_DLY_M GENMASK(3, 0) + +#define ICPU_MEMCTRL_TIMING2 0x14c + +#define ICPU_MEMCTRL_TIMING2_PRECH_ALL_DLY(x) (((x) << 28) & GENMASK(31, 28)) +#define ICPU_MEMCTRL_TIMING2_PRECH_ALL_DLY_M GENMASK(31, 28) +#define ICPU_MEMCTRL_TIMING2_PRECH_ALL_DLY_X(x) (((x) & GENMASK(31, 28)) >> 28) +#define ICPU_MEMCTRL_TIMING2_MDSET_DLY(x) (((x) << 24) & GENMASK(27, 24)) +#define ICPU_MEMCTRL_TIMING2_MDSET_DLY_M GENMASK(27, 24) +#define ICPU_MEMCTRL_TIMING2_MDSET_DLY_X(x) (((x) & GENMASK(27, 24)) >> 24) +#define ICPU_MEMCTRL_TIMING2_REF_DLY(x) (((x) << 16) & GENMASK(23, 16)) +#define ICPU_MEMCTRL_TIMING2_REF_DLY_M GENMASK(23, 16) +#define ICPU_MEMCTRL_TIMING2_REF_DLY_X(x) (((x) & GENMASK(23, 16)) >> 16) +#define ICPU_MEMCTRL_TIMING2_INIT_DLY(x) ((x) & GENMASK(15, 0)) +#define ICPU_MEMCTRL_TIMING2_INIT_DLY_M GENMASK(15, 0) + +#define ICPU_MEMCTRL_TIMING3 0x150 + +#define ICPU_MEMCTRL_TIMING3_RMW_DLY(x) (((x) << 16) & GENMASK(19, 16)) +#define ICPU_MEMCTRL_TIMING3_RMW_DLY_M GENMASK(19, 16) +#define ICPU_MEMCTRL_TIMING3_RMW_DLY_X(x) (((x) & GENMASK(19, 16)) >> 16) +#define ICPU_MEMCTRL_TIMING3_ODT_RD_DLY(x) (((x) << 12) & GENMASK(15, 12)) +#define ICPU_MEMCTRL_TIMING3_ODT_RD_DLY_M GENMASK(15, 12) +#define ICPU_MEMCTRL_TIMING3_ODT_RD_DLY_X(x) (((x) & GENMASK(15, 12)) >> 12) +#define ICPU_MEMCTRL_TIMING3_ODT_WR_DLY(x) (((x) << 8) & GENMASK(11, 8)) +#define ICPU_MEMCTRL_TIMING3_ODT_WR_DLY_M GENMASK(11, 8) +#define ICPU_MEMCTRL_TIMING3_ODT_WR_DLY_X(x) (((x) & GENMASK(11, 8)) >> 8) +#define ICPU_MEMCTRL_TIMING3_LOCAL_ODT_RD_DLY(x) (((x) << 4) & GENMASK(7, 4)) +#define ICPU_MEMCTRL_TIMING3_LOCAL_ODT_RD_DLY_M GENMASK(7, 4) +#define ICPU_MEMCTRL_TIMING3_LOCAL_ODT_RD_DLY_X(x) (((x) & GENMASK(7, 4)) >> 4) +#define ICPU_MEMCTRL_TIMING3_WR_TO_RD_CS_CHANGE_DLY(x) ((x) & GENMASK(3, 0)) +#define ICPU_MEMCTRL_TIMING3_WR_TO_RD_CS_CHANGE_DLY_M GENMASK(3, 0) + +#define ICPU_MEMCTRL_TIMING4 0x154 + +#define ICPU_MEMCTRL_TIMING4_ZQCAL_INIT_DLY(x) (((x) << 20) & GENMASK(31, 20)) +#define ICPU_MEMCTRL_TIMING4_ZQCAL_INIT_DLY_M GENMASK(31, 20) +#define ICPU_MEMCTRL_TIMING4_ZQCAL_INIT_DLY_X(x) (((x) & GENMASK(31, 20)) >> 20) +#define ICPU_MEMCTRL_TIMING4_ZQCAL_LONG_DLY(x) (((x) << 8) & GENMASK(19, 8)) +#define ICPU_MEMCTRL_TIMING4_ZQCAL_LONG_DLY_M GENMASK(19, 8) +#define ICPU_MEMCTRL_TIMING4_ZQCAL_LONG_DLY_X(x) (((x) & GENMASK(19, 8)) >> 8) +#define ICPU_MEMCTRL_TIMING4_ZQCAL_SHORT_DLY(x) ((x) & GENMASK(7, 0)) +#define ICPU_MEMCTRL_TIMING4_ZQCAL_SHORT_DLY_M GENMASK(7, 0) + +#define ICPU_MEMCTRL_MR0_VAL 0x158 + +#define ICPU_MEMCTRL_MR1_VAL 0x15c + +#define ICPU_MEMCTRL_MR2_VAL 0x160 + +#define ICPU_MEMCTRL_MR3_VAL 0x164 + +#define ICPU_MEMCTRL_TERMRES_CTRL 0x168 + +#define ICPU_MEMCTRL_TERMRES_CTRL_ODT_RD_EXT BIT(11) +#define ICPU_MEMCTRL_TERMRES_CTRL_ODT_RD_ENA(x) (((x) << 7) & GENMASK(10, 7)) +#define ICPU_MEMCTRL_TERMRES_CTRL_ODT_RD_ENA_M GENMASK(10, 7) +#define ICPU_MEMCTRL_TERMRES_CTRL_ODT_RD_ENA_X(x) (((x) & GENMASK(10, 7)) >> 7) +#define ICPU_MEMCTRL_TERMRES_CTRL_ODT_WR_EXT BIT(6) +#define ICPU_MEMCTRL_TERMRES_CTRL_ODT_WR_ENA(x) (((x) << 2) & GENMASK(5, 2)) +#define ICPU_MEMCTRL_TERMRES_CTRL_ODT_WR_ENA_M GENMASK(5, 2) +#define ICPU_MEMCTRL_TERMRES_CTRL_ODT_WR_ENA_X(x) (((x) & GENMASK(5, 2)) >> 2) +#define ICPU_MEMCTRL_TERMRES_CTRL_LOCAL_ODT_RD_EXT BIT(1) +#define ICPU_MEMCTRL_TERMRES_CTRL_LOCAL_ODT_RD_ENA BIT(0) + +#define ICPU_MEMCTRL_DFT 0x16c + +#define ICPU_MEMCTRL_DFT_DDRDFT_LBW BIT(7) +#define ICPU_MEMCTRL_DFT_DDRDFT_GATE_ENA BIT(6) +#define ICPU_MEMCTRL_DFT_DDRDFT_TERM_ENA BIT(5) +#define ICPU_MEMCTRL_DFT_DDRDFT_A10 BIT(4) +#define ICPU_MEMCTRL_DFT_DDRDFT_STAT BIT(3) +#define ICPU_MEMCTRL_DFT_DDRDFT_MODE(x) (((x) << 1) & GENMASK(2, 1)) +#define ICPU_MEMCTRL_DFT_DDRDFT_MODE_M GENMASK(2, 1) +#define ICPU_MEMCTRL_DFT_DDRDFT_MODE_X(x) (((x) & GENMASK(2, 1)) >> 1) +#define ICPU_MEMCTRL_DFT_DDRDFT_ENA BIT(0) + +#define ICPU_MEMCTRL_DQS_DLY(x) (0x170 + 0x4 * (x)) +#define ICPU_MEMCTRL_DQS_DLY_RSZ 0x4 + +#define ICPU_MEMCTRL_DQS_DLY_TRAIN_DQ_ENA BIT(11) +#define ICPU_MEMCTRL_DQS_DLY_DQS_DLY_TRM1(x) (((x) << 8) & GENMASK(10, 8)) +#define ICPU_MEMCTRL_DQS_DLY_DQS_DLY_TRM1_M GENMASK(10, 8) +#define ICPU_MEMCTRL_DQS_DLY_DQS_DLY_TRM1_X(x) (((x) & GENMASK(10, 8)) >> 8) +#define ICPU_MEMCTRL_DQS_DLY_DQS_DLY_TRM0(x) (((x) << 5) & GENMASK(7, 5)) +#define ICPU_MEMCTRL_DQS_DLY_DQS_DLY_TRM0_M GENMASK(7, 5) +#define ICPU_MEMCTRL_DQS_DLY_DQS_DLY_TRM0_X(x) (((x) & GENMASK(7, 5)) >> 5) +#define ICPU_MEMCTRL_DQS_DLY_DQS_DLY(x) ((x) & GENMASK(4, 0)) +#define ICPU_MEMCTRL_DQS_DLY_DQS_DLY_M GENMASK(4, 0) + +#define ICPU_MEMCTRL_DQS_AUTO (0x178 + 0x4 * (x)) +#define ICPU_MEMCTRL_DQS_AUTO_RSZ 0x4 + +#define ICPU_MEMCTRL_DQS_AUTO_DQS_DRIFT(x) (((x) << 6) & GENMASK(7, 6)) +#define ICPU_MEMCTRL_DQS_AUTO_DQS_DRIFT_M GENMASK(7, 6) +#define ICPU_MEMCTRL_DQS_AUTO_DQS_DRIFT_X(x) (((x) & GENMASK(7, 6)) >> 6) +#define ICPU_MEMCTRL_DQS_AUTO_DQS_OVERFLOW BIT(5) +#define ICPU_MEMCTRL_DQS_AUTO_DQS_UNDERFLOW BIT(4) +#define ICPU_MEMCTRL_DQS_AUTO_DQS_AUTO_SRC BIT(3) +#define ICPU_MEMCTRL_DQS_AUTO_DQS_AUTO_UP BIT(2) +#define ICPU_MEMCTRL_DQS_AUTO_DQS_AUTO_DOWN BIT(1) +#define ICPU_MEMCTRL_DQS_AUTO_DQS_AUTO_ENA BIT(0) + +#define ICPU_MEMPHY_CFG 0x180 + +#define ICPU_MEMPHY_CFG_PHY_FLUSH_DIS BIT(10) +#define ICPU_MEMPHY_CFG_PHY_RD_ADJ_DIS BIT(9) +#define ICPU_MEMPHY_CFG_PHY_DQS_EXT BIT(8) +#define ICPU_MEMPHY_CFG_PHY_FIFO_RST BIT(7) +#define ICPU_MEMPHY_CFG_PHY_DLL_BL_RST BIT(6) +#define ICPU_MEMPHY_CFG_PHY_DLL_CL_RST BIT(5) +#define ICPU_MEMPHY_CFG_PHY_ODT_OE BIT(4) +#define ICPU_MEMPHY_CFG_PHY_CK_OE BIT(3) +#define ICPU_MEMPHY_CFG_PHY_CL_OE BIT(2) +#define ICPU_MEMPHY_CFG_PHY_SSTL_ENA BIT(1) +#define ICPU_MEMPHY_CFG_PHY_RST BIT(0) + +#define ICPU_MEMPHY_ZCAL 0x1a8 + +#define ICPU_MEMPHY_ZCAL_ZCAL_CLK_SEL BIT(9) +#define ICPU_MEMPHY_ZCAL_ZCAL_PROG_ODT(x) (((x) << 5) & GENMASK(8, 5)) +#define ICPU_MEMPHY_ZCAL_ZCAL_PROG_ODT_M GENMASK(8, 5) +#define ICPU_MEMPHY_ZCAL_ZCAL_PROG_ODT_X(x) (((x) & GENMASK(8, 5)) >> 5) +#define ICPU_MEMPHY_ZCAL_ZCAL_PROG(x) (((x) << 1) & GENMASK(4, 1)) +#define ICPU_MEMPHY_ZCAL_ZCAL_PROG_M GENMASK(4, 1) +#define ICPU_MEMPHY_ZCAL_ZCAL_PROG_X(x) (((x) & GENMASK(4, 1)) >> 1) +#define ICPU_MEMPHY_ZCAL_ZCAL_ENA BIT(0) +// +#define ICPU_MEMPHY_ZCAL_STAT 0x1ac + +#define ICPU_MEMPHY_ZCAL_STAT_ZCAL_ZCTRL(x) (((x) << 12) & GENMASK(31, 12)) +#define ICPU_MEMPHY_ZCAL_STAT_ZCAL_ZCTRL_M GENMASK(31, 12) +#define ICPU_MEMPHY_ZCAL_STAT_ZCAL_ZCTRL_X(x) (((x) & GENMASK(31, 12)) >> 12) +#define ICPU_MEMPHY_ZCAL_STAT_ZCAL_STAT_ODTPU(x) (((x) << 8) & GENMASK(9, 8)) +#define ICPU_MEMPHY_ZCAL_STAT_ZCAL_STAT_ODTPU_M GENMASK(9, 8) +#define ICPU_MEMPHY_ZCAL_STAT_ZCAL_STAT_ODTPU_X(x) (((x) & GENMASK(9, 8)) >> 8) +#define ICPU_MEMPHY_ZCAL_STAT_ZCAL_STAT_ODTPD(x) (((x) << 6) & GENMASK(7, 6)) +#define ICPU_MEMPHY_ZCAL_STAT_ZCAL_STAT_ODTPD_M GENMASK(7, 6) +#define ICPU_MEMPHY_ZCAL_STAT_ZCAL_STAT_ODTPD_X(x) (((x) & GENMASK(7, 6)) >> 6) +#define ICPU_MEMPHY_ZCAL_STAT_ZCAL_STAT_PU(x) (((x) << 4) & GENMASK(5, 4)) +#define ICPU_MEMPHY_ZCAL_STAT_ZCAL_STAT_PU_M GENMASK(5, 4) +#define ICPU_MEMPHY_ZCAL_STAT_ZCAL_STAT_PU_X(x) (((x) & GENMASK(5, 4)) >> 4) +#define ICPU_MEMPHY_ZCAL_STAT_ZCAL_STAT_PD(x) (((x) << 2) & GENMASK(3, 2)) +#define ICPU_MEMPHY_ZCAL_STAT_ZCAL_STAT_PD_M GENMASK(3, 2) +#define ICPU_MEMPHY_ZCAL_STAT_ZCAL_STAT_PD_X(x) (((x) & GENMASK(3, 2)) >> 2) +#define ICPU_MEMPHY_ZCAL_STAT_ZCAL_ERR BIT(1) +#define ICPU_MEMPHY_ZCAL_STAT_ZCAL_DONE BIT(0) + +#endif diff --git a/arch/mips/mach-mscc/reset.c b/arch/mips/mach-mscc/reset.c index 390bbd0..e0e610a 100644 --- a/arch/mips/mach-mscc/reset.c +++ b/arch/mips/mach-mscc/reset.c @@ -12,6 +12,22 @@ void _machine_restart(void) { +#if defined(CONFIG_SOC_JR2) + register u32 reg = readl(BASE_CFG + ICPU_GENERAL_CTRL); + /* Set owner */ + reg &= ~ICPU_GENERAL_CTRL_IF_SI_OWNER_M; + reg |= ICPU_GENERAL_CTRL_IF_SI_OWNER(1); + /* Set boot mode */ + reg |= ICPU_GENERAL_CTRL_BOOT_MODE_ENA; + writel(reg, BASE_CFG + ICPU_GENERAL_CTRL); + /* Read back in order to make BOOT mode setting active */ + reg = readl(BASE_CFG + ICPU_GENERAL_CTRL); + /* Reset CPU only - still executing _here_. but from cache */ + writel(readl(BASE_CFG + ICPU_RESET) | + ICPU_RESET_CORE_RST_CPU_ONLY | + ICPU_RESET_CORE_RST_FORCE, + BASE_CFG + ICPU_RESET); +#else register u32 resetbits = PERF_SOFT_RST_SOFT_CHIP_RST; (void)readl(BASE_DEVCPU_GCB + PERF_SOFT_RST); @@ -24,6 +40,7 @@ void _machine_restart(void) /* Do the global reset */ writel(resetbits, BASE_DEVCPU_GCB + PERF_SOFT_RST); +#endif while (1) ; /* NOP */ From patchwork Fri Jan 11 22:31:17 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Horatiu Vultur X-Patchwork-Id: 1023801 X-Patchwork-Delegate: daniel.schwierzeck@googlemail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=microchip.com Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 43bz8V6pvwz9s9h for ; Sat, 12 Jan 2019 10:09:30 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id B0602C21D4A; Fri, 11 Jan 2019 23:09:27 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAD_ENC_HEADER, SPF_HELO_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id EBACBC22261; Fri, 11 Jan 2019 23:05:52 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id A2A1BC22272; Fri, 11 Jan 2019 23:05:50 +0000 (UTC) Received: from NAM05-BY2-obe.outbound.protection.outlook.com (mail-eopbgr710066.outbound.protection.outlook.com [40.107.71.66]) by lists.denx.de (Postfix) with ESMTPS id 02656C221F7 for ; Fri, 11 Jan 2019 23:05:34 +0000 (UTC) Received: from BN6PR19CA0074.namprd19.prod.outlook.com (2603:10b6:404:133::12) by BYAPR19MB2982.namprd19.prod.outlook.com (2603:10b6:a03:13d::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1516.18; Fri, 11 Jan 2019 23:05:28 +0000 Received: from BL2FFO11FD007.protection.gbl (2a01:111:f400:7c09::139) by BN6PR19CA0074.outlook.office365.com (2603:10b6:404:133::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1516.14 via Frontend Transport; Fri, 11 Jan 2019 23:05:27 +0000 Authentication-Results: spf=softfail (sender IP is 208.19.100.23) smtp.mailfrom=microchip.com; lists.denx.de; dkim=none (message not signed) header.d=none;lists.denx.de; dmarc=none action=none header.from=microchip.com; Received-SPF: SoftFail (protection.outlook.com: domain of transitioning microchip.com discourages use of 208.19.100.23 as permitted sender) Received: from AVMBX3.microsemi.net (208.19.100.23) by BL2FFO11FD007.mail.protection.outlook.com (10.173.161.3) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.1471.13 via Frontend Transport; Fri, 11 Jan 2019 23:05:27 +0000 Received: from AVMBX3.microsemi.net (10.100.34.33) by AVMBX3.microsemi.net (10.100.34.33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1531.3; Fri, 11 Jan 2019 14:35:21 -0800 Received: from xrelay.vitesse.com (10.9.45.188) by avmbx3.microsemi.net (10.100.34.33) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1531.3 via Frontend Transport; Fri, 11 Jan 2019 14:35:21 -0800 Received: from soft-dev3.microsemi.net (soft-dev3.microsemi.net [10.205.27.16]) by xrelay.vitesse.com (8.13.8/8.13.8) with ESMTP id x0BMWMCq018804; Fri, 11 Jan 2019 14:35:10 -0800 From: Horatiu Vultur To: Date: Fri, 11 Jan 2019 23:31:17 +0100 Message-ID: <1547245880-23438-4-git-send-email-horatiu.vultur@microchip.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1547245880-23438-1-git-send-email-horatiu.vultur@microchip.com> References: <1547245880-23438-1-git-send-email-horatiu.vultur@microchip.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131917215277185453; (5a93feec-e11d-4f7b-166a-08d09f1f276b); () X-Forefront-Antispam-Report: CIP:208.19.100.23; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(396003)(346002)(39860400002)(376002)(136003)(2980300002)(199004)(189003)(498600001)(51416003)(81156014)(316002)(356004)(336012)(16586007)(48376002)(44832011)(106466001)(107886003)(53936002)(76176011)(86362001)(6916009)(105596002)(53416004)(305945005)(47776003)(5660300001)(486006)(2351001)(4326008)(446003)(50466002)(126002)(8676002)(69596002)(2906002)(50226002)(97736004)(26005)(77096007)(68736007)(14444005)(476003)(2616005)(11346002)(81166006)(36756003)(8936002)(54906003); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR19MB2982; H:AVMBX3.microsemi.net; FPR:; SPF:SoftFail; LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD007; 1:TZWElWgQHHp8/W12JgaY+gXrAOfrjqSsPTPx3c/wBFAlkL5W7Y35BTCl62jlMIIbgaZDp03VkAl0OTdzT5b/LJAltHPEdtK8gkfvHmBYrCJBgGy8YcECHdr/NDeW0Gbq X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 13288928-02cd-4733-703a-08d6781946c8 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(5600109)(711020)(2017052603328); SRVR:BYAPR19MB2982; X-Microsoft-Exchange-Diagnostics: 1; BYAPR19MB2982; 3:+PqN4z298TfgppCYwln7HTuFQ4xA56C0PRCNxFAfvOSQJ2OiEM4ImYFZNXhVhAHopTwAF8v+M+/qAE4yzuK5czPBw1O+x3AWWmZ0OFMBfmaCDsfTSxJGSxgjOhWPRxQIh1UKQrj5W88KQfiquRViHUQ476mnQc41SIlC7L11MyMs/+KlB7wL6DWGRJWKY/KHkGfnSjLMdkBw3PkFkSl0bEtQ+/CG9RjtJWAqOq6r4gDE32/LU4j0lQnu5k+bVtFyjkCIPoGGMnZzSnhVz/qVGaLIejOEffZmQ72CQGrDSekVGyvkpmt1qnWobruP+SgGKbIBerRAyFNwmmga++OU0CdkvlFabOc4Gw26w53+znsCDCpLTOp7t4jFDE1bQesM; 25:pesVtcvBVWerKkNX7ZPxS//gizXa9GMwEVh3+hZJEybanANybv1O2nfQBte84SinIPaU88wR0e/i1ws0P/XU/fQlkqJwEIK38EwGXqYTQV2VImncmc4NrCdD3lLbyt2mfGsd8JtR5+u4WaLwQcNBLM474uxjv3b9TxKoli+baooCvk1LP//sY5rMVVWps7lmOOykWdhrhB60JP0I7mkyp+HQagOrWiceTYTTb/7/2HqVo54IlIIOw4/txrxthCLUIjQXTuIOEv0flNxdIeZgC+0gOi+I5nc/X5ZDKwD2QKB3xwXLBYX8fqDjttsDGmMxpZaI/gY3y6h+WGhVQIl6kw== X-MS-TrafficTypeDiagnostic: BYAPR19MB2982: X-Microsoft-Exchange-Diagnostics: 1; BYAPR19MB2982; 31:yLBhG5weDYhWMdtcEjnO7aGSKrssah905evIbv87o23MsVm9BGO57c9o7OjX8XerGshVeUue6EkQVa/CbNkWi/FPqzcuIWn193xagx6ZNovzf/4BPgnt/QLfJLVDFMap0bPYkc5nMGIg7VHg+Uk70+0DuUG3es8px+HCmVH0phUWRo3AWsYgi2anH4iDA7BzlcRobF6EZaIBvlxa11Ik5q4rdKTO90piyEGfB6htJzg=; 4:8/FfKuRzOuCdAWCnZTa09xFn485BRadFpFD/NacFerDn6EerXVe6GypXkt3Ah60dXJieunUj96Ynq5xcMEdJvfckfsoirFL3fQpwSedSK0bYBdVGDxoUP/CWeEsC0YAgbbSBPqrbrZ2q05dyofhvTDGTpniZjo7ue/pcLltNZ1FXtJN8ZMuPMLpqIeUjFTkrVNvtNFfnVkPGy7IuOKi++0Ys03sDCMmu4Sj0IZ7QUBu5wSornw62fUjSifZ+SfaUmCCfE0OLj0zEFX17NGYUu3NaldNo8JEVAXXGUKi/L1mM9z60Xc2B17BM4yxtQAfS X-Microsoft-Antispam-PRVS: X-Forefront-PRVS: 09144DB0F7 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR19MB2982; 23:jl3/GxZ1EOLp5q8HaoRGyV5Eaph5MBeWTjFlZIAIO?= LvzvtfZ2tye1Ma6NWNdCqAbzqfPodocL/JVqgGYNj2YP/SsZFHyBpVzqerVFtC93v+gEUjN+osAJWjlo9ssIc3RenxtgAlhX0VriJmtfLCH+a8aTqyebydYrHzMNHw5fxbHVZKr2ywFsiFpCAYefQPH+cFJqVXgt4iY877g05yD48DkWjNa9u0o6Qpwyv9cvREv6p8tKXOmCFunJkQ1VHCUj7cnEYGjod9WLx88cIpe/34h4zhn4ElIjUrV+KsGYK0kZDa5MXCfzP5ukwRbMH9vF+l2taU4rU39MVDFdL0vEnwIiB7/AerubDhTysNL5nRQKBN3rELRdxqo8QkU27+de8lut8TqIC2z3qxTgHqx+QthWbqYcfpkFCgwrGI2yrp3mnZILbg9Yq2H9ubHp+ytjVeVGzMU8LJqErrzjBJrF2AI0kkPIdRfo+aFh9OHaV257U9IIGCzBoBsfXktaQEhSjVghoaOrfLfPKIBLo16r4yQxrBlhF/lPXrmqpUnKr6h4KQCOAFSJOpy+NS9U+rYGqXc7nMuOkBCX6gfvoRblW/9tMBAIaM1zI5bRRyulWaCNl4xxFdadf8PO4vBwQSlROcxiT/paqrt16fZR92piSBd9KGUrg4yrtOFYnAjYIj22rB7UGXKN0Z53wzyPckHC2fRjeT9MhoiKqxXzrUakaSov2El4ovngvCiDhyBTQwCIpvk8YgxEgG3/ERxWBPnAW5RAYeiLgawrrctqvtoA7WYuOjPlvsSu7obhf312hQ6AZZpJp3UiEtUaKx/CNTNkBmt9GK4gzsSXSs2qpt1ymLgjT4e0ZHCO2xtgcO4sk2OeceS70NszR6ToJTvycLKb6izEyS7q1Z+gNgak5ZbwDd0hQRXF5Zz2VCtH7SQDfz5bspf4qU3HOD7DMdZohMDRuVzlSntmUfh+ItkfcrPrp2mX+n29obAQzq64cudUfNNs2Q0Ajk5NRfC8oNaM69FZ/h5vpo384+H78QrhD74iSV5j8zOD3dPv4N3/EQceh6NrhWwJWkZxuim5D1Py4FN+XfIVtbS0gwaJQCsAkEU7YD1aws//YM07ocUzHRRorA= X-Microsoft-Antispam-Message-Info: IA8Skng52yZqmwi3pK8tixOnnrEERt9EQdyLJJNWW+Y8sshO55QvvDshQBy6oTGP6ef2wS/dWsQdfhAsYyFaHitdz0CuDg+1A3Nw7driOT+mc/3k5xHU30L5JFgVXQMjtBhT/KUo9OAAAt3q6pGXnsm9zoTwOD+JIMMZxEFG+9cLS1PQ67rL9MVj2dheZ8ztMp8eUFyDc1GVBLqqVrPZp9qciJtOWsfeFZ6BTrfs+oxmOmxnl6zpTR6KoKqdzO41VkHUwv0gABp7bjO4mxgoSDPQN5cB2olMYd2rj68LpxxmeFMiVdOfS2BzBB3nhyHsr28T/XHyPLBU1gQVbHDea9Q0SCov0wTOViKKIJUxB24TiBvleSrMr61qruyUzf/+AfU9NrMdITMnCgiL29XYVe7WXdJDW4wySbpD+/nA2G0= X-Microsoft-Exchange-Diagnostics: 1; BYAPR19MB2982; 6:u7aJhuM4dYUCE7lOtMRXApCqaXH3t6K1PhP7k8rbexDJN+rq4UGYKql5epBhsTPOmMdZFb1FudsezQMswzGyaQ5TRJOgI0KEZI5LgC4Scm5E7WG/iay7IhSaXUejGw1ABz/QWjcHZ4v6RaUEfNCQgRF2V2H+CZb0wW2v1FexbC+7B1DhP8D/9iz+tx5jjqYRQoNJAqQe227XAirybfBJVFvGkB7qLKc9DNZxdrCj7C4g1Q4Dg3tR+PsihpR3JNYCLvcaN8Ky5zoSRl13wbjx633wQcS61a8jWyIXsgg+VRTXWKO0rkK/cNvoINCT/BXX5Ki+t5VMD+jpMOZLWHrFnBeec11bcdia2BHDI63WSzQwxfTJpj48xa7FF7v8OOBKXjTrsj1MVQskTlP/JS+SVTr+Ov9MNmTxmfNliBtN/XNpsh8awJ4lYPN0Ig7RCn0rlKEvaCzjoP93OlU3T55fcQ==; 5:ACZzPov31/qTgePxc/+6tSxSCrDjbCukJbVFAJ5Lv5Jj4qJQJ9KAoI1shL3t8wndAHbu/5pokkyCNeG74iZwQsMsKigLshShNHkD9noKO4XwCUWoD4RjMRDLXz7jfSaV82yydMchlAaEct34LK+dj9rkBQVy8qpnJee26kwgmDML9ZgtPoqeW4RnMz181XZj8zEAIP2/7aXc8UzMYmzNAg==; 7:4ILEtf4Z8loXE90rj6zAvHlX70S0q0urNy4Qb1lNYmgy7WxClXD5sZXK47mJSB7kINK7cL4UN3PDZnDNXSQEfE8Wy+4wleBI3+hvibMjbLyBo++PU0SLb2iLkfOcY+vKIW+q6SOyH55oh2FKwbNtaQ== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jan 2019 23:05:27.4997 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 13288928-02cd-4733-703a-08d6781946c8 X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[208.19.100.23]; Helo=[AVMBX3.microsemi.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR19MB2982 Subject: [U-Boot] [PATCH v6 3/6] MSCC: Add device tree for Jaguar2 board X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Add device tree based on evaluation board pcb110. Signed-off-by: Horatiu Vultur --- MAINTAINERS | 1 + arch/mips/dts/jr2_pcb110.dts | 74 +++++++++++++++++ arch/mips/dts/mscc,jr2.dtsi | 187 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 262 insertions(+) create mode 100644 arch/mips/dts/jr2_pcb110.dts create mode 100644 arch/mips/dts/mscc,jr2.dtsi diff --git a/MAINTAINERS b/MAINTAINERS index 495d3e5..f05c36b 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -521,6 +521,7 @@ F: arch/mips/mach-mscc/ F: arch/mips/dts/luton* F: arch/mips/dts/mscc* F: arch/mips/dts/ocelot* +F: arch/mips/dts/jr2* F: board/mscc/ F: configs/mscc* F: drivers/gpio/mscc_sgpio.c diff --git a/arch/mips/dts/jr2_pcb110.dts b/arch/mips/dts/jr2_pcb110.dts new file mode 100644 index 0000000..ddc30ff --- /dev/null +++ b/arch/mips/dts/jr2_pcb110.dts @@ -0,0 +1,74 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2018 Microsemi Corporation + */ + +/dts-v1/; +#include "mscc,jr2.dtsi" + +/ { + model = "Jaguar2 Cu8-Sfp16 PCB110 Reference Board"; + compatible = "mscc,jr2-pcb110", "mscc,jr2"; + + aliases { + spi0 = &spi0; + serial0 = &uart0; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + gpio-leds { + compatible = "gpio-leds"; + + status_green { + label = "pcb110:green:status"; + gpios = <&gpio 12 0>; + default-state = "on"; + }; + + status_red { + label = "pcb110:red:status"; + gpios = <&gpio 13 0>; + default-state = "off"; + }; + }; +}; + +&uart0 { + status = "okay"; +}; + +&spi0 { + status = "okay"; + spi-flash@0 { + compatible = "spi-flash"; + spi-max-frequency = <18000000>; /* input clock */ + reg = <0>; /* CS0 */ + }; +}; + +&gpio { + /* SPIO only use DO, CLK, no inputs */ + sgpio1_pins: sgpio1-pins { + pins = "GPIO_4", "GPIO_5"; + function = "sg1"; + }; +}; + +&sgpio { + status = "okay"; + sgpio-ports = <0x00ffffff>; +}; + +&sgpio1 { + status = "okay"; + sgpio-ports = <0x00ff0000>; +}; + +&sgpio2 { + status = "okay"; + sgpio-ports = <0x3f00ffff>; + gpio-ranges = <&sgpio2 0 0 96>; +}; diff --git a/arch/mips/dts/mscc,jr2.dtsi b/arch/mips/dts/mscc,jr2.dtsi new file mode 100644 index 0000000..0900926 --- /dev/null +++ b/arch/mips/dts/mscc,jr2.dtsi @@ -0,0 +1,187 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2018 Microsemi Corporation + */ + +/ { + #address-cells = <1>; + #size-cells = <1>; + compatible = "mscc,jr2"; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu@0 { + compatible = "mips,mips24KEc"; + device_type = "cpu"; + clocks = <&cpu_clk>; + reg = <0>; + }; + }; + + aliases { + serial0 = &uart0; + }; + + cpuintc: interrupt-controller@0 { + #address-cells = <0>; + #interrupt-cells = <1>; + interrupt-controller; + compatible = "mti,cpu-interrupt-controller"; + }; + + cpu_clk: cpu-clock { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <500000000>; + }; + + ahb_clk: ahb-clk { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <250000000>; + }; + + ahb { + compatible = "simple-bus"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0x70000000 0x2000000>; + + interrupt-parent = <&intc>; + + cpu_ctrl: syscon@0 { + compatible = "mscc,jr2-cpu-syscon", "syscon"; + reg = <0x0 0x2c>; + }; + + intc: interrupt-controller@70 { + compatible = "mscc,jr2-icpu-intr"; + reg = <0x70 0x94>; + #interrupt-cells = <1>; + interrupt-controller; + interrupt-parent = <&cpuintc>; + interrupts = <2>; + }; + + uart0: serial@100000 { + pinctrl-0 = <&uart_pins>; + pinctrl-names = "default"; + compatible = "ns16550a"; + reg = <0x100000 0x20>; + interrupts = <6>; + clocks = <&ahb_clk>; + reg-io-width = <4>; + reg-shift = <2>; + + status = "disabled"; + }; + + uart2: serial@100800 { + pinctrl-0 = <&uart2_pins>; + pinctrl-names = "default"; + compatible = "ns16550a"; + reg = <0x100800 0x20>; + interrupts = <7>; + clocks = <&ahb_clk>; + reg-io-width = <4>; + reg-shift = <2>; + + status = "disabled"; + }; + + spi0: spi-master@101000 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "snps,dw-apb-ssi"; + reg = <0x101000 0x40>; + num-chipselect = <4>; + bus-num = <0>; + reg-io-width = <4>; + reg-shift = <2>; + spi-max-frequency = <18000000>; /* input clock */ + clocks = <&ahb_clk>; + + status = "disabled"; + }; + + reset@1010008 { + compatible = "mscc,jr2-chip-reset"; + reg = <0x1010008 0x4>; + }; + + gpio: pinctrl@1070034 { + compatible = "mscc,jaguar2-pinctrl"; + reg = <0x1010038 0x90>; + gpio-controller; + #gpio-cells = <2>; + gpio-ranges = <&gpio 0 0 64>; + + sgpio_pins: sgpio-pins { + pins = "GPIO_0", "GPIO_1", "GPIO_2", "GPIO_3"; + function = "sg0"; + }; + + sgpio1_pins: sgpio1-pins { + pins = "GPIO_4", "GPIO_5", "GPIO_12", "GPIO_13"; + function = "sg1"; + }; + + sgpio2_pins: sgpio2-pins { + pins = "GPIO_30", "GPIO_31", + "GPIO_32", "GPIO_33"; + function = "sg2"; + }; + + uart_pins: uart-pins { + pins = "GPIO_10", "GPIO_11"; + function = "uart"; + }; + + uart2_pins: uart2-pins { + pins = "GPIO_24", "GPIO_25"; + function = "uart2"; + }; + }; + + sgpio: gpio@1010150 { + compatible = "mscc,ocelot-sgpio"; + status = "disabled"; + pinctrl-0 = <&sgpio_pins>; + pinctrl-names = "default"; + reg = <0x1010150 0x100>; + gpio-controller; + #gpio-cells = <2>; + gpio-ranges = <&sgpio 0 0 64>; + gpio-bank-name = "sgpio0_"; + sgpio-clock = <0x14>; + }; + + sgpio1: gpio@101025c { + compatible = "mscc,ocelot-sgpio"; + status = "disabled"; + pinctrl-0 = <&sgpio1_pins>; + pinctrl-names = "default"; + reg = <0x101025c 0x100>; + gpio-controller; + #gpio-cells = <2>; + gpio-ranges = <&sgpio1 0 0 64>; + gpio-bank-name = "sgpio1_"; + sgpio-clock = <0x14>; + }; + + sgpio2: gpio@1010368 { + compatible = "mscc,ocelot-sgpio"; + status = "disabled"; + pinctrl-0 = <&sgpio2_pins>; + pinctrl-names = "default"; + reg = <0x1010368 0x100>; + gpio-controller; + #gpio-cells = <2>; + gpio-ranges = <&sgpio2 0 0 64>; + gpio-bank-name = "sgpio2_"; + sgpio-clock = <0x14>; + }; + }; +}; From patchwork Fri Jan 11 22:31:18 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Horatiu Vultur X-Patchwork-Id: 1023802 X-Patchwork-Delegate: daniel.schwierzeck@googlemail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=microchip.com Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 43bz9P31PMz9sCr for ; Sat, 12 Jan 2019 10:10:17 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 22C27C2225D; Fri, 11 Jan 2019 23:09:50 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAD_ENC_HEADER, SPF_HELO_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id C910AC2222C; Fri, 11 Jan 2019 23:06:28 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 856B0C21D4A; Fri, 11 Jan 2019 23:06:27 +0000 (UTC) Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-eopbgr740077.outbound.protection.outlook.com [40.107.74.77]) by lists.denx.de (Postfix) with ESMTPS id B7DADC21D4A for ; Fri, 11 Jan 2019 23:06:04 +0000 (UTC) Received: from BN6PR19CA0088.namprd19.prod.outlook.com (2603:10b6:404:133::26) by BYAPR19MB2982.namprd19.prod.outlook.com (2603:10b6:a03:13d::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1516.18; Fri, 11 Jan 2019 23:06:03 +0000 Received: from BY2FFO11FD029.protection.gbl (2a01:111:f400:7c0c::118) by BN6PR19CA0088.outlook.office365.com (2603:10b6:404:133::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1516.14 via Frontend Transport; Fri, 11 Jan 2019 23:06:02 +0000 Authentication-Results: spf=softfail (sender IP is 208.19.99.223) smtp.mailfrom=microchip.com; lists.denx.de; dkim=none (message not signed) header.d=none;lists.denx.de; dmarc=none action=none header.from=microchip.com; Received-SPF: SoftFail (protection.outlook.com: domain of transitioning microchip.com discourages use of 208.19.99.223 as permitted sender) Received: from AUSMBX3.microsemi.net (208.19.99.223) by BY2FFO11FD029.mail.protection.outlook.com (10.1.14.212) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.20.1471.13 via Frontend Transport; Fri, 11 Jan 2019 23:06:01 +0000 Received: from AUSMBX3.microsemi.net (10.201.34.33) by AUSMBX3.microsemi.net (10.201.34.33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1531.3; Fri, 11 Jan 2019 16:35:52 -0600 Received: from xrelay.vitesse.com (10.9.45.188) by ausmbx3.microsemi.net (10.201.34.33) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1531.3 via Frontend Transport; Fri, 11 Jan 2019 16:35:52 -0600 Received: from soft-dev3.microsemi.net (soft-dev3.microsemi.net [10.205.27.16]) by xrelay.vitesse.com (8.13.8/8.13.8) with ESMTP id x0BMWMCr018804; Fri, 11 Jan 2019 14:35:40 -0800 From: Horatiu Vultur To: Date: Fri, 11 Jan 2019 23:31:18 +0100 Message-ID: <1547245880-23438-5-git-send-email-horatiu.vultur@microchip.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1547245880-23438-1-git-send-email-horatiu.vultur@microchip.com> References: <1547245880-23438-1-git-send-email-horatiu.vultur@microchip.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131917215616612752; (5a93feec-e11d-4f7b-166a-08d09f1f276b); () X-Forefront-Antispam-Report: CIP:208.19.99.223; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(396003)(346002)(39860400002)(376002)(136003)(2980300002)(199004)(189003)(498600001)(51416003)(81156014)(316002)(6666004)(356004)(336012)(16586007)(48376002)(44832011)(106466001)(107886003)(53936002)(76176011)(86362001)(6916009)(105596002)(53416004)(305945005)(47776003)(5660300001)(486006)(2351001)(4326008)(446003)(50466002)(126002)(8676002)(69596002)(2906002)(50226002)(97736004)(26005)(77096007)(68736007)(476003)(2616005)(11346002)(81166006)(36756003)(8936002)(54906003); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR19MB2982; H:AUSMBX3.microsemi.net; FPR:; SPF:SoftFail; LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD029; 1:HgGE/zzUvdKkOl6CNhVOtE4keBeTeTPE+dr9dngcnNck7EUJn8dJfxakCyZfbaiII39BBGj8JLbENwZdfMQQyUUUPcl2vlVD5+RpcDt3ke5Pe5ywbaZH+9bB8LC5IXEB X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f6443005-d96a-48ed-d6f5-08d678195b0a X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(5600109)(711020)(2017052603328); SRVR:BYAPR19MB2982; X-Microsoft-Exchange-Diagnostics: 1; BYAPR19MB2982; 3:mfEl5wj2PS33VWOQfa2hFVc4FIT4rWMbZhOjzvvoUaaJA5ivuufdkvcMWQFBouIDq89+OgD5kmFm387mxTjYCPUMQVVLgxo2/GiBFhSMHRHoa8LWQ/H/5RWCJfTc5/jCn0/WJy99VUziobxiY5Ef19QPZ8D3PjZrUWfEnq1vWpdRTsxDGdvzz/YvtBvwcOI5GpOrXUzRoJJoRIA7v6whuwnnNM2Hz5g4EedOWcIpNafS9re+1OXKxgPW+TYTAH2802TnmtqLuKSAtqYTOq//KHCa5Dr6dnD1IY6nMs7ZhmnLXIQluvyADuTiO2ToZs4HkhO+FoaLqNzrWXUCkpRoPwE9CgSRh8mQfBzr6HuVA5SCwCGE/s28b3uOUBwt83a+; 25:rsCU+kNKVVY8Px8Hd+hVgurbMJfTnq2zqLV1OjnrMy1I/EFE0/mZ1eTZSepwLSczDuFmqymNPRIcNzvci4jYhgxPIM1p/jzN+g80F9DR/LrSade6ey0LgyUogxRFy5SCyuAMrF/waod92vLJzFE6OKeefHWgw8jUMEiWt+20b00eXb5fufCPMdMNwiGhzTY0JFAMjt9F9O8ncDXRR5n4qCie/oChWuUBFxCaWT7myZK+3Hs0owDNzIsmraflRtDR97b5bh8dalwBsZLIGhcR2RpTY8yzMiDOMkH78BAukJQ4FQpiTOWKH+ra3zROjZ3psnl5xSlpU5YIHwZCvhy5Lw== X-MS-TrafficTypeDiagnostic: BYAPR19MB2982: X-Microsoft-Exchange-Diagnostics: 1; BYAPR19MB2982; 31:P/DnjTxDC6laAO0ossdYsVQR9cPrEdVUtA7Go/HkWqxKzxCjSo21MF35QmhYn/s8GFz73NBtiuyW2zS2aeOeWs7e2XzVIGEk5M4dygCYe0vP1tZ5vtq1yDC25aQGzgF1WQDDmIUacnu8JAXRugedgAwJA1MUt5F9Nteu/DaOk1P2KcEZ5a65O8VYbwLvhDWIRCrs/oW52AJxMd21pnLwncwC4jKeO8rprQAYs+kdtNI=; 4:aQ3ffZeoxJxJNS6/cvj611/orVV2IBqaj1j/GKM4CzJtsbngi2XOVOyg6fsZp+zpG+Fagn4nzTzUhGDTE3H+4EO4INNsnaLBR2K+WwPNWR7uNC+53uVJyLF+oFnzqJtIGkY1XCd+7XYFhD+pprnZcbJn5dCM56UE2XdLU599TZldwI5JZ6K8dDWwK1JWwzdiUsUR8yx22QGdsElAdQ00jVVlJ9yBwsOcF8gshVbsnvFHWNJLEhw0NtLs7ClzeWsd34AhMvxi+yUc8ejLGXFinUIlwUNWtaQ8L3lpyfHYrvKie0AwpMKlfmaw1wENkXFz X-Microsoft-Antispam-PRVS: X-Forefront-PRVS: 09144DB0F7 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR19MB2982; 23:AMM6+2Tcqjwspn3BhqTx4NG977s+eXd1fCvFhnf/a?= JMISv5ZqX8/UofU4QfHCQ5VIiP4M6MUl3cg+YEle69xG6xhGF+DR9QpUi2MT/ZZJCTNf6d0/C7WPCfV/3T8MGUOblPdygOr8ogP61rYGNFTeoIQdxdwDiNiWa+0UQ8Q/I6C2EjrAL0zptfvfDDM4Y8IsL+xx3/nzAS404fvW4HeW8ZlOIhgWtB9ZBDJewIyIzWZjbFkLYr3Xbcy84t+zCh7PwUfjyUChZxS00jqYXokbj4ukPBG1sh2popto3W7d9ScGI86SCBQT3c4FHGceKV539GRd1U14pY6cGBLBHxxlV9Lwg9gXuPD20ZNgQQsYFmRQthGEUwyeFS8v1YwoSbut34kly4iwDAm5ZlVn4ptYSFGb1HPicnqzAdaFcofdnwz3GKx+xaj8pvhCBZ7ZepT/lRWirNmN3gPbAdxZY/9b03po4gAOqnubMliFzQrK0xrITqj4IqCu2E0zCXaZhs9wuuaLdfQI4mi4GXY/X+Nwynmf1KJ1o569H7OLeF1G5rj5A3kgFRCaAYPQM5d0ACfBB7lgHYprbsjGXAydcTyDwegqE/GazL6/NY8YaG5804DQGgtM1zGSR+6LNxQqdzXdVsKov0v8GYrDOkzLjRHnNep5vG92gIzIHcqlncY/FjzP6G1puOaqv56gimlxA4w/Y1hbip+lVIdxCxfdUMwtmZ/rcMTm7L20r5q+gafMrZJGPILd2VPBD9eTTOZ/SQ0+IgnzgVkbXxck33q5NiLDmnT7BncOKH5DoLf0NdLj4zBPMrZs11iDWLsBTm2UapMlaaBYBAjh97jQlHaTJNQTzmEYJPGqJqYXKqM7xCqw+bd5EWpdnsHwDf1NxSz0LtAYSBFYTB2z1drq5vNHtn7hDGqxMvVHAcM3qun/Dh++XmL33XkteHVUHXfxNXaAuucyjVX9kf9hMi3mi2bgGYf88TPKpkHwXJrUQyFEV50N4IBf5alHXrfCMnPxN5I0xHDTIWnevGNgnGuSb/jX1KQwhLQEkOci/ditYlpkWZvJ0QTxFppF1I5aMy2iTUINVlEMrN9zFEnDH1EaDPBp3TGL0aPPpKM1FyEyestIh91GGw= X-Microsoft-Antispam-Message-Info: 4CUnL9DaHrpnvYBnp07Nmk2NANKlkreZwV9MgId1K7aUi1fMSuOFPRTmEJ+JMZd43f2FzIq86PZ4YfXUGbeNaMi7BKDi5iArTHdeyTDynoReV/fzHucNb9LCd7DGrYZa4JIiUQhGzdXCTKNkuiJmvajdSP2NJQGJQUJ6Gvfc0Mh5w4ZTQM5m5reTdPLEZxWFDvHyK6IilN/je4N7prUA9TMZRI40xhPip1MkPiDe8Fo2jJjBMmYvPEdTFyiBjy6H1b7DmKEl08UXnzXigd66XBgV2MS3xLklgSCsNYEU1TEdISgBPhPgVtz2pOoy3cOMz8yIwnIlhTYxkGAx+DLXYW2Pj3745Jb2FGosRikbeAYBpVuPiLrqDL9x6UTTS8b3RuPboRyQUuOPO8JmGXLDdiVyRfMao30n/raPBvYJd9w= X-Microsoft-Exchange-Diagnostics: 1; BYAPR19MB2982; 6:YFmPlbWPDrNtwbl6oECbjj3gvWvMOkg0U4FwqC5ONoowEAmVZQqNaGLxittIfK96AhINKHRkvM+4KW1TEX709LBp0sq/qFPfS97aWpyJPC5pgw4WWs2+GSN3C6km0BSoX2jhl9PERStHdYGb6jzKUkfzRrGATF+e9cQqsWmue+9f6jOzqGZFGLgJpQdFyMZhAm4Ln9BT1K04tI5B0M9iVfkeWm4/ZWmpcdDvJDgA+GhJFxWNUI96e5gdOmpoLVIsTBEjaJbHI3HH2n9UlPVYHQNYzUb/c/NQE/pjMi5C82CDoI5iuZf7nR6STC1lH3uPKLjf+WMaWsUNKg8soObqFht6ejtfqr+mqY7rsDKQa+sc1Mx5yTM/uNcHcr8Uurj34LzJEhvlXzEK1DSN88Tz2z5cjSac2gLaIFuEL2gjkG+XQlOVDXllEKgKkgUK80sS8ibFf0S80pt0j0N/trd9aQ==; 5:5McV0m2ttRIjj6pY8HPmYUnzWT3Fsxl1Kg3o0nYITUm7si+PrJXRrbjsr5YfC3RTlqLl6D/HYr1S4imfLibMQD7w0PU+rYjX+/WD+f8fxQNrmOzdgCe4Uvw8PaG2/HJ+BVMYL8gqqKO8n5O7JCik4X1Rv/lMwECFJrG2r2wSI4BB/5kKbxmhPENI0PLUU05z1hpOb2TCWb7yQHgQROdtPw==; 7:wrKe6ArarOtedkDvSJJ+T33g5UdxvXLc5nLcIRoR8pQjJkxZDG+fLSVfJERjw90Su+asYJ0WAoy11DiOx5GdeS4Q6GRB2zL8z9y7g3g30ilqGcoV4Blq3TP4spnAeUKblbMGf5pMX4HC6oAXcl4UpA== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jan 2019 23:06:01.5049 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f6443005-d96a-48ed-d6f5-08d678195b0a X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[208.19.99.223]; Helo=[AUSMBX3.microsemi.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR19MB2982 Subject: [U-Boot] [PATCH v6 4/6] MSCC: Add device tree for Jaguar2-48 board X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Add device tree based on evaluation board pcb111. Signed-off-by: Horatiu Vultur --- arch/mips/dts/jr2_pcb111.dts | 74 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 arch/mips/dts/jr2_pcb111.dts diff --git a/arch/mips/dts/jr2_pcb111.dts b/arch/mips/dts/jr2_pcb111.dts new file mode 100644 index 0000000..4d411b6 --- /dev/null +++ b/arch/mips/dts/jr2_pcb111.dts @@ -0,0 +1,74 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2018 Microsemi Corporation + */ + +/dts-v1/; +#include "mscc,jr2.dtsi" + +/ { + model = "Jaguar2 Cu48 PCB111 Reference Board"; + compatible = "mscc,jr2-pcb111", "mscc,jr2"; + + aliases { + spi0 = &spi0; + serial0 = &uart0; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + gpio-leds { + compatible = "gpio-leds"; + + status_green { + label = "pcb111:green:status"; + gpios = <&gpio 12 0>; + default-state = "on"; + }; + + status_red { + label = "pcb111:red:status"; + gpios = <&gpio 13 0>; + default-state = "off"; + }; + }; +}; + +&uart0 { + status = "okay"; +}; + +&spi0 { + status = "okay"; + spi-flash@0 { + compatible = "spi-flash"; + spi-max-frequency = <18000000>; /* input clock */ + reg = <0>; /* CS0 */ + }; +}; + +&gpio { + /* SPIO only use DO, CLK, no inputs */ + sgpio1_pins: sgpio1-pins { + pins = "GPIO_4", "GPIO_5"; + function = "sg1"; + }; +}; + +&sgpio { + status = "okay"; + sgpio-ports = <0xffffffff>; +}; + +&sgpio1 { + status = "okay"; + sgpio-ports = <0x001effff>; +}; + +&sgpio2 { + status = "okay"; + sgpio-ports = <0xff000000>; + gpio-ranges = <&sgpio2 0 0 96>; +}; From patchwork Fri Jan 11 22:31:19 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Horatiu Vultur X-Patchwork-Id: 1023803 X-Patchwork-Delegate: daniel.schwierzeck@googlemail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=microchip.com Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 43bzBc4gbhz9s9h for ; Sat, 12 Jan 2019 10:11:20 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 4B29AC2226E; Fri, 11 Jan 2019 23:10:07 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAD_ENC_HEADER, SPF_HELO_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 5E11DC2224F; Fri, 11 Jan 2019 23:06:51 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 6A8CDC2224F; Fri, 11 Jan 2019 23:06:50 +0000 (UTC) Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-eopbgr740081.outbound.protection.outlook.com [40.107.74.81]) by lists.denx.de (Postfix) with ESMTPS id 1A405C22201 for ; Fri, 11 Jan 2019 23:06:32 +0000 (UTC) Received: from BN6PR19CA0058.namprd19.prod.outlook.com (2603:10b6:404:e3::20) by BL2PR19MB0721.namprd19.prod.outlook.com (2603:10b6:201:1e::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1516.15; Fri, 11 Jan 2019 23:06:30 +0000 Received: from BL2FFO11FD005.protection.gbl (2a01:111:f400:7c09::107) by BN6PR19CA0058.outlook.office365.com (2603:10b6:404:e3::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1516.14 via Frontend Transport; Fri, 11 Jan 2019 23:06:30 +0000 Authentication-Results: spf=softfail (sender IP is 208.19.99.221) smtp.mailfrom=microchip.com; lists.denx.de; dkim=none (message not signed) header.d=none;lists.denx.de; dmarc=none action=none header.from=microchip.com; Received-SPF: SoftFail (protection.outlook.com: domain of transitioning microchip.com discourages use of 208.19.99.221 as permitted sender) Received: from AUSMBX1.microsemi.net (208.19.99.221) by BL2FFO11FD005.mail.protection.outlook.com (10.173.161.1) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.20.1471.13 via Frontend Transport; Fri, 11 Jan 2019 23:06:30 +0000 Received: from AUSMBX1.microsemi.net (10.201.34.31) by AUSMBX1.microsemi.net (10.201.34.31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1531.3; Fri, 11 Jan 2019 16:36:24 -0600 Received: from xrelay.vitesse.com (10.9.45.188) by ausmbx1.microsemi.net (10.201.34.31) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1531.3 via Frontend Transport; Fri, 11 Jan 2019 16:36:24 -0600 Received: from soft-dev3.microsemi.net (soft-dev3.microsemi.net [10.205.27.16]) by xrelay.vitesse.com (8.13.8/8.13.8) with ESMTP id x0BMWMCs018804; Fri, 11 Jan 2019 14:36:12 -0800 From: Horatiu Vultur To: Date: Fri, 11 Jan 2019 23:31:19 +0100 Message-ID: <1547245880-23438-6-git-send-email-horatiu.vultur@microchip.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1547245880-23438-1-git-send-email-horatiu.vultur@microchip.com> References: <1547245880-23438-1-git-send-email-horatiu.vultur@microchip.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131917215905045069; (5a93feec-e11d-4f7b-166a-08d09f1f276b); () X-Forefront-Antispam-Report: CIP:208.19.99.221; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(39850400004)(376002)(136003)(346002)(396003)(2980300002)(199004)(189003)(106466001)(47776003)(69596002)(498600001)(105596002)(107886003)(316002)(2351001)(54906003)(4326008)(16586007)(8676002)(81166006)(81156014)(50466002)(2906002)(50226002)(305945005)(8936002)(44832011)(5660300001)(48376002)(486006)(26005)(36756003)(76176011)(86362001)(51416003)(575784001)(53936002)(446003)(336012)(476003)(53416004)(77096007)(68736007)(97736004)(6916009)(126002)(2616005)(356004)(11346002); DIR:OUT; SFP:1101; SCL:1; SRVR:BL2PR19MB0721; H:AUSMBX1.microsemi.net; FPR:; SPF:SoftFail; LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD005; 1:YJR2h5IR3VISESyF4KXEytlavF0dg84Xfr68Q+OpCk7SnqeftUyWzbbr5OT7Q6ZhVGBnGxjYQv2d0Yw2lbzTapC5g96vt3uoWA3CI+IEvQFbZZNN9OAWJN2A1gCPH+O5 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e9e7907c-4148-4a67-0c06-08d678196c30 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(5600109)(711020)(2017052603328); SRVR:BL2PR19MB0721; X-Microsoft-Exchange-Diagnostics: 1; BL2PR19MB0721; 3:WH0sJwUP0r3kS6wEsggSuTpU7qe2UtTyRPU9jzPc+2evUvZP+5La/aluGZvjGax2eUcKfUrN1gxLI4rz2j0RiAm2g/9YUTAEtGWA9oKrA7VywuTcsXwYpFj2noWlMeO0pw8GerkPLsMSqQVTU51W9u+iebqdTaom9Zej3CTaGhkZ9Cn7ecZdEelyC+gdE1NsfCZye2zRHrBtGCj1zfuoe1zLwX2w4KsNJVFdtOxypAbg1gvv8SrnB0KFE9H2ykYn+GzViGPj3iehGGZdp5rZUj3IMkVplYbcVlQm/RV6lmq2jmiPEyhYdnf0yLlw0FD0EUTZCaVcOAESRwKRV568BwiCgNg9HDnTwWx1jez4XrllrSZIQ5xetsyN33/fH7g0; 25:3cdt5UpjRiBlCbeZF6RJjpDsgwMWyjWd0auHOMpO5XGbTcEd07PAeS5jBqgOrYEue1mZGPC6NRFzhUtXhKS7zdgmTv7BjYJXzF9ZRQTMHnqpNTPSRJlr99+6QF+S9EhGYY7kc1zx1Cnu51g0XHHdTMA0aSTLtVUXBzhZA/o5yPHtAXEFFZWX4+XXJbWKhpRd9Qmg+nM3m89u0tkblbeLwLJyv4UozlvUzx+LPzc2mPw4um1KkNxnVEyr1Db9AJAugHVSpIz+QqUEDGbHkpOqqyr2Ul1qFyXzGLCgdYD5ZwflpltsX79OUosOQ3xN1rhCQu4mEZDEV2joQ5nWNiUtvBthZxgrp/Qr6rvAx4ZKHWM= X-MS-TrafficTypeDiagnostic: BL2PR19MB0721: X-Microsoft-Exchange-Diagnostics: 1; BL2PR19MB0721; 31:lx31sx3V8pNPyVGClV9fdZb8dcnHOcHSTWqoODRSuj/t3bZGx9guKbLwWq7hQz7w0/pAT9F+AGmSk8hjeLz4mWnR8K8l0Oj84bA63GTo1mXVy1lYK0cOw4DJktVZGdxA1+8nD77o8eGT8JASHa2fXTHLNNEqgJAAzIpTrhy7Y4AILzsIkoTRmwE93VMmtaXRfpZQGZwzSo06ZR1B0gIjyjVSG1bQqj8siBSFk5Za04Y=; 4:WEu3wq3WEFNBfx+DGPP4q04A8t2dnKbulqB6pV3rQfxguTv4vx8JkHvoL9ri8RHz20PP1thpoqosQycUmJn3z50+gkiLbnsbV+G0zw94h2d5pchxjqfl1kTHaZKQIuw/fjVljt8kU7iffF0PCffzSL6mdfZpoFmiZb+0yB3mwoEnIPBGjfthF16e963wmBPsX+7LgctVOJZzrMVe7kd+Uy51jgRUioMesZSHgmPpILGjGP3rJtI1OXQdbSslyCakW0VDppfQAd4HeQ6FVqKu8Zo6+aj0xg8dkZzmwswtGWuGpgalwQkgNIT+Nye1LzBZ X-Microsoft-Antispam-PRVS: X-Forefront-PRVS: 09144DB0F7 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BL2PR19MB0721; 23:rpjGgLVWIRSMN8SwImpGZIiYC5GlnCAURERl64Kf3?= /CutqTey2aJZZW+4kgAAmVXMzZIx8LewLrsLm5L8L48VUK9efjgfza2LnZzy1EW+WHoK6jO6rVkXvxzVxAHJ6+kumNDw+uXepc/XLWwXGi6hVq56/1qrm/KtTiQU0/yGE20krhWLso6dWmTnc05LO8pciTSpA9KZgzHohlWoT4pXn0ZFVvbFQWKgNgO8dSDcpPq3jeMW627bi2y1ScCTkM+EgzLpxJUkQLekugxmwIpq57oLkEyhjMpmBZ5+YWckUSc06VujLunIRjkan1xHprCFiCM/a5xc5CZPRIO+Udyc8GKP7wYovWPQiSJDRCHQSFnxZC5aji5R4VnlGMFLCmYrNZ0WBRPH6voklpbQHgN9RADu/zdjiOiGb+BAU2AxGfZJKr7TQ4KNTBTPeFtZDy1dQ+gqrqKU2UnwFd2KKwVfZFXRv6VrQv/U+HC5E5IpcA3yTT18mKkUdpVs2emLyslF+Pkpz/pz4z9KY3hifx4feCLpDT/VrhNU5F7wpAUHZ2zdAnHboVRXB+1FQiA/pRzt663OpcQTIfykKeXsWHIZGxJrIkztS22VCzC9JGbqU9H3agB4dLz1QV12wi+UDBq+jXh6Rv2e7p8FPYqWfBO5Vzawoa12PeGUrHEsJB+6XppXpls/LfjFEj9RsuzAkiV7l2/hL/TFE4IFeRrkOVwPrqV7Rsrre7K7fWjIOGPtpn/qq6ukkAOPM3p5dznFSg3fnKHBbuQCwPErrlv/fg512cQecWIi4w5sOYC0MW4068vogtOr2YAtVtc3i694jiFfO/DOec2/U4+MeGJ41oRQ2e7loS+BL/lhHykcuaYuvS3vzMMrhTjjiv3dHU7VoJ0swCJKISWXtrj+ba1Asi6BBSyaRI7cQlJp8+opDf+NWWz6Xhnjaf4tvNAdC5gVsy2thMy8DUzvn0oEtNaXpYyGymhlUicI8+nYm7DNjMA8Wnhm1f/f02jVsqHwf47qXVLh7FSxcwulJ+85Ywy0sUXdBgW3f26KFXfbORgaQQzC97vF0CVdcf3N2aHhFOxbvHaKQ4PfrobThnqnxoaFGzDY4GUw0qrgh20zHSqfjfDmsSQAFJBwzTMJsYxBst88WVh X-Microsoft-Antispam-Message-Info: TyanwTzIz1S4IaluEbrye8grS1fn+5RIn0NWGY7zIrcH/+m5aQLWmhmTmk4vZAIgxaEM5SUOIfBEPHGmrW64neG6XXwE5yHarp7X8OxllOob22p7s2P4xcVPrsg7J6YKG8q7UA0/v6nF/m+/5mpM0rBDut/B2dDtExxHxoqf4bLaVFd8ZY+McnJVSKWtjU2efmdNwu14o/go9NY1XYl5gQNepBhGLLXHqT5hC8LzRsG/dqrlR7Hlcd+W5Nc/k7TVykPS1d0LzU5gm1Zlu06G9jCa2vMCkCG5ta8QAWG/xlQ5+M02RyA3ib3U+81BuZRIt9ttSRHmO3p7VvSUKcVKvQkvu2cgeBnt/a0ijca6ZPqS6ummVHDmkOf1KQk9AgydP4lhRO6L3SZmIhcMPqmkGfrYDkJPbg2iH50on4yuk04= X-Microsoft-Exchange-Diagnostics: 1; BL2PR19MB0721; 6:/t2mpUNiamQqe6b3xDIQtqi0rPGGAOEKnWKsAMr0OjvQj8OlO+2fuWhcv/Lh+/C9wtH52+m0MXk6YSuVkgfNE70LRuBaIlpm4woSBfxwzcnfp9FkY2iQYVlQT6wVJmeQqMMDy0syKZm9cjICIpBLVEx6AtTVh9ikuNud27DwKhsOUtdb4OiAOdH0IDZ3GSKsZ88GH10wG6ImC5igkMDabz8HAk9ABY4oGWvCjUYrpQsuSG/0LQ1EK6JXPQZr+0PywGBaoWwyzNPGnEgtLbVNdKZSgPkbUROmxN/kWvxeShc07/EafSuVktp/JS/iojkGcryHG/hyHqH/SWRnYPnarr2yIA9qudMHrmzQRlzXw6Avvh6B/bHjJQ/LiMi6dtXicQ5JRvcLV7FqmYyyiF/vDNjSAVuEjlTHGDcUVr1+tisv5ulHzcLBb+c+rKJDrktMT7IcabPo3B/ntKdKmGeJow==; 5:UI2FFqR9cg1Y1GKbX4NQ55/BtfUMAblosWQGksU4UdAhKa+OcW63Sk8bBjzI45KyZCfHWKAQds3xR4mOc6o2ow4eKh1MUlH+VAR9tRgDkVgJ4vcmMaZnO7Uowl+l7SYHnihfkMsRKyEamseuW+gFS2hfB2IIWIRuQVspoQ/LCQ0EJZiqeYlS3Df4NHUKQee1Ov+lKncqTb/REL3QbedW2g==; 7:pleInNVpGfJmh9sQ/NIdFYTrCn9omhnmjRvGhzt9t12SyfugsRywWyl+Yq3VuK9qOwqpAPhLluRQjtygfYvL2sYcz4IuAhCpGr58LIMJtVrBQV7P/ESb+6VV+d4/t33tqvvdHeJyo5jeFRaehqiA9g== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jan 2019 23:06:30.2857 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e9e7907c-4148-4a67-0c06-08d678196c30 X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[208.19.99.221]; Helo=[AUSMBX1.microsemi.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL2PR19MB0721 Subject: [U-Boot] [PATCH v6 5/6] MSCC: add device tree for Serval2 board X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Add device tree based on evaluation board pcb112. Signed-off-by: Horatiu Vultur --- MAINTAINERS | 1 + arch/mips/dts/serval2_pcb112.dts | 60 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 arch/mips/dts/serval2_pcb112.dts diff --git a/MAINTAINERS b/MAINTAINERS index f05c36b..d42736b 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -522,6 +522,7 @@ F: arch/mips/dts/luton* F: arch/mips/dts/mscc* F: arch/mips/dts/ocelot* F: arch/mips/dts/jr2* +F: arch/mips/dts/serval* F: board/mscc/ F: configs/mscc* F: drivers/gpio/mscc_sgpio.c diff --git a/arch/mips/dts/serval2_pcb112.dts b/arch/mips/dts/serval2_pcb112.dts new file mode 100644 index 0000000..fe025f4 --- /dev/null +++ b/arch/mips/dts/serval2_pcb112.dts @@ -0,0 +1,60 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2018 Microsemi Corporation + */ + +/dts-v1/; +#include "mscc,jr2.dtsi" + +/ { + model = "Serval2 NID PCB112 Reference Board"; + compatible = "mscc,serval2-pcb110", "mscc,jr2"; + + aliases { + spi0 = &spi0; + serial0 = &uart0; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + gpio-leds { + compatible = "gpio-leds"; + + status_green { + label = "pcb110:green:status"; + gpios = <&gpio 12 0>; + default-state = "on"; + }; + + status_red { + label = "pcb110:red:status"; + gpios = <&gpio 13 0>; + default-state = "off"; + }; + }; +}; + +&uart0 { + status = "okay"; +}; + +&spi0 { + status = "okay"; + spi-flash@0 { + compatible = "spi-flash"; + spi-max-frequency = <18000000>; /* input clock */ + reg = <0>; /* CS0 */ + }; +}; + +&sgpio { + status = "okay"; + sgpio-ports = <0x0000ffff>; +}; + +&sgpio2 { + status = "okay"; + sgpio-ports = <0x3fe0ffff>; +}; From patchwork Fri Jan 11 22:31:20 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Horatiu Vultur X-Patchwork-Id: 1023804 X-Patchwork-Delegate: daniel.schwierzeck@googlemail.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.denx.de (client-ip=81.169.180.215; helo=lists.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=microchip.com Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 43bzCC6rWVz9s9h for ; Sat, 12 Jan 2019 10:11:51 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 96C19C2226E; Fri, 11 Jan 2019 23:10:27 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on lists.denx.de X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAD_ENC_HEADER, SPF_HELO_PASS autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.denx.de (localhost [IPv6:::1]) by lists.denx.de (Postfix) with ESMTP id 619F3C2222E; Fri, 11 Jan 2019 23:08:24 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 07D5EC21C38; Fri, 11 Jan 2019 23:08:22 +0000 (UTC) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-eopbgr820070.outbound.protection.outlook.com [40.107.82.70]) by lists.denx.de (Postfix) with ESMTPS id 9C7D9C21C38 for ; Fri, 11 Jan 2019 23:07:02 +0000 (UTC) Received: from CY4PR19CA0034.namprd19.prod.outlook.com (2603:10b6:903:103::20) by CO1PR19MB0725.namprd19.prod.outlook.com (2a01:111:e400:7b6d::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1516.13; Fri, 11 Jan 2019 23:07:00 +0000 Received: from BN1AFFO11FD028.protection.gbl (2a01:111:f400:7c10::139) by CY4PR19CA0034.outlook.office365.com (2603:10b6:903:103::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.1516.13 via Frontend Transport; Fri, 11 Jan 2019 23:07:00 +0000 Authentication-Results: spf=softfail (sender IP is 208.19.100.21) smtp.mailfrom=microchip.com; lists.denx.de; dkim=none (message not signed) header.d=none;lists.denx.de; dmarc=none action=none header.from=microchip.com; Received-SPF: SoftFail (protection.outlook.com: domain of transitioning microchip.com discourages use of 208.19.100.21 as permitted sender) Received: from AVMBX1.microsemi.net (208.19.100.21) by BN1AFFO11FD028.mail.protection.outlook.com (10.58.52.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.20.1471.13 via Frontend Transport; Fri, 11 Jan 2019 23:06:59 +0000 Received: from AVMBX2.microsemi.net (10.100.34.32) by AVMBX1.microsemi.net (10.100.34.31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1531.3; Fri, 11 Jan 2019 14:36:53 -0800 Received: from xrelay.vitesse.com (10.9.45.188) by avmbx2.microsemi.net (10.100.34.32) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1531.3 via Frontend Transport; Fri, 11 Jan 2019 14:36:53 -0800 Received: from soft-dev3.microsemi.net (soft-dev3.microsemi.net [10.205.27.16]) by xrelay.vitesse.com (8.13.8/8.13.8) with ESMTP id x0BMWMCt018804; Fri, 11 Jan 2019 14:36:42 -0800 From: Horatiu Vultur To: Date: Fri, 11 Jan 2019 23:31:20 +0100 Message-ID: <1547245880-23438-7-git-send-email-horatiu.vultur@microchip.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1547245880-23438-1-git-send-email-horatiu.vultur@microchip.com> References: <1547245880-23438-1-git-send-email-horatiu.vultur@microchip.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131917216197294253; (5a93feec-e11d-4f7b-166a-08d09f1f276b); () X-Forefront-Antispam-Report: CIP:208.19.100.21; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(396003)(376002)(39860400002)(136003)(346002)(2980300002)(189003)(199004)(4326008)(498600001)(107886003)(53416004)(105596002)(36756003)(69596002)(106466001)(2351001)(97736004)(53936002)(54906003)(48376002)(76176011)(50466002)(8936002)(81156014)(81166006)(8676002)(77096007)(26005)(6916009)(5660300001)(51416003)(50226002)(16586007)(14444005)(305945005)(356004)(6666004)(47776003)(316002)(11346002)(446003)(486006)(44832011)(86362001)(336012)(126002)(476003)(575784001)(68736007)(2906002)(2616005); DIR:OUT; SFP:1101; SCL:1; SRVR:CO1PR19MB0725; H:AVMBX1.microsemi.net; FPR:; SPF:SoftFail; LANG:en; PTR:InfoDomainNonexistent; MX:1; A:1; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD028; 1:Rw/lSI5RbBmmS+H/Xqs36Goxg+puM3fLKvFTja1XXxi6rnOwsqt6z41DluKWe50uETqQ6mSZ9qlJ9dnuFy9ZGTixFimTKALVngFX4A6syfQySXOh+8xPNTWKAidbKW2l X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 050d4c3d-16e3-40a9-6aa3-08d678197d9b X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(5600109)(711020)(2017052603328); SRVR:CO1PR19MB0725; X-Microsoft-Exchange-Diagnostics: 1; CO1PR19MB0725; 3:don0zV/gE7PUmStcYJ0rx9028vvTuNtsWpha68A7CvLsGGJDTYAp1+sL4FVVE/RJYRdolqpj6W+MlR3DBEucoR1vitkXNcJNw6B4sW902FiljPAgaEZsTb0gZQETVVtvyrQJvgWHyMoabV3bJ2IsUNjm8Xe+d/4FTKTpKQwuByZKBNhdDkMuLUwuC+E+LkM5bIg6M0TaaxeY7kF9TVJWrak6aAHZxhOgZPkcQPp8u0hQg+i3pgMV/A4KDB/Gd4DYQebk9rL5oBC7Hz0+QkqNH5K6n0eNve0SI9WUH0R4Q1XrPoPJGFNlBuUwPEeI9YBw0GG8QJL0/gTBNtqKgz+R/gy7DFDXWfS/RLZGWLCopsJjjWrfHREsTCXKP1TkVg9d; 25:31tCIgLV2VRY6ZNLcJbnXjVoS/lJivwAX3P/6VKmBq/Rtml3zZFq5iJDltcAO4pDIn2/ldZLCQTLiWD/H68NpyDgb76LaRlURIJTCWWXYWmf4v2k63IMZ3MWK7QojUj7+iEbXA/s3t+ta6EazAC4t7qdaZwvINS5TbnUdfS1C7IBXIy0ywfYeQ7RbjcSFq8BkrPxR3yBy9+/QejtwJS3Wozi1sVPYPsctCY12Egz1Ff1YgN8AbDY8O3OYUDTsrDNVnzDXVGiRjxA+WDFbDoQFCqv97KugzLqDSog7RRTJl1oAwgc03rkgkgAlpJGnfM0ojFEqUQPkfchvQ6Lx5srmg== X-MS-TrafficTypeDiagnostic: CO1PR19MB0725: X-Microsoft-Exchange-Diagnostics: 1; CO1PR19MB0725; 31:xzWHYoS4tebuyZmHuYLORnmd29Neh98BTInZPIvY+oNcA21U3obCTi6lOiyYXRIUJring5bLGhZ7HKr+lb8KOo2Qena1BH7DJyPdEIDB1qIv6WV1lH3okAQ/hbsPPS9BvoahHdduXqFyUfVv2wWvldm7SzH9LBYGkbQLNCqo0uYPBoYk4WOd5m2ixfu5s5CWE688oBU6hxsjg0/Bui9ukFN/Kk69YuD3SNK3fWe7HX8=; 4:VLN9Kviz32w6G6bByYuPg2H4q3XWX3M3LcodjGzPxbjED6EG4gsTbx30HdkXtWBD4BVTvTuCipJEEwxjk0Tsq1rSAovb5cyWzihxCjmcQV34xQnoUImMPpFnY6hXDZ4bUd95Z13QupugetDPl9adRiQHQD/DtKY8Z4om3K3VjepxrCp+dFML6drjXwcUEJhgNbeHBdhuAoQK+ryTs0m0zTT6iREhladCkH75tOB8QdidkmP10gTUaYDJr7STv2b0PV5awiJuZsqeK5cackcffaP2et1YlpTvgTbg1D4oHyh06qfygxVCt5d5yJmlU4K3 X-Microsoft-Antispam-PRVS: X-Forefront-PRVS: 09144DB0F7 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CO1PR19MB0725; 23:GAmpDSsbrOxrKPA/lN2pu02+A7o0+unZ8YSWiUu5n?= R31cfTzakA19D0Kg+AlvDm90YUU9LUH0sXxUaqqP3bVVf8brA+7qQs3J5W7xflG+JP1wUta+y7zgs0BHbyXMzk7TEqre1ks2cKfX81f5nu94Dfa5UtT+bM9aZG2WV/o09bjARiCXI3cPGNr7plUhL8nmGhfoNm3g4x/0qqOosuFitr5TkxY3cveFLjvrnOwaQiWTphu4Ao7HyycuDO6DoQYYbvYLpZPw7NBiE9Zh6FugABnYCmrnxGpPZ8eAdaKsehDGj+kR5j92fm0BsyBQcR/z3YBI9yq9v3aJsY3PuC5QvDF53FE0Iv39H7qIoubh7gODt1vPMbN8Cym1ysv9Vp4D3lBmByBpCMuSDKC1aGegjNKuz11g5I+SVdSkPjMEVNUq17v3B3NleWi2NXv+M8JWbpScW2Xnn0DFuaeGtavl1VD5BUmzkyb5t3SekAc4Kz1G6Ar7D3SKLu0xq3AZsEe7Xh3ix47dfDv3cCxMvnu35w+j2TXvZBldUBSDGP4BmBjVaY96HVDC98rGWKkUgwR06W0CLx9hsAAwWwPJWK2AomsfZV2/vDGdg3zWz7waLJW4OsYsIhQMO6ZbIh1bS+in0nUV/JsSVH5E2b01CARcylchr+aNpwra7dqeoMn7ONWhGQhwuYl5XBp+nNTILAmrs/86wbZ3mOvy28/M08iGB7vKwRyiz+08qWS/yLg+upKjgbQShqpqcFBJBbByrg+VqIVgwDP06NfgVnVk2Ob7dEXg5/PFb1B0Wp59hZVb1piCGVBHrklXInygHb4239jgIHfWGXBdFivaMi9m77K/GUiRinxGdPxggDJ1OzoAKKXaq6lyPYiAbqfLtxz3OxXqOostc+TEM77X0uD1/45uY2bn+KOrEAU0Y/E0ZGpLKh8EuiBTpmG2fL+UpLqZ919lfHvw9pgBZ4Ji1k7tEBtVSlTQPuN2Jx/mbDxHMMvaRrmUlAQlkqJQy1S+6WNCvHSzX0C2kZjRpYCSMWtVW3SewTvBHLkq0HNV6ZkxpTpKu5zSZspS7ngc/koMv/ubEgyuw6Ps1G9uVWZvCbDiatFUsDgbek534sQ+2djwY53Z/VNI6Vt7xR+IpeYkGsx0cjUTZB+UxJAd21YWfIVODd5hw== X-Microsoft-Antispam-Message-Info: KLDAfPnEKerMobrPq/QLCLLF1aouG2mdN1Y2AP/Y+CFXL1PutINCki1pEg0Uk5vdq8tkTA9hDuF8kekjAuWgMtEZ+pRJoDqZX+RnlRt3PSSeXH3eiB109w3NFFW/sode6OPNveRrsgu8OPhjfV36jM8LN2FPPzCeHEzve+nLE9jr8Z9xJ7KDQEwvC70LCo+2hXxBGY9gpgzMpzUA4h4rIizkFGKpv8Z4z8Djm8FV/Eo9wAoi7tx9Ah7rx3FSUJDNxnGjyOnA7oIlhAPIRnHb5gMvYlesmIUdVG+yteJgvkYDeAR9sSSnjQ/rnBXphIuEn/hezW7Jm5ksKr8JqoSAzx/rcsGfquI2UE9WHou16HtLHjOS6uN/AFxOijAScZWsNJ5jRd22Q4p1PyTcLBTFcaknHcXQXpvovbQGmO8L/R4= X-Microsoft-Exchange-Diagnostics: 1; CO1PR19MB0725; 6:gFxhogT02Ny6YI4fGkWoWSGVx0rAtWVg8p41R+YRauLNllPqYlSUIrpfbFQQAji78Y5gXJjo3IVmMxKctxmb3M00uou8TWI1P5duogNjMt3NHjGcHiopZwy/OkUDmWSQAdA77GWBeUAvKj/E9NXj46g4WuU1v0yq7QcA6RtFxZ7CzkC1wTaomPOJXCm9dIx3Em0KKY/stMRk5XVwzhWSs/WYa6FZEgaLRHEyipZd0eqy0khova9g7ouJ1uYqECCAhZv8FVVuBsiszowB1PCuAbmxQejmP45wmtWpMf4MMpVN8ITpegpDSepWOyk6JElxOts4K+QwIliD/StCBC59+7AEirwb9bd6Vnl8yQaZpBIAGYc8V2pivAySStp6i4VUgEiSEK9duxh3mhI5wBNnDx4G7ejbEGeh8UmdVYAgHaVFNiSKgUUhR4kb6wD/FlOwp3yFVhU+++IeWQN4phmitg==; 5:1IFE+FZs4xkm8j/mBQV+IabK+1DlMJl2C7AFtAcqgcPDnvcf+64VP3oW7ijzC9NG8TyI0tNpEspzIk82/PmldjFFeD71Gs3G9r4Etvl/Geaa3eBRgrwqkS4vS0XigURN9lTR5UC6bXvj78jc2YywiWvStRepnznSJR7cC1f825w3h94BTJK+5FMnS65w3+e+8NqrrQciRJjxR+YEETg24A==; 7:mTCsTHLKDgo64ix+OFeF/X8sPHq2xcv7OGYHr6WuItiLk3LnrcBV4wCNFrNEqtat6rPOOFGppm46uSHKZcPtTVky8VVL8tBqhdeYFb86QYyWAgw6F3ce1WykLooch9wUtJ+6TpoAAURWYw/r+3NdzQ== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jan 2019 23:06:59.4950 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 050d4c3d-16e3-40a9-6aa3-08d678197d9b X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[208.19.100.21]; Helo=[AVMBX1.microsemi.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR19MB0725 Subject: [U-Boot] [PATCH v6 6/6] MSCC: Add board support for Jaguar2 SOC family X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.18 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" Add board support and configuration for Jaguar2 SOC family. The detection of the board type in this family is based on the phy ids. Signed-off-by: Horatiu Vultur Reviewed-by: Daniel Schwierzeck --- arch/mips/dts/Makefile | 1 + arch/mips/mach-mscc/Makefile | 5 +- board/mscc/common/Makefile | 4 ++ board/mscc/common/spi.c | 31 ++++++++++++ board/mscc/jr2/Kconfig | 15 ++++++ board/mscc/jr2/Makefile | 4 ++ board/mscc/jr2/jr2.c | 115 +++++++++++++++++++++++++++++++++++++++++++ board/mscc/ocelot/ocelot.c | 22 --------- configs/mscc_jr2_defconfig | 59 ++++++++++++++++++++++ 9 files changed, 232 insertions(+), 24 deletions(-) create mode 100644 board/mscc/common/Makefile create mode 100644 board/mscc/common/spi.c create mode 100644 board/mscc/jr2/Kconfig create mode 100644 board/mscc/jr2/Makefile create mode 100644 board/mscc/jr2/jr2.c create mode 100644 configs/mscc_jr2_defconfig diff --git a/arch/mips/dts/Makefile b/arch/mips/dts/Makefile index b61afe6..1484db9 100644 --- a/arch/mips/dts/Makefile +++ b/arch/mips/dts/Makefile @@ -19,6 +19,7 @@ dtb-$(CONFIG_BOARD_TPLINK_WDR4300) += tplink_wdr4300.dtb dtb-$(CONFIG_TARGET_JZ4780_CI20) += ci20.dtb dtb-$(CONFIG_SOC_LUTON) += luton_pcb090.dtb luton_pcb091.dtb dtb-$(CONFIG_SOC_OCELOT) += ocelot_pcb120.dtb ocelot_pcb123.dtb +dtb-$(CONFIG_SOC_JR2) += jr2_pcb110.dtb jr2_pcb111.dtb serval2_pcb112.dtb targets += $(dtb-y) diff --git a/arch/mips/mach-mscc/Makefile b/arch/mips/mach-mscc/Makefile index 44538b7..f5b6968 100644 --- a/arch/mips/mach-mscc/Makefile +++ b/arch/mips/mach-mscc/Makefile @@ -2,5 +2,6 @@ CFLAGS_cpu.o += -finline-limit=64000 -obj-y += cpu.o dram.o reset.o phy.o gpio.o lowlevel_init.o -obj-$(CONFIG_SOC_LUTON) += lowlevel_init_luton.o +obj-y += cpu.o dram.o reset.o phy.o lowlevel_init.o +obj-$(CONFIG_SOC_LUTON) += lowlevel_init_luton.o gpio.o +obj-$(CONFIG_SOC_OCELOT) += gpio.o diff --git a/board/mscc/common/Makefile b/board/mscc/common/Makefile new file mode 100644 index 0000000..4f0eded --- /dev/null +++ b/board/mscc/common/Makefile @@ -0,0 +1,4 @@ +# SPDX-License-Identifier: (GPL-2.0+ OR MIT) + +obj-$(CONFIG_SOC_JR2) := spi.o +obj-$(CONFIG_SOC_OCELOT) := spi.o diff --git a/board/mscc/common/spi.c b/board/mscc/common/spi.c new file mode 100644 index 0000000..0566fcb --- /dev/null +++ b/board/mscc/common/spi.c @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2018 Microsemi Coprporation + */ + +#include +#include +#include + +void external_cs_manage(struct udevice *dev, bool enable) +{ + u32 cs = spi_chip_select(dev); + /* IF_SI0_OWNER, select the owner of the SI interface + * Encoding: 0: SI Slave + * 1: SI Boot Master + * 2: SI Master Controller + */ + if (!enable) { + writel(ICPU_SW_MODE_SW_PIN_CTRL_MODE | + ICPU_SW_MODE_SW_SPI_CS(BIT(cs)), + BASE_CFG + ICPU_SW_MODE); + clrsetbits_le32(BASE_CFG + ICPU_GENERAL_CTRL, + ICPU_GENERAL_CTRL_IF_SI_OWNER_M, + ICPU_GENERAL_CTRL_IF_SI_OWNER(2)); + } else { + writel(0, BASE_CFG + ICPU_SW_MODE); + clrsetbits_le32(BASE_CFG + ICPU_GENERAL_CTRL, + ICPU_GENERAL_CTRL_IF_SI_OWNER_M, + ICPU_GENERAL_CTRL_IF_SI_OWNER(1)); + } +} diff --git a/board/mscc/jr2/Kconfig b/board/mscc/jr2/Kconfig new file mode 100644 index 0000000..68a2de8 --- /dev/null +++ b/board/mscc/jr2/Kconfig @@ -0,0 +1,15 @@ +# SPDX-License-Identifier: (GPL-2.0+ OR MIT) + +config SYS_VENDOR + default "mscc" + +if SOC_JR2 + +config SYS_BOARD + default "jr2" + +config SYS_CONFIG_NAME + default "jr2" + +endif + diff --git a/board/mscc/jr2/Makefile b/board/mscc/jr2/Makefile new file mode 100644 index 0000000..c1db2a9 --- /dev/null +++ b/board/mscc/jr2/Makefile @@ -0,0 +1,4 @@ +# SPDX-License-Identifier: (GPL-2.0+ OR MIT) + +obj-$(CONFIG_SOC_JR2) := jr2.o + diff --git a/board/mscc/jr2/jr2.c b/board/mscc/jr2/jr2.c new file mode 100644 index 0000000..eac4dca --- /dev/null +++ b/board/mscc/jr2/jr2.c @@ -0,0 +1,115 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Copyright (c) 2018 Microsemi Corporation + */ + +#include +#include +#include + +enum { + BOARD_TYPE_PCB110 = 0xAABBCE00, + BOARD_TYPE_PCB111, + BOARD_TYPE_PCB112, +}; + +int board_early_init_r(void) +{ + /* Prepare SPI controller to be used in master mode */ + writel(0, BASE_CFG + ICPU_SW_MODE); + clrsetbits_le32(BASE_CFG + ICPU_GENERAL_CTRL, + ICPU_GENERAL_CTRL_IF_SI_OWNER_M, + ICPU_GENERAL_CTRL_IF_SI_OWNER(2)); + + /* Address of boot parameters */ + gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE; + + /* LED setup */ + if (IS_ENABLED(CONFIG_LED)) + led_default_state(); + + return 0; +} + +static void vcoreiii_gpio_set_alternate(int gpio, int mode) +{ + u32 mask; + u32 val0, val1; + void __iomem *reg0, *reg1; + + if (gpio < 32) { + mask = BIT(gpio); + reg0 = BASE_DEVCPU_GCB + GPIO_GPIO_ALT(0); + reg1 = BASE_DEVCPU_GCB + GPIO_GPIO_ALT(1); + } else { + gpio -= 32; + mask = BIT(gpio); + reg0 = BASE_DEVCPU_GCB + GPIO_GPIO_ALT1(0); + reg1 = BASE_DEVCPU_GCB + GPIO_GPIO_ALT1(1); + } + val0 = readl(reg0); + val1 = readl(reg1); + if (mode == 1) { + writel(val0 | mask, reg0); + writel(val1 & ~mask, reg1); + } else if (mode == 2) { + writel(val0 & ~mask, reg0); + writel(val1 | mask, reg1); + } else if (mode == 3) { + writel(val0 | mask, reg0); + writel(val1 | mask, reg1); + } else { + writel(val0 & ~mask, reg0); + writel(val1 & ~mask, reg1); + } +} + +static void do_board_detect(void) +{ + int i; + u16 pval; + + /* MIIM 1 + 2 MDC/MDIO */ + for (i = 56; i < 60; i++) + vcoreiii_gpio_set_alternate(i, 1); + + if (mscc_phy_rd(0, 0x10, 0x3, &pval) == 0 && + ((pval >> 4) & 0x3F) == 0x3c) { + gd->board_type = BOARD_TYPE_PCB112; /* Serval2-NID */ + } else if (mscc_phy_rd(1, 0x0, 0x3, &pval) == 0 && + ((pval >> 4) & 0x3F) == 0x3c) { + gd->board_type = BOARD_TYPE_PCB110; /* Jr2-24 */ + } else { + /* Fall-back */ + gd->board_type = BOARD_TYPE_PCB111; /* Jr2-48 */ + } +} + +#if defined(CONFIG_MULTI_DTB_FIT) +int board_fit_config_name_match(const char *name) +{ + if (gd->board_type == BOARD_TYPE_PCB110 && + strcmp(name, "jr2_pcb110") == 0) + return 0; + + if (gd->board_type == BOARD_TYPE_PCB111 && + strcmp(name, "jr2_pcb111") == 0) + return 0; + + if (gd->board_type == BOARD_TYPE_PCB112 && + strcmp(name, "serval2_pcb112") == 0) + return 0; + + return -1; +} +#endif + +#if defined(CONFIG_DTB_RESELECT) +int embedded_dtb_select(void) +{ + do_board_detect(); + fdtdec_setup(); + + return 0; +} +#endif diff --git a/board/mscc/ocelot/ocelot.c b/board/mscc/ocelot/ocelot.c index a05c308..0f7a532 100644 --- a/board/mscc/ocelot/ocelot.c +++ b/board/mscc/ocelot/ocelot.c @@ -18,28 +18,6 @@ enum { BOARD_TYPE_PCB123, }; -void external_cs_manage(struct udevice *dev, bool enable) -{ - u32 cs = spi_chip_select(dev); - /* IF_SI0_OWNER, select the owner of the SI interface - * Encoding: 0: SI Slave - * 1: SI Boot Master - * 2: SI Master Controller - */ - if (!enable) { - writel(ICPU_SW_MODE_SW_PIN_CTRL_MODE | - ICPU_SW_MODE_SW_SPI_CS(BIT(cs)), BASE_CFG + ICPU_SW_MODE); - clrsetbits_le32(BASE_CFG + ICPU_GENERAL_CTRL, - ICPU_GENERAL_CTRL_IF_SI_OWNER_M, - ICPU_GENERAL_CTRL_IF_SI_OWNER(2)); - } else { - writel(0, BASE_CFG + ICPU_SW_MODE); - clrsetbits_le32(BASE_CFG + ICPU_GENERAL_CTRL, - ICPU_GENERAL_CTRL_IF_SI_OWNER_M, - ICPU_GENERAL_CTRL_IF_SI_OWNER(1)); - } -} - void board_debug_uart_init(void) { /* too early for the pinctrl driver, so configure the UART pins here */ diff --git a/configs/mscc_jr2_defconfig b/configs/mscc_jr2_defconfig new file mode 100644 index 0000000..b215754 --- /dev/null +++ b/configs/mscc_jr2_defconfig @@ -0,0 +1,59 @@ +CONFIG_MIPS=y +CONFIG_SYS_TEXT_BASE=0x40000000 +CONFIG_SYS_MALLOC_F_LEN=0x2000 +CONFIG_ARCH_MSCC=y +CONFIG_SOC_JR2=y +CONFIG_SYS_LITTLE_ENDIAN=y +CONFIG_FIT=y +CONFIG_BOOTDELAY=3 +CONFIG_USE_BOOTARGS=y +CONFIG_BOOTARGS="console=ttyS0,115200" +CONFIG_LOGLEVEL=7 +CONFIG_DISPLAY_CPUINFO=y +CONFIG_SYS_PROMPT="jr2 # " +# CONFIG_CMD_BDI is not set +# CONFIG_CMD_CONSOLE is not set +# CONFIG_CMD_ELF is not set +# CONFIG_CMD_EXPORTENV is not set +# CONFIG_CMD_IMPORTENV is not set +# CONFIG_CMD_CRC32 is not set +CONFIG_CMD_MD5SUM=y +CONFIG_CMD_MEMINFO=y +CONFIG_CMD_MEMTEST=y +# CONFIG_CMD_FLASH is not set +CONFIG_CMD_GPIO=y +CONFIG_CMD_SF=y +CONFIG_CMD_SPI=y +# CONFIG_CMD_NET is not set +CONFIG_CMD_MTDPARTS=y +CONFIG_MTDIDS_DEFAULT="nor0=spi_flash" +CONFIG_MTDPARTS_DEFAULT="mtdparts=spi_flash:1m(UBoot),256k(Env),256k(Env.bk)" +# CONFIG_ISO_PARTITION is not set +CONFIG_DEFAULT_DEVICE_TREE="jr2_pcb110" +CONFIG_OF_LIST="jr2_pcb110 jr2_pcb111 serval2_pcb112" +CONFIG_DTB_RESELECT=y +CONFIG_MULTI_DTB_FIT=y +CONFIG_ENV_IS_IN_SPI_FLASH=y +CONFIG_NET_RANDOM_ETHADDR=y +CONFIG_CLK=y +CONFIG_DM_GPIO=y +CONFIG_MSCC_SGPIO=y +CONFIG_LED=y +CONFIG_LED_GPIO=y +CONFIG_DM_SPI_FLASH=y +CONFIG_SPI_FLASH=y +CONFIG_SPI_FLASH_BAR=y +CONFIG_SPI_FLASH_GIGADEVICE=y +CONFIG_SPI_FLASH_MACRONIX=y +CONFIG_SPI_FLASH_SPANSION=y +CONFIG_SPI_FLASH_WINBOND=y +CONFIG_SPI_FLASH_MTD=y +CONFIG_DM_ETH=y +CONFIG_PINCTRL=y +CONFIG_PINCONF=y +CONFIG_DM_SERIAL=y +CONFIG_SYS_NS16550=y +CONFIG_SPI=y +CONFIG_DM_SPI=y +CONFIG_LZMA=y +CONFIG_XZ=y