From patchwork Thu Nov 12 21:03:40 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 543690 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 45B031402BF for ; Fri, 13 Nov 2015 08:10:10 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753000AbbKLVJx (ORCPT ); Thu, 12 Nov 2015 16:09:53 -0500 Received: from mout.kundenserver.de ([212.227.126.131]:62944 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752899AbbKLVJs (ORCPT ); Thu, 12 Nov 2015 16:09:48 -0500 Received: from wuerfel.localnet ([134.3.118.24]) by mrelayeu.kundenserver.de (mreue002) with ESMTPSA (Nemesis) id 0LkG7v-1aZ3fs2ZXH-00cN7Y; Thu, 12 Nov 2015 22:03:47 +0100 From: Arnd Bergmann To: linux-arm-kernel@lists.infradead.org Cc: David Miller , netdev@vger.kernel.org, mathieu@codeaurora.org, linux-kernel@vger.kernel.org, peppe.cavallaro@st.com Subject: [PATCH v2] stmmac: avoid ipq806x constant overflow warning Date: Thu, 12 Nov 2015 22:03:40 +0100 Message-ID: <3825178.3luTQFAgny@wuerfel> User-Agent: KMail/4.11.5 (Linux/3.16.0-10-generic; KDE/4.11.5; x86_64; ; ) In-Reply-To: <3729464.5X0HBxzvx5@wuerfel> References: <4391788.dtYArQ4mVi@wuerfel> <20151112.122528.1794206832971213176.davem@davemloft.net> <3729464.5X0HBxzvx5@wuerfel> MIME-Version: 1.0 X-Provags-ID: V03:K0:5cXlapenx8KObccIyULE3UrxxmhIYw4qU207Zg1KbkRtYOqzXEh K2E24nfXSK+dzZmnpvDogBaWMpc6JKBuk85bxwg1lqkM4y1c1EGfDOBi4PeXmq5KsVTtTzu dj9QVNw5yImAjkWoFm1RbX0xPeuOXvNz3pKP4UDYX+Tb0fKrs8SJGjc+xKaY/6UzdBDu44N atUgC6s5S4nA/dnytosCQ== X-UI-Out-Filterresults: notjunk:1; V01:K0:yc/KVZkStt0=:c2PnwH5AxxuYSQKWK04k0h vSoj1P+Hj6liIiCiRDQIA+OwyFm2ygfq4kwnuFgcRN0qB8zP4gNDtlMQzYHKSRTcWzqtgVd+b vtbw9A4YnfpJccpkLZgcXDnKGvl35q3k9kZi1WPwuAxvCZfLps0Se2ZGX0UsAhLGlwHiLE4Oi BLLq7nNdTdeqZ/QrYPJj3RRH08+E2rXN0/yxwZ3nW2ay2Cd2CcB957eN3iCm+5O134UpVK5lo Ivsm4zrxoqTa85tekZNNgKZtWhfHP4KfMxsGmDZZyKZzq4HMqwHuBjlhL/0O0fD+E0FblHKTK dZu+nbIdEYXGL1V2dCUF3VsEnodHyXYagzOIMfQaW3NDaiibnTwSB+mJouX78rRSZeMcasT70 0wzkNu/R3zdznG6klGGwlKinAmBOlGZMraxPtJhX8NaVA4b7eTF6qeHimsVzRWaAUSd/sj2bQ mMX/V2U9pJzxB/h0O5WW4Q8v3srq5xSsKLfc7O7Z8ofo2nylgDDCZX9VOJKKOy398c7+oO5mB IvDSe9pLTbP1SINiUxGWV6lQ9vzxjKZZAlH9RM8yXVHKxoUT5DJgOtZD4Aw1TxbrI3SEjnJvZ 8ihn8GXCAxSvv2hBCkwdVR9rSTyYhcIesMqtRbEikFZG7W7pYb4b90LCPqSrVTuulRXa92KPB jTYHVE2hP0xp+c/qRk7NPHCSea9/1Fy8gt5ALRwZL99Pm0nRYwxMIEuWev5Jy0XyHmDKOvTAS 5r5I8yz7i6L9QJcj Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Building dwmac-ipq806x on a 64-bit architecture produces a harmless warning from gcc: stmmac/dwmac-ipq806x.c: In function 'ipq806x_gmac_probe': include/linux/bitops.h:6:19: warning: overflow in implicit constant conversion [-Woverflow] val = QSGMII_PHY_CDR_EN | stmmac/dwmac-ipq806x.c:333:8: note: in expansion of macro 'QSGMII_PHY_CDR_EN' #define QSGMII_PHY_CDR_EN BIT(0) #define BIT(nr) (1UL << (nr)) This is a result of the type conversion rules in C, when we take the logical OR of multiple different types. In particular, we have and unsigned long QSGMII_PHY_CDR_EN == BIT(0) == (1ul << 0) == 0x0000000000000001ul and a signed int 0xC << QSGMII_PHY_TX_DRV_AMP_OFFSET == 0xc0000000 which together gives a signed long value 0xffffffffc0000001l and when this is passed into a function that takes an unsigned int type, gcc warns about the signed overflow and the loss of the upper 32-bits that are all ones. This patch adds 'ul' type modifiers to the literal numbers passed in here, so now the expression remains an 'unsigned long' with the upper bits all zero, and that avoids the signed overflow and the warning. Signed-off-by: Arnd Bergmann Fixes: b1c17215d718 ("stmmac: add ipq806x glue layer") --- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c index 9d89bdbf029f..82de68b1a452 100644 --- a/drivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c +++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-ipq806x.c @@ -337,11 +337,11 @@ static int ipq806x_gmac_probe(struct platform_device *pdev) QSGMII_PHY_RX_SIGNAL_DETECT_EN | QSGMII_PHY_TX_DRIVER_EN | QSGMII_PHY_QSGMII_EN | - 0x4 << QSGMII_PHY_PHASE_LOOP_GAIN_OFFSET | - 0x3 << QSGMII_PHY_RX_DC_BIAS_OFFSET | - 0x1 << QSGMII_PHY_RX_INPUT_EQU_OFFSET | - 0x2 << QSGMII_PHY_CDR_PI_SLEW_OFFSET | - 0xC << QSGMII_PHY_TX_DRV_AMP_OFFSET); + 0x4ul << QSGMII_PHY_PHASE_LOOP_GAIN_OFFSET | + 0x3ul << QSGMII_PHY_RX_DC_BIAS_OFFSET | + 0x1ul << QSGMII_PHY_RX_INPUT_EQU_OFFSET | + 0x2ul << QSGMII_PHY_CDR_PI_SLEW_OFFSET | + 0xCul << QSGMII_PHY_TX_DRV_AMP_OFFSET); } plat_dat->has_gmac = true;