From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754460AbdGNOLg (ORCPT ); Fri, 14 Jul 2017 10:11:36 -0400 Received: from mail-sn1nam01on0049.outbound.protection.outlook.com ([104.47.32.49]:11840 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753968AbdGNOLb (ORCPT ); Fri, 14 Jul 2017 10:11:31 -0400 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; From: Leonard Crestez To: Srinivas Kandagatla , Shawn Guo , Rob Herring , Zhang Rui , Eduardo Valentin , Mark Rutland , =?UTF-8?q?Lothar=20Wa=C3=9Fmann?= CC: Dong Aisheng , Bai Ping , Anson Huang , Octavian Purdila , Fabio Estevam , , , Subject: [PATCH v2 2/5] nvmem: core: Add nvmem_cell_read_u32 Date: Fri, 14 Jul 2017 17:11:07 +0300 Message-ID: X-Mailer: git-send-email 2.7.4 In-Reply-To: References: X-EOPAttributedMessage: 0 X-Matching-Connectors: 131445150890771528;(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)(39400400002)(39410400002)(39380400002)(39850400002)(39450400003)(39860400002)(39840400002)(2980300002)(1109001)(1110001)(339900001)(30594003)(199003)(189002)(9170700003)(50986999)(39060400002)(50466002)(8676002)(48376002)(81166006)(77096006)(54906002)(2906002)(118296001)(305945005)(8656002)(76176999)(50226002)(8936002)(86362001)(36756003)(104016004)(626005)(189998001)(4326008)(53936002)(5660300001)(68736007)(356003)(38730400002)(2950100002)(5003940100001)(85426001)(6666003)(105606002)(106466001)(7416002)(33646002)(498600001)(47776003)(15760500002);DIR:OUT;SFP:1101;SCL:1;SRVR:BY2PR0301MB0598;H:az84smr01.freescale.net;FPR:;SPF:Fail;MLV:ovrnspm;A:1;MX:1;PTR:InfoDomainNonexistent;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BN1AFFO11FD029;1:OvEMKY5WjoLaK1XeVBNbsWw1wKzLfAt1B2fpYbXNJ?= =?us-ascii?Q?yBecqHjyLuypVsEcugYuVXJ1nYkbfYbXIAlcbjMuKotZ2X1eRlvd6rsdBx85?= =?us-ascii?Q?vi7+u0FVgDGW+hsFNwS759vTky9l+cUqW+ZTORugXCRyvwW6Ehymekt9KM4Y?= =?us-ascii?Q?ow/NtJplKmbE9uOzc6Jp47CHkqBwZ9a3h6emTxDylEH/l6QvOxkscLQkHQXc?= =?us-ascii?Q?lkY3qX4nkx7383kfXoNdP+n57q3ozmg7evacAqzahku8KM7wWwOmLA+l6sfF?= =?us-ascii?Q?pX4QgS5QEmxtAjoM6+KTOldT5UVsed2jdTPWaqOJlp2y/BuwO2zCJruDFQbF?= =?us-ascii?Q?ydl9gKB4L4/310HoEQfe8tF+Zh9acIy20JTBbiCDffKk9UW7aTMVhIv/P+4j?= =?us-ascii?Q?DQnc1L0aR5IViVDaUJpgi4sOepEJ6/r8zWCUTwfGsD7qLaNHz0kaMLJsEu6y?= =?us-ascii?Q?0w9CA60GcrtOH83A8zPETTO31vaMat/tWgQb2NDZTVHDfNb5ydZ7K+FeW+38?= =?us-ascii?Q?qfVLdEwLyVLTi5B9dWOgKsvKMIyGoJ0lAsu3paPdxKk0KSHviWydRi0inMHT?= =?us-ascii?Q?5YsQM2g3JDZLLE30KDHAFlbVUAPT6Tu+hCGcwiWT0BwUhYbZM1dAYmXFOG7A?= =?us-ascii?Q?mno91hxKaEelWTAtdvj3RPihYafnOmq/kugcxWDgXVTD59cIqBFSiQKv6DA2?= =?us-ascii?Q?uPM48l7HVA2BvnZSr2VdMb9DyVkM9a0MANzRA+XQXI1HDoQj5nAeQwt4JL/t?= =?us-ascii?Q?Bb+qOuiA93aV1d+KE1LmHa6wRYMbB2pWqaLuckO5hpQtzYhsZLMF22bhzwYq?= =?us-ascii?Q?NP3W0Qiyfc6+GgrWI09EuugU90JC4akvQ04LeB8+JihoWo/rbI40QgSwPVBH?= =?us-ascii?Q?imumMk5XSLze67zUxDQ6ReQ+nQfOxt5nDumltrfrDOb7/pt+nhFsEoC/TLaD?= =?us-ascii?Q?+KvZASisxQvEMLeo3I76KKmPlisR+RhT19wGkuSFQ=3D=3D?= MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2690cac3-a4db-4148-c448-08d4cac238c1 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(2017052603031)(201703131430075)(201703131517081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:BY2PR0301MB0598; X-Microsoft-Exchange-Diagnostics: 1;BY2PR0301MB0598;3:fnFhBKYpnRZB8aJswz3WvUhlNic8nMFZVWlaW1KRA7sWmkkYrjfhhhXE3Nn2/8UeNl4Z0muRQT9BcBxVZ3xLfo7p9nDMFg2R828lS4zIWGwf6sojYQF502W3/+Dqe7xTVeffX0ZSdVz8ByCqyh0ZO1jq4FEaD/xQ7BKqApaxEihRfldxCY03+4j434fRAuWHMr8U20Gab3BaQSJ8Rf3grk3yrSBrLBXgITGoZv4hoJHmls9xcDfoOVb+tDl9cbniLo7lFPw+C76kNB3LX07Cn2jKvevhxWBSg3F6zdDXBcI2+on84RPYlIV6yxTwlHXEZjVI5rei72+ejyJ9T1aFjK0p1dnEFL9fI281/uK1CRFOFGBt3AnTqoQpD53Iws+d3lCFLmBDVlL1wMIIZSuaIelaTggzAzJ/yaer1EZtCBIXmBzi5bPDYs+MxZrukCDx66E4DcAcU0Fs3V/gATLVo6rhqJiJTyEmu4hFg9bKeu7BtcSpyel6QlSBz7ClXtf6gHE6FhPnzRv7uAbg7i1dtO7Hw2TztmwcSRJMH/7m+q6c1q0NKF8d0PsQhKAW75W6rTqazKV8JRLAOJeLHVIDavHJQUiQZJ9a/yFLWGeJCT2tFbPloG5JViJ8tCijsKTNBkUt4S4SXTxZal2PXnBsm0CzyNCNrZ7mYA822+5zFSPKR1cYaC8SgR9IInmEmfsZxf8oSxs/+bqHl1sINxJYbgzWtQtsnMDHs6loGatXEdCA/pnyS1L5A/0yoQu8BMWT+gj6JiRMvnnRy7SMNd+KFVKouCT+1coZMmCYzv8lfnoV42pLbVe8+m5/DiaYYDxRX2HbRTNAiZVCssdxlP2wdWJoqdX8/V18Oxj4BfethCM143kjYqWsMHyyc7tnsAt7 X-MS-TrafficTypeDiagnostic: BY2PR0301MB0598: X-Microsoft-Exchange-Diagnostics: 1;BY2PR0301MB0598;25:Ajk/GcAVEcsMPs9xYwVwfCMNB6ELjCp2u+RwHSHVDkRb4O46TchCGSmbGqRgrJ6JeuRbl/GDruYWDQR+Ni+ix7OL4NwzkwSdwUFrYtucTKlgPAvWDfzeR71241qzY7jzUSPA4bcn+HjouOrJrovvSfuHMGKJl/65tOK0Cjs56QRpF7iXDbqqwHm5PYMvzGjHglF4QyN+dYFwQaNuNaLLNb/p5T5T+9NlESk1dD+FQcK7l+q57116KVpPAFgXXb86qea3BXTiGbhU9KaA97qkEpFsssFBbLeoR5IROKUPGxh/1mjvk4wMc1IGChNGWX4rq31BjjbDFo0TSGSfaBVMtFTqlZKvSz8pY9pD3XGIaPQlbuiLJZo8XXj+n1mlSXbQ9h8NHKMJYo8yauMlqJ64WNplfGAFufT1yv6Fh2J0Z7z7o6QYzIsiHGOk1bD3PTdfYlE6d8UY8rpSmrEH/yFfZb8oQvJwNd4pZaqqXPo+wT4gJrliVuv3WDh6tgtWfKDtz9Xrlm5NRAdVgo8jEMeORXW+vjJn41qlr5u/bofDHDLLZ8yDBueQCJ8TA9097s4jcGBlvx+GX/C95KMLr92knFK8q3eovK989cdoDS0RvZ0vfmKy2cGd7Uk2Ux/3bfOwNf+TKxU4Rsz8ELDs+ZOxaGlDRuU0UQLg51IqZ4BxucUVKDmUd0BfECjM3XRdTKwpBVx1La+/Cqw8+r2vnrUC/ZwYmA0WD1g7vSvJwa5gro06IVbhzFPAAvhiQw1FcMznQqD8aXIz0ITEdNNBKz3x4DFMzWtsfvzDvS9x6zRzbsY/srgkamb9Oo4FG1mzKyr11YuGhHt6ghn6e46dUXSGcDEEvSDqDc2TST7VCI62PPy91BiFu3EJq8ATwr9bqTKpwyXHEGiOnazJfpZ5emZCXfi+rp5MKRa+wjayeiI5z44= X-Microsoft-Exchange-Diagnostics: 1;BY2PR0301MB0598;31:ODVBbC8+DVILMHBc/uZvBU1BotrVpExt/RcZ7zAcAAdZIzwovmtjeMYpcBTgcOR7y/+01uJT1p993qIIg30sCb5AThr90fz522o23SAX15olio5eI2uZYdHq1Se4tjEUMSEHZ78RnfCslchiXiTy74ijF8ekgM27jKDaT0MnqQvWxe7ZIDzLOYNnFfae7JThNU62SLiAVZ1WPCWnai5c1Ma281NJAIHDw9/0vr7juZzFl4z9OxzItPBKHMWQ164bdDCbmVvmxrWO8P/wZKlkpb3tn/YPTjdSr1iy8YWQ7hOMpVqs7UZ8w7qK/luI+E67NhmmF8v+GMFFSsRkUG/6p1hgdnyLzw5+ivBQH+V+6Pxh8jACN1cOtb2vRMFOCKhPTM9Pr8NcrjA3COk37d4oacp6OPwYF1H3o1G2/Qbue5+DuLS2mfQnbGz2vb7SJYFQOlojlVuGM2eP1kQsQiv4/pqdg4Xyd+Ih+alqsVLV+YzdWCtW6kWJzHXFEFVQU510KxuUdyX9zaLXLoo1x4UnF3fQe18OOYtCCJ0w0iSIAX9g5vUE+Sl1NBabD+hBrymrDT6ggBH7f2+US0LePj+6n3xbcA13+sn+Hioa3amj72F9m1IqVH0ujOrMWkN4TtQFPm/M2M9JDbA5u5eH6ashe81GYCGySmRWAh6WZ0JxQSp+CGjyV9TCCrrJqrilsTihOpoCMpQJUe4//017/8itvg== X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(185117386973197); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(601004)(2401047)(5005006)(13016025)(8121501046)(13018025)(2017060910075)(10201501046)(93006095)(93001095)(100000703101)(100105400095)(3002001)(6055026)(6096035)(201703131430075)(201703131433075)(201703131441075)(201703131448075)(201703161259150)(20161123561025)(20161123565025)(20161123556025)(20161123563025)(20161123559100)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:BY2PR0301MB0598;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:BY2PR0301MB0598; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BY2PR0301MB0598;4:+sueie55a6W5hihWooFfk/2/u67GZeNmJqiaos30?= =?us-ascii?Q?bLiujnFXFJt2mn/MfyrR2EQEIZ+PYBfW0DXqDWVcOHv/ZXFvDXKIeZYHul3Q?= =?us-ascii?Q?uBROoB/EOol96lG7O5ygA0VqLj4VNHIr95Mgo1bRM5wTw8PPH4L5AA+CZoYX?= =?us-ascii?Q?c+T3Sc+4kS/xrI7G9O4VtsToR1fmwo1yGWOEQGRwFEoA6XVe4TCM+PqNX2VP?= =?us-ascii?Q?eaASMGANeO47xM9eK68pOALI07UaAnTEiMvqRQF0qucc9I4UnAqKYvuQXdom?= =?us-ascii?Q?tp9yG8agx4yAztzBoWa7K83Z4pkGbD5WuI/IWGhqpisoqgTlnN7f+4NWRlKs?= =?us-ascii?Q?Tn9c3IXXqxVE28UiNhvgvCzn7yFgMBOx54NwlHs53Oek/Tld7e88F7XVuJbf?= =?us-ascii?Q?h0aU0VT8VLsJEIredH/2jZRUcVdgUQ9gqWLwVWesx3yGZPxXT6Ne1W1lnGC6?= =?us-ascii?Q?79qjH53BLTf5mK8ltmqGygu5gNYATF9kZtAOdPZPjL49U5+TcOsP03hRzhPa?= =?us-ascii?Q?2bzYMH8H74rv7sRIm9A6K/IndyZTF6CL4iQ921D8OhHa9w86DfetwLaS6MdW?= =?us-ascii?Q?rfYECMVTCyj0Xp5Dhxz9jT7nKlWKGEfe5fV4/+qYPHHcmdiHDnwS7b7lODJM?= =?us-ascii?Q?cVore7DozcQCzmA0kjXP8F1EIk6TIrNWoU3EkjX/KEUKlfNnlJhjkP7WL85C?= =?us-ascii?Q?/UgQ/uB0KgrE9GGZMX5VlqT+M8EfX3VGHsHKU30LqW/q7WWoIfx+Ws/iRz23?= =?us-ascii?Q?r6bYG7LvndKFOIE0xSA73bv7AxzOW0ZvKNACzRIJD/ILO4UYB9N55zgMjwig?= =?us-ascii?Q?Q1qa3lWKf7NMODZtCEJOiIU77+C/eglHivcX4bvD/LfvlPvhgqBZjjfaM2hQ?= =?us-ascii?Q?A+l7L3eqrh37HhcKnDU7FOD6naOzfAmP4qtUdW9HUYe7HKY7BckuGP6eTHd1?= =?us-ascii?Q?CX/xRkEreyaIFXwPyEQoCkogvlhdYqCHGADDnd1JE0CsTibjxQNY/g2jCaFq?= =?us-ascii?Q?ZBif20dWAEtULOwlo6OLWkoAHLb9HzfHUoi5p0bzTLKgSLFltJW8etjQull6?= =?us-ascii?Q?iypQpzmTVvlDWFNyT97F51geHAuYk7f7AAIqbeBERAQn9nLniPsBPjq5rypU?= =?us-ascii?Q?DUL2PvESFIjvEG5zJaN23xdcEYaPhd/0XhDR1xZsr6NazY+eKtR+Hj1xv4Ui?= =?us-ascii?Q?2HDj9r5UbaPKzOb/mMwPPnKoTmlhazs/by6uVa9zS4XDMvSKfWDlByGB4/LN?= =?us-ascii?Q?EkpUc4I9w9H8HiFUTJnv1Te0dI/hmGXDewOdgwFkg8bW+NEpRAa6CfeMZCmg?= =?us-ascii?Q?5MrNu9pTe9aNvNS+CscFTrg5BsJ94FPMb7+PO7OjssYo?= X-Forefront-PRVS: 0368E78B5B X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BY2PR0301MB0598;23:PhwnfrGlcgcDGuQSyU4tYeySER8aMDMJ/4/BoOc?= =?us-ascii?Q?mhvfp66Od61IM9Sf756joZAFApcPietY6fGOfueUPgoV27JUbol2ObyHOJ94?= =?us-ascii?Q?5OAf9y0iaY3lk/1HPqMVeSdR6Qc/3k1MuK9XOI+tn0yBTakK4tdWJ/aZA8JL?= =?us-ascii?Q?pHk4+M9nFk1naRSrHSPgkBxytIZ7M7pOGMscghPyg4QybpCN130WcHLgGSz6?= =?us-ascii?Q?LskD9LDBea3WFanVSymOczFnQKpHopc2/UyzrLlOaBvFUePPjxL7iWpPWlMI?= =?us-ascii?Q?fEejLf/9cS5vV6aXS2nPuwQvwDzbCqM+jtWjLIW0pTPEIaUfYVVuvu/SQPT0?= =?us-ascii?Q?QiRPccq2EMPv6cQ5NhK2LsxfNYcYUi59f7d26UmBmaHhPt7xyObQhSbvc0v4?= =?us-ascii?Q?BwCHwnHFDFhA/QT/oIX7i1SLSSWwwMzaOjgCobQaZIEP8IXvJQoMkE933Xue?= =?us-ascii?Q?dbze13Qksz7TMG5lYnhRChdGhq6nYc0ff9QRl0KaV6netG4rrcQ398BIwOOE?= =?us-ascii?Q?yh8T9Pt4nXOVfDCIdccarOn3fTAFplQEceA79WMrHOc08qnXRzRkyWqsSKx7?= =?us-ascii?Q?I+hhH6GsxtncBB8CTpysAQqd47VFbskw/KDEL4FqsQBa8TjYXff4h7Nkg1Tk?= =?us-ascii?Q?OkrmLQu9q9wBOMAchwpeVbNqjQDRcXk6B3dFwyl+Jk2myZFAPIm5/piWaVpF?= =?us-ascii?Q?sldL92bSewGQtydgjAG8lV2CnWC05slH0RrO+6XSud+nY6DmlWH4EFx6yrzo?= =?us-ascii?Q?kxWRxfitmS0iNWUiUUfb2bTVYBGhWipxE6EistoBbSL/CSQ7MNHqQgGw4/9D?= =?us-ascii?Q?/EI1cv1iID/BwzpLt9EPwqOgwJvUt4msfqSaMVSjXpIfnV32Q8fmszjR2bjH?= =?us-ascii?Q?cgiba/r2e6I/jZrjGQmVn896brvckGqVUJWp50SHJYV/J2BTnEMHLXCNv096?= =?us-ascii?Q?qjybpNUygOzNz7aKgFEN+lu6Vht/PPCPaxQ/HMWvNSGSbNElhQQo4YX3GBMf?= =?us-ascii?Q?IXBrhPRTHiJgb/Qn77SVnSJogitFedutG1gWwCrf0fT9ZVa3s3gtiyJLtU0D?= =?us-ascii?Q?PBRn2EXgqpizhIjCcjNj00WxuI1WrCSJ0g+PRXaCcwXFqdKTvdmcivv6yneC?= =?us-ascii?Q?ctJ3VxHA2vw/y511JSSqui/zWhYR+bb9p9iLjdGcl19hMmMWAUV4x/AGfkN1?= =?us-ascii?Q?WlBZi+Kt79xUotUSxZM+5a8WG0yXw43Fkpa9MBx3K4bUNnfVAvMaNHSanCdi?= =?us-ascii?Q?DLxUZTqO8RQWYMGo/JhhVhDRollq7faYQXkhEpQ8dlJWSD6O+eEZ1kELeibQ?= =?us-ascii?Q?HqwitNwTg/6biJQTFnzSdMuInzeWs4rujUsp2rPStE01I?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BY2PR0301MB0598;6:EIykYW2AmTykyzp5LVs9HU3Kb3EIwQP7aMNx5C1v?= =?us-ascii?Q?8L/VW+9BBzTDFEghhtdPZMvu4Hbr4p8YbazEHkQLkDy7n7khiefYFKyKmuY2?= =?us-ascii?Q?n0uSNaOZ6j52/6V2KPXVenFKiCb3j1LJtS6fpBMbdGHWTC6XUCgh45WFfP+V?= =?us-ascii?Q?2D7AAQwEOjovJzr4bFy8Req8wJ5EKlaj4yTDiRiwaoknizoyeDoa8Jyoveqb?= =?us-ascii?Q?JwVQmUYFSzb6HiELRR0J1JYao0jx6Z9IB9QkVIF9wPU2aITtjDuwHyy/hJM0?= =?us-ascii?Q?p89Jjj6I+0iATgMzaB1WtIsS3wTnRG+fsUXq7Xp0YdJMlTvw89haLYlvP2Rb?= =?us-ascii?Q?voPJcr1mWuy2+3ZghA7UOrdUFQazRaa3VjytdeAt3oKOp2E4VAoEZhdYkQeh?= =?us-ascii?Q?C2uaXI9VIVNornMYvywHRva1m3ALeWUPU4RRT7V+7AiJSlsEXvZzZxu7QeJS?= =?us-ascii?Q?zGvG8XxUcvZ7aASdZy/gy7zBtHhw4I09lXH+XTxrR7J73cDH/8ApsZbyINah?= =?us-ascii?Q?VCvf2bdez6vI2xn4igzapU/9DI5KsMbnQgDu8OdXKE6vgV98qmENu4zdwZIi?= =?us-ascii?Q?iDk6nB8Nxdq2GEE1CEszV9N45ThTzNmsjXuBaPL2DIX7shIKyJZyOnJ2gcvs?= =?us-ascii?Q?nJt7P1HcIHm1kfWpKlEWDc5Slow7RzWrgMeGBpxd+1k2X/7mU1z/yS2DsD7A?= =?us-ascii?Q?mmLg+D5YV8qZTxsLYqH01ES2mo01soq7RUlQCU1U/4qieilhif7LCB7AKlDe?= =?us-ascii?Q?Ua+L4dMRwP3ZwA0/YX1OYq6GP6PN+L5S58hlJvlvPd3PTUNhFuDEQN9f+xoR?= =?us-ascii?Q?VTPby3j2qPbbc+FBm8MVFccRDC3BrTgTW6MMkNmI+rFZGrAbRPyYQc+BUFxs?= =?us-ascii?Q?2OiMwcwLYIzErrfg58l7defshGjKbejQOky/nhaLnaCLSNa+fgy+uzNEcCo4?= =?us-ascii?Q?WiucsxjI9jQazUeKp15ZUO7repU4UAidBmBdI8n9j9kAaVOQXUXD4Nb7C1nk?= =?us-ascii?Q?5eA=3D?= X-Microsoft-Exchange-Diagnostics: 1;BY2PR0301MB0598;5:dns8QGlrzoQ8IVZqvT2CT6Ug1LElX5R9Secm2QKoptlc7MHGwG4Vzj3ncc/QIl/qRhpofKlMLYkGVjGu+priwCOIMntXmThpWhWGoxjdXIP0jZqU1R6p7LHnn87M3cogbHAPvlEP30db/1kUhEZL6BjoVb2lWY58zA+2fInn5KikYyTSynBAPMOE/9og+oKqZ+eQXLg4mtCEDT6rsUdIzR9zWHqA7XtuBaDV/Igo12GVMTqrFktlt1ObR88zYMuzZOUhyxZa1n7902WTQ0iKxd4wOiFhVnLy9wyiU1c6oBj9dFHQ90tIDSmFHRlFiiyuGHfF6+0jFgQ1GoAa7i7QmOUzEeXyRFmPutfDta02PbKQlO/ZRzyoFbjk+YWSQGE4ynAj8JKhuk/6Q6vkxBChq+6QopZUhLL+lGi15rRkCDkuG8zg75ybHmNu77Y5nR6rgG9pbGYuT8WuPVb1QKDxihd7qR4aDVZg65TYTHgIlFXxc7jgsQnBXT3JQ591j8pnF42MvvC/738XJl+6J6igAQ==;24:06zGfPihv/DHX1Pvw/ulby7dLEzNBqu+mQaYRZNnbnpHSUD85BLZKz+Q0SGijaRftbcOqEXS305eq+IaLzTuf+Hxi4UA/3QtistC/U2izpU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BY2PR0301MB0598;7:Zm4G5iacjK2BeZPcDSOFYBu562ORqd2e5R/uMhFjpRNh0Cb2PkP61dLG79jljutcL04ZFlm8Jh1R3b/qmQQVVzJmZt+ioUa40vhA8OpN++i/xTJnogj2AmG0FsqGDKZ79L9LQnB9eWXVCaTx453e9JjDO1HercCgIBeuGYaswQu9Rc8iOb5P67m36WQ6K/3O9OqQubaER6iH0fr97EBD68DqnKaDMk2i+FZQ+TggGzcphcp6RN6lFYFLAVofOPDWomMpevAd58sV+gkntLtC4DW385H+NhWlgMDo1cGzpFAGdRf+Rael0Xm1VlzYdv4PohQHoYxbuc95vJdIMEk1lkQKrmheld3yy88bJPPdEs9buHup2QOLI5Ruma9Jp+xMCPF8D5ooVMfzK13SijVCZrTg57gsI08IcZozC+DVY0waKDlIyJbvKIO3odkpHpM5qNJYRFO+0+tZfQfERArCP9ydnJ1f2HyL2KXgcdOc7lopv8AR4R2afgd6d766p0xVRox0jaV7t5OXluu0zBMZA3DAyi2yLMKROWzRKk4q9UpQP3anBWMjsaDSdtqtfdjXh4vGX/TzW3zkgANIAVzpSSuPvD/i/QF9jbY5zngCnqty0OSHAzjgtjxUtdIEeXmE6OYMq+Enw8Gqd5QqztLPWCcK3Jtt0i3kEXed/Xqz6z100ZLMrdV3b+HtGPfcIeDyDH7nX6a1XyylEE6FYqWJPjXapUjYY98ciXsrWA2rDeHGClAnNfkSgzD1uMmtSejJwIbLtAhvzKc64wTgOxO6X04P9PBjXWE0ZPIA7taT0uY= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Jul 2017 14:11:28.7807 (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: BY2PR0301MB0598 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This function does a quick and easy read of an u32 value without any kind of resource management code on the consumer side. Signed-off-by: Leonard Crestez --- drivers/nvmem/core.c | 37 +++++++++++++++++++++++++++++++++++++ include/linux/nvmem-consumer.h | 8 ++++++++ 2 files changed, 45 insertions(+) diff --git a/drivers/nvmem/core.c b/drivers/nvmem/core.c index 4c49285..cf2d645 100644 --- a/drivers/nvmem/core.c +++ b/drivers/nvmem/core.c @@ -1111,6 +1111,43 @@ int nvmem_cell_write(struct nvmem_cell *cell, void *buf, size_t len) EXPORT_SYMBOL_GPL(nvmem_cell_write); /** + * nvmem_cell_read_u32() - Read a cell value as an u32 + * + * @dev: Device that requests the nvmem cell. + * @cell_id: Name of nvmem cell to read. + * @val: pointer to output value. + * + * Return: 0 on success or negative errno. + */ +int nvmem_cell_read_u32(struct device* dev, const char *cell_id, u32 *val) +{ + struct nvmem_cell *cell; + void *buf; + size_t len; + + cell = nvmem_cell_get(dev, cell_id); + if (IS_ERR(cell)) + return PTR_ERR(cell); + + buf = nvmem_cell_read(cell, &len); + if (IS_ERR(buf)) { + nvmem_cell_put(cell); + return PTR_ERR(buf); + } + if (len != sizeof(*val)) { + kfree(buf); + nvmem_cell_put(cell); + return -EINVAL; + } + memcpy(val, buf, sizeof(*val)); + + kfree(buf); + nvmem_cell_put(cell); + return 0; +} +EXPORT_SYMBOL_GPL(nvmem_cell_read_u32); + +/** * nvmem_device_cell_read() - Read a given nvmem device and cell * * @nvmem: nvmem device to read from. diff --git a/include/linux/nvmem-consumer.h b/include/linux/nvmem-consumer.h index c2256d7..a402522 100644 --- a/include/linux/nvmem-consumer.h +++ b/include/linux/nvmem-consumer.h @@ -36,6 +36,8 @@ void devm_nvmem_cell_put(struct device *dev, struct nvmem_cell *cell); void *nvmem_cell_read(struct nvmem_cell *cell, size_t *len); int nvmem_cell_write(struct nvmem_cell *cell, void *buf, size_t len); +int nvmem_cell_read_u32(struct device* dev, const char *cell_id, u32 *val); + /* direct nvmem device read/write interface */ struct nvmem_device *nvmem_device_get(struct device *dev, const char *name); struct nvmem_device *devm_nvmem_device_get(struct device *dev, @@ -85,6 +87,12 @@ static inline int nvmem_cell_write(struct nvmem_cell *cell, return -ENOSYS; } +static inline int nvmem_cell_read_u32(struct device* dev, + const char *cell_id, u32 *val) +{ + return -ENOSYS; +} + static inline struct nvmem_device *nvmem_device_get(struct device *dev, const char *name) { -- 2.7.4