From patchwork Wed Jan 10 03:05:46 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857901 X-Patchwork-Delegate: sbabic@denx.de 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; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="F7p/iiDY"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGZ2x2LNWz9s7M for ; Wed, 10 Jan 2018 14:18:17 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 0123DC2207A; Wed, 10 Jan 2018 03:14: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.0 required=5.0 tests=BAD_ENC_HEADER, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, T_DKIM_INVALID 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 BA4EDC220BD; Wed, 10 Jan 2018 03:07:42 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id D6182C220AF; Wed, 10 Jan 2018 03:07:06 +0000 (UTC) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50074.outbound.protection.outlook.com [40.107.5.74]) by lists.denx.de (Postfix) with ESMTPS id EF76AC22009 for ; Wed, 10 Jan 2018 03:07:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=7Zkt7m85wIJHNu4DkCmRisRIUQ+gupc0wHqN9ozc7fw=; b=F7p/iiDYC1wJWOvqsCqor8Jxr2v457swp4VpcGJVez8FadLINu1NdEXeYcPuiKTqjiQC+hA8BdjS3jkDAVNxD/UhMbF6cS7bQiH4TUWWwzNe1PH0ViaQvWMFwNL1bAulCRrDGgGrOgi5Md9iPx4WAh6xYeAAs61D5Rmsaf8zTyo= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peng.fan@nxp.com; Received: from linux-u7w5.ap.freescale.net.net (92.121.68.129) by VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.386.5; Wed, 10 Jan 2018 03:06:58 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 11:05:46 +0800 Message-Id: <20180110030603.27864-16-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110030603.27864-1-peng.fan@nxp.com> References: <20180110030603.27864-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR04CA0069.apcprd04.prod.outlook.com (2603:1096:202:15::13) To VI1PR04MB3231.eurprd04.prod.outlook.com (2603:10a6:802:6::28) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 6eb36065-b2db-404b-e3b2-08d557d7383d X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:VI1PR04MB3231; X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 3:/DDFbWkyNbDMgJm26PGCB1czG0usiD98UJZn9F++FnqU2W+hHz04wxuSyOT4bHC2xxFZA1uOcf1Ujrb40wwWCUEsRQ0OvOGpCDTnBI1sCjhUmt0M1cO+FmcEJq0u48TISGECT7/7oEooVmGqc43X8MNUMeM0SESoekd02G9n+SKoAY8PSSwZMdkR/1aSfJ/JcG3op7NkV0Nj1e4+qSJU571Cho3qs+heD3jAG1KeBWntKFVlvvIEYaPDj0qKsdVs; 25:/qL0G0381oUs/9ixN7m7u2ucExfPTpsTQLzlKAotCgco168eb0heliVaDcHJyz1SPhnRhHwx7bpSqbGwGPzhNJC9jRaHSWv/3q0J1qUbfPJn4ZtRo0rOBLvlMrYXFhCMKCrvYx196nfynmiI3RjxTe8AwjuIVvUQ/7PsqV7aBpS5rtu1BQQLP7lXFijUy/kwziYI5eG1bMzKUkhJy5L3bAe7cGJarKcyf/cAb05px3h8LUG74Nnj9jI6Gk5SjnP85uldSk5PsVSb/IBlE/+w3Eimqb2aP1a7/+6JYUrvmyxrEhiSYiX22LcMGVA9uYcprtAxFx8cUEj115TfJQENOg==; 31:L7RyJBQm7gJp15urkOwe/gFIgk2XWBmWEaZpOnBwvtJ5ufVu2EjcgvoLdPuSoO+aeAb1clFJ1s5YuTh70cWdryN/v/3pGjy0O/2Z5hLk3y1gHKKwAahD3PvyCiYB761ewmJ3dH3jXYliwXokad/whxK+V8RBQlY7nO7OGcdqWbzm9UTvawrrQK/uxVzis5yrHE79AFzbdaYKNPcQ8hT8eOOkyzRuqsGFKWqIxmUfk2o= X-MS-TrafficTypeDiagnostic: VI1PR04MB3231: X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 20:KFcC9KKeNLX9Ktk9fdF0Foz3TQtwm2KjDir82aAhM9zw5YcETN6OanQ91IumM5p9BsTnegfpKmec1sdTUXpw7Q4c6XrDxz/gelYcgrXQ6G5yJF5vVn9XHRqn0wxxaTvLMw0xabXub9YyOTpGSQd+34bEGHd/zIC31OPcLW57hyZQuekT7tiX/mJw2nMee8l82CqSWR5Sb6JKZVtNSssHY1u4TwlTUCTRB+um9xKUGDd9BqX6vAJFqJVpmJsxqbgbC477fOcJI69Ipauqc9MNnq831+sb0JX6XuL7q2nMpBilFmpGUvblA4TMbyv8m4DrhIhWm5CU43jWA26zh6GjeA8uyRPGv8lhfwBUkK1hKbRsyv9xTvjVRgWWChhtppRftVHNgFYvIFTd/JmAPUkWOjx2vVQB59OAjhO4wS2iVxCWY2FQFCNNNl1nsnBelS4iRwO+83Pi8OwsZO0TUVU+8dZXNE6tMmMCjfSZc/bvI6XQQvEYN0y1iZXp9zy3KxCE; 4:hOnDGgk+CnhPGZwsoyulh7NG73OABuUl1YSCpASfYyHlrPOqC3/i+q/pFty+IxH4shzY2EemriFtN7o5J++h6nM0anXw9HCVazm1CZOcDycWgdKaYW5KXqFn1lzkAU0PGTxAG+bCuEswOxDxe6bIcUvfBg3IIGSwGwMZiBonIhIdDvDHpWyW6FNoNqDfR+C4M+eAPvN9Sc6Fk7TeDN4E6fHf76xL0XDQbzyIGDxKeWZo6z3WXXoEDSUmt/NLI/hN3Q0XgRFuV4xUfuO9AdEkaI72wIbKb5J+27tFm2PVKNH8ZejvPGElvYuFogB4wwU6 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3231023)(944501075)(3002001)(10201501046)(93006095)(93001095)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123564045)(20161123558120)(6072148)(201708071742011); SRVR:VI1PR04MB3231; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:VI1PR04MB3231; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(366004)(39380400002)(376002)(346002)(39860400002)(189003)(199004)(51416003)(16526018)(5660300001)(3846002)(2950100002)(7736002)(48376002)(36756003)(53936002)(305945005)(16586007)(1076002)(6486002)(478600001)(39060400002)(6116002)(52116002)(76176011)(316002)(6666003)(6636002)(50466002)(59450400001)(6506007)(386003)(50226002)(86362001)(97736004)(25786009)(575784001)(8936002)(105586002)(4326008)(8676002)(68736007)(6512007)(81166006)(81156014)(106356001)(2906002)(66066001)(47776003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR04MB3231; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR04MB3231; 23:Xq452cbuSJSm4nFQ0HjyDtleUV02msQLZoAn9JSqa?= 7b5wSDzR9L2WU2MXhfVL2Jp5Apq8strYy8pL5OIEDppBJgOqytwEMhmJ7dk1HZtfLvFvJhlY1eyQq1MWLjrGE2hNFWi0KR76XQ27EVPmQZUjQXqxPot2FFj7v8dSkJ+LcPiAXnwP+hwAMd3ljF24gj9bNLl1/EPHH0zLwv7Ck1bMYq1UeSZzf0doKG6EA3yIb+BONfJNVsxrU696JzMYqAOwZdYl4AdhxU8k9w45yLeaRzESrkQmqB+CdE2llE+XyrhQrBkv1tyIYb6qd6goGTkSk2e1I8s/czwhcu3WDD7kGXlOm/452EdVYe0zZXKxgwFIwlPHFnbKnrNJgGg/4izMaPb7u5MvZUnJnoSoihodcxUl9hhzdNYv7X+0Vw3mMHg9vGwFb/SZ1FVBVjbgD4Qto6UPEJBH3/Mre9ySgZx28lDII8cWyNHFGBONE+qjkSkIGTZk9ugPekleWsA00rf4in/BtUO/75GVI3dGp+FwU70GSorU5eL09gQBqbMMkaPoMji4qsj+aHnWdbvpDsQ7UYHMx6rogOWoCkL0DbhWV8EiGYXeNcVcn6Wr7VhJVtvpQHeDeS/AUPa/smxnjFMEI60952rwT+RMJNVHyxjw2JcKzrEEFjc4usa4Pb2PkM/P4OXzT+SGDVBy1voCN4CNNDox5SjF6cjXVZZFbwkQEebPk7uu6e+Hzp6jbUbIz/ufTSx0qQIg94VUs8FkxkIUx74kkmTSccPRsoL/nhFWG+mHAn/csnVsDjTqDL7EqM//rsCclD437EiqCxHhdIRgN8HUe/GPjQNLVHG5XBmcIeJTmF7mBHVIrcAsoo8OMhP+zmObnmNMhPBBwpepv88njg21BBOkoiL9kKtj87fv7nbhRqBe2L0UQlF8UFhWC4XlDRiXVWTejCpdbVchtWzBheOzyr01tCkbZFXzDKZnbwmiRZpyuYVekq2hsJB8cysa5X86i2BZFDo5IH7jNzv763m6VJ+YR6ALM5USOMYFgFGOo9v5iUUX+SpEJ8FYXMy011GZ1veehcCpGASGzEDQuUXHnBZCMGSQ5wc8QM8XDxlPbPIBmJ012Kvt3dQMh8sFTgENUm/rzkrDk1yfHhgGJMUE2wcvD6nECnYWf5BRg== X-Microsoft-Exchange-Diagnostics: 1; VI1PR04MB3231; 6:qwSkuKvdLpkb8jrflv2YLOVHTDYgNj54I2inyBdYc0/IikDQztxEdW2fxftua1oZTYyJAQes1LmfqFcwgV4/FhXq2JAybxbrgaU+WN9n66yac0bPz3bkJ/hoJZj1q8bEAWMEnadAfarMzt7mJiNj5I9poRaYzdnQozNdsokS0m+NyG9/a6kZTLEkwRtI9mxT8SGtwh/CYm/Sj/epXMH9fr5YwVVDTlIVGxnuz2vch2lahnUNBaq54RXSwd3FBHhNUwLKVkUqvHmBarS9N4blvHhst5yfZL/XvTQurTcD0adLbQRcsZHU+sx9RLghWbY4GkRPEs2bgU8BCbVGiPoJ0nlyTGyQ54b+3FAS9ovr0nI=; 5:l7/d9FB865Y7QYN+cav0OT85GVMdXlwWiU3kjukzOoePKYl8Ystb4CmmG+OrcTf8UU2k2bqmHTBCPiC8uuTgN3lWh2MiW72uED6NSOZEG/FfMSniJooHVQKgmyIkyJ++DUjvvYktyO3YOtt4MR23ec+/s6vkroRjRlIs+436puY=; 24:rXLpFglLjLQEvjAkuZPMesQlSH0W6MwZ74IpYR0hiXUuDpbqZrQnt1DBtYEcOJAou5OpClYx/sy1F1t0O8ak4szYMf4CyRqQWSQX7uhuSlM=; 7:jm2GYSgok72M9M+3PEOo/cBaSk8xrT9b4Kyq6kNkM2AO4HQu8rzeKRfZoJPJlQDlSRu0kiBFePPorIeZHyelxSFBj6k8Yxxq82lVdF4DF2GknyrKnRvR2gNR6p4DTvH7GeA5UG+Tk5rt+fjMSMM34ZcxTxWmbYszdKbC9d/5Y1yjk8zZGspHAPiz3OP1fwnX8z9FbL/Cvmh27oZwgbpPQfnG6Xrpc4YYEcRkmIy6AQoyyKnkbWg7hENNrRBYgTc4 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 03:06:58.8931 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6eb36065-b2db-404b-e3b2-08d557d7383d X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB3231 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V4 15/32] imx: refactor imx_get_mac_from_fuse 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" Move imx_get_mac_from_fuse to a new mac.c for i.MX6/7. Since fuse regs structure are different for i.MX6/7, use mac address offset in code and define a new local struture imx_mac_fuse. Also sort the config order. Signed-off-by: Peng Fan Cc: Stefano Babic Cc: Fabio Estevam --- arch/arm/mach-imx/Makefile | 3 ++- arch/arm/mach-imx/mac.c | 61 +++++++++++++++++++++++++++++++++++++++++++++ arch/arm/mach-imx/mx6/soc.c | 34 ------------------------- arch/arm/mach-imx/mx7/soc.c | 32 ------------------------ 4 files changed, 63 insertions(+), 67 deletions(-) create mode 100644 arch/arm/mach-imx/mac.c diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile index 63db0e15c4..714b858e73 100644 --- a/arch/arm/mach-imx/Makefile +++ b/arch/arm/mach-imx/Makefile @@ -25,12 +25,13 @@ obj-$(CONFIG_SYS_I2C_MXC) += i2c-mxv7.o endif ifeq ($(SOC),$(filter $(SOC),mx6 mx7)) obj-y += cache.o init.o -obj-$(CONFIG_SATA) += sata.o +obj-$(CONFIG_FEC_MXC) += mac.o obj-$(CONFIG_IMX_VIDEO_SKIP) += video.o obj-$(CONFIG_IMX_RDC) += rdc-sema.o ifneq ($(CONFIG_SPL_BUILD),y) obj-$(CONFIG_IMX_BOOTAUX) += imx_bootaux.o endif +obj-$(CONFIG_SATA) += sata.o obj-$(CONFIG_SECURE_BOOT) += hab.o obj-$(CONFIG_SYSCOUNTER_TIMER) += syscounter.o endif diff --git a/arch/arm/mach-imx/mac.c b/arch/arm/mach-imx/mac.c new file mode 100644 index 0000000000..dd7fd92d31 --- /dev/null +++ b/arch/arm/mach-imx/mac.c @@ -0,0 +1,61 @@ +/* + * Copyright 2017 NXP + * + * Peng Fan + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include +#include +#include +#include +#include + +struct imx_mac_fuse { + u32 mac_addr0; + u32 rsvd0[3]; + u32 mac_addr1; + u32 rsvd1[3]; + u32 mac_addr2; + u32 rsvd2[7]; +}; + +#define MAC_FUSE_MX6_OFFSET 0x620 +#define MAC_FUSE_MX7_OFFSET 0x640 + +void imx_get_mac_from_fuse(int dev_id, unsigned char *mac) +{ + struct imx_mac_fuse *fuse; + u32 offset; + bool has_second_mac; + + offset = is_mx6() ? MAC_FUSE_MX6_OFFSET : MAC_FUSE_MX7_OFFSET; + fuse = (struct imx_mac_fuse *)(ulong)(OCOTP_BASE_ADDR + offset); + has_second_mac = is_mx7() || is_mx6sx() || is_mx6ul() || is_mx6ull(); + + if (has_second_mac && dev_id == 1) { + u32 value = readl(&fuse->mac_addr2); + + mac[0] = value >> 24; + mac[1] = value >> 16; + mac[2] = value >> 8; + mac[3] = value; + + value = readl(&fuse->mac_addr1); + mac[4] = value >> 24; + mac[5] = value >> 16; + + } else { + u32 value = readl(&fuse->mac_addr1); + + mac[0] = value >> 8; + mac[1] = value; + + value = readl(&fuse->mac_addr0); + mac[2] = value >> 24; + mac[3] = value >> 16; + mac[4] = value >> 8; + mac[5] = value; + } +} diff --git a/arch/arm/mach-imx/mx6/soc.c b/arch/arm/mach-imx/mx6/soc.c index 43cb58106b..b3bee58f10 100644 --- a/arch/arm/mach-imx/mx6/soc.c +++ b/arch/arm/mach-imx/mx6/soc.c @@ -518,40 +518,6 @@ int board_postclk_init(void) return 0; } -#if defined(CONFIG_FEC_MXC) -void imx_get_mac_from_fuse(int dev_id, unsigned char *mac) -{ - struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR; - struct fuse_bank *bank = &ocotp->bank[4]; - struct fuse_bank4_regs *fuse = - (struct fuse_bank4_regs *)bank->fuse_regs; - - if ((is_mx6sx() || is_mx6ul() || is_mx6ull()) && dev_id == 1) { - u32 value = readl(&fuse->mac_addr2); - mac[0] = value >> 24 ; - mac[1] = value >> 16 ; - mac[2] = value >> 8 ; - mac[3] = value ; - - value = readl(&fuse->mac_addr1); - mac[4] = value >> 24 ; - mac[5] = value >> 16 ; - - } else { - u32 value = readl(&fuse->mac_addr1); - mac[0] = (value >> 8); - mac[1] = value ; - - value = readl(&fuse->mac_addr0); - mac[2] = value >> 24 ; - mac[3] = value >> 16 ; - mac[4] = value >> 8 ; - mac[5] = value ; - } - -} -#endif - #ifndef CONFIG_SPL_BUILD /* * cfg_val will be used for diff --git a/arch/arm/mach-imx/mx7/soc.c b/arch/arm/mach-imx/mx7/soc.c index 032dfcf2ce..10dec8bdf4 100644 --- a/arch/arm/mach-imx/mx7/soc.c +++ b/arch/arm/mach-imx/mx7/soc.c @@ -208,38 +208,6 @@ void get_board_serial(struct tag_serialnr *serialnr) } #endif -#if defined(CONFIG_FEC_MXC) -void imx_get_mac_from_fuse(int dev_id, unsigned char *mac) -{ - struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR; - struct fuse_bank *bank = &ocotp->bank[9]; - struct fuse_bank9_regs *fuse = - (struct fuse_bank9_regs *)bank->fuse_regs; - - if (0 == dev_id) { - u32 value = readl(&fuse->mac_addr1); - mac[0] = (value >> 8); - mac[1] = value; - - value = readl(&fuse->mac_addr0); - mac[2] = value >> 24; - mac[3] = value >> 16; - mac[4] = value >> 8; - mac[5] = value; - } else { - u32 value = readl(&fuse->mac_addr2); - mac[0] = value >> 24; - mac[1] = value >> 16; - mac[2] = value >> 8; - mac[3] = value; - - value = readl(&fuse->mac_addr1); - mac[4] = value >> 24; - mac[5] = value >> 16; - } -} -#endif - #ifdef CONFIG_IMX_BOOTAUX int arch_auxiliary_core_up(u32 core_id, u32 boot_private_data) {