From nobody Fri Dec 19 14:30:30 2025 Received: from mail-ej1-f50.google.com (mail-ej1-f50.google.com [209.85.218.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 D161F270EC5; Wed, 9 Apr 2025 17:09:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744218587; cv=none; b=TpjBa7ScTAN45po1YoNpX/tRI7bWQge0JTdXUVvBaAGP/UhOE5Dxc7N5cIamefTdj5f8HBEjn85++88Ok/89jfPDruRcbQnmOWfw5b3kJFTNFZFZnymrKVcBlhPYovpuY3fasbzn4tN/1yOuHJSxkMdDjNBfsI6q1a9rP3mu/6E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744218587; c=relaxed/simple; bh=jwsoeajWLSOPJcvIZix/A6b+favE2I6KfWiuZwzI3kE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=Biz5DWc/PMsJVO8A5/iaxVhkD517CZVbSEQ7vxR2XvZtPKXqZpldSxMNmPg6lov3L6Hl3F+JgPBN4inpn9G82t2j1TmqCkOArUtPshGEbp+nVazTbvEoBYvaaeGOFsEOEghbPNFv0UknudZfYy8gxDKZzg/IlzkXPXPWbgLpD70= 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=cs+hu0r7; arc=none smtp.client-ip=209.85.218.50 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="cs+hu0r7" Received: by mail-ej1-f50.google.com with SMTP id a640c23a62f3a-abbb12bea54so350158766b.0; Wed, 09 Apr 2025 10:09:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744218584; x=1744823384; 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=EL5d6O3loKPdrSygpYmikEvuM6mYmpkHUhAOsZ8Nu3Q=; b=cs+hu0r79CpNQVRFesrelHA85zCuFJCNRnd2Bk2jReiPawPUOTFcvIXwiX6/y4VsJL ZjwZPp4K/oQYCkpLCNsR78NfV7+V4Md0357x10ba9NDRGfNrRumizvSmOcJkjNeU95VJ 72+uwZXBhIn7TRPGV7iDzGpk/ViQYYRmMwHhOVwQHkxYEhJzkFevjUy+SEhXtJybuRBD 8meaxyGOblksgKIqbj5MWU7v89R7Faz+QWUQd5r3npYTX92tix8iHqiG3n6Qspi0V+Mm JojIV3qASa+TMBwpV+09x4joZQLMU5CU5wiSRz0wmishyRGV5sl4F9Qb1xLNExu3cUcK IIQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744218584; x=1744823384; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EL5d6O3loKPdrSygpYmikEvuM6mYmpkHUhAOsZ8Nu3Q=; b=hWI5NQWmhktJINA3lVV6fL4G4ala4NAW9nkccwBn2XmOE9vkquS2U9t25lq097pUxj k8xqJTdB72R25T/K0YnwHUBF4AL4tCu/QPK+DBwaTnRad4DUp6Mx3BZ1G1TCv4hxBdPY ydqGwIRQgRtw5S4IEZoxBZ4OyQPMPOa5bCqhG1qsc6EylJgd4VxgVjBV3pWb6Rfx0wxq ezG/6lerdZqIF+ZJzYzNhbgFZYYDrdHw2oJn3IjxBfS+SAH/+EKzsU9qTc8AgenEX3/i KfA7o4kprY3kmNaFYKjQw9hQtnnROsh1sokYtNXPlKXM/4oWS59Nbj4OQgblsk3ezZRh 9r9Q== X-Forwarded-Encrypted: i=1; AJvYcCUz6rdMJoK669/HOL3qUygAmj5/0f7P0xlGJRBhfhEdwtAxdTwWwwmervrGMehc0BM7ITbP01qcdI+D@vger.kernel.org, AJvYcCWIt8lIM7W1VZ09a3cGrQ+eR7LMWZPaklchhipMPOuk3PX3x7DLuUoHyQzu5bUJByIOLqF3To9k5q4vNNMA@vger.kernel.org X-Gm-Message-State: AOJu0Yxao9MX7aa8nh0SpUXEttnn43UC4NRBX8FAsiWDaA4i1uz8hM9n RijNcScFO9n0pilkeKMXBZI/mzyFPjXiT8SEUbZcG6w0h/T3qgQkM1vA/ZkYUCM= X-Gm-Gg: ASbGnctjkjFhjQHhDdi0XCUmRAggEHqPF/FO70UMJ+Nic1UC6uVle7uFx8kzh2ma6hL kQ/qEfsYxwR+zZPLwIjqAv93wg4kZtREt9l7Nx08yK5W1GKMG8EUkcMaBF3utuY9aM+pRipc11+ 7ifymgexcE8j0ZrGZ9r9scRPpN7ayCkF2IoFup1Oo5p1ryF7o+kGwoZtIUbeLy0FFmUZiNx+uuH IhGZhTpC44EvylycePh0eAjwpF+lIUlHjb0fDMyQXUNntfoXe3TAKWV2scvl0xxF+Dhx05tuaKa H4buBn20dPYVKHtyzO2aNuoqsGaDrC9eJQeZlDKDpbTZf8OZ3Pm1Khi6KppEt1x/C2Mj X-Google-Smtp-Source: AGHT+IG+q28JqOmkm6ZLT/YWkw4dfJVSxKtDocQSw2d0jFM6kZ5goVn8zSjt/yqpDQJVn9C0kabqwg== X-Received: by 2002:a17:907:7208:b0:abf:67de:2f1f with SMTP id a640c23a62f3a-aca9d70e673mr256615666b.44.1744218583803; Wed, 09 Apr 2025 10:09:43 -0700 (PDT) Received: from localhost.localdomain ([78.209.27.245]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-acaa1be913asm122151166b.47.2025.04.09.10.09.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Apr 2025 10:09:43 -0700 (PDT) From: Antoni Pokusinski To: alexandre.belloni@bootlin.com, krzk+dt@kernel.org, conor+dt@kernel.org, robh@kernel.org, alexander.stein@ew.tq-group.com Cc: linux-rtc@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Antoni Pokusinski Subject: [PATCH v2 1/3] rtc: pcf85063: create pcf85063_i2c_probe Date: Wed, 9 Apr 2025 19:09:14 +0200 Message-Id: <20250409170916.47224-2-apokusinski01@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20250409170916.47224-1-apokusinski01@gmail.com> References: <20250409170916.47224-1-apokusinski01@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Move the i2c-specific code from pcf85063_probe to the newly created function. This is a preparation for introducing the support for RV8063 real-time clock with SPI interface. Signed-off-by: Antoni Pokusinski --- drivers/rtc/rtc-pcf85063.c | 97 +++++++++++++++++++++++++++----------- 1 file changed, 70 insertions(+), 27 deletions(-) diff --git a/drivers/rtc/rtc-pcf85063.c b/drivers/rtc/rtc-pcf85063.c index 4fa5c4ecdd5a..03dfc58f4cd7 100644 --- a/drivers/rtc/rtc-pcf85063.c +++ b/drivers/rtc/rtc-pcf85063.c @@ -559,12 +559,12 @@ static const struct pcf85063_config config_rv8263 =3D= { .force_cap_7000 =3D 1, }; =20 -static int pcf85063_probe(struct i2c_client *client) +static int pcf85063_probe(struct device *dev, struct regmap *regmap, int i= rq, + const struct pcf85063_config *config) { struct pcf85063 *pcf85063; unsigned int tmp; int err; - const struct pcf85063_config *config; struct nvmem_config nvmem_cfg =3D { .name =3D "pcf85063_nvram", .reg_read =3D pcf85063_nvmem_read, @@ -573,28 +573,22 @@ static int pcf85063_probe(struct i2c_client *client) .size =3D 1, }; =20 - dev_dbg(&client->dev, "%s\n", __func__); + dev_dbg(dev, "%s\n", __func__); =20 - pcf85063 =3D devm_kzalloc(&client->dev, sizeof(struct pcf85063), + pcf85063 =3D devm_kzalloc(dev, sizeof(struct pcf85063), GFP_KERNEL); if (!pcf85063) return -ENOMEM; =20 - config =3D i2c_get_match_data(client); - if (!config) - return -ENODEV; - - pcf85063->regmap =3D devm_regmap_init_i2c(client, &config->regmap); - if (IS_ERR(pcf85063->regmap)) - return PTR_ERR(pcf85063->regmap); + pcf85063->regmap =3D regmap; =20 - i2c_set_clientdata(client, pcf85063); + dev_set_drvdata(dev, pcf85063); =20 err =3D regmap_read(pcf85063->regmap, PCF85063_REG_SC, &tmp); if (err) - return dev_err_probe(&client->dev, err, "RTC chip is not present\n"); + return dev_err_probe(dev, err, "RTC chip is not present\n"); =20 - pcf85063->rtc =3D devm_rtc_allocate_device(&client->dev); + pcf85063->rtc =3D devm_rtc_allocate_device(dev); if (IS_ERR(pcf85063->rtc)) return PTR_ERR(pcf85063->rtc); =20 @@ -605,19 +599,17 @@ static int pcf85063_probe(struct i2c_client *client) * of the registers after the automatic power-on reset... */ if (tmp & PCF85063_REG_SC_OS) { - dev_warn(&client->dev, - "POR issue detected, sending a SW reset\n"); + dev_warn(dev, "POR issue detected, sending a SW reset\n"); err =3D regmap_write(pcf85063->regmap, PCF85063_REG_CTRL1, PCF85063_REG_CTRL1_SWR); if (err < 0) - dev_warn(&client->dev, - "SW reset failed, trying to continue\n"); + dev_warn(dev, "SW reset failed, trying to continue\n"); } =20 - err =3D pcf85063_load_capacitance(pcf85063, client->dev.of_node, + err =3D pcf85063_load_capacitance(pcf85063, dev->of_node, config->force_cap_7000 ? 7000 : 0); if (err < 0) - dev_warn(&client->dev, "failed to set xtal load capacitance: %d", + dev_warn(dev, "failed to set xtal load capacitance: %d", err); =20 pcf85063->rtc->ops =3D &pcf85063_rtc_ops; @@ -627,13 +619,13 @@ static int pcf85063_probe(struct i2c_client *client) clear_bit(RTC_FEATURE_UPDATE_INTERRUPT, pcf85063->rtc->features); clear_bit(RTC_FEATURE_ALARM, pcf85063->rtc->features); =20 - if (config->has_alarms && client->irq > 0) { + if (config->has_alarms && irq > 0) { unsigned long irqflags =3D IRQF_TRIGGER_LOW; =20 - if (dev_fwnode(&client->dev)) + if (dev_fwnode(dev)) irqflags =3D 0; =20 - err =3D devm_request_threaded_irq(&client->dev, client->irq, + err =3D devm_request_threaded_irq(dev, irq, NULL, pcf85063_rtc_handle_irq, irqflags | IRQF_ONESHOT, "pcf85063", pcf85063); @@ -642,8 +634,8 @@ static int pcf85063_probe(struct i2c_client *client) "unable to request IRQ, alarms disabled\n"); } else { set_bit(RTC_FEATURE_ALARM, pcf85063->rtc->features); - device_init_wakeup(&client->dev, true); - err =3D dev_pm_set_wake_irq(&client->dev, client->irq); + device_init_wakeup(dev, true); + err =3D dev_pm_set_wake_irq(dev, irq); if (err) dev_err(&pcf85063->rtc->dev, "failed to enable irq wake\n"); @@ -661,6 +653,8 @@ static int pcf85063_probe(struct i2c_client *client) return devm_rtc_register_device(pcf85063->rtc); } =20 +#if IS_ENABLED(CONFIG_I2C) + static const struct i2c_device_id pcf85063_ids[] =3D { { "pca85073a", .driver_data =3D (kernel_ulong_t)&config_pcf85063a }, { "pcf85063", .driver_data =3D (kernel_ulong_t)&config_pcf85063 }, @@ -683,16 +677,65 @@ static const struct of_device_id pcf85063_of_match[] = =3D { MODULE_DEVICE_TABLE(of, pcf85063_of_match); #endif =20 +static int pcf85063_i2c_probe(struct i2c_client *client) +{ + const struct pcf85063_config *config; + struct regmap *regmap; + + config =3D i2c_get_match_data(client); + if (!config) + return -ENODEV; + + regmap =3D devm_regmap_init_i2c(client, &config->regmap); + if (IS_ERR(regmap)) + return PTR_ERR(regmap); + + return pcf85063_probe(&client->dev, regmap, client->irq, config); +} + static struct i2c_driver pcf85063_driver =3D { .driver =3D { .name =3D "rtc-pcf85063", .of_match_table =3D of_match_ptr(pcf85063_of_match), }, - .probe =3D pcf85063_probe, + .probe =3D pcf85063_i2c_probe, .id_table =3D pcf85063_ids, }; =20 -module_i2c_driver(pcf85063_driver); +static int pcf85063_register_driver(void) +{ + return i2c_add_driver(&pcf85063_driver); +} + +static void pcf85063_unregister_driver(void) +{ + i2c_del_driver(&pcf85063_driver); +} + +#else + +static int pcf85063_register_driver(void) +{ + return 0; +} + +static void pcf85063_unregister_driver(void) +{ +} + +#endif /* IS_ENABLED(CONFIG_I2C) */ + +static int __init pcf85063_init(void) +{ + return pcf85063_register_driver(); +} +module_init(pcf85063_init); + +static void __exit pcf85063_exit(void) +{ + pcf85063_unregister_driver(); +} +module_exit(pcf85063_exit); =20 MODULE_AUTHOR("S=C3=B8ren Andersen "); MODULE_DESCRIPTION("PCF85063 RTC driver"); --=20 2.25.1 From nobody Fri Dec 19 14:30:30 2025 Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) (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 3652C270ED9; Wed, 9 Apr 2025 17:09:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744218591; cv=none; b=iFHcBfq7dXR61fkotP9FXB70xjrfbsHDz8nWx6Oj8Q3GTLFPZucxO5+ydry4pHhIXDsB99Ei/P4tDHIvtplnEn6noGb5PxSE3GXIH5UveN/4BmIKYD8+KTPIYIyXXY5nT2qHi86Bo+FK4iyehz6HyLsO38uV0fNpXLHCUzEecZM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744218591; c=relaxed/simple; bh=29MwE5bOHbzihqKS98mIQfYlP2+1BKDsSNDg2G+7wwg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=XOoWnJLsFBfivLOwEmhttFuaIMcKQNB1epdEK8Uy+sPUz7JIAA+L+6wANvJTpBi0FhdXzOpRcY1nT5Xl34WTFhizM95Xs+dSlwFyp/bxMb/pi9hkUC3h762xc+DCQnWRdZrgQb64StaFraNkwWJGWiAS6KdA2dNOUlraWMTbcfY= 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=FjrN9MC3; arc=none smtp.client-ip=209.85.218.48 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="FjrN9MC3" Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-ac298c8fa50so1151715466b.1; Wed, 09 Apr 2025 10:09:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744218587; x=1744823387; 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=2aB27vvwT7DSR/rq1zNxpJ8AqSNFk9AHof2SWw8w5sY=; b=FjrN9MC3cv9NcmqJAvGHiIsm570HoBYmrE3b5aLJLBgAlNfKr5E2iOvII+5L+FdUeK VqUiz/6UavtF4G3hjIobPWPkXImEEuX9o/nX00M3S48nY5SVY7n9YxKROQgY1GsmUJQO 3+0CKhAKljzkALx0O6fS1VAOdXDeuFJIyE0ToXuKGF6HTggqaIsIjxKVCA/A4JHYhw+T FSUiLmKt+lWwhtwYyDy50vmLxbFBxQhNyLFpuF1uUU/+YIxfDmUGcUdJ9VcIILkhkUsN BM4gffe0S9Gdp4cq9jjjoAcu1epwXf6+VopcZX+rHRaxtDr5dcrd7SkzPQWnwuKvz0bl 27BA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744218587; x=1744823387; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2aB27vvwT7DSR/rq1zNxpJ8AqSNFk9AHof2SWw8w5sY=; b=FVu8k9tTBUFK4Hal/vzBNsElafEjog8qSSllDqp3jD9kCgaUtVhdrDPmwsAyP9yc60 5F4meHzGiSVSwHwoTipuEdxjs+IKOKJOEg3sIkrWA337mraUZWi8Ri/euvWbAWXm2a04 q264UnmQdIU30HW/TdOjmxp/mtrvZ2IZG5iSiRAaqm/WvOQPvCHhNWcUpu9JSwklktgJ sxWYtXtqDJstpeiFB7oYhA9MMVBK0yPOGJo5cYJDGUP0JfgCwNJEoxeGJehm/5ZVIFjW cl6FbEN5iMWz+ibyzKxbbf6G8PmcX0QGSwgdJjemnxhkXynfwlQt6e9fxVAK/r+Mq5ZG 9UsA== X-Forwarded-Encrypted: i=1; AJvYcCWtTiRoafivS7h3u1D0fqLhqWsecILoZqKgox5cN/3IzzUNzA4cddYUr3G9AhHJMfKHwi1AEc5h035J@vger.kernel.org, AJvYcCXpiKxZ235vIYpaWNedmvfFgMU9JIgf3nCHQ6Lw0dLXIVfA7jbDbPTYGhcSQ4O7rBVchT+R3rcQEv6WyC5m@vger.kernel.org X-Gm-Message-State: AOJu0YwAFRZf2OpE+84cRQDY9PyJQcgWesZcxi/1ctumlFkLyHps/f2H 3UTAMhYpTJoyemqBOpWF1yRAaU2+LNuTTta3/wvHMZHxnmlra0HX X-Gm-Gg: ASbGncuAfs7TsZrFsBcp38AzwTyDsSY9A4PAuYK6twgA5xuSNTbRg5xdxUhnvMM3sd0 QBt8FaCIvjfYWi35/g5F0tPyjecDzgIWXzBBdtbAcjzxzuUzjmvWs0nTzpE41aG9ko3nriJ4Lqh fFgz58Ah1yZVL6+gppIYE/L5XYEEJwypQ8LZBfN4S+i6jv2WOb/1MffmH37u2htOuI9G6I/wlZV 5gGRaKowkKpdYn+yaqt7wbyWZmkD2cFvDRdVgerh08d5m2CE/eQuKlnhNaRBYWhrZJUq3kWzLdA ZM2aEr5IVNLhVxIA3tYI39DIAp5mIb/IQUExFYnJRvADbG+yYgDlQ7raxw== X-Google-Smtp-Source: AGHT+IH0gNjqYqXbQct4sQZH48O10mDQektq13dZcPo5RKRj92OiES29akyDwsCoKbWqhxq/eVjKpA== X-Received: by 2002:a17:907:d1f:b0:ac3:a7bb:1c2f with SMTP id a640c23a62f3a-aca9d5dc8ebmr378855566b.7.1744218587199; Wed, 09 Apr 2025 10:09:47 -0700 (PDT) Received: from localhost.localdomain ([78.209.27.245]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-acaa1be913asm122151166b.47.2025.04.09.10.09.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Apr 2025 10:09:46 -0700 (PDT) From: Antoni Pokusinski To: alexandre.belloni@bootlin.com, krzk+dt@kernel.org, conor+dt@kernel.org, robh@kernel.org, alexander.stein@ew.tq-group.com Cc: linux-rtc@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Antoni Pokusinski Subject: [PATCH v2 2/3] rtc: pcf85063: add support for RV8063 Date: Wed, 9 Apr 2025 19:09:15 +0200 Message-Id: <20250409170916.47224-3-apokusinski01@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20250409170916.47224-1-apokusinski01@gmail.com> References: <20250409170916.47224-1-apokusinski01@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Microcrystal RV8063 is a real-time clock with SPI interface. Its functionality is very similar to the RV8263 rtc. Signed-off-by: Antoni Pokusinski --- drivers/rtc/Kconfig | 21 +++++----- drivers/rtc/rtc-pcf85063.c | 80 +++++++++++++++++++++++++++++++++++++- 2 files changed, 91 insertions(+), 10 deletions(-) diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig index 838bdc138ffe..1b9be96faa13 100644 --- a/drivers/rtc/Kconfig +++ b/drivers/rtc/Kconfig @@ -483,15 +483,6 @@ config RTC_DRV_PCF8523 This driver can also be built as a module. If so, the module will be called rtc-pcf8523. =20 -config RTC_DRV_PCF85063 - tristate "NXP PCF85063" - select REGMAP_I2C - help - If you say yes here you get support for the PCF85063 RTC chip - - This driver can also be built as a module. If so, the module - will be called rtc-pcf85063. - config RTC_DRV_PCF85363 tristate "NXP PCF85363" select REGMAP_I2C @@ -971,6 +962,18 @@ config RTC_DRV_PCF2127 This driver can also be built as a module. If so, the module will be called rtc-pcf2127. =20 +config RTC_DRV_PCF85063 + tristate "NXP PCF85063" + depends on RTC_I2C_AND_SPI + select REGMAP_I2C if I2C + select REGMAP_SPI if SPI_MASTER + help + If you say yes here you get support for the PCF85063 and RV8063 + RTC chips. + + This driver can also be built as a module. If so, the module + will be called rtc-pcf85063. + config RTC_DRV_RV3029C2 tristate "Micro Crystal RV3029/3049" depends on RTC_I2C_AND_SPI diff --git a/drivers/rtc/rtc-pcf85063.c b/drivers/rtc/rtc-pcf85063.c index 03dfc58f4cd7..bcfefe823044 100644 --- a/drivers/rtc/rtc-pcf85063.c +++ b/drivers/rtc/rtc-pcf85063.c @@ -17,6 +17,7 @@ #include #include #include +#include =20 /* * Information for this driver was pulled from the following datasheets. @@ -29,6 +30,9 @@ * * https://www.microcrystal.com/fileadmin/Media/Products/RTC/App.Manual/R= V-8263-C7_App-Manual.pdf * RV8263 -- Rev. 1.0 =E2=80=94 January 2019 + * + * https://www.microcrystal.com/fileadmin/Media/Products/RTC/App.Manual/R= V-8063-C7_App-Manual.pdf + * RV8063 -- Rev. 1.1 - October 2018 */ =20 #define PCF85063_REG_CTRL1 0x00 /* status */ @@ -559,6 +563,18 @@ static const struct pcf85063_config config_rv8263 =3D { .force_cap_7000 =3D 1, }; =20 +static const struct pcf85063_config config_rv8063 =3D { + .regmap =3D { + .reg_bits =3D 8, + .val_bits =3D 8, + .max_register =3D 0x11, + .read_flag_mask =3D BIT(7) | BIT(5), + .write_flag_mask =3D BIT(5), + }, + .has_alarms =3D 1, + .force_cap_7000 =3D 1, +}; + static int pcf85063_probe(struct device *dev, struct regmap *regmap, int i= rq, const struct pcf85063_config *config) { @@ -725,14 +741,76 @@ static void pcf85063_unregister_driver(void) =20 #endif /* IS_ENABLED(CONFIG_I2C) */ =20 +#if IS_ENABLED(CONFIG_SPI_MASTER) + +static const struct spi_device_id rv8063_id[] =3D { + { "rv8063" }, + {} +}; +MODULE_DEVICE_TABLE(spi, rv8063_id); + +static int rv8063_probe(struct spi_device *spi) +{ + const struct pcf85063_config *config =3D &config_rv8063; + struct regmap *regmap; + + regmap =3D devm_regmap_init_spi(spi, &config->regmap); + if (IS_ERR(regmap)) + return PTR_ERR(regmap); + + return pcf85063_probe(&spi->dev, regmap, spi->irq, config); +} + +static struct spi_driver rv8063_driver =3D { + .driver =3D { + .name =3D "rv8063", + }, + .probe =3D rv8063_probe, + .id_table =3D rv8063_id, +}; + +static int __init rv8063_register_driver(void) +{ + return spi_register_driver(&rv8063_driver); +} + +static void __exit rv8063_unregister_driver(void) +{ + spi_unregister_driver(&rv8063_driver); +} + +#else + +static int __init rv8063_register_driver(void) +{ + return 0; +} + +static void __exit rv8063_unregister_driver(void) +{ +} + +#endif /* IS_ENABLED(CONFIG_SPI_MASTER) */ + static int __init pcf85063_init(void) { - return pcf85063_register_driver(); + int ret; + + ret =3D pcf85063_register_driver(); + if (ret) + return ret; + + ret =3D rv8063_register_driver(); + if (ret) + pcf85063_unregister_driver(); + + return ret; } module_init(pcf85063_init); =20 static void __exit pcf85063_exit(void) { + rv8063_unregister_driver(); pcf85063_unregister_driver(); } module_exit(pcf85063_exit); --=20 2.25.1 From nobody Fri Dec 19 14:30:30 2025 Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com [209.85.208.43]) (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 B0E4F276032; Wed, 9 Apr 2025 17:09:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744218595; cv=none; b=svr/dVjE7M07i+z7xiLRaS4L8ydGNS0JJ21t6AxMwZ9aRAB60IO1rlcpfRj0qVvOJzTtgITdDYg94LkXde9FPBQU1Nu+FY3c8TTShyOvnUt0T8twh25GDRYcutVhgmYu6kCNOB0gYrGxA5a3f1usDEF89C4UJYKFblR65B2hM3E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744218595; c=relaxed/simple; bh=nStIjfSZeL0zt9W7+iaa9CoiY9nOZsfvqJhLH6Sl5g4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=mZM8NHJQs/74mtJmVFe3E0BtyTJFWwnnJCE7f6G76ynI1TH+SedGrXOistWtMIgl26ySiFKTYewn/7OwQNLFh5C2mYuw/hV+ODlE5SbpEmUp1uFm9LwR70iZmJaycKsyEE2snMKuJ7om6p/HesulBdJmWoBZCHKFdiYw8oURvsU= 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=NC7VN3bz; arc=none smtp.client-ip=209.85.208.43 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="NC7VN3bz" Received: by mail-ed1-f43.google.com with SMTP id 4fb4d7f45d1cf-5e5deb6482cso1891287a12.1; Wed, 09 Apr 2025 10:09:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744218592; x=1744823392; 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=hSPr9sZkytyi6HYm3brTb7NWt25n9J2i6nUGBqwMRe0=; b=NC7VN3bzwAwEuapSebs+vi8FU4As75Mzqlww2K6XFsUrUV9nwF0MRdPALpHvLudX1l uV1tE8w0UHgmWrarbY0yiBJDe5G52NpuRN8TkRCu+utak232l0pdlF6L7J7zwhT8lF/q /k2yipMfMSOUsmyOLXxiFdyj3qRY2mGAp5JEgd/jWx1uhyRsem7XOl4tprbR/QkO6AfS zA+Crs+LQCCRtYMUrnTTFmD6Vb9njcz84REBR4al7l0qM1hxkXvYrnpdqPqlSShbhxfV ooPI2k8HHUWYvFP0gn1JkzOFCp4r3FtFgSbuZUko0wN8es9nnxdjaxd5T6z2iuEfIohl gASA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744218592; x=1744823392; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hSPr9sZkytyi6HYm3brTb7NWt25n9J2i6nUGBqwMRe0=; b=c9RYmW32/Du1/6FgLE4Ce/7Zj0CJVq1443+0qHa34inFZzROv3vpzOhrxpc2vLAbpT c1WfE/5zTUX7Gc97IsrzugxR3taMFGSBy0K2OLlY6QRNUWFdELHRy7HRjGSUlCEO94/u uA32lvnbBNWiE5/mDIuiKYvVUxTEf/BZNLu/dnu37I+53h6Nj74f7jNKtQMTuVtP0Glb CFITfwt4hpBDSnpY8dzT6DNO4FqPO9K5i83d34BXnB5Elay0/j0Xzd7ftsIXbnVM2GtV //+aAnyD+m6QfTR4c1UZPcqNdAsE2awLWVF51QmvBjmJFD647YUQ1BM170eiGSDU4caf FGAA== X-Forwarded-Encrypted: i=1; AJvYcCVvAU2i0ckr/qvtfG8s3BljnrVWXTcnN7KxegbQxeEtRBWnoBH9PucDXpVgXD2SrTk+uMxWUTfLXZPcPcAM@vger.kernel.org, AJvYcCXXKiA9FRkTekthQ6mmKGIZtEJ/NvGuUo7igH6YVDjvwwH0tsCNkMRY9zTzqMlIRkpMw1pIXWhggCCh@vger.kernel.org X-Gm-Message-State: AOJu0Ywywo2Pe9DnaWwl0z1j7QBHog+G8Ms1wEiqHlegbiYKdtJ2oGNh yozpBhGpUgyTlc4jOrxZbsEuZ0LrNWArZPIrRcTgSV74Y5jTcXPX X-Gm-Gg: ASbGncv6PLmPV6p6zIkrVwKFPSr5jwaot99xo9pKUg21Ira1YwJYS4TncDLtralgMe/ V2p/kRo2UAVirUs4m+MyaTrOL3EN4Mln9ZwGSKTWmBfnDJ8L3V2VnkXOCQo7fnL+m+plrJ4s7uH cVyegabXIqk7lEwDQiCTulEv8rnBw/355hxGjOyNm3ZiyGa+ERIw8ogWXRdgig5X7Bl6Sa4iBQn GngUl0Z5kKz9SMW5cdDlUdoE8nwG9kueKR0lOPxk3rTZKarcvY7f1TtUgy+hBrTmaa+enkgxKSK 6Uca44IFvHIQow+Zi4x5XivZTrkSxdvvDEh8YR0Cwr4ozQJPYLFZS+iLxw== X-Google-Smtp-Source: AGHT+IH+YqAH5P1C3rfvoj+3ijZp9a9WOznX8fS4UF+0NYL6MxuzKlq1D64zrOEIFuEz9UbRr2NnoQ== X-Received: by 2002:a17:907:94d1:b0:ac3:ed4d:c9a1 with SMTP id a640c23a62f3a-acab6322c91mr30685866b.17.1744218591828; Wed, 09 Apr 2025 10:09:51 -0700 (PDT) Received: from localhost.localdomain ([78.209.27.245]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-acaa1be913asm122151166b.47.2025.04.09.10.09.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Apr 2025 10:09:50 -0700 (PDT) From: Antoni Pokusinski To: alexandre.belloni@bootlin.com, krzk+dt@kernel.org, conor+dt@kernel.org, robh@kernel.org, alexander.stein@ew.tq-group.com Cc: linux-rtc@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org, Antoni Pokusinski Subject: [PATCH v2 3/3] dt-bindings: rtc: pcf85063: add binding for RV8063 Date: Wed, 9 Apr 2025 19:09:16 +0200 Message-Id: <20250409170916.47224-4-apokusinski01@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20250409170916.47224-1-apokusinski01@gmail.com> References: <20250409170916.47224-1-apokusinski01@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: quoted-printable Content-Type: text/plain; charset="utf-8" Microcrystal RV8063 is a real-time clock module with SPI interface. Signed-off-by: Antoni Pokusinski --- .../devicetree/bindings/rtc/nxp,pcf85063.yaml | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/rtc/nxp,pcf85063.yaml b/Docu= mentation/devicetree/bindings/rtc/nxp,pcf85063.yaml index 2f892f8640d1..cb31c7619d66 100644 --- a/Documentation/devicetree/bindings/rtc/nxp,pcf85063.yaml +++ b/Documentation/devicetree/bindings/rtc/nxp,pcf85063.yaml @@ -12,6 +12,7 @@ maintainers: properties: compatible: enum: + - microcrystal,rv8063 - microcrystal,rv8263 - nxp,pcf85063 - nxp,pcf85063a @@ -44,7 +45,12 @@ properties: =20 wakeup-source: true =20 + spi-cs-high: true + + spi-3wire: true + allOf: + - $ref: /schemas/spi/spi-peripheral-props.yaml# - $ref: rtc.yaml# - if: properties: @@ -52,6 +58,7 @@ allOf: contains: enum: - microcrystal,rv8263 + - microcrystal,rv8063 then: properties: quartz-load-femtofarads: false @@ -65,12 +72,23 @@ allOf: properties: quartz-load-femtofarads: const: 7000 + - if: + properties: + compatible: + not: + contains: + enum: + - microcrystal,rv8063 + then: + properties: + spi-cs-high: false + spi-3wire: false =20 required: - compatible - reg =20 -additionalProperties: false +unevaluatedProperties: false =20 examples: - | @@ -90,3 +108,16 @@ examples: }; }; }; + + - | + spi { + #address-cells =3D <1>; + #size-cells =3D <0>; + + rtc@0 { + compatible =3D "microcrystal,rv8063"; + reg =3D <0>; + spi-cs-high; + spi-3wire; + }; + }; --=20 2.25.1