From patchwork Fri Feb 28 15:17:20 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 869479 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0345F270EA4; Fri, 28 Feb 2025 15:17:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740755864; cv=none; b=tn+Uha1J3hnjEfKQ9zcyNPMzCXwwENkWI7HwZ0P7xa+fr9XR/FxsrMKZQCT/uX2SzkhtoA8A6h7VvfnTuI/bLUdCa9UxunaukFv1MElinSGuK+pgcqa9ezLaZ8uVws8dMJvVWweI7QITup+CVAMJlaAD7MZeRKZidMHsGOolwM4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740755864; c=relaxed/simple; bh=btY97WZkaRxfvJGaZV4/irpvLakBopADE7uOu87iIqI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=oAYsNtvcnFtbrYAfYEF7Ags9fuRSPUToE43nth3IajfLzvn0sVJlqoYrszL3XVZLBisvVjey3/rIxh6mTh9ycmwJek4akG4zmPuyFGA+pgi6Aha70Dct/r3exGvEAguLmJk7RyLkzTiQRlSS0kdjKbbf+W+umr+hgt2rox+UKNc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=nATbu7EY; arc=none smtp.client-ip=209.85.128.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="nATbu7EY" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-43989226283so15044735e9.1; Fri, 28 Feb 2025 07:17:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740755861; x=1741360661; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=S4qqqIezndnbu9odHIxE2+Bj8cVf+2ZH/Pr987aq8jU=; b=nATbu7EYaLKu6/JI2/5lLWF8cgkU2vZHhLqi3IxZpCbiFUgNK8gNLKNfTCuu9vai0/ iVQ3utg9MKjCJRx+Rs8Ywu57JAuMhf9MRboGlHmuA+c0mMv8WX6gUJnlzGBhhPdxR33u xOlRV/cAhR5pYiTmi++P3AOp4XNv3FD08ypfIChXHh9QK/ecsF1BsVhsaiGsaWrt85Jx 0IhCqnoTWduMQ0DY5Im0rV2iFbgxbbIOglypNnpPYGLZD/F7xQhJRY/+GuM5cdAMin2I d3V5GT3ruTy1sJ2ZUOOrKRfHgEbZylrfY0e1+JqtVJX0CwCUUEvQVC3GzYzg4mN7RUh4 ym8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740755861; x=1741360661; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=S4qqqIezndnbu9odHIxE2+Bj8cVf+2ZH/Pr987aq8jU=; b=uhAMFeocLAj212s00wqmm2w5KvR5X88T0UtFNJtSuFrLTVBh6wVam88rUpYHe5ib+o 10yyAiieAowKvOPyXBdMY5jUTQzhnTF69cCp/l81y5/VOVOJhEdIH9XTrB/QXfnwZq0+ O4hByfViJr500fwUlibOV4na0Rap1n99TqG8JPSOzHB82vbciSfulIY6xy/mYOwVxr5K bExoyDMATjvCq/PW3rVN9DewsB9DM+4wBI6UuBZctJFSCU53RS+C6cn07ieFHAZkJ1eK Oj3i7auUBivXVvpcWBD1Kjcqw9Lc+8/zE4ySCGZE3EucAPZ1KpZrL+ZSSfHSMNNzJr/u 80rQ== X-Forwarded-Encrypted: i=1; AJvYcCUjOGM4aPGVfThJ5gQxIeY/lj/OXNSMIntYOH+HAO2o1sZ3RM5YNeLkDGkM+htOTDz1S9iASJr6fOU=@vger.kernel.org, AJvYcCVVljFB+35+6ntdAWj77gU2HR2cO2eDgZzu5zVcBR2E65J3RJW1q2GPqPrrvkPQTnEIRjAO1bOaSNjVmG8=@vger.kernel.org, AJvYcCWCpGVHHKEKjVLiXd7Jl6DdB49dyjvEImxMcobm6X8VU43cFUHSiIu/AznEvAZPJRR6NAKA1mS3a8ZIWZi8@vger.kernel.org X-Gm-Message-State: AOJu0YzI/mgI7fvz5cKbA8hyDiLexO4SjggdueQ1a82cnVLflBzkG0eh dg6Mz7wT1S6pfD5/NYc6jZAj7lOc23TNBV/siatwUcNK98U0vewR X-Gm-Gg: ASbGncsHaYPwL278/WInZI8cJ1EXwWl4mCGHE+h+c4f3KUV27PKp31F3rJ4K+XE8Gol p5HDp+qnk38kB2Vu50kefOT84MkRHAr1rCppxikFRs0mWqz9X79NI6VQ23WYjOrCGHU9M175W2m uZ4Y7e6Yo8eQPOIS2HW/SS025nrPZdvGvdQ3OsOkPJ0in+dNspq0TPJ/iX4oeUNub8sdfadqKHn 2t5NGzDYQ/u/h62TLZ3Hq4H5eStRv/kFZqS/FdAQYrrFg4Arm6fJRzMQpbkLPJL5eKa/2/gHUp+ gVlNlQwfkmMC4bvF2sUb9psOWNfWLS6GMDE9iig= X-Google-Smtp-Source: AGHT+IFj0DbA75z47DexBVK3a9hAgTjGol+BBEne4fOVKGatR0z7tCNeQN0gg2MRn9Z+nbrtgRypGw== X-Received: by 2002:a05:600c:4685:b0:439:9a5b:87d4 with SMTP id 5b1f17b1804b1-43ba67047bemr31688125e9.13.1740755861070; Fri, 28 Feb 2025 07:17:41 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43b694524c6sm63096825e9.0.2025.02.28.07.17.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 07:17:40 -0800 (PST) From: Cosmin Tanislav To: Cc: Wolfram Sang , Tomi Valkeinen , Luca Ceresoli , Mauro Carvalho Chehab , Romain Gantois , Arnd Bergmann , Greg Kroah-Hartman , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Cosmin Tanislav Subject: [PATCH v3 3/9] i2c: atr: split up i2c_atr_get_mapping_by_addr() Date: Fri, 28 Feb 2025 17:17:20 +0200 Message-ID: <20250228151730.1874916-4-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250228151730.1874916-1-demonsingur@gmail.com> References: <20250228151730.1874916-1-demonsingur@gmail.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The i2c_atr_get_mapping_by_addr() function handles three separate usecases: finding an existing mapping, creating a new mapping, or replacing an existing mapping if a new mapping cannot be created because there aren't enough aliases available. Split up the function into three different functions handling its individual usecases to prepare for better usage of each one. Signed-off-by: Cosmin Tanislav --- drivers/i2c/i2c-atr.c | 104 ++++++++++++++++++++++++++++++------------ 1 file changed, 75 insertions(+), 29 deletions(-) diff --git a/drivers/i2c/i2c-atr.c b/drivers/i2c/i2c-atr.c index f2485d1670a2..fc92ed930877 100644 --- a/drivers/i2c/i2c-atr.c +++ b/drivers/i2c/i2c-atr.c @@ -239,9 +239,23 @@ static void i2c_atr_release_alias(struct i2c_atr_alias_pool *alias_pool, u16 ali spin_unlock(&alias_pool->lock); } -/* Must be called with alias_pairs_lock held */ static struct i2c_atr_alias_pair * -i2c_atr_get_mapping_by_addr(struct i2c_atr_chan *chan, u16 addr) +i2c_atr_find_mapping_by_addr(struct i2c_atr_chan *chan, u16 addr) +{ + struct i2c_atr_alias_pair *c2a; + + lockdep_assert_held(&chan->alias_pairs_lock); + + list_for_each_entry(c2a, &chan->alias_pairs, node) { + if (c2a->addr == addr) + return c2a; + } + + return NULL; +} + +static struct i2c_atr_alias_pair * +i2c_atr_replace_mapping_by_addr(struct i2c_atr_chan *chan, u16 addr) { struct i2c_atr *atr = chan->atr; struct i2c_atr_alias_pair *c2a; @@ -253,38 +267,54 @@ i2c_atr_get_mapping_by_addr(struct i2c_atr_chan *chan, u16 addr) alias_pairs = &chan->alias_pairs; - list_for_each_entry(c2a, alias_pairs, node) { - if (c2a->addr == addr) - return c2a; + if (unlikely(list_empty(alias_pairs))) + return NULL; + + list_for_each_entry_reverse(c2a, alias_pairs, node) + if (!c2a->fixed) + break; + + if (c2a->fixed) + return NULL; + + atr->ops->detach_addr(atr, chan->chan_id, c2a->addr); + c2a->addr = addr; + + list_move(&c2a->node, alias_pairs); + + alias = c2a->alias; + + ret = atr->ops->attach_addr(atr, chan->chan_id, c2a->addr, c2a->alias); + if (ret) { + dev_err(atr->dev, "failed to attach 0x%02x on channel %d: err %d\n", + addr, chan->chan_id, ret); + i2c_atr_destroy_c2a(&c2a); + i2c_atr_release_alias(chan->alias_pool, alias); + return NULL; } + return c2a; +} + +static struct i2c_atr_alias_pair * +i2c_atr_create_mapping_by_addr(struct i2c_atr_chan *chan, u16 addr) +{ + struct i2c_atr *atr = chan->atr; + struct i2c_atr_alias_pair *c2a; + u16 alias; + int ret; + + lockdep_assert_held(&chan->alias_pairs_lock); + ret = i2c_atr_reserve_alias(chan->alias_pool); - if (ret < 0) { - // If no free aliases are left, replace an existing one - if (unlikely(list_empty(alias_pairs))) - return NULL; + if (ret < 0) + return NULL; - list_for_each_entry_reverse(c2a, alias_pairs, node) - if (!c2a->fixed) - break; + alias = ret; - if (c2a->fixed) - return NULL; - - atr->ops->detach_addr(atr, chan->chan_id, c2a->addr); - c2a->addr = addr; - - // Move updated entry to beginning of list - list_move(&c2a->node, alias_pairs); - - alias = c2a->alias; - } else { - alias = ret; - - c2a = i2c_atr_create_c2a(chan, alias, addr); - if (!c2a) - goto err_release_alias; - } + c2a = i2c_atr_create_c2a(chan, alias, addr); + if (!c2a) + goto err_release_alias; ret = atr->ops->attach_addr(atr, chan->chan_id, c2a->addr, c2a->alias); if (ret) { @@ -302,6 +332,22 @@ i2c_atr_get_mapping_by_addr(struct i2c_atr_chan *chan, u16 addr) return NULL; } +static struct i2c_atr_alias_pair * +i2c_atr_get_mapping_by_addr(struct i2c_atr_chan *chan, u16 addr) +{ + struct i2c_atr_alias_pair *c2a; + + c2a = i2c_atr_find_mapping_by_addr(chan, addr); + if (c2a) + return c2a; + + c2a = i2c_atr_create_mapping_by_addr(chan, addr); + if (c2a) + return c2a; + + return i2c_atr_replace_mapping_by_addr(chan, addr); +} + /* * Replace all message addresses with their aliases, saving the original * addresses. From patchwork Fri Feb 28 15:17:21 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 869478 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AD135271269; Fri, 28 Feb 2025 15:17:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740755866; cv=none; b=oRhvUVAJJXuIMowUiAOT2wdZWxNrhuZoN3jmhoVIQAHXkJRxxIz8SjTJHceS4MTNRDIw9Q/oQ0C0q94Mf0c4FsoHgSj9moYHAuGdOQKDV5LQFf0WSaR5vrNOrNKHVSNaqz5LzFqKlpbNB6/lGQBvm1t0+5HcE7fk4L0zxj4TAqA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740755866; c=relaxed/simple; bh=xaw+9NRhj93i8+l2AzjUn7HMcyjC5D4eiOuWNB1OLiI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ih96G/av1DS1aFdvbJsLe6cnwmyJ6HmVDAyLel5xG+yDqAWNxd2dnr+M7BOL5ETz1iReuXtB+uUJFdqo+2pF/2woZGkp34o3SXA9WISKKqt/qzYgFLYJjXl58AghHeAXAFaudD3A4jVC1gQDreIZEtU4gwwi5h70kwbzHrk48So= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=IH1lo25b; arc=none smtp.client-ip=209.85.128.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="IH1lo25b" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-439a4dec9d5so24112035e9.0; Fri, 28 Feb 2025 07:17:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740755863; x=1741360663; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=R6M+HRPCEe7YtMaRAGBz1VKfF9YRyuQoo35/cd6V73U=; b=IH1lo25bk/LwGKhNSVHsgMJtbcpXfW9PUVYNxa60V2EiuhD8f+xI4AQRQVNOaKdUeF YXdpwlmM8mVcW04F9cVRk7CfuIE/Qec9iLtbr3qWQejnWdTcZr+IrtJLDa7abhtiWjYx hHy2mpvn149EYTDxD46Ll1y6+G8RV113V6BXX6ImjGUVoumgVG5OgB3eKXwYu74ySj9j BbN7DLZ9nuPCJiZwP24f9IBjoIBV6LKDqZj/AJcWjui/3gXxmBOndclTu2ZqMmzMYYIo 5Sybl/hz21f+r9AHBVU5LwIuqWlylzhbxpXNo+4shXdUABGqOgAkEQHmcapQAyVnwiEA kWsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740755863; x=1741360663; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=R6M+HRPCEe7YtMaRAGBz1VKfF9YRyuQoo35/cd6V73U=; b=TjOc59f67NVFXwcvqc2POJfyZfILo3y/IwIvFpHHeeWWeNgdBvoGsDHkDS0np3Rzqi 5auBvIfPFKfENJY6Xp0cGk+H+s+7kfFwWhURvVuVWENAt/bgoduyyXuNADGr8eIDcD2E WGeFU5/YSZZE3Dig8yLgziw0+MLdl6WlemnD0EQRyA9uEoaDHLvoam0wxNMpwd4aohO0 JJwMD3A4wKVLg40+Q4CaXOGV8WSHBV6v3P15aRuGJr/lgHE2q1RoQiBkZ9gdYc2RLq46 bUiYLvutAuPgmey+ofFl0i8sjCwAZf4oopFZLkNMQ881OEnoEtds4DLT51kQX6ogaf3M +dzA== X-Forwarded-Encrypted: i=1; AJvYcCUNfDGbVY67xSHt99omAfbJlY7AxQE3TSpjSYDQtfbnihw6LB8E3KcHSyhAyslCPfRNSgGL9FX286ThcGTn@vger.kernel.org, AJvYcCVVgD1MRRj+FbNspPRvxNbeYbu5j08opVBe/MioXjp0RCkiWAjspwua4b293y0G4Ox9HvFkKDzHMyDMcPs=@vger.kernel.org, AJvYcCXdiWmgPWzOihQfsKzSXOj5B3KMwC8aBqEZN5K7M0ITlE4R39k3sI9I2JArghTtOv15zO9tPbOkxv0=@vger.kernel.org X-Gm-Message-State: AOJu0YzBqYFkhwPS5S4XBy6mF3aVO1+BSYNZlSzLRzcDHWpeh70nQ43A OIzMjfpvtGtjZniKov7l3X6gOBtNO9uXlvOUOILU2dRwR27diYRm X-Gm-Gg: ASbGncuby/LY9LNrhvqu0mRN/sERMeJ1jbmXlSErkfCQQgs4si6qwId37HUBRBzIHsO rgG1qDQzYQqIcRgcdZxmtFp+sauoATcExoG6C2jaYR2ZMNJuwR4SB171v/J17XffWt027Kb30kn dRkuv5Lt86xW9YEd4DpYt77LrJrsgIVk1vlrBiFXYTfFJ2XLC7zAcqqJYbffTPh4ZX4Nc0RDoCS kcpU/d0oBYhb4G9OpbvCDMi+Hg0Mhmr0npvVcRCEKqp7pHtc88gs1WnNDcZIVeisNnjLEpR0RSc XvVL3K0ugM7wtBo+6UiUizR9HYKdqMPnlUpsCEU= X-Google-Smtp-Source: AGHT+IGjX1N9FuSMpvL6z7k6QiNoEMimLTVA9WqjWwuygtEnQasl6sngyDK/8LhugrBpn/WJmEWu7g== X-Received: by 2002:a05:600c:524f:b0:439:9106:c09 with SMTP id 5b1f17b1804b1-43ba675bafcmr30114585e9.26.1740755862623; Fri, 28 Feb 2025 07:17:42 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43b694524c6sm63096825e9.0.2025.02.28.07.17.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 07:17:42 -0800 (PST) From: Cosmin Tanislav To: Cc: Wolfram Sang , Tomi Valkeinen , Luca Ceresoli , Mauro Carvalho Chehab , Romain Gantois , Arnd Bergmann , Greg Kroah-Hartman , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Cosmin Tanislav Subject: [PATCH v3 4/9] i2c: atr: do not create mapping in detach_addr() Date: Fri, 28 Feb 2025 17:17:21 +0200 Message-ID: <20250228151730.1874916-5-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250228151730.1874916-1-demonsingur@gmail.com> References: <20250228151730.1874916-1-demonsingur@gmail.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 It is useless to create a new mapping just to detach it immediately. Use the newly added i2c_atr_find_mapping_by_addr() function to avoid it, and exit without logging an error if not found. Signed-off-by: Cosmin Tanislav --- drivers/i2c/i2c-atr.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/i2c/i2c-atr.c b/drivers/i2c/i2c-atr.c index fc92ed930877..148a7bb0508e 100644 --- a/drivers/i2c/i2c-atr.c +++ b/drivers/i2c/i2c-atr.c @@ -582,10 +582,8 @@ static void i2c_atr_detach_addr(struct i2c_adapter *adapter, mutex_lock(&chan->alias_pairs_lock); - c2a = i2c_atr_get_mapping_by_addr(chan, addr); + c2a = i2c_atr_find_mapping_by_addr(chan, addr); if (!c2a) { - /* This should never happen */ - dev_warn(atr->dev, "Unable to find address mapping\n"); mutex_unlock(&chan->alias_pairs_lock); return; } From patchwork Fri Feb 28 15:17:23 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 869477 Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9BE7E2755E5; Fri, 28 Feb 2025 15:17:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740755869; cv=none; b=UoPrDE9rGKDv/awVOBbJymNx4adJtCMDqUDvmn903q+p2fo4YqYE0N0Lhyi940J9AHnQ2CgrL2jIU9RUjlvSItfEmCWm5BGybTT5jeiJ121XC+Xbh7AmlNi8cmbyxZ2KRVCeVoSAZ/xpaD7itVrfV/qJdOp/KCZ9hjyPvlPNkQg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740755869; c=relaxed/simple; bh=/W/QZFcRBnIM9b0Jt8Kw6hZJZD0btW20G7HvSU1nKE8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FExhsIRcsDLH1Mk2jdLVV9f1uqIbsJfSCRMKOBSp1VK4maI9aTXeVTY3IboIbbRbsP1OErD1ZerOCw8bz6u4pN50qi7Sq6DRfoSlSD+ycF98OEd8ASAmYAWuG5gOVgjTlwFr/qzC4I8o0dOO43dOVxGY3kbJJdZIP14k/7aAnrA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=M6QGqm/+; arc=none smtp.client-ip=209.85.221.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="M6QGqm/+" Received: by mail-wr1-f53.google.com with SMTP id ffacd0b85a97d-390dd35c78dso1773449f8f.1; Fri, 28 Feb 2025 07:17:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740755866; x=1741360666; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=gTVzPUIvmiDHrwsxbjyL6sD0GFnHJnYahl0LLE8iGaw=; b=M6QGqm/+bN9pw+mhZAsAucr3/PsuNxBdduDzi1P7wpOqLwNodoYR+XdMzPjg6rNXOV UR8nJhL0UvKRYM6wIc9Z8fXner+O7fByk0loqK5hPN2VsNOSlOpWNIS5NiePfayL6KG6 41S0rlMzCrfK0MBmXL3YvPQbCgGSipzYvxxDQmWOWPu4rvIGue+zEq+KCQd8bun+GDQ3 artCZ1A5rg0XvlnMLZeuFF44oXwWDMZ8kU84Bw82fFI/ooSFhujUU7VZuwgjcyAKfMge YuqarCp8728npCQWwLANBg9rkf7i9uQL8eR96dlGKKvdWpUVi6SKo5SN+cEpFlBru7BR kI5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740755866; x=1741360666; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gTVzPUIvmiDHrwsxbjyL6sD0GFnHJnYahl0LLE8iGaw=; b=XAjlCM0vC+vxO/V9w8y1HRW1TZV7/9hBREIrf0mld8aiLEStjmqi+B0o5Nhqb3eXMD WHY2fpcA/SSHXwupP2xrO/x1nK6wMG/d52NIzVNozCyjp8n/JJxv0uTwcBUBXdg8uPxO 8UCp0AJ8bBUi+GWwL+7DI3qArqEhl4tC0BV0GPgVc8OM5agkLfzxpprMtc4nTaL11NA7 e9h7p3C73z5HMEkfQo+miXTIkg3i9y3YbPLMlaYOMFQ9+IcDCe7ZUDP/MZ+GuZJu0CUx ON2EiMhIElSbpsB+74Ziyq7dbcrf8Fr0vGfIxVGiJYeu3e2djDhmk7mkCnZMgekRfqOk ualQ== X-Forwarded-Encrypted: i=1; AJvYcCUvpvqmhU1vx/apqMP1ywOcT/8erVe9pY8azzOoAc/sk7KIdPVN+28ZkG5Frt81UnHk5mg96DjUroo=@vger.kernel.org, AJvYcCWUzkL+4mQ4QuSTO/QBB1KF87E+GsXLgVgyGgJeKZfUA7PcGCOPohWmbOqTQlDyVV7oVa2bGGsqHlKn2EO3@vger.kernel.org, AJvYcCX5RrNVjJdojTECwh3bon4GOEwomrvsXlm+FQ1hJhaf5UL8XSn3y4y8dQpX4LPepoh6pmEeyFPdpK2+sU8=@vger.kernel.org X-Gm-Message-State: AOJu0YwgMPTmYVDMfEsmKr5WUwQf3J+EKNlbMlUmjCwQOUV1qluwQ36Q XHS/SnIT5H1iBIXY/CxQ7pPIaNiO1EI1mGwXBmpvqzONPi61FO0C X-Gm-Gg: ASbGncsixDxsMKlQAox8/qxne/KVX07bcmvWuM/Sou/dDVOBRFx6NwQgCffoeHnezYC V8hooEPTMyjxopWU/8FAPXRAeZua1Tmtnmb8rEdSKaXZk+ypTqEXx4ttERzK7TQv/6TJRccQ5bK lOh5/KwDi7iRUek5mTdoOAVYSMWMrAVUv0Lrjjn8QmASAMnrpIFAc8S2okjWtYrF+XukZ5jomU6 nVjCV28/5O5pxem8nsmxc5N6wB5Dvxnm4FMPd23g5kg1UTD/crOnw3QLf9ANxFlsqQztoWjwzDG PIXFYNbi1xb3RZHtsp4fPefwfIro9lP1FrLKNIU= X-Google-Smtp-Source: AGHT+IHP4tiUoF4VE5t8yqErlXRDEFrKzeoMsISgTFum/RclAe3Oe9nIDZoIagq+j0tO+qyJdJM/YA== X-Received: by 2002:a05:6000:2a4:b0:38d:d533:d9a2 with SMTP id ffacd0b85a97d-390e168d3demr7509038f8f.13.1740755865717; Fri, 28 Feb 2025 07:17:45 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43b694524c6sm63096825e9.0.2025.02.28.07.17.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 07:17:45 -0800 (PST) From: Cosmin Tanislav To: Cc: Wolfram Sang , Tomi Valkeinen , Luca Ceresoli , Mauro Carvalho Chehab , Romain Gantois , Arnd Bergmann , Greg Kroah-Hartman , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Cosmin Tanislav Subject: [PATCH v3 6/9] i2c: atr: allow replacing mappings in attach_addr() Date: Fri, 28 Feb 2025 17:17:23 +0200 Message-ID: <20250228151730.1874916-7-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250228151730.1874916-1-demonsingur@gmail.com> References: <20250228151730.1874916-1-demonsingur@gmail.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 It is possible for aliases to be exhausted while we are still attaching children. Allow replacing mapping on attach by calling i2c_atr_replace_mapping_by_addr() if i2c_atr_create_mapping_by_addr() fails. Signed-off-by: Cosmin Tanislav --- drivers/i2c/i2c-atr.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/i2c/i2c-atr.c b/drivers/i2c/i2c-atr.c index b9d63efce8e3..80a76fe4bf51 100644 --- a/drivers/i2c/i2c-atr.c +++ b/drivers/i2c/i2c-atr.c @@ -539,6 +539,9 @@ static int i2c_atr_attach_addr(struct i2c_adapter *adapter, mutex_lock(&chan->alias_pairs_lock); c2a = i2c_atr_create_mapping_by_addr(chan, addr); + if (!c2a) + c2a = i2c_atr_replace_mapping_by_addr(chan, addr); + if (!c2a) { dev_err(atr->dev, "failed to find a free alias\n"); ret = -EBUSY; From patchwork Fri Feb 28 15:17:25 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 869476 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A198D276056; Fri, 28 Feb 2025 15:17:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740755872; cv=none; b=tPhL6RgXbDhfSBwGdFj6DgzwiwgFhzfTKsja9fAb54eNMIksriCHE7k9C1MZmiHvK2iFFqqRw4ATOw6S98urWNVo2d3an7lkTnEkEyejkpUG5qawxV28mvv0T3RaRGg9qVi7HQxWM3VT1WEaXZQaNvVDJH71JhRuPFy1ArDPEfk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740755872; c=relaxed/simple; bh=zySZKiDk2pU70jsTWXkfe6mit7pyCQg+lVYRE9yFqqk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jgs910y2NlVBDHcQlJcu8Ha6dW8jag4n/rTokqLMMCTpBlCWvxZpR4Ap7y5oZz5b/kCyDfVx06gJZjkgkUEIovtVH5EOujP+j/68RkJQxanla3lWYBB/6arWpWFKCG0eKGYRcCnLsmDhx2jYQtnpV/jbsweREt+wygEd3X3Hky4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=aK8b6/TH; arc=none smtp.client-ip=209.85.128.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="aK8b6/TH" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-439a4fc2d65so23726025e9.3; Fri, 28 Feb 2025 07:17:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740755869; x=1741360669; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=dH8Nv3XF23c+759r1qgbeESvQOxywxLnq33sKq9oyz8=; b=aK8b6/THC54rkJpHI54JMrGiWeZ8Gdal/ad1Nhq1hDS1dHnKZoxbG8kOO7bQVqQSbS wmQ154D6wjJt3QgbrEIlUur2BS/wQKQuFqATtgmwxPO4Hn5wsN+ZwSjK8ka2gJ/A6qAJ f1NDBa7qWDKhwXTq+bfNxIJpdPNBaRzCJgwQo8kjcWSR0x4CFugPr7NJOF0vyTpNrT6C 1noXKLjxFwyKQX7mRYWHm9rxEYGvtPUD58wVr1fOetAPPC20u3YPbJ+4UnaBeB5qDN+U OH6mNuj/giXCiWGP/BBh+Lg405iUkqauyHlCnVp6ihuW9uv4gWupijvVQDN7xjHP0T42 Rr3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740755869; x=1741360669; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dH8Nv3XF23c+759r1qgbeESvQOxywxLnq33sKq9oyz8=; b=YFkki/DnGWKuGtfEYr1XLN3z9m+U6DcxQQVtV2gQJ9D+55BCObSl+aBSLHnHHt6PPa +Q3F63ICjmzWMY6HxX8OH9ovq+KrFtvG4q0HeNIxtv8Us2J83Ol6JFLk11TwK1dG8Q4n OT7Z7XzHcxg4C/FcQDILS3ZEVlTiczCjqxyonXcMCc6nsn9qXQV3KJvoh8545pE7WOdu kEmF5cfRYFkQBDdURLam2JaoVOjlbM6OYSI3RV1leoLIpsMy65Qhc2vrXPmGZqbxIcOw aAUdhGNS70wYn5E0zCL8Ho/Z/FML1g9j1WlDzaZ55wW3nf/NUqXCw2XoG0+zW0PpuMsw j4FQ== X-Forwarded-Encrypted: i=1; AJvYcCU6Zaz6zXui444bcFqkIi4TY29+hIMc8nFzYnvSGV4rttbESjCBMxQZVUOmB/wPt6Xk+jQ6y8vzi98=@vger.kernel.org, AJvYcCVxnfpOiSHsiC5/9n/ghySMvQC4nRrqYVSJI2IKBY7rNj6YtZpTPN+JFOF/oPLnV3vJFlkRpEdBPFxlAIE=@vger.kernel.org, AJvYcCWIoIYYKecCy8tMJMAfpLaf8aCHx3ZPh3PipV9JzjCX+GTxV6cAAiM2XhYm5QjcURLNzpda7DG+kWjtoPNN@vger.kernel.org X-Gm-Message-State: AOJu0Ywheazc2P4HEUTQsiTS6Ct3CJhZkHXOfrzadx1WKzSoOf/ydGp3 r/oNjB48U1qUUz365tSYoBzRDOHvvIppF2xvF5coBBlwRykscq7y X-Gm-Gg: ASbGncvhGA3chpzR75/YkFfuqcpBS8rZUNiIbVo4EKlmE+lxEHenhEhQjKwzPDA8mM9 yS0P4BHuHnodGl62RJCxe7YWwqkbDrNBlb6GJKnEOtP3TmcYejovxKPTuTap5Z8muWHs3TaX//D m5MWzjLu1fI9LJArlh8nRgvzNIJLLUueosntaL/8ABJj1Kd9oo2690yBj7TNbCGafeW1B+mP5+h ieWSJs7jaCjSz6NDqkcpF4svBev/dqzYYgk/LxvrVIJGnaI8vEosDWpMqBs6w4nZffX+rYDv7/W 8O+K5Xc40Y9FaDAwMGuiLhCdi1JY52HsbncK6+8= X-Google-Smtp-Source: AGHT+IGRCq0UXQ7og5IS+ewv0s/9Bb61n5faLSQSAEyZCLqb+fhWTneTwPRLwPq2lwsS5ZjxwOIIpw== X-Received: by 2002:a05:600c:1c05:b0:439:98ca:e39b with SMTP id 5b1f17b1804b1-43ba675c3bbmr40163335e9.29.1740755868753; Fri, 28 Feb 2025 07:17:48 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43b694524c6sm63096825e9.0.2025.02.28.07.17.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 07:17:48 -0800 (PST) From: Cosmin Tanislav To: Cc: Wolfram Sang , Tomi Valkeinen , Luca Ceresoli , Mauro Carvalho Chehab , Romain Gantois , Arnd Bergmann , Greg Kroah-Hartman , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Cosmin Tanislav Subject: [PATCH v3 8/9] i2c: atr: add static flag Date: Fri, 28 Feb 2025 17:17:25 +0200 Message-ID: <20250228151730.1874916-9-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250228151730.1874916-1-demonsingur@gmail.com> References: <20250228151730.1874916-1-demonsingur@gmail.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Some I2C ATRs do not support dynamic remapping, only static mapping of direct children. Add a new flag that prevents old mappings to be replaced or new mappings to be created in the alias finding code paths. Signed-off-by: Cosmin Tanislav --- drivers/i2c/i2c-atr.c | 6 +++++- include/linux/i2c-atr.h | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/i2c/i2c-atr.c b/drivers/i2c/i2c-atr.c index b3ad70a9d5f8..699cf23185c0 100644 --- a/drivers/i2c/i2c-atr.c +++ b/drivers/i2c/i2c-atr.c @@ -337,12 +337,16 @@ i2c_atr_create_mapping_by_addr(struct i2c_atr_chan *chan, u16 addr) static struct i2c_atr_alias_pair * i2c_atr_get_mapping_by_addr(struct i2c_atr_chan *chan, u16 addr) { + struct i2c_atr *atr = chan->atr; struct i2c_atr_alias_pair *c2a; c2a = i2c_atr_find_mapping_by_addr(chan, addr); if (c2a) return c2a; + if (atr->flags & I2C_ATR_F_STATIC) + return NULL; + c2a = i2c_atr_create_mapping_by_addr(chan, addr); if (c2a) return c2a; @@ -541,7 +545,7 @@ static int i2c_atr_attach_addr(struct i2c_adapter *adapter, mutex_lock(&chan->alias_pairs_lock); c2a = i2c_atr_create_mapping_by_addr(chan, addr); - if (!c2a) + if (!c2a && !(atr->flags & I2C_ATR_F_STATIC)) c2a = i2c_atr_replace_mapping_by_addr(chan, addr); if (!c2a) { diff --git a/include/linux/i2c-atr.h b/include/linux/i2c-atr.h index 5082f4dd0e23..7c6a9627191d 100644 --- a/include/linux/i2c-atr.h +++ b/include/linux/i2c-atr.h @@ -20,8 +20,11 @@ struct i2c_atr; /** * enum i2c_atr_flags - Flags for an I2C ATR driver + * + * @I2C_ATR_F_STATIC: ATR does not support dynamic mapping, use static mapping */ enum i2c_atr_flags { + I2C_ATR_F_STATIC = BIT(0), }; /**