From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753954AbcKRMj1 (ORCPT ); Fri, 18 Nov 2016 07:39:27 -0500 Received: from mail-db5eur01on0041.outbound.protection.outlook.com ([104.47.2.41]:42720 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751689AbcKRMjX (ORCPT ); Fri, 18 Nov 2016 07:39:23 -0500 Authentication-Results: spf=pass (sender IP is 188.184.36.46) 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; X-IncomingTopHeaderMarker: OriginalChecksum:;UpperCasedChecksum:;SizeAsReceived:1739;Count:16 Date: Fri, 18 Nov 2016 13:23:36 +0100 From: Tom Levens X-X-Sender: tlevens@pcbe13573-vm.dyndns.cern.ch To: Guenter Roeck CC: Tom Levens , Mike Looijmans , "jdelvare@suse.com" , "robh+dt@kernel.org" , "mark.rutland@arm.com" , "linux-kernel@vger.kernel.org" , "linux-hwmon@vger.kernel.org" , "devicetree@vger.kernel.org" Subject: Re: [PATCH v2 3/3] hwmon: ltc2990: support all measurement modes In-Reply-To: <20161117234024.GA26747@roeck-us.net> Message-ID: References: <1479384616-12479-1-git-send-email-tom.levens@cern.ch> <1479384616-12479-3-git-send-email-tom.levens@cern.ch> <410de6c9-a13e-51f7-4d66-6f4e2537c574@roeck-us.net> <582DEB81.6050806@topic.nl> <20161117185654.GA19338@roeck-us.net> <582E0A6C.5010307@topic.nl> <20161117215454.GA23571@roeck-us.net> <09DCF2E6-3F08-4F0E-837B-55F591008AAB@cern.ch> <20161117234024.GA26747@roeck-us.net> User-Agent: Alpine 2.20 (LRH 67 2015-01-07) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="-1920950886-711264204-1479471820=:5613" X-Originating-IP: [128.141.154.157] X-IncomingHeaderCount: 16 X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:188.184.36.46;IPV:NLI;CTRY:CH;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(7916002)(2980300002)(438002)(377424004)(199003)(24454002)(377454003)(76104003)(189002)(52164004)(4001350100001)(106466001)(50986999)(3846002)(2906002)(8936002)(41446006)(356003)(60046009)(246002)(5009310100001)(6916009)(38730400001)(189998001)(54356999)(2476003)(4326007)(5660300001)(76176999)(2950100002)(512874002)(6116002)(110136003)(7696004)(7846002)(229853002)(84326002)(86362001)(66066001)(305945005)(83506001)(626004)(87936001)(7736002)(7636002)(6666003)(93886004)(8676002)(74482002)(92566002)(4610100001);DIR:OUT;SFP:1101;SCL:1;SRVR:HE1PR06MB1162;H:CERNMX13.cern.ch;FPR:;SPF:Pass;PTR:cernmx13.cern.ch;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;DB3FFO11FD046;1:m1dDfdthEU0I1UkgwPqe0rW/OheU1fYo9aukJyMWj6V8ZXBUWHyHbnUnqHY9Yvq6tOK5Zg/ABNLxeG6hhtOnaKNZXpz6OPTZQOQuTDNJdcMVZpRXYQ6CbNHUB1rgPzj0qfSUn3OROXoUhUdF/sxljtqGMdA32CjEpTZYebzGWpJxElK5o7avxTWhLybJrpE7YmjEN/EXeUpdpyLcJyZz6U4K2uvl4EhX77pJimKAjxh8XrB2NpCc6w8Qmt5dlBsYHv7kyNLWAj1Ihsz7Hf5P5FIzPQesap2oCdRKK3AgqbX0kc23AZxsVgQg4hkFPZtGqvYKsmf528g+rJVUsy4pqVes0fwvYxTjxucoOO6CAclrYjkdZRmP/rpVu+QDeBNh0zOTcSrwyWsPNBhmTrkooEjSPoZlHsbbjscet9pM11SZ4k5jRGBMlvbR7Mr74D2jvVs69M7YK1QkFQEc6+FAw3RYybwaS8XCDS7aKsK+6/YPThl1A6C5TNn1ym+7rYZxMJZXU0HR7sjJHjuKB6QhOQk8kpXwT+Rw/bS6nrB4OhnbB9pNUr/u7RkwIVxbQpTg X-Microsoft-Exchange-Diagnostics: 1;HE1PR06MB1162;2:IJZw8aPGjH5CPHd35WBeM7CuUKQiZTsFqpYbGBJBMPhIk77e059OOla00drcRj54T1Q1zUmk9BWHBE4T16308jrUWSIplmBCydT4YDK4DWLUtA1D+K8bm1EaJ2yZO4cMldmvn7UI9DAjs9XT4+wrfbG3tfeIpvFfxRqBmI+wjZU=;3:+Ky5TN0xcFDL3lms/A1nLRRipjx2qdrcJBVAhx74UFmFtg6O050YqKzCjkn6HVwnvzJFzzRjEEkCJ0JoVDLacY0iMHxL8E7Rq1+423tOirdJel8MNhUixVdhfo459su1w9VFskgpYeMOwFvl/+ldbI7lwa5i/zQJPocf4dc6dITcIzqS5Pmm2pWI0fhvII9YmLfwawVinH59CqXGyHpZ+F/06RYx1Nh2Z2/oVFusbdmkJXut8xcEEBVccJ1iY9KKCY7eLyqosS+0bvhbsvohSt822/FIH5GoBOo1w086gC8= X-MS-Office365-Filtering-Correlation-Id: bf1c5f87-fe7c-4f93-d15f-08d40fadcabd X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(8251501002);SRVR:HE1PR06MB1162; X-Microsoft-Exchange-Diagnostics: 1;HE1PR06MB1162;25:lTphIs21raFlrVQDHU5dXFLslVW43huemcyVxYT3x33cadw3/H6sgPTIcosXlng3wnwdAHexXqES4flB3XeAoOv7CAcec4uzj+jG4Fk+/sAgnfzMaWJKol3BKl9RFZl5u/5kkOTvlZ5TAkdg0WKeWV9Q+JTd4Knuln2MFYGsEVk/8NCZLOP1JRaFUfO411+DxeV2ULLOwEXzIvV48/K3qEnq/eZIG3FVT2LCZqbiBrQ6NTjyucyiL3HLwgK368T1fUQDhu7lXznE+fqr3EkUxbuIF6aVwXbfr4NBwaBXnJoUT3WzA8qm4/IXkA9+XdBm0f15OlDWO58Duc971oTqZa7bY9HkmyMyAgFoe40hQRw/ZmCqc8bf3YG1RfJVWGmc/rnaSjFcyca/Z/W8WsEihB+QCSUMWJMkTwebg9GM735UuLvQ35wjVA3UJtdJ7DXi72ZHKkf+Lh/EsE0mPY+tZjrLGQPhbh21LMC2EUCFdYHpFWEmlAPIA3IhaWevJUhl+ADDTQ5qnnQiFzdyS2dAaW++VWQGfsOtZGzYSoVV+UiZhzlRTSTbOlu8HGuIxDaylqOpA3FP+QYw0PNc4GvoBNfJSOSXzt4xQmeBLjs9jCGovqK44eCeC8ulMWB48Xy88yGcJmElb3x3Gs+IyBENNp4JmXwTsgUItazn70QWiW7jPosCvT7+CCYyGqrJOHJfmCGIF/L6+xW3CGtD/ooZNvcqgzsvtp0SvMtFOpfjAZAznU7BHvq1BTLJPutnQSbOCe/qGi0it5SmE6dAs+Fw5bkX/RNYRJDWzJwn6Qt5cRTH44eL0k49xv9W42qRCvDK X-Microsoft-Exchange-Diagnostics: 1;HE1PR06MB1162;31:9oObkoIPjFFmUsmVZZse9j/zitNs22PHDMQxCTVyZ5BWeUCDDS6ckgyAuL6naKSTPRPjp2H9vvpWuC3acLnziaFZA53PWMDBH4iUSC196tmhqOQ/qSZ42rx9SnO+QhKmGVEAns/UEDnVzE/6+23rcndEO5YnuFDzSGXCZ3t79xq0+Umm8MgoNfeBg+xuOvAsaCKRW+2x0b8inGBXvvAUka0iZ1yZP3rrHAebB7eUatNTYaS+e2YGwoqwtWqfXFK13oh4vT/YVet2/uERfG/rwynTRnmnIu29k+CikCcLbJ4XHs+4vsfKIskPJoPBhIvp;20:zgOBgTCeBWxFXvHqAVHwRqLs+AfKuIT3Z/32zVMo9og+CshWytEb/roiIR/xHiq75BjLfFx/tX1//i8U4Hiv5tmaZAC1t1AAMki3inrJmn0pr8uwPMxkGdmzx0Iiu1cWsmiItjFR+EYHIwnsBKjlRwbgIt43hXMFRNqbHNYsMjAQ76BYDjFRVLGNpIM3J9v5p0Sidz9a6tIShTO8bBCivxGOryuPidKWA7rF4Yzc3VLR9QZCzET2wkoXXV4IUbviF3WYCKDQ0i10u9KDZIaLO/8ZZan73gpoBxWdOqA+2Hsj7th6X+n/i1gv54L4eCT4BnmrdHe3ikz9cvCwVrHuG1mi38VUb/UNJ2Mb4DWcjatsBrKwe3z6AFKUf+Nb+tz/SZhku+eSQ2BWhvS9LqBj9ftzkXZSzN48Rlyw/FYAAsYzclNQTCp+byL8AdzXQbiSTQYbG88pa5ivCE6k8L0D3xJLPzfcvbVH5SGDvFxf90X9hUKPXqGGRALUVcQNkRbd X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(211171220733660); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6060326)(6040281)(601004)(2401047)(5005006)(8121501046)(13018025)(13016025)(13023025)(13024025)(10201501046)(3002001)(6061324)(6041223)(6042181);SRVR:HE1PR06MB1162;BCL:0;PCL:0;RULEID:;SRVR:HE1PR06MB1162; X-Microsoft-Exchange-Diagnostics: 1;HE1PR06MB1162;4:KCa+msWco+6gIGbwwUHFpnWSt5zBFbT3pC1IDTQV/sdpb2YHdtpUNl+93kr3GEOGcopov/AUewoewI0sO+I5PV+vcAvs/q4rmpj9whHsbdouA3Two01ql0bqirW3H08g6hacYLH8nxIKPkmWhZFnGtRSVrJSvMMr0Joy2QYKwFmlDgT/Bj02AmpsbB8aaZojaBXAEr2IXvculAnHHeOX2JWbq5pHeWgRaLupfJ1XRmzBWD+1xJUeMcEqmTz6CMWxlVidofWwlO5RiURBsaivj6FjU5Gdx7F5TrbYOlwAgpyAxKZpPcZz6kGSQspLlCRqXmUZ+WtuzYdkzine/n0IOGWown0AqmjyNJjxuH7otY/HgkQtvkvjRNFvnrzBqdWN03ZA39xAujk8VJvmaeG9snf9yKvFi2KGFB5ylqDgiGEaL9/w8kO1hIx5snfeTN8rd6Mc/Cl2+rVEnYXxW+hYMU2gRB4gSjngA8i0CRQO7mwhCRP5/hX5qB973jFbKTRJTWShRtJ3J6CuTn+Oqivd7SuqUl1phB6YLakp+g/vCc3RNKn9MZbpkFMDcFfILD6P4vAR/OmZtS8tYoQi6QsIig== X-Forefront-PRVS: 01304918F3 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;HE1PR06MB1162;23:/I8rWs+OKZxdoFGsNiTY46wBN883FRTeE+UQ2Fie+?= =?us-ascii?Q?EMgaIIBr5fWb/Ru1HTGAV3QzJBWPzEQL+CYfqBxtN/WM9elYxIfUTJcxiSc6?= =?us-ascii?Q?519z61iKUDLxsqXvPJlCFPr2YR7tvmJytLbSbqc8CcviVIIkDAi5aGmQ+E8m?= =?us-ascii?Q?+iU6dMop3tw1eX+yzefdQciR1bgl8a4ywWh/2B/fbrSSFZqSealncUUf9nbp?= =?us-ascii?Q?21WpZeUMErqGb7za3+xhFMQxvsDt39YiHNqYh50nAq2OCe4SlBM+4S2hNxJ7?= =?us-ascii?Q?EymK1GQTOdSA575mAf/EtbouBlEKklZC/7CoM6Zy2w9qKuA2l6ELDvObCkq/?= =?us-ascii?Q?kXGp3L6LjE/gHYi1KfaJsnxFUOeK7tGx4R+H+SLdOgXTMLUFWlrN9jBLntUX?= =?us-ascii?Q?3lqKbqvYIBNTNYOPo8lOmJ9Gym1FUdUb/8mGgd8OAT3UZE9xHH6OOiqog/RN?= =?us-ascii?Q?bR/Xwvo8hfktGnzG5TT5qt6ymAW7/PbYQo4gJpatJKSIVhe/NIPCLwOLCAlc?= =?us-ascii?Q?siziLXOQ7vZPWC1BNIGoSMYUzwMe/Raxae51mWaHUT3/TaxEJNfZg+IjMFeL?= =?us-ascii?Q?uG51c2yFzbRhs9lDD4YabE/Iy9SZOKtuYFEY36zEcC/jitBPU3RsC4InLT08?= =?us-ascii?Q?kxhRRwbEZRm3YJzKlC4T9Zv5Q7kbNn8TakGxpAbsmSq1J9L/yV66cvclv8sD?= =?us-ascii?Q?3rggPFuz5hCavYN+f/07bTIpa0b4o4HSH3MNpF5bOeaOmX21xkFmdee+StgS?= =?us-ascii?Q?srP6+VDleBkskQAIaTlzCrxcFk57qnMtIPYupIK1H1JVpFbiN9d19G6fBWX9?= =?us-ascii?Q?nFZrFeM6XKhRWRs4nlm5U7bbBTQv0FlU1yj5OS+iQb3CtQPKIN1dSRe1u3qM?= =?us-ascii?Q?g7ZhsA8CEFJlHoeplYh1KLyI0/p/RiGDLcXkgN/O2dEfFurob4+oQ1EnJt20?= =?us-ascii?Q?9nnnX3UF+z0SXU724Ofdq6NOJ3gNCSOgbgLaP+QkYAiZ97Ytzqcz2kJ5PnBK?= =?us-ascii?Q?zRGjFGTUIzgvacPbj7uLZAPbKDMaheo2WhPZmXzy1uCX1lcOXKE8wbXF3mcx?= =?us-ascii?Q?SQD3gI7dYZts+uD4BBJsoq2XZdP0GULrm4VMltLQS6Y1PS41RA2dK3wUqww4?= =?us-ascii?Q?eQiWvm8LlZHpvBIQD3CpMw7LG1zfjNhtkUCeP2E/aznaX5X+ypbBXp1gQ/29?= =?us-ascii?Q?xmxGuVbOuTuoBlsRbSA0SLfuK8UiGWOUO6HD20lWIFhy6Q1roXTn3r00woEV?= =?us-ascii?Q?dLN2K06mmC/6SEnTL9M6eBnqw169TlBncNomZT4?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR06MB1162;6:iMi6j8E3rN47HTcOlsR4ZcGj/gQyveWme1NCZrVR5JYYnhnweUpNYNn8TU/V5IKnyuaLzHFBnQcoIQm+X7urT2FH9YW5kGs7GBtpEvX/rzhCDJuoFZzgnE39lYJXwjV/7RZwW2NPknlnwCq9B2JpAFS1LrgwbmUTSga4z66xNQjaksSc4JUAmepHKEKJQ0KPeCIJnU5sPqFpyoZw7u2/VSYjHaK5lD6mSwIY2NuVNRBGhZxb0VqVu+iNZz+06HNuGE2a4Q6UK853UUhhecIOLQS/UKrjSmsR4u6/+jITS/XpZ1IA9dmrm11AiXGn+yLM5x0Uz2Dg7bGdLaJYK4KMByOI2oIGBP79J/FaftNRr10=;5:ZAbmjqdCT1+9ZhD5C2STNeeETE9xbZGvzord7vlG1sC256X7tcu9W+tdgWv2oAM/jH760/T7RfxWVEIARAc5G8io28AIyQYWJV2/wbb8mW3lPETxHeeurfnrfcKDhaCk0/zYzEuISii7Je+JdRT4jg==;24:4/1KGdGLa4NV3pzAFJ4PvdMXUBvAtVKeNfzC/zpHEaBc41vAmNV1b9v9svAAHfS080w8TUWLMK7GfxhYKbOPIVw8mZMb7YVn5exXkyayc1U= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;HE1PR06MB1162;7:7HsnkvFnlyXwOmXyKTldSK8OIn3zpNEHWe/JEuqbrgPE4Sfel4AcT5PxlHU9MxNiPR7BIb7h61SlQmb53Jc5HrWf6sSDPOppFNiiUcFbJITRGfpmy/z2OKuFuz1CqTldIqoXpIvRnJYxUwgy2IDOzoybeIbmlsXJ6ZVUvNx1lwWkRIi7kSNbu9FBTWL+RoeuvpKEho417Q9Kf5VqNQGCOAyC9wB3J+bybynjGJ29BDHEqBMiWzRmodLfRMostT+ehJXWjVwc4kY+jX/ThPo3JofXve00O68gtlpNQRzQIcLYk+BYKoDhIlIf+4QRyJjQwg+eHHSH1Dm1tu7tOeP5KEEFmOifu3zTGBXsN7ADG/Q= X-OriginatorOrg: cern.ch X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Nov 2016 12:24:06.6130 (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.46];Helo=[CERNMX13.cern.ch] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR06MB1162 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org ---1920950886-711264204-1479471820=:5613 Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8BIT On Fri, 18 Nov 2016, Guenter Roeck wrote: > On Thu, Nov 17, 2016 at 11:25:30PM +0000, Tom Levens wrote: >> On 17 Nov 2016, at 22:54, Guenter Roeck wrote: >>> On Thu, Nov 17, 2016 at 08:52:12PM +0100, Mike Looijmans wrote: >>>> On 17-11-2016 19:56, Guenter Roeck wrote: >>>>> On Thu, Nov 17, 2016 at 06:40:17PM +0100, Mike Looijmans wrote: >>>>>> On 17-11-16 17:56, Guenter Roeck wrote: >>>>>>> On 11/17/2016 04:10 AM, Tom Levens wrote: >>>>>>>> Updated version of the ltc2990 driver which supports all measurement >>>>>>>> modes available in the chip. The mode can be set through a devicetree >>>>>>>> attribute. >>>>>>> >>>>> [ ... ] >>>>> >>>>>>>> >>>>>>>> static int ltc2990_i2c_probe(struct i2c_client *i2c, >>>>>>>> const struct i2c_device_id *id) >>>>>>>> { >>>>>>>> int ret; >>>>>>>> struct device *hwmon_dev; >>>>>>>> + struct ltc2990_data *data; >>>>>>>> + struct device_node *of_node = i2c->dev.of_node; >>>>>>>> >>>>>>>> if (!i2c_check_functionality(i2c->adapter, >>>>>>>> I2C_FUNC_SMBUS_BYTE_DATA | >>>>>>>> I2C_FUNC_SMBUS_WORD_DATA)) >>>>>>>> return -ENODEV; >>>>>>>> >>>>>>>> - /* Setup continuous mode, current monitor */ >>>>>>>> + data = devm_kzalloc(&i2c->dev, sizeof(struct ltc2990_data), >>>>>>>> GFP_KERNEL); >>>>>>>> + if (unlikely(!data)) >>>>>>>> + return -ENOMEM; >>>>>>>> + data->i2c = i2c; >>>>>>>> + >>>>>>>> + if (!of_node || of_property_read_u32(of_node, "lltc,mode", >>>>>>>> &data->mode)) >>>>>>>> + data->mode = LTC2990_CONTROL_MODE_DEFAULT; >>>>>>> >>>>>>> Iam arguing with myself if we should still do this or if we should read >>>>>>> the mode >>>>>>> from the chip instead if it isn't provided (after all, it may have been >>>>>>> initialized >>>>>>> by the BIOS/ROMMON). >>>>>> >>>>>> I think the mode should be explicitly set, without default. There's no way >>>>>> to tell whether the BIOS or bootloader has really set it up or whether the >>>>>> chip is just reporting whatever it happened to default to. And given the >>>>>> chip's function, it's unlikely a bootloader would want to initialize it. >>>>>> >>>>> Unlikely but possible. Even if we all agree that the chip should be configured >>>>> by the driver, I don't like imposing that view on everyone else. >>>>> >>>>>> My advice would be to make it a required property. If not set, display an >>>>>> error and bail out. >>>>>> >>>>> It is not that easy, unfortunately. It also has to work on a non-devicetree >>>>> system. I would not object to making the property mandatory, but we would >>>>> still need to provide non-DT support. >>>>> >>>>> My "use case" for taking the current mode from the chip if not specified >>>>> is that it would enable me to run a module test with all modes. I consider >>>>> this extremely valuable. >>>> >>>> Good point. >>>> >>>> The chip defaults to measuring internal temperature only, and the mode >>>> defaults to "0". >>>> >>>> Choosing a mode that doesn't match the actual circuitry could be bad for the >>>> chip or the board (though unlikely, it'll probably just be useless) since it >>>> will actively drive some of the inputs in the temperature modes (which is >>>> default for V3/V4 pins). >>>> >>>> Instead of failing, one could choose to set the default mode to "7", which >>>> just measures the 4 voltages, which would be a harmless mode in all cases. >>>> >>>> As a way to let a bootloader set things up, I think it would be a good check >>>> to see if CONTROL register bits 4:3 are set. If "00", the chip is not >>>> acquiring data at all, and probably needs configuration still. In that case, >>>> the mode must be provided by the devicetree (or the default "7"). >>>> If bits 4:3 are "11", it has already been set up to measure its inputs, and >>>> it's okay to continue doing just that and use the current value of 2:0 >>>> register as default mode (if the devicetree didn't specify any mode at all). >>>> >>> >>> At first glance, agreed, though by default b[3:4] are 00, and only the >>> internal temperature is measured. Actually, the 5 mode bits are all >>> relevant to determine what is measured. Maybe it would be better to take >>> all 5 bits into account instead of blindly setting b[34]:=11 and a specific >>> setting of b[0:2]. Sure, that would make the mode table a bit larger, >>> but then ltc2990_attrs_ena[] could be made an u16 array, and a table size >>> of 64 bytes would not be that bad. >> >> I would tend to agree that it should be possible to configure all 5 mode >> bits through the devicetree. What I would propose is as follows. >> >> If a devicetree node exists, the mode parameter(s?) are required and the >> chip is initialised. >> >> If a devicetree node doesn't exist, it is assumed that the chip has >> already been configured (by the BIOS, etc). The mode is read from the >> chip to set the visibility of the sysfs attributes. In the worst case, where the >> chip has not been configured by another source, it would only be possible >> to measure the internal temperature -- but I think this is an acceptable >> limitation. >> > SGTM. > >> The only case that this does not cover is if the device tree node >> exists but the chip is expected to be configured by some other source. >> Maybe I am wrong, but I would not expect this to be a terribly common >> situation. >> >> What do you think? >> > I would not bother about this case. Just make the mode property mandatory. What do you think about making the devicetree property a list of two integers? Something like lltc,mode = <7 3>; which would set mode[2..0]=7 and mode[4..3]=3. To me, this is easier to setup from the datasheet than a single integer value. The other option would be to split it into two properties, but I am struggling to come up with suitable names for them -- the datasheet helpfully calls both fields "mode". Cheers, ---1920950886-711264204-1479471820=:5613--