From patchwork Wed Jan 10 05:20:31 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857952 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="kWuEMJL6"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGcxL2b7Tz9s7n for ; Wed, 10 Jan 2018 16:28:38 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id E733EC220E1; Wed, 10 Jan 2018 05:28:12 +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 EAE03C220BE; Wed, 10 Jan 2018 05:22:34 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id C469EC220D5; Wed, 10 Jan 2018 05:21:50 +0000 (UTC) Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-eopbgr30082.outbound.protection.outlook.com [40.107.3.82]) by lists.denx.de (Postfix) with ESMTPS id 6D304C220AD for ; Wed, 10 Jan 2018 05:21:46 +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=kWuEMJL6blVYZ3HIdGU7jcrB/Ky5ufpir7pyNC5RIMd02c0e1WL6gT5PCV0TdsxM/F4ntotSZabkZ+Zh+aUCwh3pJOFQjb862QqJ01BTOO79qpIxzwQI0DURVMtnRlAy+K/HRqEatQ0rBChsPKOIgUqIY0Kwar+Dbp6yM3HXfJk= 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 DB6PR04MB3221.eurprd04.prod.outlook.com (2603:10a6:6:6::17) 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 05:21:40 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 13:20:31 +0800 Message-Id: <20180110052048.4425-15-peng.fan@nxp.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180110052048.4425-1-peng.fan@nxp.com> References: <20180110052048.4425-1-peng.fan@nxp.com> MIME-Version: 1.0 X-Originating-IP: [92.121.68.129] X-ClientProxiedBy: HK2PR02CA0219.apcprd02.prod.outlook.com (2603:1096:201:20::31) To DB6PR04MB3221.eurprd04.prod.outlook.com (2603:10a6:6:6::17) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 7acb50cc-140e-4ee0-b289-08d557ea0945 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(48565401081)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603307)(7153060)(7193020); SRVR:DB6PR04MB3221; X-Microsoft-Exchange-Diagnostics: 1; DB6PR04MB3221; 3:gAQqofUhIT0cr9cG21RWzxP83Iaie3fZgn8nEwOdAyuARqKqFDdKRimK/k7KRb2R0QKwLJlnXD4kIyysLtHxZ9p/aos5kUMrYU7BpUcaFmUrpPg6gcO5wNyTw4zDDEdtx8JQDE6E6nCZBPuWAAtazbdP9BVSxhmXjFePRG9x0I6aoKjGTQf21IiXS7UX4fq7hRrtaOp2Nro6p5jba/5gQ9GMrzJcmacCbcfCmMviSIR4Sg8rDMsqKGnfjspQmFEL; 25:bcGo3LVIIcMvEVQa+jSqpG6d6JVAExmO+jAk4tYise0wXNXVDgKCVCmHYzWUJ7tC6rq9DupHHNw0iwxYOAWkCRJGWwb8viw//treb9as2nb5goJuFLQT11nnkgFMFELpJ0BMzB+xXQJ8KjlWm9Fr4coGSimDlCSTo+pSonuub7rEWLGfBh/mig2ZIkN0Oi0Jx150yNxsZ+CZshN+ngAhRX1rXPhPf57QsxULDaW5z10rGSNr0RQLMuFDbP7xuVv3CiS7Dju/ZjEebQix4R+ayh/KY5o99Q1Y6KhFenwyDm00twgZTiVTK4paDYigIKURPaLaqiRLhD1V3RiQUzvxxg==; 31:5GzM40ugi7j9L4oZlrnvcLm5quSih85SwOSscxIoRuOfgULYREsK1B+7eHK73E5j7HhESZs+iMVWGgCul8UKVuocDcQ4zfmmEd9iemqlpD0ruiKakt4Urgqa53//1SDHhZVUyO4AozDIkvGMsMnfbo1jbqZ6piOYUBRvanveDh/XGXxc5h5p1mHhh98q9cyuk8amkHxyVFIHnIiCa7lC4/58uMAzOIw1t9KOL9NmZg8= X-MS-TrafficTypeDiagnostic: DB6PR04MB3221: X-Microsoft-Exchange-Diagnostics: 1; DB6PR04MB3221; 20:EXUHQXTHjKvNNT0aMkicj6MypDS/+LFnRM+TxNpNdYyptvngvw/Fm3quK+yHeowpm6pHYs/9QwDkQvhYyzEMo3VSJeSkwhNq3ckFTEtvnXwwK+WVfxUeCwtQc94GXcTQLAFpmVH/WE2N/jgh5u0ig6J5Hkl0J3PSLKzYyLqjYRnwo3eYgasvZCFl2uzEHqj6Fma8s5sIFpQOWPDk1QGGEEe/1UbgArUROg2pIsttMnEX0HymMvGwzxMqPqMMnqRgw9Pj4dffaOhFx/5oYfF27gfenhy+ad8JcyEcs+rVQe/BGnqPt9Kk94eXpFo+79xPF5Z7A6Y4NTaPlBM+8WTrJhr7iJJCA9YEhvb0v8cnBTsmj174xQvQFBkX+n9DSpAPcxuaE1l6UkgRGxOsdAW/6rCykNGIMfMjEBIrX2BRW83/5Pt1GF/odNgYLuRLyGz2OCYBR4281JKaulNgja5foAqeVL8Efj6N15iB3+yFYBC2+SM23jzOg0oPaTv7fjMe; 4:hUyWyw2ASMHWO2oNpYP2AhePQV17kMbr177WzXRJ0v+R889K5K5MfZAMpUTufqlXr+iZShwA6t3otwwtzAHmRB5RXVp5geIpp7/V7P+ImhuRacNYTfHNHsoWo98a7eeRdo+qDb95lvM3LeICBPg2qIZdmEk/SSIRKZQiM9Lb0bc0gJ+wvVGOu73rSQCkDnZDjnugc6et4yFnSxWIIXwcQDtKjOET8HdruimqCiqBQUHdrTrWtovYkXDbejTtgIgtPDPvM5LQgMHGps3AzmsWlaew/1lgS2InCvBEjzdim2ZfnuVXMuHID1j1ZH7gMw22 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(5005006)(8121501046)(3002001)(10201501046)(93006095)(93001095)(3231023)(944501075)(6055026)(6041268)(20161123562045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(6072148)(201708071742011); SRVR:DB6PR04MB3221; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:DB6PR04MB3221; X-Forefront-PRVS: 0548586081 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(979002)(396003)(376002)(346002)(39860400002)(366004)(39380400002)(199004)(189003)(6486002)(386003)(16586007)(68736007)(6506007)(6636002)(575784001)(86362001)(6666003)(2950100002)(1076002)(81166006)(16526018)(6512007)(6116002)(8936002)(3846002)(97736004)(5660300001)(50226002)(47776003)(4326008)(53936002)(50466002)(48376002)(66066001)(81156014)(36756003)(25786009)(39060400002)(106356001)(478600001)(2906002)(51416003)(76176011)(305945005)(8676002)(59450400001)(7736002)(52116002)(105586002)(316002)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:DB6PR04MB3221; H:linux-u7w5.ap.freescale.net.net; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX: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; DB6PR04MB3221; 23:FcN3uQsgfgNE8VY9MoxpcTEDfy5upQ9R+7JS3TqtY?= P/rlDiMaMFAhPX6LV8oBgtA+k6B+bcD+givNv5T5dN+x/RJOL2PC7UPAMHGq3LxlxhPKMN6JdMwio5DdvfBiLOOC1eJj/XDQesCfLd9scNy2Zvk7Rz56hmidK9jX7CEHIWnn9QFXb8lOgaWGhzGwWK/ls0+FWRAgeVypQC1X8rWLbNUj6EktqVVENTg7F4t3Ay5y84eQaXokQGCCOB++eZvOscymHjvQjiRYKbEP9BQKO8nIrDbqOMRNpbvwePLpl3T5mBvToKdp1hGzp4SoufKvP+OmkfBWq3c+dwOrAnt2CIPeJgo+IIubGueefdVLH+/vK3OXEvI+tKsavSwMf5dRF/7NKyiJlx463x5duggN7TT87WE6mwNwWeD2if4LpXhOPjPqCDrIXWRT9Ky3NUL8RW/FGA+xZKXTDffNH0XAMl+H6s46RnEgM00pDvgScvFh82ccnA8SzMFdPalq1NO4P5g+AeFy5WrSzAY3r/KD6nws2E5O2CSZbSYxAD/927YBlhDZMHrXI+41BBARx3sMr/p/XVBjr0ViRS0Ms0Q7Lth6ZjvpxSKZzeGCCuKTPZJfrE27K7mH/E3l6A2yleJ77bWVyXfTUk4ERwL6yQFyoVU28SB674cme10Yqie+OlLRlIMc/YeJyFpeezgl8+8j5PMppiiBr+l7W7WYxSXmd1DKiwWfc0tQDNiubT4WlGaVm7CyyxsRcyiGzJzCvc0LTVSxXbamC4lVTC4bBTm2t7BMI9uIWe1TuuX1ZUmnc7B2rA1lai9zGgwmkk4BhOKMnmYzCMMW13eNzSuLObXQOKwhqV9pRXCCHIiX6UyZrNOAIN9M3pCdSOMRRi2ktBXhfGSwc4EZGiICTTEHDYClXyVleihgwc/YM2EyNQzTzJAF3yPMTPcOWLMEq6rY4+5z2F2MkPPLThAh2CKjcJfXTUXljQECo/xca92iBc2GllDQhX6MmWvjkXiIubQhRxdRQLdbzaiDXfcLv9/a2/Ce2SJ6hApcNgcDUVLdHgf97iKSlLZ18uOv6QmIUnPXP3yu+WYSq5cbyQ/cOZ54ED2+KCCxGCx8mxgemtE/5Xce9q2+hWVhfvNSckSdAR0GwH9snS3h9UMAcYLIfjTHtTnJEGzm+VjCwcqoRGMVGjSPCKJkft4ZQ828HERVQZ1cvv87QyUm1HuzSUbSD7CQ6LksGgk3FPJVntzSZcG5gzGWAgS3NK7AxgqejwPH2G2vhYt X-Microsoft-Exchange-Diagnostics: 1; DB6PR04MB3221; 6:70Jb63lPlRG75N+nlI53YKhZZX9G+y+tqW6gkRcrJX12GJk62nejIpjD+lNxOpg8kw8tm1YGp+lvp6CFysYAbmj6MIBexdVDf3J3LkdtvBs25RLlC8CcI7MT5oGJYzpPMQT5V1JyasFnzGAIEAN/1vpfljlnWyGksyO8OXRbAU62/sN8qT/mrN//UxQ8djR43dIlKZCUSXtm5y63oE2Yrb0gqU8FubY36vBWfe9Z3QMwbs67uP/vNc0sLXPtpZuKRgAUzqufqkVERTqgo2NE6zmOyAq0j2f0T2ckg6Azb5MHam0jDo151UjRh7YWxn2NSWqOISA6i+l5aBILVrqOonZIqzoEX2ZsP6PyXWmwZug=; 5:mnKR2KV+JgzCCZaS7VlJPvLO0VYKbX2dMrg2giXyuOGQ9vi54rrWQXTPeVeMQ2+Bk73UPoN644gCWzXvTuygo5CCDg3P/BLhQgV1piyScLTrh9hozXAmuB9d6WDEK+UzzXU9L7CVCI/w/DbN7QmwbcgnbOf7CO1aZEq9t+uQTts=; 24:ukdi6yhIaGQknqtBgRx/l9fq4ZypgzJFNN+3kpRTYFrmrid9AFfWF+4ywXi29SmW5zusd5u/L/56C2t8LJYwOthaZwYhhgDwqCkLg4VBx0U=; 7:ge34F8MFuBkyGnNY2d6f04u2USzf9JEPs3ItbswNCJIlvYZrkGWZNKPK4PDoDVtGqGOgKD0soKy+jvureJE71denEWGh4vgec9dVvMt6uGNVvBSUoxfVu/Au/JbWpFAK45PfA/UjSHLKrHbNFEUEwr8RvOdi4EEeK/DHoSVyBhJK6UG54JICHwmo2jp5vlACWqFGWucYHVg/SIu4acko0jp+6F1FFrq8hOnfQs5ymfMdCL5VGpYi1k90QVS3iDej SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 05:21:40.5288 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7acb50cc-140e-4ee0-b289-08d557ea0945 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR04MB3221 Cc: u-boot@lists.denx.de Subject: [U-Boot] [PATCH V5 14/31] 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 Reviewed-by: Stefano Babic --- 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) {