From nobody Sun Dec 14 19:19:35 2025 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) (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 0C89920C005 for ; Mon, 21 Apr 2025 08:11:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745223071; cv=none; b=ISc1Qv6UBgwQpBVHcnDwW29ysFVQU8O9h3g64g9ihcXUGNstnLXVeZznQYwwwCYd2SFOgj5HJlWZeoe6rXZD/T9e1pfm50rNLdIyLBe/9W12ThUtFyTwpZDpGgzh3zusQhV4M4N+r7/lZN7jAjBon5WVfvmADAYGFyCUblDo5ug= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745223071; c=relaxed/simple; bh=8cnbqnEIT2SapONFBAoVoxc2fqVmncyHVScTK2PoKRo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jMLch8WSoG6Q/G/3RrMvWQ+nLuUYGepIObIIOcHPFfagJi/js9S9E4pZ+rO0AHqMkY6GY3Ag4Ik/s62fp/NzMORPuDuqYzEandtiQgsYMX2lc9PZca9tk4F83Ra34DTY+ncEiJwe6Vs7zS4JvRvs5BXpqEmYqfRx4i1Di8sPmjw= 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=eZiA2ggq; arc=none smtp.client-ip=209.85.218.49 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="eZiA2ggq" Received: by mail-ej1-f49.google.com with SMTP id a640c23a62f3a-ac25520a289so491533366b.3 for ; Mon, 21 Apr 2025 01:11:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1745223067; x=1745827867; 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=xXgQQbKgfnh8/TwrQq0CXBZDridfnrlUyigTFtKkpUk=; b=eZiA2ggqNIM6uoGrV/3/+E6nv64g+gGn4PxAuujLludy356xZMUFTDn6oELoRziZ8j dDk9QSuPBgf5HaY6S6DaAUswjUQr26VLdTeF66fg1Zjs4O9bKvvB17KfnRDuzI+5zkrr xlLgz9fujv4uGfm8Ad26pYIRSfcVCXmSCH/NDHk53aCFtJ8h/Ab5laGPcy8Aj4XBhc6m qy6lNydz6js+7QLMy4WPKCpqpcpQYidOSINv5D9nMXrU5lL1c6Yzh0XHcHV8sLpQxYBr IhM0zx7BtVJXHHzEM2T5yAGfBpXzRu3/pZ9HUSAknNGiWgPM6yzMnN2A0uImMFWwsHDJ lkxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745223067; x=1745827867; 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=xXgQQbKgfnh8/TwrQq0CXBZDridfnrlUyigTFtKkpUk=; b=Jl29mCkRoy83to1ufBvfVFGAupe3x2/VhWfXHZqVGLi595aZKuMrJo8Rp4SFeB8lxb a5P3R7HVTseNytLQrE+FABeljVsdBn2aU6Xhi/fLOYrf83dYOclmJC0KdBMyHLG5UH2+ GJAZTyVXi0oNkJlPL39opw+zfEDzhcTWvU/VeXRSmckiMzA8z0dXDZVsIC9/6jzK/R6K r5WoaZqpBAsGw21/nI21hMEDc/QIlAl4RaWzQkL15sV4k5KX3zDmPyM1/72/pQtLTM5X J9g+mW9uexEWKSzh9KGqjJhGo3E+ap3pz9LN9TdMUB7Cc3jJTQAmqP+SYvg57SclWOmC aouA== X-Forwarded-Encrypted: i=1; AJvYcCX5rjcgUBB/06Km3GzN0dTB3FVI9XQGGbXp3st3wt4SWgRcgG5zrpoynSFPgOfC7DLUuQcOb2Kqyd24pkg=@vger.kernel.org X-Gm-Message-State: AOJu0YyMMLz6QgdCiCxmnOo9tpCoC8g5s2CKwvuBXImemI67pLXyAmQz 1yg2NEq7PEHfbTqI2zItFM1oyFJjRQLTyx0Ve7SfdmrVff3tE+DJPiD0sCReLC0= X-Gm-Gg: ASbGnct4p3y9n5eoVZTcjujKTXxS+6H1XXR5f/8io5cLBf0xnzHh+K01U5Pa1VhhWgX XYw66vtMW+AIN28nX/amcsBttE5K/gb288USdPJQ0qhKuHNb6jHSyiQ8mzIbhFp4qtZZOxAZd5b AlCu2rEQFsOoYFkHXzQ4K9mXkkHhNpNx94YPQ8aLdEM/O/sriGEe8BG2LggSW7+T60bHHsfvbdb p59C1cRCXO6srMsWR9EZOPCWetWUA81GBVHzNdIuzpnU3E3SzGPC7fjX2TkkZ3xKxVKsdIFRa1r V8RWV4myipKcnRbYzIOJPgmoobc0jmb3zL0= X-Google-Smtp-Source: AGHT+IFm/Skz537wfTeoh2KozrNOOTUDzhipX6Al/MEzRYRXMbJwDdJHpyUOgxUlClgZmtUma/F09A== X-Received: by 2002:a17:907:7288:b0:aca:a383:b0c9 with SMTP id a640c23a62f3a-acb74afba44mr971434066b.13.1745223067279; Mon, 21 Apr 2025 01:11:07 -0700 (PDT) Received: from localhost ([2001:4091:a245:826e:c0c:4cef:7dd:26bd]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-acb6ec0b389sm475749866b.20.2025.04.21.01.11.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Apr 2025 01:11:06 -0700 (PDT) From: Markus Schneider-Pargmann Date: Mon, 21 Apr 2025 10:10:37 +0200 Subject: [PATCH v7 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: <20250421-topic-mcan-wakeup-source-v6-12-v7-1-1b7b916c9832@baylibre.com> References: <20250421-topic-mcan-wakeup-source-v6-12-v7-0-1b7b916c9832@baylibre.com> In-Reply-To: <20250421-topic-mcan-wakeup-source-v6-12-v7-0-1b7b916c9832@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=8cnbqnEIT2SapONFBAoVoxc2fqVmncyHVScTK2PoKRo=; b=owGbwMvMwCXWejAsc4KoVzDjabUkhgzWvy17Oeq+FiudfrvfStt+jk7OAqn0iEtnJDZY7Fpj+ aZYaF1xRykLgxgXg6yYIktnYmjaf/mdx5IXLdsMM4eVCWQIAxenAEzkUh3D/4A/8Wf3Ls5cuNSN +U+ejch+9V2mvRM6C/tExV0UHL//VWX4X61XbtC8ccPa36Xr2330dz/fKPW6iqVtfs7zgKeXWL5 NZQUA 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.49.0 From nobody Sun Dec 14 19:19:35 2025 Received: from mail-ed1-f44.google.com (mail-ed1-f44.google.com [209.85.208.44]) (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 0D9DA20E318 for ; Mon, 21 Apr 2025 08:11:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745223072; cv=none; b=iXygQNn/XEn6X1Zz37qSknIga5VwqqOw+WXxRf13h/UJnEKAqTn4sI9ya4/pWJkdXShiHSkJKW32VO/FSMUaqDndsGg8TUN8Vdkw5SYrthQBIeUUVL4Un7NMbJHJ2jgEjEDyYpSk6CbQCA8WO2YYG1M1SXFPyCUBq/9SpwZwNSM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745223072; c=relaxed/simple; bh=dDHRE1N1nz5IxvkFWD189S+eb/qdswz6/31P5AqP5ho=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=g7EI1dcNVW1tUov28ggbpcgI4cHLJtqsFuxmGnuSZXbbskeBes6f5x+CiQ8xAcKewcNA7kiEyIXK3JDZemQ7eOnmh6Yaft4y5I4dLpJ3orZlU0DQu/enC4fhasdCjFFlUuvSNxDdMuNYhOgPRNaiUUvMrB37k+1TdrVVnA9zMA0= 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=OD7nzw7K; arc=none smtp.client-ip=209.85.208.44 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="OD7nzw7K" Received: by mail-ed1-f44.google.com with SMTP id 4fb4d7f45d1cf-5f62d3ed994so4110486a12.2 for ; Mon, 21 Apr 2025 01:11:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1745223069; x=1745827869; 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=qSuVgbbOPBnjsDOIduDjz+jGxykBq30MNjzwBqDkw2g=; b=OD7nzw7KneatgmKmpU7MmOWuvm2Afl1P//Jjp57ezoR0E6wlGLE9d1zT1dW1JVT0Wo 0D+E3/1yYjySQrHeBHZCqibGJxKC08rDXP8KMzsfUq8wN2HqVgK/XehtOzK/BTXXVekM s5eNfxgfZmM8Wwsa98/vsGAAMYUKN7xeyH3F5suXUvs2Hi8d7dmE9ZlDElyYv4+3Qh1P GFVoeDdtJQtv/HX5rKQaPf4u13mnS4lEguLKPjYyCO1vDNJr0a2vU1MfCDBewjV+73Cx 6fXanhHAqZ+yiF1wPIkPYNzIG12oGL1Xzh+lpB7PRvvJsIx0nntw+r1vZuIY24DDy1Fm aqHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745223069; x=1745827869; 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=qSuVgbbOPBnjsDOIduDjz+jGxykBq30MNjzwBqDkw2g=; b=YNv9bllk16+3NBeSWljJ9VxsLpBhShj48DAX0SW07HI/ZYs9tFUkAVpiyUeAWJK3hS I6qGCvNRttMsry6T3sSFMKllhlxIl3kJj+iTGEOQgH9rZm3yLhmceNE/1xckl6UfX8n0 Bni77vpk1pQQ2i/f8MpwgQDPmq+9Noyuiq0dKfWqnCrHQs83sQZ3QPZ3ROzF5OfTHk09 Xpvcy9GgZDEk5mRLbbHrkzzdOamLsd7dSf/SQNGDjMOUM7L5KVlXj7/Pecu+z209ww7w GdBNNGNOaMGwxKi0wda8dayi76rcO8SHN/ScXl8sG/qj7KDIZ8+L6L1HBR1KNHG1mlQJ tGjw== X-Forwarded-Encrypted: i=1; AJvYcCXMYGxwCKixpbAElKq/l4PG1kSkfwE2Dpz3cwTwMa+30G63FNtW+ZH6FhfPOJ0E0ai3P4+Fs7ytt1c91OA=@vger.kernel.org X-Gm-Message-State: AOJu0Yw8B2g2jNy3RPeDBRQ3etdTXz0P+7e0FTRrTo67umMPjxFx44Yq bPe+uYsQq0BffhBpGRz1BGe9M0HNG353MGrYSPCjJQVpM4OeiRTuVb0mWnhZmkw= X-Gm-Gg: ASbGncspeM6v+AOxAdKawgTbDweOWSzZOf59UhEv38zSvuh+VJR/nHl4atk3mEMM9ly +NY+FcEBCFWJTDQVpZl1v8rhwFESn+FsuOBaFAmJtlO1RrkrRJbIFofbPHtFtrb+hBY/KnVVdS0 beFnNEVsJ6QRhEtlsmqKGTUNrTzSV35JyQt6v6lDpSpo4FvGEBEYm675yvoAnJtgNEjKcl7INwj 0tn/KCwCqvgCd5f/k8f9n2TrIcSUfYIqJyl0Evtoc8sRYE1egh4HSFYYNp+FPBZJfIDhUjklAwv wvrrpv4GlUpq9iNxUIbsoaL9gCADardofVw= X-Google-Smtp-Source: AGHT+IEsRYa/rGSxt5vTfUSELawpvZ3nxncA/J4aiCnhXctfiKhQ6OgVur7z1uLT9K/5OYdZOn7/LQ== X-Received: by 2002:a05:6402:1d49:b0:5f5:f890:3dd5 with SMTP id 4fb4d7f45d1cf-5f6285461aemr8429941a12.15.1745223069231; Mon, 21 Apr 2025 01:11:09 -0700 (PDT) Received: from localhost ([2001:4091:a245:826e:c0c:4cef:7dd:26bd]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-5f625578098sm4254090a12.20.2025.04.21.01.11.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Apr 2025 01:11:08 -0700 (PDT) From: Markus Schneider-Pargmann Date: Mon, 21 Apr 2025 10:10:38 +0200 Subject: [PATCH v7 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: <20250421-topic-mcan-wakeup-source-v6-12-v7-2-1b7b916c9832@baylibre.com> References: <20250421-topic-mcan-wakeup-source-v6-12-v7-0-1b7b916c9832@baylibre.com> In-Reply-To: <20250421-topic-mcan-wakeup-source-v6-12-v7-0-1b7b916c9832@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=dDHRE1N1nz5IxvkFWD189S+eb/qdswz6/31P5AqP5ho=; b=owGbwMvMwCXWejAsc4KoVzDjabUkhgzWv52vzl9Q/Rq9+IvCy9vFErdZdjEePFpUGjmDxW49l 4P2M4tbHaUsDGJcDLJiiiydiaFp/+V3HktetGwzzBxWJpAhDFycAjCRJ/GMDB9+sXu3N3+0qOa/ KW/xlvNa/mVW60wX36IClRdMdq11qgx/xcxbmjY+nup/iZ3BYVmOxjGj62nL7jGIy8pba21e9e0 MIwA= 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 884a6352c42b7bc372c55a6be19ca9fcb15d3d63..20f7533ad9e7735013ff000e6f3= b11d016f8a09f 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.49.0 From nobody Sun Dec 14 19:19:35 2025 Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) (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 43BCE20F07D for ; Mon, 21 Apr 2025 08:11:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745223074; cv=none; b=n4s+jb/eVIjGpU3/5Q1r1vVnfxtODFTafRPTeLlJy25QSAuTk8EfQagzq4fU2zc91kw1y0jfSDm4u9jhhDTk4IJuoN4CSIjKqZfFQilt0Yafj67gz0PoF/yKTqEITt5xqEUlpLkRkuWEguVaw329HvV0f0cJXukmqXzWcYyPq0M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745223074; c=relaxed/simple; bh=O3pRsI6gkhJ8yN5yjJrEOMIYhnHfrtxVjzkgA4JG+as=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tttbENMj0GJYR/fzgu1eGeCnZCmyk0c6xeYg5LxWgDdbbyiXkvEL2vMLDyVSkXN7dMOuPVk3Zqp4P/yZA6r7xs2Mm/TyQWkBZv1/jbvOXzkLTj9RsS9zkwzNGhOfo/qxAQnZEzLt4dRypLzTNHqA/0lDXt5vSr47ho162uyD8J0= 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=SQSQ8Ka2; arc=none smtp.client-ip=209.85.218.54 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="SQSQ8Ka2" Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-ac34257295dso715874966b.2 for ; Mon, 21 Apr 2025 01:11:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1745223070; x=1745827870; 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=t4BsVWyVpHQ7IvkTc4RMfeoFhYjZkeiB88CiEh0P2ls=; b=SQSQ8Ka25w2EXCJq7L6HbbzirZMOALdFSF8TcFH6IJRuThdnxhFJC8iQTFyAVy7/k9 vKOLW2BqN9Eh3IodiJuPEUa1mkPNKddHJeIkp5mKmfCMJomLVxc3b5Qri3roAPV3kHgN MCq2ur60HMBN5VhxNJyF/Im2QiF69HPH3g3ff/su1kJYNOCU0SqD/ES3VYIfbEz2B63G ecEcOb/BzqyLENd6KJ4rojKNidDjSnrRT5CZxhywsPiOyevPNDBaGMzHlTfO3YfgkD7j BoSHzrR8XCZyZVZvhF2WxwG2bp9YvmVeom0Q/W3GkGHJ0iHhtoTUt2tW/imEaeXuPBfs Encw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745223070; x=1745827870; 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=t4BsVWyVpHQ7IvkTc4RMfeoFhYjZkeiB88CiEh0P2ls=; b=bq8mvhgRMAz0zjzuCp7CCMbcksq8pUwXcSnCjR0buBpqnTq5zyK30kzBEFXQXxERO+ 4cbeu0WJIE30MOUIrk6M34j9WTYvh435+RHroH8NvpIqLG0wLdNJgGWnOPC+UgIOgWWd I+ZcrTvkxV+zc0Umf88Xknd0SUKT8ac4O17BlOs5NMLebA2Yu26mu/DmL4ixDCVJK1uA GlC8EXjYALE89MB3cXh7nLNZ/2hwcr8GdUzuR/MAxht9fuabyIddVmRx0bF3IIbgi0vK eowXy2+7iXrJUoHxdQlmXjazWYlhcTurVXzStFF4nmsyuKsIsYfQPDOZKO+IJp+C0E4V vzEA== X-Forwarded-Encrypted: i=1; AJvYcCUkYc2sHKkLp6SFKkZcbJF9rP/ytdWqDhQU4VutILC2IAHKAq6gps0yL36OjhMBYcJmPtL54wqliL2ftbE=@vger.kernel.org X-Gm-Message-State: AOJu0Yyp8PCc7KD0aWnVRdmUbLFzh29mtS7/W51XQLkK1X2cyfqvHt8Y CZ6hs5CEBDNdHjzDqMPUb68zrgGz2PFktkWVC6MN9WCaAdiln2SEevsm8uaU7Q2wdYCl75HOzbd i X-Gm-Gg: ASbGncuMZKAdilDEUBn2w+qcUlgFmdjDykcOSKKO4GSOa2IYwPCDhJwAvw1KdEt0ZSb au/e5Ff19aZmjyQNoKAf1/YN0LOXCmvZM2YNgKnfHhEYQCZB0Yc4TPhKeErqERsjBDSZksZH3ik DbzM5PGDT1DD1g529zWJWXNwA2qxcWZlm3EgbqpVxW3gBr5mwDzy2j4Cx/tjqD9DNCrDLf9q8wW dyApnhkNdoZTaT5wGWPbz9SBMxwyw3SaltxWrPiG6+ScbUeuikyKWVYEJktydpwQFiA9BJasUP0 vCTarI/gsE56g4hRXo2y48OVKYYIvcDjdCM= X-Google-Smtp-Source: AGHT+IFPfkIPZgAxBveKMS+PA1BBUxqCRSJyT3Kkijrlg8CB0K7qQWv3Ia50u+6V1cSdjB6QnqXDeA== X-Received: by 2002:a17:907:9712:b0:ac7:16ef:e994 with SMTP id a640c23a62f3a-acb74e19569mr805571566b.56.1745223070456; Mon, 21 Apr 2025 01:11:10 -0700 (PDT) Received: from localhost ([2001:4091:a245:826e:c0c:4cef:7dd:26bd]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-acb6ec047b3sm474581166b.28.2025.04.21.01.11.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Apr 2025 01:11:10 -0700 (PDT) From: Markus Schneider-Pargmann Date: Mon, 21 Apr 2025 10:10:39 +0200 Subject: [PATCH v7 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: <20250421-topic-mcan-wakeup-source-v6-12-v7-3-1b7b916c9832@baylibre.com> References: <20250421-topic-mcan-wakeup-source-v6-12-v7-0-1b7b916c9832@baylibre.com> In-Reply-To: <20250421-topic-mcan-wakeup-source-v6-12-v7-0-1b7b916c9832@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=3520; i=msp@baylibre.com; h=from:subject:message-id; bh=O3pRsI6gkhJ8yN5yjJrEOMIYhnHfrtxVjzkgA4JG+as=; b=owGbwMvMwCXWejAsc4KoVzDjabUkhgzWv315N/a5f2DO2mBXn+ZYGianXHm2uur42ieah2+ny 1p+1t7aUcrCIMbFICumyNKZGJr2X37nseRFyzbDzGFlAhnCwMUpABP5383I8OMhzx7D6zu4xLZM Pfzi+AFpQenI3R/MVpWxx5339w5PE2T4w9v3J+aO6p8bYvnVUu+ulTyakNljlHhGWWn7We2eL4y LWAA= 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 20f7533ad9e7735013ff000e6f3b11d016f8a09f..20fbef50db20ab5cea5afe4c44f= da8b03e5c8c85 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); @@ -2416,7 +2416,7 @@ struct m_can_classdev *m_can_class_allocate_dev(struc= t device *dev, SET_NETDEV_DEV(net_dev, dev); =20 m_can_of_parse_mram(class_dev, mram_config_vals); -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 e5c162f8c589b2c75c51cd8a994fc93ab507b9dc..5523ad8c9175cacd330a330b0f4= 5d2c6515d11fa 100644 --- a/drivers/net/can/m_can/tcan4x5x-core.c +++ b/drivers/net/can/m_can/tcan4x5x-core.c @@ -401,8 +401,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.49.0 From nobody Sun Dec 14 19:19:35 2025 Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.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 5EAFF21127D for ; Mon, 21 Apr 2025 08:11:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745223075; cv=none; b=B+ccHvM2vXE0mJuYzw6Cwp72WGseuPFjEyAyj5eWtXnvjgpmqpTADhgiEe1rbx0Ln5aru8crGqpCvGY9+9w0QwTHqDjIwWl3JB8c+JCi5atyiFsP8kyncXA4QRn6GChtgHt091AmIOpeh13V6Kh2bz7ku6E+89nPXCyghQjkhhA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745223075; c=relaxed/simple; bh=5wED3naIw2KQXYR5hW7lWQjIghjG5l/KvSlr5KMFYgg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=O2i8KY7fCFsCy5IjtrCLpsNosQ7cJvE08qhELcsZdwO0eNeW/X8J5rM8fss8vtWo6zLD1PCzHPmzOMrDrlexgh17DKie4JDeUq8SdagIAfqMH/g4xR9Ah9Ttboth+M7w5AHWxA0Pcxs64uNDWi8/LQJ99Y2Rvze9L7YzFbU7OfI= 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=NRJkoEJI; arc=none smtp.client-ip=209.85.218.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="NRJkoEJI" Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-abbd96bef64so622746266b.3 for ; Mon, 21 Apr 2025 01:11:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1745223072; x=1745827872; 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=um5ofTGAtJJdiDu6WNPULch/kVh9ObI22iWsBiO2sbQ=; b=NRJkoEJIq2zPtmfg3X1l8geD09kFzfiKlecvA+QBP6pHDpPGjmRTNFLTxOETvRTG3u DNlO1c/RIZdQEnXOg3C/hd9UYhnVGIhVyuvquFPWI191nCxSmR+Us5oLgFQEqd1XNGdk snJYn0OCmimqEw576iWyhSCZo1damGjMG0zkFtOB1qDRRLLdBC8queB28PJUBtG9g3g0 fep0bZx9TzjP3F4Rt7GQvYP9JO0Q3ksdo74YnkdWRicBrH2CYuau9TneBj/i2rW37Mfo gzUr/Wk4MjanPUieFlzCEEO/3x6ZUZcJ3vrvQXSyeeEGs1/eoyThZs2gT00K12ckbJZe WV+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745223072; x=1745827872; 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=um5ofTGAtJJdiDu6WNPULch/kVh9ObI22iWsBiO2sbQ=; b=R6cG3hE8hbZnQzA5SqXwYDZd3zmy0YHK/0l4nc3VomFN/mVdyI5sk5R0Z+0g9/ttEg HybE72+8WCZwSuvO22+60jxiuwXNsh7Ix8bWL4Sx4qpIQTSVP3RJR6AyrUwhwc3c/gh5 GvPy95j7q4M/RW//hog5+BefkaTipypp+/YsPsZRpNyKtN1AHt3kx8PxCE1kVO+e+MfV kPMVQ9Q9TI6aV5VZGYZL81iDKWk/Lk0EkUMPqR9p+IU6dKKa0q7LWU2X6saWMPnx1JDF jHp7kcnpv7ecHEb73cuSck4ko9jfgdTOaprNxb4pm4hffuvynhaV1p+mNM2pOrlBDn0F 1NvA== X-Forwarded-Encrypted: i=1; AJvYcCXo75W3ickcImrhDQqd5je+AvxoO01hF8KPQ46AN6DdwOMqUv2HNrEXf4WCyxy0o9lSJVZCsT+OM+2VvFU=@vger.kernel.org X-Gm-Message-State: AOJu0YzJlqmgvW0GG5EUJbjcoq6vNZwWSP7NnG1GDZQvak5CaAA8ljyi 8WlZ4AIruZxjo4NSWUoLk7+gM0b2jUJLGHeSB48/UZDP3KH5dkpAEpnPwY3ClTE= X-Gm-Gg: ASbGncvxtxmBTv5CTV8XThweszpEMAvFeIdOG0tMypwdhj01NP93Av+yK55qkWiGAby S509L1S9g4vyVhQqyk3BgwaC8xiwKhirXd3FxdBlcMA2BDmFHW5UsSw5uOcO2wLSkH5b7doIZS+ yr11e2hmEvHfhgZ/nb5w0CqbKX48+3J4wggn8QIXVWPF2+o7W+yfGtRCB3S1ImeOFE4wzmkWw9K dhl+dZ8iq7R5XcPXRmF+Pj44FAagnCKFHUBm2thM2cVyuirHedLGazSK1M3m6eG4PF1/Ucjbaq5 63tYarJKaM5zkO6bqEDrYnztiCOynhFUxko= X-Google-Smtp-Source: AGHT+IFvi0kETTffXUifYRaE4aQEbNEHpmLl8aVzHDt4HHvdhtbAnyHG0mrQ9EwkSspilFn+9U8n7Q== X-Received: by 2002:a17:907:1b21:b0:acb:33c6:5c71 with SMTP id a640c23a62f3a-acb74b8189cmr987173866b.29.1745223071717; Mon, 21 Apr 2025 01:11:11 -0700 (PDT) Received: from localhost ([2001:4091:a245:826e:c0c:4cef:7dd:26bd]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-acb6ec0b302sm476492966b.3.2025.04.21.01.11.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Apr 2025 01:11:11 -0700 (PDT) From: Markus Schneider-Pargmann Date: Mon, 21 Apr 2025 10:10:40 +0200 Subject: [PATCH v7 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: <20250421-topic-mcan-wakeup-source-v6-12-v7-4-1b7b916c9832@baylibre.com> References: <20250421-topic-mcan-wakeup-source-v6-12-v7-0-1b7b916c9832@baylibre.com> In-Reply-To: <20250421-topic-mcan-wakeup-source-v6-12-v7-0-1b7b916c9832@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=4086; i=msp@baylibre.com; h=from:subject:message-id; bh=5wED3naIw2KQXYR5hW7lWQjIghjG5l/KvSlr5KMFYgg=; b=owGbwMvMwCXWejAsc4KoVzDjabUkhgzWv5Nrj29xf7z7X7oU5zGh/Z+ePdSfyzJlvb9zYcEhn /S8E5GvO0pZGMS4GGTFFFk6E0PT/svvPJa8aNlmmDmsTCBDGLg4BWAiB90YGV7mp5itPW4w88/q 7Z+X+x7i4HauKDZ5oR0loxtXtPzPDBeG/zGa33K2zXyUoWBjc+vqk627DxRFvXlWv3rzlFM/TTJ +yrICAA== 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 20fbef50db20ab5cea5afe4c44fda8b03e5c8c85..c1c5f8e90d37cde1daa8ab17c2b= e4b8be451dc50 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) { @@ -2417,7 +2477,15 @@ struct m_can_classdev *m_can_class_allocate_dev(stru= ct device *dev, =20 m_can_of_parse_mram(class_dev, mram_config_vals); =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.49.0