From nobody Sat Oct 4 22:34:51 2025 Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.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 0A8B92E7BB6 for ; Tue, 12 Aug 2025 09:11:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754989884; cv=none; b=P/4azlW2crC/mHHJ3rQg92Wzl05nkLNiSuMMXsacHOERdg6yiNSvhR66vCbUE+VGUdxNRgcz8PPcKznPsF6N7RhinLbdxfStU+Xr8PT4XmpDTDLXmaZ29qjlISmL3NKBY6eeIJcclFK/GHxNEYn3YUAO/aftawVqDXeqVv1PXJg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754989884; c=relaxed/simple; bh=Tv0AJGiFsCFxKN7gqZSV8dIMDvArAvHyf1Cqo56pK6s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=kzike7v2Y6ZOlUkdUqanjIqxdZPq1AMX2Y/N2fCrb7qdezd+zkhH8UzyMVEop8+SDCO/Hrh00l3yEdhDn2ol7ASctuNDnxw2s1KJO+GL3fTZCsAwLA5ghYCfYc3+fgWyk/5TEldCUinY/BEoq0Ky/mDqZ5Cv8utUvYljOEP5d/w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=u+w9oBSc; arc=none smtp.client-ip=209.85.208.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="u+w9oBSc" Received: by mail-ed1-f51.google.com with SMTP id 4fb4d7f45d1cf-605b9488c28so9277779a12.2 for ; Tue, 12 Aug 2025 02:11:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1754989880; x=1755594680; 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=BJC2PHMCZh5uCGWRu2/ONPI2KDseZ4/QrmpZ44TLrNE=; b=u+w9oBScHihJznC/hJ4qLUmelmgT/VGNawDL2Ipg8q7Qe0IxNvji0mnGENVsUtP53V PSdepFVL8HNp/L/qLEYcm+KSujyj2g9C81+jLKIVoBtUU5ar2I0+uqMQWYy56ijUI+WG lelG1znGASr4cyIAE3LU9BfTpolH5+odOlHD7aKTkkg1dWqqMzvmzAMd9iTYiYizSgXV 96wfMZ7jp7Zrytp6OdbxSOedUmfUOmEQt8YF4bZFV8Ae7xbiBZp3TtXCWmAFzRk5wGJL CHcHF1hqofQsiOsB9lu235+TnKLkqRBE1JRId500STrpDahiO8ycl/vD7dJLwz6Qk/Iq my+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754989880; x=1755594680; 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=BJC2PHMCZh5uCGWRu2/ONPI2KDseZ4/QrmpZ44TLrNE=; b=jcP/yTsfCSLdHKKSr/lTBXGdECGPanOhNyt16+by3Px99ZtJB/cw1VDHtTUULeZtjY Gu4CYnCAHixTgcSN4fze+FiEmtO6iihdHdsV8gcXx30dkgfw+sfEkWLgk4T+j5Y1iNXS HMVbH2QYNqMxkmgOcrZIWAfxDL38BoJVnAo9c8k6lF9wuavd3tSF7Eg7cCmS/3htwGBf SbgJxZPCllujmLuRh/RM0Jy48PR/R+d+mso8hvX/bnjvHwpn7Vr2bJJM9OEvZod9Dr3d jompfqYJvDJDIp6b+4rdcqv8oPaH2xVqVaVNcfroswXi/40i1cUwekaczr45IHiC5uoh KeDg== X-Forwarded-Encrypted: i=1; AJvYcCWIc8J3NcQLZVT9yERNBb1bepN0gW0MDDcqOEoWIUrrtdKE4tMWOTc032p4HeMlrN1rOyRaU1+G+buYWBg=@vger.kernel.org X-Gm-Message-State: AOJu0Yx4Fe+QRtXBmQJI4Sd3pX/GYQgbJXGVPgmaD7UximRJXg8ZcbHR lqlEIi/EaOfZ7KEOlkQHQitMvhdlEvpeTpN889tXOnk4jHZPsdL8MKr6zkEIrs3SUFc= X-Gm-Gg: ASbGncuh5ndk4xqe5Mla7No/FqphpGu6a+gIohqxDYpri6XxozL85bMMt8mddLGMUgz ewXDRstYHHufx93wu9QRuDQupyg6TYdfLzbNUQ2py80OjGCA+0FbwM4GzQ1z5qq5/byFdoS22ez sR4wMID/HP9kjLF3DfFFYnzVhVimdh9Ome+Zy9P7AxTKgHt6P5JmJELzGrEpr1desp/JuqkLurw KPOoJEx4HCPogI7BkQoaMgIvD5kWXargPsv7EE6YnfkQ3nP56KNjDo+oj6jDLPjAL7sGFAjVvli ED6b6UlKkEXT98jKtz0hdpzMPq9CO0s859u4JFNf1vQ8jn9EkGP9acIq9qUzTBdeWqfjTWwFNb/ mWuiMR3a6r357W3/08yhD5CeK6a34 X-Google-Smtp-Source: AGHT+IHrwvHnT395xLvsUxvtvAA9RVe1fQydx2AltL0VFIKWabbwzUC4skcTIScFssoDO+VytMbrqw== X-Received: by 2002:a17:907:9622:b0:af6:a116:f13c with SMTP id a640c23a62f3a-afa1df6fbbcmr220978266b.23.1754989880292; Tue, 12 Aug 2025 02:11:20 -0700 (PDT) Received: from localhost ([2001:4090:a244:8691:4b7a:7bbd:bac:c56e]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-615a8f00252sm19809960a12.8.2025.08.12.02.11.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Aug 2025 02:11:19 -0700 (PDT) From: Markus Schneider-Pargmann Date: Tue, 12 Aug 2025 11:10:22 +0200 Subject: [PATCH v8 1/4] dt-bindings: can: m_can: Add wakeup properties 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 Message-Id: <20250812-topic-mcan-wakeup-source-v6-12-v8-1-6972a810d63b@baylibre.com> References: <20250812-topic-mcan-wakeup-source-v6-12-v8-0-6972a810d63b@baylibre.com> In-Reply-To: <20250812-topic-mcan-wakeup-source-v6-12-v8-0-6972a810d63b@baylibre.com> To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Vishal Mahaveer , Kevin Hilman , Dhruva Gole , Sebin Francis , Kendall Willis , Akashdeep Kaur , Simon Horman , Vincent MAILHOL , linux-can@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Markus Schneider-Pargmann X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1809; i=msp@baylibre.com; h=from:subject:message-id; bh=Tv0AJGiFsCFxKN7gqZSV8dIMDvArAvHyf1Cqo56pK6s=; b=owGbwMvMwCXWejAsc4KoVzDjabUkhozZrIq7E7VnKvA4bZl5+hK/lvGMbMvtOvpHFm5c5NEtb Jmk/624o5SFQYyLQVZMkaUzMTTtv/zOY8mLlm2GmcPKBDKEgYtTACYSZcbIcO3pho7fc2KmRbw2 nnNNtu1gVNe/DVeOCMefcXe1ZQzm3cvwv+iCl0rkPKXyXW+jUtbt+V8wfXHoufM3b882W3i87N0 vCyYA X-Developer-Key: i=msp@baylibre.com; a=openpgp; fpr=BADD88DB889FDC3E8A3D5FE612FA6A01E0A45B41 The pins associated with m_can have to have a special configuration to be able to wakeup the SoC from some system states. This configuration is described in the wakeup pinctrl state while the default state describes the default configuration. Also m_can can be a wakeup-source if capable of wakeup. Signed-off-by: Markus Schneider-Pargmann --- .../devicetree/bindings/net/can/bosch,m_can.yaml | 22 ++++++++++++++++++= ++++ 1 file changed, 22 insertions(+) diff --git a/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml b/D= ocumentation/devicetree/bindings/net/can/bosch,m_can.yaml index c4887522e8fe97c3947357b4dbd4ecf20ee8100a..ecba8783198fc1658fcc236d8aa= 3c89d8c90abbd 100644 --- a/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml +++ b/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml @@ -106,6 +106,22 @@ properties: maximum: 32 minItems: 1 =20 + pinctrl-0: + description: Default pinctrl state + + pinctrl-1: + description: Wakeup pinctrl state + + pinctrl-names: + description: + When present should contain at least "default" describing the defaul= t pin + states. The second state called "wakeup" describes the pins in their + wakeup configuration required to exit sleep states. + minItems: 1 + items: + - const: default + - const: wakeup + power-domains: description: Power domain provider node and an args specifier containing @@ -122,6 +138,12 @@ properties: minItems: 1 maxItems: 2 =20 + wakeup-source: + $ref: /schemas/types.yaml#/definitions/phandle-array + description: + List of phandles to system idle states in which mcan can wakeup the = system. + + required: - compatible - reg --=20 2.50.1 From nobody Sat Oct 4 22:34:51 2025 Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.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 31BBD2E7BD8 for ; Tue, 12 Aug 2025 09:11:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754989885; cv=none; b=dYkUqs+1ZHca5WiGbBp98MtKObcYXbgE4KqvBmMTN4WYb2sbenOo4Rg0mwRdB52Vq8+AGBDUG/ptls/3vTuqBkZJ1NIXRqi056FgrNMGCv9o1iShIRsH0fjdGgJ/KANsCzgk8ujyDnjbpgRxRc4Y//RZ+5LUqhyYj0WTJvnA8Yk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754989885; c=relaxed/simple; bh=7HeBaIxl7KiuIAyKpj+m8oswjIWs+2EP4qDg/8DlPJ4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=b/sma1AZ1SVQ8u4DUPuNvYCRQokRlBEBjo88AUvUrg9v1ukEVKoY77jJZq1P8ympWD0UMGyjkrh+zLE4fRtLCvGtThKCHwQ607ff44oTVRM5ZhMIGtaU+ESWnFkxxX1NTp58tOFy3RoJOve42ab8bA0CrN7IVDXGaokpeG5Nk5s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=kPmeDhD5; arc=none smtp.client-ip=209.85.208.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="kPmeDhD5" Received: by mail-ed1-f51.google.com with SMTP id 4fb4d7f45d1cf-615460d9897so5973387a12.0 for ; Tue, 12 Aug 2025 02:11:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1754989881; x=1755594681; 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=Tab2Hleppcwxq/kGW4SqXuYxShPYsb+FlXIHcmWLRu0=; b=kPmeDhD5FAxvjALjP4tGoGB+inNdAqfdaLdfBPbMUOGp/dxJdgboB4yRt6BmVRKO+j tOLgurwZKIXc9VJ1fqTM4K+D+F/j/HsK5MEVQjO1zFUg293IRMuBMbkafxiuDQ1/dSEa NqW/Jyo8rYMfR+0y/08YarRec8IbEm+a5JMmafJw1fxiQPLcPiYW7RISVxrkE3lYYGrt YkVi3+h9UtQ0NVF+1yWmtbMvkzkqciKU+y1fcD1Jq7eF9fLMl45N0qCz4/DWgYFi6cql TaTOwYxw9tQwUUtKXSgaYBqfGntM/F4kTfBgeFxDkp40hO2+Q+RO2Icgit5bfD7ZOToO VdpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754989881; x=1755594681; 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=Tab2Hleppcwxq/kGW4SqXuYxShPYsb+FlXIHcmWLRu0=; b=d3zUnXcIdrqJLg6amaLiAjaA1hEez6Wnsq8Yu06ssbIbtVAt6IynChzKQGdbFOS1OG 8eAA/0/v+mYSyBBDv4PkCHF0OvvL+yR8h41HSsMN/o58WhGGHhmjZfcd2p2rIO3fxkho PDlVodHoQu7/ujS8+QbLSrYXq6wMkkGctcaqhK6V/AFN637FpoJ+D2HfgkIcnrLdGfXH b11jZQ+VzE/S0aFZ2lUldTyiLn7MfgHsScqvIT/b2pARSJHwFkLV9pzvq35hfeD4zbtj 03Jtxe/SQPxOZUDSgOJKQZl3097knLpolD1YcZs5ErOc8K5zbnmblmLLy9SR6IgcW66R NtjQ== X-Forwarded-Encrypted: i=1; AJvYcCUcowMgkFXsXVhsMnaQjv8b9HfU7xSve/ISIs/IRk3RWo0w69n1/iJ0yBGP+zYc22kx4CtMJlVz6o3FHp8=@vger.kernel.org X-Gm-Message-State: AOJu0YyTsaqOxz32T24IDhop+tDgg1eJkDXE59frBZBHOTRIykf8j4Id wA65IbhXMadREdPwo+cDrGQno/dWS+bTSU4f+3V9xLaV6IibAfeIUAchdSliMpBzYQQ= X-Gm-Gg: ASbGncvlEzYT3PFHhmIwS8q18PgwM5gl6jC/e/34uI+b/9FmIL6dV9rT5GIrS5edp/9 CkXkzWe8pntkzcoMYJ+NGPgQwp3A9k8sE9jZ2WPEf8Xukr9g9ieJx1kG0xUs2fnYbB3U/blhuGr /CJpuyh6z8Q9aizPqZfFnruoU8L3h5u9s9P9hinBgSI1VfrXOucSFKQpT2zjjwbYAL2HqBNMqgq Gnu/J4n84qW1iRv37zk3i4AGwTwzuAu/CeskfZPNDMoC7p9Bum3Q4Br3qQbBCVx0ZsYQidlFi9R yZsCtGJxq0Sl48MYeWtUeRu6tcPsq/OBRji+Beao81+/TmHKmNriiukN8SFinjb3dj3VmkCTsOo WGQQkF/ASzxbyiMwulQ== X-Google-Smtp-Source: AGHT+IHPxUGsYIldlBjy9IVCUNneJwav173jkk+gv6YRSlxVsAj3puThJVXHvEdhCSuARsmrxJk5iQ== X-Received: by 2002:aa7:da54:0:b0:617:b662:2272 with SMTP id 4fb4d7f45d1cf-6184ed1586dmr1577163a12.33.1754989881450; Tue, 12 Aug 2025 02:11:21 -0700 (PDT) Received: from localhost ([2001:4090:a244:8691:4b7a:7bbd:bac:c56e]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-615a911567fsm19426350a12.61.2025.08.12.02.11.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Aug 2025 02:11:21 -0700 (PDT) From: Markus Schneider-Pargmann Date: Tue, 12 Aug 2025 11:10:23 +0200 Subject: [PATCH v8 2/4] can: m_can: Map WoL to device_set_wakeup_enable 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 Message-Id: <20250812-topic-mcan-wakeup-source-v6-12-v8-2-6972a810d63b@baylibre.com> References: <20250812-topic-mcan-wakeup-source-v6-12-v8-0-6972a810d63b@baylibre.com> In-Reply-To: <20250812-topic-mcan-wakeup-source-v6-12-v8-0-6972a810d63b@baylibre.com> To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Vishal Mahaveer , Kevin Hilman , Dhruva Gole , Sebin Francis , Kendall Willis , Akashdeep Kaur , Simon Horman , Vincent MAILHOL , linux-can@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Markus Schneider-Pargmann X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2839; i=msp@baylibre.com; h=from:subject:message-id; bh=7HeBaIxl7KiuIAyKpj+m8oswjIWs+2EP4qDg/8DlPJ4=; b=owGbwMvMwCXWejAsc4KoVzDjabUkhozZrGq86g0F39UZxP33+m1/FPp9RqS6aFJV371zPY7nN p37+HB/RykLgxgXg6yYIktnYmjaf/mdx5IXLdsMM4eVCWQIAxenAExk4ntGhoXcjd2y5hWFbQ09 HG1JD0y2lWR+61RRyXS/Z3nrfu6auwz/9F1XrZ19y0BS7vL2opz9YaY682MmR7u/15zudtji+/E +fgA= X-Developer-Key: i=msp@baylibre.com; a=openpgp; fpr=BADD88DB889FDC3E8A3D5FE612FA6A01E0A45B41 In some devices the pins of the m_can module can act as a wakeup source. This patch helps do that by connecting the PHY_WAKE WoL option to device_set_wakeup_enable. By marking this device as being wakeup enabled, this setting can be used by platform code to decide which sleep or poweroff mode to use. Also this prepares the driver for the next patch in which the pinctrl settings are changed depending on the desired wakeup source. Reviewed-by: Vincent Mailhol Signed-off-by: Markus Schneider-Pargmann --- drivers/net/can/m_can/m_can.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c index fe74dbd2c9663b7090678ab78318698d50ffb481..c68c95cc97075ddf72dbd2f177a= 999a09b8a21ca 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c @@ -2222,6 +2222,36 @@ static int m_can_set_coalesce(struct net_device *dev, return 0; } =20 +static void m_can_get_wol(struct net_device *dev, struct ethtool_wolinfo *= wol) +{ + struct m_can_classdev *cdev =3D netdev_priv(dev); + + wol->supported =3D device_can_wakeup(cdev->dev) ? WAKE_PHY : 0; + wol->wolopts =3D device_may_wakeup(cdev->dev) ? WAKE_PHY : 0; +} + +static int m_can_set_wol(struct net_device *dev, struct ethtool_wolinfo *w= ol) +{ + struct m_can_classdev *cdev =3D netdev_priv(dev); + bool wol_enable =3D !!(wol->wolopts & WAKE_PHY); + int ret; + + if (wol->wolopts & ~WAKE_PHY) + return -EINVAL; + + if (wol_enable =3D=3D device_may_wakeup(cdev->dev)) + return 0; + + ret =3D device_set_wakeup_enable(cdev->dev, wol_enable); + if (ret) { + netdev_err(cdev->net, "Failed to set wakeup enable %pE\n", + ERR_PTR(ret)); + return ret; + } + + return 0; +} + static const struct ethtool_ops m_can_ethtool_ops_coalescing =3D { .supported_coalesce_params =3D ETHTOOL_COALESCE_RX_USECS_IRQ | ETHTOOL_COALESCE_RX_MAX_FRAMES_IRQ | @@ -2231,10 +2261,14 @@ static const struct ethtool_ops m_can_ethtool_ops_c= oalescing =3D { .get_ts_info =3D ethtool_op_get_ts_info, .get_coalesce =3D m_can_get_coalesce, .set_coalesce =3D m_can_set_coalesce, + .get_wol =3D m_can_get_wol, + .set_wol =3D m_can_set_wol, }; =20 static const struct ethtool_ops m_can_ethtool_ops =3D { .get_ts_info =3D ethtool_op_get_ts_info, + .get_wol =3D m_can_get_wol, + .set_wol =3D m_can_set_wol, }; =20 static int register_m_can_dev(struct m_can_classdev *cdev) @@ -2361,6 +2395,9 @@ struct m_can_classdev *m_can_class_allocate_dev(struc= t device *dev, goto out; } =20 + if (dev->of_node && of_property_read_bool(dev->of_node, "wakeup-source")) + device_set_wakeup_capable(dev, true); + /* Get TX FIFO size * Defines the total amount of echo buffers for loopback */ --=20 2.50.1 From nobody Sat Oct 4 22:34:51 2025 Received: from mail-ed1-f41.google.com (mail-ed1-f41.google.com [209.85.208.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 8783E2E7F20 for ; Tue, 12 Aug 2025 09:11:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754989886; cv=none; b=JKPPOZ5pP63x3H9iKcDm3w8JyPuYBLq9qXZKl8FkU0POiNsPvg1GuVJcl0oLNcGN+tpyxHjP3mL6uvUOfrZXL+f3QWdB1Pxjs1jtr+2roNE7hUYFp5dgALL3XZCHJ3HXQGQLiWpwnch/hHatijz+aGh/FZC40j4BO1IkVZcXzuw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754989886; c=relaxed/simple; bh=PUGgDDQWFyEN8FapYMcSYXBqOMRdjtFyBA2weB75KGU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=j3YEmBd29Uib35gQe3D8AiF91OVffIUseVtioafMQciHyvuv5PryRXDhsNKh1PDnJJ84swBvwWjzPJobTSJjeOK65YGRCUC6SoCqVptNNQaxnyU2vrLhRyt6ERmEXfXcnjRdvQpVaq+EoYyQLqh4ssz8ZhARYFA1/vuhpTTzW5A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=bLAKH8HK; arc=none smtp.client-ip=209.85.208.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="bLAKH8HK" Received: by mail-ed1-f41.google.com with SMTP id 4fb4d7f45d1cf-60bfcada295so8624122a12.1 for ; Tue, 12 Aug 2025 02:11:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1754989883; x=1755594683; 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=PtVswNnng5a3i7kggSLAURNiGU+X7VfdWUXcHsf9Rh0=; b=bLAKH8HKiYdL3NVtBwgZ4tbKPAtp57oDU87SdMR2AXpmIqFuSsHyup7sowr3ZXNdEd H0G8bdqSacKx3cv+RC9QGgZFLoAmo7sL9baMVhOPNhEcdT4FXbYjj2PdjaFXMIhwWd0R FkfGhbihQT8/Cst1prHeVYJbYkcBsvJ3sJK8f20SwI5YunODsEmxVrQykHQ6wHrS6B99 ZCt2Et0k/a4XjTC2Wd5ETP450K81ByvwmAt5lF5wqSgAvExH7EGXj2kkxTQN/yaAdaDl GqjQAGbP2W0qg/G5elNIwzqD0DCrgvF3hgHYSRfOVUl8hquokdQJtdSxa6BF+fuP7rXh WAfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754989883; x=1755594683; 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=PtVswNnng5a3i7kggSLAURNiGU+X7VfdWUXcHsf9Rh0=; b=rRgDjV5JZl6v1QAWu99q/p63wbcirA1dKg9yAuxXJQ4aEQjLjkeAklBlRmO6YoF3ug BOus8Q46xqgX6f+bG4JtktqsrUMsLzZaz6oy/qEnXlQj2KDuLdCmPR40VuNFbE4X5Dpc +rwDE7X4nynS3szsDFNyNs7NfHH1irXS7OyEiJdwogUpw6prKjaNWDsnGzlPtjI62d9q HvI11opXxYvAac7PGlpn5bHh1Pjp26od+OOe3y/+/+lCzyoyIebKTF5lH0qtdddMIHjc EIjLPnjhTTdmAdfOgWEgXT2A0bE6+j15XP01XWIH27RrFksWz1XL5s4bM1+8jEh7vgTS iKdg== X-Forwarded-Encrypted: i=1; AJvYcCU55au9wlceHrNPhDFNEJJ/ptaOrdwOs1YaB0ryIC7iddat3+TvlRRSxjLUbpPAWswewyXtzad2fCyEv2c=@vger.kernel.org X-Gm-Message-State: AOJu0YwfZgynvMhnmEdY0sQAJC87Ld8BPmDNmCBCLIB9UTIfeyBapjcW v7/PrSQ8tXwFJiWWmRkwd3qKgrZGpFoXOQ8Tx/quo9+wPORxWAMCpoTMO2lV/hLFJio= X-Gm-Gg: ASbGncsKkG9XUGAlMKz7/TNePfmj4sR9RY5UldPebjj8m2YboMHorwUsWemDtOkgb7Z uqfP9rLB7X1b0YDQmisU67kH7/eJXBmQ9XH+iKIWO7oyA5/abedkEJCG2R0tTybGKbgUQY12tPP NfKAvyU6sG8/GZDw5CD/ql8I6x9QGx5FPHOGYi2sMC9dGmFlP0k25Tq6dbjTtpbSzkMrRlaBfR2 Ue2gYlnJcwywHxUZITa793OY8PHHNfsSkIO4e27MBAjE3Xfktd6jqisUIrEHs79cAf9+iKq4AaX MXlb1F3DzQ5OZflzUvEy3NE2nx6QMdF3FOYTV40JyEbOUMCwh6WHvzWNAwNYjLUajNRioUaxl6l 8TRVIr53nebNH4nE6lg== X-Google-Smtp-Source: AGHT+IGhA4rMEe2VrDFUP8QXdGsWvzZGFh7h4ZPkXbLqb1oWGSF8vld5DLTvTW/ITvReqH+4qplLdw== X-Received: by 2002:a17:907:9686:b0:af2:42e8:ad9f with SMTP id a640c23a62f3a-af9c6516b7dmr1378807066b.39.1754989882646; Tue, 12 Aug 2025 02:11:22 -0700 (PDT) Received: from localhost ([2001:4090:a244:8691:4b7a:7bbd:bac:c56e]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-af91a21c081sm2145677066b.97.2025.08.12.02.11.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Aug 2025 02:11:22 -0700 (PDT) From: Markus Schneider-Pargmann Date: Tue, 12 Aug 2025 11:10:24 +0200 Subject: [PATCH v8 3/4] can: m_can: Return ERR_PTR on error in allocation 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 Message-Id: <20250812-topic-mcan-wakeup-source-v6-12-v8-3-6972a810d63b@baylibre.com> References: <20250812-topic-mcan-wakeup-source-v6-12-v8-0-6972a810d63b@baylibre.com> In-Reply-To: <20250812-topic-mcan-wakeup-source-v6-12-v8-0-6972a810d63b@baylibre.com> To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Vishal Mahaveer , Kevin Hilman , Dhruva Gole , Sebin Francis , Kendall Willis , Akashdeep Kaur , Simon Horman , Vincent MAILHOL , linux-can@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Markus Schneider-Pargmann X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3540; i=msp@baylibre.com; h=from:subject:message-id; bh=PUGgDDQWFyEN8FapYMcSYXBqOMRdjtFyBA2weB75KGU=; b=owGbwMvMwCXWejAsc4KoVzDjabUkhozZrNqaC64Z/X37Vif62uzJPgFroxXSz6XcXDZxg4sB2 zk5tyqmjlIWBjEuBlkxRZbOxNC0//I7jyUvWrYZZg4rE8gQBi5OAZhI1hVGhs2aClvMvr4Ja/aw 1WR6XuFg/PfRnmUCzCp/co/oeiuYXWRk6J0W9GpPQ2vSjf/XSvWafk2wrxfP83X//5Hzql6KxIe //AA= X-Developer-Key: i=msp@baylibre.com; a=openpgp; fpr=BADD88DB889FDC3E8A3D5FE612FA6A01E0A45B41 We have more detailed error values available, return them in the core driver and the calling drivers to return proper errors to callers. Reviewed-by: Vincent Mailhol Signed-off-by: Markus Schneider-Pargmann --- drivers/net/can/m_can/m_can.c | 6 +++--- drivers/net/can/m_can/m_can_pci.c | 4 ++-- drivers/net/can/m_can/m_can_platform.c | 4 ++-- drivers/net/can/m_can/tcan4x5x-core.c | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c index c68c95cc97075ddf72dbd2f177a999a09b8a21ca..e08fae5ddf5efa8345670dd50d5= 0954ec5d52b29 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c @@ -2392,7 +2392,7 @@ struct m_can_classdev *m_can_class_allocate_dev(struc= t device *dev, sizeof(mram_config_vals) / 4); if (ret) { dev_err(dev, "Could not get Message RAM configuration."); - goto out; + return ERR_PTR(ret); } =20 if (dev->of_node && of_property_read_bool(dev->of_node, "wakeup-source")) @@ -2407,7 +2407,7 @@ struct m_can_classdev *m_can_class_allocate_dev(struc= t device *dev, net_dev =3D alloc_candev(sizeof_priv, tx_fifo_size); if (!net_dev) { dev_err(dev, "Failed to allocate CAN device"); - goto out; + return ERR_PTR(-ENOMEM); } =20 class_dev =3D netdev_priv(net_dev); @@ -2417,7 +2417,7 @@ struct m_can_classdev *m_can_class_allocate_dev(struc= t device *dev, =20 m_can_of_parse_mram(class_dev, mram_config_vals); spin_lock_init(&class_dev->tx_handling_spinlock); -out: + return class_dev; } EXPORT_SYMBOL_GPL(m_can_class_allocate_dev); diff --git a/drivers/net/can/m_can/m_can_pci.c b/drivers/net/can/m_can/m_ca= n_pci.c index 9ad7419f88f83016e93667f4847fe536eca39ad1..eb31ed1f964491ab41c7811be31= 7706a09951390 100644 --- a/drivers/net/can/m_can/m_can_pci.c +++ b/drivers/net/can/m_can/m_can_pci.c @@ -111,8 +111,8 @@ static int m_can_pci_probe(struct pci_dev *pci, const s= truct pci_device_id *id) =20 mcan_class =3D m_can_class_allocate_dev(&pci->dev, sizeof(struct m_can_pci_priv)); - if (!mcan_class) - return -ENOMEM; + if (IS_ERR(mcan_class)) + return PTR_ERR(mcan_class); =20 priv =3D cdev_to_priv(mcan_class); =20 diff --git a/drivers/net/can/m_can/m_can_platform.c b/drivers/net/can/m_can= /m_can_platform.c index b832566efda042929486578fad1879c7ad4a0cff..40bd10f71f0e2fab847c40c5bd5= f7d85d3d46712 100644 --- a/drivers/net/can/m_can/m_can_platform.c +++ b/drivers/net/can/m_can/m_can_platform.c @@ -87,8 +87,8 @@ static int m_can_plat_probe(struct platform_device *pdev) =20 mcan_class =3D m_can_class_allocate_dev(&pdev->dev, sizeof(struct m_can_plat_priv)); - if (!mcan_class) - return -ENOMEM; + if (IS_ERR(mcan_class)) + return PTR_ERR(mcan_class); =20 priv =3D cdev_to_priv(mcan_class); =20 diff --git a/drivers/net/can/m_can/tcan4x5x-core.c b/drivers/net/can/m_can/= tcan4x5x-core.c index 39b0b5277b11f5cf86137528e7ebea93a6d29c80..31cc9d0abd45360de8700d0a027= 0af8d3e42967d 100644 --- a/drivers/net/can/m_can/tcan4x5x-core.c +++ b/drivers/net/can/m_can/tcan4x5x-core.c @@ -416,8 +416,8 @@ static int tcan4x5x_can_probe(struct spi_device *spi) =20 mcan_class =3D m_can_class_allocate_dev(&spi->dev, sizeof(struct tcan4x5x_priv)); - if (!mcan_class) - return -ENOMEM; + if (IS_ERR(mcan_class)) + return PTR_ERR(mcan_class); =20 ret =3D m_can_check_mram_cfg(mcan_class, TCAN4X5X_MRAM_SIZE); if (ret) --=20 2.50.1 From nobody Sat Oct 4 22:34:51 2025 Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52]) (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 94B1B2E888D for ; Tue, 12 Aug 2025 09:11:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754989888; cv=none; b=Ze+a9Uri6aDtGJI7EYj9ctT9z/kFXDTs3vdvmzkF3QO5wL5UBKpGKoUL8RsQtkf69hp9tI37uoiWWUqIcsD+YvsqSmo3HyugWTev73J4Y32KQlg7yoDLAhv78gIBh7aNY1zMXWMNKP0sbgV0iUddREvmSQkZuheCK3QRO9wTlX8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754989888; c=relaxed/simple; bh=gv4aQqLQj6qk5926WotZilrrsqGPIVpFLa7mla3fUUo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uxUwVYNNWSE0tUi0Fep0O4b4qfQEd2bssKy6xVfmmCSFLusaex+G6iqO0wSLAzXk8N2g9PPe7UApegXFvqBKEIqH92thG+Hn3qQ6UgR113M95CnmULnNtuCmDr1+iytABVa+qwzbUMlD1Lr0P7QOjaiSoNb3RDRj5wfO+YVdsOk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=n7Ugw88R; arc=none smtp.client-ip=209.85.218.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="n7Ugw88R" Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-af925cbd73aso987328866b.1 for ; Tue, 12 Aug 2025 02:11:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1754989884; x=1755594684; 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=WWNmgoaL9pn5HPHLZK1R43ly/5jtUzOZdXJxOwsahbE=; b=n7Ugw88R+p37GKLMz8cVzjmmgr6dghQ1CAj7kxtg4HjNx4tpzKE/Puu5MDUhzF4/Kg dtcsOgBNmx/A17R/gtU1AQTcn9eztUtNB1S78Qxh2PpARU+3MkL3aLItIed0sni/Lcs0 0DW2l6CZo8S1SlI5xxURFtgeqz3ltMxpRqxq3L3g93e2gi7e+TapxY0rJNBD1nwOSE4J BuUckKLtn1YlsLKy5DbqRO7WS/hjZsjiejKwK5Xtjt4qx9INU++xCq0Xx98DQa3XxuDn K8CwEU+49PAcqeYvVspWszZ7d+D9EKqAsHqkAdbcqYRiEh5MxvXGUByRjELuV45qmg5D ZVkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754989884; x=1755594684; 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=WWNmgoaL9pn5HPHLZK1R43ly/5jtUzOZdXJxOwsahbE=; b=aHkwPffkR3xZXJw7rXtyur6v9rtGQvRdEi+xXt8FnmU482yVc61FKqi97djPLEp1HI o2hX5jSGkjZG5GnOWRtXV3I180H2w2usrEZr3oYjE9+HleepOQaruQPLCKtjar0Vx1vI L3aiUB3GR6jMewNTF5MfhVbOQwY9LcU4vsX7g20ES8Kdx0SF0KNvWbnHbeeYO17SKKGU ck53DMCVpNwW+BConzc1YyAG8lwT8S77s4fgqlMdDHQQi0G5q3jhnO5NoDKZPezqYnzI 45S/UgieSe4wZITVwqMW+qbsL1TRv7Wr+aQhbEeK08m/o9jUelA+gkvK6BBI0dm0PsVQ nyOQ== X-Forwarded-Encrypted: i=1; AJvYcCU38tm2DV8n2HwxOE18FKRoUs58nTkrw/RHs+r579i3hZTBlw7j4UyWp5gzE1ERhhft6kGPa0MHL5wLAO0=@vger.kernel.org X-Gm-Message-State: AOJu0Yw4g6w12h5cXRmXYR8bE7AFoWp2PIjZwB0i3jhw6tBedVDHu3Wl 0esAvwlSVuEQmQ+eRZmfiXzfGU/S5Tl9Vy+hPQWqFYNIAQpHUjG7r4T7KLKuruQKAKU= X-Gm-Gg: ASbGncvSim3q1G/m4RewDjNLrl+7SF6o5wZEOFMLTvNS7Xh7JcAekV7lXocNLogV8zw bfbaOhQivbJ/KQo7iRW4z8p4SOUk2dNVCZA6AFNNVRMqh5o5WRl1OqQJ5AzWdejiG29kpy/yBqa aJpx5DJAxX0iWv6tZBvTWYx5qjLSasWUX5sL3gX9pVZhghHAS7whd7oqaq2Vtt05MoYn0MRtZ1o FbOSwP4F7EeJ2j4U/BEngHHUCC2uRG1hdiDJNSb5m8Et6lfk/T6ByLfozVjU4g6u4bRWk4VDMOW ZFgS0348O09CcrzHpIJ2cGF9f9YIniE4qkRu3RySdlI9sabdEAuABXFErcH5SFb9YHMV1bfcA3T YYbV3XbkKV4azZM3sNw== X-Google-Smtp-Source: AGHT+IFAazmUi/aRbw5Twc92V84t4z0NIo06UksQYmLsp1JA0GgYsP4z1F3V+M2ifd+59uTvbZfSig== X-Received: by 2002:a17:907:9408:b0:af9:29c1:1103 with SMTP id a640c23a62f3a-afa1e22544amr224457166b.55.1754989883816; Tue, 12 Aug 2025 02:11:23 -0700 (PDT) Received: from localhost ([2001:4090:a244:8691:4b7a:7bbd:bac:c56e]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-615cc38aeccsm18161232a12.2.2025.08.12.02.11.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Aug 2025 02:11:23 -0700 (PDT) From: Markus Schneider-Pargmann Date: Tue, 12 Aug 2025 11:10:25 +0200 Subject: [PATCH v8 4/4] can: m_can: Support pinctrl wakeup state 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 Message-Id: <20250812-topic-mcan-wakeup-source-v6-12-v8-4-6972a810d63b@baylibre.com> References: <20250812-topic-mcan-wakeup-source-v6-12-v8-0-6972a810d63b@baylibre.com> In-Reply-To: <20250812-topic-mcan-wakeup-source-v6-12-v8-0-6972a810d63b@baylibre.com> To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Rob Herring , Krzysztof Kozlowski , Conor Dooley Cc: Vishal Mahaveer , Kevin Hilman , Dhruva Gole , Sebin Francis , Kendall Willis , Akashdeep Kaur , Simon Horman , Vincent MAILHOL , linux-can@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Markus Schneider-Pargmann X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4136; i=msp@baylibre.com; h=from:subject:message-id; bh=gv4aQqLQj6qk5926WotZilrrsqGPIVpFLa7mla3fUUo=; b=owGbwMvMwCXWejAsc4KoVzDjabUkhozZrAYmp9VPZ8fec/q3KXe/a2lua5rcFP1ocxY5v8x7j HnnhZU6SlkYxLgYZMUUWToTQ9P+y+88lrxo2WaYOaxMIEMYuDgFYCKOJxgZ5tblOz74yq1k4Mvq F/T6pGSt0CZlISF211WNcbv31TrNYGQ4m3QkpWrnoY42L3ut2Obj/ReqxBOWeEk9fn/lRf5/h2x mAA== X-Developer-Key: i=msp@baylibre.com; a=openpgp; fpr=BADD88DB889FDC3E8A3D5FE612FA6A01E0A45B41 am62 requires a wakeup flag being set in pinctrl when mcan pins acts as a wakeup source. Add support to select the wakeup state if WOL is enabled. Reviewed-by: Vincent Mailhol Signed-off-by: Markus Schneider-Pargmann --- drivers/net/can/m_can/m_can.c | 68 +++++++++++++++++++++++++++++++++++++++= ++++ drivers/net/can/m_can/m_can.h | 4 +++ 2 files changed, 72 insertions(+) diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c index e08fae5ddf5efa8345670dd50d50954ec5d52b29..99ae6f817b313798aaa7d57166b= 3f564cd3aa946 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c @@ -2233,6 +2233,7 @@ static void m_can_get_wol(struct net_device *dev, str= uct ethtool_wolinfo *wol) static int m_can_set_wol(struct net_device *dev, struct ethtool_wolinfo *w= ol) { struct m_can_classdev *cdev =3D netdev_priv(dev); + struct pinctrl_state *new_pinctrl_state =3D NULL; bool wol_enable =3D !!(wol->wolopts & WAKE_PHY); int ret; =20 @@ -2249,7 +2250,28 @@ static int m_can_set_wol(struct net_device *dev, str= uct ethtool_wolinfo *wol) return ret; } =20 + if (wol_enable) + new_pinctrl_state =3D cdev->pinctrl_state_wakeup; + else + new_pinctrl_state =3D cdev->pinctrl_state_default; + + if (IS_ERR_OR_NULL(new_pinctrl_state)) + return 0; + + ret =3D pinctrl_select_state(cdev->pinctrl, new_pinctrl_state); + if (ret) { + netdev_err(cdev->net, "Failed to select pinctrl state %pE\n", + ERR_PTR(ret)); + goto err_wakeup_enable; + } + return 0; + +err_wakeup_enable: + /* Revert wakeup enable */ + device_set_wakeup_enable(cdev->dev, !wol_enable); + + return ret; } =20 static const struct ethtool_ops m_can_ethtool_ops_coalescing =3D { @@ -2377,6 +2399,44 @@ int m_can_class_get_clocks(struct m_can_classdev *cd= ev) } EXPORT_SYMBOL_GPL(m_can_class_get_clocks); =20 +static int m_can_class_setup_optional_pinctrl(struct m_can_classdev *class= _dev) +{ + struct device *dev =3D class_dev->dev; + int ret; + + class_dev->pinctrl =3D devm_pinctrl_get(dev); + if (IS_ERR(class_dev->pinctrl)) { + ret =3D PTR_ERR(class_dev->pinctrl); + class_dev->pinctrl =3D NULL; + + if (ret =3D=3D -ENODEV) + return 0; + + return dev_err_probe(dev, ret, "Failed to get pinctrl\n"); + } + + class_dev->pinctrl_state_wakeup =3D + pinctrl_lookup_state(class_dev->pinctrl, "wakeup"); + if (IS_ERR(class_dev->pinctrl_state_wakeup)) { + ret =3D PTR_ERR(class_dev->pinctrl_state_wakeup); + class_dev->pinctrl_state_wakeup =3D NULL; + + if (ret =3D=3D -ENODEV) + return 0; + + return dev_err_probe(dev, ret, "Failed to lookup pinctrl wakeup state\n"= ); + } + + class_dev->pinctrl_state_default =3D + pinctrl_lookup_state(class_dev->pinctrl, "default"); + if (IS_ERR(class_dev->pinctrl_state_default)) { + ret =3D PTR_ERR(class_dev->pinctrl_state_default); + return dev_err_probe(dev, ret, "Failed to lookup pinctrl default state\n= "); + } + + return 0; +} + struct m_can_classdev *m_can_class_allocate_dev(struct device *dev, int sizeof_priv) { @@ -2418,7 +2478,15 @@ struct m_can_classdev *m_can_class_allocate_dev(stru= ct device *dev, m_can_of_parse_mram(class_dev, mram_config_vals); spin_lock_init(&class_dev->tx_handling_spinlock); =20 + ret =3D m_can_class_setup_optional_pinctrl(class_dev); + if (ret) + goto err_free_candev; + return class_dev; + +err_free_candev: + free_candev(net_dev); + return ERR_PTR(ret); } EXPORT_SYMBOL_GPL(m_can_class_allocate_dev); =20 diff --git a/drivers/net/can/m_can/m_can.h b/drivers/net/can/m_can/m_can.h index bd4746c63af3f0a032910644dfd48a9ebb3a6168..353ad73649218dc0a03d9ba947c= 6abc847c958eb 100644 --- a/drivers/net/can/m_can/m_can.h +++ b/drivers/net/can/m_can/m_can.h @@ -128,6 +128,10 @@ struct m_can_classdev { struct mram_cfg mcfg[MRAM_CFG_NUM]; =20 struct hrtimer hrtimer; + + struct pinctrl *pinctrl; + struct pinctrl_state *pinctrl_state_default; + struct pinctrl_state *pinctrl_state_wakeup; }; =20 struct m_can_classdev *m_can_class_allocate_dev(struct device *dev, int si= zeof_priv); --=20 2.50.1