From nobody Sat Oct 4 03:17:09 2025 Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7AB79308F30 for ; Wed, 20 Aug 2025 12:43:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755693787; cv=none; b=lsMlgsKroWaDYQ/0e3vBI4j2Dopj2H7HEIunGDGp9Z2tVmsG/9v340/JSfgAvTkGcKv6UWDfdS8P9cDSsVhiksvBTs9OrN4LDXs3AHgl5XxDnXkUzfJwun5ySqwiQ8whVVkyU/SVukOkt4tcwXcsNIeTEXvjXYWK6oo47qiXYk0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755693787; c=relaxed/simple; bh=51A7apjZ8IFVa0Yg300u5/+5kMrmxbdazMNe8d87/KY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=S5or64B6iPzOkAAM4KcTOBYy+AOIB5gUS9MJvT5eC9J+KtOWJHHqvSP9QVy1ae2WFyTZtk0Y2DLvd7tfLtff/iV7nl04aY2cGC4TVJNM95TYtPXwWAcQq+EALnfvaoyzceshDObK24A4Ss7qNFxwUC4+hrTg19n3svTDeYQff6k= 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=w86SCndN; arc=none smtp.client-ip=209.85.218.48 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="w86SCndN" Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-afcb7a8dd3dso918040566b.3 for ; Wed, 20 Aug 2025 05:43:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1755693783; x=1756298583; 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=xwZuyqe06pEPgm8WrxHlNtoUHhvQcJ+8KnDBnyp1UJ8=; b=w86SCndNnGmtUMUT0OX250cIf6Moep2rk1xpcBmRY93sCPo7VTnUxn8SsQmFcCP2Vs 0ElgdQ1vROyZCq8USJJJ94DZUsNjuoMdKo6TnDF65Pgsr/ebvmSAa8rOwg1UBC31E5Y5 xqjP2UqQz3UYPdvBs9V3Ye8+cer78JGYvhWseOcrhmNDR4SirMWlfT1WY0kClBEIBg5r cEepb7VPCbRVA/gm+cevR4v8h6LW4uD5BMap4Yi+UvMlXimQYKrKzNeQneRCI6VX0FMc Sqh2COiwjU7yJKWc45ZA2p64cUx8vvddd4XO3l2/weHtf46y37j0hVS5HNTRlLKTXV0u 8c2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755693783; x=1756298583; 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=xwZuyqe06pEPgm8WrxHlNtoUHhvQcJ+8KnDBnyp1UJ8=; b=UnDHcKewA4y/wHHd7BTXYpMYc4Cc0MoEgTyqq7DeC+3MrwdKlG8F1x7NTijlfoagOY utyweKluxZ0jcIRjNODNuy9Ko4c2k1jgsc2qTwHAKrYXmIBCqpKEyaKHkBc+Shivsacf 9dO25lubjmBWlGxdCbkdr2OkFz3hvljruHBpr7VNRQyYr0R9Cf9yqbSTHZpyTfFJbI+i bxOQN4YXe/gwRby+7cSTTpP3BflwytasTtrtcDw/gFiSJ6gR/FzrctI+jJdcL5VeM1P8 1aPvB2kZmXWP1lqSS023uYwL/vsHW3wbfptdCiVjdPdacmEVlQyKz5Y1dEVSOuCqZVy/ nbOQ== X-Forwarded-Encrypted: i=1; AJvYcCX283fYBt2FRH8eLAmtMaJKUnL4dEweFfyxwNZ9SK27k/gQDAougpc0pnQDs+uplugH9ORkVtbUjFluPDY=@vger.kernel.org X-Gm-Message-State: AOJu0Ywqs8B6ocfhGqI75Q4UxBE3J60L2gJEh+kGfBOAGevB1HKgDn5N AftNHrv7TpkfN4IMYC8ztxPZ4HmN19J4GoHCAqbFyX56BpclUbhpzuq6MoWls/YO/m8= X-Gm-Gg: ASbGncs+4iILJpZ26pnA2f2/HarPYXqCEFg96B34nlbkMGiaT0E1kIM/xBpQfosiCsk AuOVCBvPbxJzXBhBFsF2+Zhrjz5zP4XCPyO2NPoxMzuTtUihybWTbBcAUTJTFNYiuBSYfqyDP2/ lcc8OgJSw3vcHBCLFMzMMwtfUXXKuHazFIi0g9PPb83VDghjR1hJY/bYzE5RejScmD8me4n1xW5 6NttRdSHyCbj6Ukfi7Dc6h7Co3RzICiU9Ax6x3AzheolYWyRSEzpl4/S0Z5UNaPxAlYMbGiQNx1 2iLQBvpsIn8vULyFkB1UzcAmEiC4O7phjVk7LY2t8ee0xeEwcacubeXRqFelYtBzJKk7Zf4eAWa dFzbYK5uZ2eUhc0f9UA== X-Google-Smtp-Source: AGHT+IHVxY9C2B9taD88Cxqvj6obkaYcfXI9ph7iwjcVzwEn033IZvRkXZCjUiNo9LHBqDddmiHmgw== X-Received: by 2002:a17:906:c141:b0:af9:8cbf:6053 with SMTP id a640c23a62f3a-afdf0049eeamr202227366b.6.1755693782774; Wed, 20 Aug 2025 05:43:02 -0700 (PDT) Received: from localhost ([2001:4090:a245:849b:bc8d:b969:7631:815]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-afded539d39sm169436366b.110.2025.08.20.05.43.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Aug 2025 05:43:02 -0700 (PDT) From: Markus Schneider-Pargmann Date: Wed, 20 Aug 2025 14:42:25 +0200 Subject: [PATCH v9 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: <20250820-topic-mcan-wakeup-source-v6-12-v9-1-0ac13f2ddd67@baylibre.com> References: <20250820-topic-mcan-wakeup-source-v6-12-v9-0-0ac13f2ddd67@baylibre.com> In-Reply-To: <20250820-topic-mcan-wakeup-source-v6-12-v9-0-0ac13f2ddd67@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=2000; i=msp@baylibre.com; h=from:subject:message-id; bh=51A7apjZ8IFVa0Yg300u5/+5kMrmxbdazMNe8d87/KY=; b=owGbwMvMwCXWejAsc4KoVzDjabUkhoylh/ZKzOsTPc8b8uxn84xzGfvzYm7N2zsp8edhjvUCG cnBW52MOkpZGMS4GGTFFFk6E0PT/svvPJa8aNlmmDmsTCBDGLg4BWAiVtKMDH8Pby569cDFMmKt 22Hbx/uDLP8ujXv4U+T0nv+Gz13nrDnO8E+bkclcS+jC286JkRFx+vM2t2/t+eJz6fN7x4qPHdN 4t3ACAA== 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 Reviewed-by: Kendall Willis --- .../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 c4887522e8fe97c3947357b4dbd4ecf20ee8100a..0e00be18a8be681634f25378bb2= cdef034dc4e6b 100644 --- a/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml +++ b/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml @@ -106,6 +106,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 + - const: sleep + - const: wakeup + power-domains: description: Power domain provider node and an args specifier containing @@ -122,6 +142,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.50.1 From nobody Sat Oct 4 03:17:09 2025 Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.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 C0E5E311C0C for ; Wed, 20 Aug 2025 12:43:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755693787; cv=none; b=Z6b7VzvNFbZAulA+gTcllPIx18hLYwvy6C0VBAaygOvlQ/4Wimxx1jb+Ui6KHuwrYktqiPTwuOj1325wO+fd6MYEY+DHQZZyChRFReV4vHWxqVjm+wFfGpS+ruscjhpPGa0xBiIIKbOPzrxrsOJHGUSi5ZUpJIdtxvgZ4UqNVjk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755693787; 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=buyM9fHVQKx34MmvEx3yYqE5Tzm8LSZuEIe7gC7tynFWq/6mQC1Zy4DrYX9ihkhewl2nSElPg2uWvlkf9So4t2P5bq5VdL4z6xJf2G16S9NJjzXR4wSrLsouTfBSaecNcyR8Wzf8KcM9FQ+y6dJmJldwimkbgIIKbfElGeuN7X8= 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=hkCtMmJz; arc=none smtp.client-ip=209.85.218.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="hkCtMmJz" Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-afcb78f5df4so1063190566b.1 for ; Wed, 20 Aug 2025 05:43:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1755693784; x=1756298584; 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=hkCtMmJz8yvPv573ABp+YnLK2ty+XjI78ruLfih6MaDDRggqw7eor5ZvjiP1UoXS/m 3wtEsSxTsi8EMac3GTI4+f0Exvv8Tr9BoI5Ncn3P1bZANPgD/TJ0lDj6LIHnzGmWszn0 tp6QyZKT70ucq69Az04iLIQ08BV+C4JJRNRqUpCZ9zRB95d1cA+t9a2p3PhOGOHidwex 5ROgBiaYP9VlMmJlxnLKqvTR2/MgtVz2VbtmKkhlIWWl9fegdoDlkNi39toV5frG9bfD Aw1n3PezANTlATAd6Z4CAQbXowxT42QUif23lMb2ZHDXAeMImeEV6aFvnDNZ8q0ahdts 9vaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755693784; x=1756298584; 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=INwmqCGtKflPR4685O+27rDsNDsfvgPBz8w/pamITxT0WTU28dK5uj3ItgU/Xl4Wzk Qa1/svpcKwHSeHQ2uXGB6x7hX33r37gYgDUcY0NQ44di+ayp2TZGdGNUmXuHuyK7grzE GHTrsuH6j/kVVsmXl8OGEzPrFHcAaC7FG15Pne/gPH8XPRu8NcHLSfVy5LDW2H+1PwlG 8hocC0A5EkfRBUU8g9uTAfQP6UgVXwL3zNMvlcHmXB0ZFsmDEOgfGNcclbfcQ+AvHgfQ RkBMvZ8sNZMOztC3yKTV4Ck2hNR9Up1/ctYHpt2v2TGUQti1drWOzc/piYfGY/tzbFVN 1Jdw== X-Forwarded-Encrypted: i=1; AJvYcCV3jO87xpEEy13SzSGFhB77V0WvsitPmNCyvuUx0FsDkw6VtRThVW32fd7lH0VgbsukpP4w3j7Of/DSi0A=@vger.kernel.org X-Gm-Message-State: AOJu0YzCFN/gNWWQOorMOv3PHmVTo73+MJHP1soZgOcF0xcyQJ9zTiyj 2wbaF7YYO7wYAR78r/+OWnAL7R9HsF//zabiYD+EbBPQ29THN3aPa+F1CQv181lJr3g= X-Gm-Gg: ASbGncs5EtPz84mPOqRmga4N0/UsRJjjqHaIpcjORs5MQihmhU0xumvoLEgQq/qQiHO RkjbZokHMsWdaEmjtrCw+22DsEtjRw23Gzbb2bF3JG7X8Ipl3P+bANkTMEmTA8KKJwm5mFwaKym PfVsHH9Whsp1VO4N9EhSQBa17QEH8RVvAuH//WMXxer4usk/cGtVbGrma0Bn8lHuKLLNrRRosxO S8sPx66ukUCUbUmJV+SkOnepm/tzlPlM7F6WmoJTA1E4RrOUiPqFOlluTcwibxdAB1BpwHE9ogc e3Hv+02a+pdNu6B7MHitzxXhLhgUjp6mpPxA6piAFlbe7ggIptA0ofY4ZzZrIzKrO3daVZc92KB lm+w9jurvtPYSzQE3eQ== X-Google-Smtp-Source: AGHT+IFm7jH5BGc6rdlbvbZkPnXZ2grgH+UcbaItSluJX1MzgInudyFqKiuw/HXm6Db74/4zVrXUdQ== X-Received: by 2002:a17:906:4fd1:b0:ae0:ded9:7f31 with SMTP id a640c23a62f3a-afdf0088379mr260077366b.20.1755693783935; Wed, 20 Aug 2025 05:43:03 -0700 (PDT) Received: from localhost ([2001:4090:a245:849b:bc8d:b969:7631:815]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-afded479020sm174592466b.74.2025.08.20.05.43.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Aug 2025 05:43:03 -0700 (PDT) From: Markus Schneider-Pargmann Date: Wed, 20 Aug 2025 14:42:26 +0200 Subject: [PATCH v9 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: <20250820-topic-mcan-wakeup-source-v6-12-v9-2-0ac13f2ddd67@baylibre.com> References: <20250820-topic-mcan-wakeup-source-v6-12-v9-0-0ac13f2ddd67@baylibre.com> In-Reply-To: <20250820-topic-mcan-wakeup-source-v6-12-v9-0-0ac13f2ddd67@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=owGbwMvMwCXWejAsc4KoVzDjabUkhoylhw7XlSiK5HXte7DwRmPdOp/JrYvDE240Tr59ULlth nTxX8vPHaUsDGJcDLJiiiydiaFp/+V3HktetGwzzBxWJpAhDFycAjARLVuG/2m/2XpO7cravWSF jn8b3668xqeZy6dlLrsmE/EzMy+Faz8jw9TdUto9MiyWAhM/FcQkiVoqy5f/TLnvPN9DXnVjlNg JPgA= 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 Reviewed-by: Kendall Willis --- 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 03:17:09 2025 Received: from mail-ed1-f45.google.com (mail-ed1-f45.google.com [209.85.208.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EC2C6305063 for ; Wed, 20 Aug 2025 12:43:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755693789; cv=none; b=GzT2WYbpOJ2hr2R4Ixs1fqZoa9cwFwLpBEwiRvWbTc/TKU+GazEg49DtofPfhJzkpMo99BRni6SOEu9y08rieyfR+acxDIf0kZ5xkxsgcc9Tg2NO51NTsMDhGrsVivgGju0wubc1pGE6FWqOeZRRC29Kakd3Ykzwgx1AyQUMbWI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755693789; c=relaxed/simple; bh=PUGgDDQWFyEN8FapYMcSYXBqOMRdjtFyBA2weB75KGU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Qk1GB57dOrxJcduIQbWaySD060dv+9VSNx2R2dbupdpS5Fs3YGz4qEkknlUoPBlBjIpme4COxFMu6FgjLoNdcmoOyPUeiDC0xEIgqYw6lp/Ug2N3W9Jh77rdTIRS1SIiMK4BVkuuzleN3Zx50KsuktGEH7oIuUMCO/9we+oJGEM= 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=F/YnlXhF; arc=none smtp.client-ip=209.85.208.45 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="F/YnlXhF" Received: by mail-ed1-f45.google.com with SMTP id 4fb4d7f45d1cf-6188b5b1f1cso7516490a12.0 for ; Wed, 20 Aug 2025 05:43:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1755693785; x=1756298585; 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=F/YnlXhFvc5J0443FQq3YcuMFOltY3A85skaAUIEwq8CJKWnVijIWaARaEEkKVLcWe 8cSuqBu4P93EZzI4ZZNogxpJBNUvwDgHG5ZmWjy02YAkYjZroBzN3MRddH77EwZtScB/ qScVunuZsXcrvW1lXQsoG04JaoRzc8OuPtC7fyIKO/33m+iEEkd6qO5AcG4sTjBCjvCQ 4f4I+SuFqhoOB3k+COAGt5lyP+zokzisTWCXd5sato/kP6e9Igoo9bNqZDiiRMXtc53s lTPxJbigGcDNLbsWGiGEHky6KKE10qywXsmREvfG7+CuPkK6oWVh0dgwOVJwi4130BHd fhHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755693785; x=1756298585; 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=KcU4P5aVGnOYe7quH/eKks63qiwnmHk92mmIdeJH7WK67/9RvlroEj4KO3zARwhqjF W9Mk6FwUEVBEtnSt93T/qxKW1ueY37H0xIkTtxWPd1eeWV2Ag/T2TFfJkgybDl0tFtLw WY6QO1SGx5iQcogWw4ahBNG1vTJVuSFAQS+ak+GS5M9bdR/OX2Jwm9q6INYX7AdTU9ax OgTNx0pyXNKBFLpu6l2Fk05ytMKiMtHS+hvKe9xaWhOUVLR8cKTDuUlMhQAlkL9jIqe0 FTmYun7Qp703q7q35W6IqMuWCST+9yfpvRY/TefFl8XA5+mnA9Jf8yMbsUp54mrUBfrX mM9g== X-Forwarded-Encrypted: i=1; AJvYcCVujSNSbhVHtdOd84i0akb6IJURBKJBYqgdO+DFJiVKainzVdHiHTinYsOuMuyV3eKvoH/TGgJCbPaB0Sg=@vger.kernel.org X-Gm-Message-State: AOJu0YwI5U6q1GAL3W8mnA6VhAWuYJEcnmGZSMU/kZQIIsUVWOEU56Pe SsKPmA2SjRtlFmNgCe8E4BxNMzNPNhaA5SCz3A1P58OqLjIMpsHOlUBYiJyPncfZG2M= X-Gm-Gg: ASbGnctagG9rky397Pns6gN+FNipPpK7NXWskcihrer8iHyFNzBhm8Lqfp4QXlAj22m Cuq3dniD5bWqjPiF5cEpMr+wJ+5SNFF01CS3uEzQfegYXu3pWSgcvbFN/nF/m+dwSiH9vRw7cNl ePIdIKN2TXPcfAyp7YyQILCddvZz7C3UUK0y2VnVswd3Jzp7BofmPuuV9n55zW3Kl1/aqBvUZpg bQyIt/D0llu6rUhfPztlw5dcUlnut0j8eXZnSUc1TxHxvo1x3+DjJTaP6rdndPGF9jKDyRgdMCz JmstJRnnfNra+V5k+A//ypPzWA9mORSxx/KKgVl4h/H1MiZ+f2tbm527iWZJWUziwN1uWWs4k6O qnul437uJK/t3hO4+CdXMjQl2/G0W X-Google-Smtp-Source: AGHT+IF/D1na5o3T1o+6/k8oMdlTut6OQFKYUt+9oMli+Ebsak2sybwNmJQKo1CM0+TjjYexm6kMCg== X-Received: by 2002:a17:907:6ea8:b0:af9:2668:4c36 with SMTP id a640c23a62f3a-afdf028af9fmr232646366b.48.1755693785168; Wed, 20 Aug 2025 05:43:05 -0700 (PDT) Received: from localhost ([2001:4090:a245:849b:bc8d:b969:7631:815]) by smtp.gmail.com with UTF8SMTPSA id a640c23a62f3a-afded478feesm171268366b.64.2025.08.20.05.43.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Aug 2025 05:43:04 -0700 (PDT) From: Markus Schneider-Pargmann Date: Wed, 20 Aug 2025 14:42:27 +0200 Subject: [PATCH v9 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: <20250820-topic-mcan-wakeup-source-v6-12-v9-3-0ac13f2ddd67@baylibre.com> References: <20250820-topic-mcan-wakeup-source-v6-12-v9-0-0ac13f2ddd67@baylibre.com> In-Reply-To: <20250820-topic-mcan-wakeup-source-v6-12-v9-0-0ac13f2ddd67@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=owGbwMvMwCXWejAsc4KoVzDjabUkhoylh078CI/9tZR3Ucj6c4ue3471uyK2VH//wxWRBtoR6 x4cT1np0FHKwiDGxSArpsjSmRia9l9+57HkRcs2w8xhZQIZwsDFKQATUWlh+B+x3NldUev2UZ6i m4KfXU2rVijHXtFu88nfrGP8YDL7tQ2MDM847s4p/nx/wmfJJdESc09bKorJWfha/LXd96U4xfR XAzMA 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 Reviewed-by: Dhruva Gole Reviewed-by: Kendall Willis --- 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 03:17:09 2025 Received: from mail-ed1-f45.google.com (mail-ed1-f45.google.com [209.85.208.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0743331AF20 for ; Wed, 20 Aug 2025 12:43:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755693789; cv=none; b=W5qaY0OH2B+6MaG/GpW4Mxxw22MArZ7PrP0IKF2IqVQdbltVmemiwy5tNJiuI86qsGYsZHp5q7kwglkQJ8XvE+bCIefcqzYFanLG5viFaS7XELOe5XQzZCZ1n5tRAUAzlPv63DWjjabEED6ozZiVR8/9JUKyWgJhChGwr5gbG+k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755693789; c=relaxed/simple; bh=TOwm5GeDltyW8g1BjUNaPqKx7lJuDWRSNxQq9ddG4no=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YYasaktfZfLlZyKaSXc5y1kIouR6c1vnyIhRonHcHk/34lDz7/1wdB0afG19IxB3jTMSPCCw4F+x8PxA5aWrDDRwlbRnXfh7L8xKSmv/vAPoZAlXF4o5qCvVhv6Tim8/+xLyyD2wreMUvLNWMZpBmEgFoyp+facRJQ0hW6oSzSg= 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=Ost3O2TR; arc=none smtp.client-ip=209.85.208.45 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="Ost3O2TR" Received: by mail-ed1-f45.google.com with SMTP id 4fb4d7f45d1cf-618b62dbb21so9361512a12.2 for ; Wed, 20 Aug 2025 05:43:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1755693786; x=1756298586; 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=iKnmG36C30GxSH3hoRhxWEid53U24Ul1qCYrbUJ7ElQ=; b=Ost3O2TRpGGBmPMBD198Cn7YK/Si6nJl4lpovW6HKq1EgWja+vtQh+0pNnsokojX9M 7r/jFLs937fTD6hTdWkqG1YTYGAudv7GCh6iGQ8gqfyZlwDqBYvs5n7jo4aqm1sljNbT djSPF3GMd3CPQ0pXl3UQtTfXrf4aLJ8iyx2mRQIeBM1w86wd+W3vTPYih2GLLfVfyOrS maLTOn8EOH36PssYKQe/mTzdNu5OuEqB+KMscANJ0IrFq9griAixu5p8TTvBj1uI/Q8D 98HUMCaT3bEsWGI4e8BWXKhollqqGzcGv3vF9vxAO2l/QsfecDBAr+HzPcrR3RwlYULl wjuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755693786; x=1756298586; 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=iKnmG36C30GxSH3hoRhxWEid53U24Ul1qCYrbUJ7ElQ=; b=uTVTxQ4A7/7isy12umVCyMPI4A3ja7aqXBo7nExQkD6U4KOOwmAQZ53hjQBU7aYNaS IaeT6N0JFs9yEhqGMKYyoiWHVgBT+lTuHZot39/HHsGb8UBAKYpc9gB8Usjh6PCfMM93 ++5iyeVk/w4qJfCPT0wyBonJIhgvGIIs7g6DEDyD8V+7ooOm+Z6n6MpKHumsW2cVkxpY 3yqfmyu1oPbXc10ccHdMSQFx590aFmXviKbWsZKKCGQ20V8lW9LdBf59+oELhhEmiJPi hV+EItvzw9STJq7LZKla+MrEZQ7ZvxMBAOKcMSYnFlo0iHQB9x+WuqByTkG/FSeX3vAs zGbQ== X-Forwarded-Encrypted: i=1; AJvYcCX/QvyKRgBYKprykAGkM7kwrPcVhNpjYLNd7ON46NuQJqekFiEsJnQkKixMmBG/pNDR7M0Sl+P5lRsjyMQ=@vger.kernel.org X-Gm-Message-State: AOJu0YxZzKJoydS7ockVUJMMD2Y/odeKWgqNokzLLRZaKwgX/jwm7fEU PTIJ9iU+fbAOQ29eHJNQ8kGGk+kNVMZye0Y4jv03uLGTc8MuVT7HoaYD7f4UqmklHwE= X-Gm-Gg: ASbGnctp4v1oDifQieNA6Zp8HpuT5IxvWd2U21ZXEQWyMSJMUvn0MtlxdxuDKOXSbDX imfJ2H+hrQlRfHgFHOLK057yBLv/y/Kj+MmIiJybxJ9VyryzMwtdV+O+L6rbBLgYGQjHpZQ7JKT H2yeOCyG+EMgi6/EkUYU6Ept4he76uekcgDxKpEBbsny/LDkWGOtLpCQ1VQbGG3n227Nig5qpNO UGbczu7CHMfqT9W5UcvB/xSF9hrDry2a+G52W3OTFyD6RFj9lxrz8hubfaJRa3jMZxb/qZxrKqi Q93aoSs40vfxvxIpICtsXVkUnt37zS8iKiv6NyI+lxwf+kg31b0LTDNduQ86ks02EkAc5h5wCSq rKazIL0nJEInKerofWg== X-Google-Smtp-Source: AGHT+IGoF4BJJCHM7/WMYV9s2DobB8jP5J4pI3kHVya7qPry9NoCLTUd881tRnbGuOS3zY4hXBMZ5A== X-Received: by 2002:a05:6402:46d4:b0:618:af06:a7ce with SMTP id 4fb4d7f45d1cf-61a9752ba07mr2379696a12.1.1755693786433; Wed, 20 Aug 2025 05:43:06 -0700 (PDT) Received: from localhost ([2001:4090:a245:849b:bc8d:b969:7631:815]) by smtp.gmail.com with UTF8SMTPSA id 4fb4d7f45d1cf-61a756095f1sm3318213a12.22.2025.08.20.05.43.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 Aug 2025 05:43:06 -0700 (PDT) From: Markus Schneider-Pargmann Date: Wed, 20 Aug 2025 14:42:28 +0200 Subject: [PATCH v9 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: <20250820-topic-mcan-wakeup-source-v6-12-v9-4-0ac13f2ddd67@baylibre.com> References: <20250820-topic-mcan-wakeup-source-v6-12-v9-0-0ac13f2ddd67@baylibre.com> In-Reply-To: <20250820-topic-mcan-wakeup-source-v6-12-v9-0-0ac13f2ddd67@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=4131; i=msp@baylibre.com; h=from:subject:message-id; bh=TOwm5GeDltyW8g1BjUNaPqKx7lJuDWRSNxQq9ddG4no=; b=owGbwMvMwCXWejAsc4KoVzDjabUkhoylh86+OiobeGfvDpXjW8R8HoS8fDTRSJrt8aXJbl8jV E1vTy9m7ChlYRDjYpAVU2TpTAxN+y+/81jyomWbYeawMoEMYeDiFICJfM1m+MMbI8x5PbFa4yGH ww15hutqPv4LhBWMFE9MyhdkD+x8dYOR4fDGbQ5dfnVndtYsyj/x9opCB/c1G0W2GdOE1++xN0r 5wAgA 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. Signed-off-by: Markus Schneider-Pargmann --- 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 e08fae5ddf5efa8345670dd50d50954ec5d52b29..a1fa4b2f6b6cc94e5e10259cca5= 3bd931ab238c8 100644 --- a/drivers/net/can/m_can/m_can.c +++ b/drivers/net/can/m_can/m_can.c @@ -2249,7 +2249,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 { @@ -2377,6 +2396,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_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"= ); + } + + return 0; +} + struct m_can_classdev *m_can_class_allocate_dev(struct device *dev, int sizeof_priv) { @@ -2418,7 +2473,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 @@ -2533,7 +2596,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 @@ -2547,7 +2611,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.50.1