From patchwork Fri May 9 18:37:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Antoni Pokusinski X-Patchwork-Id: 2083591 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=lL+4KNVr; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=2604:1380:45e3:2400::1; helo=sv.mirrors.kernel.org; envelope-from=linux-rtc+bounces-4081-incoming=patchwork.ozlabs.org@vger.kernel.org; receiver=patchwork.ozlabs.org) Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org [IPv6:2604:1380:45e3:2400::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4ZvHnZ0p42z1yNY for ; Sat, 10 May 2025 04:38:26 +1000 (AEST) Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id C2B68A21E92 for ; Fri, 9 May 2025 18:38:22 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 78E3C23E33F; Fri, 9 May 2025 18:38:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="lL+4KNVr" X-Original-To: linux-rtc@vger.kernel.org Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) (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 A0703647; Fri, 9 May 2025 18:38:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746815910; cv=none; b=YWdKxXOt+jGjUi2hrmXlUY0E3IOGtkHQbt0NSB+8W9+Z8d6kjOqDZm4EIToj8i6fi00pAAWX0ZTX0ElYqJxUTI8Fdmq+KT4mZYe7bjdNU0X2jCnXLtYSZIwGphH2xrHIMcyfMcBn6ayOkZgz1vVk6h2K17jTtnw6D8gRXmnIuFs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746815910; c=relaxed/simple; bh=T38POvXdmwP5IeF0I5QNBXmbnd6a1TH2LvmvvQGNew4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=e2B3QYaX/jhiQCT784ppZovZ1WPagIiD0P2XKgTZCStml93KNHvi98AlRSj9J08EWCfiLFFISfv6Jh7lxNnFKxQzWodBnYb3g5SiZ9g+Ivw+/gF/JvGuECTYAG4o+QQUtkB9jE5EqfgMOcW2MBDMtbt+0X4KtmlYTs06fHfwUw0= 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=lL+4KNVr; arc=none smtp.client-ip=209.85.221.45 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 Received: by mail-wr1-f45.google.com with SMTP id ffacd0b85a97d-3a0b637db6eso1462872f8f.0; Fri, 09 May 2025 11:38:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746815907; x=1747420707; 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=a3kRCscB1lWSNf3bzBV5o35758a8k7ZSMJBiYdyNer0=; b=lL+4KNVrvHUJH8axFVPVnhlqThTzZjMbiHonUhA1TmxNV+AtZik3/qst0q6d4q/KyV 4IL5nTJaDyMTekX+oHRA2AJeAZB/bHVVRjrxGF32ztUkBlUT0zhw4/SDS0C+pxCYPe1x wx/pYz5aGsstx+he4BQOHPENxOvkbZE0mdOD1jAdUD4YhHtHo110j7stY7NyPoPMXBcE D1QpXdt2fH/eDmDSDTFmFBham5MpbGsWT3CDpJ0mJcGmQiCb4+JeR5RooyxW+0TPLW5i l6A17psfybEqQqpWwUSWEsD9IzpL6yYBjo8PVdzBQJa62tsk1ERH5agcZtb3tBCTx+H+ Ge1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746815907; x=1747420707; 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=a3kRCscB1lWSNf3bzBV5o35758a8k7ZSMJBiYdyNer0=; b=AcUIZ0JB+dw/wciXqbPYjAzBeCKU1M1TJpjz5Y4LkAFyx3GQ1YPpQbUOtzucprPESX oN9ZooOmtSO2w8h4AI9tyeRdUZhZth/D5rwxd/ee86RS/tK4xp2L/Z9RVTU+5v8XlKcF 8hJaxURFyi1ZahVVHaRcqq0/AvPatdQjRov+zWcLAPKBeKCvUFNlVdv0SaAG00Kk96vJ 8UR1TEvXR1sRq9KwFbODXxQ7nHUWR8y5aCGm7QoMGxP+MaPX8rPdUtvnMfDn2HKVSMZ4 mbi80IG1VUejqkhmAs7fUBXh1Hnmkbp6wTK4BBYVSeP5OMJVnDuSjvy2cpFDWEpB8YNA kI8g== X-Forwarded-Encrypted: i=1; AJvYcCVRqlUB6UK9jE3RFzgtlWRlAdx46pCfo+rP5WEhx73Fnkmb30F/1CFVrEmEsqWkJGy5QIAukTEV3hV8R559@vger.kernel.org, AJvYcCXGj581m2g9c4TWNTImpQJSlcABlsPRDAXzsRwxxE79vRdwZIgU18E8W4HSdkeYgu4ZPNYy8hHo0ZYj@vger.kernel.org X-Gm-Message-State: AOJu0YwFjw/N4QS0xBsglHvCrjbyAQVc25w273hXH1Q7IKBEitKqzraa X/NFTePhaMYPtvLeaAKIheRGFp8Bb2apkFiyDACSg2+WNSMhbMGf X-Gm-Gg: ASbGncsW33HWEqrQeNzSc/9v5WmHc9e+YybE4t+HVvu90ICFML8ST3LXlctxp1/G7nY /OgBRJtVELt7aZdhOCVjQVqDbPCjWIWgdZXazpDWQofYtQuFYJvxOCiL8bXHfll9RWoAOD3zzwN BIQK+uy3P9TfvQWvsEcdIZnAWWf4YNeRaADzBLtFrgQHvLXUVCpuPb+aqwOAqRSAqrohvH66dCg qYP4JY3Epas68gtRVF6cbMMAafCEA6n1xDbIf7p8DED4WU9m1y40Y4WZ2yKitPnuDV+nXEOEDHP C8GU78SOZY2pTlaOc69rL77OrqpRn8ryMQN43DqaT/OyFpgTt4+YEr09r/YkptfwAm3Lip7V4WT iiMpX X-Google-Smtp-Source: AGHT+IEMrYhCvUL+ifZr1gX9sZG3l0AJSFqIhow5aL6C6aasvcsKdm1mIuMpwZ6f8XkHtHESIV9ltg== X-Received: by 2002:a05:6000:2011:b0:3a0:b455:a1fd with SMTP id ffacd0b85a97d-3a1f643d7f2mr3775951f8f.32.1746815903039; Fri, 09 May 2025 11:38:23 -0700 (PDT) Received: from localhost.localdomain ([78.210.112.240]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a1f5a2d2f4sm3999878f8f.78.2025.05.09.11.38.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 May 2025 11:38:22 -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 RESEND v4 1/3] dt-bindings: rtc: pcf85063: add binding for RV8063 Date: Fri, 9 May 2025 20:37:48 +0200 Message-Id: <20250509183750.95836-2-apokusinski01@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20250509183750.95836-1-apokusinski01@gmail.com> References: <20250509183750.95836-1-apokusinski01@gmail.com> Precedence: bulk X-Mailing-List: linux-rtc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Microcrystal RV8063 is a real-time clock module with SPI interface. Reviewed-by: Rob Herring (Arm) 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/Documentation/devicetree/bindings/rtc/nxp,pcf85063.yaml index 2f892f8640d1..1e6277e524c2 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,13 +45,19 @@ properties: wakeup-source: true + spi-cs-high: true + + spi-3wire: true + allOf: + - $ref: /schemas/spi/spi-peripheral-props.yaml# - $ref: rtc.yaml# - if: properties: compatible: contains: enum: + - microcrystal,rv8063 - microcrystal,rv8263 then: properties: @@ -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 required: - compatible - reg -additionalProperties: false +unevaluatedProperties: false examples: - | @@ -90,3 +108,16 @@ examples: }; }; }; + + - | + spi { + #address-cells = <1>; + #size-cells = <0>; + + rtc@0 { + compatible = "microcrystal,rv8063"; + reg = <0>; + spi-cs-high; + spi-3wire; + }; + }; From patchwork Fri May 9 18:37:49 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Antoni Pokusinski X-Patchwork-Id: 2083594 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=k+/xbjSF; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=147.75.48.161; helo=sy.mirrors.kernel.org; envelope-from=linux-rtc+bounces-4082-incoming=patchwork.ozlabs.org@vger.kernel.org; receiver=patchwork.ozlabs.org) Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [147.75.48.161]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4ZvHpW38Fqz1yNY for ; Sat, 10 May 2025 04:39:15 +1000 (AEST) Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 554CAB23A03 for ; Fri, 9 May 2025 18:37:44 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 1EA1A241122; Fri, 9 May 2025 18:38:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="k+/xbjSF" X-Original-To: linux-rtc@vger.kernel.org Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.51]) (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 105662405E8; Fri, 9 May 2025 18:38:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746815914; cv=none; b=QPRR7F0p8sLdACqvb1fTQoHVj5kv2ATMuNh6G0U1yS+4n5aDowyaLgJTdKGv+fs/Ub7Kq61ES7hy5duK6VsJR16ERnPz7PLzXETnooQ7avLTfuwJABl3Xd6H35NBy/6jyBsnFgkOIsbChzMy50kLu9sh/kLT2nZHkDBCIazySaQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746815914; c=relaxed/simple; bh=jwsoeajWLSOPJcvIZix/A6b+favE2I6KfWiuZwzI3kE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=gIB7vO26JmYnMDlq45L2tlAa9qmKYQw0/jVTZ1SU9M65vdX3u3EBcjHT1Q1LgLQMwX/z8UIh63ddOUR8leCmqKCsgI8FaZ6gp8GPXVqB6YYBqxZ8e5cUjzJt/PAn+oMkNI8YQKiDFlcne3soLJuEJveu/lB3M7yCmQlQYWjOgZU= 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=k+/xbjSF; arc=none smtp.client-ip=209.85.221.51 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 Received: by mail-wr1-f51.google.com with SMTP id ffacd0b85a97d-3a1fa0d8884so569521f8f.3; Fri, 09 May 2025 11:38:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746815910; x=1747420710; 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=k+/xbjSFSQlwcXrmzDFq5gEsanbQbBMtSDS0oKoahab/ccjhvcwPuRaaz+RCGbh+LD dd8o0hUAnyo3/snDtkLb97kJXyBYWjKPrANjcttFs7c3hacKwmEMSl5a2kebmfEahh+p 8h0nO20P1t8pEA2DBtohnfWEDT/08XRgvepHFJ62SrTnBbM1+C7rVGjlIt9TNTdFDth1 HPxQn+7PgwYw8H6FcTISzaj2t2Jnw85cV4TIXMf4xX+BBZEDGyCPQnQtv3Q6ErbsDkko NhArpqvIsGOzPMVXz5xyb7rMS5ReN6xzZSF86B3Gii6JscQxeX05XJN1AuzcFVgL/nFN aj9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746815910; x=1747420710; 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=ccu9vwTVOsokToqnWOVU/69pVo8SxIYl2MzUpywpq1lWXXkGLpZ59bfzu3quSwy8/R mOVGt+tFkcawlHubb5C0LjfZkOFKy1FA6i/XM3zoHfVoYqEkhSdgaxh39mTU6Pewnega G46L5PV0+q7wDU1YTjs7Z0ez+CfFtGLo3NnKJoDG1zLzSnXaiAebOlY3adTOBLJ9U+i+ WV0M20M7GN+PskCznHDKcj05IpUS04C1YBIdV7Rcb+bQ6tE9YPfwmwVx80BIHtYGaNT3 h1JR1FimKyV3H3MbJY0RbBndOJs6nH74J6fydHE6wtsf05w5Czz0BVfQgDwzH0ScWipx 4F1w== X-Forwarded-Encrypted: i=1; AJvYcCUIzEuIjgmt4VCPWdqQZDo87SG8M3UV5z9zOvQ5R4K3KvRp1nA8u0pcpLXaq0NGEadE7sZPPjeKBaec@vger.kernel.org, AJvYcCXZcsGL/hjOvWFMEJ5PZbjb7SbLf+mUTTHN7zpi6p1hA1SigCToBlO4m9CCx6TjqJo9u9kQjqsJ3EtY+Ebs@vger.kernel.org X-Gm-Message-State: AOJu0Ywfh40CieDxE3JyfBylJA4aaxsDCqg24lKdsM9RXowJKoI1iPD/ tIcbTssu0F1/tIO3jycA4z9yLHPUOb8F74PfCRkHXFYGK51g4q/I X-Gm-Gg: ASbGncsj+F8RHYidCJAzzV5XW3fL3B2A6oaf1uQwzxFsieROumvZ+pFTwJENGCJppvc kzrrVtZTU8Llzm8UL3u3nOuzJRrcFmVRIx6uCQC+b0Kn2nzUd4zizcbgojcMd6GF4uUtj9k/PT5 CTJHtMhrveIe0sinpEWnWZQ86eAlRCOmUU3IyKyAVTCLU+0gTsnSQ9JBasdw2Obx6mzJGWzu9NY pAJrGqlJ6cb9PakdlF7Z80GmRHREy2rBj8n0ANpdDT7L3Bt0JKSerbcOEoFX5JjDBojVwBOLvST MWO/edDYnKxNKJg6qIo+BO1VI/gAfF6K2uJ+gJOZ8Gem4kBKg/9yGHM+6uNULngoJAN8TA== X-Google-Smtp-Source: AGHT+IHTQJB4UjJXsOyBDplbdrpKSv/9SS/FfSV/rIFOsJpq4daCdCNrQxp6hNkbrNaVujk/xK5wEg== X-Received: by 2002:a5d:64e2:0:b0:3a0:7faa:309d with SMTP id ffacd0b85a97d-3a1f64a4b62mr3746983f8f.37.1746815910106; Fri, 09 May 2025 11:38:30 -0700 (PDT) Received: from localhost.localdomain ([78.210.112.240]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a1f5a2d2f4sm3999878f8f.78.2025.05.09.11.38.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 May 2025 11:38:29 -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 RESEND v4 2/3] rtc: pcf85063: create pcf85063_i2c_probe Date: Fri, 9 May 2025 20:37:49 +0200 Message-Id: <20250509183750.95836-3-apokusinski01@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20250509183750.95836-1-apokusinski01@gmail.com> References: <20250509183750.95836-1-apokusinski01@gmail.com> Precedence: bulk X-Mailing-List: linux-rtc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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 = { .force_cap_7000 = 1, }; -static int pcf85063_probe(struct i2c_client *client) +static int pcf85063_probe(struct device *dev, struct regmap *regmap, int irq, + const struct pcf85063_config *config) { struct pcf85063 *pcf85063; unsigned int tmp; int err; - const struct pcf85063_config *config; struct nvmem_config nvmem_cfg = { .name = "pcf85063_nvram", .reg_read = pcf85063_nvmem_read, @@ -573,28 +573,22 @@ static int pcf85063_probe(struct i2c_client *client) .size = 1, }; - dev_dbg(&client->dev, "%s\n", __func__); + dev_dbg(dev, "%s\n", __func__); - pcf85063 = devm_kzalloc(&client->dev, sizeof(struct pcf85063), + pcf85063 = devm_kzalloc(dev, sizeof(struct pcf85063), GFP_KERNEL); if (!pcf85063) return -ENOMEM; - config = i2c_get_match_data(client); - if (!config) - return -ENODEV; - - pcf85063->regmap = devm_regmap_init_i2c(client, &config->regmap); - if (IS_ERR(pcf85063->regmap)) - return PTR_ERR(pcf85063->regmap); + pcf85063->regmap = regmap; - i2c_set_clientdata(client, pcf85063); + dev_set_drvdata(dev, pcf85063); err = 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"); - pcf85063->rtc = devm_rtc_allocate_device(&client->dev); + pcf85063->rtc = devm_rtc_allocate_device(dev); if (IS_ERR(pcf85063->rtc)) return PTR_ERR(pcf85063->rtc); @@ -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 = 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"); } - err = pcf85063_load_capacitance(pcf85063, client->dev.of_node, + err = 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); pcf85063->rtc->ops = &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); - if (config->has_alarms && client->irq > 0) { + if (config->has_alarms && irq > 0) { unsigned long irqflags = IRQF_TRIGGER_LOW; - if (dev_fwnode(&client->dev)) + if (dev_fwnode(dev)) irqflags = 0; - err = devm_request_threaded_irq(&client->dev, client->irq, + err = 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 = dev_pm_set_wake_irq(&client->dev, client->irq); + device_init_wakeup(dev, true); + err = 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); } +#if IS_ENABLED(CONFIG_I2C) + static const struct i2c_device_id pcf85063_ids[] = { { "pca85073a", .driver_data = (kernel_ulong_t)&config_pcf85063a }, { "pcf85063", .driver_data = (kernel_ulong_t)&config_pcf85063 }, @@ -683,16 +677,65 @@ static const struct of_device_id pcf85063_of_match[] = { MODULE_DEVICE_TABLE(of, pcf85063_of_match); #endif +static int pcf85063_i2c_probe(struct i2c_client *client) +{ + const struct pcf85063_config *config; + struct regmap *regmap; + + config = i2c_get_match_data(client); + if (!config) + return -ENODEV; + + regmap = 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 = { .driver = { .name = "rtc-pcf85063", .of_match_table = of_match_ptr(pcf85063_of_match), }, - .probe = pcf85063_probe, + .probe = pcf85063_i2c_probe, .id_table = pcf85063_ids, }; -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); MODULE_AUTHOR("Søren Andersen "); MODULE_DESCRIPTION("PCF85063 RTC driver"); From patchwork Fri May 9 18:37:50 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Antoni Pokusinski X-Patchwork-Id: 2083593 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=PPLYiSra; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=2604:1380:40f1:3f00::1; helo=sy.mirrors.kernel.org; envelope-from=linux-rtc+bounces-4083-incoming=patchwork.ozlabs.org@vger.kernel.org; receiver=patchwork.ozlabs.org) Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org [IPv6:2604:1380:40f1:3f00::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4ZvHpT5tthz1yNY for ; Sat, 10 May 2025 04:39:13 +1000 (AEST) Received: from smtp.subspace.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 3FB9E7BB6C2 for ; Fri, 9 May 2025 18:37:58 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 2C8BE24169B; Fri, 9 May 2025 18:38:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="PPLYiSra" X-Original-To: linux-rtc@vger.kernel.org Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) (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 35A70241664; Fri, 9 May 2025 18:38:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746815917; cv=none; b=FCWwSb/lZgjOTWU0ZofKuEFsRXJMZYZDXrmOi/V1Srd1S8aTJue5nusG2/W7n3tgXO0xh5CqXQmlqx/B9Pkk85z2glTQDJ30FfFdjvOWqB3fKPQIZ6a/zf1Bi7imBPHjfbycHaXMtzNoUgfZXhhcLMZ0Y9cKE6Vg8HclDEIGbOQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746815917; c=relaxed/simple; bh=Qiv6epzPmbfHWOUJeoZ8ik0G7oKn1YrCqMbxsEEf+CY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version:Content-Type; b=SX5S0j/r7y5n1ilQ0SyL6Cn2TydTRUF8RAq1bUs5x7lyqxyiytW/mQZmwlBU1LYvBJ8/A05Y6I5InKfcqh9b4vJdTLcf9xhb6MyWmZMG1kdl/bVLINhYVE5wqgAiie5QN8iPSO0RCDZP/sLyIshvaZ1WhgwrqANDHTF7txnLoS0= 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=PPLYiSra; arc=none smtp.client-ip=209.85.128.41 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 Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-43cf3192f3bso24035955e9.1; Fri, 09 May 2025 11:38:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746815913; x=1747420713; 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=sBzonJ/RuSJVQf99llUENRykfQliSdPD+jdNDXviB4k=; b=PPLYiSraKvgJ7jlw7F7Gm4moSwiKqj4AtznUhuwQkmyazgEwyW4eL6Y2rKCEQgms+G czeCpmLIVe/OP4kPn0dedR2LqLdXXF6TdtiiY/DBFLNv/3PEPEMQUdZQReAQMXirwtyU Sq0XxGGZM7Gw5IYOCUdFtlxMzyjZ27MrR+MSOw8CPFxGs+g1B8wploHPlwR+XKCsbz5Z doAsjJgCcA0RRa8mv7hltNmVNxXTr8fK/0+EepzDF8/huM2trdTsz9mh1GtVM0xp58zy DCYrmorB1WQBGCPXGiIE2lj1jcmuYtis4ABeZ6mvFWtrvTwjLlOb9BAaa5ZhiHwqO+mr 1EkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746815913; x=1747420713; 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=sBzonJ/RuSJVQf99llUENRykfQliSdPD+jdNDXviB4k=; b=HLvPUEiJE/m4MT0cNpaK8Cl3hkjJNXyI5XiSTEOPIDCImbPYC4b8w7ntFzpTcZ5EOo 83cY8qP3YPk/DyEYcaZXvVr5cbPVdoLhZvyKr4SefNSPxze6BDbLh8s/zoiVNXv6U2Ac yBsp/7KN4UVme3g+lKN4B6/DY6pkclVSZXojMPnrSTS7y91qJXNQ07lzZiP8mw47Q/km Jh8J5cKUtf6liOzH/CbLtRZpOt7RR1zBRhQsvQnRrXRKqfuGq7rUmxL2srf4Ku6JhTnZ L0SjAeJUEaeOT3kd2Ft8yZwtC0HzNLjbN3qLrMUQvPKgT++slXY/1gnrXQZbevDf5uiY z7mw== X-Forwarded-Encrypted: i=1; AJvYcCV71ZwEHUMF4bqyDnB9tKoTj2VHqHyioEdINBQr3lzseQOqgRMypfwgXBpAXvpcHxA2CjLmv5ADjD6TIYt+@vger.kernel.org, AJvYcCWsxM9izggAmzFeXUklLBgnXU16HozEiUf0DrSKvG1bwnTaK2KY4z0bEOOw1opbp2O+Cx6VEw+0JPze@vger.kernel.org X-Gm-Message-State: AOJu0Yz2SAf4DQcfeTJpovrsUo5REGH++HAjUnT1uN6optE0T0BoOC1K LrBsNoGjDFoaQHkN30KZaPd2zv8aT3E7+ZoxNFHv84XQjMi0kTZ1 X-Gm-Gg: ASbGncvYhcyuWk6PBRr3gzd6JC2a2MdPmvCgcgc1gKc3VHWkqQYnwJdMMEOUKRNJ2yU /FYoKKgGfyimruibSzmLJU5TLtih6Wdb+VA3ZTINxxpxBQSnSH5QZ82iGJggubmvj72WHWwMkqL Q6rZasHNLrtj2uSiS3AewGk97FAemdBIUSQC47zbK6qGz3QQoUzxFmp5fyHp5PHIqP3/9noaVHT GbGbo1sqyXGGfHr87UrqFcDlZNFE7UdIbgP/A9HXef6Ldpjw0T0CLCTBVgNWNGBg7/HKXh1fexa I54qEAGQ4a+A3KBtVJi33xwLotnIKg0DT1Jkwgm9ryfcpEPYQHeNF85aTr5gKo8GfDlfxw== X-Google-Smtp-Source: AGHT+IHOHk8TJBRr0sBHN2EWnni4dWmQyRoi02AYzdaqeaER/SuMgxjuj7zd07Z+tSovwNvLSRBE6g== X-Received: by 2002:a5d:64e7:0:b0:38f:2ddd:a1bb with SMTP id ffacd0b85a97d-3a1f6423f98mr3755730f8f.8.1746815913342; Fri, 09 May 2025 11:38:33 -0700 (PDT) Received: from localhost.localdomain ([78.210.112.240]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3a1f5a2d2f4sm3999878f8f.78.2025.05.09.11.38.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 May 2025 11:38:32 -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 RESEND v4 3/3] rtc: pcf85063: add support for RV8063 Date: Fri, 9 May 2025 20:37:50 +0200 Message-Id: <20250509183750.95836-4-apokusinski01@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20250509183750.95836-1-apokusinski01@gmail.com> References: <20250509183750.95836-1-apokusinski01@gmail.com> Precedence: bulk X-Mailing-List: linux-rtc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 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 | 87 +++++++++++++++++++++++++++++++++++++- 2 files changed, 98 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. -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. +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..d9b67b959d18 100644 --- a/drivers/rtc/rtc-pcf85063.c +++ b/drivers/rtc/rtc-pcf85063.c @@ -17,6 +17,7 @@ #include #include #include +#include /* * Information for this driver was pulled from the following datasheets. @@ -29,6 +30,9 @@ * * https://www.microcrystal.com/fileadmin/Media/Products/RTC/App.Manual/RV-8263-C7_App-Manual.pdf * RV8263 -- Rev. 1.0 — January 2019 + * + * https://www.microcrystal.com/fileadmin/Media/Products/RTC/App.Manual/RV-8063-C7_App-Manual.pdf + * RV8063 -- Rev. 1.1 - October 2018 */ #define PCF85063_REG_CTRL1 0x00 /* status */ @@ -559,6 +563,18 @@ static const struct pcf85063_config config_rv8263 = { .force_cap_7000 = 1, }; +static const struct pcf85063_config config_rv8063 = { + .regmap = { + .reg_bits = 8, + .val_bits = 8, + .max_register = 0x11, + .read_flag_mask = BIT(7) | BIT(5), + .write_flag_mask = BIT(5), + }, + .has_alarms = 1, + .force_cap_7000 = 1, +}; + static int pcf85063_probe(struct device *dev, struct regmap *regmap, int irq, const struct pcf85063_config *config) { @@ -725,14 +741,83 @@ static void pcf85063_unregister_driver(void) #endif /* IS_ENABLED(CONFIG_I2C) */ +#if IS_ENABLED(CONFIG_SPI_MASTER) + +static const struct spi_device_id rv8063_id[] = { + { "rv8063" }, + {} +}; +MODULE_DEVICE_TABLE(spi, rv8063_id); + +static const struct of_device_id rv8063_of_match[] = { + { .compatible = "microcrystal,rv8063" }, + {} +}; +MODULE_DEVICE_TABLE(of, rv8063_of_match); + +static int rv8063_probe(struct spi_device *spi) +{ + const struct pcf85063_config *config = &config_rv8063; + struct regmap *regmap; + + regmap = 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 = { + .driver = { + .name = "rv8063", + .of_match_table = rv8063_of_match, + }, + .probe = rv8063_probe, + .id_table = 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 = pcf85063_register_driver(); + if (ret) + return ret; + + ret = rv8063_register_driver(); + if (ret) + pcf85063_unregister_driver(); + + return ret; } module_init(pcf85063_init); static void __exit pcf85063_exit(void) { + rv8063_unregister_driver(); pcf85063_unregister_driver(); } module_exit(pcf85063_exit);