From patchwork Tue Mar 4 17:05:42 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: 870426 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 A37F02BF120 for ; Tue, 4 Mar 2025 17:05:43 +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=1741107946; cv=none; b=E4u/3kNihsO/qkKPBaEpU0a0UIFh22B1HmP/27hzh/xpw3CTtTP4nFtBycyarTVYhHVkTlDKNA3f+pLWe2yM02SdN+QqUOu5iOd9dh9Nx2aouhzybzDE4M3x+SrlyzzdeWTRls7iPEfw9VIgfCgVvxIs0yM4XG6EWfoftWOXVDE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741107946; c=relaxed/simple; bh=REGjPiVOjqVZBOjhJUgX7G6ANaxzAPJnC5dNaRot8Ec=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=p4yLyOfNvnWSElFXbyEiZUY8OZLjstU8YUthPhYNhY3g3VFNXGbAxyVNC7G1Z6sf8xpIxVnCu1A9oTliHzxo/5/Laz8GqNaWTbMxpcRUUMLcLL6ujZ1ONzFVdQxkifIHw8q+aUwMpviVln0t5xaQJrNoMPppg9pdVZWhZ00rngA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=yi69Q1Mb; arc=none smtp.client-ip=209.85.208.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="yi69Q1Mb" Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-5e033c2f106so6844675a12.3 for ; Tue, 04 Mar 2025 09:05:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1741107941; x=1741712741; darn=vger.kernel.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=jDySvxIgslRZrTqVd7bcfGaor7CHMjwsKayUWf5uR70=; b=yi69Q1Mbb1GkjLEkC7jzKQv1xUdlusqv87QLBkdgvqCAx3CnAQrv1jpGc/bDIFqX/Y yGdr2jngu80ttpJmYLHwqJMKS/3cky1zgiecRkteFQUpOQ3CcJnILv4GLF5uMeJtOiAl TAu6rx1ocIguFuTz0RXsT5Wyp/WXPPVQRUiWSPyCgSiTCdZ/5a132G0y26FOWVtsB/E2 utVsUxE1O73TNJRqF4RVDRo12oWzrFGWkgr1drWvYtBgt578P46KQeRBHR4ouzoxAuSC TmbpiyA2qbGQXrkLyR4IEZLgbASIR8eljgxN19gtenJ+HAPeKu4XmSVa/QjXz60JJXcB kXbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741107941; x=1741712741; 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=jDySvxIgslRZrTqVd7bcfGaor7CHMjwsKayUWf5uR70=; b=aBVCT00VeeP/fsUgVEjxQlRg81alxiCdG26kBsD3pP00HzFvZkax77Su06bkWT570k FF4f2h1OE/Ny74F/i5wYW5HmSMUiJ/me9rw61D4df/2B07+5LKB5ShZZWEYxBkFiwmhF 8skeS3GVXWE/dw3/w3F57DrthPeSCDZeUUX1QisX+pyMJ+XCuTDNe7mAvngAs7MmBD86 1/XUhCu4smgRop8qwB9j4pAv3IumOZFst+050HYVp7YGUDIhtGPia5vDZP/vULzluChS WMUbhbY0VBkgmKoXU+xY9N+RociAs53no9LedU4moJDyGWkEYLbTDbIvI7xgLRJfcosv RwsQ== X-Forwarded-Encrypted: i=1; AJvYcCXjOv4/A1SNDJcoxVqQlFIO1UyNX9D7dX6MzR4llswB2as0l80h7NktQxNJQc2bo16lF/hAcpH+mK6ISgPOvAOTvA==@vger.kernel.org X-Gm-Message-State: AOJu0YyDRaKqfzeoSpnCHUe8m5xysgYSJ61bcVxqbd62AWiFF2qaUEts vo+lIuKCopsDM+ufDmzL+pzwNBKPjW1+/F72meFlY2PhxwJG+I+5D6oqOyVCwQJL5pHOmszWQGI E85M= X-Gm-Gg: ASbGncu5efd2PBfRwmsXvxecpg4FkgPbkNG1+Wq0WhdBcqlXS9aGrNNJGPKIPN08vIz mZeTFPz9W5ghEB5J2YAFeGs4cM840jhIh822hgjH56hCV9SNkJNLBQuOf8oVHxuLgv6NJ31Y5PT jMA/RlgBLNWQhmcDmaLZLsGdM0fjsgzUuAB9M3qiqWM4rgKa+AixcT+FlOrWFpmmfPnfU/pFV0T OIl/no+LoJ3jnQkf5TENnBTZgrB8lJJ2Gc9nm+kqS2QD8PU++E76pJ9Vq2EvdyuOuouhcfPe6w3 sfk1OTlremFfCX/mS9fQNiK6X8C2m7gqjbWlen6wWX9QAA/DpBwPd1XDOfCN2V55VRf3atJbc5O fXQkrSrsJNr6fZo4Ob3TTnFLrqVe3 X-Google-Smtp-Source: AGHT+IGw6DMujSSlMe4X/Gi0vjiilArq9AgwOJMWr49ZazH2bLzcdxFw+AmPTscolQ+3wmW3ZQIPiA== X-Received: by 2002:a05:6402:50d4:b0:5e5:9543:fc0d with SMTP id 4fb4d7f45d1cf-5e59543fd82mr4097180a12.31.1741107940802; Tue, 04 Mar 2025 09:05:40 -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 a640c23a62f3a-abf795ba15esm367589066b.131.2025.03.04.09.05.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 09:05:40 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Tue, 04 Mar 2025 17:05:42 +0000 Subject: [PATCH v2 14/16] rtc: sd3078: drop needless struct sd3078 Precedence: bulk X-Mailing-List: linux-samsung-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250304-rtc-cleanups-v2-14-d4689a71668c@linaro.org> References: <20250304-rtc-cleanups-v2-0-d4689a71668c@linaro.org> In-Reply-To: <20250304-rtc-cleanups-v2-0-d4689a71668c@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 , Nathan Chancellor , Nick Desaulniers , Bill Wendling , Justin Stitt 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, llvm@lists.linux.dev, =?utf-8?q?Andr=C3=A9_Draszik?= X-Mailer: b4 0.14.2 The memory pointed to by the ::rtc member is managed via devres, and no code in this driver uses it past _probe(). We can drop it from the structure and just use a local temporary variable, reducing runtime memory consumption by a few bytes. Since this now means that the structure has just one member only left, there is no need anymore 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 for the containing struct, reducing runtime memory consumption. Signed-off-by: AndrĂ© Draszik --- drivers/rtc/rtc-sd3078.c | 71 +++++++++++++++++++----------------------------- 1 file changed, 28 insertions(+), 43 deletions(-) diff --git a/drivers/rtc/rtc-sd3078.c b/drivers/rtc/rtc-sd3078.c index fe27b54beaad1c06b70bf7f22e44c3f6da087267..10cc1dcfc7748144f51ef674939506feee1fb471 100644 --- a/drivers/rtc/rtc-sd3078.c +++ b/drivers/rtc/rtc-sd3078.c @@ -36,11 +36,6 @@ */ #define WRITE_PROTECT_EN 0 -struct sd3078 { - struct rtc_device *rtc; - struct regmap *regmap; -}; - /* * In order to prevent arbitrary modification of the time register, * when modification of the register, @@ -49,14 +44,11 @@ struct sd3078 { * 2. set WRITE2 bit * 3. set WRITE3 bit */ -static void sd3078_enable_reg_write(struct sd3078 *sd3078) +static void sd3078_enable_reg_write(struct regmap *regmap) { - regmap_update_bits(sd3078->regmap, SD3078_REG_CTRL2, - KEY_WRITE1, KEY_WRITE1); - regmap_update_bits(sd3078->regmap, SD3078_REG_CTRL1, - KEY_WRITE2, KEY_WRITE2); - regmap_update_bits(sd3078->regmap, SD3078_REG_CTRL1, - KEY_WRITE3, KEY_WRITE3); + regmap_update_bits(regmap, SD3078_REG_CTRL2, KEY_WRITE1, KEY_WRITE1); + regmap_update_bits(regmap, SD3078_REG_CTRL1, KEY_WRITE2, KEY_WRITE2); + regmap_update_bits(regmap, SD3078_REG_CTRL1, KEY_WRITE3, KEY_WRITE3); } #if WRITE_PROTECT_EN @@ -69,14 +61,11 @@ static void sd3078_enable_reg_write(struct sd3078 *sd3078) * 2. clear WRITE3 bit * 3. clear WRITE1 bit */ -static void sd3078_disable_reg_write(struct sd3078 *sd3078) +static void sd3078_disable_reg_write(struct regmap *regmap) { - regmap_update_bits(sd3078->regmap, SD3078_REG_CTRL1, - KEY_WRITE2, 0); - regmap_update_bits(sd3078->regmap, SD3078_REG_CTRL1, - KEY_WRITE3, 0); - regmap_update_bits(sd3078->regmap, SD3078_REG_CTRL2, - KEY_WRITE1, 0); + regmap_update_bits(regmap, SD3078_REG_CTRL1, KEY_WRITE2, 0); + regmap_update_bits(regmap, SD3078_REG_CTRL1, KEY_WRITE3, 0); + regmap_update_bits(regmap, SD3078_REG_CTRL2, KEY_WRITE1, 0); } #endif @@ -85,11 +74,10 @@ static int sd3078_rtc_read_time(struct device *dev, struct rtc_time *tm) unsigned char hour; unsigned char rtc_data[NUM_TIME_REGS] = {0}; struct i2c_client *client = to_i2c_client(dev); - struct sd3078 *sd3078 = i2c_get_clientdata(client); + struct regmap *regmap = i2c_get_clientdata(client); int ret; - ret = regmap_bulk_read(sd3078->regmap, SD3078_REG_SC, rtc_data, - NUM_TIME_REGS); + ret = regmap_bulk_read(regmap, SD3078_REG_SC, rtc_data, NUM_TIME_REGS); if (ret < 0) { dev_err(dev, "reading from RTC failed with err:%d\n", ret); return ret; @@ -123,7 +111,7 @@ static int sd3078_rtc_set_time(struct device *dev, struct rtc_time *tm) { unsigned char rtc_data[NUM_TIME_REGS]; struct i2c_client *client = to_i2c_client(dev); - struct sd3078 *sd3078 = i2c_get_clientdata(client); + struct regmap *regmap = i2c_get_clientdata(client); int ret; rtc_data[SD3078_REG_SC] = bin2bcd(tm->tm_sec); @@ -135,10 +123,10 @@ static int sd3078_rtc_set_time(struct device *dev, struct rtc_time *tm) rtc_data[SD3078_REG_YR] = bin2bcd(tm->tm_year - 100); #if WRITE_PROTECT_EN - sd3078_enable_reg_write(sd3078); + sd3078_enable_reg_write(regmap); #endif - ret = regmap_bulk_write(sd3078->regmap, SD3078_REG_SC, rtc_data, + ret = regmap_bulk_write(regmap, SD3078_REG_SC, rtc_data, NUM_TIME_REGS); if (ret < 0) { dev_err(dev, "writing to RTC failed with err:%d\n", ret); @@ -146,7 +134,7 @@ static int sd3078_rtc_set_time(struct device *dev, struct rtc_time *tm) } #if WRITE_PROTECT_EN - sd3078_disable_reg_write(sd3078); + sd3078_disable_reg_write(regmap); #endif return 0; @@ -166,36 +154,33 @@ static const struct regmap_config regmap_config = { static int sd3078_probe(struct i2c_client *client) { int ret; - struct sd3078 *sd3078; + struct regmap *regmap; + struct rtc_device *rtc; if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C)) return -ENODEV; - sd3078 = devm_kzalloc(&client->dev, sizeof(*sd3078), GFP_KERNEL); - if (!sd3078) - return -ENOMEM; - - sd3078->regmap = devm_regmap_init_i2c(client, ®map_config); - if (IS_ERR(sd3078->regmap)) { + regmap = devm_regmap_init_i2c(client, ®map_config); + if (IS_ERR(regmap)) { dev_err(&client->dev, "regmap allocation failed\n"); - return PTR_ERR(sd3078->regmap); + return PTR_ERR(regmap); } - i2c_set_clientdata(client, sd3078); + i2c_set_clientdata(client, regmap); - sd3078->rtc = devm_rtc_allocate_device(&client->dev); - if (IS_ERR(sd3078->rtc)) - return PTR_ERR(sd3078->rtc); + rtc = devm_rtc_allocate_device(&client->dev); + if (IS_ERR(rtc)) + return PTR_ERR(rtc); - sd3078->rtc->ops = &sd3078_rtc_ops; - sd3078->rtc->range_min = RTC_TIMESTAMP_BEGIN_2000; - sd3078->rtc->range_max = RTC_TIMESTAMP_END_2099; + rtc->ops = &sd3078_rtc_ops; + rtc->range_min = RTC_TIMESTAMP_BEGIN_2000; + rtc->range_max = RTC_TIMESTAMP_END_2099; - ret = devm_rtc_register_device(sd3078->rtc); + ret = devm_rtc_register_device(rtc); if (ret) return ret; - sd3078_enable_reg_write(sd3078); + sd3078_enable_reg_write(regmap); return 0; }