From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933692AbdGKWDg (ORCPT ); Tue, 11 Jul 2017 18:03:36 -0400 Received: from mail-ve1eur01on0076.outbound.protection.outlook.com ([104.47.1.76]:23328 "EHLO EUR01-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754451AbdGKWDa (ORCPT ); Tue, 11 Jul 2017 18:03:30 -0400 Authentication-Results: spf=pass (sender IP is 188.184.36.50) smtp.mailfrom=cern.ch; roeck-us.net; dkim=none (message not signed) header.d=none;roeck-us.net; dmarc=bestguesspass action=none header.from=cern.ch; Date: Wed, 12 Jul 2017 00:03:02 +0200 From: Tom Levens X-X-Sender: tlevens@lxplus091.cern.ch To: Guenter Roeck CC: Tom Levens , Rob Herring , "Mark Rutland" , Jean Delvare , "Mike Looijmans" , , , Subject: Re: [v3,1/3] hwmon: ltc2990: refactor value conversion In-Reply-To: <20170708154515.GA6358@roeck-us.net> Message-ID: References: <1499056140-6064-1-git-send-email-tom.levens@cern.ch> <20170708154515.GA6358@roeck-us.net> User-Agent: Alpine 2.20 (LRH 67 2015-01-07) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="-1195575205-220907771-1499810582=:28469" X-Originating-IP: [188.184.91.248] X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:188.184.36.50;IPV:NLI;CTRY:CH;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(39450400003)(39850400002)(39410400002)(39400400002)(2980300002)(438002)(24454002)(199003)(189002)(8936002)(2950100002)(305945005)(6116002)(7636002)(7736002)(4610100001)(86362001)(106466001)(5005980100005)(53416004)(6916009)(66066001)(3846002)(2476003)(2906002)(76176999)(7696004)(229853002)(356003)(512874002)(54356999)(189998001)(50986999)(478600001)(84326002)(55016002)(110136004)(5660300001)(54906002)(6246003)(38730400002)(8676002)(74482002)(626005)(83506001)(4326008)(4001350100001);DIR:OUT;SFP:1101;SCL:1;SRVR:AM3PR06MB212;H:cernmxgwlb4.cern.ch;FPR:;SPF:Pass;MLV:sfv;A:1;MX:1;LANG:en; X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 74f39f34-5edd-485c-4db3-08d4c8a8a730 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(8251501002)(2017030254075)(300000503095)(300135400095)(2017052603031)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:AM3PR06MB212; X-MS-TrafficTypeDiagnostic: AM3PR06MB212: X-Microsoft-Exchange-Diagnostics: 1;AM3PR06MB212;20:XXr/ee9VcoH3rFKF3V4Iyuv+hul6fGzdVlFDozwkxT7OIzef5npQyBfUrwm5w9RPjHDfh0v/rwGIafJe4IUFLG0pfuAAeNPAByObEUnX2T7IaCZHDJCXE+p5M4H6oUPoNnZquvyuNO1fNDj5OrjV+9RrAcQdsp1Posm3yLKg88J7onbUnj7GwLovdvESyo2u6Ci0PfBhvEjso54uL5afp9qq7PiNGRt3AnVdVD0oxWAVKfb4iBzdlrm9Vlb7amze8oyvsuymHEWCe6uc8pumbS2859ao8XoHPNaMt3xcpijN9auXU6Ka2sGA84/EHL4XRkTGLsB18m3f17tyxeXRTVgxwuAUNJxUBZPZPbIY7slEP5RYABWy7d9IIKAVNbrrpI3d3q+muor7ii+UZLDotlyri/nfS6uD+8Nfle586DRvhxuBLlEiI8s9QrGoj87yWOrqMacfURp6C5VSBBC3eWIobpQfR+6YLvXSr+96jx3LNPe0HIdzWcjZTYPqTR0K X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(247924648384137); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(2017060910075)(13018025)(5005006)(13016025)(8121501046)(3002001)(100000703101)(100105400095)(93006095)(93004095)(10201501046)(6041248)(20161123560025)(20161123562025)(201703131423075)(201702281528075)(201702281529075)(201703061421075)(201703061406153)(20161123564025)(20161123555025)(20161123558100)(6072148)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:AM3PR06MB212;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:AM3PR06MB212; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AM3PR06MB212;4:Ymjx88QvphkTxuJZRtpwVF2zYRYK3xYPrgvVrT3HAlY?= =?us-ascii?Q?OR5BhjhrKZmdTL458/cfoFIddT1J9b6jWNBKycm11xREmnKliVnx2M4BjKbj?= =?us-ascii?Q?A6s5IuC+3EajrERQNg7Ce+jML6bY8Z+iVcbQjx3QyN5ZKsRJRtnP3iIZJnfV?= =?us-ascii?Q?S4G0SMEwyjTnSuyYnDEu1b07ukrfzUAMc3lsmDfnq4bTxIx4Z6YG8BJmtMwc?= =?us-ascii?Q?YJpxt+eVNOzqk5pdYUVPkrsR73a+m82b1NOqZTt1Vs3hKFbbC083EJ/pbLd6?= =?us-ascii?Q?O6amYK3fBdzhcr4OxjVc6CXJvzcW36826vpVvrQOzdpHvxGlk6hQpbbfSUMq?= =?us-ascii?Q?JQFCiAUtYPtEAYdhRADuo8PhGxNVKKUQGbARlylvIJQzW4HxqJd6xb98GXLV?= =?us-ascii?Q?KSIptxyyQjGWGaMqnB/lHkSNqcMYJi4aVZDKN+roxs0BPM+Q+BAiZ0xsHQXJ?= =?us-ascii?Q?1Pg4PouccEWB3o6PWwyP5yDPyaDVE18OW+v0OAtBaQ29uxL6Mtf6jhVscSa+?= =?us-ascii?Q?klu0vf2UqyUFHsY3sabygzvnxn4Qf9BivPmp8+oBM1fuS19JvRycQFEYUcrC?= =?us-ascii?Q?jZ11Fk0Zyhd+4LP64KvkR/kvY3KZ7DJgZO7a02h6a8gY6BLaa2WxAxr0khoU?= =?us-ascii?Q?8JC31b/iVO2rm9JoPWwdz2IqaiKu5v7Z3gorM+MO7zWVGHTMkWT6sZisNMRc?= =?us-ascii?Q?y6hzw35ewVKMC8flfT5cockUckzvKBQdAQdaYyHkI8LYEygGXJlS810NlU6/?= =?us-ascii?Q?dfIb6HhTT5U4zEXqzfdurIx3B7iH8i0viUAR95kqHlWXaggrDdaw3U48LhHM?= =?us-ascii?Q?WTyCGXvV4O+dcPmvdboZ2TYUQ4fS171zmSrm9z3U+D6BYPq52igQAw0awBuw?= =?us-ascii?Q?L6emx+rL81rrio+HWXqhFlcQKWYSW8witI2t43aIOk+sKOeMvjcvYjZ/YQ2a?= =?us-ascii?Q?YJ6oi1OLnZ1UN4YelTIYqCsvNhOaHH1yYBqQV5gJWK7hlRrw/vwIndzgwuAM?= =?us-ascii?Q?+kV7VxQw8XY+pcM9PTXWaCYo/2rre9JSiEp86YPuYCTTTc2TACd3bDaPy009?= =?us-ascii?Q?sx4hOQ96BoJ9NiqylNNOZKYZTbXDnMwz4/yVqM+yU07vh81aKYk6PVeC4Ri/?= =?us-ascii?Q?2MJ98AMWsh8pIvmuk3HpK+B2oOoWwAAxNSVk1YYnbRiV/hmHybN44r5TECMV?= =?us-ascii?Q?irCWPJykuKt2eJM2vW5+14HH4MupiXEYG5IDa8SmXLPIYqewGFLlew1cvllv?= =?us-ascii?Q?nS9iZ4FeAdVj+RmTW5IkyfHSI5IyRsyFuOGF84NE65Mh5oamfTX5GgXOpe/V?= =?us-ascii?Q?KLO71+p64UnYEp/UpC4ki+oby8lEPCU2JtfGXZRW1?= X-Forefront-PRVS: 0365C0E14B X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AM3PR06MB212;23:5K6jATo65rhchI6uvt0wvnaRFG9KPYI5MM82gPhUMc?= =?us-ascii?Q?KpBz9FRlKuajEjKeHXRdQXsrGjy9GB2L15TG/P2qOZBPCWGSUO8TTWpZFpcR?= =?us-ascii?Q?9LHWkNuZjQzlr6MNu18ed7o91D6eFHvik3FOnFr6nQOj3U3M0RfBY/p+lUw3?= =?us-ascii?Q?zc/jZ8DRrSyQFrtqj2GHzsXUicKSw9ck+5EJ/LV+jn4fjdfe5qN4bU2Lrjfj?= =?us-ascii?Q?mwAGUApIyP1dk+AcLKpqPKoW1fSY0heK4hZ9oHcwiOJKxVXwKxdk0vMdRW7h?= =?us-ascii?Q?6Ib+g91heH/JUrgkteRqcZpqPCwT2wefsC8a955tDXkBAWWGyZUadqXLzYoV?= =?us-ascii?Q?9n/px+EFOgqYSAq+2/KGnXSEx0srn5V3vvAGVjdqBLFIq5NyFiYdXy4vkxLz?= =?us-ascii?Q?fRa9pbZD89XiHAY9v/fBpWiOVBuXOy+J0IZsovidHRgnYUerzkZvMaea/T3F?= =?us-ascii?Q?eMPr+GuffPtzcO5UW7rk72iv062SZi3hTG0tQ6rMGQvZOXKpDNqhWuuBQTET?= =?us-ascii?Q?+K1nuh+sCfquMsAmsJ/9uV4H5fFOnS+fom1bhRbrD5p7b+ET/r8qeFuSBVAu?= =?us-ascii?Q?eRo5Il+cBjOyc8lS8Y3XyOR8g5sL23j5+Xzty5TtLPUoc7sDebgdvb+GnarA?= =?us-ascii?Q?jIM7SEaETfjqf5PR6i+5Troffp97d50T2V4oKWc4ycN12qI0fxXhGSWrrlCD?= =?us-ascii?Q?atU3v7Jn8IslgwaB0V1mTlnmJNiz0VTdglOZ367kge386vTPSbMwKX/9EUpd?= =?us-ascii?Q?sSlbm2C8q+bAHs8jij2hnYVRQuAMbNqnHgc5q/+Y9aTlnfH+itkTeppLkmk2?= =?us-ascii?Q?nkQexm429lsxJDY4QmcIJfXt0sArDlPQsNqlMvojilazIwEc6EY3wdmDf+x8?= =?us-ascii?Q?mTjFZJKOM2toeJHFr8l6zLAGfxUXtMxI3X2mGTMzjOJwUbF4VqSaivSwJSU5?= =?us-ascii?Q?RnZx/qg5Hd3Airi/pdSvAAv0GLFcLG6mj4+eXcyP/+CBNctShqOlajrzrZgd?= =?us-ascii?Q?UaMN8PcTLf8n1pEqENtdodXH8Ov0ZkfZDOnYR7c7H16yNMgaXex0B/F3zNtl?= =?us-ascii?Q?GTHqC3hIwvAxcWr5YiChu/RJ80q70Lw7LR54gyvIBUNbkXsq6+lBIQLcksCZ?= =?us-ascii?Q?tZAQOwCj3WXEMSaZwMb7kYSnCcFGNokzKIqxKFq4BXnPOnXp5QB12jM7U3Mv?= =?us-ascii?Q?Ts9RSOn5AgmSU=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;AM3PR06MB212;6:phxvVS/oOfhWKOYhWXKQA+XYBzQjUNALFfmBlUpAZJ0?= =?us-ascii?Q?3sSz6kTChxA5/z9giMQAS3ySofExibBOFPYfyRuJt42BYfPdbVsV/2wsruQJ?= =?us-ascii?Q?OVcg/lrV1lm0R5Ff2CNkWLRLsNG0aUGwJ/EQlgk5xwUr3RHEb8MDWE2nJYQH?= =?us-ascii?Q?dg5gPO1X2ccO6ifPZyRhntIsMwdjH1faEOvHxAD2/HsJFDFpvdYsaPmujphc?= =?us-ascii?Q?sp0jzS2ZsZI/x0Ftqp88HUEDNeM50yvnLYVX+sNc4K0BF6d2C0s4lez6haB5?= =?us-ascii?Q?eTu16OMMz1NyM7hfrXmGfTgyZF7nNdzpJhvO3OhAWK8b+r834H4lSdQgqYZz?= =?us-ascii?Q?Lg5RXh8HF6d+zGXpnza/koKR0ltydN5zradbc4RPmGWPU71/OSGBzVONfYPX?= =?us-ascii?Q?ybm0dtwjeeNng0410nvEk9vpqLHD4dP++l447Ld0vzW7hzwwFdS7tsU1vV98?= =?us-ascii?Q?h0eiw/t9NSbkcKerguybv85y9Ori/L6tGqGyH6M2zJ3bd0iyDTgIBEVwsnPQ?= =?us-ascii?Q?CygXMoQK7ydU5XrUvZ2VURq+z5hzHwkhLE2tOr0k/cYrkE551WHq4IwfyG6M?= =?us-ascii?Q?SNUWv3yLUPL+EqMKJcPYe3r5aJ5iNN2+FKEL8of6NWFMuKPtdK8twJl+JPgD?= =?us-ascii?Q?URWzas2JmHyXuurrc5dE4WV57sK/XsadVmfpKYdDC9nCcaVcJ3F0Wtwcb5+c?= =?us-ascii?Q?nJZQ0V7zpxBWWNmRmXRNMjJx+TzAm5AK8767ed5u4w+49l1Fu4ZUw1B0h+5n?= =?us-ascii?Q?rgH8zfBPTR0IaJ/F5JmNtu0IMBNgJEemXvPTkHdMW9tBQh/jhDIOxmpgaPht?= =?us-ascii?Q?XU+Oeld+sAZmvbpovUl4zovLHCPdoZxJX1E+QOcdxhO2iUSLPDl9hJDNTiwL?= =?us-ascii?Q?EoZR1V7WSS5dOPMmVG+eDC96ZVyxaLQAqyYR8WWvNeHOmuBKeHaaNH6FAit1?= =?us-ascii?Q?Nmu357T1KX0NYd7zXhU5iWFGP1ZDss5z4KmNW+mZ/Rf/74psCvxMEmoQDCBg?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1;AM3PR06MB212;5:9fl4OTzC8xifY+2gwM4OMwWU37DLOzvrvqPSbGfmLZc42jsHerYoxdYydpsZxAkwtcDQRqXzCA85IpakTjFfMO76Ci17gLI/UryF1tqKKKW0ttYpOhk7vMPomxALhn3OYL766g3qT+WYW5O/RyqGOxSV9pMIz8eaLSkxdjsUhlGuSjzpguyfrj1ft7IOipEtCTMGda32K5P3gbBz2lC7H9sR8XbLnzXHJGS6WqtzvWz8Wu36f09Dg0CM55FSp5yu3re7d6NZl7JFVa6tRMu6+rao8tOiFdBJBKDRM9U4gLKnzKoRCqdLjtFGKM2L8HtkSCmTPBTAwJsUA/EtCEqMgFD076L6U1Tc2Xd3ZXDKxXqAGYQiDR/W0f+Kzc36NyXM+76heAgseFenH75SgJF1tGZ7rvbkT6+D2hrcfU5LXbfmmvPCAt1Tu+6pJOxxwWv1DNsaRlFAN4zuurQBto127paBzuwUJk0hcb5fxNWw3uBw23x2Qf5eIOWJFYDaMrK7;24:JZdkF0sI9kqco4SstbcVTAEehRS//GAPeRRdbWmXLUzvllmwR5CgxOFiT80wcKLIWoNFUkv9TUOSl5P81rmZpRcb0z+3efsUiiD6jlvSNE0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;AM3PR06MB212;7:Bq8KranEz0mlt/pfNW9u/I5rfBUNntazlnTV/5uHaw0kxn2EeWZ+pSxsriPk6NQH6Xdm0LlfEF8QUxHgnqwY07d8zXCZ/lk8WTHKRCiK/4La/mHb582OxldUdCgBrufJCcbl8xOSNPaiRp0L4jNyoKTIi8kNaLyoPbr3qZZuR5/FfjuVCichl79WJV6A7jAv+cJFCHkmx4XkcLQdpck49DFd9mPx6YwIfhV3O2sHUvHMdrA0M6aiA1XJV7kxX5GYqJ4zIbi6TTlUiOu84J7sX83vK4zoHgii5NuveP2UtJg/aOU/mJdel80b4J+xhPTSDTwPOgQFAyjo15D8w/TmJUJ5gbHz7U729aGYt5zvMSR6Za42I4+eztFHZiv2N0Vr1VNTk6p2JdEnMMX3flgTZd8J2a9swn4Vy9suK5pRgNxa64ID90z6Ry3T3nHcGiLi5dheSolHW6NSjIndLRUQj7IkOtevQCp/6oyU3I0Lf/ubYgYkelo+19hPapXJAhTRDFQsI9uFscP7XVAdPE39kYAvhzBLgke5Njm2JGOViiG+JWetj0GhWbwg8X6THRX0DZGjX/H0zXSIAD8JfsMMg3Yw4ltCpFLedX2dgOfZcXmCh51GBHwZk013gJeNEfdCu+UbjwUaLOgH28lYmOp+FjWMmt3lzn8Zo9w1vf+Zw8njLx4L+xObJ055Fm21GDXLNPaoA3zTgg9qlZIdjadJlkYUDz1Imilc7X3hhlwHcl+6e0yJnr2YZwXarQcucqEHbSSBOsJJkXul0oY1/g1lBbaTMfOFxDJUSwyEPcFL9y0= X-OriginatorOrg: cern.ch X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jul 2017 22:03:24.5166 (UTC) X-MS-Exchange-CrossTenant-Id: c80d3499-4a40-4a8c-986e-abce017d6b19 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=c80d3499-4a40-4a8c-986e-abce017d6b19;Ip=[188.184.36.50];Helo=[cernmxgwlb4.cern.ch] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM3PR06MB212 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org ---1195575205-220907771-1499810582=:28469 Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 8BIT On Sat, 8 Jul 2017, Guenter Roeck wrote: > On Mon, Jul 03, 2017 at 06:28:58AM +0200, Tom Levens wrote: >> Conversion from raw values to signed integers has been refactored using >> bitops.h. This also fixes a bug where negative temperatures were >> converted incorrectly. >> > > Documentation/process/submitting-patches.rst, chapter 2: "Solve only one > problem per patch.". > > I can understand the urge to merge two sets of changes here. However, > that creates a problem for me: The fix should be applied to stable kernels, > but not the refactoring. > > Please split the patch in two, one for the bug fix and one for the > refactoring. In reality the refactoring *is* the fix for this bug. I am not sure how to to fix it simply without using the bitops macro. Of course, I could fix only the temperature conversion in one patch and refactor the other two in a separate one if you prefer? Cheers, > Thanks, > Guenter > >> Signed-off-by: Tom Levens >> --- >> drivers/hwmon/ltc2990.c | 18 ++++-------------- >> 1 file changed, 4 insertions(+), 14 deletions(-) >> >> diff --git a/drivers/hwmon/ltc2990.c b/drivers/hwmon/ltc2990.c >> index 8f8fe05..e320d21 100644 >> --- a/drivers/hwmon/ltc2990.c >> +++ b/drivers/hwmon/ltc2990.c >> @@ -11,6 +11,7 @@ >> * the chip's internal temperature and Vcc power supply voltage. >> */ >> >> +#include >> #include >> #include >> #include >> @@ -34,15 +35,6 @@ >> #define LTC2990_CONTROL_MODE_CURRENT 0x06 >> #define LTC2990_CONTROL_MODE_VOLTAGE 0x07 >> >> -/* convert raw register value to sign-extended integer in 16-bit range */ >> -static int ltc2990_voltage_to_int(int raw) >> -{ >> - if (raw & BIT(14)) >> - return -(0x4000 - (raw & 0x3FFF)) << 2; >> - else >> - return (raw & 0x3FFF) << 2; >> -} >> - >> /* Return the converted value from the given register in uV or mC */ >> static int ltc2990_get_value(struct i2c_client *i2c, u8 reg, int *result) >> { >> @@ -55,18 +47,16 @@ static int ltc2990_get_value(struct i2c_client *i2c, u8 reg, int *result) >> switch (reg) { >> case LTC2990_TINT_MSB: >> /* internal temp, 0.0625 degrees/LSB, 13-bit */ >> - val = (val & 0x1FFF) << 3; >> - *result = (val * 1000) >> 7; >> + *result = sign_extend32(val, 12) * 1000 / 16; >> break; >> case LTC2990_V1_MSB: >> case LTC2990_V3_MSB: >> /* Vx-Vy, 19.42uV/LSB. Depends on mode. */ >> - *result = ltc2990_voltage_to_int(val) * 1942 / (4 * 100); >> + *result = sign_extend32(val, 14) * 1942 / 100; >> break; >> case LTC2990_VCC_MSB: >> /* Vcc, 305.18μV/LSB, 2.5V offset */ >> - *result = (ltc2990_voltage_to_int(val) * 30518 / >> - (4 * 100 * 1000)) + 2500; >> + *result = sign_extend32(val, 14) * 30518 / (100 * 1000) + 2500; >> break; >> default: >> return -EINVAL; /* won't happen, keep compiler happy */ > > ---1195575205-220907771-1499810582=:28469--