From patchwork Wed Jan 10 05:20:44 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peng Fan X-Patchwork-Id: 857961 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="kLJv5q+o"; dkim-atps=neutral Received: from lists.denx.de (dione.denx.de [81.169.180.215]) by ozlabs.org (Postfix) with ESMTP id 3zGd3K4zllz9s7n for ; Wed, 10 Jan 2018 16:33:49 +1100 (AEDT) Received: by lists.denx.de (Postfix, from userid 105) id 8122CC22105; Wed, 10 Jan 2018 05:31: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_H4,RCVD_IN_MSPIKE_WL,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 A73AFC22101; Wed, 10 Jan 2018 05:23:27 +0000 (UTC) Received: by lists.denx.de (Postfix, from userid 105) id D9C14C22127; Wed, 10 Jan 2018 05:22:31 +0000 (UTC) Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-eopbgr30058.outbound.protection.outlook.com [40.107.3.58]) by lists.denx.de (Postfix) with ESMTPS id D5F2DC22080 for ; Wed, 10 Jan 2018 05:22:25 +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=w5Osb0XmAmlVvB121ZPyAqaBk8nfTzIc8DcqluCsIkM=; b=kLJv5q+o5cmAHKO9pSwUEYAe0SBIeuGqXj+OEAt0xcW+J8HbXaIaKtvg0iPhas/aWKtEth5oDNsMaPej32g1vfHxtuT+HXqcJZbq6xGdScL5E84G82EAkUyMzKDx4rWuWa+LNl2WaEpOolyZZP9aPmIM/UVvxIM4b3JsKtDUsU8= 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:22:22 +0000 From: Peng Fan To: sbabic@denx.de, fabio.estevam@nxp.com Date: Wed, 10 Jan 2018 13:20:44 +0800 Message-Id: <20180110052048.4425-28-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: 5abbb000-806a-43e8-ddc1-08d557ea2212 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:Nln2sziTwtdvBb11tV360y/mse8Oa5j20tCbhDigpT4TFOAT6xukalYH1zBpRYn8mH/ApY1s9WtU8grwvuafkwtCPDLM1HDp0ioqAfDcjj4AZXszCnP7CPqY73IbWzQw8ZJURtgkFZxmdMddqcjsZ4JDnLc7Q0lzj51TfKrpFJnnhPf1Ri/g+P5omIxd1ZgEKaZme2gO5i/iDX87zDxrFTn7kYckIkqf/woDxigZMIMnIbcDQjvmdN2oPRuQ0L7a; 25:iVcRJ00ELHgBaryq8q3i3jITyTllQ6Ux1ju8E1S/vqGazsmxRJwIODnfoPLZSbEXA3Kln2OWtqXYLAx6njQcJ1GoLnmJ4uJfYQdloN107JPuTgt9Vtrjn8lBYMTv6ouyoUYs0Hzo1C3X2RCFfjk8cqKqkq5vK4NR2MHaVZuzEWVUHWVZjYuFkjSKEbgORLbKAmi+6uMnjP03x0zegA2eZ+trFMv9r/Gjj7ZcAwxuVR15YsvWN8kwqOedHqm8i0veH7eHRjPtGoHsoWUmkt8RXzjfniKXP5mYbA0eI7rjuvTE9hp+Q5thg9fvrlpKJnFRqplfk89IJXeiExnPWLEL4w==; 31:1ChAbp51Cemrw8Mk0e+QlygwPUphJacky70Y4+YN5mg0O3kfK1z3vEEG9ZP/PrAWytVeWsq80/n61HlskOYEDivK7uOtvum0E81L0VktXHiKYIHl/XjqWWlzZGlvlaG1FYSl09obrRaNurb8VRA57p+0yH8mNQlOvVXSf0syHd9p4kXGjggih7r5UlmSl4hCf30iBIz2tbjG3rNQLCG2gsPNmcJgQPHXXgbC2UqvOl0= X-MS-TrafficTypeDiagnostic: DB6PR04MB3221: X-Microsoft-Exchange-Diagnostics: 1; DB6PR04MB3221; 20:QnC6Y+CKIYXg4r8xsOUukQyOeMrTtcLoRNYa7wZXZ7hy0/Nc0FUUNfHzpqA+usSuXu8inj1lbLOAsfkolh2xlGKkDBDLsxauRfKvEurU1jZg54/8p7mlVmdsQVZv6LPKZfzIfwFWYlywbnyfjTtkZPFo3OkUvBRKE6stshP7m7pjekHYEW5eyC1+X3BvPWbcnjxMdy2IJVjmIgFdRdbS/cffQiV3ovuu/2+Y0Ke11Fl25X/SBcBDXMdG0jrlBDh/E5TpsFZtT9c/WmJ6bQhEJH7Ki5YOykCY1oBmjd20fcJW5Np9TwCQYvPapJPGqRo02UTu+K0aDgmoP3IGWQkku0N2BDq7da2v+S8XwNnqUyXp8Xuo4zYmtXXUecBvv+TzleoaVhpaC0eV6KQ+1W1t4Z0OuK+m4wXIGcYYaW5gMlKO4Ipz4VkdcbDX+u0D3DVbreN+74skdiMY+eoL2jctX4U+A03dcIaePlPtxSg9vpSTAXNA6sslHeXD1Uj+3Jl5; 4:GP3H3aOdqEVXTjgbu9Wn7L12n2s0hCmXOeAMjG5EZXNcwbqySdXCPC0B1xgU8ohTR2tbwfCiHJH+Gtv4Ug+MwHpGeZFbgPGfZRPpeULqOXFxFr2Uyx6mitAhYbsuRJMlMQlzlQ5TNkHqxBCCMn+MZtCD9Y/d3NvIEYJK1V795+uJbziT7baDdLFpsJFVQII5R6+I6Yp2R57B+pse2ZbE0uWgT3Aha7EheTkDq7vaOkvQqCMYYy0zfOAWT2PdrNqBxOInO45soH1x8VvWFxdiFRUUFlRdGewklNkdYKrd0QzBCE0ZtaV6yE7+h3LOkudKr+Vg3IvShPhRmPg1DbtFCMn1AiZczDpNuuS5+3T8nz4= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(145744241990776); 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)(396003)(376002)(346002)(39860400002)(366004)(39380400002)(199004)(189003)(6486002)(386003)(16586007)(68736007)(6506007)(6636002)(86362001)(6666003)(2950100002)(54906003)(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); 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:XBRQMv0cpqxK4b7E6jOW6dDBETF4Ry6mJ5mb6cQjQ?= C/RGvUO3Jil6zsskndSxCc1gYiAwWuU+TJz57YEZ3+KaP6EvWHh4eKCqxeXcitHdvt0GldX2TNk6iY4e2TtL/loEmQSGer/t8wL34/D6I3x8wFMMBqgC5WTb5XWO0sl0WnRLxHZbMiiZRW+JpC0Aez+YtSWCQO1HGQqlA1eHiBDeQ6PtNn0kTHUJOElFypaWFm9ycbXfff/w+4ElJ5ebctBwKXKV3DiCNLoTu2s+3TC6xDrgMZ4LtM183Qa4CxUO34eNtPgRIKL6dIuUmMPV1VwETzmEMzzVoWDGQG3Ymls0mdyGu/4P2t1KTw6YivqWwba7Hs+5WDnD7+5xon86ZhaiZOy0rF7W+WZqX6ZMTN8FpR6Lhw9Gy7BYZm4/M3OwIOGqm3yak3QmpDKVzHtcKSdg+zPrVuJh2KonCpVfxFQ6i3scuqG7oV+hg/atcSUEWQEqYrWurHEWea5h+Q2MnA6JrdTK3mXf7CWKDcQ8tTMVd33U1wKjRQGtSzPfA0SFgrpM28vLTVDrMag36VQwk9BJh7m7fxF1wpGeWeoHc5S5Lj37fo7xYG/Zigqr8Eq35ZZtnutBGXIANDr3H4IikJXIT9IFYvLGJ1c5nDZJWUg29gxyocUkXm7gLtFtd30GpNk1+hXpOht0D/CcYAvQriSPbzdpheFKyjfnictc6oxpA1Mox8O3ZOkvSsIBvpcQbkOlaGy5/WipxvVB0PCwzQJ++xehi2Kaaw7one30gFTBiRYJyevRIpo6KxNGR2RuTbIw+abWyiBe+72s+fbeWSJOvaDf4aVKtAKLhJ2t8KoD3xCI6v22YaWwF15wSdInUNW3jkrvMf4UckXp1DO+8oZiiLvbs+3VVGQDjmL6ideSpvha0DuMSz6gqEEkHa8TP7qyxeV2/HG4ZC+2TmWRNB/lva5Gc3C82V5Xlh/xJ7tgu9/dsKUpGbWDqKrcRghRg7u5VtCzCzxNBE9qEeHTQq603WLfojriRztlDdzk+uJReIjBQ8/OFovHUqiI773DJybLk2gI0IwjRJOxMLuzbMwRgmpSyJXplAR81TcbVIeOVO37p/YZ+VGeIg26pZULECkm1tsKN/mdFaExMJpTkZXpmYAL3nhxsqZR3NMdUlTHw== X-Microsoft-Exchange-Diagnostics: 1; DB6PR04MB3221; 6:I3rr39TFEQvcB4WpsnaEfwIbUgavJiXUZVqB5EuXnq6uEhNFKSFyXHxBGk3R7mW3z8iPckJXeS7XeUdt6RLu/NtGTDPSbRGzuRXMqV3U5nUNWLV2d5wYqWGPOd659MvwA7JytczxgBW+V0paRLPXESAdkH7A4mUSHzfw//WFEbfFLohCn5r1rnYSnnBjl58oNHx/iBQvADO5NUgW+ma2f2ASF6vU1nJvFlmLLc8HUJgHCDgcI2WJuhUpVCIFMNsoD4XngeovsJIbcWE9PxtoQBlSHIBbVr4tkO6xFA+zt+JJqM3+Kcye73mYfvy8uKCcee+FBNdepMhnN1Nj0S5504N8c4d+9d7AdQNvBCBiAC8=; 5:WDdoe2d07qD4kMGBAgA6XEYM+rPxqYUNfeqfHMmyD+/BylWx3y8EHzZmBMRkhUfn0OTcmePzABmDpPX8A0u7q6joQwXojU/Lh8+i2SMIxKdjqlAMqqt1f18BLQRwEefVetx8x2+x8vbnUGVmWFP4JOEjGJ9aS8Ya634kWusA6NY=; 24:j2JOjdlguT0JkSeXJx9XYNE+NSbILOFTgeNHjDA+YS8RXpdnv0Esa+eEDxMrKeGRK5D8+ZpyyMOw7oi16+EMkFn7Sneqd9m7ZZ3CCCFNqGQ=; 7:BGHNwIX+uuE3+P3PmAsT5RABmaKpK2zyWuOMhXH5NFz6oP0TpontfgJEmEBXvygJo/9xS56Dq4BR7TO9izdagZchXtNpSBiRb11y7V6QPiCB4xbKt++h6PdcF6X7fBBWveEcn+Tp6G8gjfPZKKjRLjJi0dLs9r9XysNj0tYtG0p6sVC4K2SsWRzSZAC1U/t37HZ1TrbNq1lToBVRjZNx3VYCE1JTz5RXiQ64h917J9HzNqpe6CU/CBSVZiQdbyyD SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jan 2018 05:22:22.1855 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5abbb000-806a-43e8-ddc1-08d557ea2212 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 27/31] net: fec: fix build warnings for 64bits support 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" From: Ye Li When building for 64bits system, we get some warnings about type cast between pointer and integer. This patch eliminates the warnings by using ulong/long type which is 32bits on 32bits system or 64bits on 64bits system. Signed-off-by: Ye Li Signed-off-by: Peng Fan Acked-by: Joe Hershberger Reviewed-by: Stefano Babic Reviewed-by: Fabio Estevam --- drivers/net/fec_mxc.c | 74 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 43 insertions(+), 31 deletions(-) diff --git a/drivers/net/fec_mxc.c b/drivers/net/fec_mxc.c index 4cbc8cbbfd..ff7ad91116 100644 --- a/drivers/net/fec_mxc.c +++ b/drivers/net/fec_mxc.c @@ -284,7 +284,7 @@ static int fec_tx_task_disable(struct fec_priv *fec) static void fec_rbd_init(struct fec_priv *fec, int count, int dsize) { uint32_t size; - uint8_t *data; + ulong data; int i; /* @@ -293,9 +293,9 @@ static void fec_rbd_init(struct fec_priv *fec, int count, int dsize) */ size = roundup(dsize, ARCH_DMA_MINALIGN); for (i = 0; i < count; i++) { - data = (uint8_t *)fec->rbd_base[i].data_pointer; - memset(data, 0, dsize); - flush_dcache_range((uint32_t)data, (uint32_t)data + size); + data = fec->rbd_base[i].data_pointer; + memset((void *)data, 0, dsize); + flush_dcache_range(data, data + size); fec->rbd_base[i].status = FEC_RBD_EMPTY; fec->rbd_base[i].data_length = 0; @@ -305,8 +305,8 @@ static void fec_rbd_init(struct fec_priv *fec, int count, int dsize) fec->rbd_base[i - 1].status = FEC_RBD_WRAP | FEC_RBD_EMPTY; fec->rbd_index = 0; - flush_dcache_range((unsigned)fec->rbd_base, - (unsigned)fec->rbd_base + size); + flush_dcache_range((ulong)fec->rbd_base, + (ulong)fec->rbd_base + size); } /** @@ -323,7 +323,7 @@ static void fec_rbd_init(struct fec_priv *fec, int count, int dsize) */ static void fec_tbd_init(struct fec_priv *fec) { - unsigned addr = (unsigned)fec->tbd_base; + ulong addr = (ulong)fec->tbd_base; unsigned size = roundup(2 * sizeof(struct fec_bd), ARCH_DMA_MINALIGN); @@ -423,7 +423,7 @@ static int fec_open(struct eth_device *edev) struct fec_priv *fec = (struct fec_priv *)edev->priv; #endif int speed; - uint32_t addr, size; + ulong addr, size; int i; debug("fec_open: fec_open(dev)\n"); @@ -439,7 +439,7 @@ static int fec_open(struct eth_device *edev) /* Flush the descriptors into RAM */ size = roundup(FEC_RBD_NUM * sizeof(struct fec_bd), ARCH_DMA_MINALIGN); - addr = (uint32_t)fec->rbd_base; + addr = (ulong)fec->rbd_base; flush_dcache_range(addr, addr + size); #ifdef FEC_QUIRK_ENET_MAC @@ -533,8 +533,9 @@ static int fec_init(struct eth_device *dev, bd_t *bd) #else struct fec_priv *fec = (struct fec_priv *)dev->priv; #endif - uint32_t mib_ptr = (uint32_t)&fec->eth->rmon_t_drop; - int i; + u8 *mib_ptr = (uint8_t *)&fec->eth->rmon_t_drop; + u8 *i; + ulong addr; /* Initialize MAC address */ #ifdef CONFIG_DM_ETH @@ -574,8 +575,12 @@ static int fec_init(struct eth_device *dev, bd_t *bd) /* size and address of each buffer */ writel(FEC_MAX_PKT_SIZE, &fec->eth->emrbr); - writel((uint32_t)fec->tbd_base, &fec->eth->etdsr); - writel((uint32_t)fec->rbd_base, &fec->eth->erdsr); + + addr = (ulong)fec->tbd_base; + writel((uint32_t)addr, &fec->eth->etdsr); + + addr = (ulong)fec->rbd_base; + writel((uint32_t)addr, &fec->eth->erdsr); #ifndef CONFIG_PHYLIB if (fec->xcv_type != SEVENWIRE) @@ -640,8 +645,8 @@ static int fec_send(struct eth_device *dev, void *packet, int length) #endif { unsigned int status; - uint32_t size, end; - uint32_t addr; + u32 size; + ulong addr, end; int timeout = FEC_XFER_TIMEOUT; int ret = 0; @@ -672,13 +677,13 @@ static int fec_send(struct eth_device *dev, void *packet, int length) swap_packet((uint32_t *)packet, length); #endif - addr = (uint32_t)packet; + addr = (ulong)packet; end = roundup(addr + length, ARCH_DMA_MINALIGN); addr &= ~(ARCH_DMA_MINALIGN - 1); flush_dcache_range(addr, end); writew(length, &fec->tbd_base[fec->tbd_index].data_length); - writel(addr, &fec->tbd_base[fec->tbd_index].data_pointer); + writel((uint32_t)addr, &fec->tbd_base[fec->tbd_index].data_pointer); /* * update BD's status now @@ -698,7 +703,7 @@ static int fec_send(struct eth_device *dev, void *packet, int length) * can start DMA. */ size = roundup(2 * sizeof(struct fec_bd), ARCH_DMA_MINALIGN); - addr = (uint32_t)fec->tbd_base; + addr = (ulong)fec->tbd_base; flush_dcache_range(addr, addr + size); /* @@ -799,7 +804,7 @@ static int fec_recv(struct eth_device *dev) unsigned long ievent; int frame_length, len = 0; uint16_t bd_status; - uint32_t addr, size, end; + ulong addr, size, end; int i; ALLOC_CACHE_ALIGN_BUFFER(uchar, buff, FEC_MAX_PKT_SIZE); @@ -854,7 +859,7 @@ static int fec_recv(struct eth_device *dev) * the descriptor. The solution is to mark the whole cache line when all * descriptors in the cache line are processed. */ - addr = (uint32_t)rbd; + addr = (ulong)rbd; addr &= ~(ARCH_DMA_MINALIGN - 1); size = roundup(sizeof(struct fec_bd), ARCH_DMA_MINALIGN); invalidate_dcache_range(addr, addr + size); @@ -882,8 +887,8 @@ static int fec_recv(struct eth_device *dev) len = frame_length; } else { if (bd_status & FEC_RBD_ERR) - debug("error frame: 0x%08x 0x%08x\n", - addr, bd_status); + debug("error frame: 0x%08lx 0x%08x\n", + addr, bd_status); } /* @@ -895,7 +900,7 @@ static int fec_recv(struct eth_device *dev) size = RXDESC_PER_CACHELINE - 1; if ((fec->rbd_index & size) == size) { i = fec->rbd_index - size; - addr = (uint32_t)&fec->rbd_base[i]; + addr = (ulong)&fec->rbd_base[i]; for (; i <= fec->rbd_index ; i++) { fec_rbd_clean(i == (FEC_RBD_NUM - 1), &fec->rbd_base[i]); @@ -922,6 +927,7 @@ static int fec_alloc_descs(struct fec_priv *fec) unsigned int size; int i; uint8_t *data; + ulong addr; /* Allocate TX descriptors. */ size = roundup(2 * sizeof(struct fec_bd), ARCH_DMA_MINALIGN); @@ -950,11 +956,12 @@ static int fec_alloc_descs(struct fec_priv *fec) memset(data, 0, size); - fec->rbd_base[i].data_pointer = (uint32_t)data; + addr = (ulong)data; + fec->rbd_base[i].data_pointer = (uint32_t)addr; fec->rbd_base[i].status = FEC_RBD_EMPTY; fec->rbd_base[i].data_length = 0; /* Flush the buffer to memory. */ - flush_dcache_range((uint32_t)data, (uint32_t)data + size); + flush_dcache_range(addr, addr + size); } /* Mark the last RBD to close the ring. */ @@ -966,8 +973,10 @@ static int fec_alloc_descs(struct fec_priv *fec) return 0; err_ring: - for (; i >= 0; i--) - free((void *)fec->rbd_base[i].data_pointer); + for (; i >= 0; i--) { + addr = fec->rbd_base[i].data_pointer; + free((void *)addr); + } free(fec->rbd_base); err_rx: free(fec->tbd_base); @@ -978,9 +987,12 @@ err_tx: static void fec_free_descs(struct fec_priv *fec) { int i; + ulong addr; - for (i = 0; i < FEC_RBD_NUM; i++) - free((void *)fec->rbd_base[i].data_pointer); + for (i = 0; i < FEC_RBD_NUM; i++) { + addr = fec->rbd_base[i].data_pointer; + free((void *)addr); + } free(fec->rbd_base); free(fec->tbd_base); } @@ -995,7 +1007,7 @@ struct mii_dev *fec_get_miibus(uint32_t base_addr, int dev_id) struct fec_priv *priv = dev_get_priv(dev); struct ethernet_regs *eth = priv->eth; #else - struct ethernet_regs *eth = (struct ethernet_regs *)base_addr; + struct ethernet_regs *eth = (struct ethernet_regs *)(ulong)base_addr; #endif struct mii_dev *bus; int ret; @@ -1065,7 +1077,7 @@ static int fec_probe(bd_t *bd, int dev_id, uint32_t base_addr, edev->halt = fec_halt; edev->write_hwaddr = fec_set_hwaddr; - fec->eth = (struct ethernet_regs *)base_addr; + fec->eth = (struct ethernet_regs *)(ulong)base_addr; fec->bd = bd; fec->xcv_type = CONFIG_FEC_XCV_TYPE;