From nobody Mon Oct 6 11:53:24 2025 Received: from bali.collaboradmins.com (bali.collaboradmins.com [148.251.105.195]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 418742E4271; Tue, 22 Jul 2025 10:13:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.251.105.195 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753179216; cv=none; b=mz2CNHW9NtD1NFPF0MmL3WjyfrCMOm2NKYLTazEoZy+7CMPAD1Oxksw2w11p/WTXjDzhM9rbczEEPVJkH9Oj/wvX4BlLL4DgoU51bJFl55GE8zKz2vbak5eN1yzjvrOj6xR8o7PLlKrJpATlIqVkGpT677c//iTDIGec7KWaOks= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1753179216; c=relaxed/simple; bh=wDe4pGSIzfeJpl9n15NTs3K1CA3vRyhvLXXpR8wPThM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JzHH1GbUkcfwqqOSrSEMyabaLQMU1PQ76AJaif+Ksg1Fz1Iu9Db+gKeWloFIVZrxTPnPqW+xjjwncUZv15VxjIbMn6K8jociLjqMeX7RGCyuetrKPD/N68fDKytIK/qX/efE32zrheFTywgAECe+FZg3ae8VAhuKvK8iQX1VzgA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=HDMkXMLE; arc=none smtp.client-ip=148.251.105.195 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="HDMkXMLE" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1753179212; bh=wDe4pGSIzfeJpl9n15NTs3K1CA3vRyhvLXXpR8wPThM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=HDMkXMLEugfN6BcAJWned35tNTjeu2P3ClBx9PV3H7sZN6B9XwAAlhU5H239POLEA u7mzOE0wADoOxkgk6fw51ikpSav0rEADWmSfDMpTw3ozbifuXmoQDoFvD9AZ4dIAtb czSQv+9umpqV/p5Qg/4M5cGbCT/HRrA04M3PyIfFHxlsuuCe+gEu7u62EY1F/cOX9O jDQAL8rlqreG3gsSPunKzkE5whxFKaLI1m6odtswR21Y8Z6ckvBbuxKHj5h5+zhXAD LVb3gYRHw3HZuv9z2HwwMKgwdIh6ZjJ87gBnJJ19Ii/tVnhwcpgXcBzLJi4EOcrElR rVTGlLlCasxHg== Received: from IcarusMOD.eternityproject.eu (2-237-20-237.ip236.fastwebnet.it [2.237.20.237]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: kholk11) by bali.collaboradmins.com (Postfix) with ESMTPSA id 7E45917E1540; Tue, 22 Jul 2025 12:13:31 +0200 (CEST) From: AngeloGioacchino Del Regno To: sboyd@kernel.org Cc: jic23@kernel.org, dlechner@baylibre.com, nuno.sa@analog.com, andy@kernel.org, arnd@arndb.de, gregkh@linuxfoundation.org, srini@kernel.org, vkoul@kernel.org, kishon@kernel.org, sre@kernel.org, krzysztof.kozlowski@linaro.org, u.kleine-koenig@baylibre.com, angelogioacchino.delregno@collabora.com, linux-arm-msm@vger.kernel.org, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, linux-pm@vger.kernel.org, kernel@collabora.com, wenst@chromium.org, casey.connolly@linaro.org Subject: [PATCH v2 7/7] iio: adc: qcom-spmi-iadc: Remove regmap R/W wrapper functions Date: Tue, 22 Jul 2025 12:13:17 +0200 Message-ID: <20250722101317.76729-8-angelogioacchino.delregno@collabora.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250722101317.76729-1-angelogioacchino.delregno@collabora.com> References: <20250722101317.76729-1-angelogioacchino.delregno@collabora.com> 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" This driver doesn't need to add any register base address to any regmap call anymore since it was migrated to register as a SPMI subdevice with its own regmap reg_base, which makes the regmap API to automatically add such base address internally. Since the iadc_{read,write,read_result}() functions now only do call regmap_{read,write,bulk_read}() and nothing else, simplify the driver by removing them and by calling regmap APIs directly. Signed-off-by: AngeloGioacchino Del Regno Reviewed-by: Jonathan Cameron --- drivers/iio/adc/qcom-spmi-iadc.c | 83 ++++++++++++-------------------- 1 file changed, 30 insertions(+), 53 deletions(-) diff --git a/drivers/iio/adc/qcom-spmi-iadc.c b/drivers/iio/adc/qcom-spmi-i= adc.c index 985967c85bca..98ed28d74bda 100644 --- a/drivers/iio/adc/qcom-spmi-iadc.c +++ b/drivers/iio/adc/qcom-spmi-iadc.c @@ -113,77 +113,59 @@ struct iadc_chip { struct completion complete; }; =20 -static int iadc_read(struct iadc_chip *iadc, u16 offset, u8 *data) -{ - unsigned int val; - int ret; - - ret =3D regmap_read(iadc->regmap, offset, &val); - if (ret < 0) - return ret; - - *data =3D val; - return 0; -} - -static int iadc_write(struct iadc_chip *iadc, u16 offset, u8 data) -{ - return regmap_write(iadc->regmap, offset, data); -} - static int iadc_reset(struct iadc_chip *iadc) { - u8 data; + u32 data; int ret; =20 - ret =3D iadc_write(iadc, IADC_SEC_ACCESS, IADC_SEC_ACCESS_DATA); + ret =3D regmap_write(iadc->regmap, IADC_SEC_ACCESS, IADC_SEC_ACCESS_DATA); if (ret < 0) return ret; =20 - ret =3D iadc_read(iadc, IADC_PERH_RESET_CTL3, &data); + ret =3D regmap_read(iadc->regmap, IADC_PERH_RESET_CTL3, &data); if (ret < 0) return ret; =20 - ret =3D iadc_write(iadc, IADC_SEC_ACCESS, IADC_SEC_ACCESS_DATA); + ret =3D regmap_write(iadc->regmap, IADC_SEC_ACCESS, IADC_SEC_ACCESS_DATA); if (ret < 0) return ret; =20 data |=3D IADC_FOLLOW_WARM_RB; =20 - return iadc_write(iadc, IADC_PERH_RESET_CTL3, data); + return regmap_write(iadc->regmap, IADC_PERH_RESET_CTL3, data); } =20 static int iadc_set_state(struct iadc_chip *iadc, bool state) { - return iadc_write(iadc, IADC_EN_CTL1, state ? IADC_EN_CTL1_SET : 0); + return regmap_write(iadc->regmap, IADC_EN_CTL1, state ? IADC_EN_CTL1_SET = : 0); } =20 static void iadc_status_show(struct iadc_chip *iadc) { - u8 mode, sta1, chan, dig, en, req; + u32 mode, sta1, chan, dig, en, req; int ret; =20 - ret =3D iadc_read(iadc, IADC_MODE_CTL, &mode); + ret =3D regmap_read(iadc->regmap, IADC_MODE_CTL, &mode); if (ret < 0) return; =20 - ret =3D iadc_read(iadc, IADC_DIG_PARAM, &dig); + ret =3D regmap_read(iadc->regmap, IADC_DIG_PARAM, &dig); if (ret < 0) return; =20 - ret =3D iadc_read(iadc, IADC_CH_SEL_CTL, &chan); + ret =3D regmap_read(iadc->regmap, IADC_CH_SEL_CTL, &chan); if (ret < 0) return; =20 - ret =3D iadc_read(iadc, IADC_CONV_REQ, &req); + ret =3D regmap_read(iadc->regmap, IADC_CONV_REQ, &req); if (ret < 0) return; =20 - ret =3D iadc_read(iadc, IADC_STATUS1, &sta1); + ret =3D regmap_read(iadc->regmap, IADC_STATUS1, &sta1); if (ret < 0) return; =20 - ret =3D iadc_read(iadc, IADC_EN_CTL1, &en); + ret =3D regmap_read(iadc->regmap, IADC_EN_CTL1, &en); if (ret < 0) return; =20 @@ -199,34 +181,34 @@ static int iadc_configure(struct iadc_chip *iadc, int= channel) =20 /* Mode selection */ mode =3D (IADC_OP_MODE_NORMAL << IADC_OP_MODE_SHIFT) | IADC_TRIM_EN; - ret =3D iadc_write(iadc, IADC_MODE_CTL, mode); + ret =3D regmap_write(iadc->regmap, IADC_MODE_CTL, mode); if (ret < 0) return ret; =20 /* Channel selection */ - ret =3D iadc_write(iadc, IADC_CH_SEL_CTL, channel); + ret =3D regmap_write(iadc->regmap, IADC_CH_SEL_CTL, channel); if (ret < 0) return ret; =20 /* Digital parameter setup */ decim =3D IADC_DEF_DECIMATION << IADC_DIG_DEC_RATIO_SEL_SHIFT; - ret =3D iadc_write(iadc, IADC_DIG_PARAM, decim); + ret =3D regmap_write(iadc->regmap, IADC_DIG_PARAM, decim); if (ret < 0) return ret; =20 /* HW settle time delay */ - ret =3D iadc_write(iadc, IADC_HW_SETTLE_DELAY, IADC_DEF_HW_SETTLE_TIME); + ret =3D regmap_write(iadc->regmap, IADC_HW_SETTLE_DELAY, IADC_DEF_HW_SETT= LE_TIME); if (ret < 0) return ret; =20 - ret =3D iadc_write(iadc, IADC_FAST_AVG_CTL, IADC_DEF_AVG_SAMPLES); + ret =3D regmap_write(iadc->regmap, IADC_FAST_AVG_CTL, IADC_DEF_AVG_SAMPLE= S); if (ret < 0) return ret; =20 if (IADC_DEF_AVG_SAMPLES) - ret =3D iadc_write(iadc, IADC_FAST_AVG_EN, IADC_FAST_AVG_EN_SET); + ret =3D regmap_write(iadc->regmap, IADC_FAST_AVG_EN, IADC_FAST_AVG_EN_SE= T); else - ret =3D iadc_write(iadc, IADC_FAST_AVG_EN, 0); + ret =3D regmap_write(iadc->regmap, IADC_FAST_AVG_EN, 0); =20 if (ret < 0) return ret; @@ -239,19 +221,19 @@ static int iadc_configure(struct iadc_chip *iadc, int= channel) return ret; =20 /* Request conversion */ - return iadc_write(iadc, IADC_CONV_REQ, IADC_CONV_REQ_SET); + return regmap_write(iadc->regmap, IADC_CONV_REQ, IADC_CONV_REQ_SET); } =20 static int iadc_poll_wait_eoc(struct iadc_chip *iadc, unsigned int interva= l_us) { unsigned int count, retry; int ret; - u8 sta1; + u32 sta1; =20 retry =3D interval_us / IADC_CONV_TIME_MIN_US; =20 for (count =3D 0; count < retry; count++) { - ret =3D iadc_read(iadc, IADC_STATUS1, &sta1); + ret =3D regmap_read(iadc->regmap, IADC_STATUS1, &sta1); if (ret < 0) return ret; =20 @@ -267,11 +249,6 @@ static int iadc_poll_wait_eoc(struct iadc_chip *iadc, = unsigned int interval_us) return -ETIMEDOUT; } =20 -static int iadc_read_result(struct iadc_chip *iadc, u16 *data) -{ - return regmap_bulk_read(iadc->regmap, IADC_DATA, data, 2); -} - static int iadc_do_conversion(struct iadc_chip *iadc, int chan, u16 *data) { unsigned int wait; @@ -296,7 +273,7 @@ static int iadc_do_conversion(struct iadc_chip *iadc, i= nt chan, u16 *data) } =20 if (!ret) - ret =3D iadc_read_result(iadc, data); + ret =3D regmap_bulk_read(iadc->regmap, IADC_DATA, data, 2); exit: iadc_set_state(iadc, false); if (ret < 0) @@ -392,10 +369,10 @@ static int iadc_update_offset(struct iadc_chip *iadc) =20 static int iadc_version_check(struct iadc_chip *iadc) { - u8 val; + u32 val; int ret; =20 - ret =3D iadc_read(iadc, IADC_PERPH_TYPE, &val); + ret =3D regmap_read(iadc->regmap, IADC_PERPH_TYPE, &val); if (ret < 0) return ret; =20 @@ -404,7 +381,7 @@ static int iadc_version_check(struct iadc_chip *iadc) return -EINVAL; } =20 - ret =3D iadc_read(iadc, IADC_PERPH_SUBTYPE, &val); + ret =3D regmap_read(iadc->regmap, IADC_PERPH_SUBTYPE, &val); if (ret < 0) return ret; =20 @@ -413,7 +390,7 @@ static int iadc_version_check(struct iadc_chip *iadc) return -EINVAL; } =20 - ret =3D iadc_read(iadc, IADC_REVISION2, &val); + ret =3D regmap_read(iadc->regmap, IADC_REVISION2, &val); if (ret < 0) return ret; =20 @@ -428,7 +405,7 @@ static int iadc_version_check(struct iadc_chip *iadc) static int iadc_rsense_read(struct iadc_chip *iadc, struct device_node *no= de) { int ret, sign, int_sense; - u8 deviation; + u32 deviation; =20 ret =3D of_property_read_u32(node, "qcom,external-resistor-micro-ohms", &iadc->rsense[IADC_EXT_RSENSE]); @@ -440,7 +417,7 @@ static int iadc_rsense_read(struct iadc_chip *iadc, str= uct device_node *node) return -EINVAL; } =20 - ret =3D iadc_read(iadc, IADC_NOMINAL_RSENSE, &deviation); + ret =3D regmap_read(iadc->regmap, IADC_NOMINAL_RSENSE, &deviation); if (ret < 0) return ret; =20 --=20 2.50.1