From patchwork Fri Feb 28 14:07:28 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Andr=C3=A9_Draszik?= X-Patchwork-Id: 13996518 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 78655C19776 for ; Fri, 28 Feb 2025 14:31:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References:Message-Id :MIME-Version:Subject:Date:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=3QqT5hKs1ZZ3EyfxS+Rp3Uj2oTY4Kn1kAedLMgDepY0=; b=ZVX/xhY/nEu+3d 0cq1vtUwPZCkoE1b6BgLgsoxpjH1+hKV3d2XW0yrRU+GG34duDAYkvaTSqa0XnJZooQPZHpPl2plj 7bwfgruVH+crsE1EImUSLmmQzQFI4sKoWd0n/AEEwRKD7yZWPlkvEZiR4JSxu5E2RBdXP9Dl4NlCF l2UkU/h/7OAFh5JsKks+SDpkXx3OTwWvAx7EWH6P3bSs/D5fB4QYSZyE8zQPokT0rm/KA9ZkU8lr8 8Pb5pbnEEgN9YGU09pGhXbgeUp9gvVkFaY/CScg3LQywyoYvder5tu4Bbq0PPej5TO+Ak6MuS7xEd xQVMgd+EKmRsx10n89jA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1to1Oh-0000000BGz1-2iZa; Fri, 28 Feb 2025 14:31:27 +0000 Received: from mail-ed1-x534.google.com ([2a00:1450:4864:20::534]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1to11X-0000000BBCC-3G5a for linux-amlogic@lists.infradead.org; Fri, 28 Feb 2025 14:07:33 +0000 Received: by mail-ed1-x534.google.com with SMTP id 4fb4d7f45d1cf-5e04cb346eeso3602151a12.2 for ; Fri, 28 Feb 2025 06:07:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1740751650; x=1741356450; darn=lists.infradead.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=XNaBzsv98dZxOnoY4pQ3hhfyEv1+PH+c26jk5v5UbcU=; b=ZgS6e0GKv+m/lKIV93gmZPpi2slR7/n0yAnTzu31RvGbvRU5xV8/Crs7J64JipvQrA CmhAEmzItp+D0dQlIo1AACX2836YoYhWLnkx/rWd++ch+Ipl9mhSdXwPuqzs8AOZpRLZ 11+T82kuh9KwO3AVUQW/1A17rEKms9GcixvtPt3f3ORTNpZ8Ri6isW6X5G33SUyJhi5P TEiGeuiC82Im3Tm8O9oloGb7sy1Z9mL+ExSDGFEYcnWeR80O+LZCJ8cByv0eWfnMOLRi GiS2bYB8Ymu2FoKj7pqp8PC4bU1D2rzFHBOrYh+esuL5xcSs0EFJ9PODNryrODambezR 6WcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740751650; x=1741356450; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XNaBzsv98dZxOnoY4pQ3hhfyEv1+PH+c26jk5v5UbcU=; b=wCVKuAc90NlAeSj7X08ECGcVNhrvnANtbwsTGhg5YcYrQJ3aja4YvfpICJ1Iv3rARU hsAZwHe/HB7/TLZEpQWxcx9WenjknhQ9851nNoJ7Yb/psZg4upxK0sQsAAY1x5wbwwML HVdcvc08UJOsf0J5umxc02puA/Eq9lw8D0mi394viOW4SGMp4ZcPELEENlPz3vkFg8Ba zkPiY7HMQpge6oSTtNfjsCNMqw3ZfZydLkhmE9RbIfFHCvdTrMttZ+JWH5xxyWU3K1Og afA/2l9fd1uARK14dXtyUk7Q1DdAey8mkgMhWT3FY0ejyMjJ+sSZse5vCDltxZoa+yiz Cbsw== X-Forwarded-Encrypted: i=1; AJvYcCXH+hbV1X7OgZsSbAq6VspaRtsks3EC9oc2JpqL+Mr0YtIRp27J8z1eyJl7jMR8TehXMFb9o5h+/2DhL8zA@lists.infradead.org X-Gm-Message-State: AOJu0YzmnjXibJ69QGm8UjzZdTHby5ZhE3gmKl7F31NeEestaAm1Ekjm kSWvG2158yz1RmVUH7SqRA3wUVf37Ot4iPLvXisDzlY3BIg7qF4b9UxgvAXSOKI= X-Gm-Gg: ASbGnctoyNZWMcZOTvK/kCqBO8dI2bJ6aNFE4ZCbYT0H7zwm8Gpp+0NbfNrtxWPWlmB Z6Xe+y8mFhgHNQsCLtsE4dob2uN2W0EzB41awbDJzMtVAoYFlJpAK9/IAy+yUpGvbABrDHQHDUz KNfcmdJk4j6kkY3amxsoR5PKsBnclvVZEkmtXU45nnjSIzLHjeIi3xeYnvfiKIaWdQNjOFSC+Kr RpgkdvyJtbPUUPae6c4SuCAsrjUOsrpWJQ1PkRWZTtigzxK+aKcNAyOAfCkdu1DRk+1PfXbFmWv WXwRGpGrWSTteMK3sR84E8UHii1NrhJomUSXTIWQXeVsR4YomSNpapj/cVJqAzNSE10544EYHun m4LLCgoTyDA== X-Google-Smtp-Source: AGHT+IHJgHIb94bIAN1OxpmT/CmpG5hxROPCgFLfrUaKlqlLkHckO5CTYjuy4Kdl9gpiKvePvUPO6w== X-Received: by 2002:a05:6402:35d3:b0:5e0:9959:83cd with SMTP id 4fb4d7f45d1cf-5e4d6b70ef7mr2396243a12.21.1740751650375; Fri, 28 Feb 2025 06:07:30 -0800 (PST) Received: from puffmais.c.googlers.com (30.171.91.34.bc.googleusercontent.com. [34.91.171.30]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5e4c3fb51f9sm2550839a12.55.2025.02.28.06.07.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Feb 2025 06:07:30 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Fri, 28 Feb 2025 14:07:28 +0000 Subject: [PATCH 15/18] rtc: rx8581: drop needless struct rx8581 MIME-Version: 1.0 Message-Id: <20250228-rtc-cleanups-v1-15-b44cec078481@linaro.org> References: <20250228-rtc-cleanups-v1-0-b44cec078481@linaro.org> In-Reply-To: <20250228-rtc-cleanups-v1-0-b44cec078481@linaro.org> To: Chanwoo Choi , Krzysztof Kozlowski , Alexandre Belloni , Joel Stanley , Andrew Jeffery , Hans Ulli Kroll , Linus Walleij , Neil Armstrong , Kevin Hilman , Jerome Brunet , Martin Blumenstingl , =?utf-8?b?VMOz?= =?utf-8?b?dGggSsOhbm9z?= , Dianlong Li Cc: linux-kernel@vger.kernel.org, linux-rtc@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-aspeed@lists.ozlabs.org, linux-amlogic@lists.infradead.org, =?utf-8?q?Andr=C3=A9_Draszik?= X-Mailer: b4 0.14.2 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250228_060731_830720_01DF5AB4 X-CRM114-Status: GOOD ( 20.66 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org This private data struct has one member only, there is no need to allocate data for it and pass that around via the various callbacks, just to extract that one member. Instead, we can just pass that one member and avoid the extra memory allocation, reducing runtime memory consumption. Signed-off-by: André Draszik --- drivers/rtc/rtc-rx8581.c | 63 +++++++++++++++++++----------------------------- 1 file changed, 25 insertions(+), 38 deletions(-) diff --git a/drivers/rtc/rtc-rx8581.c b/drivers/rtc/rtc-rx8581.c index 785ebaca07ac971eee34559f8d1e0a8a872cbba9..20c2dff01bae833ae4e100cc38cd5f030017be75 100644 --- a/drivers/rtc/rtc-rx8581.c +++ b/drivers/rtc/rtc-rx8581.c @@ -52,10 +52,6 @@ #define RX8571_USER_RAM 0x10 #define RX8571_NVRAM_SIZE 0x10 -struct rx8581 { - struct regmap *regmap; -}; - struct rx85x1_config { struct regmap_config regmap; unsigned int num_nvram; @@ -71,14 +67,14 @@ static int rx8581_rtc_read_time(struct device *dev, struct rtc_time *tm) unsigned char date[7]; unsigned int data; int err; - struct rx8581 *rx8581 = i2c_get_clientdata(client); + struct regmap *regmap = i2c_get_clientdata(client); /* First we ensure that the "update flag" is not set, we read the * time and date then re-read the "update flag". If the update flag * has been set, we know that the time has changed during the read so * we repeat the whole process again. */ - err = regmap_read(rx8581->regmap, RX8581_REG_FLAG, &data); + err = regmap_read(regmap, RX8581_REG_FLAG, &data); if (err < 0) return err; @@ -91,20 +87,20 @@ static int rx8581_rtc_read_time(struct device *dev, struct rtc_time *tm) do { /* If update flag set, clear it */ if (data & RX8581_FLAG_UF) { - err = regmap_write(rx8581->regmap, RX8581_REG_FLAG, - data & ~RX8581_FLAG_UF); + err = regmap_write(regmap, RX8581_REG_FLAG, + data & ~RX8581_FLAG_UF); if (err < 0) return err; } /* Now read time and date */ - err = regmap_bulk_read(rx8581->regmap, RX8581_REG_SC, date, + err = regmap_bulk_read(regmap, RX8581_REG_SC, date, sizeof(date)); if (err < 0) return err; /* Check flag register */ - err = regmap_read(rx8581->regmap, RX8581_REG_FLAG, &data); + err = regmap_read(regmap, RX8581_REG_FLAG, &data); if (err < 0) return err; } while (data & RX8581_FLAG_UF); @@ -136,7 +132,7 @@ static int rx8581_rtc_set_time(struct device *dev, struct rtc_time *tm) struct i2c_client *client = to_i2c_client(dev); int err; unsigned char buf[7]; - struct rx8581 *rx8581 = i2c_get_clientdata(client); + struct regmap *regmap = i2c_get_clientdata(client); dev_dbg(dev, "%s: secs=%d, mins=%d, hours=%d, " "mday=%d, mon=%d, year=%d, wday=%d\n", @@ -159,25 +155,23 @@ static int rx8581_rtc_set_time(struct device *dev, struct rtc_time *tm) buf[RX8581_REG_DW] = (0x1 << tm->tm_wday); /* Stop the clock */ - err = regmap_update_bits(rx8581->regmap, RX8581_REG_CTRL, + err = regmap_update_bits(regmap, RX8581_REG_CTRL, RX8581_CTRL_STOP, RX8581_CTRL_STOP); if (err < 0) return err; /* write register's data */ - err = regmap_bulk_write(rx8581->regmap, RX8581_REG_SC, - buf, sizeof(buf)); + err = regmap_bulk_write(regmap, RX8581_REG_SC, buf, sizeof(buf)); if (err < 0) return err; /* get VLF and clear it */ - err = regmap_update_bits(rx8581->regmap, RX8581_REG_FLAG, - RX8581_FLAG_VLF, 0); + err = regmap_update_bits(regmap, RX8581_REG_FLAG, RX8581_FLAG_VLF, 0); if (err < 0) return err; /* Restart the clock */ - return regmap_update_bits(rx8581->regmap, RX8581_REG_CTRL, + return regmap_update_bits(regmap, RX8581_REG_CTRL, RX8581_CTRL_STOP, 0); } @@ -189,29 +183,27 @@ static const struct rtc_class_ops rx8581_rtc_ops = { static int rx8571_nvram_read(void *priv, unsigned int offset, void *val, size_t bytes) { - struct rx8581 *rx8581 = priv; + struct regmap *regmap = priv; - return regmap_bulk_read(rx8581->regmap, RX8571_USER_RAM + offset, - val, bytes); + return regmap_bulk_read(regmap, RX8571_USER_RAM + offset, val, bytes); } static int rx8571_nvram_write(void *priv, unsigned int offset, void *val, size_t bytes) { - struct rx8581 *rx8581 = priv; + struct regmap *regmap = priv; - return regmap_bulk_write(rx8581->regmap, RX8571_USER_RAM + offset, - val, bytes); + return regmap_bulk_write(regmap, RX8571_USER_RAM + offset, val, bytes); } static int rx85x1_nvram_read(void *priv, unsigned int offset, void *val, size_t bytes) { - struct rx8581 *rx8581 = priv; + struct regmap *regmap = priv; unsigned int tmp_val; int ret; - ret = regmap_read(rx8581->regmap, RX8581_REG_RAM, &tmp_val); + ret = regmap_read(regmap, RX8581_REG_RAM, &tmp_val); (*(unsigned char *)val) = (unsigned char) tmp_val; return ret; @@ -220,12 +212,11 @@ static int rx85x1_nvram_read(void *priv, unsigned int offset, void *val, static int rx85x1_nvram_write(void *priv, unsigned int offset, void *val, size_t bytes) { - struct rx8581 *rx8581 = priv; + struct regmap *regmap = priv; unsigned char tmp_val; tmp_val = *((unsigned char *)val); - return regmap_write(rx8581->regmap, RX8581_REG_RAM, - (unsigned int)tmp_val); + return regmap_write(regmap, RX8581_REG_RAM, (unsigned int)tmp_val); } static const struct rx85x1_config rx8581_config = { @@ -248,7 +239,7 @@ static const struct rx85x1_config rx8571_config = { static int rx8581_probe(struct i2c_client *client) { - struct rx8581 *rx8581; + struct regmap *regmap; const struct rx85x1_config *config = &rx8581_config; const void *data = of_device_get_match_data(&client->dev); struct rtc_device *rtc; @@ -276,15 +267,11 @@ static int rx8581_probe(struct i2c_client *client) if (data) config = data; - rx8581 = devm_kzalloc(&client->dev, sizeof(struct rx8581), GFP_KERNEL); - if (!rx8581) - return -ENOMEM; - - i2c_set_clientdata(client, rx8581); + regmap = devm_regmap_init_i2c(client, &config->regmap); + if (IS_ERR(regmap)) + return PTR_ERR(regmap); - rx8581->regmap = devm_regmap_init_i2c(client, &config->regmap); - if (IS_ERR(rx8581->regmap)) - return PTR_ERR(rx8581->regmap); + i2c_set_clientdata(client, regmap); rtc = devm_rtc_allocate_device(&client->dev); if (IS_ERR(rtc)) @@ -299,7 +286,7 @@ static int rx8581_probe(struct i2c_client *client) ret = devm_rtc_register_device(rtc); for (i = 0; i < config->num_nvram; i++) { - nvmem_cfg[i].priv = rx8581; + nvmem_cfg[i].priv = regmap; devm_rtc_nvmem_register(rtc, &nvmem_cfg[i]); }