From patchwork Mon Jun 19 13:40:43 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Leonard Crestez X-Patchwork-Id: 9795935 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 5E3D8601C8 for ; Mon, 19 Jun 2017 13:41:27 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 397A126E4A for ; Mon, 19 Jun 2017 13:41:27 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 2DC9726E75; Mon, 19 Jun 2017 13:41:27 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 120CB26E4A for ; Mon, 19 Jun 2017 13:41:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:Subject:To :From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=UNnlg8Qw87D/843c0+WMnQPx22osZFlvPLOPnl6gBak=; b=ErN9L7vMfv98Yl cDbx2UqZCuu8wOZR5ZkaAWvBVtHBnLhm6c+Joj8dOxSGvqmdcdroHhTv26/MwFWRcT9TqJEDyqMOL cR5uMOfSUr/36/dh6ihrmElDkhDWqGZtHsWJI3F05drsbY4QhUcTZZXK0EzhxpJYaJja68Y3TpNJY +neu35TmZvRzk1wqwnbBSHsV+cuE/mDYnAuJSk7qcf36zHdRpSuo949qXOGRZslk1EVdAFdDJtSLH Lr4Hxx8Fn3d9V0gVHvk+ZuMaTKGNJVuAWdL6deaOpEAoS+neb7mTnkWVVhszCiEI3BaqTVTqKBFjf u2a9uEpB0c28wRcgYhkw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1dMwvk-0003iY-MR; Mon, 19 Jun 2017 13:41:24 +0000 Received: from mail-co1nam03on0057.outbound.protection.outlook.com ([104.47.40.57] helo=NAM03-CO1-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1dMwve-0003g1-Hg for linux-arm-kernel@lists.infradead.org; Mon, 19 Jun 2017 13:41:22 +0000 Received: from CY4PR03CA0107.namprd03.prod.outlook.com (2603:10b6:910:4d::48) by DM2PR0301MB0640.namprd03.prod.outlook.com (2a01:111:e400:3c0a::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1178.14; Mon, 19 Jun 2017 13:40:56 +0000 Received: from BN1AFFO11FD044.protection.gbl (2a01:111:f400:7c10::112) by CY4PR03CA0107.outlook.office365.com (2603:10b6:910:4d::48) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1178.14 via Frontend Transport; Mon, 19 Jun 2017 13:40:55 +0000 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=nxp.com; vger.kernel.org; dkim=none (message not signed) header.d=none; vger.kernel.org; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.158.2 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.158.2; helo=az84smr01.freescale.net; Received: from az84smr01.freescale.net (192.88.158.2) by BN1AFFO11FD044.mail.protection.outlook.com (10.58.52.191) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1157.12 via Frontend Transport; Mon, 19 Jun 2017 13:40:54 +0000 Received: from fsr-ub1664-115.ea.freescale.net (fsr-ub1664-115.ea.freescale.net [10.171.73.164]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id v5JDenja012186; Mon, 19 Jun 2017 06:40:50 -0700 From: Leonard Crestez To: Shawn Guo , Srinivas Kandagatla , Zhang Rui , Eduardo Valentin , Rob Herring , Mark Rutland , =?UTF-8?q?Lothar=20Wa=C3=9Fmann?= , Fabio Estevam Subject: [PATCH] thermal: imx: interpret fsl,tempmon-data through nvmem Date: Mon, 19 Jun 2017 16:40:43 +0300 Message-ID: X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Matching-Connectors: 131423532548840139; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.158.2; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(39410400002)(39850400002)(39380400002)(39450400003)(39840400002)(39860400002)(39400400002)(2980300002)(1110001)(1109001)(339900001)(189002)(199003)(9170700003)(50466002)(5660300001)(47776003)(189998001)(6666003)(6636002)(356003)(5820100001)(54906002)(77096006)(8656002)(4326008)(6306002)(7416002)(118296001)(53936002)(105606002)(81166006)(39060400002)(498600001)(50226002)(106466001)(104016004)(85426001)(2906002)(23676002)(86362001)(8676002)(38730400002)(33646002)(305945005)(36756003)(966005)(2870700001)(8936002)(50986999)(142933001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR0301MB0640; H:az84smr01.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; MX:1; A:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD044; 1:1k718WqeNA4VjUEPWqSRo3IUXYaMuBYAF6vzhdywvZkrz7G1xQ1d5Ou8RDTA1C9CPKI1K14/mDkrJLVMFEo+IZCqyZ8MiSAHS3SC2QkC6+g1k9hPi5LEoYYasFW7q1F8L6txCc5RONQZMrg/+O0fiD1YfdAw4rDnMu5PXBYjIHA6TN8pza1qDzw2QYEMH++3FbA7YyOREYOxlOxZfENQKSexpOLIWl9sQcNdcB8XDb82TYVVBVtVJGU3Nd05tSibGu7i6w55P+LcX95ns7LD1EVnoGLYCSMI8fdRkKPvN7LOrIeGbtVBtMKrTkjVssEKdbftZCbn8Glx/FXPYObodl8JDV1ssfxItkOritK8vAOrFN7ERdvkTKXlx0eiNbGmG6ZqMv+lmrVc+jXxCF0XOcHZ0PvilIPL15CqwqkdsdLabN+0HAFh98YYLALk6XPczVGyOvdy4lJ7gpIRfN7gZslxviNQ0rJJknWfQHLf1dWKGBEpDw6T8kPA6Y297uRtE6QM1STnuye8xd8yuvqwhP3UM45da4/8D0HFwcEBkC8JhEhNRueVLraaUl7lG/P0nMS6CPTS0zmcnS5dNmWtWSQtF0SmfOK0oIg+B2Ro4tntAghHnhur4ty0F2VV/XJL X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f2e7bc28-fdf5-420c-b124-08d4b718cf19 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131430075)(201703131517081); SRVR:DM2PR0301MB0640; X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0640; 3:0Mzsq19HHqArc9mdbo/2M7vyA4PxommB7hVLIWASTina4Cs4q2nrLA1c//CZs8Bl6MiJV1vI6jURap8+GJw9SBGYflfKu5e8ETO+HD20j8rAqFU9E+WUNEaPpraThO+hY9FEFqA+ZqvNg4v1DSbmzRviYlRcOgHHPS1kdVZMqNIruu0efV6HLLuNPwIEf8gCkcunheGPgBRT1HQ6bq4pN/uPmx4aJOtDxJjXeyqWMNaX87YW/iAWShW39oiTwboOLd4XvjUto4SeqKh7Y6645jwF//AW2gkktRkVyrIJx1nJC1EVA1g7LYFepPJV1Em1W2cOHHYhEa9pgYlQKFeBoHIbDTk8rndLDdDB16XrKAs4721AWBunDgGfDixtTlpU9otk0J8YnBsabg0QF8NtnBsfjzEW3RgMaYjJ/I/D++dM9yqvSksYYAAJfO09F/gC; 25:RlMD7XLnYcJ323VMkzCrPRNJ0FWl/HX6pT9Nl2gJxxgtllK7VaKUf0Oc4ifb1qiwr+w28dJO7r7IE979vGnZLFDxrkQvtCuXieTkWgfPHGCK4h2b3+NgNE9/CwAX+LdOdKG7absSKP2waJYaEqu7fy3mFZuEqXzpCNy8NpxuixeAmNOniuMnNg5glIeE3RkD1p1jxu37RUF/7dpymaVIv6cAcNutbNH4tVeSXYVEm5M+MPUWFHmr8wUnM980agKFuNmWFZ0zNGoCl/Bu7ntx5NFY/DI+cOxCgfDY27OXEC3v/KiqFrl3TQXJRlPoD79i8w5OJbIOiYGO3vdaPy3NRenftqMeSi30XtkFVPX7AIAOfbk2BDCBAu/12UcjzAF6IK5uOSI3ZiWPLe9gH1mBDKVt+VCVzM7N2beiB7vQD1shYd+q/JeIXA9n4mJKBuq4NNSpSqSULumANNII9BjgvCCmPaKEZUp07qXyezlNWWc= X-MS-TrafficTypeDiagnostic: DM2PR0301MB0640: X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0640; 31:WuzoU+x+C5zDMFadWHLuOhhZamw0RZBi9ymywSC3CrElX8qZ8/oHvA0GMMnuUPXuPQx5JQG1VBlBhkiW+eb2uch6QhPyD2kMuDUZE1C/G90GsNOYxNNclQIqNPomSxLE2oZMhuqeQM/3L4ic5vVY+1/3Ga1fbBFhl/BBczCsbUCKb4Z37CDgV1CbQYbiAl7r/5mnKZBrquTxYPkFeqcjyoVzzIRlDmlldosKiZj8lFMXUSe5EC3yRPsFKvnSFtDMorhe0LgXReZWHJ+OGrYsdw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(264314650089876); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(601004)(2401047)(8121501046)(13016025)(5005006)(13018025)(3002001)(93006095)(93001095)(100000703101)(100105400095)(10201501046)(6055026)(6096035)(20161123559100)(201703131430075)(201703131433075)(201703131441075)(201703131448075)(201703161259150)(20161123563025)(20161123556025)(20161123561025)(20161123565025)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DM2PR0301MB0640; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DM2PR0301MB0640; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTJQUjAzMDFNQjA2NDA7NDpYRU4rNXZndEg2UXVja2FlM0JRRFY0RUNr?= =?utf-8?B?SlRyZEFuYXFJRjFvZUpRTkdHVzhMRDFYZDBZYmx1ZmJXdVNXM25jOVVPSWR3?= =?utf-8?B?SnJmRmdyWmkvLzduUlNvNHBaT3hJVmc1bk9KN083K1hnRmxKS01mM2s5Qkxw?= =?utf-8?B?WHVFU0ZlZTV5V3J0QzNQYzBkSHdKTmlrU1NwYitBZU9vcEdyTUE0TFZoTVdD?= =?utf-8?B?M0p5RWpMMGtGQ0hKS0xoYm0xb214bksyOTk4WHVMVlNFUXJobzJqRnVvVW51?= =?utf-8?B?c3dPWklFcjlvTFNtUWlqTDFUcytKd3lRcU9QNGxVcUZCa0ZQZzRqUC9hMm5k?= =?utf-8?B?ZkFNcm40V1ZjY041dW1FRmRKbGl2M0svNDZJcW0vV3VpSXh0UmQ3VXZTS3Ro?= =?utf-8?B?WVBJeThjNkNpOEZ5T0VScFAxUmRzSlIwRkRvY24xRmY5SVNBSTJiVHBsVnpq?= =?utf-8?B?V2wvOVl6NDFvVUc5YllDNGlYWDBIejZJS1hqRVQ2d3pKK2lQNzk2RDdlVWlK?= =?utf-8?B?SmZWaDg3OWpFL0pKb2xrbzBNZTgrd0VyMWc3TDBEaG9ONDRXUG1DSFJlNnAr?= =?utf-8?B?ZkRwNk5qWGFTcDRGU2trUlduT05CdTI3SHd1VzR5TjhhcHpuL0t2V09VZEIy?= =?utf-8?B?alZ4UktxNG9YRldieC9odzhLY1V1TkUvT2tNL3JuM1NrR25ERXJMT3ZaSktC?= =?utf-8?B?Y1QwUUtCYkpuT0FpSW9venFqelAyMkpoY0ZVQ2l0c1o0RVh3K01QMW9aTTB2?= =?utf-8?B?eVJiK2NGWlhkOXJlZERDb3JuZFdYRVZTWHB0SG1oRW1ON0NjaE9FNW1ZajZN?= =?utf-8?B?VUJzcEhoK3JvaG9qNVNWY2RaVjFFeitBclBCVkMxYnFja0JUMXNuMzlLNmJq?= =?utf-8?B?dkVCL2g0dUpVUk4wWStOdnl6bmdHaGpKNStSV3gweGF2dmdhSktOSDE1SlFu?= =?utf-8?B?WE03clcwTjdRY1NueEtZRElScVZBYzdUNnd1OVVXT2h0UVVyN3ZWdW1WMGl4?= =?utf-8?B?R29UTS9PVzdiRjRERUp1VkY2U3JwWHE0Q3I4aWJaOEttVXhPSXVUa1NIY0ZP?= =?utf-8?B?UmtFS054WGdWZnIyT1htaW1FcnFqMXVpNUM0SW4wSmxRUXlZMTZKZTVrVGVn?= =?utf-8?B?Q0hHZStWak1ENk94N1p5MElyVlMvTGNXS0p1dFIxcXc1VnIzYmEyamZOSFY5?= =?utf-8?B?TWs0UTBWTVVlTWQyT3drZGRqOVdncEd3YitQUXpBU0Zua2NJZzlieWtwa3BH?= =?utf-8?B?SkpqR1c4M1pBTEZZajZLUmRyanl5bXVxMjZiL2RtNXBRaytFWitnSlo5RDZJ?= =?utf-8?B?aDVuSGJodkp1KzhQZjdOUTBzWWh5TnpwbGJnR2puelUvWHhySFEwekZ4V3pX?= =?utf-8?B?WFdZbVNsY0FvQ1RCV01VN3l4Wm1ESGRDVjloUFF3UWFISjRaVHQ2YktPSlJL?= =?utf-8?B?citUeDFac2FZTit3UUp5ZHlPZHpsbmxqQUk1OFNUTWN3SkR3c1RuNU1Rdldw?= =?utf-8?B?bzJhMXpLa2paYkZzRTg2Q2JGL1ZHcVpNQVphbXVudnNTZTAzNHYxcFhCeHdD?= =?utf-8?B?VHBZVGFObjNnMHBEaFROcUdwNmdlNmdZZVRvWktyTUxvdmdxT2RUMDI2N3N4?= =?utf-8?B?Ui9yNDlWeWZxa0Q0Tng2WjNXQklaalo4NHBGTVJNb1FIV3hBZ0VhK0JCVVRh?= =?utf-8?B?bG5CV3RQcHJ6SUpPOU5ReTBQWDhtK2NYcVZacFBpbmkyZ0duVFh1dWJLdEJD?= =?utf-8?B?aTdYeGp0cGVqeUhqWE4zSEE9PQ==?= X-Forefront-PRVS: 0343AC1D30 X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTJQUjAzMDFNQjA2NDA7MjM6NXA4WTJOeExYRUx1bEh1K25SL3ZYRUk0?= =?utf-8?B?YnJzYVFXaGN3MlhiS1F3UnY3TDduZ242ZDFYcWYrbTdFdUdPRXg3VXBGem9E?= =?utf-8?B?dkN4VzQ4WXMxNFlvQ1ZtYnJGcUNPSitxWXNsVUZ6WFNJbUwzeEVQcDRkWTJZ?= =?utf-8?B?Um1MN1Jza25SN2dnVzNlV3h3U0h6UmRzUWVzdW5JVFRXMzljVUNnZWxVS240?= =?utf-8?B?a2hvTGZ1VGlkdnVYbHc5NG5ZNFhzWXE5OGZ2VE1HZ0NtcEc0TVVSZ1E0Y0RP?= =?utf-8?B?YzczZW55amN5Z1lPS3V6eVo1emVaOFlWNXRLcEhlVFFtR3RnUWtMNi9JN1Nq?= =?utf-8?B?ZHpnZ0RmRHV3UU5ibnVrOEVxSFdnaG5hVnYrK3lBazhndVlqekg5bCtzV0FY?= =?utf-8?B?UnhjU3FIT0hMcmIwaGg0aDdUczdENURMb3orYU9kdjVCTG9VdUcvaEFKVUUw?= =?utf-8?B?NzY5eTFSZVc5MEZSbjhKUThLQnhTZEtYRUhMcXNDY0FGMGVOTW1vdEp3WkE2?= =?utf-8?B?a2lBQ2d4NkVGOGFjS1FRR2g5QWhsT2JwUmhkUWkwMmpEamgxd0hNaHpiSjRD?= =?utf-8?B?L2ZkRUtJYmd2N3dWcjFTRDNLdlBER0VTT3U0V3pOT1FSUTZMc0pyaUZ0aG82?= =?utf-8?B?WVFsM2h0NzNOY3h6TmlTWGRrZzVsUkczNWVvcDN6MXpVM2pxcDU4SU44UHRN?= =?utf-8?B?U0hEYk0rUUpJTEdFR1ZRNW12TDRNTTJzOWVEVTYyTVZDbVNmRmRxa2JONnVx?= =?utf-8?B?R3FLMWhzTVROR3BOZ3hiU1pHLzB6emdGNTlXQ1VjTmx4dVZWdnRTVWdsLzVj?= =?utf-8?B?VWVycnVtSnd3WlhEUkNCRHhKRXR2WlZVbXhnTm82ditWY2gzNFNSL3M3Zktr?= =?utf-8?B?c3B6Q0Q2UlJpR2tmUFdCQ1BaL3pRbXFkOGxwQ1JaMXV3UldIWS8yM0lzbGE4?= =?utf-8?B?T2NIMXFVVHhXYW5RUlVZNHVUejlqdFJiTjdhc1l6ampjSTF2aWJFQWZuSTBU?= =?utf-8?B?bjNLUUw4QVBQdXZaaUkyb1J6K01JWWE2c0RVTnpRYWsxaUZ3c2dBd3J5bU9u?= =?utf-8?B?eTBlbWJtK3N1TGo1amE0Y2liR0d1QXNyaWEyTDRZODhYVG80emp5R1JuSXZ1?= =?utf-8?B?YXpwSEdlRjVqR2t4ZjEwRzdmM001RlN2SGFlcGZiOUR0clYwblBtYmJ4Z3dN?= =?utf-8?B?TDdRMTlwcWRvK3RSbUJSa0dxeWlkSThQN2gxTy8rK0JQaTFMZU01eWlEbHlD?= =?utf-8?B?UzI2N0ZCYmRuY0FxajhuejNqbjVKOTZLTkptVTg1SFNoSWxiUEczQWp3aFhu?= =?utf-8?B?M1NHRnBHbkRJaFN5Smw2ak85Wm5RbzlQTjBHU2h6QlNCRHdZaDB4SnZzcWRE?= =?utf-8?B?ZDl5dllmdjhLV3ptL2ZsVFd1cUcrWExwQXJTSklQRHNCZFlieXp0SXcvNTZF?= =?utf-8?B?L3oxbHlOWGljcHFRWTl4c0d5VkhqTTN5UktZeUc1RGgxaVVoa0YyWlFwUUJJ?= =?utf-8?B?Q3J2ZWM2TkpNbi80UytQNmh1QUxFeXlOaTlFUENlOEY4c0hIdzkzVC9LcnZp?= =?utf-8?B?cTIzWmZYdWhJRm1BelZuaVNTWUkzdTFBaHptQTI1M3lHWEdWMmZ5WHI2N1N1?= =?utf-8?B?VFpSZWN6ZDNOaU5rWk1Vdm5Vc3ZIZE1iVHNpSEpINXc3K2JQRFZSOWtEeGJp?= =?utf-8?B?OHdVU1BhdGhZbU55dC9jZE8zaytnalpwTEhjTDNJaGRMRkNDZzVLNTU1WVJJ?= =?utf-8?B?UzRhZnA5eHJYYm8ydzF3ZnV3PT0=?= X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTJQUjAzMDFNQjA2NDA7Njo4djVzUnQ0VHBIVVQwM2JLamlVR0hqMnBR?= =?utf-8?B?OXVXRm90SWk0QmZWYmJURzF2cU5STkRnaE1nVTJ3YkV0N3VTcWpldytHYUsr?= =?utf-8?B?U1lIQXNIcVNtK2hqbXc4eWJ2WDFYdjRES1NjRTU0elgydnZNaVc0WUNHV2hM?= =?utf-8?B?aEFqUEgwYWlvU3JjT1BEWW03RVdQWG9ZQzFlSGhJdFJoalN5UG9FK2tyOVlo?= =?utf-8?B?OUsrYmM2LzdVbGlRY1MrYm5DWkErOWpGQzYxMCtTbXVTaWVtS21JMkkxMk5F?= =?utf-8?B?S1BBQy8zR2xrKyt4dkMyVkNhSC9FKzMzZkozZ3dpVXlvTnFKeDNQaXFqWURS?= =?utf-8?B?ZTA1Mk1kR2Qzd0FyWC9jencrZ08yMkhra1lFK0thVGVyK25vaVpDRnBBclJX?= =?utf-8?B?Q3pweUpRTkdiOXk4TW0vcVozZUNTcVJDdnQ2NEs1M0UxVW5Da2Q0N0xlUHEy?= =?utf-8?B?YnNOcFlTVUI1NUkzUHpXK3RMQzFpTm1lLzFsYUo3RjA4ajVtYmJYYWVBYlZO?= =?utf-8?B?YnlUTVBkWDVMZHRkWDZLMkx6YkptQldwNUx3UVhqZHVCZWo0K1N2OEQvZTBa?= =?utf-8?B?YUpDejBUWW1jRjVneXQwWGl6VEN4VHVLN29hMU1xNFlVNWd2b0FLVTRmNlFI?= =?utf-8?B?Q0FtWXpYdnZibUg4Wm5hSE9jTFk0VDN4Uml6SXljZjhkbXVGR0pRVlM2Y0ta?= =?utf-8?B?YnpiUEpkMU9SalQ3K1dSUS9CSm5LK3E3V1RjTVR5dGVrMVVYTHBGanluMFpL?= =?utf-8?B?aWc4OS9sWGdmSVBaZzlyb3FSc3NUV0pEODFxWEQ0S2ljNjVqSzRWbi9uOEJO?= =?utf-8?B?Vms2YkFCUTNHbFhMcVE3dVVDVlViUlhGcTI5OWxRNWltQUxUdmNQTklwTWY4?= =?utf-8?B?clZMUjVaVCtKdGpLeEUyNVNTSjNPeU5DbGNPVDdkRTl5TlhjSFJHS3RBMTFJ?= =?utf-8?B?N2VQKy9QMDltZDBjeGJsQmVtYkNrUTN1TnVZd3VlZXpZbjFTZEZBd0lFamFz?= =?utf-8?B?M0Z3T3VQTTRMWUloSmF5dHVYWlBOVVIzbzB2Wi80bkpQMTdscXBjck5CRGhz?= =?utf-8?B?K1VLMzNtb2licTR2S1ZBejFWc2NFbGZNQjBVSFc4S3lvZWp4OVBoNDdHNVE3?= =?utf-8?B?K1pCbDU3VHV4ckdzc2VNdlVkMnR4cGlHb0F2bWh0cDhaNmtVcWMvNHFhSTZG?= =?utf-8?B?bFVBcHlxZUdVNmN0YVNxSythRFd3Rkc0aWNTNWZDMVVQWlZUL2tNRC81Wko5?= =?utf-8?B?Y2Vta1NuenZjUnNSek96dHZFQ3EzYmxBOEJwdjJYN010U0xtdGF4R2NaMWJI?= =?utf-8?Q?USDltEfD5dd+k/UmjsNxzEQfyNjnBIPFw=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0640; 5:X+keo+pSBUgn2/TD4laO6hKcTpmN4embYb9DpNBcrKeISOAqXoBKqhYeRQdPbcVPGp3FinvQIu3OPwNtfpvbrOyc2Bly3v1TOXt8ju9UXb5RQWIWVKwcalJ8/DszJvk7QlBc5tlW5l+CwZLBX/C4yDNALlkWZT3xsH8Eqi3PDO6rKfUuIQZOpxRgzxSjO93rcCdJWPVU1/ss8r3SH3TtlkhYgaJnhvO/+aH9Nnm/5ZJcgZVjMVukvyFIkuQtD2zDB02LnOPaDdI1x8/+ikqNoHs0vJv+JSSof4hiryht9ew1lGdZPgLTi5jlpwKtozAFMjjcgnepQ6P9QA53aSGqSQGqXy3OA4tvn5cFFugOHtiNqcgZzHLSKsQ8cs4N+1lSXO//ZIka9Tqa37oym1dOZFpn9zFlXQ+tv6E1smSfcuylvBoFonEan3d7CHAmO3hQ0WeQ4DRzYZ45TL5MRzqSyd0LmfPX2ATAb42RQetS3EWitAG/BE9dXvgvBQXCagqwInY7YffSURWCjxnaLmNqRQ==; 24:oY9tXRkdtY8JczTF0MrzFM4gUWtPbuXu9Tpm6v3xD9tNPLQ0c/HM7clt7zyOgHdt6PiEWqAKUKe2deTmSqo8NFCqSZM/Au3Kb1b+cnfXnQk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB0640; 7:darh6tbwNaNIHDAcPAJxJnuOsMXjqDwJF6Htsyd8Mum8bZcaxXZlHZhLRdLZ3Bj8Jlx2OqMPOxxJAb1AQcgd0YGhh1Aw/3godhxMsOcrS8CApUyopkpgpa6SoDQfJEwkXkY1ZRYppyFp4jPw3ACD5UpoS2XgM1ndZ4WqgIuPfcZyK5k7B3PaVoaJ5Nodw8FPTgRIQ3gEpwRAy+XqNl60hqvYx2PdgEPM5jwAOmv2bM3Zh4NxSWUm+4RDkcT+uY+u2nnXdwWvOIumAzh5qaSUKRyp892WwoAC5nHPC4BRp+xDNmGG3sH4Fl/WD/s4XFN2HVOev6aoBcshpkwMutaULfnLXKGm/Gvfi2CvRNkI+P76Bth3UHMDavKgE9t6C/BEVr1lLfAAnGaOByhi9JJotQ1kl6Gzfgyr04WFHrhWIgSQsYlbm1y2wfVsOB4axa9H7yBSvLzSm98OXmhSq9bwA1czoHH6TVxKBcmVFcxvJ81RoOVI01oXVZDF2ebK/qJj6HHkpLjuL4Z3xPrcKc6u9XEIAP53v9DGRpTLAb7xSqwhq6hMktua9cKR1dFGFyqrkvi73eRSF4Ib0KdkOvcJ736P6PdDnsCgQbdHPQ3XVkWcgw2a5XJbJQwVOjv9mOeLSmLs9Rolm8QaWoIc6ezwOE9Ni/UdK7mi8/dZ3mMy3JiLvsPh0yqV3dVIq8xH1+bYDIspsf8oDgk4uxPseNPa1H1EQGIDuQZYfx5v3avjyRsSMS3bNwItFWQ51n5SYuS9uQqZLja16Vbe4rRijzWPm9bsIEvv4Ibk9GgkmYrWsYE= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jun 2017 13:40:54.5252 (UTC) X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.158.2]; Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM2PR0301MB0640 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170619_064118_731197_16AE25BC X-CRM114-Status: UNSURE ( 5.75 ) X-CRM114-Notice: Please train this message. X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Dong Aisheng , devicetree@vger.kernel.org, Bai Ping , Anson Huang , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, Octavian Purdila , linux-arm-kernel@lists.infradead.org Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP On imx6sx accessing the ocotp memory area directly is wrong because the ocotp clock needs to be enabled first. Fix this by reinterpreting the fsl,tempmon-data phandle as a reference to a nvmem_device and doing all the read through that. This clock requirement does not apply to older imx6qdl chips because there the ocotp access clock (clk_ipg_s) is always enabled. This is visible by comparing the "System Clocks, Gating, and Override" tables (OCOTP rows) in the 6DQ and 6SX manuals: http://www.nxp.com/assets/documents/data/en/reference-manuals/IMX6SXRM.pdf http://www.nxp.com/assets/documents/data/en/reference-manuals/IMX6DQRM.pdf This happens to work right now without this patch because the ocotp clock might be enabled for some other reason. In particular it might be enabled from the bootloader and it only gets disabled late during boot in clk_disable_unused, after imx-thermal has completed probing. If imx-thermal is compiled as a module then the system can hang on probe. This makes IMX_THERMAL depend on NVMEM_IMX_OCOTP but that driver seems be already available for all chips that contain tempmon so it's acceptable. Reported-by: Lothar Waßmann Signed-off-by: Leonard Crestez --- This was reported as a comment to a patch adding tempmon support for imx6ul (which is very similar to imx6sx). Since it already affects a supported chip this patch is sent as a separate bugfix. Link: https://lkml.org/lkml/2017/6/9/578 There are various other ways to fix this problem. The main advantage of this solution is that it does not add a new binding but rather preserves compatibility with old DTBs. It also aligns with the idea that devicetree describes hardware relationships rather than a specific linux implementation. An alternative would have been to add a nvmem-cells binding to imx-thermal and use that if available instead of fsl,tempmon-data. It might not be good to sidestep the official nvmem bindings, the devicetree people were added so that they have an opportunity to object. In theory the "thermal grade" is a two-bit quantity and might be a candidate for using a cell with a "bits" binding. However this causes the nvmem core to issue reads of length and alignment less than 4 to the imx-ocotp driver so additional fixes might be required. drivers/nvmem/core.c | 15 ++++++++++++ drivers/thermal/Kconfig | 2 +- drivers/thermal/imx_thermal.c | 53 ++++++++++++++++++++++++++---------------- include/linux/nvmem-consumer.h | 6 +++++ 4 files changed, 55 insertions(+), 21 deletions(-) diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c index 8c830a8..66502ca 100644 --- a/drivers/nvmem/core.c +++ b/drivers/nvmem/core.c @@ -630,6 +630,21 @@ struct nvmem_device *of_nvmem_device_get(struct device_node *np, const char *id) return __nvmem_device_get(nvmem_np, NULL, NULL); } EXPORT_SYMBOL_GPL(of_nvmem_device_get); + +/** + * of_nvmem_device_phandle_get() - Get nvmem device from a given phandle + * + * @nvmem_np: Device tree node for the nvmem device + * + * Return: ERR_PTR() on error or a valid pointer to a struct nvmem_device + * on success. + */ +struct nvmem_device *of_nvmem_device_phandle_get(struct device_node *nvmem_np) +{ + + return __nvmem_device_get(nvmem_np, NULL, NULL); +} +EXPORT_SYMBOL_GPL(of_nvmem_device_phandle_get); #endif /** diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig index b5b5fac..a427936 100644 --- a/drivers/thermal/Kconfig +++ b/drivers/thermal/Kconfig @@ -206,7 +206,7 @@ config HISI_THERMAL config IMX_THERMAL tristate "Temperature sensor driver for Freescale i.MX SoCs" depends on (ARCH_MXC && CPU_THERMAL) || COMPILE_TEST - depends on MFD_SYSCON + depends on NVMEM_IMX_OCOTP depends on OF help Support for Temperature Monitor (TEMPMON) found on Freescale i.MX SoCs. diff --git a/drivers/thermal/imx_thermal.c b/drivers/thermal/imx_thermal.c index fb648a4..1cf35bd 100644 --- a/drivers/thermal/imx_thermal.c +++ b/drivers/thermal/imx_thermal.c @@ -24,6 +24,7 @@ #include #include #include +#include #define REG_SET 0x4 #define REG_CLR 0x8 @@ -55,8 +56,8 @@ #define TEMPSENSE2_PANIC_VALUE_SHIFT 16 #define TEMPSENSE2_PANIC_VALUE_MASK 0xfff0000 -#define OCOTP_MEM0 0x0480 -#define OCOTP_ANA1 0x04e0 +#define OCOTP_MEM0_OFFSET 32 +#define OCOTP_ANA1_OFFSET 56 /* The driver supports 1 passive trip point and 1 critical trip point */ enum imx_thermal_trip { @@ -347,29 +348,39 @@ static struct thermal_zone_device_ops imx_tz_ops = { static int imx_get_sensor_data(struct platform_device *pdev) { struct imx_thermal_data *data = platform_get_drvdata(pdev); - struct regmap *map; + struct device_node *ocotp_np; + struct nvmem_device *ocotp; int t1, n1; int ret; u32 val; u64 temp64; - map = syscon_regmap_lookup_by_phandle(pdev->dev.of_node, - "fsl,tempmon-data"); - if (IS_ERR(map)) { - ret = PTR_ERR(map); - dev_err(&pdev->dev, "failed to get sensor regmap: %d\n", ret); + ocotp_np = of_parse_phandle(pdev->dev.of_node, "fsl,tempmon-data", 0); + if (IS_ERR(ocotp_np)) { + ret = PTR_ERR(ocotp_np); + dev_err(&pdev->dev, "failed to parse fsl,tempmon-data phandle: %d\n", ret); + return ret; + } + ocotp = of_nvmem_device_phandle_get(ocotp_np); + of_node_put(ocotp_np); + if (IS_ERR(ocotp)) { + ret = PTR_ERR(ocotp); + if (ret != -EPROBE_DEFER) + dev_err(&pdev->dev, "failed to get fsl,tempmon-data nvmem device: %d\n", ret); return ret; } - ret = regmap_read(map, OCOTP_ANA1, &val); - if (ret) { + ret = nvmem_device_read(ocotp, OCOTP_ANA1_OFFSET, sizeof(val), &val); + if (ret != sizeof(val)) { dev_err(&pdev->dev, "failed to read sensor data: %d\n", ret); - return ret; + ret = -EIO; + goto out; } if (val == 0 || val == ~0) { dev_err(&pdev->dev, "invalid sensor calibration data\n"); - return -EINVAL; + ret = -EINVAL; + goto out; } /* @@ -404,10 +415,11 @@ static int imx_get_sensor_data(struct platform_device *pdev) data->c2 = n1 * data->c1 + 1000 * t1; /* use OTP for thermal grade */ - ret = regmap_read(map, OCOTP_MEM0, &val); - if (ret) { - dev_err(&pdev->dev, "failed to read temp grade: %d\n", ret); - return ret; + ret = nvmem_device_read(ocotp, OCOTP_MEM0_OFFSET, sizeof(val), &val); + if (ret != sizeof(val)) { + dev_err(&pdev->dev, "failed to read sensor data: %d\n", ret); + ret = -EIO; + goto out; } /* The maximum die temp is specified by the Temperature Grade */ @@ -437,7 +449,10 @@ static int imx_get_sensor_data(struct platform_device *pdev) data->temp_critical = data->temp_max - (1000 * 5); data->temp_passive = data->temp_max - (1000 * 10); - return 0; + ret = 0; +out: + nvmem_device_put(ocotp); + return ret; } static irqreturn_t imx_thermal_alarm_irq(int irq, void *dev) @@ -513,10 +528,8 @@ static int imx_thermal_probe(struct platform_device *pdev) platform_set_drvdata(pdev, data); ret = imx_get_sensor_data(pdev); - if (ret) { - dev_err(&pdev->dev, "failed to get sensor data\n"); + if (ret) return ret; - } /* Make sure sensor is in known good state for measurements */ regmap_write(map, TEMPSENSE0 + REG_CLR, TEMPSENSE0_POWER_DOWN); diff --git a/include/linux/nvmem-consumer.h b/include/linux/nvmem-consumer.h index c2256d7..3606167 100644 --- a/include/linux/nvmem-consumer.h +++ b/include/linux/nvmem-consumer.h @@ -140,6 +140,7 @@ struct nvmem_cell *of_nvmem_cell_get(struct device_node *np, const char *name); struct nvmem_device *of_nvmem_device_get(struct device_node *np, const char *name); +struct nvmem_device *of_nvmem_device_phandle_get(struct device_node *nvmem_np); #else static inline struct nvmem_cell *of_nvmem_cell_get(struct device_node *np, const char *name) @@ -152,6 +153,11 @@ static inline struct nvmem_device *of_nvmem_device_get(struct device_node *np, { return ERR_PTR(-ENOSYS); } + +static inline struct nvmem_device *of_nvmem_device_phandle_get(struct device_node *nvmem_np) +{ + return ERR_PTR(-ENOSYS); +} #endif /* CONFIG_NVMEM && CONFIG_OF */ #endif /* ifndef _LINUX_NVMEM_CONSUMER_H */