From patchwork Tue Feb 25 11:39:29 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 868298 Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.46]) (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 E2C71267B1D; Tue, 25 Feb 2025 11:39:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740483590; cv=none; b=EAxFVHuDJ6YOsgBjNjoLdc0tXP3IOtXny58UfA0yT2AREEjQ2bZFg1P3A7WySLAwB/4DOXPva+TfOl2/ngU+ROhGX/UVkIypMrYrcG5JrO1DTyjZst6xqNqGRgjG0Z/klcbR39VWwxqfyQkb1+WBngmbbhpzcedqCFplu1ACPEI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740483590; c=relaxed/simple; bh=Z3q6d2KoYcwqI1FYMKRCPsrGbXms4OIkpAtzw9QVUnQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DNh/ubZhVzzhBgFUePNMXWr9Kog0CnaTj/cuo18RGP5b+ODbYHXwnVZYiPU12t1oKPLwXHH9qgmTUWB6WxOeLS4PeKFbMlkFuj+Wnnht2MgGUZPZB5YyUL2Xg5MAgRAUzHWO6PaduE3iZzJa9nml9ivJwagKYLZCp5QKBJK8LbY= 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=hUFQnKia; arc=none smtp.client-ip=209.85.218.46 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="hUFQnKia" Received: by mail-ej1-f46.google.com with SMTP id a640c23a62f3a-abb75200275so869368166b.3; Tue, 25 Feb 2025 03:39:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740483587; x=1741088387; 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=uwTefxFXTw38FMjS0DrFd4KzMWhLSYAuwn1lwiNQkZk=; b=hUFQnKia8vzUo9LRiKj1YXPi5RNb00oe6bwZf2BMzGj08IdpvAWIh31e45x37QxiPH 1UVRCwqjhOAbdYZEGE2uvRlxuN18xpSZTMVZRQNElirV49A1tSjOcM/cJQSFJoMY2o93 /pLmXEtealG7ZUhdeAHxRLfw86h39y0x3GcD+a/ZvrNk3RPL0mGdroNCT2w+FhcqxOY1 YakalgzBXm35EYysmrEo2sWtX6JT4bluIzzU8B6JnuAyou7Q44ykiWbUbQCXwTLLpU7N ZScw4FBgCBXoIHNHzIKOzO9/foy56MIdS3+YpS0saQz/L7oUNNkAkxUAErIxtAl72khP wR3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740483587; x=1741088387; 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=uwTefxFXTw38FMjS0DrFd4KzMWhLSYAuwn1lwiNQkZk=; b=OhkGHnSlCn6SWaVgNFUZSnA07xraBOBs2iDfaVqoWgLR8gHRhTjg54rQcQzVd5U5Fw 03kd27DSPCSPhxa3lT3ke+xfZ24OiyPXKTFgz5e2ng9b32Tdwbr+RB7wnuy82yTbk+fj xAQXsngnydvin2Tb1O+kGkZ2QtIHivVnCT9J58/1HZIDjH7efukJW8dmlEFzfcEzoQrE gU6/Z4Dr+IR+dP+VYiuUb3/o8O4dPX3TPx/YmTHSRFPGeM4ubIGBFJIkbsrZH+sNd23E 5+KIxavfak/uYyp2cR86J7+TaeByxt/Ay//qZwMjhyq7AUYZlrrEWw8rRomwtUo0MZZk uypw== X-Forwarded-Encrypted: i=1; AJvYcCVEg6NobtVdd036HSvBeR5SyzB9PHqrwKArNViD4+i1TkmhdNuW0jrnGRvGHG3UJBlKTFpbFjAjapfYOKc9@vger.kernel.org, AJvYcCWszRkJ8lZtW89SZw2gIiBLInAv9hoq7TaNkorKaVvoUDWfL/MRDbrzBNksFv5aasEWfh/tFE6OBqg=@vger.kernel.org X-Gm-Message-State: AOJu0YzVsTNzkHe5WfQOYmd4gMi+N8wczckXETjH0bUxpTv59AvNfyw4 prQ7mkLz3bJBj1VT5zLEOruniLBuMsaTLkEfBhH6zXhiRYNp0w0y X-Gm-Gg: ASbGncvNXaZEHmQ2IfLQmwI9qvlqDA2CmX/n2SRfl3V9ukNK2OMWhmknJaFxeBw4hbu beaI4zJ/POxYLziNwsVon0lHXaK0WGvSDd3U6QvqK3A31LtiRBoQpQE7lSixhyw9xeh7sOMm30h NUOzruQFcmljBtYdDZt0FqQPLQ/bGz+rDNxqzF3Qgmc9fF/j6SjqKZYO+VoPAYNdrzYHrdY3JAO Zdr2JjjGsQhgUf5bfOCLpTTM5O0iquEL6lN47D2gEZepXDxdiun96xRhAZPS5zzyZypomNR12wC yObDet6qz8mwIQN/XMGx/eltRnS1E6Q2rV7CRhI= X-Google-Smtp-Source: AGHT+IGFDRm/ulrJyQU1OaBedXIkQQUTa1wFTjnD50Pp1SafglMTGdgwys7LwNzPYvUjOcjrBBiAdg== X-Received: by 2002:a17:906:80e:b0:abc:c34:4134 with SMTP id a640c23a62f3a-abc0c344449mr1328292966b.18.1740483586327; Tue, 25 Feb 2025 03:39:46 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-abed201231dsm125510166b.115.2025.02.25.03.39.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Feb 2025 03:39:45 -0800 (PST) From: Cosmin Tanislav To: Cc: Romain Gantois , Tomi Valkeinen , Luca Ceresoli , Wolfram Sang , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Tomi Valkeinen Subject: [PATCH v2 1/9] i2c: atr: Fix lockdep for nested ATRs Date: Tue, 25 Feb 2025 13:39:29 +0200 Message-ID: <20250225113939.49811-2-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250225113939.49811-1-demonsingur@gmail.com> References: <20250225113939.49811-1-demonsingur@gmail.com> Precedence: bulk X-Mailing-List: linux-i2c@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 From: Tomi Valkeinen When we have an ATR, and another ATR as a subdevice of the first ATR, we get lockdep warnings for the i2c_atr.lock and i2c_atr_chan.orig_addrs_lock. This is because lockdep uses a static key for the locks, and doesn't see the locks of the separate ATR instances as separate. Fix this by generating a dynamic lock key per lock instance. Signed-off-by: Tomi Valkeinen --- drivers/i2c/i2c-atr.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/drivers/i2c/i2c-atr.c b/drivers/i2c/i2c-atr.c index 1a6ff47b4200..39b3b95c6842 100644 --- a/drivers/i2c/i2c-atr.c +++ b/drivers/i2c/i2c-atr.c @@ -68,11 +68,13 @@ struct i2c_atr_alias_pool { * @atr: The parent I2C ATR * @chan_id: The ID of this channel * @alias_pairs_lock: Mutex protecting @alias_pairs + * @alias_pairs_lock_key: Lock key for @alias_pairs_lock * @alias_pairs: List of @struct i2c_atr_alias_pair containing the * assigned aliases * @alias_pool: Pool of available client aliases * * @orig_addrs_lock: Mutex protecting @orig_addrs + * @orig_addrs_lock_key: Lock key for @orig_addrs_lock * @orig_addrs: Buffer used to store the original addresses during transmit * @orig_addrs_size: Size of @orig_addrs */ @@ -83,11 +85,13 @@ struct i2c_atr_chan { /* Lock alias_pairs during attach/detach */ struct mutex alias_pairs_lock; + struct lock_class_key alias_pairs_lock_key; struct list_head alias_pairs; struct i2c_atr_alias_pool *alias_pool; /* Lock orig_addrs during xfer */ struct mutex orig_addrs_lock; + struct lock_class_key orig_addrs_lock_key; u16 *orig_addrs; unsigned int orig_addrs_size; }; @@ -100,6 +104,7 @@ struct i2c_atr_chan { * @priv: Private driver data, set with i2c_atr_set_driver_data() * @algo: The &struct i2c_algorithm for adapters * @lock: Lock for the I2C bus segment (see &struct i2c_lock_operations) + * @lock_key: Lock key for @lock * @max_adapters: Maximum number of adapters this I2C ATR can have * @alias_pool: Optional common pool of available client aliases * @i2c_nb: Notifier for remote client add & del events @@ -115,6 +120,7 @@ struct i2c_atr { struct i2c_algorithm algo; /* lock for the I2C bus segment (see struct i2c_lock_operations) */ struct mutex lock; + struct lock_class_key lock_key; int max_adapters; struct i2c_atr_alias_pool *alias_pool; @@ -679,7 +685,8 @@ struct i2c_atr *i2c_atr_new(struct i2c_adapter *parent, struct device *dev, if (!atr) return ERR_PTR(-ENOMEM); - mutex_init(&atr->lock); + lockdep_register_key(&atr->lock_key); + mutex_init_with_key(&atr->lock, &atr->lock_key); atr->parent = parent; atr->dev = dev; @@ -707,6 +714,7 @@ struct i2c_atr *i2c_atr_new(struct i2c_adapter *parent, struct device *dev, i2c_atr_free_alias_pool(atr->alias_pool); err_destroy_mutex: mutex_destroy(&atr->lock); + lockdep_unregister_key(&atr->lock_key); kfree(atr); return ERR_PTR(ret); @@ -723,6 +731,7 @@ void i2c_atr_delete(struct i2c_atr *atr) bus_unregister_notifier(&i2c_bus_type, &atr->i2c_nb); i2c_atr_free_alias_pool(atr->alias_pool); mutex_destroy(&atr->lock); + lockdep_unregister_key(&atr->lock_key); kfree(atr); } EXPORT_SYMBOL_NS_GPL(i2c_atr_delete, "I2C_ATR"); @@ -757,8 +766,10 @@ int i2c_atr_add_adapter(struct i2c_atr *atr, struct i2c_atr_adap_desc *desc) chan->atr = atr; chan->chan_id = chan_id; INIT_LIST_HEAD(&chan->alias_pairs); - mutex_init(&chan->alias_pairs_lock); - mutex_init(&chan->orig_addrs_lock); + lockdep_register_key(&chan->alias_pairs_lock_key); + lockdep_register_key(&chan->orig_addrs_lock_key); + mutex_init_with_key(&chan->alias_pairs_lock, &chan->alias_pairs_lock_key); + mutex_init_with_key(&chan->orig_addrs_lock, &chan->orig_addrs_lock_key); snprintf(chan->adap.name, sizeof(chan->adap.name), "i2c-%d-atr-%d", i2c_adapter_id(parent), chan_id); @@ -835,6 +846,8 @@ int i2c_atr_add_adapter(struct i2c_atr *atr, struct i2c_atr_adap_desc *desc) fwnode_handle_put(dev_fwnode(&chan->adap.dev)); mutex_destroy(&chan->orig_addrs_lock); mutex_destroy(&chan->alias_pairs_lock); + lockdep_unregister_key(&chan->orig_addrs_lock_key); + lockdep_unregister_key(&chan->alias_pairs_lock_key); kfree(chan); return ret; } @@ -872,6 +885,8 @@ void i2c_atr_del_adapter(struct i2c_atr *atr, u32 chan_id) fwnode_handle_put(fwnode); mutex_destroy(&chan->orig_addrs_lock); mutex_destroy(&chan->alias_pairs_lock); + lockdep_unregister_key(&chan->orig_addrs_lock_key); + lockdep_unregister_key(&chan->alias_pairs_lock_key); kfree(chan->orig_addrs); kfree(chan); } From patchwork Tue Feb 25 11:39:30 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 868662 Received: from mail-ej1-f50.google.com (mail-ej1-f50.google.com [209.85.218.50]) (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 4AAB1267B7B; Tue, 25 Feb 2025 11:39:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740483592; cv=none; b=ZxxWMN47PtMVs7+BYqUpxN0B5QYCj1eq5RxprWo6mncL82Ca+ljxaV0uivdH1znA98j8O44QjA1ue66bFRnlIYpaWkV/iPb5+DuDFzVjYPqnjCcvNgEGe+g/GJjZI61HqUOSCw2/mfoPnWuD66VVQ3GZtbl97ZL6s774E2Ir8Es= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740483592; c=relaxed/simple; bh=Ehblm3cjI7Va9Jt7P+WkFGZKHXp6Yb7SLCvyloMtFZ0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IbcrLg9XNrGoDfJCUEP/M+Gq0isWkN5/yl3egSamYu5m06T7PPuzFYuuawgm93EuRFyXblW1JAa6SiEYo2DDk3ZPmi6iw8PRBVLEZXnqreldxlsW3qQ27wXbz+tgrZyvP47p7ZjGDcV7i8tzIzJ0Mw5aLMXAMHQT9LNXhKUN4aw= 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=RAujPyuL; arc=none smtp.client-ip=209.85.218.50 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="RAujPyuL" Received: by mail-ej1-f50.google.com with SMTP id a640c23a62f3a-aaf3c3c104fso941748066b.1; Tue, 25 Feb 2025 03:39:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740483588; x=1741088388; 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=pjusgwzWvX4Dazg0IOWwufajBNnxmVFstpFXYd3AHkI=; b=RAujPyuLNxvtmEjYYnLh0qSwA0mo8LBuKXwDJfFH6lqv0Az5w6d6Tpltr6TDGgJcij PTIxc70OTkTcNQBqU5Cs6eYVIFr4iXzX0KfGHmzXh6V9M9Vndts3/utiqhrb/NBmTZjD p+gGbIOvrKvhpEr9jXB7psOnNdPWm2O9pH1W0T0+iNAYdviSQ/NHYkwz41TRnCm4Cd5V nhHoqw8NVvBWzeRYjbn2ocavzWI5udHUvg6V2yyPrpdt8UXLgV4S0bgAF8qofVe299Gt yxtp5HC+dhcPcUgCCjUrEyQL/r1TBIQqzcHk74TtR/BUbFKeKxKCdwnsVzcMc2YaEvCh iX2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740483588; x=1741088388; 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=pjusgwzWvX4Dazg0IOWwufajBNnxmVFstpFXYd3AHkI=; b=q21D7JGnWdfr70v6RpHEOesurbrSQmoSO644O4PYcZVmMOIom/g1+YhvwpHbOCAMej UaIrhUhMqwdjQeakUtOwptjd6I6IwUPziabuz0PfIat/l+VCecPOhtyE309O8dz5Nzdk yC1chYawVw/5tAcGRJ8Hm/UKKbr6oMsgphrddqh7POIHUh9dcpBenYUwlNd9NtwS4fAw huBAHhCSMPJfU0QCRBL7fRWYF3u+yZazxRBEwTthSs4TOUelkaAtqYEAtryHo5osbcTN PZuAMbPyyI8fdYuTjKBLg6l9jPkyDu60Za7uEydpc5fXGo5Cok+TUETrtkZOLw9cLnIe rW1g== X-Forwarded-Encrypted: i=1; AJvYcCXRPOQgS8v1bCRjyyFMQE/siRoamGOkqThCRtvnu4I4WB01RivCPwPQEGJJIzO42dyCxoW4ywdVlds=@vger.kernel.org, AJvYcCXz4ptWQ+3ab/nMBQq00LjQdW1dulsNsBUZp74D4xqe9rz1ibaaqescwWPuHDKLSBYSLqBN9lF7/MYoyY9S@vger.kernel.org X-Gm-Message-State: AOJu0YypxkV0eMzX2a3DzGh54p8v6/Gi/S00JOEl2RiOXHesRc4QPgKP +Er7SZuJGkPGigW5+nz3XHKsRG8G/FfO/26UK7P1MhxsoqqgtXBr+umxRg== X-Gm-Gg: ASbGncsH21kWkEKE3AoFaN1T5MKh3EJ8p+k5UmNq3nGHR6hovdjolBPYgWUBBKbgYCe j21PVRoVZmJ8JtKXv2YZ2/YQaMXNSt/nnpYjcQJm0mvygOzq9Tsk8IFWOP/w222mcFJCvQXNsOL c9wvTeVuJJZoB/7zznvgI0Iwx64JeGdHkcOLRm+ycgl6hrvXlFdsuh4u/DaJc1r5eS++tZaGrpy ++2QJ6X+Erc4V0N376ITsf7gobDMrhwtuM5wD/dBDcIHm13wUM/TPQYwkAIxs8uXlJ5xxf/CIoU FCjowIgBQtcU/JJelfz0Q9khNc1ijy7XjizLLiI= X-Google-Smtp-Source: AGHT+IHYES91fca7Vq4SToaJTAXeyc8f6g6AC9MP0HMLBt2z65jydwpqk5YBylEDb6ZwrvDClcrXFA== X-Received: by 2002:a17:907:78b:b0:abb:eda0:774a with SMTP id a640c23a62f3a-abc0de15e4fmr1586501966b.35.1740483588332; Tue, 25 Feb 2025 03:39:48 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-abed201231dsm125510166b.115.2025.02.25.03.39.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Feb 2025 03:39:48 -0800 (PST) From: Cosmin Tanislav To: Cc: Romain Gantois , Tomi Valkeinen , Luca Ceresoli , Wolfram Sang , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Cosmin Tanislav Subject: [PATCH v2 2/9] i2c: atr: unlock mutex after c2a access Date: Tue, 25 Feb 2025 13:39:30 +0200 Message-ID: <20250225113939.49811-3-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250225113939.49811-1-demonsingur@gmail.com> References: <20250225113939.49811-1-demonsingur@gmail.com> Precedence: bulk X-Mailing-List: linux-i2c@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 i2c_atr_release_alias(), i2c_atr_destroy_c2a(), and c2a access, are protected everywhere with alias_pairs_lock, use it here too. i2c_atr_destroy_c2a() accesses the elements inside alias_pairs, which needs to be mutex protected. Signed-off-by: Cosmin Tanislav --- drivers/i2c/i2c-atr.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/i2c/i2c-atr.c b/drivers/i2c/i2c-atr.c index 39b3b95c6842..f6033c99f474 100644 --- a/drivers/i2c/i2c-atr.c +++ b/drivers/i2c/i2c-atr.c @@ -544,8 +544,6 @@ static void i2c_atr_detach_addr(struct i2c_adapter *adapter, return; } - mutex_unlock(&chan->alias_pairs_lock); - i2c_atr_release_alias(chan->alias_pool, c2a->alias); dev_dbg(atr->dev, @@ -553,6 +551,8 @@ static void i2c_atr_detach_addr(struct i2c_adapter *adapter, chan->chan_id, c2a->alias, addr); i2c_atr_destroy_c2a(&c2a); + + mutex_unlock(&chan->alias_pairs_lock); } static int i2c_atr_bus_notifier_call(struct notifier_block *nb, From patchwork Tue Feb 25 11:39:31 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 868297 Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) (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 DD5D2267B82; Tue, 25 Feb 2025 11:39:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740483593; cv=none; b=ta/2H5//hunvJByXqJNQlT1TL/x2e7LQG1CdiKSy2Wpb8y4lD2t0wMxQ081gAs72o6UM64SDRGFJUXfA+8vYgpsE7JP7Ry24GFYN5PBJqjkHuj30unxTBiVbrj30sqecmqnx4UnbQw8x13NHQwyTuGfrFwpumL1En/SVILIWa9I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740483593; c=relaxed/simple; bh=PISapsmI9qRM5gfeVkdF4JKCyiQMUadO3rWiMlD7RFg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=o70VDE7cwKfcyb+13NmB49QqY7oTOQX0zV8pjquRpfwnm1PLR6Bbo38SKvULgGm72fKzWcY/ri0LGim4cGRx6p/GYWGtRzJ1n8fINvlOY+B0D3G5EvxdBdA1aM3KQMf768xOj00buxf2E7s7PTgNu1HlMchoOQRoPoAHAKPUr/A= 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=NjVqzy+A; arc=none smtp.client-ip=209.85.208.50 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="NjVqzy+A" Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-5e04f87584dso8253332a12.3; Tue, 25 Feb 2025 03:39:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740483590; x=1741088390; 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=02Nk7Tu7oSWRbXywdmWr43MleXDMMaL38pYc/cnl7sc=; b=NjVqzy+AF/dHukYneZaAYkt9oy4uPPDb6nzIeUXApsUGJx10bEQD0hh50Uki+qy1gf 90Nicuoi0+8lhi7knvYSIYifgXzzHo+XYIQcVDYZx23oBuq857P/FE5bGC1Fzk0qkxxB md/U/LVvo2pv6IDvEo1dR6bLfMJScTCdV6EiK6pyMkCY2l2TQYbf/jBel6HQnroHG+Jy gKmysbnM/uQUX9ZTPH+LTjRr8lCfZvWCAq3zXVMT9y8/TZH+D5FE3s/O01AUOUYp/RRP pNU+4giiUSNbWbDq/aMnjfKOURNE31Jto2bgROeBlVN5L7+7vqEK30R/f7JPcTaMUmSs VSwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740483590; x=1741088390; 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=02Nk7Tu7oSWRbXywdmWr43MleXDMMaL38pYc/cnl7sc=; b=euWwVuyCyP+LM/bHwGR4lMEstLtsOZH3Z3fbigZZllIS+Plos2WHSUgFzVglfYukY3 sfkFnnKPcTX1HjUppEyrrcMy/a0Fkg5tWxf8efa8fJblnTViDhX3QvB0bTg9K39pv8qm xKDFrl3vwIDWp3/KioDYqem9qr15uRn9fx5G8tFU2gnRUmlF1ARY6lEQEw9gDM19huAe XHJ6EmxLyn6A79G5wsFwOe/9UGjdYgWP7qwWffdQynMcNvbeDRbF9xv/tfun46yEbj89 aJy/3FPR6rYRXB3KHK1zHV9ONscE26AogdePERxPtro92aSU/R88xfaPjKWOqJTpycrB eebA== X-Forwarded-Encrypted: i=1; AJvYcCUesDH8RkYHzfewJI5CVLwjQvCzq4O8wm/QPcI7YAPqYYXryLz0o7c4IsGiIoU4AnKVt5ck1B/nbvS2Uzka@vger.kernel.org, AJvYcCW4qZCNrHx6dt8trNP1JFOBsooKOa+lNnbbVTLLIGKWXtKhYp/SBp9T/yH7g9pqTFPBSZlB9+Ky1so=@vger.kernel.org X-Gm-Message-State: AOJu0YzXd+ZXNQuyxYb+QoYcOy1Iu2VJ7UYfKJNx/38HEIIZUXzpLfsg 56Z9mKQDf2+D6Svf5aI+3Bmj2Z/IDjZLF89PD/gwJ7IgiQVqTQI2 X-Gm-Gg: ASbGncsHUEQmAsh2bMFSR+TRAhu+ey7t3589qKyUAJXNwpiWaRw1fdP+cm8x+o7/q3r 8pK3kg61+oMNUBKpjTiX+TDkkeO9AyXktT3iChoPdjNoq/hORhjTWaYTyxarN3qLw83PPdCtLly uuYvhuvK2bBgpcqtfs8hhdWliCY9y7B+pGGiiRzAloXA0Y0GgLpOG/bmn7vglhEkFguo5hnTo4l udSmMC5/B+1ZqfiCYo/Mql+7+eAzKkRbI4WUDJZ3prmTeKN4fjLZoh0eVtIKV6vnNjGJORabjsI +NrHcmcJv+7e+biDVm6V9LpnGrAPfj/tHzAIlAk= X-Google-Smtp-Source: AGHT+IGEtrP1t7R3oNNfJRkyQQplkyx3FK3zYN2M9tcnU9p8vq3Z/aM29j1E1o2X1xj8tJPaMGrq8w== X-Received: by 2002:a17:907:8a91:b0:abb:9a1e:47cb with SMTP id a640c23a62f3a-abc09e49525mr1488485466b.55.1740483590034; Tue, 25 Feb 2025 03:39:50 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-abed201231dsm125510166b.115.2025.02.25.03.39.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Feb 2025 03:39:49 -0800 (PST) From: Cosmin Tanislav To: Cc: Romain Gantois , Tomi Valkeinen , Luca Ceresoli , Wolfram Sang , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Cosmin Tanislav Subject: [PATCH v2 3/9] i2c: atr: find_mapping() -> get_mapping() Date: Tue, 25 Feb 2025 13:39:31 +0200 Message-ID: <20250225113939.49811-4-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250225113939.49811-1-demonsingur@gmail.com> References: <20250225113939.49811-1-demonsingur@gmail.com> Precedence: bulk X-Mailing-List: linux-i2c@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 A find operation implies that a null result is not an error. Use get naming to clarify things and to prepare for splitting up the logic inside this function. Signed-off-by: Cosmin Tanislav --- drivers/i2c/i2c-atr.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/i2c/i2c-atr.c b/drivers/i2c/i2c-atr.c index f6033c99f474..f2485d1670a2 100644 --- a/drivers/i2c/i2c-atr.c +++ b/drivers/i2c/i2c-atr.c @@ -241,7 +241,7 @@ static void i2c_atr_release_alias(struct i2c_atr_alias_pool *alias_pool, u16 ali /* Must be called with alias_pairs_lock held */ static struct i2c_atr_alias_pair * -i2c_atr_find_mapping_by_addr(struct i2c_atr_chan *chan, u16 addr) +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; @@ -335,7 +335,7 @@ static int i2c_atr_map_msgs(struct i2c_atr_chan *chan, struct i2c_msg *msgs, for (i = 0; i < num; i++) { chan->orig_addrs[i] = msgs[i].addr; - c2a = i2c_atr_find_mapping_by_addr(chan, msgs[i].addr); + c2a = i2c_atr_get_mapping_by_addr(chan, msgs[i].addr); if (!c2a) { dev_err(atr->dev, "client 0x%02x not mapped!\n", @@ -428,7 +428,7 @@ static int i2c_atr_smbus_xfer(struct i2c_adapter *adap, u16 addr, mutex_lock(&chan->alias_pairs_lock); - c2a = i2c_atr_find_mapping_by_addr(chan, addr); + c2a = i2c_atr_get_mapping_by_addr(chan, addr); if (!c2a) { dev_err(atr->dev, "client 0x%02x not mapped!\n", addr); @@ -536,7 +536,7 @@ static void i2c_atr_detach_addr(struct i2c_adapter *adapter, mutex_lock(&chan->alias_pairs_lock); - c2a = i2c_atr_find_mapping_by_addr(chan, addr); + c2a = i2c_atr_get_mapping_by_addr(chan, addr); if (!c2a) { /* This should never happen */ dev_warn(atr->dev, "Unable to find address mapping\n"); From patchwork Tue Feb 25 11:39:32 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 868661 Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.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 759B326772C; Tue, 25 Feb 2025 11:39:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740483595; cv=none; b=OrMW0A3tQPA8g6tDyXjQR0tcPcXAX0EZvw5OALMNjT4lc67vg6MBiPxUrlH3xudeL8Ser+DIBAgT2XWA7hHKXpkTk3bSSKrNmey2lfxgq/k8tBwqJwbMZJB3xE+mfqYSpzPVl/wigJm7+qIoQxVpO4PEGCnlAT1qPgy9cqI8Wuw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740483595; c=relaxed/simple; bh=7TxkqXWDv9/J0gExxnhE5AVNOVkTjQZXHN47CMBPykw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cJZGOKtuLiBde0P6zRN9iiEkK/R8IeJ4RqeXo6HKttQFdqpVu3vdTThQ6/m6chzHnW20Mv0QTF5zNmmdhPjIWko+2c8zsvP7o71kBYmJ0f0S3Ohc8/9iKWyalEgaoaO34k0WPNNJ/ywRsy7EYBgnQuKb4R37VREMUORz5cOgha0= 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=TOkVzakz; arc=none smtp.client-ip=209.85.221.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="TOkVzakz" Received: by mail-wr1-f51.google.com with SMTP id ffacd0b85a97d-390cf7458f5so430822f8f.2; Tue, 25 Feb 2025 03:39:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740483592; x=1741088392; 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=Wbt4xnMBI7Rp7/hDbllmHky/DOcNS7OlMn9aWWBaof8=; b=TOkVzakzaw3oH/5L1BhKmUwLI61pRavBhITqpSYl1W1IHRWvBZwUzAH6cjpsqTPeIc A3Cs+c5TrC0qOaj/CyYJLWHzPmHzRWuOf2eptjGIFavxYs3pEmQlUyCq2t5bgiUfmtz7 oq9/e3q7+0Z4W5Aea1hZyDERJodoE7XakYSOfRWLTBwQFKxY1X5E5MDa56hArCO6kYlT ZfrT17JZIh32O+obfkvYja70h22PBBF6Yf4HDcLSvNKqzpDcbVBLqVxYKorYFujI1HCJ JsU/Mitde0bUr0GbmMBQm43xCEpHQ3r18CER+/jwjK73TM3qfoYeKmtQxTyVmvcRRKqV T8ag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740483592; x=1741088392; 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=Wbt4xnMBI7Rp7/hDbllmHky/DOcNS7OlMn9aWWBaof8=; b=o8I3MSkfDSRv/4H3/+RQjhPvCkTzooUO9Rt4aq61pePhTlOAmQE0dov2FFhPgW1t8o 3yHro6N+8jTUOKoBGfb2eoIX+jkxBaUCkwnQ+MyPIRlHGDlpFLTgykVHfOqMbsELz1Ab vKVK2DWMYQBsHNRWRw94sEG6UBeAaQ/977QG7HpMYAEO74ZE48TzKmZ8EB0tm7DHQggo Oz4ub478HsrjddFZTgtGIjkSvTBBA5u0bPvmdGSrY0SeEUPFyybwZqErSgDG2HnKEG2U dTyVOoicoLUgPKpliHmzI0K99qUpNQKnBkivy00+PSRCR7g2c1HXnFyvrGRKoEnSAXlU Ykhw== X-Forwarded-Encrypted: i=1; AJvYcCVcHUQBVzVeGLy85y257YybYi3BAHXiN7BjFZXdVbgxRIit4li2InWNSNNAM9B+Ncm4FiBmP82SYGs=@vger.kernel.org, AJvYcCVpabOUUvqjYqBHwHv3AsmAaCke+J9dciriDPCPH6Ury9mo5QtVGgXNEs2ouQcd/FpW11IEmnnzo5aaWOqR@vger.kernel.org X-Gm-Message-State: AOJu0YzI7O1sd0Y4UrU85W/1gHJBgHMlOxOMbVBwn8EMkeDm1Hi7AXMH fq+lV509XPIl0lv/vZo7KVHkypVPof+x3XVRg7L84wljnN8Fc3ia X-Gm-Gg: ASbGncuGDGG+J/wjBqyXDsJjq9pMX2blcJ41wKH63W7krAVq3KAe8jtJmoNodIINq2K AQ1Pz+VyWr369hNSCvPrUA16mabEVoueUP00yLIhGqzvI3rrm6MoIMZhT4TM15rXn4x4xB7Yxpy xrrzbcE7IPX8sTq1sk7V78kkEZ57S0zZ/Mc+fjrnH8Q5FUX7+yjslj2N60wL2wc4IQrFNNE77/B cEVgM/k4AVBHZvtHCNXJJDM+OWV1W5JDKnWGTB6pezhTWQSKjNhA16oPCf6GDNzCqHjEGxnY5ix awq/1NYWSglSMUpLgyTUZ7V1eJ6eCGUPulYR2qs= X-Google-Smtp-Source: AGHT+IEaMkYOoSEDX7p4FCMlk7XsckWrJ+m7bwOu1v1Nli5vkMiQTiK+6D848dTqjat/oAJmsfuIlQ== X-Received: by 2002:adf:eb50:0:b0:38f:3245:21fc with SMTP id ffacd0b85a97d-390cc63c407mr2131844f8f.50.1740483591686; Tue, 25 Feb 2025 03:39:51 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-abed201231dsm125510166b.115.2025.02.25.03.39.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Feb 2025 03:39:51 -0800 (PST) From: Cosmin Tanislav To: Cc: Romain Gantois , Tomi Valkeinen , Luca Ceresoli , Wolfram Sang , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Cosmin Tanislav Subject: [PATCH v2 4/9] i2c: atr: split up i2c_atr_get_mapping_by_addr() Date: Tue, 25 Feb 2025 13:39:32 +0200 Message-ID: <20250225113939.49811-5-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250225113939.49811-1-demonsingur@gmail.com> References: <20250225113939.49811-1-demonsingur@gmail.com> Precedence: bulk X-Mailing-List: linux-i2c@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 | 108 ++++++++++++++++++++++++++++++------------ 1 file changed, 79 insertions(+), 29 deletions(-) diff --git a/drivers/i2c/i2c-atr.c b/drivers/i2c/i2c-atr.c index f2485d1670a2..9c4e9e8ec802 100644 --- a/drivers/i2c/i2c-atr.c +++ b/drivers/i2c/i2c-atr.c @@ -239,9 +239,26 @@ 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; + struct list_head *alias_pairs; + + lockdep_assert_held(&chan->alias_pairs_lock); + + alias_pairs = &chan->alias_pairs; + + list_for_each_entry(c2a, 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 +270,55 @@ 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); + goto err_del_c2a; } + return c2a; + +err_del_c2a: + i2c_atr_destroy_c2a(&c2a); + i2c_atr_release_alias(chan->alias_pool, alias); + return NULL; +} + +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; + 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 +336,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 Tue Feb 25 11:39:33 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 868296 Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.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 3169226869C; Tue, 25 Feb 2025 11:39:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740483597; cv=none; b=JKSIVdatUfZ2cxnUaSMQp2r2cMov5EuPHBX7ZqQ1NqOtfRhSr7inZ0Txq0XkELqPczgwHkiwkwnwNFCmQYhglzfsbbClXsAhzXRI2u3i72hbE2LgPJXDneFuxdPQHiURmACQdaLng7u9M5lM8swNOOBMPBus9F8pdZ5nZbLN5EA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740483597; c=relaxed/simple; bh=4PY50C8Avc+lTFpH8LdjHloYwAHg3iwYhHX7DA+Cyno=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=oUYKQ5+InqAZDnfZxyCyDzjzZyW83QSfEDCTpMTTtKq9QMxdrKf8VEWpytLQv07kfd5XdCbbqUpIPWkkICiYg9688/qt4Rl+A8g1gIYOLYRkzKgYXOEFz6+XxnftvJ0p9FOzmiQuHnejLAtyzGYQUDQmAJ/7LI2VebJU3q+9tMw= 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=c8HNp2a0; arc=none smtp.client-ip=209.85.208.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="c8HNp2a0" Received: by mail-ed1-f51.google.com with SMTP id 4fb4d7f45d1cf-5e04cb346eeso9138329a12.2; Tue, 25 Feb 2025 03:39:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740483593; x=1741088393; 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=N9kWaCJhtkh0bPdMO9DCBTqxCndKa3EBYb2BxDOBS9s=; b=c8HNp2a0qMI7MJYmUcswG6eBuOohlAcXNUou/q2nQcwlucdSpeorr8oieUC5+PdzMO P03qDP1ZUqc3ZG1OhUXUWdManvU5f7NCICzT//0Y+pUsGImFbcMM9/UASw/YFgeo+sAj g85j0IBoZTWUvZOvBFEWhHJycowJRFIXOlcULilQIbXSEw2bXYCk5ioMMbuEUL+xT9wQ gINSn2JDcKgCD2CrbCIejMdbcEkT5b8x0xc/PaELUnB/eFATOTrjUROLpKBZiWZBRy9m duzDreTwBG+mOzl5EYNFwvV3XJUUnI8WIZsgjGUTy3B9hUK3JaAiyRt3BKCx4wlIpd/x T7DA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740483593; x=1741088393; 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=N9kWaCJhtkh0bPdMO9DCBTqxCndKa3EBYb2BxDOBS9s=; b=m1FowLqjSyLTajIF6HLQjFlqydS0NKx6H1Pz2L4hcYASZVs5p89LkIye55A5jat0Ie 5oRfD0IxNpzUf21P8OMcvJO7BLhBqhds2pyghxEBALbA/CDTzlrQwQr2ec51SW3hAgu4 gqTFoFlYrTIs0ZVhBKbEWBVg3Rth1b7Y7vvahB5Qotkfj61cLZljVp7ZiaRrghpGO9T2 DTnc0QRK2EKhl8m2ZEtx6fUht5zjlDsaXmDdcDR/NRLoya774/53hB4M9XzoiZZaDAf2 xhewMGhY8vkpPAXaJoVvFKvpfdvBuhX60tkmhpKdnhIHXl53jAE90u5HMTnYH0s8NDHE xTyw== X-Forwarded-Encrypted: i=1; AJvYcCVT22/1OVhXRF+qTJI9j/CwaEnTC/hiOn1FjMPrrU3usYlEM4/CYObHoruxCG58C0nHbAdEqGHIIJGuyxNr@vger.kernel.org, AJvYcCXhrDM30QbcX0YGglrVZprBObAuZHgJykLC8rizOdeHy1765Z1mXc0BVmhfMMgXM2/3KZ2y9GxI/2o=@vger.kernel.org X-Gm-Message-State: AOJu0Yy0ayblTple8afLDIuA2q1wrUNjgNzGL58pScSYftVYanazktcN LAX4Emcyu4LujPK3lNU/h/nmZEJSYayhw0yv45n0+FjA7KTb1GXa X-Gm-Gg: ASbGncsgMPpO0vKMu3RTGV/4k2JiSetg0ErFnjSRJny+E6rXdROuhUF3vBYtsh1gdVv k5isGpVV45QVjKnxZPBiQSjiF/vMERWRlzy/J23RA94yiAd4BcYIKBwBtZNQuXT05TxVASqYK32 KlOSgMIvll9FBa2zIU6lh+BAd1NnIx9pHcl0EfzgNCs9PPmUwEiAshxBGHNTHKtgOeX6bHe1vX0 tJGjQiVgaRgkeUpu/P1wrNTIu8ZBu2Ke9ILu5JJHY6CG+tqojlGOTsbJ9govn69olxnfzUUEdX/ Pv6mGsVB0u46efhxSbM9AXJU71oUKN5jhMVSvas= X-Google-Smtp-Source: AGHT+IHP+GV77v428hueQ02JWwug2ZEcOVkY9IMYLBrI5f5rrEbAaKfIEc4ah4LFG4fuz4Yc1BcyaA== X-Received: by 2002:a17:907:944b:b0:abb:c647:a4c1 with SMTP id a640c23a62f3a-abc09e37de2mr1881348866b.52.1740483593466; Tue, 25 Feb 2025 03:39:53 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-abed201231dsm125510166b.115.2025.02.25.03.39.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Feb 2025 03:39:52 -0800 (PST) From: Cosmin Tanislav To: Cc: Romain Gantois , Tomi Valkeinen , Luca Ceresoli , Wolfram Sang , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Cosmin Tanislav Subject: [PATCH v2 5/9] i2c: atr: do not create mapping in detach_addr() Date: Tue, 25 Feb 2025 13:39:33 +0200 Message-ID: <20250225113939.49811-6-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250225113939.49811-1-demonsingur@gmail.com> References: <20250225113939.49811-1-demonsingur@gmail.com> Precedence: bulk X-Mailing-List: linux-i2c@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 9c4e9e8ec802..b62aa6ae452e 100644 --- a/drivers/i2c/i2c-atr.c +++ b/drivers/i2c/i2c-atr.c @@ -586,10 +586,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 Tue Feb 25 11:39:34 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 868660 Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) (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 346E0267B82; Tue, 25 Feb 2025 11:39:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740483598; cv=none; b=hV9QKgOm/pz4kwjh4Xt1Fg8HgIbgW2WdUdGmA7C0avLcOH2kfFy+dY0fJiXgKCYrvQsd8Io9dOPxmSGhW2vbG+zJCU95jsRlwteVLEYXGN+hqlbdcampRwOmGDEqqGxz1zdnLP8Du9lyt181hn39k2dF0TTycnlRnaVM8DgUjJA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740483598; c=relaxed/simple; bh=7Hn9eyY/r+56QtC+SrXWdk4+pEmDLawrn1RsgqslaWc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=i7yB7wlQu106sg3Bof/xmQKK9DdWKKXfbvzvlWH8yg206BOSpj6h5KEtl10rxk1VOK1cxa9EOEManfKPCVRML2nio4g6BZWaDPF20y3E8ZaoHYKo4IXzKjkVnwXw/3Mkdrfxujpi3O8QLahAEMMG7Sh2QDlvHhx+F+QaFAyJwIk= 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=e6Y9kaPx; arc=none smtp.client-ip=209.85.208.50 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="e6Y9kaPx" Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-5e095d47a25so10114072a12.0; Tue, 25 Feb 2025 03:39:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740483595; x=1741088395; 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=l6SYdkeQz7UsVBUHqnhrO66k36/2Hqum0jxaUBXUOYI=; b=e6Y9kaPxueEZqtwPmJGpyl3dKsM2nL0gPrOjRcZiRqc+cS9W7TIwtV3P0GX1sbbYGr /wwKDFPRCRrBnqlYASbFI2ECIQg3JL1u/ww/3EWoa3vuVXKZOAVhIrTTacrTrUOeHOxe igl1wQ0297GAbhRlg7kRCzX2XHnDZHwFPLGdZE+3dW92KuHmgNjarL9QsCSbFLnGzAbX pdUVezGzD1pS7GP0MuPHXBtghHKxX8NxCHbMFo8Gfr2JTOQm0+u4danfxYDQqljO064N 0+8WNjqLBk90hKT6j5AgrsTIuyKK4iSBvf8P7f+r+zRdqjlDrbHOWBX5oi39uOpmjs4/ CgMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740483595; x=1741088395; 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=l6SYdkeQz7UsVBUHqnhrO66k36/2Hqum0jxaUBXUOYI=; b=wn3D+UUq5xqbXOrDAj4OjG7enA5YsI1OrOQA2gXq1/gHlOBXPJIiyj14AT1ZZYv1Wh wuEzf/upMwuOZIZtiYpq+ZgH43OLYVbBDgmI5pRiaHgBUF9FzJgmC5oPm1vT0dXt8ZgZ tivmma8sEFjrTKmZYCFAKCR4JdkTFXusbrCxu66W06mhPi2EGt4+dqU0fZ8WZ424/mVV jnwYgo677Ae4aZKIljANdzFb26OYEbEYB3dkBm7gr8Tp2PSN/4h6yF6HwX+bq3UH/pEd lhXOzoR1p9miIY+akTou/V299YxIWfaGdEtpxdwC90RNSYgiwVJ8wKXpqzDOrx2pJIIG SgfQ== X-Forwarded-Encrypted: i=1; AJvYcCUeLQtIJ+Tb/ILK1v+bcx/0FPKEL5/plsNBHzNb2OYMuQCC+nQOqXPjdMgL2kM4GQ2Nhl2M3r4hSA118KDC@vger.kernel.org, AJvYcCVW8tsKYbg+sGX7OUzlj+yyCcfBZMetcWcg+jtbGJGE+jIiBxhUHLNxcMHGYhRu93/d1GzN00Jbmb4=@vger.kernel.org X-Gm-Message-State: AOJu0Yyty4/Eof6pFMGx3/aghs5kYnXmznxXDDcPU1QUXWQZGxMX+6vL zS10dah96GQbrTnWVIVm3RkNpuNjNUwfhr7vvVyh8rQdy7ELDaxr X-Gm-Gg: ASbGncsM6q5U7DZWoQ8HoeLZ8OBpUtdrek6jQyK1rkXn60qtATwrT7i8tR/R8+Yffk7 VeNHGuw2+nf0TxTNdn8VrtvjDzqUXmff/FF+NCdHXUfMVFQeTw08EKlcit+0VJ1lIi15C+jk3gz m5h7NKiG+3ENJN5i65ekLpL28wUkVw2mzJC4NP3wiFGsBw3nC51c6wEM9M/ZWxCaTUwKlwlJQ+l EAFvsbVyypram+UO5tHYZK0o1kLKIsbF8WN4+z7V4x3l8Ys9m74DcYmp8p+fQ/crCGXrVHvFwDX 3wmhygJtkebdrYVx0ZLaS6uB/vILZpUiBuTBn2M= X-Google-Smtp-Source: AGHT+IFQ/Ni+BmER15klFYuEX8Ks4M2A3NLmJpjxiNWEQbMWtzAog2KQR2ZUpZwJmjeJn1+d7RkNXQ== X-Received: by 2002:a17:907:940e:b0:abb:b209:ab98 with SMTP id a640c23a62f3a-abc09ab52ccmr1684621966b.34.1740483595119; Tue, 25 Feb 2025 03:39:55 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-abed201231dsm125510166b.115.2025.02.25.03.39.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Feb 2025 03:39:54 -0800 (PST) From: Cosmin Tanislav To: Cc: Romain Gantois , Tomi Valkeinen , Luca Ceresoli , Wolfram Sang , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Cosmin Tanislav Subject: [PATCH v2 6/9] i2c: atr: deduplicate logic in attach_addr() Date: Tue, 25 Feb 2025 13:39:34 +0200 Message-ID: <20250225113939.49811-7-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250225113939.49811-1-demonsingur@gmail.com> References: <20250225113939.49811-1-demonsingur@gmail.com> Precedence: bulk X-Mailing-List: linux-i2c@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 This is the same logic as in i2c_atr_create_mapping_by_addr(). Signed-off-by: Cosmin Tanislav --- drivers/i2c/i2c-atr.c | 30 ++++++------------------------ 1 file changed, 6 insertions(+), 24 deletions(-) diff --git a/drivers/i2c/i2c-atr.c b/drivers/i2c/i2c-atr.c index b62aa6ae452e..5b53eaee0408 100644 --- a/drivers/i2c/i2c-atr.c +++ b/drivers/i2c/i2c-atr.c @@ -538,38 +538,20 @@ static int i2c_atr_attach_addr(struct i2c_adapter *adapter, struct i2c_atr_chan *chan = adapter->algo_data; struct i2c_atr *atr = chan->atr; struct i2c_atr_alias_pair *c2a; - u16 alias; - int ret; - - ret = i2c_atr_reserve_alias(chan->alias_pool); - if (ret < 0) { - dev_err(atr->dev, "failed to find a free alias\n"); - return ret; - } - - alias = ret; + int ret = 0; mutex_lock(&chan->alias_pairs_lock); - c2a = i2c_atr_create_c2a(chan, alias, addr); + c2a = i2c_atr_create_mapping_by_addr(chan, addr); if (!c2a) { - ret = -ENOMEM; - goto err_release_alias; + dev_err(atr->dev, "failed to find a free alias\n"); + ret = -EBUSY; + goto out_unlock; } - ret = atr->ops->attach_addr(atr, chan->chan_id, addr, alias); - if (ret) - goto err_del_c2a; - dev_dbg(atr->dev, "chan%u: using alias 0x%02x for addr 0x%02x\n", - chan->chan_id, alias, addr); + chan->chan_id, c2a->alias, addr); - goto out_unlock; - -err_del_c2a: - i2c_atr_destroy_c2a(&c2a); -err_release_alias: - i2c_atr_release_alias(chan->alias_pool, alias); out_unlock: mutex_unlock(&chan->alias_pairs_lock); return ret; From patchwork Tue Feb 25 11:39:35 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 868295 Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.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 BC6E8268C42; Tue, 25 Feb 2025 11:39:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740483600; cv=none; b=raWg/gBZr5tJJtNys42jare95iiUNAExW/ly7vPWD4lsw6LU0qTxEoO9C8mbpnk54mOVhnXMcJ/kTaQi8q9dK/9mvnyDW8FzGbRH2ZRisnhlsJ7LdoDeI5xflcish33opGOPTpDKaLmR6ze+hFNJAMCyzPvBiZiuQt1epr7i270= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740483600; c=relaxed/simple; bh=FH5pABemfdyBTd81fPkLUCkcaMB13Gtpt950QuGWACU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nPMi/ujhJ1My3x2dHrf55cGwtozWPduD2DTZ0Es7RK6nGIIUPLNbdFI+feVn7HSD+1zn0gdcSiqXIHKPC/uu4XlVzzXaFQs/TN0KQhk6T/64kCois0OUxLiZOH4mSkk61T3U/L9iTEuRJBW1XCe8KYFvhthfOf8Bli2O8o+hcNs= 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=kGQn/djF; arc=none smtp.client-ip=209.85.208.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="kGQn/djF" Received: by mail-ed1-f51.google.com with SMTP id 4fb4d7f45d1cf-5e04064af07so8477274a12.0; Tue, 25 Feb 2025 03:39:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740483597; x=1741088397; 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=KHavu49N7UrC0j4N/STFuWdZClinsRdO2TF0wU7/E3g=; b=kGQn/djFP1XPsIETaAOLauVrSHHg2VHdtyRf5dbHe/O31RCN7vcfInwXcynbhiC8zi FYOmR+85LMUUZomgNk0Reu6VlwMZ2UrHqgih84o+qT5582nyDOZ1r/0Nfl1T89ybplGU CnTy5tjmTVVXTqOzOCNjTXoeC07lPRP9To9YJd0apeoPIzNoR40K8pViQQ/4mNkVzXxz Q/3dniCunN71ZO4aMeEgB2SPQoU/zaKkmcGC/ChQUPvxDwKzS1dmREIP0dBwcXmpRP7q XE4/KkQsyYpQKTp25NWJ7OlAnXW0vwj+B3AmviB90mSfcdNG2px3ezKPH8HWlGINDyJJ mFuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740483597; x=1741088397; 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=KHavu49N7UrC0j4N/STFuWdZClinsRdO2TF0wU7/E3g=; b=uMxB75QdyizbVJRDcqzslgQTVN2OVDHx1NeJw6UyP0THuDncCr+TYft9s6i3byXGmp AkpqCOHcIV1lujSc/c/t9GL+Yd5ufoWaEuFZSVk+EcDL+eoYEFTdPtVwza9vL4IqiJ4x 5J+QpbdtWxZKISCfqXtUzrF/XPaqoLBk1QaeZ9ziZbbA6KzTmLitNbjX/iisfJgiw3wL mTBgJmobVjIWOpIDSWYzAZWypSjRXX4cVadObqLq1ReYVYWiw12lnQtQmSxaxOXmhcIM GyXhScdUgbb8dUQV2Zeh13FLHg7g/uHzpxMQZAzU79VwfZq8q13Jb40WCFCJQtdrFBiW paXw== X-Forwarded-Encrypted: i=1; AJvYcCVDuSzzI86OMqxMnndMlRumPRAf8jwKjy4OdX+rnpGupk1TFq92MNL4XNa0v+GUwkTMdBwG9Dz4194=@vger.kernel.org, AJvYcCWGbj+mKT+IovdhVigibYq6Evv4iXNEoDOVdBsNvpFjPSoamH/JnMUgDJOijt2JQLEP6OA+MRtrxU+Po8Fk@vger.kernel.org X-Gm-Message-State: AOJu0YyKPzNFsT+HnXlVfesUpKIpjq8jfA2KOcPHchivk5q8/+ddWNsd SnxRyGKkKOAJ4tcxAP+NANcznY6Q4JVBU3VKB5kK61aVNG6lomAS X-Gm-Gg: ASbGncsNKMdahSgLOlcHmfO7vg0bWACgTxlgmDD6tOSnx00jtVTXO8qR9O0p7Fm3ydr SHb9SsKZ1/LucsDV644ef0dVq4LAZVeRN+h72AvJTC/kc6RmtFe2kj/yNurEdyK8pXA7uNuu4em ARZ1NMnF/4XLucSltbzt+QqOUPE/W+/lKgIW6NJaVyq71c3MTru2L0nbFbsIGMLYr7hOuEfS8az W2asWul+HQfSqr3xzYDS4leLPI3VI9M/Nl5cIri6bcs6CZOmNeOBBF8tA2VFgYEeBjvNY9aF0pv atdnPLZXG1wsxhQxfccoLRZk5JIyC474URl9XUM= X-Google-Smtp-Source: AGHT+IGkBLXTNXrNxdESWi9oEK4A+zL2ej0qhVSYmjq4CJmFZxPOFwAIz0IQBFMzAmvz5M9odyi81Q== X-Received: by 2002:a17:907:6d27:b0:ab7:e567:4fe8 with SMTP id a640c23a62f3a-abed0d60b6fmr301892766b.25.1740483596798; Tue, 25 Feb 2025 03:39:56 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-abed201231dsm125510166b.115.2025.02.25.03.39.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Feb 2025 03:39:56 -0800 (PST) From: Cosmin Tanislav To: Cc: Romain Gantois , Tomi Valkeinen , Luca Ceresoli , Wolfram Sang , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Cosmin Tanislav Subject: [PATCH v2 7/9] i2c: atr: allow replacing mappings in attach_addr() Date: Tue, 25 Feb 2025 13:39:35 +0200 Message-ID: <20250225113939.49811-8-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250225113939.49811-1-demonsingur@gmail.com> References: <20250225113939.49811-1-demonsingur@gmail.com> Precedence: bulk X-Mailing-List: linux-i2c@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 5b53eaee0408..d8748d71ae15 100644 --- a/drivers/i2c/i2c-atr.c +++ b/drivers/i2c/i2c-atr.c @@ -543,6 +543,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 Tue Feb 25 11:39:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 868659 Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.46]) (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 3F23D268C6E; Tue, 25 Feb 2025 11:39:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740483602; cv=none; b=VAse08atPCp7f8wZT6gjHfw+Gi5ojJbxv4Y5n7kkDIKhYb1gHy4NM+Q1O935ghA5Cxf6eLA2on17NU2jGX/HmYwcltkqlhaUquf/AsR/bARvIVvqDAgCzzRlGsAqPMglefM6/B4Tn+FZbNbr/asKTRWfYifw5AcH66mEvittA8s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740483602; c=relaxed/simple; bh=Q6QxPvHVAiQEose/4To9DXpC60R/SWIoGeYUvA9Uk9A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UyeV27NRF9wr6t+46icpbmzytm1I1570g8+WDNjNluOkZcRLi16FA7lWGzAAIHk17zxp1KFWV7K4bHb92T4PYHjtMGgwxA2Oy5MW4zzQVqxCy9+Rt16dWG05L8CCZvE7i1d00/w25R8fekg6YRW8srhjU7bPAPrGMNdcyT1ZMHI= 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=DeyQ2cCi; arc=none smtp.client-ip=209.85.218.46 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="DeyQ2cCi" Received: by mail-ej1-f46.google.com with SMTP id a640c23a62f3a-abb7f539c35so1064896966b.1; Tue, 25 Feb 2025 03:39:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740483598; x=1741088398; 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=9ka0jueQHoGkiXve29SH/UxFln+xLNtVSmxGTyKTR6k=; b=DeyQ2cCiAAax7XiDrR8ln39ATIM3rIfCG7L73zuXnvd+d0CVTp2bt9OsSDMSryoUuB lHVA24w4P/nuPRFP+lWwmLreD68jB5oR7UIQwBu6yZsovVu6yhJvqTbzID637TSQiELA lG/tXzg0+GzJLnXYHUg0cpdHB/cR7nIu5+OIUjejQXR6vsxLnlye4YYzEtXjio+l2uqJ SPQ411Bl320onVCbr19xYwxPNwjWmSGgs056UPdPAQRHVxG1mBZoQ6x8xHE7qj/K5rp0 hpGiijesV1RSKEgNdQOKUk2Qg4IbAB/4L2ZcPvFeefUgw41mYwanjjFC00bGXQNAXRRl kNpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740483598; x=1741088398; 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=9ka0jueQHoGkiXve29SH/UxFln+xLNtVSmxGTyKTR6k=; b=bFGTV23heiMfzNrBv419NOFkGbeimKKgGDc/p07aDQ79H7kpN7JDT8jszyv/15tBCR 5ihTYAHTb8sLjhBxkRIyvWlG6zjbC8RpUsecVassuX55ZHoI8O729iKD7qJzO1nFxwXA m30BhHq814AOByhEDavy8Y92KK6IBt8nMiO6IVd7d8s8yRr9fUlPEX5tEEzmn5E/UvPG 1Yd+EZBHATTE2IAy5u9TaS1Rii5sxCXNj0YyXNcfHwiZ8rbilUl5leO/M0ROmOGd3bkQ br0MBjDktrAfvQ9ll9xJkegyyg4+Vx/YrEsbHrp2P3U0GPyb5V4R1if7RscP3Q553orH aXdg== X-Forwarded-Encrypted: i=1; AJvYcCVKB1lyi1BJdSIySlvqHLkhZy1Hu2VvgPWocOLyg49yvBSNOQwaol3p2oL4raR/+W4OOkqhzWpvkUdS14UR@vger.kernel.org, AJvYcCX0qba+Ok5aX1uJY/I2jfQi5r9XII1+Xq0oYxSB8ecbD6fGmcLDTFHI0qUV9AKBp/PGSEbdm3O0rg4=@vger.kernel.org X-Gm-Message-State: AOJu0YzcJKFFgpceSqfZjy+6xGHYY7HhRm8oFjjo6LEUv1B5zGIiD5vW w0NDm9UAPzLQHSCYIjrxONOtn73yair8YNLcqRYAW9XxWtZEc74hcuX/pQ== X-Gm-Gg: ASbGncvTGViWxQuLjfQKzAaQoyUctFAGif00xVWhabERW25LHYDBkw5xl6iJCDIikN6 iPPMdDbXCN4BUYZL5RSwmWXuAMDyRoefNhHYJRU9GIiX6thM9K4Ae2Sb2rG91Dg4FWpauXx19if I1xT5ENlUQgbyQmJFikoHVb8/Wj76Ej/QnBHTJhv9ZXK9CKeQPRvl1aA52UyEErVtjv/1jYN+5E ITY2IiF9A8niPp+8IbY32kQl9PFGFhV1cYHvPFSGWG4QLZGY8AZD2u4GetaFWrzc+Gq+3qTY4kW w6QCpJC2xWwZDwVMLeHUtzm4xKanJJDzuiquav0= X-Google-Smtp-Source: AGHT+IGtaTRnSObhg17rh5Hcn77Ae+STyqfN8/20QTooo19R4PLudKlBkT24Yt8Va2iooeF2Mwye9A== X-Received: by 2002:a17:906:1712:b0:abe:e09e:b4cd with SMTP id a640c23a62f3a-abee09eb78fmr82964466b.48.1740483598457; Tue, 25 Feb 2025 03:39:58 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-abed201231dsm125510166b.115.2025.02.25.03.39.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Feb 2025 03:39:58 -0800 (PST) From: Cosmin Tanislav To: Cc: Romain Gantois , Tomi Valkeinen , Luca Ceresoli , Wolfram Sang , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Cosmin Tanislav Subject: [PATCH v2 8/9] i2c: atr: add static flag Date: Tue, 25 Feb 2025 13:39:36 +0200 Message-ID: <20250225113939.49811-9-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250225113939.49811-1-demonsingur@gmail.com> References: <20250225113939.49811-1-demonsingur@gmail.com> Precedence: bulk X-Mailing-List: linux-i2c@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 | 16 ++++++++++++---- include/linux/i2c-atr.h | 20 +++++++++++++++++--- 2 files changed, 29 insertions(+), 7 deletions(-) diff --git a/drivers/i2c/i2c-atr.c b/drivers/i2c/i2c-atr.c index d8748d71ae15..f7b853f55630 100644 --- a/drivers/i2c/i2c-atr.c +++ b/drivers/i2c/i2c-atr.c @@ -106,6 +106,7 @@ struct i2c_atr_chan { * @lock: Lock for the I2C bus segment (see &struct i2c_lock_operations) * @lock_key: Lock key for @lock * @max_adapters: Maximum number of adapters this I2C ATR can have + * @flags: Flags for ATR * @alias_pool: Optional common pool of available client aliases * @i2c_nb: Notifier for remote client add & del events * @adapter: Array of adapters @@ -122,6 +123,7 @@ struct i2c_atr { struct mutex lock; struct lock_class_key lock_key; int max_adapters; + u32 flags; struct i2c_atr_alias_pool *alias_pool; @@ -339,12 +341,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_STATIC) + return NULL; + c2a = i2c_atr_create_mapping_by_addr(chan, addr); if (c2a) return c2a; @@ -543,7 +549,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_STATIC)) c2a = i2c_atr_replace_mapping_by_addr(chan, addr); if (!c2a) { @@ -702,8 +708,9 @@ static int i2c_atr_parse_alias_pool(struct i2c_atr *atr) return ret; } -struct i2c_atr *i2c_atr_new(struct i2c_adapter *parent, struct device *dev, - const struct i2c_atr_ops *ops, int max_adapters) +struct i2c_atr *i2c_atr_new_flags(struct i2c_adapter *parent, struct device *dev, + const struct i2c_atr_ops *ops, int max_adapters, + u32 flags) { struct i2c_atr *atr; int ret; @@ -725,6 +732,7 @@ struct i2c_atr *i2c_atr_new(struct i2c_adapter *parent, struct device *dev, atr->dev = dev; atr->ops = ops; atr->max_adapters = max_adapters; + atr->flags = flags; if (parent->algo->master_xfer) atr->algo.master_xfer = i2c_atr_master_xfer; @@ -752,7 +760,7 @@ struct i2c_atr *i2c_atr_new(struct i2c_adapter *parent, struct device *dev, return ERR_PTR(ret); } -EXPORT_SYMBOL_NS_GPL(i2c_atr_new, "I2C_ATR"); +EXPORT_SYMBOL_NS_GPL(i2c_atr_new_flags, "I2C_ATR"); void i2c_atr_delete(struct i2c_atr *atr) { diff --git a/include/linux/i2c-atr.h b/include/linux/i2c-atr.h index 1c3a5bcd939f..2f79d0d9140f 100644 --- a/include/linux/i2c-atr.h +++ b/include/linux/i2c-atr.h @@ -18,6 +18,15 @@ struct device; struct fwnode_handle; struct i2c_atr; +/** + * enum i2c_atr_flags - Flags for an I2C ATR driver + * + * @I2C_ATR_STATIC: ATR does not support dynamic mapping, use static mapping + */ +enum i2c_atr_flags { + I2C_ATR_STATIC = BIT(0), +}; + /** * struct i2c_atr_ops - Callbacks from ATR to the device driver. * @attach_addr: Notify the driver of a new device connected on a child @@ -60,11 +69,12 @@ struct i2c_atr_adap_desc { }; /** - * i2c_atr_new() - Allocate and initialize an I2C ATR helper. + * i2c_atr_new_flags() - Allocate and initialize an I2C ATR helper. * @parent: The parent (upstream) adapter * @dev: The device acting as an ATR * @ops: Driver-specific callbacks * @max_adapters: Maximum number of child adapters + * @flags: Flags for ATR * * The new ATR helper is connected to the parent adapter but has no child * adapters. Call i2c_atr_add_adapter() to add some. @@ -73,8 +83,12 @@ struct i2c_atr_adap_desc { * * Return: pointer to the new ATR helper object, or ERR_PTR */ -struct i2c_atr *i2c_atr_new(struct i2c_adapter *parent, struct device *dev, - const struct i2c_atr_ops *ops, int max_adapters); +struct i2c_atr *i2c_atr_new_flags(struct i2c_adapter *parent, struct device *dev, + const struct i2c_atr_ops *ops, int max_adapters, + u32 flags); + +#define i2c_atr_new(parent, dev, ops, max_adapters) \ + i2c_atr_new_flags(parent, dev, ops, max_adapters, 0) /** * i2c_atr_delete - Delete an I2C ATR helper. From patchwork Tue Feb 25 11:39:37 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cosmin Tanislav X-Patchwork-Id: 868294 Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) (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 E4A35268FDD; Tue, 25 Feb 2025 11:40:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740483603; cv=none; b=ikIE3T8yvlj2OXD4yZHbhRHupKHBugoOLoqzG4x33EfgXhPZc8H/w333OQ9PaV5HDQ95b3b1NgbQ6fg19KcWtBMlB72i4RD7vPr6wqkHOXQcfAhERXqo2ZNWm8txqPoBAiP15WlTUjMopGqhaqoAKlQ49c0Pctd7YPjNZIWjjlA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740483603; c=relaxed/simple; bh=09Sp2mWLnAegYNwA8F2u352PpyBaXNXliN8Ag4OkvzI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Cx4IHrsoX+sGLT9KY3KRgy881q9w73RTZBXpS61oZ3+yjGs5qwxmpxMr5ymnagl8MQRPLvUL9X9BL89X6JIpVUPpPsf58xnCv97JotdDCPFxvW2XNqURMVsy5hYm+ChTorpVvubUEkOlstZDFC64eQegNpfTWZjYwZBSmYmbnpY= 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=mByTob3X; arc=none smtp.client-ip=209.85.218.54 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="mByTob3X" Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-abb8045c3f3so676366266b.2; Tue, 25 Feb 2025 03:40:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740483600; x=1741088400; 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=oLO2Wt1zOV1CJ5zuVwnVC3DTITBXMZP+UbGnpAaCAMY=; b=mByTob3X/WbaMFhuGvkOMnJkFtHp9uTV+LcXzORSJUB+QEclUiBE11UPceme2sifYf WVPG7/usYmDdKR+JS7QbRvEzFkY7dGz5bYKrXTZpqFA3sZtJlsFMbph9dXgbeDzwcc+d cwPxnKLOq5LbR9aqCHGsANKD6e/D2NA7pk2UOPZRFR08V+2AdLEfijiepZqcBjdltfQ/ r3D1/7U4lNobvvdL2P5n9HdrGClc/ymdl6K/Kz5f/hC2BnEf/6zeBBBFeK3qNhqqDvG7 Cpd8aFL88HeF4OuGP7jDUH48sNF7GkFGRV7F6ahJM0jYP+dY4Y8LhkGDMF7jwnBplqbF 5Vuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740483600; x=1741088400; 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=oLO2Wt1zOV1CJ5zuVwnVC3DTITBXMZP+UbGnpAaCAMY=; b=Y5gSl8uB/dUJc0LKZCJhIJo7wji8Al4FTNskIRxKZaWrFj40YidCKjVTrariInM23/ oPwZBnWchBIrKQ8hW7S2PkbbQpXSy6kpG1xrghe+23ZHbOKyWL7qjCuB1aXe0hP32oYy O54fCGyA6zSCY+K9JfH2xgOVa1Yby06EI67809vr0iRw+7gbzS1/xGqKuaEf5y7T0PMT XowsqarcbyPh+lOd/Vv42A6cy/j/pb+ml/ifqisQVoC8C1sn0IvdRUe11YcyD/86Y1Pf Ayisu9j5vk1i8/ZeoIPhfPdRuwNiLNmyYUTw6NQPLiTi4Yz0pCsxIgYRY/dy43B2+/UC exew== X-Forwarded-Encrypted: i=1; AJvYcCUhD0mNRBYUBebKFC3xX0bNVvVS16oi5nmbMIm7fQGIJXb+07PygX1z2dk4eQz7+6GGzB9k2dilEKhDTXRG@vger.kernel.org, AJvYcCWfBXgGw8Ql2wQk7lec0JaZXtlprL3ZvbJ+7so7x7bgEF5/FFUTvC3XN+sITClFizMGIidW1Lm81mE=@vger.kernel.org X-Gm-Message-State: AOJu0YzDN/6lxyOsW9r61Ad5m5T/6RIuOz++pnjNqu91SkIxs+EV4vd9 QLhDXArsp3AFqQ22KWXQoJ0zZjiNvaYW+fiHD3VyMo4P1KVSmTi5 X-Gm-Gg: ASbGncuoUCiWMcO5R6RmHeP0lEN86cRxNDrLqyLVEHW6k+nPb1i15ubHb5IxoRQ5eA6 l0Y+kVC9w3aB4YQj3hOVt8nQbqcGVEwMH2TnRorm3utrlDWeFN8iHHPqVHxUDPXmzmFK4EvVFTM BRyV8ASaXdKcFQmJnGaNxRim9g/O/+m212XN4CHamWJD8R9X7Y7S1n6V3IiIABkvMUdgv50jEFq OR2X3j0rS4SUAA0tNRkTfxEf1PKEL7HE2jWfRtrDPq+V/1VA2L+aGioZOXEsP//P+0GhM9Fqg4O TFzoF4xE8p9n+3nd5ZDS70Krq5NoifQGUuBvdVM= X-Google-Smtp-Source: AGHT+IF8P+MAckBDQjFe1PQsS4Rk01Tzs/TC2jlZ9olXvr5z+Ya3lVc7Jp7BfoON9lcNDneOHnWEMQ== X-Received: by 2002:a17:907:6ea5:b0:abb:e6e1:22c1 with SMTP id a640c23a62f3a-abc09bf55bfmr1984381766b.35.1740483599961; Tue, 25 Feb 2025 03:39:59 -0800 (PST) Received: from demon-pc.localdomain ([188.27.130.21]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-abed201231dsm125510166b.115.2025.02.25.03.39.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 25 Feb 2025 03:39:59 -0800 (PST) From: Cosmin Tanislav To: Cc: Romain Gantois , Tomi Valkeinen , Luca Ceresoli , Wolfram Sang , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org, Cosmin Tanislav Subject: [PATCH v2 9/9] i2c: atr: add passthrough flag Date: Tue, 25 Feb 2025 13:39:37 +0200 Message-ID: <20250225113939.49811-10-demonsingur@gmail.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250225113939.49811-1-demonsingur@gmail.com> References: <20250225113939.49811-1-demonsingur@gmail.com> Precedence: bulk X-Mailing-List: linux-i2c@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Some I2C ATRs can have other I2C ATRs as children. The I2C messages of the child ATRs need to be forwarded as-is if the parent I2C ATR can only do static mapping. In the case of GMSL, the deserializer I2C ATR actually doesn't have I2C address remapping hardware capabilities, but it is able to select which GMSL link to talk to, allowing it to change the address of the serializer. The child ATRs need to have their alias pools defined in such a way to prevent overlapping addresses between them, but there's no way around this without orchestration between multiple ATR instances. To allow for this use-case, add a flag that allows unmapped addresses to be passed through, since they are already remapped by the child ATRs. There's no case where an address that has not been remapped by the child ATR will hit the parent ATR. Signed-off-by: Cosmin Tanislav --- drivers/i2c/i2c-atr.c | 3 +++ include/linux/i2c-atr.h | 2 ++ 2 files changed, 5 insertions(+) diff --git a/drivers/i2c/i2c-atr.c b/drivers/i2c/i2c-atr.c index f7b853f55630..1986fa055f20 100644 --- a/drivers/i2c/i2c-atr.c +++ b/drivers/i2c/i2c-atr.c @@ -394,6 +394,9 @@ static int i2c_atr_map_msgs(struct i2c_atr_chan *chan, struct i2c_msg *msgs, c2a = i2c_atr_get_mapping_by_addr(chan, msgs[i].addr); if (!c2a) { + if (atr->flags & I2C_ATR_PASSTHROUGH) + continue; + dev_err(atr->dev, "client 0x%02x not mapped!\n", msgs[i].addr); diff --git a/include/linux/i2c-atr.h b/include/linux/i2c-atr.h index 2f79d0d9140f..b3797a930a7a 100644 --- a/include/linux/i2c-atr.h +++ b/include/linux/i2c-atr.h @@ -22,9 +22,11 @@ struct i2c_atr; * enum i2c_atr_flags - Flags for an I2C ATR driver * * @I2C_ATR_STATIC: ATR does not support dynamic mapping, use static mapping + * @I2C_ATR_PASSTHROUGH: Allow unmapped incoming addresses to pass through */ enum i2c_atr_flags { I2C_ATR_STATIC = BIT(0), + I2C_ATR_PASSTHROUGH = BIT(1), }; /**