From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.42]) (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 B5D432749EA for ; Sat, 10 Jan 2026 17:20:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.42 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768065641; cv=none; b=ablOG67pIexXHv3XO8SBfMRkc3C4wty6mnbagFBjo54ZAqYfDEzc6asgZw9wBNx0m8CB58gKYcOaETHmbhMtGCPH+rGyqddUyx9M/9KVPiO5d2lVJWuido0JWC4eos1A1VE/wU/bDv4U1awEYkGtM6b0INM0DQzs/EUs7zp5sfE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768065641; c=relaxed/simple; bh=zoyufa2G73dTOI6iqLDEAxRD81TxEKQDgY/15JnxVMU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=gan2fBrjmr4I3TIzztW5v/r0R1981keebEa9e0zdyfAuZLT7SVZusG/KKgjKzVViqF+m+rlRhHSOa5h23oTJo3mM6dsJZRSuwLIwp7ziVZeg/6wnryWfViRHj2lx4q9eATwSdN7jPNZC3T7pz6Mm4wjzyql8sDZ+Cn9h1s6DbyE= 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=RRwyoJ4t; arc=none smtp.client-ip=209.85.218.42 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="RRwyoJ4t" Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-b7cf4a975d2so847115966b.2 for ; Sat, 10 Jan 2026 09:20:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1768065638; x=1768670438; 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=pJn/6pk7m8c+76UeIa2+VSwLjuas98h5PZhN24o+k/k=; b=RRwyoJ4tzeWaZcAt6OjPRpsByV5N4WEB3f0LE8ffI0vjL/KPneTmHt8nbT6scVjw2L r+T6RhZ7WOKTIbNQ9t2seYFnxuJVr5OtpqiiAcHDeTOaUJJOvn1WQoIqXN/pYCsTOTVU vtYgmoPC0wZgaOsFNnNme0WNFgh3myJq8l4AihbsQcB0gKvZkSSk3Owwv5vTjlgfnACG RifUyrEWFClXEo0P00wkKrXRd6/Jbs1ksI6LNo5hcXJGDomUoGyGsANPOnPGP3Hdkxr/ iAqWNJBAMtbnngmdxUaGb5YaVizsikyzmG5yNJbmB783r4P+ZeLAmgB433hFioWbP1wJ X/UQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1768065638; x=1768670438; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=pJn/6pk7m8c+76UeIa2+VSwLjuas98h5PZhN24o+k/k=; b=ulFG/d9Fv6I7sYxGem6Epsn6vOJxl6+26T3Ys7YptZfpwd8RDdr3FwRrzsEEYZLZOe ZgkwTJQzquipykJUSqdGlNu1jN2tX1zVnMr57es2J6Q2NnNQYTpluDMmuLf7Hn+mhUjW +JZbB/mcTX9iKEh9qOUx3nF6Gw4UJmLf1TmCqij0f/BF0CoMX/ww7o773IA++Fvl4WLW HHFsnkz/ctVJ9M5WpYvI5tkf5z1B0k/4leaB+PzQzFDQfNy+5kPeHlFL4SGdqJSxvzUi uC2UaczUCN/USCuRD1d2w+Ap8WwLzQFikpyranGCFp8ooCUKZX9j1Qi3V/FXzV4ddoNV lAEw== X-Forwarded-Encrypted: i=1; AJvYcCVwsUFsPGT0B2bUciWzjAoWaAl5311nat772BI4l7pwBXFdVoJfmIqJwUA4PAvgsfCLTlK3U8QBGSYOgxI=@vger.kernel.org X-Gm-Message-State: AOJu0Yzcp7C1dmnC8bj4FSVgYPrhvBf3kEfIbf7v2Hnlx2xcLeylFoJX lCC/SLJQl2ekuXpU8tznGtwXSYX3cTGlrlyJq8tx1n/VKWDU56u1PZeD X-Gm-Gg: AY/fxX4cbp4YFp+yw+bd+LdHLi//vnnjTuvXSCawG6EiPOH0sBDQ4DZ/JR3dkL/CAkL PmfP7kIC3M1rdBZa1RF7TN4qGnP2V+G0TsEXowxoEGs7kUsbTq6eOKhpcQQmQ293LFlfwuCqgzN uNgq2uv2m6FZCl2FvJRd3K73U1RGA86LCQxfYXhlLQTVcDk4BeRPmqBfJB8GCHqTLQWXmkEj/pK 77IW1IFrDKPtEG045oka3qdjXliArj8xRdWse3wpekrAdDZZGYVaG224GLJ1Ilck/ifF/VqhPXf c/RPRoloidgJ58zRoQFSIJ3iy3Xf4bq85SfZX0IX/w8st3cq8cmPoXFmuSi2JxBcZrISJxzveCm /yToGQ8dEbhIqcVmO5v6eHy+fHI6pJnt6sYudryILFFZLUIyFbIMAm8afoCJBXj8cDQ8G8Me/4h qnp7JpYTnkIwhh0QNw3NDtBLttqGzrm9qqAi7Y X-Google-Smtp-Source: AGHT+IH9/fEmcp10wkkQwIBC/GOjOv/vis4ocXPoGuA09D40/LVaLXKImkkABDThhNtVYeTS8qZqNg== X-Received: by 2002:a17:907:8691:b0:b86:e9f4:e88 with SMTP id a640c23a62f3a-b86e9f4284bmr271913366b.29.1768065637831; Sat, 10 Jan 2026 09:20:37 -0800 (PST) Received: from localhost.localdomain ([196.188.252.161]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b86f88f90a4sm173367866b.37.2026.01.10.09.20.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Jan 2026 09:20:37 -0800 (PST) From: Tinsae Tadesse To: linux@roeck-us.net Cc: Tinsae Tadesse , linux-hwmon@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/3] hwmon: spd5118: Avoid hardware access during suspend and resume Date: Sat, 10 Jan 2026 20:19:25 +0300 Message-ID: <20260110172003.13969-3-tinsaetadesse2015@gmail.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260110172003.13969-1-tinsaetadesse2015@gmail.com> References: <20260110172003.13969-1-tinsaetadesse2015@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The SPD5118 hub may be inaccessible during suspend/resume. Avoid updating/writing hardware in PM callbacks by switching the regmap to cache-only mode during suspend and deferring synchronization until first access. This prevents the below I2C errors and async resume failures. spd5118 ...: Failed to write b = 0: -6 spd5118 ...: PM: dpm_run_callback(): spd5118_resume returns -6 spd5118 ...: PM: failed to resume async: error -6 Signed-off-by: Tinsae Tadesse --- drivers/hwmon/spd5118.c | 36 ++++++++++-------------------------- 1 file changed, 10 insertions(+), 26 deletions(-) diff --git a/drivers/hwmon/spd5118.c b/drivers/hwmon/spd5118.c index 63f798991363..a8afde7f47b2 100644 --- a/drivers/hwmon/spd5118.c +++ b/drivers/hwmon/spd5118.c @@ -494,25 +494,12 @@ static const struct regmap_config spd5118_regmap16_config = { static int spd5118_suspend(struct device *dev) { struct spd5118_data *data = dev_get_drvdata(dev); - struct regmap *regmap = data->regmap; - u32 regval; - int err; /* - * Make sure the configuration register in the regmap cache is current - * before bypassing it. + * The SPD5118 hub may be inaccessible; avoid hardware access. */ - err = regmap_read(regmap, SPD5118_REG_TEMP_CONFIG, ®val); - if (err < 0) - return err; - - regcache_cache_bypass(regmap, true); - regmap_update_bits(regmap, SPD5118_REG_TEMP_CONFIG, SPD5118_TS_DISABLE, - SPD5118_TS_DISABLE); - regcache_cache_bypass(regmap, false); - - regcache_cache_only(regmap, true); - regcache_mark_dirty(regmap); + regcache_cache_only(data->regmap, true); + regcache_mark_dirty(data->regmap); return 0; } @@ -520,16 +507,13 @@ static int spd5118_suspend(struct device *dev) static int spd5118_resume(struct device *dev) { struct spd5118_data *data = dev_get_drvdata(dev); - struct regmap *regmap = data->regmap; - int ret; - - regcache_cache_only(regmap, false); - ret = regcache_sync(regmap); - if(ret == -ENXIO || ret == -EIO) { - dev_warn(dev, "SPD hub not responding on resume (%d), deferring init\n", ret); - return 0; - } - return ret; + + /* + * Re-enable hardware access; sync is deferred until first read. + */ + regcache_cache_only(data->regmap, false); + + return 0; } static DEFINE_SIMPLE_DEV_PM_OPS(spd5118_pm_ops, spd5118_suspend, spd5118_resume); -- 2.47.3