From patchwork Fri Jan 11 07:45:51 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Horatiu Vultur X-Patchwork-Id: 1023423 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 43bbPv3PGDz9sBQ for ; Fri, 11 Jan 2019 19:19:47 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 29EA0C22111; Fri, 11 Jan 2019 08:19:46 +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 EE6D2C2214A; Fri, 11 Jan 2019 08:19:41 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 30A4EC2214A; Fri, 11 Jan 2019 08:19:37 +0000 (UTC) Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-eopbgr790042.outbound.protection.outlook.com [40.107.79.42]) by lists.denx.de (Postfix) with ESMTPS id C3520C221BC for ; Fri, 11 Jan 2019 08:19:36 +0000 (UTC) Received: from MWHPR19CA0071.namprd19.prod.outlook.com (2603:10b6:300:94::33) by DM6PR19MB2763.namprd19.prod.outlook.com (2603:10b6:5:13c::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1516.14; Fri, 11 Jan 2019 08:19:34 +0000 Received: from BY2FFO11FD019.protection.gbl (2a01:111:f400:7c0c::128) by MWHPR19CA0071.outlook.office365.com (2603:10b6:300:94::33) 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 08:19:34 +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 BY2FFO11FD019.mail.protection.outlook.com (10.1.14.107) 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 08:19:33 +0000 Received: from AVMBX2.microsemi.net (10.100.34.32) 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; Thu, 10 Jan 2019 23:49:28 -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; Thu, 10 Jan 2019 23:49:28 -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 x0B7lkrj015954; Thu, 10 Jan 2019 23:49:17 -0800 From: Horatiu Vultur To: Date: Fri, 11 Jan 2019 08:45:51 +0100 Message-ID: <1547192756-10590-2-git-send-email-horatiu.vultur@microchip.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1547192756-10590-1-git-send-email-horatiu.vultur@microchip.com> References: <1547192756-10590-1-git-send-email-horatiu.vultur@microchip.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131916683731722370; (5a93feec-e11d-4f7b-166a-08d09f1f276b); () X-Forefront-Antispam-Report: CIP:208.19.100.23; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(136003)(396003)(376002)(39860400002)(346002)(2980300002)(189003)(199004)(76176011)(2906002)(336012)(2616005)(476003)(86362001)(51416003)(446003)(575784001)(47776003)(36756003)(50466002)(54906003)(30864003)(126002)(11346002)(48376002)(97736004)(6916009)(498600001)(6666004)(356004)(486006)(26005)(5660300001)(77096007)(106466001)(69596002)(44832011)(316002)(8936002)(2351001)(81166006)(107886003)(16586007)(305945005)(81156014)(4326008)(53936002)(8676002)(50226002)(68736007)(53416004)(105596002); DIR:OUT; SFP:1101; SCL:1; SRVR:DM6PR19MB2763; H:AVMBX3.microsemi.net; FPR:; SPF:SoftFail; LANG:en; PTR:InfoDomainNonexistent; MX:1; A:1; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD019; 1:jaefBtO8OjPhMHZND1tosuqG7vIMPtB4Er6gdemLxc7f/WbdJW0EmSY+f5VYw8gWZBt9bdNHL+gpaQfkfoOkwPkJqDVDMXzyCTOubxDUfpTgweqbHkiHazmSfsNYKId3 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3f1a0329-df49-4576-56ed-08d6779d8434 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(5600109)(711020)(2017052603328); SRVR:DM6PR19MB2763; X-Microsoft-Exchange-Diagnostics: 1; DM6PR19MB2763; 3:ya5stTgrxo8JFbukhASXh9IrhVKgwIpthV6PUsYB7ue3fosB3M+ByZ718U8LEgGKUNFgzz+0cUJYj/ikjjllLooLw8XP8hIp2wgcWo4prW5HJmowUends8siqDJ5aQQS2qLJwp3U0G5PCD2r5tQgEg4mXf6AccwLzPwa311RDTvR6tvYIisidVdt3WovDmzFG38E0re9cWlphJeJJQIXSQgXmrFMzrj9lSvoSAT+EQarY7IXonnDXWYmNi99md5/SxPfumfPShJ3e3ZkNU5zwLRXk/wDumJhEPbA0lmiGc6y2tqp68j8CGqIqoVItNe++uvn6uDr5Yk+3gSQFEZicGaHommHttOKMCSQ6lJVaBGUtTqA6rEMXVpz3BjVrH54; 25:Vww/vaAkKth398e61xYjMlD0VWG2qs12re2b+VE/pW+UwaFOZOou998+txRDX8o0rXr//sEuUb1ylg3DJd46/ZfS9VP7sg3YANjAakl+dem5aMS87qONGJZGSgsRoOWg+tiigJMrGtKvEuEJeqTQGjwB2N9bZsNZIqiW8Y6FpXkZz56Cv+zfhNEOQ6P3+Plw2kzJftdHxpK92YNwdD1VZNrh4EWmOW/KAkVmikuK1U+3wVaSi15QPsTrYf5GcdA7DDCSTWfeZeyPizSU/9NKRYmyZP+AV2iqKQz90k3XFomA5L4kn3VbbD1Ysk8Cj5d1LH/Iz2A6oApPv41n4oErJw== X-MS-TrafficTypeDiagnostic: DM6PR19MB2763: X-Microsoft-Exchange-Diagnostics: 1; DM6PR19MB2763; 31:4yiWgC6MmTn5Zst1z2WMmLbq7y9pKeFiCr6GM9WqvBAL5VHmEINmJ2nsjB6sOvP3nZQKTp3sw0068X/600cD3xm0bBafrH+7Fka/0L70eZsaiOpaFSD1o4UJy7sA+kf1MAkq1fkf0lpXKkqyzmkQ18OdNwJNOxOPxz+QvRgrIL/dd4LGWk9xoPHYBgdtgP0n5f2LtUe2kfw+RwrSqxs3oUjouepstAUe6dOMp64hkxg=; 4:srS2jB0WiuD8tdtJEYMrOX92bObjNtCvjAp/6he9fBfgJHPfWu2s/zqOYWER998oktC1sb1ODGy7F0rC1GkJ0US/vndDSK8KWTCcGaPHawGHa1scJdtvpjc9cELiK6spXkEGEzABK6NMY9ORti3fftNs1pOcKKILgZXgD+Ky1gvOR+eXh1088wElvTRApQDZAKBp/FIO7o3K0t9u7gBni5J781OzOW1mFRiKRVnyqrLs6o4skGo3Nuiz4ifOma2NpTe2aKUNFQXfucgr2ZVqgk7L1l2YR2xCnNJflFM7ApkBJK+dFaLD3mcfNZyCNunh X-Microsoft-Antispam-PRVS: X-Forefront-PRVS: 09144DB0F7 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM6PR19MB2763; 23:HgwfRNYPNdY/DsBuGqZVrWcTUAEag82vTssLIo7Vi?= CkIZr0vnY/8gk1Wmo5WCgZx91sij7EjuLT9MdayRJL853TO0k4Uo6cK074jJcJ1eZdzov0UbuzbBFt03ctyKWbbkOUWzQRn5zd6x6F6KOSqC8cocmeUe5F/YIgh8Paq98HBa8EGhaZTiOGy4gRgTdf54PHehmwKKcB+8BsRY3j/tzeSUIKydYUT/KNEtUw+e63cQ3D4RdARfNcTA2jHDJurf0E7lSViidLFZMPr6g6uV7oab8u/RUOP2lO9V5ZO+RKOJa1JmTFGklLhi8J/k+7iKpCLLoe3J2H/y+g4jRyKXtyGSz1/ZRPROlP/+oimakDLnyGK13bANcWNM+EdT9gylSx/0fKuYbI9NAp+IUn8b8if+IQAzI5bno/ZhZaNAUPRj6t9zBPXavk2xe96Z/lJ7HrrwO5IR2rca9eRcg8RxRYQ0KYlntP3AGZ9bOYr06d/qW4tbidB0TguKyhF2NOe+dQmHHGILP0Z2W1X1Y+8WHRqECSHGWpZzVZrbwkOwDKtsvLgm2MtRs1GprOG46eG83nUydYapKTydOyvYd0jfCytfOeYK7cKKgs7Y1gMX3lRW/qVQxy38KWCl+y2+WS5xiHW4V5++Do+mtMO+mvaUZJwwlBbiSqOSh6W7hQ7xyitTHjFbaVidp/AXE7Ows2sHjRs7Tg7M1AJBAZNlbGfGxkYJws1xDqlArU66YCvOeMf2uaG7DE0m3TkpgbIhwy6JkpWDCyVqwAtSr3IUEv/lBt+p+BRSmQ1aEwq+e1MSca/nTBLW5JPiV814j8CyCm0RaDaI0TLSx8oLqO66/OyRdNJZnfp3qRQjW6iY26uTHhNjLi1Muf07UzAdnwgMm1IbFyE5DWXd5USu0zprPevCsbRn1+lzdU/6Q13HGWURCg8cycuDZ9ivlxPWwxbxBu1ICMZhEAuE2BOgJXFBJFvJ3Um4ttsvBpoe24QC0GDePcje0RMejmVhe/Uq7NzWSbLDXIk40fwh4BcvVuAhmU5WSVOAxPXgcw8e6xJLk21insDnr/PMfdmEXiG2FNc1/jeCU3ILsCd57JDo4sYMFwopvwjUpBls9IFi+YKyCERgtcz/AspI3KK45S7eU0EtB4VMwsjuHL9B51sCB+Z8KxhDg== X-Microsoft-Antispam-Message-Info: BaNMSn4iP0tRDDwHz50ZDsEcJ7PWuemn/Mtn8ydwm7oDhWRFetbvAmr+hnr8fiU04eI2GZkMkNmAB16BIbzPMSjFsJSbGCdLdiiSwZe22oaWt0LOp3yADLPJml2G5kZ7hiPy6LXhJ2+SG29YAt4dyKpINma61X9h8bmn6k+ZepOsEHCnBmWTrj873cMKuZCmoVNnmpJlw+qvp1M7dBJ35quEk2V5i6I8ltgP4vPWAXiqaTgtJmbY1CV4vs8Osfr6nrdgG3jtuWPStFTcNZlj0dhl22R6qNcEVOzXET1ATi1neuCXvC1ZrkoIcI+pTfuKqEZuu1rOrj0+VJcD7a21K0BwtRI+qjUupGUd0p27RSfe6BVbHItGVDbPRoPAXBtUzZGwKTxkYuXguFm9tFMoIT61CE51W504Rsf90vpIML4= X-Microsoft-Exchange-Diagnostics: 1; DM6PR19MB2763; 6:Y8ohcn9rpBBqist5h9JWbOJz4bia50gOxkMJwLNSy+erk7Sf3QflA1TxCzn2uj6qJZztJ51Zdb+ig39T6DeZAujNt77PFTtzVpJjxTNhf3Sj5k+JDDHZw7fAY4ZZ7R1KJjsWcg10v71uzm5r7BIOLcO0q7CWlZ2zNhuR7AiuzC19bgXEkDgWhogx3kugAoFtHmE7vW5lnkwaU6DTtuF3yFn/ahQ12+PIHiEIS8As2Mhj03Mpplh4BQmZ6+hVoamluADhjtrB+F05BaRXWKL/hlhWjKogMqOmvF92kOgk6sxhFllAQ+An60vz3VjznH/nbLdekZ2AdaV0Caaa1/8+CiBXt/wJ1lApRQvQTTb0ajYTtB2Gd8tobOIAURPdnQY4EHXCMM9PnH/ImOfq+sLdXDshRTjBllOCqhHP7cH9rZ1V407gyfxW8rL38AN1/U7u0hYusRlt93dPkp0P37TFGA==; 5:d3YlVhLRSsImDdg7o+70pcFDmg4yF8i+jN4TiXQfxVtWDPPf12P68y6qd8Eank07O3Fuxx3mpU1tksNdojMuuDeQBnv3vqPrsemnF/9U46q5Q6GF/cgBL+/TzcmZbvJotnVLtHnETIuyI48ZbcBSRnsEeQKOH0yhH1eYWT/M+tj9sL3Xh3CuBpGyhky7PlqdUqrJjOkVDtEpg1ixtOED5w==; 7:nWdlXZ05kcjn+wZV27KxmxxuHZnJHVoi+kNsuCsJBj710lmyig+vP4sHjrMibmKY2tfVRXsLwdU1caRJQc76z4RWFLUWFU9VWzKY0yHtSJl7zHXwMPeh/OfpaSlVnsjP2/zjnw7q4qgXshpay3dyJg== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jan 2019 08:19:33.0472 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3f1a0329-df49-4576-56ed-08d6779d8434 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: DM6PR19MB2763 Subject: [U-Boot] [PATCH v5 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 --- 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 07:45:52 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Horatiu Vultur X-Patchwork-Id: 1023424 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 43bbQm6CLVz9sBQ for ; Fri, 11 Jan 2019 19:20:32 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 85E7BC21C57; Fri, 11 Jan 2019 08:20: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 922EEC22180; Fri, 11 Jan 2019 08:20:17 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 46E06C22180; Fri, 11 Jan 2019 08:20:16 +0000 (UTC) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-eopbgr820044.outbound.protection.outlook.com [40.107.82.44]) by lists.denx.de (Postfix) with ESMTPS id CAA30C2217F for ; Fri, 11 Jan 2019 08:20:06 +0000 (UTC) Received: from MWHPR19CA0051.namprd19.prod.outlook.com (2603:10b6:300:94::13) by BYAPR19MB2758.namprd19.prod.outlook.com (2603:10b6:a03:f7::27) 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 08:20:04 +0000 Received: from BL2FFO11FD027.protection.gbl (2a01:111:f400:7c09::143) by MWHPR19CA0051.outlook.office365.com (2603:10b6:300:94::13) 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 08:20:04 +0000 Authentication-Results: spf=softfail (sender IP is 208.19.100.22) 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.22 as permitted sender) Received: from AVMBX2.microsemi.net (208.19.100.22) by BL2FFO11FD027.mail.protection.outlook.com (10.173.161.106) 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 08:20:03 +0000 Received: from AVMBX3.microsemi.net (10.100.34.33) by AVMBX2.microsemi.net (10.100.34.32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1531.3; Thu, 10 Jan 2019 23:49:56 -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; Thu, 10 Jan 2019 23:49:56 -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 x0B7lkrk015954; Thu, 10 Jan 2019 23:49:45 -0800 From: Horatiu Vultur To: Date: Fri, 11 Jan 2019 08:45:52 +0100 Message-ID: <1547192756-10590-3-git-send-email-horatiu.vultur@microchip.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1547192756-10590-1-git-send-email-horatiu.vultur@microchip.com> References: <1547192756-10590-1-git-send-email-horatiu.vultur@microchip.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131916684038066964; (5a93feec-e11d-4f7b-166a-08d09f1f276b); () X-Forefront-Antispam-Report: CIP:208.19.100.22; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(396003)(136003)(376002)(39860400002)(346002)(2980300002)(189003)(199004)(44832011)(53416004)(486006)(316002)(16586007)(14444005)(305945005)(5660300001)(105596002)(54906003)(106466001)(50466002)(476003)(68736007)(336012)(126002)(11346002)(2616005)(446003)(48376002)(30864003)(356004)(6666004)(2351001)(26005)(53946003)(97736004)(76176011)(51416003)(77096007)(50226002)(53936002)(8936002)(575784001)(86362001)(107886003)(4326008)(498600001)(69596002)(81156014)(81166006)(6916009)(8676002)(36756003)(2906002)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR19MB2758; H:AVMBX2.microsemi.net; FPR:; SPF:SoftFail; LANG:en; PTR:InfoDomainNonexistent; MX:1; A:1; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD027; 1:v2wA1BstHPIs25E28U/euvDZEg64Qy7oTO6tYgWSNRfYMTWbIRB9sC++lhOy9r8Ay9sQLi2szG9alHN2xN1YHmS7PvK+iReI2mxZzj+s4SX7mOmALvo0aHI2lgi0i0VZ X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c48ce2a7-9c82-4b66-051c-08d6779d9672 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(5600109)(711020)(2017052603328); SRVR:BYAPR19MB2758; X-Microsoft-Exchange-Diagnostics: 1; BYAPR19MB2758; 3:1rUgJNQ21bGxZEPXChPWR1RNt8Yw8rn0ivb+L7pLp61OrIUnDauX/D6g/l0nSbwJqMQKtaA3IhgBMRjwlA4PS5487xJGbAFPhFN4iOpRBsfAh/YGHWS8+cnBT5jrpVtzNjIAUEqZPk1mOiboUOrvPxRox5WiEA3bUhSzncwdl4fpvruIq+dIDAuxmTdOwm27uHjw2mJHEo2d+F0tM+wSI+CZQRhvTVOngqJdaiEH6n6BzrTmiAsREoYFLKvBRn215JXS4Z56TP2uqjKnYbEJDC7epNlRm06TzB6tnxQfUaD4CT/7BxwHrn1VutmBoIb/9JeqqviobfC7iScGzzeYKdleM/YtHm7SwgojIHk3A0EIN4pX1Qk0zxBTNm61+RKL; 25:cGIuwVkM+JcZX4/gazx5LYe9xpg67Ep82koy4ZaxpfR+/EUrGp7q9kXinmv+dj5u9bq56BcfQQw4SL11/PiCY5llghte/62wCWydTINrWaceODuHRcrWy32i4ucwa8RYrAFPjBnB1GYao9tyZmksctndXVrM4zrV55vQblyfw0Axr23rWp2aCEYITvCZZbo/yItEDNU/wHNKTZeJCrfZThgaOf3vPNQv+aA6DwfHcU71vjbfQn4DJceI3I9sCRoc0QHzms7NjunDM5/uk+tXQk9CEeBwgxhGDC6LNvQJPG9ZG8garRfLMD0V6zdSCdVm6+eMwlm2A/eQZDv1I2vb9g== X-MS-TrafficTypeDiagnostic: BYAPR19MB2758: X-Microsoft-Exchange-Diagnostics: 1; BYAPR19MB2758; 31:2TPBy17TbmC+55NBJv2fJOuTGMfZPWIa8wACKJC2/dsyPdW/uoXec5z/3OOBK5SNhH14JlgfZ5Cnm9k/qHS1CcSxx7V7NNgf2yiBAihCUVpOAVkMJ80BgbhD9nk65ygY6rTNnpHTuzEF2DhplLuLJfLJF+3FelOnUmTgiyT7N+3AKmGi8kcaRiKOUC3BHzJkkZ2uH7Ndeqj4yZ+ihrdbRh4CHIjeh6zkNNESuARzxGI=; 4:WrqAJTTTTwhAwXAFkmiB9k+a6JEkvI1HSJw7iW86VhyjTQLNV7tI2Z38qrMtjLQm5uKsCKMheKITXgS45/xpdRp9gHDiNHgUiNq+XE69iMF794BlnXgtfNYz5IPGX+3j8wSni/6SxrUjck4foZnoTLnucTf2vKgynzi+Drpgh8IK1EBUUQzUIMWwFuxQsTGsiHk52n2xETtSXWjniSwwCbrbgOJLj2rTWrrB1BqkwtURdFmRKINQr5oH0PeSBuGBsp85Serru8Ra24ASyiPB40WNme1Jcy9Lr0UV/J3eckA= X-Microsoft-Antispam-PRVS: X-Forefront-PRVS: 09144DB0F7 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR19MB2758; 23:bdFgLiWrXnu5zToLeG3RP+rtxtKUExFb+j5SrD5oR?= CRy3vFt9Ln3h+i46zykgdI4OP1VzqCggK0TJzDiUvN4LW8be9Y5/Vhh1SFCY7kHR3tpyh97q1KMMoDsO4NOAA4oM83SeG9sR42+qRZEddCKm3QnCHsNCvCn52O01Qb6QC7z0GXD7Zr7MQB4ZCviGtnRqDOF1AYYhN8/HkLWeG9RYGvcHvxci0xJuyjQ3QVfFAjhpe46OwwHj0ChwC7POuSYh3UDEqP11yyGQ2FBud92ZU7xhTpKJp6oEngyroG/jx2XDeBsXjtSyOvOSVQxxzZn1hrBDIrsJBZMZbowM69nqtgFqDR20kPJdWxytQ2xYSXhzXCQLUr+my2+3Aj+XKsGb8W2C9dfAILM+Of2wwu70CakE7rQF9fk+DHglHhNjWdxVXu1w8lxF7m5uGumG7enXaFwRhc1twT4Va8Za+CMPKVcCSxN4tsEbdDBQFKZuRCLaW0Zp4nT2Ylm3ExU32EqZoH60qmnunwH7Sfo8wvDdk7JVbrB63QOy6jkaYtiDUrSDYJCgqN/GP1yn1wOE7b2/lXTP7qUC0AFGhxNGzDIvNJUnqCUqEAm4AA0DrY1iz8rK6gevcRGXgWupezeAA/yF99oldqMcqvGcUrOla+C95QKOkoCFlYh/AQDsJ4mTtXBxHZewRo1wJVywSr+zrGAFQjOSBlzIufCTajH6mdun0S+ETWe7hU9lCH7sxv06xoLBUKYjjiVkzaebL4O5A8Ebt8xoj/rl8EHQ+2hqJ72IsK2rKAO3+uGoc5kq0G5khNLZfZkT85BNCl+ROALR7UyalPHyEKMGPedZZmtbr5BmX3F6ghsN4UK7qAwdmVjmB2uNtc9mgqfXOj9k69e8Gzk8/1ElI73dBz3Yj8uIhpQW1SO1TPr3w4+18nCoQ607phcpis7Ces+QLemZv/+qYZm59BVpsT7MjAAXUX5fJ9bHHwDvTwjruizysDR+PwwCaCV6w1E3rYhbWuREP+QrFbyV5souninmFmaUaAWKDBbVn7Nt/cw7MszTzjU4XdUXRVhsL+5xcyYvvTsOobLZDiMMhcBBIg7qrm3D7yFzyTK953wMO40No5hzpxaon3u5Bh6AOLlSRpKnH8sxIg0jYTjkdkDAcR3YsGIiO0H2k+shiEkxftLQF3sNxMzjLgYA3I0LjvmywD42jiMzIfEAbad X-Microsoft-Antispam-Message-Info: OZd3lSebjlSZcnIJvVKfY0OOGQaqLIilNrY5UCM0N4TM9cMb4/lTOJhnNUgUa1H6eEV5usold3USfXNg38ojxZ5zeU/HgTYM9W7PuuJTy83y5zmEDASn1m6Td61D5UcqrNF5yOhjzghitLQfO6zd35oCW5iAqqta/sgbfMMvW4Fi42IHlMvpOKeMZj22UMXcXKCWLeCy4no5Di6kV775EUprwvnFuqKy2fuGvKa46TwUZocP59URtmezS7c8gsrfqq+soFD986ihqf8SJFasyfDZ8Z8nVG2brZJiERElx9HCjfdS3fVOsSWVFdgAac4W2Rfh+UvO2tYLQgwWqLnUhEtUBlQSK/uBI8X3Uam17RTOWQGrnPAzWPQ9LrmLMdoRVXWJmqZhpt5dtZI6NH9M3U7aQpNX7B3WkeOns8JMD0g= X-Microsoft-Exchange-Diagnostics: 1; BYAPR19MB2758; 6:nWg5MxOFF5GEPL2lBw/0QDSxIT+0u0nUwfdcChKoQW6w+qi9My4PH33GfrgR0WHPJEQNDa8O+L8kDRyH3ve2juYc66MGk3BrFL0cwMJ+ijUjrK9GFzk4tRQqGpmM9+IvdO6k3pPA4VpAWEt7iNwXEbmZbccpNQ7jzcUTxXF4dukl5VrIj3Zs7c6r3CiokPI2gifPryIiiektXfY492w7qEucgs29auaP7qTCheQlB1ivgx4FrlsWGDvyqw+oFJqLU6WuxV+vELE+jGUw0OyH4lyhei75X6pr2DdVtYEQtP0VtNNeF70NcrZLSVQgdUI9X4tJ4HWcuXZK0UcKmuRpmiD8pWuqOliaPP0O4dgOy+PpXfXncJKdnpdLTXiAT1Kjidi+qIz2rl6LrrzvMLaDrvs9+11yR5Hqm2xBTgOWeRDxqKuoitxPaZRBU8j8qhOumrVeRqbybkHUZBYWLwnN5A==; 5:gE0syVENkcsVhIxhNs8nTMKK24ODhoFtnRDNCv1pb7Op1TArzWUWS7mE0fNrkwLGoN0lvmzhQGMqAhXo4xreRfcZHBGMxvN0PkLf1SbGpf5I3tkwyW+cIV4jxkK9tsJae7nYTHQU0dtTAmTwn76aycYkFyMEcsPBhLZ5PKNw4FqppjobIr9yUHL4wqg8sM0sP9jqsKzma051l/Ct2yf17A==; 7:ggYEFGqRF/Ygy9Oz0mymXIrSlC06nHI17yYt+mtmnVwW/vWpI5/ybTnwlWDcx4XhI/VGEJQm2Cr8754S8fxh2gz19eN/cfj1UvwzbLCozAGrmX8OmwXtfubDP7dSdqgPyo2Rp6OrbbrXVSUcyUALPw== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jan 2019 08:20:03.5566 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c48ce2a7-9c82-4b66-051c-08d6779d9672 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.22]; Helo=[AVMBX2.microsemi.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR19MB2758 Subject: [U-Boot] [PATCH v5 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 --- 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 07:45:53 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Horatiu Vultur X-Patchwork-Id: 1023426 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 43bbRs2v0pz9sBQ for ; Fri, 11 Jan 2019 19:21:29 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id D286DC22182; Fri, 11 Jan 2019 08:21:23 +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 29302C22196; Fri, 11 Jan 2019 08:20:52 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 0CCA7C220C2; Fri, 11 Jan 2019 08:20:49 +0000 (UTC) Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-eopbgr810070.outbound.protection.outlook.com [40.107.81.70]) by lists.denx.de (Postfix) with ESMTPS id AFA4BC21C57 for ; Fri, 11 Jan 2019 08:20:37 +0000 (UTC) Received: from MWHPR19CA0090.namprd19.prod.outlook.com (2603:10b6:320:1f::28) by CO1PR19MB0727.namprd19.prod.outlook.com (2a01:111:e400:7b6d::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1516.14; Fri, 11 Jan 2019 08:20:35 +0000 Received: from BN1AFFO11FD009.protection.gbl (2a01:111:f400:7c10::126) by MWHPR19CA0090.outlook.office365.com (2603:10b6:320:1f::28) 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 08:20:35 +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 BN1AFFO11FD009.mail.protection.outlook.com (10.58.52.69) 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 08:20:34 +0000 Received: from AUSMBX2.microsemi.net (10.201.34.32) 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 01:50:27 -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 01:50:27 -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 x0B7lkrl015954; Thu, 10 Jan 2019 23:50:15 -0800 From: Horatiu Vultur To: Date: Fri, 11 Jan 2019 08:45:53 +0100 Message-ID: <1547192756-10590-4-git-send-email-horatiu.vultur@microchip.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1547192756-10590-1-git-send-email-horatiu.vultur@microchip.com> References: <1547192756-10590-1-git-send-email-horatiu.vultur@microchip.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131916684346841706; (5a93feec-e11d-4f7b-166a-08d09f1f276b); () X-Forefront-Antispam-Report: CIP:208.19.99.221; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(136003)(346002)(396003)(376002)(39860400002)(2980300002)(189003)(199004)(105596002)(86362001)(53416004)(36756003)(106466001)(2351001)(81156014)(81166006)(16586007)(8676002)(8936002)(51416003)(305945005)(54906003)(26005)(76176011)(4326008)(77096007)(50226002)(5660300001)(6916009)(316002)(44832011)(14444005)(2906002)(47776003)(486006)(11346002)(446003)(336012)(126002)(2616005)(476003)(6666004)(356004)(69596002)(97736004)(50466002)(48376002)(498600001)(53936002)(68736007)(107886003); DIR:OUT; SFP:1101; SCL:1; SRVR:CO1PR19MB0727; H:AUSMBX1.microsemi.net; FPR:; SPF:SoftFail; LANG:en; PTR:InfoDomainNonexistent; MX:1; A:1; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD009; 1:wSTPEPQVGO3WfCapyLXo2sq5sw9ptTT5m1WfoveeOJ0/C+bOLoUe7tdQDpEHyu7z2r52gNpkjbZ13BIW2qzCdE4kNjSx6hueAJJG61gzeVdlnQsPNCf1pLN2X53RcB+s X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9866f500-90b8-49af-21d4-08d6779da8d8 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(5600109)(711020)(2017052603328); SRVR:CO1PR19MB0727; X-Microsoft-Exchange-Diagnostics: 1; CO1PR19MB0727; 3:evWvXZE9m4Pi3Fe4TJdCdHCwiYz+GoidDC+p5P2iE22wFzbV1h+Zr+O5xCbWNX/8xGD1B71YtuOFAHZQfazNEIYCMoMlFMurdoPFtDbcC59cf5MT40QracYZ5IsVrSJRqM1qS2QDkwhZ9vpBkZv8nok7ez337yH70+GfKFI0k/75BBbGmAjkceoMQm+8aYOAlinArdudJRx4upCc5NdRmAFsyKHQGGJVEdtoGgOHQk8xFhGu5fAbXhPafOvlueRmfmv6K0yTjmcy9IoS6b8JaebUDTuDPE/P8lYa6UH5nJ1PpEvgqIKsjqVX36y7RTaXjcsrwYXi6y9iKb1YLOQCf+gmHsl7SuuEZ5Qjlu0HCaEpDGjoK6fwDES1ZDFy4Mjm; 25:Dh0bKOybTtcEAmIKvv1w5J9DJTsJ3NUSRRmdOAgS1gwMPov7FF6ON0v8oPVbyrScP7ps7rehORVkhnhrYDunVXI7zs/I6BCnR0yJlWRjDxIavCQoXhpH+Yzn+6MpFgfYxW92ocRek0PWmOlmzQSzii5dGb3xtyNIZ/54tQxADq5yZldeiiYBz4DulEzszx+6JRq2kkvwG1QpdrFvH4dEhTECA0UwtAQU43o9W4c8xeqqp7MKuXrXJUihqsZuPtxEIzUpvbptWTJEi0rV1mE99igxjIV0diH4t/XfbPdbpb7+rX2RBI4hLD406tk6r5TCocVvx20u4N6uhGgkt4DPfw== X-MS-TrafficTypeDiagnostic: CO1PR19MB0727: X-Microsoft-Exchange-Diagnostics: 1; CO1PR19MB0727; 31:xvWJ/fwNWkh+ezwyernTAPbeLVX5Mp4/e2/iQE+n5t0Lis4/tcwokZeekznE8PN1/KE96COsk5gZrcUnIKUgPSd5MLFa34gi7astmtgS2GPocb/ciskwOCk4fQjz8GI9CIjhF5b3u9sJwg8+FVqiwziZWkzjNp6CjD2MdtlIxm0BwkGQhG4UhnE2m7p56xVV4SruQhFpWJoZk1ApEze3jRMUxaaC+hPdKE8xAzbX7/s=; 4:UVV6OIgOln236+0Yw3tZ7OhTihILZJraX23XH+GSzz8py13mw+0Gej0m2UfkjK+1kcGFnFCnlchyieRBqpOJFDJh2uAtZdF58DmbLvHhqAalFBnL0rSBVQukq/6BipZUQX7QOUNYIRNfxArFYP8eg0dx9S/rv9wu+dmNMhrQeJH4V2O8SLN+/WnK66RDRkjeNrge37Hv70m2/UV95wyb+SyS6FPbfh9x3Qdq096y4of3U6B0hxw0Jow9q6PeHOz2Urn0xqyck9nDO3nOFTApLBuoh35MluzNtyPYX8RbicI= X-Microsoft-Antispam-PRVS: X-Forefront-PRVS: 09144DB0F7 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CO1PR19MB0727; 23:GA/u4ZopnYAgKRICs3vn9Mq2pmX+xaH1iUEU58Ly6?= 1Vcl3+e5VQav5LhWdB2BZdgSs0qHvONoKXQ7iONVkI7c4dtA2ssTTtZrfHKJ616MVJy8YVbdv5pwxIQuBeG0809PQhLq9n7WwrCJI8I3ylW01o2ZbyRbr9SKzqSxMo6rOXGjQHYOkCrN6AFXeBLlWBa5c9dq9AKWTk/ywlw1Z2qNW/I7xg9B33Jalwc9aI9/lLc8xPnYQL6FuLAl2k5PkpIIGXaryIsgQogEvIlj2REsliWBc/zth3osqZ89piWL+Jvf8Xac2TSl+AeAvnilldNycVthdWIxFMGViR2bpxR5LZuwexE7w92/FHdEFq+l4CIt3RyaJHp0PDzjuWHK93hjBfL5R8Ssmd7U1hL0iUobyGuSHz0Rb6ia8+8FNzM44mt8angPqIDCHV4EABRDdp44BzcoYm0Jgkx4vHRrv5n+Czsl/NAtgasKg9aqhHhyhjXyWMHpxKTJDFkoc4wjVmu1xiFqZLlVdN7ZIf1O4ag3XI1Shoo10W7cQpQ+QZqBp4Gmz7MMlk/g5W9w6LU734SSqc415LhJOO96YCOAnJH4j492Kx0N+zNkhRw//cvGFmDwN69QTaxHAKoXI1AQJEuulTZSdsn25dwHI5fDfPsMPcLIDKidwyom33bpbZW0CD/XxwHchOBPKkP5YXAdSQ3mQrXxDJmK/P+peP+vGZecWpT0PL8/aXT59MTnFX+jMO55uiM3nhTYLHnQjfKb6nnxeaIvv9PutLDYX4/Ht8FM562GDiOkc4gCUcPKnd1apGoH8NmJU4QZ3K8oJAbdV7bwAKJBpPG5CSP0j3LTrphXtjKInYtHEPCAReWfbHnX0Kp1NUsdsKLWi273gKLzSjA1MiGap3ES75kEfcWz4AJ2hwcZ9C4jSWgJWDnYvEsY3/AUNt6BDWcQIqMAyIbt1b2CEcGrsiJmWTTtxPXe3BIl1fxEcA/L/HFXVu4gzMBF0Hc5OTKu51fljCy7ptPyrdb+eHrj5RB4rYtnyy0IdX62SFiyDWPgS4wEn/9WnpB8ZDC6R7Byt7f1nhTGPH5sC2J+Fe+Mw76Fh6vNC57+fsFbMc8wbjSYUUzK3bjukLQXVFw+/ZEMrYT+UYU8esiy6vk X-Microsoft-Antispam-Message-Info: NOzlQDN5FHDlDKtOgw5hBKybY6e4auwGZLi6Hq0PnubiIasc8SYuLwAviilI8TsbXGqYWW+Bdyd6FN+WSb48DLTpAwHnpT/USr45l7LcV8ti03HX1SEIuWCoiADM16ZTAUN5CwZ7awp46m9n/9CzYwpKEMJyuG94Hg5JnNFHhKeFNtHQlees9GA0Jh5hTVPZq+q1OuvVMp5FC78UgWpNRhnVKx6D+sow8YBtpk7PNyIvtL6ppliuABFWvydeXpp8mO3lf9keV9PD4kQTgpNV1LmH7IeXguOrsg+rBrjWsseeyM7pt29IjFlMWxzLdAvlqjGgi0ayIwxjupzUhyzjrEZkQMqMUVNcnvHECp+SBG1QpyfmeYZ+toM1a+nQldiVzcBfCy7oy29ceAjmilLAo+LfU1xScDpQItQZatMtQac= X-Microsoft-Exchange-Diagnostics: 1; CO1PR19MB0727; 6:tE/wvlImOyy2yPCaCXGfPJqTnf/S/PTb90UcpvOftEEEr5T1vPd6Pze7M4cbd/zy/dYUgllekkOfXMtZ4AcHj5Ilx496S8GrNckxq1IYLZcPFyHgAhXSEb6RfqdJv4Hl1+QDovsMz9e7VIt+tsOuSGBx6aUSHBvwTQRn/11NouMqGbipetGk5FNCQkb1aMB5dQy/MbtAjXVWiWy1BGPlh7rGV6UT3a8hkGTXDsI+6zloZWarlEhDZ3AUbmlw7scqCrqPjb+pAD5SK224jliag+4ns24Ffv7b6U6JmcKsqNgYHH6eQGNYoIYnRBrWi2fBNTvTXS+yznL45Dv6kv0vxSYzCjEIkpwOjHNg0/Fwt2vU6+E9mRz6H+SwnWMFc+lxCa8HQsYVehqpGSzBZZ3b31bKQhH2eZHAFZ70J6QliLNkFjgKHK8avZDsw/aH/GIKIeLGhmqq+eOTND4xxEsE5g==; 5:XtBQMeCEhLa5IsLo2oTW1J86GQc/jaoSqslZXCI8O4nNgnQ0pNxDf7pP3oUjNX76QJdJFNMJEXXyfJTjp2uJbbQXowtIuusPjvUO4k15UDSliGGZlBmTsU65Otm4vqiVrMP/jitlPeTP8VExGKi8gZ/ZYIMc81Gu41dnnx2V+8sLRzLgxKZ1tTYD4Zlzp/TOdE2jOxnl3e/VgiuAJJfA1w==; 7:AGDcmmkGcTkdF8cKjIzlVKmZR6BTd88vxMcqh3tLR/og/Fw4Oxsg7jQvcvXwYj+SUXKLffM80fYupOmf6YVWVu+eVzsCqzha56wuSLHLkbMO+6nF7tu1aNHMwNKfp0jKWrzyNSfyOSfzWM/iIoZz6A== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jan 2019 08:20:34.4471 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9866f500-90b8-49af-21d4-08d6779da8d8 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: CO1PR19MB0727 Subject: [U-Boot] [PATCH v5 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..54b8988 --- /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 = "sio1"; + }; +}; + +&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..27baecc --- /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 = "sio"; + }; + + sgpio1_pins: sgpio1-pins { + pins = "GPIO_4", "GPIO_5", "GPIO_12", "GPIO_13"; + function = "sio1"; + }; + + sgpio2_pins: sgpio2-pins { + pins = "GPIO_30", "GPIO_31", + "GPIO_32", "GPIO_33"; + function = "sio2"; + }; + + 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 07:45:54 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Horatiu Vultur X-Patchwork-Id: 1023429 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 43bbTB2H2Qz9sBQ for ; Fri, 11 Jan 2019 19:22:38 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 0B959C22150; Fri, 11 Jan 2019 08:21:46 +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 CFCC8C221B2; Fri, 11 Jan 2019 08:21:40 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 84773C2217F; Fri, 11 Jan 2019 08:21:22 +0000 (UTC) Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-eopbgr820078.outbound.protection.outlook.com [40.107.82.78]) by lists.denx.de (Postfix) with ESMTPS id BDC54C221A9 for ; Fri, 11 Jan 2019 08:21:14 +0000 (UTC) Received: from MWHPR19CA0086.namprd19.prod.outlook.com (2603:10b6:320:1f::24) by MN2PR19MB2992.namprd19.prod.outlook.com (2603:10b6:208:10a::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1495.6; Fri, 11 Jan 2019 08:21:05 +0000 Received: from BN1AFFO11FD028.protection.gbl (2a01:111:f400:7c10::116) by MWHPR19CA0086.outlook.office365.com (2603:10b6:320:1f::24) 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 08:21:04 +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 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 08:21:04 +0000 Received: from AUSMBX3.microsemi.net (10.201.34.33) 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 01:50:58 -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 01:50:58 -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 x0B7lkrm015954; Thu, 10 Jan 2019 23:50:46 -0800 From: Horatiu Vultur To: Date: Fri, 11 Jan 2019 08:45:54 +0100 Message-ID: <1547192756-10590-5-git-send-email-horatiu.vultur@microchip.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1547192756-10590-1-git-send-email-horatiu.vultur@microchip.com> References: <1547192756-10590-1-git-send-email-horatiu.vultur@microchip.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131916684646929123; (5a93feec-e11d-4f7b-166a-08d09f1f276b); () X-Forefront-Antispam-Report: CIP:208.19.99.221; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(396003)(39860400002)(136003)(376002)(346002)(2980300002)(199004)(189003)(498600001)(53936002)(336012)(5660300001)(446003)(11346002)(54906003)(476003)(305945005)(2616005)(16586007)(26005)(126002)(97736004)(76176011)(53416004)(77096007)(51416003)(486006)(44832011)(316002)(68736007)(4326008)(69596002)(105596002)(8676002)(106466001)(47776003)(81156014)(81166006)(6916009)(86362001)(2351001)(36756003)(48376002)(8936002)(50226002)(6666004)(2906002)(356004)(50466002)(107886003); DIR:OUT; SFP:1101; SCL:1; SRVR:MN2PR19MB2992; H:AUSMBX1.microsemi.net; FPR:; SPF:SoftFail; LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD028; 1:StWefJLj1Rmgn98ANIjsw6KgP3IFHjYvofYQlEE6c8K9/y/oElsLvZD/0Djn5tqxTRcHYnvL6XJA2NBz0JJd9/Mi3kIhqITIMs9cvqoqjXG2UFhHURgDkDYtg2zAD85Z X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ce98654c-49be-4f29-8222-08d6779dbabc X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(5600109)(711020)(2017052603328); SRVR:MN2PR19MB2992; X-Microsoft-Exchange-Diagnostics: 1; MN2PR19MB2992; 3:698k/9h7HggW/BmcmdcTYX+QIqZSn9uJ1Xuv+h2/KJvQSB2/D7Eujg9+bq8HZ7ZhndyYl9zpJxLECDzLVsAn0+oakJJzCpXWQV+vzCsuq0Ss3CeFnzEuhPFlAiMyuqpG6rHjUYmng5TOSRl1FSVJv0vSpTFLzC/fASq+DLP9nwDZc2DmvboHkwoDU8Rm89dE5vVPssVJSfT7H+RhZtAjtSf1Zk9aZUgJTOKPxLJNsd96vgCY8+khc6WUPmXYK2F46gChczfWDmu0Ag6GsiK84JQ5NK6FEzhS2QSmEctHVIMuAteKXTbruSf1rYdzeNEEk6nv2pXHWpVc3yS9idVmD9+/2EqC2I7CBRb7og3gfzM+RSYYqchjBL0xeXp4EQz/; 25:Y5YClsOb/UGcsD0CC9qgzUW0/vFYA6JwQ6MlAoIThK1o4n6xuKYry+duZJE41RzumVAyw68/oPVPqfq7EviN/b6V1mkoTXffJLzMV2Di8/U7yaZ+JMEkzKj4bCxr28cSUzqGjiGMhQ9ksQvv8kb91VkeAPUle8yNoJGyBFAlWZkktLg0nFOEZMmP1ycBWPP007bKbiWI+kwzsqQObOyRyxQrg18IXERS5EGBVlvQxGea6+8jdsE5YwHAFeodFlVaoyNHcgjs9N7L1YtY5QO8DagPpOe0WQYDq4Ee5XVbL+gD3Jn1szHcE02kqcHCJQC5vW8g9zQAToX4iWskvQthGg== X-MS-TrafficTypeDiagnostic: MN2PR19MB2992: X-Microsoft-Exchange-Diagnostics: 1; MN2PR19MB2992; 31:LxlgClpCw6gVB2vGdI4E4tpX5V2HmXX/knBJHnNEbPJHp8X5oi1mGSsiLVXUK5FYqgsgs1gi7WjCDaEdu+N1LJ84/gNArURvd7C+dgsaFyjGgt1tJKN0zdxroG7hz4bhat64HQ24FkJhbHbzYFLehvoGUB4Yth0Bscp4QPUSAD5R2UnsSaLM0eoBbGUin1VAzgETjY8fPZrv8Kyh5ysqOF5vRi17JjHxij7lS3U+S98=; 4:pda9nJZugsoP3FeiWd459dMlKl4yO97u5qx4XlG9sDYfQvvbgVZTLle6lIPhCNiQpsE2XRYzYkCQ4VW5Q4QtZ+NpyUPmuJE5wyoRrC6BcuK80S6xICbIX05cvO3075gFx7iitIcBVK1pr8aAR1CpC/g+GFHCXsf09nTwKNyWneqVU9FTjklH17PZHX+qjxc6Z1uwVkU4b/YUcbRe5tNhXpyy16Wk/fH9V56YmfO7aSB5+qjjY5EHM4byxdGyETthqGrd5Q1vU5Cntp9y3GLobx0CBFj+zxkO66IdUdMJiIN92+f3WQFV33z4bn946/SV X-Microsoft-Antispam-PRVS: X-Forefront-PRVS: 09144DB0F7 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MN2PR19MB2992; 23:rYqkuyjDsGKZLvpRDDuctxeO0ByBtANZhB/cEIiD0?= UAMjOTY1ci5WXQj8PtUzPghaI0FXzpVf9O645iVepXhPCBTJ29Z/ft4AGvd59Y8AEjdH22wH+pdQvTwyoAk0qtyIrep7qQstC4iMLU6458Tr1c3Mp5HJKoFhYA7DjBQTOut3kNO6kwc1XpgPbgzriJ96H+O6y9+KlmhTYUdDHSZu5VrGwN+gU+hZvFqrEQ4pIPxfhRRo5g/cir1wsBluQ+DWZtcp5N3o7UtdYxoDYTQgrdD1OD4HgD2lwElKLECGK6+wOFm3lKhoPVZBXD8J1g0RTKyU9AYrGCuDuqyaLXx3gPqH7wEOdJvtNhFk25g2FEEdXkWjftcxpGtMGcSGRPEqqq7HJCQiFja95eX5doB3ivx6dBFCQn6nBhc7nrY1hg+BvRTam+DHVqsTA0c0TwFVKlmOoXTjYfB6knB9y9zRLuAYWLfK9Ah9NRx1Z7czS6R8gsiHa0YCd+Q90owOjmzeXBD2vyvIIm7IV0kjawiG0MCHs4J3BgcTOJiASwvpcQhyEr07JPtX7UqefZNZ1mgQk9UU0ruYqIEKxnGZxBmjYUb9OpsrYKO0jdWx6Qq97M7ZzftFuJcg9cXGfKeMzIvNtwGNSD7EEgX2nEGA6q+0psrWaoM2Cpusz54XKx2m+fcsJwQrv+Io+r/nIBFYooenPWkwoVx3F3EL03yCyy+wk0o2xmgzjHuwq3PXZRivZUzmOlofFNbi3fB6ZAHjqHB9gKrElTcCNz1fwJEq16FG0guX4yAQhvN81t5P582i+0PnkLtAJQKp0Krw/T8etX2MtCH9EFbJtK1pdzPcjIzPQyLh21XolceHWC4Ah+LYtmGxALNLGRo8rwMHm5ZSygVXVYpCCx4qqgeZRLbq1bv4VEeR/Ln946w6fs+Vxdyp0Y73Hh/boG5DehyxvZHajmew74M5QCP3kO4xUAKpMvB0m4EMnQKqHlE7En+gZuuqXRO9uSXq02GeBZCPY5aspUa8v0hpZ3pHV1wxg907gWhXOviFHXLYJGj5LMna8r3TDNB/UjDnrAIL4vr6B4my0aEieW7rVD+KYQj4QTOLHwnJ/pldswaQ3SYaAJdnJUaCag= X-Microsoft-Antispam-Message-Info: e569xDrD1msSc+EKgFiVYu9ONndqnXFqNPycnPkONuLDk6ixEaje/Ym47zknxq9QE3U3SHLssaRtyUllN3cC8B0RIp091T53fEjfh8JUi9FMO/KkoSV1cPjAPLG3YzAe22kf6DUa6Wyv9pelZ9S7LWjQ7sbvQJ4MvQMAy5YxVQEzXC5lTenayVnJJwmfbCgz7MQgboES19VvdjYoelwrnjHHUHaYutlO3s4ObxhbYD2dyL8K0U/3ms8w+9F/FFfCCEBa8CSQoZXqtxk75us6IYwknpt9q40B0Ee4EY1ncAki3g9Srk5sQgd64EJ9TAph4yAQNMqwl0PBbZzF4NixSaM/PmsbJdftewRlFFzv/Ld/RZiFPnTXB9CZuxFDBMxCrpJ4s/EvmqNcJyngNwACvLI5vI8D6PUVk6KIONsxCiw= X-Microsoft-Exchange-Diagnostics: 1; MN2PR19MB2992; 6:8A3U01AThn+ElaXNb7D63ZLCPxrMuFrKbCtOA/oTSd/A4gRAuatOLMm3JMZxY5MveKCduiJT3Xh40UwIOnG0vkfpe+DnSxN6HulpLKEXef1ZL/pfpha1yincTsDaN2GfG0OAslwJYH2umAhaOwTmCc6Xpqd4del9f3qEID8o9Rzxt3Iw7RO5rZN5kq7moiPCiZw8joH45t7rRTSMqhdY4KJSvJ6yGkvKR6RdOoSOYuDvAFwzLLX4tLxQYjPINAA0nSSKSqS19RZ5lcRXbnyQFHzUWLdaWOJ/bbl9IG8KiAZpvmxRdxSubm6ao5AGMNX3bzzl4y6SDpY3p3vKrj3MGuOYn/2J03L2fcKH/opsJL6LpvNGv34J7Av2SyXZYBC9ZmnyW8AtDrxEp8PkdBCYGB0hgfwueRKjhv7kCxY7YZVKeXfytRkaLbV42IswBeUxaFc+IAA/8ye6jZdosjYK7g==; 5:iEn4ZCGHDOipBOXg1gHaKTIF/jWztVgwFQSS6NMge8Thrz6lDAATyvs7bH1h3RoOBbCBfv3r2LmyURm+85iunsGTYVmmjWjvgDK34DkFUExUVCurK9hmlkf2+IhfunRK9WnAQWO6LGIoGkqDb9XnLuTokrDAr5NKpkO1vTkSF/coZr3SyJNkOPFzLG3l1pYzmaLuS3d/vfbo3Bm6GQMxwQ==; 7:8c53UQtuoAuPDbW+eVSk644Kryqmi1KXmqj+XsVQXJSa44gereJw6OYYTH8Cp2Ko7qqOdltjkAhfDn9wKz8G7J5tfzBPWSyAm9yr/z7+HfCbs/ZEgNE6faXoLlT0+t/7ZuYfp+vZysMN1PcWockWZA== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jan 2019 08:21:04.4585 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ce98654c-49be-4f29-8222-08d6779dbabc 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: MN2PR19MB2992 Subject: [U-Boot] [PATCH v5 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..f1af66f --- /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 = "sio1"; + }; +}; + +&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 07:45:55 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Horatiu Vultur X-Patchwork-Id: 1023430 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 43bbTW6nvHz9sCX for ; Fri, 11 Jan 2019 19:22:55 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 747D2C221B9; Fri, 11 Jan 2019 08:22:25 +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 5B476C221AB; Fri, 11 Jan 2019 08:22:23 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id 3AFB0C221AA; Fri, 11 Jan 2019 08:22:01 +0000 (UTC) Received: from NAM05-BY2-obe.outbound.protection.outlook.com (mail-eopbgr710073.outbound.protection.outlook.com [40.107.71.73]) by lists.denx.de (Postfix) with ESMTPS id 819B5C2219A for ; Fri, 11 Jan 2019 08:22:01 +0000 (UTC) Received: from MWHPR19CA0095.namprd19.prod.outlook.com (2603:10b6:320:1f::33) by BYAPR19MB2758.namprd19.prod.outlook.com (2603:10b6:a03:f7::27) 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 08:21:55 +0000 Received: from BY2FFO11FD014.protection.gbl (2a01:111:f400:7c0c::146) by MWHPR19CA0095.outlook.office365.com (2603:10b6:320:1f::33) 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 08:21:55 +0000 Authentication-Results: spf=softfail (sender IP is 208.19.99.222) 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.222 as permitted sender) Received: from AUSMBX2.microsemi.net (208.19.99.222) by BY2FFO11FD014.mail.protection.outlook.com (10.1.14.76) 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 08:21:53 +0000 Received: from AUSMBX1.microsemi.net (10.201.34.31) by AUSMBX2.microsemi.net (10.201.34.32) 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 01:51:27 -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 01:51:27 -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 x0B7lkrn015954; Thu, 10 Jan 2019 23:51:15 -0800 From: Horatiu Vultur To: Date: Fri, 11 Jan 2019 08:45:55 +0100 Message-ID: <1547192756-10590-6-git-send-email-horatiu.vultur@microchip.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1547192756-10590-1-git-send-email-horatiu.vultur@microchip.com> References: <1547192756-10590-1-git-send-email-horatiu.vultur@microchip.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131916685140101447; (5a93feec-e11d-4f7b-166a-08d09f1f276b); () X-Forefront-Antispam-Report: CIP:208.19.99.222; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(396003)(136003)(376002)(39860400002)(346002)(2980300002)(189003)(199004)(44832011)(53416004)(486006)(316002)(16586007)(305945005)(5660300001)(105596002)(54906003)(106466001)(50466002)(476003)(68736007)(336012)(126002)(11346002)(2616005)(446003)(48376002)(356004)(6666004)(2351001)(26005)(97736004)(76176011)(51416003)(77096007)(50226002)(53936002)(8936002)(575784001)(86362001)(107886003)(4326008)(498600001)(69596002)(81156014)(81166006)(6916009)(8676002)(36756003)(2906002)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:BYAPR19MB2758; H:AUSMBX2.microsemi.net; FPR:; SPF:SoftFail; LANG:en; PTR:InfoDomainNonexistent; MX:1; A:1; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD014; 1:llOEzMU38yyxgcJQ0MXqzsH8yemcJtWyM/Oko+Vu1zcGNJjwzhxa1u01Bo8JwcoYCHIa8D7SuPRZVftDi4EaBKToL9E2gv1xp7RnA/CaCqkFvyQDZHeL7UVJla9dCivZ X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 82ffb552-ebbc-47e7-8059-08d6779dd826 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(5600109)(711020)(2017052603328); SRVR:BYAPR19MB2758; X-Microsoft-Exchange-Diagnostics: 1; BYAPR19MB2758; 3:95i1vxE1ngwwhTnpsSRxE9ACTK7CCH9xViWxi1GZmtlcooBxbLPGYEYNKwC6x53AM3Wt4hgTaco37nHywuapCgLgskLtQ+aKc6wD2sq6TvrC9D1a46b0KWCiB/fNShFmugs/RIYb0ZM6KeptgQRZ3jHjslWl712YS8RRzw3kS8M2UeZLtK7RUQtZ3yvrn9dwv5Rh3gmjoXPxtEgOgDv9LpEtjg9NQr1/PEpie08pG6VZIx8kmu+iUzDXs6ixv1b3lYUpnR1IBvM7VBzwO2OAbMlINVSJ9TxzG2BZ2QjU19qROd3xh/Aw6g5mxntURegQTPsLqiRE8T2gYHjaPqetFNNQpzssHNrqCxkhsC5G9GvYuJYRzLk7asegCGo0Y5n2; 25:1CioCz3oed41tCbtl2q1LAp+4GF2DzHEA7SOYwyEP2yiVAG0o49DxptrFe50b1glAa9c1m+jk+8gnG8aPq4732agXqMqSvlXQydmjBFp3RpPJoWW7JBVP7B7GbVACbPJM81MaEbCYwGxDQquQMLxV4OY0yCqx5ZzHBbLjrZH2LBd41ZkFqq/MUcVE6wg/m3tSpTLBatpiP0kObpCroXutVoT0uaPTMgqFYGA79ICwiEyfMBr4aHrWC/cnBX6Fx92VBBNxksBAfFNK+y8VO41iOENGELoDtp8oT8Wv6TZ0+rSdDC41ImCA7bb3l2tTPD2FK5fDPpecmuZdJUwnOyCKQ== X-MS-TrafficTypeDiagnostic: BYAPR19MB2758: X-Microsoft-Exchange-Diagnostics: 1; BYAPR19MB2758; 31:Q2ka9piEiYjNvg5Q/cAWkty9fQUk/76ptt0wgZhucz5eFh++5UNqkij+JCTAei0OODA1bKC4H7eNTeWKHrC2dhdTXxY3wL0/QznSwDEy1xdv4zCMVO8RfWJ79qeKcDaD4tUG+vfdcEWQSrKKNAmqbR3FFWhAGnjUNMxI5fcHYKMIo5oVBkNpQRmkXiaqBcSH902n6wxD5GrnYQyD8i7stJ6IGLkB0NZL9NlBq2wdgO8=; 4:MZWzqLEKHux9IW1K5djrBsfTOEsM5pnNfEKDr2egvV4lWg1bG6wscr45UEUprmZFXLTCF8O5da5PklSLR+35GHgtxlv+YcH7925pGFuXl1HQ8o5tFPTfDEPrqcv5Ezd0D1WOOrepWXwkQjt3GIyxTJU8bGa8pB4/mQFGp9rh11scXghby9JxVLblXe7PvQy83mlBSw3FWvNl3wSs3NN6UQg4vAFgYstzLNTqC9y6dQCFn1BcQR9pux+5lFzW6hOKfkhaogMjuXj4U51iKRgaDrGYlM2fH5sX5l0uqCmQVPKXJVGljG43IbX2HSgD3aMg X-Microsoft-Antispam-PRVS: X-Forefront-PRVS: 09144DB0F7 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BYAPR19MB2758; 23:shD9MQTD6YVELCbMnL5+vFr8XE/uedcFJNezKsoEy?= lpS7rANxYT1SjtXKl1fksStUzYxgJ1MDdjlrL0aaer5Cw34zeapuJ18Maa4ixy5Xj9ZPlM007LbTp2aBjuzFEiuverh4A0P+pfLiE0+8wbHYov1BChx6crkX/XHeqX586HEEkVm2tu4/CK3hyXtbqH583MtZpPCorA21mjNiLIYnBS1Nxxta3GzGSzYOJkwZ1kAQQ5f+UAOYykP3f/9JgUpN80ugY27iasBKAN7fTFDr4d7UJE8eWSa+6ZBZNv9wjcSqthrvUKGRlDSg7RWvPggIVrEbwa7bRE41woA/2w20q3EWm8tlGpgHHLeDzbBqBcLCA66WHZizdWiZscCnC8ZTEtPtk66gg3DCPgro5yE7RreJ8bkOXryj8QhgZcLTXeDUvDHFrfSWOWwfzQXh54G6yJgI7gJMk6Nu7nvH/+RRHok+lAJtfxblGeqUUIYO6bBn7PdUinmAOtFmJvPUSbQqTZeeFjm/Bsfhe7F6UYNAE9QbT3aR/oWv/yaB8xtfEOZrVIAReZUJMD8BhDRp6slwpd10+LYwiE3DNw/cvby13o6gd6jypnMPYLZ6Uq0QvCdGHZpgdqtWJcGw8fP+yMUxPpq37GK+43T2Fnn5l8qs6gDTePEidXxbx/BxYCrqSJSqvPGbvzcUeTpqLVbiPJrl4hdP2U1AJRcK3Mm5nxRFb4GHD2ddoWq1BLuO9uni67JAGYXw9v3WfcwBzFVKSyL/4Y6nvbVhrOANSTeTsX8aRJSeRvMQidUz6107SN6TR8ctvfFuyrgh8n3UYPUUpt2Q2kra998GGSoAeYnnQVPF9qXMSJPXV0UZGv4RNFl6tch8UIcTkQcCcY/oNbHo4juR5S5u5xl50WjcRCuklcp58+9wxnDDQ/6szN6+m3V7KjbtwsYn/XNb4WIgxhY9johHSEDPODu1ClZPnPEoK9XY7eZNb+78PdmiKQDUqOzJ3yFcApmhMHuSyyRMo9YynkbATbvOrYSwQILXz2mc0pYi7Zt536Imf4iCdnBbEuG9eeIXyN1DeEKP/2U5dua1M06oQ8+5aV9tKscaih7iK8HmUevWVuN84FWPgpFtLPD8FU+6V1hOvmEM/TMBljRLtwY X-Microsoft-Antispam-Message-Info: fDteEuNP5tqBbQkfI0niGPRqR32otmQcMNOHy9a1iGjfubLen6+dndUKPnMz/2BYDH5w3VALL5JEiPA0GogvYJE6AR13cn3lMl3NHW7KxyRsqZDkaLm6Z5lgOu9LcQ/7RbKcdJFO3vBnIFpk3XpQmkpwAufPODjSSERZOVHp5QrjgXpTotoyjGwOyTaLJea5LtkriVkj5BCeWItXH2zIpWQEeeANbHdG7V3G7T5UnMGwJ2GqmYDNHs/Erjoaaf8uSyZV0F+mGVhsS8y0xgclzrLr53KaCVhDRdts/iTzeGhAS23DUPf3Ld+Daz3i7vTpWAleGf9XwMlR5Bo8+UYap1z24ZNz9DNWsRciknwDqgP7LMvOLtPMhNITJQArsKVW4+BpjXMHjE9cW/luS946hvpgcAZJNLyKQyI0iDEkwOs= X-Microsoft-Exchange-Diagnostics: 1; BYAPR19MB2758; 6:xnEABb0LuRNQb9gfs3udHu4Oy+toZbwp6SWTROAmlWjO+NPvx654HXEJGzAVrBttigFw9YhXLlY9lu5Kcuqo7OXJc586I47KMid/B1NsbmtUlA2UR6OYHHxXCa/l5mqjbjMbqgP86oBecYvKiMMT6Vvxu6XhbBqg/5xDYeV7NdMPP+YHr+utXPKBMoElZcQ7D7o6zjyNpwQbvn3NIdSCTs66+hrt0Q8gymMTbEEyVBQpGO1Y7Vf94B3G7EMpw9suB4UTJ4xyoszNjnls57wgV2Vd8SIBeubFMjBHlSfkYupmtCn5fc+/Cg2zicc1/spspE/Plyx1pvjfbebX2P3sNKWOOxndTSERaF+69ebQNHCA02WEQuanBE0wuqZN1m8vJFTa74FJbHI5uBKQ+oXj2SAB5PqXVTWh8xDNxBOAxsUpNjzUeRuqKnTUbQ2Jv9E7BrSlyKxcjdWhvoPxSsti/Q==; 5:bnhXHGnXJtOvFgwMnxiI41mVg6ER5bouzjMXlQhyxQRT481vtRCMYdYJBvLI7uUYktmN+IzR4zegjTXJuTiwHU4eHZjR+3JKdWLi8yNFus0rXq6hb6izNGtv5f+yay+hCD9UMMFP8uEkCwXL4wtPuKYUPBI7xaXC/nDw4XEGvzjWD9VpYGrEEUGw5YGhD1HKznuXygleNxFB6rN0msd/iQ==; 7:v32k2c40quMvuuJqjpvWRlcm2zlmIMI3GcEc4PO8cCqTum6o7/1MVh5ncsTnHtRodcLG+OT2reS37febYkuHbdhICgm87BvOycsjBLuXyY4QwefH0DpYoDd9tZqHt+1IUO56KegvCsGT6z8iwOArLA== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jan 2019 08:21:53.7913 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 82ffb552-ebbc-47e7-8059-08d6779dd826 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.222]; Helo=[AUSMBX2.microsemi.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR19MB2758 Subject: [U-Boot] [PATCH v5 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 07:45:56 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Horatiu Vultur X-Patchwork-Id: 1023437 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 43bbVP5lXYz9sCX for ; Fri, 11 Jan 2019 19:23:41 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 8B5A6C22186; Fri, 11 Jan 2019 08:23:10 +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, RCVD_IN_MSPIKE_H2, 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 1522BC21C57; Fri, 11 Jan 2019 08:23:05 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id E0590C221B5; Fri, 11 Jan 2019 08:22:34 +0000 (UTC) Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-eopbgr770083.outbound.protection.outlook.com [40.107.77.83]) by lists.denx.de (Postfix) with ESMTPS id D0E4EC22176 for ; Fri, 11 Jan 2019 08:22:30 +0000 (UTC) Received: from BN6PR19CA0110.namprd19.prod.outlook.com (2603:10b6:404:a0::24) by CO1PR19MB0726.namprd19.prod.outlook.com (2a01:111:e400:7b6d::22) 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 08:22:24 +0000 Received: from BL2FFO11FD025.protection.gbl (2a01:111:f400:7c09::121) by BN6PR19CA0110.outlook.office365.com (2603:10b6:404:a0::24) 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 08:22:24 +0000 Authentication-Results: spf=softfail (sender IP is 208.19.100.22) 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.22 as permitted sender) Received: from AVMBX2.microsemi.net (208.19.100.22) by BL2FFO11FD025.mail.protection.outlook.com (10.173.161.104) 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 08:22:23 +0000 Received: from AVMBX2.microsemi.net (10.100.34.32) by AVMBX2.microsemi.net (10.100.34.32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1531.3; Thu, 10 Jan 2019 23:51:55 -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; Thu, 10 Jan 2019 23:51:55 -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 x0B7lkro015954; Thu, 10 Jan 2019 23:51:44 -0800 From: Horatiu Vultur To: Date: Fri, 11 Jan 2019 08:45:56 +0100 Message-ID: <1547192756-10590-7-git-send-email-horatiu.vultur@microchip.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1547192756-10590-1-git-send-email-horatiu.vultur@microchip.com> References: <1547192756-10590-1-git-send-email-horatiu.vultur@microchip.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131916685440711757; (5a93feec-e11d-4f7b-166a-08d09f1f276b); () X-Forefront-Antispam-Report: CIP:208.19.100.22; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(396003)(136003)(39860400002)(346002)(376002)(2980300002)(189003)(199004)(305945005)(68736007)(53936002)(105596002)(97736004)(336012)(107886003)(53416004)(476003)(126002)(498600001)(69596002)(50466002)(356004)(48376002)(47776003)(36756003)(6666004)(14444005)(486006)(5660300001)(4326008)(26005)(77096007)(2906002)(575784001)(86362001)(2351001)(2616005)(446003)(11346002)(50226002)(8936002)(44832011)(51416003)(76176011)(6916009)(106466001)(8676002)(316002)(81166006)(81156014)(16586007)(54906003); DIR:OUT; SFP:1101; SCL:1; SRVR:CO1PR19MB0726; H:AVMBX2.microsemi.net; FPR:; SPF:SoftFail; LANG:en; PTR:InfoDomainNonexistent; MX:1; A:1; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD025; 1:SjDtGmTlbnHcq//FX/0xns/ltPhTjTAXkgfdgGMjUa1WUputNBhRDbduL+zjnJ9tQTvpuiv97mvp68WNPFUlr3qf/2VVk284ajRaTQnqxyihgjUl6Ne4Om7B66xldCQ6 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 137b87f0-98a7-4c71-9759-08d6779dea18 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(5600109)(711020)(2017052603328); SRVR:CO1PR19MB0726; X-Microsoft-Exchange-Diagnostics: 1; CO1PR19MB0726; 3:ST5o20rQQvqnJSJMbB3IQ8aPEISnEXSHPQPYTvXyGSF5xbo2qoFKDRaOXkEpFYiPKD5ST3GQzbVIA5Pt66Rn7pjHkK30wpOjsGBNiI4ARjVbSc6FzraRh5lfxdfdeFfNGhS1R7U+Kwaq0JTDhTCqeGZOkVv4P+SRfGNBQRbOrONseqLizDBpBfbgE/5IxvuQMtx/+IFsoFOlyaiTVFvWnMbrzJ0nBK94YK8ZZHd4FYkeFdPhR+J7hMPdatDVEqO79Qv2K61NVpAmZ3rHQswnhm4Rk/iRUhd16R4YlLNWXmUlMW7rShUGwnrcbn63tIb6eXoKP8ibQSg5FjppBCz8G6v5weL4O19km81XczlUz4r8ucuUR5Wx4nUEztdrFZWd; 25:xaK+E4qSoZFPGJHLgSSFgmv5xrqK2V3Q6qVIV9tQv0P99GdQpaonCNjKQKc2tCmsrrGDFYL8ItZETKDWQOwPVloXgVo8gDoCH8RvaCdyFM54AZ3tio7HIbTIiOgRK09/yiguGc4a0RdcnsI3NYFZKBpwGMTxY+p/tpL3I7QrPbG46hook44xR96MBgClltT1fyF+XmpsyolKSCMJ3Z9AQQC1ANyC4QsQai68Vj+YLw3hKGbdsA7Xhl8/7gm7uZ0EfIsrXqQTjPe7x+tHdI2cJBCyXGRsDCAEBA+jixJZqk4y2xAHx1AjwiMlvT398e/xZEEcInuufCYsx6VvrF51DQ== X-MS-TrafficTypeDiagnostic: CO1PR19MB0726: X-Microsoft-Exchange-Diagnostics: 1; CO1PR19MB0726; 31:jNnwv/glb+QcvCpC+6mAxmMTvpAmX3kyj721P270ATp6j6pA+luigCCdI0nQPYjYvnQJ9LHx3PlxdnxBpwYLvgvUVzhmEUKvgBwETHrqXoHh7fE/UtvIA31/JyO+EbviDjMKSL3ydglXJwCzxgcHw6r94hOyCMHPR/RD7rjN49KC0LQTYyLS5/fJI+UDYffnkU7cGSbB6VD5aNraGdKKYSDWVXIbmMfyA0fcbooXG+I=; 4:kH9Pz+B8Zmiy6/mU8XovLDA/TL6PPtjZTVV01ziHut/ohZl49FTFlfGwY7yGxuJLMSA52GFbH1dbfIYpl71hzvh93Vyy0RQFJ1ChaRgTpFACheiOVQwU5vnbBHtj4aIDqb5r+tXkSMz0Zg6Q+rahjE/hcZCNoSpfrPMnBU2IPBVWUJnqVFx7IlPo8ELnru3HXzhwCRO/9Jn2+5oaJXQOjviPQT5WzKAZl0ALuAcnSkdxSb9vJGwIbZlujZxqV7406qQsjC6GcBirZto8Zhl3OAhFmorJ3d6JVDv9yIO9uM0L/1po1G/dZKh6y5zz056o X-Microsoft-Antispam-PRVS: X-Forefront-PRVS: 09144DB0F7 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CO1PR19MB0726; 23:+PvgdnxqOLRi8bGb3r4oZfb5Il5tZ3QR0e72GnofZ?= Bq+aJY5JrwhBicTBQxUD8b+TAPR5k5SxbKRKSzpsf14e9qEgmIxUAoOqf4ST6MJmRnlzvPDUoOwOU2eEO2qqzegzmf75qcghV0dw9ZKxvE+5zppeCZ6ZZzSZ0CjCbs/PvqvFlE03rPd9E3juhCgITe+w6FYzSIS25cXStu1ttAYxb8Vvcqyw/IwN8TEl6q4tGFJcSu24j2VNkNbBfEhXyg5NEp1ro1S20g3Cfqdv8V0m542PBYSQP+1w5lcB2BKt+je3qQkMQqudiSTo8kFSuqeRNC+lOhSX/KCZ8u6gu5808Y6Mx5VzYTQa7OKdL5a2Tpk3cL5jlsUgUz+v+99oIaYy0HIBNmiEHIVRVhsQc3razuw/tXFlSXViflx7Zjt/9HhsO5NGFDi1Bl46lo9Fk2dhWzdCEuWaKhRUr/pRzAjrPIRRDiyVcMfbNPRmaGx83lTYsZv1KM1b11MExT+0tlAJTJp6J/nQ/Cvz3ncceezJ44UUp3Iwib8Q5ybnaWtdCSI6mdJnBolTKZE5PbiBKHz+fUFNAFle1eUC9ozSVkL0vrG2mSQ/Jpkw8MyeetxwdZEwvnFx+JxilsIXK4d1/rjrhZKHKVygc4IrAzN5X8qQMOGhoZEGgnf58mXkr6D0nKtPFSf/xyCqIJ2V1kVcAhbwpoa+vs45p0KqvoYOF8y3UcAwCghv5+U+CaQll0B3GmIY8rxqN5oumIFL6uUnDK6SM+zCeuKiWXvY9qiXbCLLVfvqPHaaeFTeS2EVPX+/vOpLIBni8lrffxUSNtW3S2wtT4K8u/lwZzVQgK32vDxnG/KzbUKIhv2UbWPBVLeRdLCfdoKLzssfnFsnBUSwoPkKMg59IzIQ+dkDisU22kQIc/GT4QrhsGD75qIFgeift218Hpha+ZR7/MONmgxpNg1b+aMO5I5/Fpwq5JBT3zqDYxzPq/uPH0djQjiuzkNzTXqQAeIhru6WRY9WKhn5bva0S7nnmqjuvUC/Y90CW3BCpqbtv5xpDq/mFOYx4uOXac3Vn5DwGaqDJiMwYLoA2qcnUioBQLttV3cuqFzKPFRtlwhbjlSd0G1KPj/81RmdISN05fXsdp6sOWhTMkHPdSeXpxVpHjInUTHg2PDVhdE+w== X-Microsoft-Antispam-Message-Info: p3GOBvZZuHKrD6off81xqpoSFxna1M5Ad7DJdvImaD2PgpYBLMiLTOJDDNtCe9vQYEYrirEV1lJbyJ7mmMYgQRl7tZijauHyCRUIyF2iaruv17hoROn/YNRQ6yWxV83XajSIaKFyOw08+TvO9xV4CTBiD0deQIGe+UT58qu1Fvt+CzKnlNXEdPUOVWmFDD7OgLvHHpzruNko5qPo0cvOCYjCrUNZceWM9aKHrik+1HWCGtdQy1K3ZEAtV4nqYHcI50LL6y57TeziPk0klQCcDX0YluEkHreGXHzsInEsYNCYKV7r0XMaMYMTwTQrmlpzfmGWZPfSHpuyKPQZddSR/Vq2OkZrM/1FHUibIXVTCnCc/FyJZTKUkXX3fMaMWRYPOMKKVxqajezaL0pVzZvSfQgXL3t1qkF7sQEBI0p8tQ8= X-Microsoft-Exchange-Diagnostics: 1; CO1PR19MB0726; 6:lhE1iKwOQUrpag4W84mIrZGXiNAgC+LDy+0PQib9zWIjqYui7n+G4rHtcdFek/lm1YQfJ/gjE53yeqEzqSWpVW0EUqM75exogPKGrkCav2Yt/6uJvZKukuE+AiEONpjMGE8ZoAtHaGxqVtdO5BFHtMJGqyh0IeUnjqiGtPsUUD3O59mg+jZdgMnp1+M2C5Dsvo8NoJV/Ts8RtIdNrUMR1uyk2MHoyAo2cSuLWWhFWY4PlO6XlKUJuC+PBqq3xFiHa4e8qx7Wmw/43W21w80dJAYT2QmwKW3TorSLj0MdOy8xXPunUJp/xiaBWmqDrqPeb/gq+5HHU9nDQpoGURkPkhYy7GT+IeGOpewAFDkNz/9mGHgXf0WR+XmSgANXaKmR8d9XrBUTgcBWIKqHYcioGZpfAcARJXBBPmZGsmPFpBScziHCI3cmH/ISqsKM3VVA8ADkrG+TS3b38Sr6bXEewg==; 5:c5KMvAep6B/MrdkLrgEuDf08mQnvOmaUiR7ibH5ZL02euHGIzaccsdTVIX46rC0yJDw15jsUmkgoPF+NvilfHjKHZLyOad1A7UNfwa7dycR5L32rzgSeZFyW/5bg/RbsoPmaEy+gcVjJbdOBSYPX/3FTqPg3RS3xqDBUD43TVMSFQXHyMS++1ivjHoauDiw1wikABfNIyktr2Ca54nuR/g==; 7:IhGdXj3toQJNGpZF5tCS9bM8BDWOmWy5M/Ck18Lsu39oeXlBOQMaEzb8pMaOXU+r51qGxnfXkAsc1UmzVvx8pHaJEpkjAOimcIH/xgmJ6y45YhPMpPB5v1JjFoWNWJTvLdbrNBjtpF5Ycwuoc0KvZA== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jan 2019 08:22:23.8992 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 137b87f0-98a7-4c71-9759-08d6779dea18 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.22]; Helo=[AVMBX2.microsemi.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR19MB0726 Subject: [U-Boot] [PATCH v5 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 --- 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