From patchwork Fri Feb 28 12:46:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sebastian Dietz X-Patchwork-Id: 869402 Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2090.outbound.protection.outlook.com [40.107.21.90]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 829C31A3BD7 for ; Fri, 28 Feb 2025 12:46:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.21.90 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740746780; cv=fail; b=CP8u9Dn+/NDjEnLOo0R/hvzzbXOqyyYozyvKDst2r54zypSEPUNmZs//PJDDvbIa+yIxYWUacjNH9DLY/AoHSL2MgN05yTS99R5RwK8QisM9dNvNnqCV5BbZnKfci8dRzqM8OQYY5RCSLT4P9RcXXsi/NvoFlMq3/OddGw81LUo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740746780; c=relaxed/simple; bh=GXcGg1ck/WZO1mmM2VsLadoB9ST4eFcAv+0U2PxMhRY=; h=Message-ID:Date:Cc:From:Subject:Content-Type:MIME-Version; b=kHInPaN6FRDcRxm8Rmbw6VNo0FrcSWCaPSFydwsyH+cusZOH/bOsC9HRBQ9n5agPsbX7NALpYa+XlkZhO7PNZeDHUP9sbGefbttqhCfI7DMk+HI9EdU0Dguql7hpCnvryGBK6uu9bN5OX6H8N4lVzfaU5oSSUnwfAIibwRJiUD4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=cyberdanube.com; spf=pass smtp.mailfrom=cyberdanube.com; arc=fail smtp.client-ip=40.107.21.90 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=cyberdanube.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=cyberdanube.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=L09vj/tGKA4+vsVMtsfhypKt4K3X7lL/I5psLMwpKPN7I/4bhjv14rf7T3WyKYx+5/8T46985dYEFSF9BzLjETHZhKJslqev/W9ShV1WZXAg0/KlGbNyGdY1hc32dzOFJvHkpdXgVPXc7L+zoLYZOR1DIZXfnXOtpk6wkLEk515AGfI/oRBaydFjfNBhIYn6837rAuGfDWKPPIIRve1Ss79sMoJv2bFXXRMOxhqFg9mcZsSGke39cLqhrhBl8v/6OYeeXKzvNvghdTzK62aoazhc4umHRsnIK8MSiWFqUYRZnmfcdaYqgbAqurgdViHirezSSwHHt9PhWcp4P8JUdw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ne7GwxC9sb/YvUD6FNa01hiszVyEMoykZdkN31EuC20=; b=IqOzNR9h+PL/NwPfsbzjUoJn7OGmqdR8uRDj2VuRsCz01/14zlip396CSCIRqjSHlGJc9z6P2rY3IWttbWA3G7eo0VNqiZIfdx0FQjaZ6CgEaMFxa5v1t9foDJs9LlDfI2GG6n0MnP0hOLSJD4cOW9mVtlVEN7Kg9581Mxqjvhr6QmydeKPozNOvsNLAV/+CuGYjYDrcsYuGRXLj+na2EF+3aYapSZgnTZbHkrGeuObKUi7pqFp8KKiVoxuBWgBvL/pIEX4oUCYjHtx/o3kRA/i/Yh+ggDc4HBeIQwbzh2amQ+VlXQPspb6smDbX9AoBi1sKKFFu0KZTz5CDA2G0hw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cyberdanube.com; dmarc=pass action=none header.from=cyberdanube.com; dkim=pass header.d=cyberdanube.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=cyberdanube.com; Received: from DU0P190MB1708.EURP190.PROD.OUTLOOK.COM (2603:10a6:10:344::19) by GVXP190MB2096.EURP190.PROD.OUTLOOK.COM (2603:10a6:150:1b3::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8489.18; Fri, 28 Feb 2025 12:46:09 +0000 Received: from DU0P190MB1708.EURP190.PROD.OUTLOOK.COM ([fe80::bfb7:7fc0:d495:3413]) by DU0P190MB1708.EURP190.PROD.OUTLOOK.COM ([fe80::bfb7:7fc0:d495:3413%6]) with mapi id 15.20.8466.027; Fri, 28 Feb 2025 12:46:09 +0000 Message-ID: <4af4f6c5-d7da-4735-9ef5-ee3c34f7eae6@cyberdanube.com> Date: Fri, 28 Feb 2025 13:46:08 +0100 User-Agent: Mozilla Thunderbird Content-Language: en-US Cc: brgl@bgdev.pl, linux-gpio@vger.kernel.org, s.dietz@cyberdanube.com, linus.walleij@linaro.org From: Sebastian Dietz Subject: [PATCH] gpio: sim: added configfs option for static base Autocrypt: addr=s.dietz@cyberdanube.com; keydata= xsFNBGZEo4YBEADOgER5k9hpOsqYLOVeu1sVUUMz4jak1fVMmciB4rirO6FmjoPuDN2/iJJL rzI8OUdDD1uc6EAl0QLAbujY01IHyreiWqSfbu2hpGZZ/fkwPpw0H7ryKf7+I+4c6j2QfWJv T3gha0oFUuV1FpWbqnjBvzS0/FnMwXON5F2NYIlM+bp9bjG9b3VLOE0ubqr67Ogo3wjZPhXo n2k1kDfJO2a4wFvtM8tMy3wl4j0QIEcu50fWnuN9sMWYwv9tTsi3MW0y1rLDFnlZKlI0iTvf O+YcSvft268Tb02bX4NRwvqr8fZZ9kJCIQdv31nKKPgPuh/FgZr9uxRrPvPLywC6W68QjEyQ 4uA7A9Si5Kx8TYVAsJ/TJGpkHl4hJ4joHPLZ/EkGxqddatJDYbpugI5vlvLsA8sAaFyYXigD vGJgA+VneCr7z3gTHcjae9d1LJi3mORJEiF5iyS6OrlaQYDCX6+6AfrjVX55/1qXH7If+cI9 n5CJDPNFxYHVVdbKaNQj0NgHKl9XfNAdv4E6sOc7rKkMc0ePnafllO/zk+dBvrikRp001fc4 1Gw1UDNAsa2EMpinZdwjP6aWPR7xHy4ljjG/z0qAgYFRxOBqlq2lAYQ5Mkz/IMscNXOpygHs ieTw6uoZgg3fdVOWYcMjf6RQIJMH33lfkoVneJUJNLjz2HXg9QARAQABzSlTZWJhc3RpYW4g RGlldHogPHMuZGlldHpAY3liZXJkYW51YmUuY29tPsLBhwQTAQgAMRYhBMLGUNgqhhsFBtqW gCPcrS6lm6iaBQJmRKOHAhsDBAsJCAcFFQgJCgsFFgIDAQAACgkQI9ytLqWbqJqibhAAtvYB S0EfEDmKqkNibzl5FD4+iAVhQH/rpwymikaKFQsiUboMXF9t0EhjTBalChs9AIhpZHvHOLi8 4epyG8F7OuLP9Cl1IAxQ2xDtdPHvKHq/GAET8RF1d3pomMojE+g4pbJ/Hh6X+SviYi2G8xr7 eTrvmhYewIv99Vi5UC0muPpv7YR45UZvDMJbW86eGZhyKsIipC0Ngt2TzsPbYzLpWxB5v6uH aTsVC8Jj8rtzWIjJq3899PFguurtNr7ciQV6PQ00TBe+W2676xr+kb7pjyT9vEW3mm8dnoC5 m70c9AaWVRAUXbhCkl6LAN5Gfbmdx8PPUaenyJLz2Q2cPWD3hd1mdKfiPGoHNgRLTkHyR7D2 AzFc38uxOgq8rr4qkimIzo4bCjs64nB+jBxO8+37PbaEVTBQ1+zr63yYOvlIxI3qYiSDXN8S vHBI/YlRnpzSuU59IAJkw3YSbUAH0u0bQPIjcHxikdnnOcolPLMxXQWUzmP4voFR+xSU8Yrp 61UIgJN7ScocWWsb84Snq48xVeRGTO19wIv3k3fdqGJ+H5D4fBWAdoJi9x9cXifzsBWDe9VY c9HTviCLGqDhhTNEkAqAPb5pHzMzRkEbR6LQhfY+KjtsPm0DxuJeVHBo8COZ/LIJGN9hacwx hlzcIimOY2kUe2by48RT8WKXUDsaC0fOwU0EZkSjhwEQANULX0gZzAjp+c5CLTvRLk0LIWVJ eH9VsrslaLWL0HNs9zRIs0rjGMF9cIU+Z9VDXrll6JERHYGOdOCPaoVXee3O2EoTeNtBRjdg HT2sAHxFj+z19oYrBHdfsMx9wC+ntK3MnaLUD2mCCYZMoVnLV0HvYlgAJPqLRPnFiAqM2+Ln VxFNNfK1nJurqD1YwXmLVoX7KD+stH33T0pxjyK+VlmkBp9WE2MdChj/48Gnoumx+XO6pG1O c+v2k2lh00Hr88Fv8d9/y5In91lJqfg8XSJU/vawVrcIP2VVXtxfpVBPlbApQ85wkM9V1qr7 d/tKT6QzzEssV4aQQ/xm0+hQdwuwdPYhjQsEY11trtAbepVTywjCsi3pvQRhMWHQs/1i7iko 2ZeogdiCYsCcItHsu3wP2u5aJB7t4VXdkhh9JVZlJkqqi/nqZ92ZyS8NVqJTqt5nPFK5RyzQ fZqA3KfORwHUhjKREE5Zv7cHhtPj2EUabR2Bkzd+GrJxbar/Jd87t5+vm4BLn+lWsjs5m8Qe QGMw9GON3DQBuoOzYfa9j4lnhHUk8WxXwNduZMuEo4JawZ9AZA8qvUp9B3eI8gB9EyF94Ga7 KJjCj1kG4x50JMYGAkuZMm/SM+gKpy78dhKQzOoIhAv0Odg/kfc/uW22W2NIyxYKYxez2jBm aqxVteKBABEBAAHCwXYEGAEIACAWIQTCxlDYKoYbBQbaloAj3K0upZuomgUCZkSjiAIbDAAK CRAj3K0upZuomveGEACNlVT28GRJAnWdhQV3Bp8ZvJGVHYs1O4IL3NbabfiV597+g37t/+v9 Bs8/cKxaO4yj5c990ATwEAK4YnfqJh8jVdtc6Kyfei4ecXOXOgosUh97OVjA1DQWl5qtO4em tPEGyLeZP52eOUVFsoN7wHZ2rH3hOYrKL5AXFUifJUoRmkbaBNZpw0TN4BAqfV/i4PBB/1K/ DPTYJ4xpko1b6A5+C1yNE/GAPi2lUchgPGSW9yxqUqlYq5KM7tW8CLK4/3eUh946vbEVy+JR NaJV1t7UYpTLMzS5PXtP6HwkhXwox3QDMzkAc6yMKdgiyoJvDFSapc2X53v/FRfLj8Ik78LX Iao0RY27Sz32hWBMvEU2opXxiDDVlqLl1ZLo3/6QrQkK9TynhBG4NNqMQnyDud620AxZypBj +0pId2jDYQR/zCexWU8Diq4cgGqmmLPQ0GQMWRUCmcLM57n4Teo3RM7x9xo7go0BT+P0pKxh 7e3RLrZOky6rZgNvh59EY/u2HNsnDYlbd8AC0QRM4D9aZ4erIBxpL/M3KYICGhy5f8HVyekb 0bct1/VRbQy5f3NY/OvjlIIAaY6+7pKBRqXgRwtVx710QtjQQF7HoMterZOyO9hgT5u7B0xk 0Hclukn6AOxqL0RkvWl+I66gPYPXVjZKi9O/QbbWl0ZlEpQQGKvFGQ== X-ClientProxiedBy: VI1P194CA0046.EURP194.PROD.OUTLOOK.COM (2603:10a6:803:3c::35) To DU0P190MB1708.EURP190.PROD.OUTLOOK.COM (2603:10a6:10:344::19) Precedence: bulk X-Mailing-List: linux-gpio@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU0P190MB1708:EE_|GVXP190MB2096:EE_ X-MS-Office365-Filtering-Correlation-Id: 3a02388a-dd32-454f-dda5-08dd57f5e022 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?utf-8?q?hJEj6XJgF1+so3DVoQ+785IUGBVoE85?= =?utf-8?q?hW2UvCC1ooWwACRnVH8OFFbZC8b073cSA40GVK923so4yXuw5c0W5n7arFvhw/CvA?= =?utf-8?q?KNcpOQRrNKpaEqcHAgnBbpDKYT5lmQomGbyk4iwB4DIWWdXhkb9gSEWGy1+VTGKof?= =?utf-8?q?Q1y+91D/DQYonWdbUz3hrsjnTZP3YUzktnVw1U7vhgpYFMx212JFq2x1ivkExsZz5?= =?utf-8?q?kcRaIlQOCZdnmcHjVcDHOHSs3iH717ZTE516kw2sDycNyjB7TiIg0ArVvKJ7/vKES?= =?utf-8?q?9qYNZennfYCgGyBpOwIWJ8SQoti4pFG8ZIOhMkYBkLCa9vY/LH8VHmO77S1xDr7zg?= =?utf-8?q?9PdoiMZKbm0q7V5wby61jjMJ1NIQBif/an3d8kfwqoX2kinZTtoInNyY4sCcVJa/f?= =?utf-8?q?UZuDVWSHbpLk+1nOxDpTLziags6DyXyyVLm48LpbO+qfTj+pZE2sQ+2uWn0/3JB0S?= =?utf-8?q?MWhP8234CeRwHVf+RLSa6flJRaXo49AFzwOGrI4PZvR6P+WSMEdIB4j9lAVYjVGWT?= =?utf-8?q?1Xgw+jzLTRzDsjXuFLka7LQeqmAoubWei29AK2he9Yeg92NGJQHGYSLqsU1sbympI?= =?utf-8?q?3ih0REu1tEDHA5OSNIWtX5oDmPmTfPP8UMZANs7FxkRw88SotZ0Yw1lpOtlqK3gGP?= =?utf-8?q?V0uhaTj+AgxleU1++ns4w5N+4l+Bq31q56t03Ro0wcCUFOiGvssQ5/9m7Md2DBf9t?= =?utf-8?q?o/BlTh72NiLNHMFORRspUorhrsjhC2zNuSe/628DqwhZAf3THuaLIl63yqKtHu+3D?= =?utf-8?q?H5SqIxqhnun/UvCPf5nN9HGpW5+a/+XDbVUQLnQyIScGcll11317W9INRhfN3VjK/?= =?utf-8?q?qfz/kMs0CKwgldrXIts3Uw+V9HaA/MbXO5ympg6UJ3HKD9KwAOrKbbwMPwCdMg4On?= =?utf-8?q?mT0PFlKSLEnU++YLbhzJYSfxawsvHNfP+yZy/pSr5lXOfkfNJfWqW8aSEho7OQQLA?= =?utf-8?q?Xp9PlpQsXGvaEzhr686+RI/7ofuvEHTLi7A7vweRtopB7OBxUL375r+ztHOLy9SrF?= =?utf-8?q?Dhe84Xu4TvmmGA3v2BxIKXeeEZnQQt/3DxHOhOq+udfWMElWlJJq+3XcXdXXIGec4?= =?utf-8?q?y/yaD4ayENjJ6KNuC3vWYoo+BZDZF7rPnKmFyjnpmFCdEpNK/6hnuzc+6z/ztjweX?= =?utf-8?q?Rf0F+hgkaIgDuXX8Owy1xls0vfTFg/kCQHIupQItzGSs+k6erMzQRX1U9eljoqr7T?= =?utf-8?q?WP26369M9aO1RfFyj3IFuH7mp+AuygQB/z9XvyI1PIjv5lwoMNDsJr0B4c4YZeQmX?= =?utf-8?q?qk3dXTsBrT9HMAs2Xv+SHvAxQAOCJmXzyuLO9I0r+nCl4Q18KNuPXarmiGNiuXO0N?= =?utf-8?q?O0Vsjt/3vxj7?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DU0P190MB1708.EURP190.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?LioCE42Q1+njoMLfiZn1Kkjq/a7t?= =?utf-8?q?NCOm2AtNAiZHwLQYK8bpWJkDS43Dl54I0JBhe4ANAlvde/R31DVLRBEk5iC0PY31i?= =?utf-8?q?i/rIxs2BsIJknjefih24I0eTi9tj6OIMuVAPLYAJeO73RCc8H8mIXs4P0FUDkD85B?= =?utf-8?q?MmcbsqP6gDQ0U1Ku5EVaz7AruoIM/Js2mw/MpBrKxtgK3pkkOKy0piof4Cjzd8gjZ?= =?utf-8?q?RBpef1O80RucRrhAOiOPNMbg9Zv5MTbkKN3d5Rf0Ka/XIS5ly04jM4X4OJCbO5h/d?= =?utf-8?q?nGrR2rVLpq9X88tmoSWOrvMcsGt7frvnp3yASDr/9O0qFQQnQ9KrhxYEdvwE3nZWD?= =?utf-8?q?0QYsKUGza0DurQHxdM9xU7TbtIT6PALLyIK/jspuCdch4+Cq40k2xSYL4TYQPjXdP?= =?utf-8?q?VFd2AqLtXuI1pOKLrjRiTHsMZzvd+DZ51bzGnwy9D/Ak8Y94/uQNR6xTP8xjLOASh?= =?utf-8?q?+VTJIQxsXlIKv35jaqzR0+nt4o2HQ8CHW+1uEkYL0FFfZojfERuVMmPjb6pC4ci/K?= =?utf-8?q?KOdc2FI06Q49gZqoVQt8QIBQbhofpueaoZ8S76XfC8cmrnALEaj6MGJ/6e7ILAA30?= =?utf-8?q?WvHoV4q9aK++0avAeFWlDRR7edHNhvfzmeji41XIgdyQhiJiYm55yUtA0bptJMUM3?= =?utf-8?q?MvghpHe4HSo6WEekXcqNWw7subiERyN5xH7oK/aqVWx6Pl1M8FaEDgdsQ3QHpX9Wt?= =?utf-8?q?L9KoNaCrmg9wxA7hcmGGYyahMdr1i1MiSkHLAOl4T7lIswzQ2imB+07urXlFHnklk?= =?utf-8?q?g3hyNVT/YGbbAUgABFzR4mKigtsnkOEH11tdLvXcUZBYaVUtKcLVKUHa6uzwHVVrP?= =?utf-8?q?cQSAAH7wmuQOsTenkllcnyxoGXCzJxAWKaOjaoxnEyQFhyHhJHsFngELELzV6uWhw?= =?utf-8?q?hTxtcBIftqxQViylMvKt41+/NYjwGxxFgBvNxm/+RzqAAiVdy9xJB53dxYMQ090Sf?= =?utf-8?q?o1niZ9E4dHEKaPkLYvpt3WEZGy5bArjdg4XcJkfx8P+BzQtJnXOAV0cmtsU4z4h8e?= =?utf-8?q?dk0mShy4Haphd51b/IIImj/lLjYl60R0uZluuenmJ8ktTPZJWb4zzGtGuy0X38e4E?= =?utf-8?q?R8oi+HOtg1K8Sc3dTLZzfYEholS23aXxiAsP7btj/BmYMeUKv4W1KUl4CUpfjkprS?= =?utf-8?q?jgFWZm15vBG+CcLZSLdzNQ/Wpsz2Wn0OVm5Y6sOHtJHIl3Z2+ZoAuRM9wDzfOhU0o?= =?utf-8?q?A8mFZlwlghRJjXzUEIzS9+d06Mc2GYDTiXAGB7CSwENVvZZo3b4rBbZMROGSAS7JD?= =?utf-8?q?Xu9WQoDvTb5RUiFYzPur3TTGyRne1XVB7LcfYYhALoDp7VcCXHR8hlVsQ4nVohjO5?= =?utf-8?q?RBosLg66c5SmaWIxIAjoYm93AZ6fe9WbbhKCAOZ68dByAxPEedlWWXfexPFqZZNGm?= =?utf-8?q?6faBDanxq2Q3oUcixcRcpsdtrATpw97dA1JhJ7X2E1BvlbY/orneSSo/DT+9sOOCD?= =?utf-8?q?MlYa1H7N6KBjXZMCE+gDSR9PQTyD5SZlrI1LaE/yoprx0pXNFPZxsXJNNxXcgzyY0?= =?utf-8?q?G98TPAny3uIbJ/MP34NodrKjxLiSjGikaA=3D=3D?= X-OriginatorOrg: cyberdanube.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3a02388a-dd32-454f-dda5-08dd57f5e022 X-MS-Exchange-CrossTenant-AuthSource: DU0P190MB1708.EURP190.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Feb 2025 12:46:09.6320 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f36f8ec4-80a4-4765-99af-e8d63d22f744 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 8FZEXtm4D5Qgl1kcvSVApB7MYHYoUOm4P6qhMm6pybDzrcBhPVC3UgIxH9INUAIQZiaAsxvSaHsLUydSIhTrlw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXP190MB2096 To replicate gpio mappings of systems it is sometimes needed to have the base at static values. base is treated as unsigned as there doesn't happen to be a fwnode_property_read_s32(). Signed-off-by: Sebastian Dietz --- drivers/gpio/gpio-sim.c | 53 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 2 deletions(-) diff --git a/drivers/gpio/gpio-sim.c b/drivers/gpio/gpio-sim.c index b6c230fab840..9a57e1d46503 100644 --- a/drivers/gpio/gpio-sim.c +++ b/drivers/gpio/gpio-sim.c @@ -38,7 +38,7 @@ #include #define GPIO_SIM_NGPIO_MAX 1024 -#define GPIO_SIM_PROP_MAX 4 /* Max 3 properties + sentinel. */ +#define GPIO_SIM_PROP_MAX 5 /* Max 4 properties + sentinel. */ #define GPIO_SIM_NUM_ATTRS 3 /* value, pull and sentinel */ static DEFINE_IDA(gpio_sim_ida); @@ -419,15 +419,21 @@ static int gpio_sim_add_bank(struct fwnode_handle *swnode, struct device *dev) struct gpio_chip *gc; const char *label; u32 num_lines; + u32 base; int ret; ret = fwnode_property_read_u32(swnode, "ngpios", &num_lines); if (ret) return ret; + if (num_lines > GPIO_SIM_NGPIO_MAX) return -ERANGE; + ret = fwnode_property_read_u32(swnode, "base", &base); + if (ret) + return ret; + ret = fwnode_property_read_string(swnode, "gpio-sim,label", &label); if (ret) { label = devm_kasprintf(dev, GFP_KERNEL, "%s:%pfwP", @@ -474,7 +480,7 @@ static int gpio_sim_add_bank(struct fwnode_handle *swnode, struct device *dev) return ret; gc = &chip->gc; - gc->base = -1; + gc->base = base; gc->ngpio = num_lines; gc->label = label; gc->owner = THIS_MODULE; @@ -629,6 +635,9 @@ struct gpio_sim_bank { struct list_head siblings; char *label; + + //base is treated as unsigned as there is no read_prop_s32 + unsigned int base; unsigned int num_lines; struct list_head line_list; @@ -885,6 +894,7 @@ gpio_sim_make_bank_swnode(struct gpio_sim_bank *bank, memset(properties, 0, sizeof(properties)); + properties[prop_idx++] = PROPERTY_ENTRY_U32("base", bank->base); properties[prop_idx++] = PROPERTY_ENTRY_U32("ngpios", bank->num_lines); if (gpio_sim_bank_has_label(bank)) @@ -1202,10 +1212,48 @@ gpio_sim_bank_config_num_lines_store(struct config_item *item, CONFIGFS_ATTR(gpio_sim_bank_config_, num_lines); +static ssize_t +gpio_sim_bank_config_base_show(struct config_item *item, char *page) +{ + struct gpio_sim_bank *bank = to_gpio_sim_bank(item); + struct gpio_sim_device *dev = gpio_sim_bank_get_device(bank); + + guard(mutex)(&dev->lock); + + return sprintf(page, "%i\n", bank->base); +} + +static ssize_t +gpio_sim_bank_config_base_store(struct config_item *item, + const char *page, size_t count) +{ + struct gpio_sim_bank *bank = to_gpio_sim_bank(item); + struct gpio_sim_device *dev = gpio_sim_bank_get_device(bank); + unsigned int base; + int ret; + + ret = kstrtoint(page, 0, &base); + if (ret) + return ret; + + + guard(mutex)(&dev->lock); + + if (gpio_sim_device_is_live(dev)) + return -EBUSY; + + bank->base = base; + + return count; +} + +CONFIGFS_ATTR(gpio_sim_bank_config_, base); + static struct configfs_attribute *gpio_sim_bank_config_attrs[] = { &gpio_sim_bank_config_attr_chip_name, &gpio_sim_bank_config_attr_label, &gpio_sim_bank_config_attr_num_lines, + &gpio_sim_bank_config_attr_base, NULL }; @@ -1505,6 +1553,7 @@ gpio_sim_device_config_make_bank_group(struct config_group *group, config_group_init_type_name(&bank->group, name, &gpio_sim_bank_config_group_type); bank->num_lines = 1; + bank->base = -1; bank->parent = dev; INIT_LIST_HEAD(&bank->line_list); list_add_tail(&bank->siblings, &dev->bank_list);