From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752977AbcG2Nvn (ORCPT ); Fri, 29 Jul 2016 09:51:43 -0400 Received: from mail-ve1eur01on0132.outbound.protection.outlook.com ([104.47.1.132]:8276 "EHLO EUR01-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751468AbcG2Nvm (ORCPT ); Fri, 29 Jul 2016 09:51:42 -0400 X-Greylist: delayed 20008 seconds by postgrey-1.27 at vger.kernel.org; Fri, 29 Jul 2016 09:51:42 EDT Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=peda@axentia.se; From: Peter Rosin To: CC: Peter Rosin , Wolfram Sang , Subject: [PATCH 1/2] i2c: add i2c_trylock_bus wrapper, use it Date: Fri, 29 Jul 2016 10:17:56 +0200 Message-ID: <1469780277-31085-2-git-send-email-peda@axentia.se> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1469780277-31085-1-git-send-email-peda@axentia.se> References: <1469780277-31085-1-git-send-email-peda@axentia.se> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [217.210.101.82] X-ClientProxiedBy: HE1PR10CA0027.EURPRD10.PROD.OUTLOOK.COM (10.167.243.165) To VI1PR02MB1312.eurprd02.prod.outlook.com (10.165.231.154) X-MS-Office365-Filtering-Correlation-Id: 1052057a-f3e4-476c-233f-08d3b788e33a X-Microsoft-Exchange-Diagnostics: 1;VI1PR02MB1312;2:afETf5SnGenBqUBRDGXq0IJOGurhqk8zEXgQETX/fK7ANQY+0l9XdfrYFxqBTF7jSQRF4fLUR3EDjL4wXpTqGGmsjpDgROj2dz9D+EeYBXP6fIWBZQ7AHCwu9uVGT5Fqr4SGOUA6BsXXnXA6tKG5EyZD2kV7fcetmGsx8sWcjj/nnhlAsNp0/cOfsoU+V7bY;3:u+fL+dGXmm+16rNSkQIKWlUUB2tyeoIJHF+XSJvHLuBCH6H/XwPd+JGxcpUMe0xBmAg4zg7FEUyxabSlmI5xW9Q4QEXnrv6Y/w2NF4HoLGbw7eeytLznci4bTxryumg0;25:Dkj4ZdC9UoVKEOuDU7zAXC4b2k3h98fVtTY34zKASSJdz2nPV/vJ4KKNYHx5YlMwvwBWl1UHuv1kos85ANIFonvL0AkmjYuFL1MZXNakeIfAZEd/RqXHlJ0icsPyZ/jSbgaDTe+iePaz/mCjREqc8uIBZS1ukVMx4NvBhJCFnxHtJEpYetn9mITSgTt9XETSoVNnFcNxkjNr0AgPaH04MlIbYJfkGiSZB4bHpyT8fkUxXDZCj+Nq4BFn35hLcwPWjDISb0xDA26696pWwYUagjy4JPuJARy1YTItFu24d7HLcNkAnDgaCVO8Hjx/1oC04syI2BCDXsDN5Vc84u4nzzfyTAsYP5eitu/GEcLreRo2kLNBfU1iXsbxXkba303tyuE7bIF4H8N2JM9LW7a0MQm+hc19B/O5bOlPZrPr6IE=;31:JlIuMXFMfgfneUs0mKT7hVgXleuuM8kHDFf1ES+qzbEl59KuLYmi9i/dnhKkSGYX1fKv679dTixXGJLju4ux+wOnknqVFe9fVAruSudXTYjmBN+O0lJlILz23buXzZuAd8T4WfHZg7ZmiGXTGcthRH3sL0ZysnEkjUuIF/4yxy4lZOs4+S4bOZGIsyggjNs1ZI7vD9RU9tbXowJUE3HO7Q== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:VI1PR02MB1312; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040130)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6041072)(6043046);SRVR:VI1PR02MB1312;BCL:0;PCL:0;RULEID:;SRVR:VI1PR02MB1312; X-Microsoft-Exchange-Diagnostics: 1;VI1PR02MB1312;4:G7x56Z7hRHgLqMjKz/W9YnQ/bnGGoRgwlZWbEGV9q3Xgovi8Nigf5CdOwDy/jLAphxj88k9doO6DrZS2atF+pxML1o1lZ49l9SEsOlqLjnib0X7P7dRZImc4J676e7aDjLvA0oSbr82zwip7uSpbG/dbvG258r9bvfRY/cfUK2XC+sCBNmjXnGtstbHfCuZXiX4BzoI533ZmeGxMTv8mIxELYR946CktS4/odD8rfgn+OH6oAuKv7kNa3O+eYj08tO3cQZdduSUYo2s7BXbeID8+ed1gKiiXqPgeJozFO5A9jbsoledAkn6Zy18sbZ5I0G14wsF71Q6FGNLuLKtOS1laVdW3tsa1l+8PXgITE4bh+frlWHLKiiWs1Rom+Thn1K7uHlybnv/JVYzk98pURSnqVdefC5kzOO5yW13taII= X-Forefront-PRVS: 0018A2705B X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(6069001)(7916002)(189002)(199003)(6116002)(50226002)(586003)(110136002)(189998001)(305945005)(92566002)(81156014)(81166006)(7846002)(76176999)(5003940100001)(50986999)(7736002)(74482002)(3846002)(2906002)(97736004)(4326007)(68736007)(2950100001)(77096005)(8676002)(36756003)(66066001)(47776003)(101416001)(33646002)(19580395003)(19580405001)(106356001)(86362001)(50466002)(105586002)(48376002)(2351001)(42186005)(229853001)(42262002);DIR:OUT;SFP:1102;SCL:1;SRVR:VI1PR02MB1312;H:localhost.localdomain;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;VI1PR02MB1312;23:zOqEjOZ7BI3DW1kN0gjTCMc3ctPR/YUM4c4jT1aZu?= =?us-ascii?Q?KZ6gNDzh2NZBz8g15HC9KFype52Y9Q27v+qBah23Fsu5817b6lJV2nxdaoi/?= =?us-ascii?Q?G/MnANyAbj0pJ28CjZz8q3a1m5HcudogYh3ZvM5WR4twFbBOwfnRm0nwpwy5?= =?us-ascii?Q?ZsNfdSjlv19TZr2sogcDZxLauEFCJoyVnEHDd0fTFui7/A1hWwwt/jYjX2oj?= =?us-ascii?Q?SEFUtSUPFm7HUO5Igat8X1/OtEeC3APOKCYRBNNvrXsQqmmQOhh/rfkoneLn?= =?us-ascii?Q?s4vqZ3JpuP4RHk/zVkYlth5kwrfgg/MJJ73WD8eDrFXjWlHLXyXCQWUcf5KP?= =?us-ascii?Q?QwFYItBysBrxSGiHqDVrAklW9dMD20PzVrKrbnqxAKpXUUtrViW+Ah3+yQsY?= =?us-ascii?Q?W3yRnBndjnZPlLMCkntBhB1WD2gRX+kCDwB95ebpfvLfeZvRXGJTW1J8C6WQ?= =?us-ascii?Q?UdoIGacccNE2MAkDOWPXf6UQVaSjK+x0g9XiNgfkHxr00F87AHsp19O5UjVP?= =?us-ascii?Q?BGt1F3oFQYpClFBuFkOx/nh8cXJhXrVCxiw1JATLjej6BfdXdmQJAIbhBAiQ?= =?us-ascii?Q?/rcUvp7ysgEJA6ESrvaI28h1g7pEGljVvVF1I1iwUPVYhP04hl8wGpmQ7ar0?= =?us-ascii?Q?SKkCRXQgQClmdyGfBGmEl1sQ8FYKxuGfZCBv01cSBJSoYOFliFUjrrYejjPU?= =?us-ascii?Q?79pdMnj1LKXdwY0FvAUCQ9ltPz1yc2yUf7WX2ZOQqoDNHV+KuPGYAcsAhUhT?= =?us-ascii?Q?sXPKa8xw8YOzfLgO0vaxbOzSfltHT6OHiGxYShWyHjmCScfFMg72BmqGVxyC?= =?us-ascii?Q?wQk1z+EPTC9v2an86c6NAjbZ4eWRm7COZ3WnV/tr2N6A4MV8wYllBT5aVm+e?= =?us-ascii?Q?5hZUvXTnXMnKXNf3WavJvDPblBUB9M1tpll40GVJlLaIx7gC1wHLLXOAYmgO?= =?us-ascii?Q?2Zx+N5hccx6FBxEO7yLxUDW2hDv+3Sx7Yx4/M+ckO5dXlnIpBCY95hUjmp9B?= =?us-ascii?Q?VHJjZuUQrivOLUO/O3GMpq/9trwLfvFYhEzgt4Tgn7Z1+/17Zw+UNW063Ipj?= =?us-ascii?Q?0jG110fv4bFIZAsW3gtQXIC2+Fn42T4w+I21JK3E/d0x4WRMdmNpZ4pEocBX?= =?us-ascii?Q?sV5MDGwk/E=3D?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR02MB1312;6:g/e1YqYTehhmld+SGj+mK9nn2YZn3o/TA5Kscm/GAnyFoy69CYnkKD8K0KY+w/4FHEEafTlNxphieQcHaYe/b4XXpm7fs+sePhbfj3TjQQ4dWvKjGOGGrC/zMNUw7M3mQ5uoUgiNnOB385ke0yO0X4l8JzySDHOC+d0+z8v+3kr8K9IBteW7EN6C/t2P5rysPFOlAyU8bcYkJsyiVYpt+ThhGlt8enoCr8LYEw9ofpPDw9JA4dyej8g1jZ68x/eAEP9WEGdyRkRodwCps8FiPch6I1MXkw9xsxXJ1+wsQFe2cbkw5Vn1sS9cO2eHv6qH;5:ycoX5ryPmYPxKlz73qdcEmJMy4fNHgv5XPuAk6ejJi5BOChLitk8jya4xiU6m7VhJ+2RkLzNXS+QydpClU7V0NxDYQ+X6Y619zGhQYRAWXzxXc/iSABvJ6gEkab7cBzvieArvFAXUWeVAiEjhpTv7g==;24:YgEF0S5Shu9Um4Djf7Ddz9guuy1j8kESDY+/TTksuv2r4KW3e+gvbDCDsv1e8Na+fv2GuclM/tLnJzTs1Yc9acHyjCVzm8inbwhteMdWGN4=;7:lYZ93mCoVmTJ9SjFTMC5uRgtfvPCgKc4rqOE9yYMC+gxTR+px3pZV30b/g1Kxp1D5bl+y0Zq8ECqXgf9EtpHDjRnYlhLX77elSk5LVRiMmRtEkbDPb4Pwixw8y4n3MU+ITdhNmYAaKCt124DtA9P9Wd0qihNDaVF4+a8Y+fX7yI0j26kyaneP40Yb6t3XjsbNz5mJcKUDPDGs8Fv8kJRboPdrvFq7ZimpuyK2nF3hogGsZB62mwVR+DbB8IOXz6U SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: axentia.se X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jul 2016 08:18:13.8470 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR02MB1312 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This unifies usage with i2c_lock_bus and i2c_unlock_bus, and paves the way for the next patch which looks a bit saner with this preparatory work taken care of beforehand. Signed-off-by: Peter Rosin --- drivers/i2c/i2c-core.c | 2 +- drivers/i2c/i2c-mux.c | 4 ++-- include/linux/i2c.h | 14 ++++++++++++++ 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/drivers/i2c/i2c-core.c b/drivers/i2c/i2c-core.c index af11b658984d..2c9135ffdf10 100644 --- a/drivers/i2c/i2c-core.c +++ b/drivers/i2c/i2c-core.c @@ -2311,7 +2311,7 @@ int i2c_transfer(struct i2c_adapter *adap, struct i2c_msg *msgs, int num) #endif if (in_atomic() || irqs_disabled()) { - ret = adap->trylock_bus(adap, I2C_LOCK_SEGMENT); + ret = i2c_trylock_bus(adap, I2C_LOCK_SEGMENT); if (!ret) /* I2C activity is ongoing. */ return -EAGAIN; diff --git a/drivers/i2c/i2c-mux.c b/drivers/i2c/i2c-mux.c index 8eee98634cda..764f195795e4 100644 --- a/drivers/i2c/i2c-mux.c +++ b/drivers/i2c/i2c-mux.c @@ -159,7 +159,7 @@ static int i2c_mux_trylock_bus(struct i2c_adapter *adapter, unsigned int flags) return 0; /* mux_lock not locked, failure */ if (!(flags & I2C_LOCK_ROOT_ADAPTER)) return 1; /* we only want mux_lock, success */ - if (parent->trylock_bus(parent, flags)) + if (i2c_trylock_bus(parent, flags)) return 1; /* parent locked too, success */ rt_mutex_unlock(&parent->mux_lock); return 0; /* parent not locked, failure */ @@ -193,7 +193,7 @@ static int i2c_parent_trylock_bus(struct i2c_adapter *adapter, if (!rt_mutex_trylock(&parent->mux_lock)) return 0; /* mux_lock not locked, failure */ - if (parent->trylock_bus(parent, flags)) + if (i2c_trylock_bus(parent, flags)) return 1; /* parent locked too, success */ rt_mutex_unlock(&parent->mux_lock); return 0; /* parent not locked, failure */ diff --git a/include/linux/i2c.h b/include/linux/i2c.h index 96a25ae14494..e1a8d72ebccb 100644 --- a/include/linux/i2c.h +++ b/include/linux/i2c.h @@ -588,6 +588,20 @@ i2c_lock_bus(struct i2c_adapter *adapter, unsigned int flags) } /** + * i2c_trylock_bus - Try to get exclusive access to an I2C bus segment + * @adapter: Target I2C bus segment + * @flags: I2C_LOCK_ROOT_ADAPTER tries to locks the root i2c adapter, + * I2C_LOCK_SEGMENT tries to lock only this branch in the adapter tree + * + * Return: true if the I2C bus segment is locked, false otherwise + */ +static inline int +i2c_trylock_bus(struct i2c_adapter *adapter, unsigned int flags) +{ + return adapter->trylock_bus(adapter, flags); +} + +/** * i2c_unlock_bus - Release exclusive access to an I2C bus segment * @adapter: Target I2C bus segment * @flags: I2C_LOCK_ROOT_ADAPTER unlocks the root i2c adapter, I2C_LOCK_SEGMENT -- 2.1.4