From nobody Wed Oct 1 20:31:29 2025 Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.47]) (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 73BCD23E32D for ; Wed, 1 Oct 2025 14:31:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759329077; cv=none; b=Y5PHpbegw4oTJjX9HvOhyq3c4UWDoO+PPfSvpFxqDgCkea7MpjpXUWkz18gp2WXhwsXyNqlBJH1s3QriLha0Bjt0KzQbXltG72nMe6Z0dhwLIWe4IHZfKDT6H1pF5JuRf7lu15ZEDZdcsiklSIKZp79cfYYSlItEVvjhvs4UEN8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759329077; c=relaxed/simple; bh=XWZPUaaF3htAs1jXMpQkvVgHfFhx17l90EvgzHPAih4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ItyTfZQUXpoDezgT6S9/XwTeQisxho3RLl21bEuig2w0PcXWNM4Ah0N7OhXfM2avy4zXVqHavKLDHfa4kkLVAvFT6NPfGkXnKptzurIzA154msAuLknp296VLxbKO7J225nsOY1jNey2IT9+EYHnpogM8r3lUzOMgxBrBgkxGa0= 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=LREd/2vq; arc=none smtp.client-ip=209.85.218.47 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="LREd/2vq" Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-afcb7ae31caso1099536566b.3 for ; Wed, 01 Oct 2025 07:31:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1759329073; x=1759933873; 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=Hm8p+oRUJotaddP1TSvfnFNBE3k3mXNPqR5Ais0Uds8=; b=LREd/2vq9Zl5L/W7CLQYyAd4EVHfcKh+/YsVy+8bHyp0yO5Q6BEjT3YgDUNylJo2JD QbUgqHxFo2GyyzOK9zaem5LTzxD6+h3YhrNh1bO1DKWPyJ66wDoRAxRR4t4Z8wJAl/Xk dC91hwP1T7Igm1eEgRG640dlKJPBrk+zR18BmYdFFlf7gcn5QKK6BU8eOnHbYJXtgaJ9 VEf1pjkIUXILdN0PxX2Q1Z8A84awE1zPz6acfvWWA35Z64BzH6QJKZxoN7NSz5/xFXkh e78g2ESvVZiURDMpqg0m/FC3+BRb7zlU7Eml2ac0a0uOZgtkBYNbT1E1/hbdEyh6GNjU O31A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759329073; x=1759933873; 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=Hm8p+oRUJotaddP1TSvfnFNBE3k3mXNPqR5Ais0Uds8=; b=u6KoP5xywVBq0l9tW356QnPrGCDUnFn+uE3UOciXRcldi3XjhYizXx59XAqFbIyTDP BDg3M7klr0vRVFM6L67/sI08gzm29lktUqIn25jdstoVA3pgGskyHmCOjhDf+KVvFltN 8hOVsim9dEYcP5PDk3x3k5zFjkiOyiWAaXxIhhVEd4dUXJuqRccw1Knu3a/QlOpO5WiK Cs98YU58TuxHxdlfrzYQS1w1PxtI5FwxhYOPXMftunBK3VeSpsg5vG5ECitWfKB7TywM xp6EdenQuNIT/Fcv7/eFtZdsdWePqAq/FcblaIWdb0QgrWqGItkfc1HCg5yyYuX/kgKN 06HQ== X-Forwarded-Encrypted: i=1; AJvYcCV2alBGoos98dBouCkkAStjkfagxo3zvKpQLVufg9B1SfzvPpchLT/ULoHXdFFQ5ndAx/iCgA49++n7Rp4=@vger.kernel.org X-Gm-Message-State: AOJu0Yzmr9PW7KHJaOKaNh8vi5fJ0PTMvny/Ai4FUD/Hs9tX9O1JZIxO QmcNIb9tXan+NVyZ051h8c4Ed4MdmNHsH3HwGv4Ffl08/0Zz1kXVLh8Z0ebbh5kGOVk= X-Gm-Gg: ASbGnctMfYWv32JCdYgQ31Horpvbbm6wo07fUjPwDpsYSkbVUsAx+A7Xrt8uccPjRbq 1coZ528QBvBbwMzNq6Skau7gcss6HrdYQeyGNcJRt1F5kIrvM+e6mS/5Xe/1/1yjCYB5gowKD/K NP+9hGi/GTDCgjns1vSnXt5iHo43Xw8jZIIzzfi+YmUPgOghH+H+Q5DxnrTGgooT1iyNmQTh2hv OvfOfEc7/RafEadU5PTUm2iSz62x4ADlOpAA5wRspv4jtyGW/ugGrUvmTG8JXTnLwwSdczJ85ND 5PnYcJu0/f9/+xH5tbx90UfQkgZAY88taLUv3VP940I1cM/rGSAuihhPBUe+uRbg7OIjwGKX4iI cvukeImHltzdhVKNs2op+gXwm98GnCdRiyhR0F3LIffId X-Google-Smtp-Source: AGHT+IHFmCw9M7RXCZRtcPimiE3xYGWmiFdckmISU5XdmOOsx8oWJtSKmAidkIoaUD91Rq4E5XkMwQ== X-Received: by 2002:a17:907:3d42:b0:b3d:9c3c:9ab6 with SMTP id a640c23a62f3a-b46e6afd22fmr373738766b.29.1759329072722; Wed, 01 Oct 2025 07:31:12 -0700 (PDT) Received: from localhost ([2001:4090:a245:8496:49da:2c07:5e9a:7fb9]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-b3fb818fb90sm607739266b.63.2025.10.01.07.31.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Oct 2025 07:31:12 -0700 (PDT) From: "Markus Schneider-Pargmann (TI.com)" Date: Wed, 01 Oct 2025 16:30:19 +0200 Subject: [PATCH v10 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: <20251001-topic-mcan-wakeup-source-v6-12-v10-1-4ab508ac5d1e@baylibre.com> References: <20251001-topic-mcan-wakeup-source-v6-12-v10-0-4ab508ac5d1e@baylibre.com> In-Reply-To: <20251001-topic-mcan-wakeup-source-v6-12-v10-0-4ab508ac5d1e@baylibre.com> To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Vincent Mailhol Cc: Vishal Mahaveer , Kevin Hilman , Dhruva Gole , Sebin Francis , Kendall Willis , Akashdeep Kaur , Simon Horman , linux-can@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, "Markus Schneider-Pargmann (TI.com)" , Vincent Mailhol X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2028; i=msp@baylibre.com; h=from:subject:message-id; bh=XWZPUaaF3htAs1jXMpQkvVgHfFhx17l90EvgzHPAih4=; b=owGbwMvMwCXWejAsc4KoVzDjabUkhoy71sI/mqZEXFbZ5rHrr8krW/aez89esqRFKG92/HjN8 kSkq314RykLgxgXg6yYIktnYmjaf/mdx5IXLdsMM4eVCWQIAxenAEzknDYjw0abY2oqP/J+sIfH rNbffP4Bg+cyCx9Xy+Ai5p/PS5/ufsHI8P/Li83dL9pSlytNdG22VxX9+IwrJVTlurDx1t9v/7x 8zgQA 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 add the sleep state which is already in use by some devicetrees. Also m_can can be a wakeup-source if capable of wakeup. Signed-off-by: Markus Schneider-Pargmann (TI.com) --- .../devicetree/bindings/net/can/bosch,m_can.yaml | 25 ++++++++++++++++++= ++++ 1 file changed, 25 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 61ef60d8f1c78c40a6c8458ed30b940b1121d83f..2c9d37975bedd652b3060ab11ba= 75c37565edaad 100644 --- a/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml +++ b/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml @@ -109,6 +109,26 @@ properties: maximum: 32 minItems: 1 =20 + pinctrl-0: + description: Default pinctrl state + + pinctrl-1: + description: Can be "sleep" or "wakeup" pinctrl state + + pinctrl-2: + description: Can be "sleep" or "wakeup" pinctrl state + + pinctrl-names: + description: + When present should contain at least "default" describing the defaul= t pin + states. Other states are "sleep" which describes the pinstate when + sleeping and "wakeup" describing the pins if wakeup is enabled. + minItems: 1 + items: + - const: default + - enum: [ sleep, wakeup ] + - const: wakeup + power-domains: description: Power domain provider node and an args specifier containing @@ -125,6 +145,11 @@ 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.51.0 From nobody Wed Oct 1 20:31:29 2025 Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 775C0253B52 for ; Wed, 1 Oct 2025 14:31:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759329079; cv=none; b=WdpR1gi+8wsCvq95DfGMeIcNFCdHUzm+yVLoFJ7DTzNTTImPZB+VCWMXh+x0uRlc6/J7sRRIz3hbTLX1rNUi72TQLNhtlqUan8OQ9izvHh9nKl6WCGKW7m/su4kHz12MuUNZzjk48NCW/mLTSU7tUM4NtuwC+j7CERXbTWGuPbM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759329079; c=relaxed/simple; bh=xZlvLU7Ypb0xKlRYD5iljCSFnDT7FHVy6fNCxwcJyWU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cVLCz8mQF8cat0mec/NZ7JCqctgXGPeHdOnFdU0IHid4i3pNqHcDEWEndCApDn5f9eVSHCXeTeOZz4x4xoxMC/9IQG66R9PrEsrmLxynLIT4TiO+8uFjm1dG9/n3I6RJ4pypX/xwPMh5rwsutKJXX1b7J/I/dER/JGuBpmqwVGc= 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=vXVt2X3a; arc=none smtp.client-ip=209.85.208.50 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="vXVt2X3a" Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-631787faf35so14567781a12.3 for ; Wed, 01 Oct 2025 07:31:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1759329075; x=1759933875; 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=Dzk1cyUo2yEMvFwDWljkPdo7pcoK+QmbShr4jxlb2e4=; b=vXVt2X3aBfV9Sr2VW6jz97BBtD0orWG6kIfmIPHOqrANqwfjgML0CUfVdfzk0kdCxu VO0LTmI5lIUq3lRXgM3FTcK9Zcpibq9tASsF8flKhjEdZNw/tYmXJHn2iNY3PpLxXWt/ 843ICzkhYJ7zL3ywtiIsVLsavec/sVWv5hG4ppt6V9jh5+9Xf4yBuYaPiH9takeEaRxb 9olio9kEO7jK9ZFgMDLdJiy/gNKwUZB4pggDIbxoMGLiNHCMd/38tP7wFgk+x4owvAOV gVK4n64hsjoopuD3eJFzKPURqM8NudgLilvAg9adtql4XB6z7lLjQzllPKEOP3j4NdxD o9Hg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759329075; x=1759933875; 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=Dzk1cyUo2yEMvFwDWljkPdo7pcoK+QmbShr4jxlb2e4=; b=gN5KxYPZINMfs1ZV3t61Tfvu5L83zePH4QQNf3gj28Y3kpYuU6Fketl+ymRVqomY8u r5MUZHjw99e/jdUhInkaWiPbKceNahCjud1mXgQ5NCPILlOMwH9F/WS0+QbVqYZ/18CR JxumPOslxP4tj4FJW+LiLLkezlVF6C9XDaZ9J8OHUkdluYI02LHIzCIgSER7tL5qz7F8 KSviHxqKrnRpJFDQ1PE9q2uKNWafrZuL2KfX+LvjhYdfyexyK2BHKOJRQGXwHOiQr3Ii 093ZUovggnPg8wFutUO4ywbDk0mj5ycoqF5LdCOEp1FaZL8+aAOSEYt+W8P5sxoL8TCR iZkA== X-Forwarded-Encrypted: i=1; AJvYcCX/+A5Pdm0jFlYVxIvXC6S3bEYUdUmOKSTu9kX99/rjJQpfWVK2HFYMju8yzOuh011TDIDG5sFOYSGxJmo=@vger.kernel.org X-Gm-Message-State: AOJu0YyuMxRbj5STsQ9eLQSteHgo2/S6PWpjWN0mtObGKsakqA6U4N4a ozFndwfdrTCStvdTUdVvDpi/SasBSCiH1KCJzcXysWA5yQdukev45X358l4onSut/28= X-Gm-Gg: ASbGncsFglLCC23ogV5ztT+sneU+jsibKIqiN7tT06EmX9GUm4XxobthRVcC2sHUDE1 m1yXMw1HgaVLb4YoCQSqHiPv1+OjSMqqmH0+Gsj6snWY5JMTwDjN8udzPqk2OOYf91nD9LlrorJ Vi9jYxktvL+RNikBsfFCHKyuK2Lljz4NmH8bMwBXG+X0oMj6EH+7py5Ev4Ja7lvQhuHfYZXlS5j pJBA3HswqUG0HF6fYIa0QYUff5GdcazB8F8eSZYToixHOLvlK0GP/kAC0ot1SaLTPiUjupnPkIy JGbbTBNVnSsbap0Het/aX/DEt33H8tsssGMvfPuTdxAiae0Daedl0G9T7zPFqRA3Uiw6BQwuhfT SDcphAewfc8oNzD4gtsy8bGezjzOxpda9bdsyCm9CRVBM X-Google-Smtp-Source: AGHT+IHrAMb+09uZwyMeIOg5Yw3oASNR/LZNf7+KcvjDZ2MgIgL6Lyu/U/SVL3McQ0r9P6GhOXrzLw== X-Received: by 2002:a17:907:94d5:b0:b3e:580a:184f with SMTP id a640c23a62f3a-b46e0cb30f8mr499997966b.4.1759329074660; Wed, 01 Oct 2025 07:31:14 -0700 (PDT) Received: from localhost ([2001:4090:a245:8496:49da:2c07:5e9a:7fb9]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-b3e89655b09sm683210466b.77.2025.10.01.07.31.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Oct 2025 07:31:14 -0700 (PDT) From: "Markus Schneider-Pargmann (TI.com)" Date: Wed, 01 Oct 2025 16:30:20 +0200 Subject: [PATCH v10 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: <20251001-topic-mcan-wakeup-source-v6-12-v10-2-4ab508ac5d1e@baylibre.com> References: <20251001-topic-mcan-wakeup-source-v6-12-v10-0-4ab508ac5d1e@baylibre.com> In-Reply-To: <20251001-topic-mcan-wakeup-source-v6-12-v10-0-4ab508ac5d1e@baylibre.com> To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Vincent Mailhol Cc: Vishal Mahaveer , Kevin Hilman , Dhruva Gole , Sebin Francis , Kendall Willis , Akashdeep Kaur , Simon Horman , linux-can@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, "Markus Schneider-Pargmann (TI.com)" , Vincent Mailhol X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=2895; i=msp@baylibre.com; h=from:subject:message-id; bh=xZlvLU7Ypb0xKlRYD5iljCSFnDT7FHVy6fNCxwcJyWU=; b=owGbwMvMwCXWejAsc4KoVzDjabUkhoy71tJMSUE53iVthy5YThN0+73q8y1GK/H8EwWsX2/cE J3Hv+xeRykLgxgXg6yYIktnYmjaf/mdx5IXLdsMM4eVCWQIAxenAExEbT8jw565j2qrd019MH9N HMuW/luP/1xe0hR8fMvPlNxpS4/PO9DK8D9oLTvLHtYfPJ9NmLNdTmSuqpdg19kkd8HMwOOO0IG 7otwA 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 Reviewed-by: Kendall Willis Signed-off-by: Markus Schneider-Pargmann (TI.com) --- 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 e1d725979685ff90bff9957bcf6193265bfbcb55..e5588e2205797be03090a7317e9= d3518bc09b054 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c @@ -2220,6 +2220,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 | @@ -2229,10 +2259,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) @@ -2359,6 +2393,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.51.0 From nobody Wed Oct 1 20:31:29 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 2B2A825A2DA for ; Wed, 1 Oct 2025 14:31:18 +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=1759329080; cv=none; b=BALiwPOLxvJb8FoBVw+m2faYABu6nLrEVMaBP/m1gSLyAPjUHGRPxLL8M94vRwsJAR+GzFn027LYJz5O9/W6oCNunE4yBJAcMjSnTVe5lXwNTcdd/Pp+bAJy72Emp0NIq6jCFUpOSWasZy86ipHRqt6cLveQqX2UJlsei+Hh3Lc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759329080; c=relaxed/simple; bh=/yHKEt8Rr3If5+tCEsC8wZyogE4OT/kjZ3EpKwOUyqs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IQl12JlvGkbOnHEfDGu/sM2l3Kf7K83Fd9s7Ww2h7uPq3x2smj+wwMRemNMvs1r7nmPZa4urqFIodj5TB14cmj9hGkXWv+j/laMQYQVA3inpbPxQ9qqUhJPa5SU3Rht8HQINkoUL5ZqRPIh++9O7N/FSnSAEaBijh+piz82RCmI= 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=zgpoLfKm; 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="zgpoLfKm" Received: by mail-ed1-f41.google.com with SMTP id 4fb4d7f45d1cf-62fc2d92d34so13205968a12.2 for ; Wed, 01 Oct 2025 07:31:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1759329076; x=1759933876; 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=KdLivDeTnVnUn8n9mNOw+X9zdT6wYP2WdyrL7Td1u1I=; b=zgpoLfKmEYIAU/+0hPxGiBxuoNwqGSviImdC1muzFym6zUgFrYK9+yd4Y6i9n2bOUK rNYNfpu5mnUMXtj2hW0R6sSdIX3AXdtOB9turOUN/Jtxj1kljfioTEdrv/u3Ji+zh93Y bhczpFTJ1u4dUUNYhsO52L6HfaEsMyYJSi4/oMquDiSBqyLaaDoUJVIxydg0cv4TQSrL gQ5gcJhO/ThfE1/qEXIyqZsuHAoGp+9oGgVfmmJVWq7OJT+CohEVYDpgrJkt4r/nAvLS O2kZlwPReGxiBRpf342k/i2/U8o/cybYwJvbeU+S/zuhZje+I8BOScfko+DtEz4R+btS GFQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759329076; x=1759933876; 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=KdLivDeTnVnUn8n9mNOw+X9zdT6wYP2WdyrL7Td1u1I=; b=O2/1LqTkL/WQCokycMJqX7qESHbs16I52uoRu4BIXEy6si0w+4jdmR6SZtUgnbgcgl BuP+5nQRMEeU3ZR/Ou1q+ijrsh3YNkdsCZ5clNZozXFWNVZYKK1Av6Nf+z7wTOwnJA79 8xbSgE/LRYJBBvfGaeW7xg8evRvLcdTBYH9LNkvYzJBdSIwPSUDQpQ1p0d3wcwfUUGBM nV04cdpcA11ixXSmw/hdLcGEYHm2ij33XpnPO4AdZ/pZuIPW/37G4Rrgb6maaOD4wJ5Y YE40/xD8I15XF5CgwgAwwttfL6vssL+ydlT9yFn/tw2omNh+F0oPEDemlbATxwZ0lGjf wsyg== X-Forwarded-Encrypted: i=1; AJvYcCXQznl3FAGY9TZAzLWnrzaWc/nZ8+ZAS6VTx/jQey/RWpkWr9nH0aPk9hK1Pg7eSQ11IKbj519PsbIB434=@vger.kernel.org X-Gm-Message-State: AOJu0YzoUSbxqbxyao00EWvnDo2Hx2FWqiQybysH14G9J5PWljfBmnFe KHTcuZeTTT93JmOBSlXthWT16wah36oTGRTXIrtLk9Om+c8AUr0yQCocj7aYHu5bwNy0NZ8zGlo 1hM9UFGo= X-Gm-Gg: ASbGncskIokvrCQn4nVyp8hWvCUr19XhUCWeXCGu7jnFoUKhj9yqW9R/KmFFrqpaJR6 G5ZuBJTd6z/GM4OmKlC3BBleTJ670kcksIB2cE8Xf6Y4+qIAepeJlNpJWAe68UFpyoidHtroxzE 7eKkCg3cTETbp0JiLwamaFMOIsxXCQpLp+XUP/ayaYJlneGCzx6Nei/4AzslzpYAfpjv/0d71Ef /4yUCNE5V6tOeJkRvKW3f/C6mnNUk7SgsrVuMX7XYh4DfqVRjDgDp+2jqt6OB2/Hb5Fy8tn8kij CHauQmbqMxrT4t86bXSPd48xomGkcYOio5LP7tz4NzZWXEzsjcnwxg01+3k9NNHlJLhoTPNARdn HFFpQ5UMsXG2mcRiCf5edR5KpbejQ3e0ci29Q4H0H7aJp X-Google-Smtp-Source: AGHT+IG6BwWH7BIiNil/oxI6lXTRQcMIxSU1UVN3zv7lET+I9q0q8YQGGQOkk3j2gMWSrAXuAlej1Q== X-Received: by 2002:a05:6402:5246:b0:62f:a3ae:ff0d with SMTP id 4fb4d7f45d1cf-63678c052aemr4537082a12.14.1759329076458; Wed, 01 Oct 2025 07:31:16 -0700 (PDT) Received: from localhost ([2001:4090:a245:8496:49da:2c07:5e9a:7fb9]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-634a3339b63sm11684228a12.0.2025.10.01.07.31.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Oct 2025 07:31:15 -0700 (PDT) From: "Markus Schneider-Pargmann (TI.com)" Date: Wed, 01 Oct 2025 16:30:21 +0200 Subject: [PATCH v10 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: <20251001-topic-mcan-wakeup-source-v6-12-v10-3-4ab508ac5d1e@baylibre.com> References: <20251001-topic-mcan-wakeup-source-v6-12-v10-0-4ab508ac5d1e@baylibre.com> In-Reply-To: <20251001-topic-mcan-wakeup-source-v6-12-v10-0-4ab508ac5d1e@baylibre.com> To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Vincent Mailhol Cc: Vishal Mahaveer , Kevin Hilman , Dhruva Gole , Sebin Francis , Kendall Willis , Akashdeep Kaur , Simon Horman , linux-can@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, "Markus Schneider-Pargmann (TI.com)" , Vincent Mailhol X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3638; i=msp@baylibre.com; h=from:subject:message-id; bh=/yHKEt8Rr3If5+tCEsC8wZyogE4OT/kjZ3EpKwOUyqs=; b=owGbwMvMwCXWejAsc4KoVzDjabUkhoy71oqKH13SVljILTb0bGvbWP3z7s2Ijpuxs2aW2vLH3 977Mu97RykLgxgXg6yYIktnYmjaf/mdx5IXLdsMM4eVCWQIAxenAEzkmhvDP9vj0xeli9Q+e3xk asSsHvc135Zkt7m7eBdsn5fW58n28AfD/7y003VaTWxPnjasL/evTis6r3nSTEl2DdPj5VcXNHz 3ZQQA 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 Reviewed-by: Dhruva Gole Reviewed-by: Kendall Willis Signed-off-by: Markus Schneider-Pargmann (TI.com) --- 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 e5588e2205797be03090a7317e9d3518bc09b054..835b03db1003db6ffa21044ac75= 6676fb193f64d 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c @@ -2390,7 +2390,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")) @@ -2405,7 +2405,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); @@ -2415,7 +2415,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.51.0 From nobody Wed Oct 1 20:31:29 2025 Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.42]) (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 AD072263C8F for ; Wed, 1 Oct 2025 14:31:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759329081; cv=none; b=R5Cuj7DgIEJEZdnumoKJW/FUrYhCnZCwG/RPfPagwhu0OoCSiddZGeB1b4S1p6HMILrUtlL7x8A3B9eUBse5I+cHnKB/qKdB7BgOEMMmbGsq/lxxdS2lTstkFwAWpQXK8etjd8VZB5jNIcGsVEc5kYtc60UVMEl2JOFmCtCJ+AA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1759329081; c=relaxed/simple; bh=dGNKUYyd1GcPkcAeE2bAQ6pVMh8WKK5GW2+M2rPmnUY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UjwNk+AgqjvWueOgIlr3OvL4PtP2VcC8rOVXX8XyEYxAXhDwoZ8/Vrj9Qm/kLZanTzKwOQkxF8Txl0uEJzyz4MFCRc57rEcG4HMcwrDrECoZ7W9/dg1wnHVscFbK0jJAKefVQ1ZvXZxppTCU1KxAiJA8oW69XHM+smrNR7081WI= 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=bMFxxVxV; arc=none smtp.client-ip=209.85.218.42 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="bMFxxVxV" Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-b3d50882cc2so729533666b.2 for ; Wed, 01 Oct 2025 07:31:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1759329078; x=1759933878; 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=1jREFPccbCelJ72h80iGG7hSrznfTVGMEZeaHF1+Ijw=; b=bMFxxVxVHJ9a1tjRfF5Z0wbyhuTt/SZzezx4TKS5cfUrGJpwrOw3N4+GTuOeqiUAR5 fj3w1F+zWG3qgPneGujKS2hg7w5GRp8H7KuuqPVaV1ExL09ASkZ0x4HCFbagXe+S+iH+ rIW0MLcC9dSgndA+ySfpUZ7JH/mVX1HNGUiGMCdO0oS3Z1Mmtvq8iwfqJHa2d/xg+bHz ZfX5D8yzghb9eV1Wq2XJVLSkO54rbdMknFJdQVdylzIJMn8MVjRX0COZ+Wt8Dhk03GWr aP2gaehL00aV/pl9uCjKaqfk4wi50wEF6M5dTAZ1ZqyFLwMs8hWRreRVMe3qKlkojdk4 mq9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759329078; x=1759933878; 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=1jREFPccbCelJ72h80iGG7hSrznfTVGMEZeaHF1+Ijw=; b=Qb152ITUhmTW/gP71fVtdwCB/y9suYGVkkyqgd1LhdNXWMKf18oiRyva2TaJkuHG7F 6P5LPKVIWnJDW7/JqFh6cPawQkB2jtY2Ejhbg/MlM8dI1u0kcT8vgM5Qt3Xk8DNa6zVV OgcWmt+AteU9zm8u41/LI6/Pky+J2Rm90KjwWMqaqRV1GFIsmmpgNuu4nNw2xie0cTb6 LU5mh5xFOaYuQZ75b6xuIDdWMtCQjJzvqfVGVZMkessWNEQzn7z1KtfP0nZCcq9pztyq ozcGegx7dZtZf+LymPoyNRhEcOcxyN9ATZk9ca0MeR5qPh+k8/dmeK0AdsJfh9Yu4ApL Xd6w== X-Forwarded-Encrypted: i=1; AJvYcCWtgTGLuWbRMBf0XOAaG0Dkyo/tbkjJj62dfdV87qv6XLB8rM7Nl6OE77xtZX7KU+D2GNkixJFdMCbcHYs=@vger.kernel.org X-Gm-Message-State: AOJu0YzJap+drWXbCz83HvImUgdqqpSDMvFuFor3be0/iutZ9NAMhZKv wQcloxoSWA7NZdfbnlaq3xKPU/8ecC12Ma2qCPP/Na4fZYG9LzmU34CgqypVS08pNu4= X-Gm-Gg: ASbGnct1o8kvn5JydZ2jCCDA9yb6IjPfpv+hHDgHY0FF4g1SKyZifSUCJS5vWCGARO7 fvgmVzkt/CkUYj1y7iRMLiaPlInlwt3aYnnfmifTtNfrwa1ym5S/gjuHweuf32epK0PUv3UokfO wPSJ2JHf1+Xx+3GdTCQ628m1FwWnlqwtuttmR7FbS+ngIfKk3JSSkqu786KL4nUbQUyKHtXl2Xb 1sEsLSO93Tk4RoANfTwAGsQYaz78yVzuubceG6vLJydBsVeHBTqMOmA595pc4pZ6pbTSmHYLHY0 cuXa8VC6X/INtOcb9MP+sguaaHggAtPt4D6RjoQk99qdds/FXYMxYry19SdQfszyv7IlyZZQRQF Mm/iTwGIaFTpWNUMXbH/LbG3Hnt8cK/61br2xdvz7GNRg X-Google-Smtp-Source: AGHT+IHZXKxH7sl9HXx/f6ZsQ8CTEdKqXA1aGGa4F13HSaz/0//WfPjylBTEEEW/DaVIOAGT2bHTxQ== X-Received: by 2002:a17:907:9485:b0:b3d:98fa:b3fa with SMTP id a640c23a62f3a-b46e8f7ddbcmr416304066b.50.1759329077998; Wed, 01 Oct 2025 07:31:17 -0700 (PDT) Received: from localhost ([2001:4090:a245:8496:49da:2c07:5e9a:7fb9]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-b353e5d0526sm1391484766b.12.2025.10.01.07.31.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Oct 2025 07:31:17 -0700 (PDT) From: "Markus Schneider-Pargmann (TI.com)" Date: Wed, 01 Oct 2025 16:30:22 +0200 Subject: [PATCH v10 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: <20251001-topic-mcan-wakeup-source-v6-12-v10-4-4ab508ac5d1e@baylibre.com> References: <20251001-topic-mcan-wakeup-source-v6-12-v10-0-4ab508ac5d1e@baylibre.com> In-Reply-To: <20251001-topic-mcan-wakeup-source-v6-12-v10-0-4ab508ac5d1e@baylibre.com> To: Chandrasekar Ramakrishnan , Marc Kleine-Budde , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Vincent Mailhol Cc: Vishal Mahaveer , Kevin Hilman , Dhruva Gole , Sebin Francis , Kendall Willis , Akashdeep Kaur , Simon Horman , linux-can@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, "Markus Schneider-Pargmann (TI.com)" , Vincent Mailhol X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=4129; i=msp@baylibre.com; h=from:subject:message-id; bh=dGNKUYyd1GcPkcAeE2bAQ6pVMh8WKK5GW2+M2rPmnUY=; b=owGbwMvMwCXWejAsc4KoVzDjabUkhoy71upMVceUjrXJuti1zW7023yw9Lb/0XWOnIfi5ny9G RxttkSso5SFQYyLQVZMkaUzMTTtv/zOY8mLlm2GmcPKBDKEgYtTACZy9wTD/2CtnLQ35+JZ2d6y pxivP3ck5+6peKkJiv8WnDw3+XuYjB/D/+qVFlsi3ffr9Dy07uv93KUXP3F5pJN+bNeC8rWGQjU mDAA= X-Developer-Key: i=msp@baylibre.com; a=openpgp; fpr=BADD88DB889FDC3E8A3D5FE612FA6A01E0A45B41 TI AM62x SoC requires a wakeup flag being set in pinctrl when mcan pins act as a wakeup source. Add support to select the wakeup state if WOL is enabled. Signed-off-by: Markus Schneider-Pargmann (TI.com) --- drivers/net/can/m_can/m_can.c | 69 +++++++++++++++++++++++++++++++++++++++= ++-- drivers/net/can/m_can/m_can.h | 3 ++ 2 files changed, 70 insertions(+), 2 deletions(-) diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c index 835b03db1003db6ffa21044ac756676fb193f64d..beb79403611b61d0643da960dfe= 5301e9dba579b 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c @@ -2247,7 +2247,26 @@ static int m_can_set_wol(struct net_device *dev, str= uct ethtool_wolinfo *wol) return ret; } =20 + if (!IS_ERR_OR_NULL(cdev->pinctrl_state_wakeup)) { + if (wol_enable) + ret =3D pinctrl_select_state(cdev->pinctrl, cdev->pinctrl_state_wakeup); + else + ret =3D pinctrl_pm_select_default_state(cdev->dev); + + 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 { @@ -2375,6 +2394,42 @@ int m_can_class_get_clocks(struct m_can_classdev *cd= ev) } EXPORT_SYMBOL_GPL(m_can_class_get_clocks); =20 +static bool m_can_class_wakeup_pinctrl_enabled(struct m_can_classdev *clas= s_dev) +{ + return device_may_wakeup(class_dev->dev) && class_dev->pinctrl_state_wake= up; +} + +static int m_can_class_parse_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"= ); + } + + return 0; +} + struct m_can_classdev *m_can_class_allocate_dev(struct device *dev, int sizeof_priv) { @@ -2416,7 +2471,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_parse_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 @@ -2531,7 +2594,8 @@ int m_can_class_suspend(struct device *dev) m_can_clk_stop(cdev); } =20 - pinctrl_pm_select_sleep_state(dev); + if (!m_can_class_wakeup_pinctrl_enabled(cdev)) + pinctrl_pm_select_sleep_state(dev); =20 cdev->can.state =3D CAN_STATE_SLEEPING; =20 @@ -2545,7 +2609,8 @@ int m_can_class_resume(struct device *dev) struct net_device *ndev =3D cdev->net; int ret =3D 0; =20 - pinctrl_pm_select_default_state(dev); + if (!m_can_class_wakeup_pinctrl_enabled(cdev)) + pinctrl_pm_select_default_state(dev); =20 cdev->can.state =3D CAN_STATE_ERROR_ACTIVE; =20 diff --git a/drivers/net/can/m_can/m_can.h b/drivers/net/can/m_can/m_can.h index bd4746c63af3f0a032910644dfd48a9ebb3a6168..583c7f1d005d61b3fc858769738= 8522993ff11a8 100644 --- a/drivers/net/can/m_can/m_can.h +++ b/drivers/net/can/m_can/m_can.h @@ -128,6 +128,9 @@ struct m_can_classdev { struct mram_cfg mcfg[MRAM_CFG_NUM]; =20 struct hrtimer hrtimer; + + struct pinctrl *pinctrl; + 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.51.0