From patchwork Wed Feb 19 09:15:11 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Loic Poulain X-Patchwork-Id: 866888 Received: from mail-wr1-f53.google.com (mail-wr1-f53.google.com [209.85.221.53]) (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 98A1A1DF73A for ; Wed, 19 Feb 2025 09:15:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739956519; cv=none; b=Y0q4jAMvR7l0EJDHYggdeAoh7W0XW5/V3AOkOZDVDZT1RNYWmdXl5lcLD+sb5qzulHVWngukvtkpD9rIu65hnj1cbt9hO/FfNCdWTmYGMMIotGpzEILuY1DcKQw1rwspY/8gzzrCRy4e+VKIjM4vExQRv1TjEjsnaf382tqbyys= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739956519; c=relaxed/simple; bh=H8M+KioVJ28c5tqEeq6oBUoHWGJRZJgMO8fattyEah0=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=MjXlq23MhUcdEu5EtCw2T57sZdrYqu7YD2BfUiJvp5D/urUerXkeTpKUMTF19MAr/98xp4CAtwigPpVHlpy2EkBglS8kV6FVNHOt+pwe4VCaCZMW2vI8Am9DE3eupjnWfJvCzI3/QrIjui36eufqA/Q/2S+Gtb8jyKV4GxbeaNI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=hNti0nv6; arc=none smtp.client-ip=209.85.221.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="hNti0nv6" Received: by mail-wr1-f53.google.com with SMTP id ffacd0b85a97d-38f378498b0so3191647f8f.0 for ; Wed, 19 Feb 2025 01:15:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1739956516; x=1740561316; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=vKcwOmcPKfivUFGu30SDPaYB1K0Ttk6s6NwpxGL2HUg=; b=hNti0nv6rtc/95pjS/R/gQ1FbAyoU67Srw8Hg8bmWFqnbJbBJezbyhB+7qA2NIcT6L s/o4nVlLaUXU01E6AyKFha1FYvvn+sB+VYssUFhESqx08kFi9jdHI0ncbegYe9Ca1VYn W+xOkrIkzzmH9p7xjYeqYKpRXvOY6kv0A0oGwxbU3uTj/fO1XmZ39tYckQ0sCNsqXXQr iy6uWSJxeiqQO/JYDeWHiHbmkB5xtYyN8NG0Ym74EoXOp2Pp2tJyCTEls7tuvPoXRJm4 bPDu+pEAyBw2QabMhaNSyNB8M/Ne0aKgjpMDuLE83dgsilM/dE/J6veNz/zy853/QYgw eYZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739956516; x=1740561316; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=vKcwOmcPKfivUFGu30SDPaYB1K0Ttk6s6NwpxGL2HUg=; b=HRbwwFQp3Ruy1Bijsc+6hoRRJkcbBqtDi+RZCui4KJ8E++cAriL0mFxNYus6kRtlHp fdgpC2a55Ihdr2w47gMJpJASh4rIk7wBD8XPihpVNSYuxsaxsebaq7UXoTZNAporhKTZ WYxzyDAvBqVcd3HUE+yc79Y8q3yc63LH4eJ+DIO2JmJxZiWxGYJStHadEEwXMkzXbNQN UxgtengbFfP2A2GFhbPrOF9XaQ2ul+DKRrPTd+JJpDq7ussgXAN6MDxvk9fGIiVgKwCD 4YoR4tlo4kKKN/yRps0v2ggzbLRk42IhKcp5zOjOTq3JtPolqzhlx6/XkqEMYOzK5SMB Ts+A== X-Gm-Message-State: AOJu0Yx3szbvR9HMymo6gO0Hlq6pdfpWSXrvGkk1u+5Xgn/5EcQfnoNh kwnX3artbSDjeaUlrWWW7IQrGM6v+G4wHp/SgqzMBKA5LjeCfqChFFqqBlvdmOU= X-Gm-Gg: ASbGncv/quBVOcanRQchCyZC90zoXexJ5NB+QPYVTWnxHYmba89KBdXgVNv4vXTU6Z3 qA5cHZxgSpdTEMOnDD9ibmmEiJFAF0r93X+nAWJ6WshumnVwKLhlwvgGfpXFff3d4YxVwAbvq29 cVYY4U1RnVNn895lH+LtvvjXP8fS3/7CEcXNf56bB0fxOQ3oLw/be1XtxW5OPu2ybBL1uJqNOeC TjFmYM6G456ecdg8aa/rNtp3239dK5yGVvMV93kPYcxe1LlHW2dJOjlolhNe96t9Wdjsb7vDg0t GtzLtaWLQJxxtIKMgc8eVf3XkCEzn8z/jA== X-Google-Smtp-Source: AGHT+IETOPciWX74+ZE9Bl6l1lcO3l216e9P8MiGUAdRNpHGDW1StBCSDR5iTiLz9/q2G0qWR+sSbw== X-Received: by 2002:a05:6000:1842:b0:38f:2856:7d9a with SMTP id ffacd0b85a97d-38f58782b96mr2427856f8f.3.1739956515874; Wed, 19 Feb 2025 01:15:15 -0800 (PST) Received: from loic-ThinkPad-T470p.. ([2a01:e0a:82c:5f0:ad62:b2f0:914c:91ae]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43987088ecbsm75404005e9.31.2025.02.19.01.15.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Feb 2025 01:15:15 -0800 (PST) From: Loic Poulain To: marcel@holtmann.org, neeraj.sanjaykale@nxp.com, robh@kernel.org, krzk+dt@kernel.org Cc: linux-bluetooth@vger.kernel.org, devicetree@vger.kernel.org, amitkumar.karwar@nxp.com, Loic Poulain Subject: [PATCH v2 1/2] bluetooth: btnxpuart: Support for controller wakeup gpio config Date: Wed, 19 Feb 2025 10:15:11 +0100 Message-Id: <20250219091512.290231-1-loic.poulain@linaro.org> X-Mailer: git-send-email 2.34.1 Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 When using the out-of-band WAKE_IN and WAKE_OUT pins, we have to tell the firmware which pins to use (from controller point of view). This allows to report remote wakeup support when WAKE_OUT(c2h) is configured. Signed-off-by: Loic Poulain --- v2: - Move pin properties read in ps_setup - Display warning in case of wakein prop without related gpio drivers/bluetooth/btnxpuart.c | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/drivers/bluetooth/btnxpuart.c b/drivers/bluetooth/btnxpuart.c index aa5ec1d444a9..4f2f429c9800 100644 --- a/drivers/bluetooth/btnxpuart.c +++ b/drivers/bluetooth/btnxpuart.c @@ -447,8 +447,14 @@ static int ps_setup(struct hci_dev *hdev) return PTR_ERR(psdata->h2c_ps_gpio); } - if (!psdata->h2c_ps_gpio) + if (device_property_read_u8(&serdev->dev, "nxp,wakein-pin", &psdata->h2c_wakeup_gpio)) { + psdata->h2c_wakeup_gpio = 0xff; /* 0xff: use default pin/gpio */ + } else if (!psdata->h2c_ps_gpio) { + bt_dev_warn(hdev, "nxp,wakein-pin property without device-wakeup GPIO"); psdata->h2c_wakeup_gpio = 0xff; + } + + device_property_read_u8(&serdev->dev, "nxp,wakeout-pin", &psdata->c2h_wakeup_gpio); psdata->hdev = hdev; INIT_WORK(&psdata->work, ps_work_func); @@ -540,9 +546,11 @@ static int send_wakeup_method_cmd(struct hci_dev *hdev, void *data) pcmd.c2h_wakeupmode = psdata->c2h_wakeupmode; pcmd.c2h_wakeup_gpio = psdata->c2h_wakeup_gpio; + pcmd.h2c_wakeup_gpio = 0xff; switch (psdata->h2c_wakeupmode) { case WAKEUP_METHOD_GPIO: pcmd.h2c_wakeupmode = BT_CTRL_WAKEUP_METHOD_GPIO; + pcmd.h2c_wakeup_gpio = psdata->h2c_wakeup_gpio; break; case WAKEUP_METHOD_DTR: pcmd.h2c_wakeupmode = BT_CTRL_WAKEUP_METHOD_DSR; @@ -552,7 +560,6 @@ static int send_wakeup_method_cmd(struct hci_dev *hdev, void *data) pcmd.h2c_wakeupmode = BT_CTRL_WAKEUP_METHOD_BREAK; break; } - pcmd.h2c_wakeup_gpio = 0xff; skb = nxp_drv_send_cmd(hdev, HCI_NXP_WAKEUP_METHOD, sizeof(pcmd), &pcmd); if (IS_ERR(skb)) { @@ -586,8 +593,13 @@ static void ps_init(struct hci_dev *hdev) usleep_range(5000, 10000); psdata->ps_state = PS_STATE_AWAKE; - psdata->c2h_wakeupmode = BT_HOST_WAKEUP_METHOD_NONE; - psdata->c2h_wakeup_gpio = 0xff; + + if (psdata->c2h_wakeup_gpio) { + psdata->c2h_wakeupmode = BT_HOST_WAKEUP_METHOD_GPIO; + } else { + psdata->c2h_wakeupmode = BT_HOST_WAKEUP_METHOD_NONE; + psdata->c2h_wakeup_gpio = 0xff; + } psdata->cur_h2c_wakeupmode = WAKEUP_METHOD_INVALID; if (psdata->h2c_ps_gpio) @@ -1266,6 +1278,17 @@ static int nxp_shutdown(struct hci_dev *hdev) return 0; } +static bool nxp_wakeup(struct hci_dev *hdev) +{ + struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); + struct ps_data *psdata = &nxpdev->psdata; + + if (psdata->c2h_wakeupmode != BT_HOST_WAKEUP_METHOD_NONE) + return true; + + return false; +} + static int btnxpuart_queue_skb(struct hci_dev *hdev, struct sk_buff *skb) { struct btnxpuart_dev *nxpdev = hci_get_drvdata(hdev); @@ -1546,6 +1569,7 @@ static int nxp_serdev_probe(struct serdev_device *serdev) hdev->send = nxp_enqueue; hdev->hw_error = nxp_hw_err; hdev->shutdown = nxp_shutdown; + hdev->wakeup = nxp_wakeup; SET_HCIDEV_DEV(hdev, &serdev->dev); if (hci_register_dev(hdev) < 0) { From patchwork Wed Feb 19 09:15:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Loic Poulain X-Patchwork-Id: 866511 Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.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 D245A1DF754 for ; Wed, 19 Feb 2025 09:15:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739956521; cv=none; b=sONvYPJ3P02FdNbZi7yNE1M6kMFGNAyo4Lw9vJNdN2ohttgVrEegbuJ2Pgz0MgjrWlYSsXkSlOcljmMUPoLQ0NXam+VIg7Z4NwYZNgLznkEmq1p5midTcsOTQpnk9gcLJXyfGnLkPt4ZiLpRaCc+oWAJl69PHZEAH+MyVBQu7zo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739956521; c=relaxed/simple; bh=7M5vaBKRmbFv54lQBepxKee9UxF0v+gnGJ6vjUmU3rE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=h6gti574aKOGOM+nIsIdzp8eP/e6cXNDUVN+dK9PTegU1iuyEGHrLG5wSN5I41RKElcWC1Bz63AeEqPQK2RDF7x2s1mLjwD64CoeD6ABq1n1s2VGj2gC35qNgN5f12C3fBQteGIspI5wYaq0zQnZgKed1uOdY5Rw5k6T3u+A1PM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=eWSU3gOK; arc=none smtp.client-ip=209.85.128.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="eWSU3gOK" Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-4398e3dfc66so22942095e9.0 for ; Wed, 19 Feb 2025 01:15:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1739956518; x=1740561318; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=sHWfwds5aVkw0kQ5g8ONjBeQJWS59dXEyJJMcYY6+5A=; b=eWSU3gOKMxiUQu4FFXo0Lav9y9oV+JQ4Yxxsbk92VP8LqNtYk3WNrLU24kduop5Ifl k/YSyyQazkLeQMWSiISP4exnqtXc05+35wlIRfgBvZqd332eTHd3+kGX7nPqAUqwDVCT gPgiiP/RL+hHxGhIuSuvcAjhR1TmQtwfBMt2eLWQg7SYyF0mTNUELGvy3SFc/TiuZuhD YCj7ZKBKAWczNMuXr4AnfabYoy8iGSRQYx6fWhYVBSAgj1pP3HpoMAVzSMqQvCcEJhbl qKUkgI5rWVf8iO3wsTKGDeycKXtL4KL5Har/py1zDuLNb1MBKaq0fFD1G2WjX+itTQ7q oGmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739956518; x=1740561318; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sHWfwds5aVkw0kQ5g8ONjBeQJWS59dXEyJJMcYY6+5A=; b=SBlG+vY/hz7c9WGBZTRVrTdjST6SrJXWifSfwe6/LYqo35lvfxGPIeVmnIk+ASVbUO yiRCsveeX5QAr/Aisfcna8MYA78H5BwcesSXVezVC4n9ANLdFgNHqf0HUODnq31ExSw7 xYjIvcYwzgDum+NhV1JH8C7OZrgfdZLvLkVYyuERhnRk+LxA90hcAPNII3p4LFtfTnzF hqBSIB0OrYJRAq+5FouPGhamQs6JjpOvyLfrxq3c+0BY4CT3cU21o4oSJEHQXutE+wUA a2e2Cpkm+4JEIl6DviXvL8fPPFVMC1ow6fpn6dcJQ7dQdg8/BmWlZWqEuf4C9LLmDA0N XwUA== X-Gm-Message-State: AOJu0Yxk1x7R4uEwvSenS8cCx+toN9GLe9wzTOF2BtqB1Mux3ofDUqo8 vTzAbUJ+ddVcCSZfVD5T/F8jFhrp3tzHsVvlnnqDR3NEbYAtBFRZC/fASTyoEhE= X-Gm-Gg: ASbGnctMC9pBxdq+4/h2Lw1cNCMU+bJhBFGxV5B+vWDxvxn8thTPyHLWKgY2maowcR2 kJglefA8xoQqJ5ezIiSkYXdtp+lqIuLKRtDa/cqUWbpj6VxZ0Fka9ZCSTOxzfNs5TQmeyHoG24v L29td8R02zgX+KdbgGiUxLyThwHkhSsLGmjTkomGvLGUv6vEZX45SfeXFNz08eO0HxYwMsvmch2 nqQk8zYTNlvZzp2KtO7WbuA5SyVEgwoiU3RdHjYQwbobmfAZnspmS07tgdYHFMvhRL0Ms+paubq cgT3vkznHZPLN+w3igTj5W4yCS1Ig7iVyw== X-Google-Smtp-Source: AGHT+IHmVnWJxCNrFshS3rKCtRUdy5fE100UpPcTP+EPSzVv4YkSljr0sSRgMFyS9Vhd/OYskNUhGw== X-Received: by 2002:a05:600c:3596:b0:439:9496:17df with SMTP id 5b1f17b1804b1-43999da1338mr22734005e9.13.1739956518120; Wed, 19 Feb 2025 01:15:18 -0800 (PST) Received: from loic-ThinkPad-T470p.. ([2a01:e0a:82c:5f0:ad62:b2f0:914c:91ae]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43987088ecbsm75404005e9.31.2025.02.19.01.15.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 19 Feb 2025 01:15:17 -0800 (PST) From: Loic Poulain To: marcel@holtmann.org, neeraj.sanjaykale@nxp.com, robh@kernel.org, krzk+dt@kernel.org Cc: linux-bluetooth@vger.kernel.org, devicetree@vger.kernel.org, amitkumar.karwar@nxp.com, Loic Poulain Subject: [PATCH v2 2/2] dt-bindings: net: bluetooth: nxp: Add wakeup pin properties Date: Wed, 19 Feb 2025 10:15:12 +0100 Message-Id: <20250219091512.290231-2-loic.poulain@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250219091512.290231-1-loic.poulain@linaro.org> References: <20250219091512.290231-1-loic.poulain@linaro.org> Precedence: bulk X-Mailing-List: linux-bluetooth@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 NXP bluetooth controller may have GPIO pins used and routed for `WAKE_IN` and `WAKE_OUT`, such pin info must be known so that the driver is can configure the controller's firmware accordingly. Signed-off-by: Loic Poulain Reviewed-by: Rob Herring (Arm) --- v2: No change .../bindings/net/bluetooth/nxp,88w8987-bt.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Documentation/devicetree/bindings/net/bluetooth/nxp,88w8987-bt.yaml b/Documentation/devicetree/bindings/net/bluetooth/nxp,88w8987-bt.yaml index 0a2d7baf5db3..04f55fac42ce 100644 --- a/Documentation/devicetree/bindings/net/bluetooth/nxp,88w8987-bt.yaml +++ b/Documentation/devicetree/bindings/net/bluetooth/nxp,88w8987-bt.yaml @@ -40,6 +40,16 @@ properties: Host-To-Chip power save mechanism is driven by this GPIO connected to BT_WAKE_IN pin of the NXP chipset. + nxp,wakein-pin: + $ref: /schemas/types.yaml#/definitions/uint8 + description: + The GPIO number of the NXP chipset used for BT_WAKE_IN. + + nxp,wakeout-pin: + $ref: /schemas/types.yaml#/definitions/uint8 + description: + The GPIO number of the NXP chipset used for BT_WAKE_OUT. + required: - compatible @@ -54,5 +64,7 @@ examples: fw-init-baudrate = <3000000>; firmware-name = "uartuart8987_bt_v0.bin"; device-wakeup-gpios = <&gpio 11 GPIO_ACTIVE_HIGH>; + nxp,wakein-pin = /bits/ 8 <18>; + nxp,wakeout-pin = /bits/ 8 <19>; }; };