From nobody Fri Dec 19 17:14:27 2025 Received: from mail-lj1-f173.google.com (mail-lj1-f173.google.com [209.85.208.173]) (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 D64BC2F7AB5 for ; Thu, 11 Dec 2025 12:29:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.173 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765456197; cv=none; b=fwiE5Uez81J6+Nr4ygHkBUy319/W7LJW1Hhylq6xVH1p7IZyCHcnemocB1shV+FVVQO4wn5KEE6dZ9QbkejvZobzQOhGsrapG7dUSl9fVLopVQU4Z7TYYjgpC6EVXObuTAGodvBq1yHYsLfPfDwTGQ7wfmT6v+APQkGUMbettyM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765456197; c=relaxed/simple; bh=Soi10TuFeV0uh/sWMBxo5LMEKWX9cSiI0iTo1Yhicuw=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=p/qApCQD1GH6xoKS/E+OntNT7rV7DRCBrJOAPQ+/jveb4vb2L1E24H6uUSu0wJpnmGNu8SyIPTIt2S0ByYauQH4O1NU1pwfKkjySFkoJHrHmNmmiWKdEigdmYObQGyITCt+XuYbD+miROOxGNbSBXwGhg2QJiy+noSswnEAUfRU= 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=DHkwHwCV; arc=none smtp.client-ip=209.85.208.173 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="DHkwHwCV" Received: by mail-lj1-f173.google.com with SMTP id 38308e7fff4ca-37b95f87d4eso281991fa.1 for ; Thu, 11 Dec 2025 04:29:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765456194; x=1766060994; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=hnxtPQyQhm7Ez4s2wO2MHm19H6f+qgA3O57TFq3CmC0=; b=DHkwHwCVZQbCSSckbi/ir9Sal/Hp8IW8vMOsj2K8FwVMkqhpGOE2QGgotfhRreEu0n byLL5MJt85prOuShR9TQJ9JcslehoNqDvhtu7IRMGRQjJb+g+jc2+E+9XdaTgsw2/ugD NiwCx4345atFe5/Rz96v/vtqIQwwtM6PACVb1LW2Gf+eWbnrFagd55VdAyrXUNUXISf8 rbhclBvMRzKhDWUXnihFu025zEoEuQcnxQRRA/uTsCmCIOoIJNeK1IGag653t7dDK7Ko rlftZkS2yKHuV03Xj4VCX/10HWeiHIR24nQOQOS1s5Wl44KiQdL8BWF6Qrv4DQbYTNTU BywA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765456194; x=1766060994; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=hnxtPQyQhm7Ez4s2wO2MHm19H6f+qgA3O57TFq3CmC0=; b=Sp27Kf21xp3+6gPKtYfG73KfMpb8ZycgoxHjgV1NFxQ1xs2pjoC2lASt1gipQbgVNs dfxYzDY9VHJRDhN9tYUf+MRfuBDnZ5QXp8OGxSvRr7gYKJKBv+cK5sGYpCx1CucSr6gf YyU40qrGSnDyLqYc00QyTqlvWvVeb48Ca1oDG1n0ydyHKZOOtkDMziujtEzLnjRcdShK wg489zpXotmnjMlKpoFVBcKpLIr4VPE99pwMassNPLyhG2jzQS2Bp/Uu1DFpWv1XHdpR 5PqJsRQBwbo6mwxZi3U0vqCBLsYEuXBkJC29tdtXXZXefnrr04GmQBcCW8kDKgp2QWnc nhEg== X-Forwarded-Encrypted: i=1; AJvYcCXtTAjUttP20hxU2qmnb2bFk3hkWy5YLUuRnCBY+rgJ8UVcZyVv7Fi0mIcpQIC58XX3jVEQgZjaLyjuGfY=@vger.kernel.org X-Gm-Message-State: AOJu0Yy3PzWF/yxQlxQ+NSZ0s1fwXxlo3iwdXzQ7euYDiCUZ3AhmHt89 x4tZhawJBgNjDrEu7/PR3WQvu8gtDHzeYiOzZcwa4SJh7fEzL24yqXR+ X-Gm-Gg: AY/fxX7MyoxLlsBu4aA3HpTyogwt9SJnEneHTnWoOfG13onuhCbnLEpEaw5CDTCKnHq RNsPMzo+9lK6eqdnm0Z86wITdnpEvWFMYRjgkKp11fWudx3+B0LcP2al1NtB2wDHDj134zW1faT 6vRexALuSrtNCf5JYk6qpBUWkKw3scKxmmv5AJdrWTwV4WoevKq6q4bgsUt8cI7xV8eG9KSt0Rw LPvaF3LVYOtkgWjHhG4ziWZbKN7421O4FcOqLa9xTXSnLWONRmm2KfwqwcEHKtiIHsgNzzqG29E koSblrntCtZREfdpQMLTjAbbWPtKlgq7BTAmDHzf9OqbHpksuJUnguoPW1qZ2G+GTVjYBsS+B3j aWk6wI4CeGXCbH42Zfny5zSrXofRlsAjgveq874ChrYtohoGWgZ1CAHuXcC6s47FyqwERqeIIO8 iG+6t47rfMJQL1W6cwksOrjT2JTvPOadL31Tbe2S0= X-Google-Smtp-Source: AGHT+IFAx8+IMBBZz4sg0FW7i888AnJ1Cu7DY0AP/9/Vjb9aZRfe4SlqVVqShMMoY6c/igcg8ULZ+A== X-Received: by 2002:a05:6512:3e16:b0:598:efa4:d7aa with SMTP id 2adb3069b0e04-598efa4d7b6mr2351606e87.51.1765456193696; Thu, 11 Dec 2025 04:29:53 -0800 (PST) Received: from NB-6746.corp.yadro.com ([188.243.183.84]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-598f3199388sm835201e87.90.2025.12.11.04.29.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Dec 2025 04:29:53 -0800 (PST) From: Artem Shimko To: Mika Westerberg , Andy Shevchenko , Jan Dabros , Andi Shyti Cc: Artem Shimko , linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v4] i2c: designware: Replace magic numbers with named constants Date: Thu, 11 Dec 2025 15:29:47 +0300 Message-ID: <20251211122947.1469666-1-a.shimko.dev@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Replace various magic numbers with properly named constants to improve code readability and maintainability. This includes constants for register access, timing adjustments, timeouts, FIFO parameters, and default values. This makes the code more self-documenting without altering any functionality. Signed-off-by: Artem Shimko Acked-by: Mika Westerberg --- Hello maintainers and reviewers, Fix replaces magic numbers throughout the DesignWare I2C driver with named=20 constants to improve code readability and maintainability. The change introduces constants for register access, timing adjustments,=20 timeouts, FIFO parameters, and default values, all properly documented=20 with comments. No functional changes. Thank you for your consideration. -- Regards, Artem ChangeLog: v1: * https://lore.kernel.org/all/20251105161845.2535367-1-a.shimko.dev@gma= il.com/T/#u v2: * https://lore.kernel.org/all/20251106160206.2617785-1-a.shimko.dev@gma= il.com/T/#u v3: * https://lore.kernel.org/all/20251204161309.750032-1-a.shimko.dev@gmai= l.com/T/#u v4: * Renamed DW_IC_DEFAULT_BUS_CAPACITANCE_PF to DW_IC_DEFAULT_BUS_CAPACI= TANCE_pF * Changed DW_IC_BUSY_POLL_TIMEOUT_US to (1 * USEC_PER_MSEC) * Removed DW_IC_ABORT_TOTAL_TIMEOUT_US and DW_IC_BUSY_TOTAL_TIMEOUT_US;= use multipliers of DW_IC_ABORT_TIMEOUT_US and DW_IC_BUSY_POLL_TIMEOUT_US where needed drivers/i2c/busses/i2c-designware-common.c | 29 ++++++++++++++-------- drivers/i2c/busses/i2c-designware-core.h | 13 ++++++++++ 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/drivers/i2c/busses/i2c-designware-common.c b/drivers/i2c/busse= s/i2c-designware-common.c index 5b1e8f74c4ac..6671e98691ee 100644 --- a/drivers/i2c/busses/i2c-designware-common.c +++ b/drivers/i2c/busses/i2c-designware-common.c @@ -12,6 +12,7 @@ #define DEFAULT_SYMBOL_NAMESPACE "I2C_DW_COMMON" =20 #include +#include #include #include #include @@ -34,6 +35,10 @@ =20 #include "i2c-designware-core.h" =20 +#define DW_IC_DEFAULT_BUS_CAPACITANCE_pF 100 +#define DW_IC_ABORT_TIMEOUT_US 10 +#define DW_IC_BUSY_POLL_TIMEOUT_US (1 * USEC_PER_MSEC) + static const char *const abort_sources[] =3D { [ABRT_7B_ADDR_NOACK] =3D "slave address not acknowledged (7bit mode)", @@ -106,7 +111,7 @@ static int dw_reg_read_word(void *context, unsigned int= reg, unsigned int *val) struct dw_i2c_dev *dev =3D context; =20 *val =3D readw(dev->base + reg) | - (readw(dev->base + reg + 2) << 16); + (readw(dev->base + reg + DW_IC_REG_STEP_BYTES) << DW_IC_REG_WORD_SHIFT); =20 return 0; } @@ -116,7 +121,7 @@ static int dw_reg_write_word(void *context, unsigned in= t reg, unsigned int val) struct dw_i2c_dev *dev =3D context; =20 writew(val, dev->base + reg); - writew(val >> 16, dev->base + reg + 2); + writew(val >> DW_IC_REG_WORD_SHIFT, dev->base + reg + DW_IC_REG_STEP_BYTE= S); =20 return 0; } @@ -165,7 +170,7 @@ int i2c_dw_init_regmap(struct dw_i2c_dev *dev) if (reg =3D=3D swab32(DW_IC_COMP_TYPE_VALUE)) { map_cfg.reg_read =3D dw_reg_read_swab; map_cfg.reg_write =3D dw_reg_write_swab; - } else if (reg =3D=3D (DW_IC_COMP_TYPE_VALUE & 0x0000ffff)) { + } else if (reg =3D=3D lower_16_bits(DW_IC_COMP_TYPE_VALUE)) { map_cfg.reg_read =3D dw_reg_read_word; map_cfg.reg_write =3D dw_reg_write_word; } else if (reg !=3D DW_IC_COMP_TYPE_VALUE) { @@ -384,7 +389,7 @@ int i2c_dw_fw_parse_and_configure(struct dw_i2c_dev *de= v) i2c_parse_fw_timings(device, t, false); =20 if (device_property_read_u32(device, "snps,bus-capacitance-pf", &dev->bus= _capacitance_pF)) - dev->bus_capacitance_pF =3D 100; + dev->bus_capacitance_pF =3D DW_IC_DEFAULT_BUS_CAPACITANCE_pF; =20 dev->clk_freq_optimized =3D device_property_read_bool(device, "snps,clk-f= req-optimized"); =20 @@ -539,8 +544,9 @@ void __i2c_dw_disable(struct dw_i2c_dev *dev) =20 regmap_write(dev->map, DW_IC_ENABLE, enable | DW_IC_ENABLE_ABORT); ret =3D regmap_read_poll_timeout(dev->map, DW_IC_ENABLE, enable, - !(enable & DW_IC_ENABLE_ABORT), 10, - 100); + !(enable & DW_IC_ENABLE_ABORT), + DW_IC_ABORT_TIMEOUT_US, + 10 * DW_IC_ABORT_TIMEOUT_US); if (ret) dev_err(dev->dev, "timeout while trying to abort current transfer\n"); } @@ -552,7 +558,7 @@ void __i2c_dw_disable(struct dw_i2c_dev *dev) * in that case this test reads zero and exits the loop. */ regmap_read(dev->map, DW_IC_ENABLE_STATUS, &status); - if ((status & 1) =3D=3D 0) + if (!(status & 1)) return; =20 /* @@ -635,7 +641,8 @@ int i2c_dw_wait_bus_not_busy(struct dw_i2c_dev *dev) =20 ret =3D regmap_read_poll_timeout(dev->map, DW_IC_STATUS, status, !(status & DW_IC_STATUS_ACTIVITY), - 1100, 20000); + DW_IC_BUSY_POLL_TIMEOUT_US, + 20 * DW_IC_BUSY_POLL_TIMEOUT_US); if (ret) { dev_warn(dev->dev, "timeout waiting for bus ready\n"); =20 @@ -699,12 +706,12 @@ int i2c_dw_set_fifo_size(struct dw_i2c_dev *dev) if (ret) return ret; =20 - tx_fifo_depth =3D ((param >> 16) & 0xff) + 1; - rx_fifo_depth =3D ((param >> 8) & 0xff) + 1; + tx_fifo_depth =3D FIELD_GET(DW_IC_FIFO_TX_FIELD, param) + 1; + rx_fifo_depth =3D FIELD_GET(DW_IC_FIFO_RX_FIELD, param) + 1; if (!dev->tx_fifo_depth) { dev->tx_fifo_depth =3D tx_fifo_depth; dev->rx_fifo_depth =3D rx_fifo_depth; - } else if (tx_fifo_depth >=3D 2) { + } else if (tx_fifo_depth >=3D DW_IC_FIFO_MIN_DEPTH) { dev->tx_fifo_depth =3D min_t(u32, dev->tx_fifo_depth, tx_fifo_depth); dev->rx_fifo_depth =3D min_t(u32, dev->rx_fifo_depth, diff --git a/drivers/i2c/busses/i2c-designware-core.h b/drivers/i2c/busses/= i2c-designware-core.h index 347843b4f5dd..a699953bf5ae 100644 --- a/drivers/i2c/busses/i2c-designware-core.h +++ b/drivers/i2c/busses/i2c-designware-core.h @@ -41,6 +41,19 @@ #define DW_IC_DATA_CMD_DAT GENMASK(7, 0) #define DW_IC_DATA_CMD_FIRST_DATA_BYTE BIT(11) =20 +/* + * Register access parameters + */ +#define DW_IC_REG_STEP_BYTES 2 +#define DW_IC_REG_WORD_SHIFT 16 + +/* + * FIFO depth configuration + */ +#define DW_IC_FIFO_TX_FIELD GENMASK(23, 16) +#define DW_IC_FIFO_RX_FIELD GENMASK(15, 8) +#define DW_IC_FIFO_MIN_DEPTH 2 + /* * Registers offset */ --=20 2.43.0