From patchwork Thu Mar 29 19:15:21 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thierry Escande X-Patchwork-Id: 132576 Delivered-To: patch@linaro.org Received: by 10.46.84.29 with SMTP id i29csp2140942ljb; Thu, 29 Mar 2018 12:16:49 -0700 (PDT) X-Google-Smtp-Source: AIpwx49BoCxBFoSKdkl46u6Pnz77QWmgsKBDQGWPb2I208H+WcGz/mH/4QNHDgD2ISiC+IwJBq5U X-Received: by 2002:a17:902:2f:: with SMTP id 44-v6mr9718344pla.187.1522351009746; Thu, 29 Mar 2018 12:16:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522351009; cv=none; d=google.com; s=arc-20160816; b=okze9CF6ql3Rv7KnaCCpcl8AmamchfBYt2XkkrASokoUZxXvqc9v3NN4F3SPzUfShh g2MWyw7Z4qetQ9FaNvgeQrNoGqer6ATTsoWxuad+9sCU1g7P21XvrMgDS52NvAvArhm0 Qpbb1fc14Ui9NLEjduZhRE/am4qppBxK1KP1LJ+9gCP9PgSLLQGtdTEoI0RJatyhcPqb iqG2Qcc5Mke4pK1Zt9CQg/2aSgYCBr93Lh0SlQzc3tLEZJXXY1u0PVuWZngvlWL3s2d2 gxfSaNqeWv/XBsBQGHFj26DQ6byPxe+gtRYeyv5P7sqkr2+T+LjasunShCgljdHtI2u+ 5fpA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfert-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=DRaxPIIIjdlfJVMsUyLRIv2Qf+cJkFXQKIcEz4v/AcY=; b=R3gBRYAbYwj1fNaNItKDWEuGkiclJWIAYmeuEPb8p/Dts8UuEPyP1ZttW+W9IKfGMB juPu7GnHVCIk3XK5dCT4RYE33qtemxTNZnuMvA+vn1JIU/ywxKRa7W5egzv6zmKMW734 SKQbnPVAWoLkeE6kog1vNHfuO/ir1t8klzpinQoXSZtanlAvpOwrfgKKd+m50ewGuf4O KY0JG7uQYUNRcC+FUuJspAHvJEZY6eG0N1wMVmqd2Psw1QpGD/gM+7CMEEtYQknVKudE SJmkRafLgvmDrmjEoTmTNvEHY9grpMMoJgikQ8tK8tpqa51ZjQlOHD3VZYATszyR3lVM nwtA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=jDrrn9y2; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h18si4843730pfi.31.2018.03.29.12.16.49; Thu, 29 Mar 2018 12:16:49 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=jDrrn9y2; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752447AbeC2TQq (ORCPT + 29 others); Thu, 29 Mar 2018 15:16:46 -0400 Received: from mail-wr0-f193.google.com ([209.85.128.193]:42861 "EHLO mail-wr0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751210AbeC2TPt (ORCPT ); Thu, 29 Mar 2018 15:15:49 -0400 Received: by mail-wr0-f193.google.com with SMTP id s18so6310323wrg.9 for ; Thu, 29 Mar 2018 12:15:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfert-encoding; bh=DRaxPIIIjdlfJVMsUyLRIv2Qf+cJkFXQKIcEz4v/AcY=; b=jDrrn9y2W1joBv1gA/IWX+Pz38nhXxP34jVfa6pbci3TQDxy3fqO5EkbK7qqpfovZO yWAEueRn4F4iKgoimgdDMCZxk4c2LL9zVB9QyWuT608KbURm0ieF98seZ+mIfhpb4v0l A6PsohAqRwyKGZJm9qmDS+/I8RzCKfgLqE1Xs= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfert-encoding; bh=DRaxPIIIjdlfJVMsUyLRIv2Qf+cJkFXQKIcEz4v/AcY=; b=Xst6DPxMczU4qRH4M5wBWSGSbfhrEBNZQR3jmP5WJ6pQVJzDIG6WateQmirimCibsT r4bsFogkh58mACRXMslAODQFr9XpbXzTFtjlCp1ALbThX6FAxn7NwaJIQGF4wQ+kyJNF ATv8IKVrOUcwTllF5Vz7AdmBGA3RD2YKLV/wA+fsUWCEtSB5lKAb2DOHsG8hUk0Dd5/q VNdaolpqgzGb2F3e9pFd47tCj0yBlhVaqJktWn1enIpj4P0NULxK/aDqxcqdKWysZyjo 5y6XFePOpiJeLoxT8NNdslX7xy2Nvq/8QR1JKRUfIw9k84PPDGvI+jV6dnBkVFa7N+5e tIxQ== X-Gm-Message-State: AElRT7H3wvp1NaPthIup4nHoWzKNrevjWSIGRLD2heJFWYcczNepZ9zK dTRsxSpuDjehk6w/cP4D1qgoZg== X-Received: by 10.223.175.211 with SMTP id y19mr7852389wrd.139.1522350947739; Thu, 29 Mar 2018 12:15:47 -0700 (PDT) Received: from localhost.localdomain (aig34-1-88-167-228-121.fbx.proxad.net. [88.167.228.121]) by smtp.gmail.com with ESMTPSA id b40sm16145099wrb.88.2018.03.29.12.15.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 29 Mar 2018 12:15:47 -0700 (PDT) From: Thierry Escande To: Rob Herring , Andy Gross , Marcel Holtmann , Johan Hedberg , David Brown , Mark Rutland Cc: Andy Shevchenko , Loic Poulain , Bjorn Andersson , Srinivas Kandagatla , linux-bluetooth@vger.kernel.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v7 1/4] arm64: dts: apq8096-db820c: Enable wlan and bt en pins Date: Thu, 29 Mar 2018 21:15:21 +0200 Message-Id: <20180329191524.30225-2-thierry.escande@linaro.org> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180329191524.30225-1-thierry.escande@linaro.org> References: <20180329191524.30225-1-thierry.escande@linaro.org> MIME-Version: 1.0 Content-Transfert-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Srinivas Kandagatla This patch enables regulators and gpios for the Qualcomm QCA6174 BT/WLAN combo controller. Signed-off-by: Srinivas Kandagatla Signed-off-by: Thierry Escande --- v7: - New patch in this patchset .../boot/dts/qcom/apq8096-db820c-pmic-pins.dtsi | 22 +++++++++++++++ arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi | 31 ++++++++++++++++++++++ 2 files changed, 53 insertions(+) -- 2.14.1 diff --git a/arch/arm64/boot/dts/qcom/apq8096-db820c-pmic-pins.dtsi b/arch/arm64/boot/dts/qcom/apq8096-db820c-pmic-pins.dtsi index 59b29ddfb6e9..5d50f45c4df7 100644 --- a/arch/arm64/boot/dts/qcom/apq8096-db820c-pmic-pins.dtsi +++ b/arch/arm64/boot/dts/qcom/apq8096-db820c-pmic-pins.dtsi @@ -14,6 +14,28 @@ }; }; + bt_en_gpios: bt_en_gpios { + pinconf { + pins = "gpio19"; + function = PMIC_GPIO_FUNC_NORMAL; + output-low; + power-source = ; // 1.8V + qcom,drive-strength = ; + bias-pull-down; + }; + }; + + wlan_en_gpios: wlan_en_gpios { + pinconf { + pins = "gpio8"; + function = PMIC_GPIO_FUNC_NORMAL; + output-low; + power-source = ; // 1.8V + qcom,drive-strength = ; + bias-pull-down; + }; + }; + volume_up_gpio: pm8996_gpio2 { pinconf { pins = "gpio2"; diff --git a/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi b/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi index 1c8f1b86472d..ec5e6eee0a7a 100644 --- a/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi +++ b/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi @@ -139,9 +139,40 @@ pinctrl-0 = <&usb2_vbus_det_gpio>; }; + bt_en: bt-en-1-8v { + pinctrl-names = "default"; + pinctrl-0 = <&bt_en_gpios>; + compatible = "regulator-fixed"; + regulator-name = "bt-en-regulator"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + + /* WLAN card specific delay */ + startup-delay-us = <70000>; + enable-active-high; + }; + + wlan_en: wlan-en-1-8v { + pinctrl-names = "default"; + pinctrl-0 = <&wlan_en_gpios>; + compatible = "regulator-fixed"; + regulator-name = "wlan-en-regulator"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + + gpio = <&pm8994_gpios 8 0>; + + /* WLAN card specific delay */ + startup-delay-us = <70000>; + enable-active-high; + }; + agnoc@0 { qcom,pcie@600000 { + status = "okay"; perst-gpio = <&msmgpio 35 GPIO_ACTIVE_LOW>; + vddpe-supply = <&wlan_en>; + vddpe1-supply = <&bt_en>; }; qcom,pcie@608000 { From patchwork Thu Mar 29 19:15:22 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thierry Escande X-Patchwork-Id: 132573 Delivered-To: patch@linaro.org Received: by 10.46.84.29 with SMTP id i29csp2139994ljb; Thu, 29 Mar 2018 12:15:58 -0700 (PDT) X-Google-Smtp-Source: AIpwx49fhlwX/iigV4OwpbyJNmvHNzaPRHfyEAjaOj1X9Kgc4yuw+fLxdVwY+6xlG+u9JwccCPxS X-Received: by 2002:a17:902:7201:: with SMTP id ba1-v6mr9806549plb.0.1522350957929; Thu, 29 Mar 2018 12:15:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522350957; cv=none; d=google.com; s=arc-20160816; b=eDOT64ALNa3ZR8LA6JBxMJseu1V8i96VJZucTDkVVGwustKC7mckdMwCKNm1Rx24hG 7PpZgToYud5bnS2wrkDG+IB+IxvCdin4vGTIQsY7+UghoafUNirDwCjvJF5KIKU461IY 0a3tvssfe8ExswWXrLonSDaMKcHisG0o8d/1MLWuSAUHuwVcIYAgPCekcA96B+kFQ4Ic +a4Ex7NC4DaKmszZX8PDSVF0zs6XkEE90TjNbA2zo6heZ2f96jyXllTiDKhscq/Pm2JS ow2UceHdK3vS8/ASXM3eI1TA5E/juG7bVe5yLYubMzy8VV+Hx7CPbxzbRYFpI+16hdYu gxVA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfert-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=oAcronmriBongbqqiuUihelb4MGGr3MzD+XuyaCGa90=; b=mIoekeDwMACbUVCMuiKBVX6LMSOqvGTsMw8JeUN86sKaQa77ODWIIyx+mJVuaBQaLo Kh+Swzun+UWejmIaiOmLFCJRS19U4E1n934YwF+kuUoooGG2OtfQRSdiwW12WXwbNjss psWrU7lHfW9V5YgZukaUuPNQgmMjOanoUj6oTsEE5zuOGteP2CFmgY8fVFKz6051IxTA 1y2E77QtL9KvVe/3i5NyFNhZYTm7+ChNZzTdd/w11the1C/TmF0bx6RgFWJJAMPoVE9y EJOap24dv0mBazSG9sYoirDfFAEfRvZND3UMWUJsJrNYBLCYtArOEZ9iTTTZhpSR1cCR dyyA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=K65TGKgK; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p13-v6si6639910pll.416.2018.03.29.12.15.57; Thu, 29 Mar 2018 12:15:57 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=K65TGKgK; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752166AbeC2TPy (ORCPT + 29 others); Thu, 29 Mar 2018 15:15:54 -0400 Received: from mail-wr0-f193.google.com ([209.85.128.193]:46411 "EHLO mail-wr0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751932AbeC2TPu (ORCPT ); Thu, 29 Mar 2018 15:15:50 -0400 Received: by mail-wr0-f193.google.com with SMTP id d1so6309630wrj.13 for ; Thu, 29 Mar 2018 12:15:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfert-encoding; bh=oAcronmriBongbqqiuUihelb4MGGr3MzD+XuyaCGa90=; b=K65TGKgK5xRyCsp52A4DIYMpRA2U5jQmqQ9pvXAea6kOEWOzaT5aYRc4woAITobXd6 DyAihh8oifwWgGCJuBIFnVaIbinEQcCGucImhO3bXE914Ty73NQaHCoY3rvuvCGCypqF Kmab8OhOWisNH9mx94WNSduxjPkehkCMM6IhA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfert-encoding; bh=oAcronmriBongbqqiuUihelb4MGGr3MzD+XuyaCGa90=; b=PwXIGayzFLtnfWGTyrhbWVWqPpfwx/UM+8Z7mSlxtEFGiH1EXd+TB1UeVKB3oSKjfb YtbZDminYgLorTeAXhc7MSmn6/6tZQQyvPLPdCc52JhA9fQONLQqO14fV9pRJzCSCE71 zCbpI5YL2WAe1V08hJ0RQJISfQoDh984ZcUq4BYpUbtkam9FhHr2v26V0lJsYX5KaXvM qhaY0wq9UPvvVbOlfhdkG6BdiktN6TtWLaY7ArZyI8AL5d/u64xudHUYrAd0y3VK73+U +i+/2995F8wYOahOGP7rQ2b4n/qa5trG3PA2bJz0dpk/k8aHyTP8jLg0gQ/KENE2jwrW +uCA== X-Gm-Message-State: AElRT7FDx9U1AIy4Uaa3yJyw5lbmtfwzC0BCLpe1BEYhH83KFoo2WGLd 2nYISvdhzsbBD5a74zb1hLrYHg== X-Received: by 10.223.159.79 with SMTP id f15mr7741564wrg.115.1522350949290; Thu, 29 Mar 2018 12:15:49 -0700 (PDT) Received: from localhost.localdomain (aig34-1-88-167-228-121.fbx.proxad.net. [88.167.228.121]) by smtp.gmail.com with ESMTPSA id b40sm16145099wrb.88.2018.03.29.12.15.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 29 Mar 2018 12:15:48 -0700 (PDT) From: Thierry Escande To: Rob Herring , Andy Gross , Marcel Holtmann , Johan Hedberg , David Brown , Mark Rutland Cc: Andy Shevchenko , Loic Poulain , Bjorn Andersson , Srinivas Kandagatla , linux-bluetooth@vger.kernel.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v7 2/4] arm64: dts: apq8096-db820c: enable bluetooth node Date: Thu, 29 Mar 2018 21:15:22 +0200 Message-Id: <20180329191524.30225-3-thierry.escande@linaro.org> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180329191524.30225-1-thierry.escande@linaro.org> References: <20180329191524.30225-1-thierry.escande@linaro.org> MIME-Version: 1.0 Content-Transfert-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add a new serial node for the Qualcomm BT controller QCA6174. This allows automatic probing and hci registration through the serdev framework instead of relying on the userspace helpers. Signed-off-by: Thierry Escande --- v7: - Remove bt-en-active node declared in previous patch v6 - Move gpio properties into pinconf subnode - move pinmux properties into mux and config subnodes v5: - Rename 'bt-disable-n' gpio as 'enable' v4: no change v3: no change v2: - Fix author email arch/arm64/boot/dts/qcom/apq8096-db820c-pins.dtsi | 26 +++++++++++++++++++ .../boot/dts/qcom/apq8096-db820c-pmic-pins.dtsi | 10 ++++++++ arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi | 30 ++++++++++++++++++++++ arch/arm64/boot/dts/qcom/msm8996.dtsi | 10 ++++++++ 4 files changed, 76 insertions(+) -- 2.14.1 diff --git a/arch/arm64/boot/dts/qcom/apq8096-db820c-pins.dtsi b/arch/arm64/boot/dts/qcom/apq8096-db820c-pins.dtsi index 24552f19b3fa..6a573875d45a 100644 --- a/arch/arm64/boot/dts/qcom/apq8096-db820c-pins.dtsi +++ b/arch/arm64/boot/dts/qcom/apq8096-db820c-pins.dtsi @@ -36,4 +36,30 @@ drive-strength = <2>; /* 2 MA */ }; }; + + blsp1_uart1_default: blsp1_uart1_default { + mux { + pins = "gpio41", "gpio42", "gpio43", "gpio44"; + function = "blsp_uart2"; + }; + + config { + pins = "gpio41", "gpio42", "gpio43", "gpio44"; + drive-strength = <16>; + bias-disable; + }; + }; + + blsp1_uart1_sleep: blsp1_uart1_sleep { + mux { + pins = "gpio41", "gpio42", "gpio43", "gpio44"; + function = "gpio"; + }; + + config { + pins = "gpio41", "gpio42", "gpio43", "gpio44"; + drive-strength = <2>; + bias-disable; + }; + }; }; diff --git a/arch/arm64/boot/dts/qcom/apq8096-db820c-pmic-pins.dtsi b/arch/arm64/boot/dts/qcom/apq8096-db820c-pmic-pins.dtsi index 5d50f45c4df7..6167af955659 100644 --- a/arch/arm64/boot/dts/qcom/apq8096-db820c-pmic-pins.dtsi +++ b/arch/arm64/boot/dts/qcom/apq8096-db820c-pmic-pins.dtsi @@ -48,6 +48,16 @@ }; }; + divclk4_pin_a: divclk4 { + pinconf { + pins = "gpio18"; + function = PMIC_GPIO_FUNC_FUNC2; + + bias-disable; + power-source = ; + }; + }; + usb3_vbus_det_gpio: pm8996_gpio22 { pinconf { pins = "gpio22"; diff --git a/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi b/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi index ec5e6eee0a7a..4b8bb026346e 100644 --- a/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi +++ b/arch/arm64/boot/dts/qcom/apq8096-db820c.dtsi @@ -23,6 +23,7 @@ aliases { serial0 = &blsp2_uart1; serial1 = &blsp2_uart2; + serial2 = &blsp1_uart1; i2c0 = &blsp1_i2c2; i2c1 = &blsp2_i2c1; i2c2 = &blsp2_i2c0; @@ -34,7 +35,36 @@ stdout-path = "serial0:115200n8"; }; + clocks { + divclk4: divclk4 { + compatible = "fixed-clock"; + #clock-cells = <0>; + clock-frequency = <32768>; + clock-output-names = "divclk4"; + + pinctrl-names = "default"; + pinctrl-0 = <&divclk4_pin_a>; + }; + }; + soc { + serial@7570000 { + label = "BT-UART"; + status = "okay"; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&blsp1_uart1_default>; + pinctrl-1 = <&blsp1_uart1_sleep>; + + bluetooth { + compatible = "qcom,qca6174-bt"; + + /* bt_disable_n gpio */ + enable-gpios = <&pm8994_gpios 19 GPIO_ACTIVE_HIGH>; + + clocks = <&divclk4>; + }; + }; + serial@75b0000 { label = "LS-UART1"; status = "okay"; diff --git a/arch/arm64/boot/dts/qcom/msm8996.dtsi b/arch/arm64/boot/dts/qcom/msm8996.dtsi index 0a6f7952bbb1..2d54a86a027f 100644 --- a/arch/arm64/boot/dts/qcom/msm8996.dtsi +++ b/arch/arm64/boot/dts/qcom/msm8996.dtsi @@ -408,6 +408,16 @@ #clock-cells = <1>; }; + blsp1_uart1: serial@7570000 { + compatible = "qcom,msm-uartdm-v1.4", "qcom,msm-uartdm"; + reg = <0x07570000 0x1000>; + interrupts = ; + clocks = <&gcc GCC_BLSP1_UART2_APPS_CLK>, + <&gcc GCC_BLSP1_AHB_CLK>; + clock-names = "core", "iface"; + status = "disabled"; + }; + blsp1_spi0: spi@7575000 { compatible = "qcom,spi-qup-v2.2.1"; reg = <0x07575000 0x600>; From patchwork Thu Mar 29 19:15:23 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thierry Escande X-Patchwork-Id: 132575 Delivered-To: patch@linaro.org Received: by 10.46.84.29 with SMTP id i29csp2140599ljb; Thu, 29 Mar 2018 12:16:29 -0700 (PDT) X-Google-Smtp-Source: AIpwx48k/u1xwgkmES5CARW/OcJu2x2PMy2XtjkP59Ijwt2ftmh6Lvc8XOL6ruf8qpC3Uyyq5zbK X-Received: by 10.99.173.7 with SMTP id g7mr6344551pgf.170.1522350989079; Thu, 29 Mar 2018 12:16:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522350989; cv=none; d=google.com; s=arc-20160816; b=gvnnQRicNIBF6+PZCr0iQja2S1IY8zGfsjPd2Zu3ZawBlAvtD2Uw7EFh3nKKCzO9MM gLY6a8WFXJe+1WUKrU0m1yhvU9FGu/LlIFK1D1PW0O4KaTgWctPVt+Yqj/HVS/SX3o4l F1ADIXBdwJZ5N4uCozXDBTf7rDarX2nLbMT9u273LkbFzuSVHj8LxWUTk92I1nKfaIC6 oZVpils8XXUMBLSzBaeeT432K/uvdydgww/OK9uBi14469jGvFQGUa/mGFr0qTdSl3a4 V7SgSAg3pKRPZ8M/7pVBgDCCuXl2iy606OreJ7N+CDAU2GpNGxKOCOrtP9XFVSkZJ7Cc vfOQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfert-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=UFZ3UbTPLodfuLFFeYVino4jl695NijaxawhKcAPH3o=; b=wQbW+zMvWS813Ib3um4x6A/Z0r275pb6ORonYv0XDD44SBECMH5tQxZYaq4+/dgCB9 F0pgTWYOMx5Zd69TYY1jXviPP+GNl2TM9PoZI/aAr9p9Tc+8ZH8L0u/+4P0AvVq09nrL 8voX8hNYUdFYSMvp3rfqpFfVlBncEcure59rssObYfmfb0wv6/51Gfci5a0UQITZ6KzE Zzz0Vv0sJqKS+FhTxa2iNYcpeQVKfvn9hr3kffkvTKFWEk6YSKlC2/omIw/ACfm1MQLm 3dIJ0DuhZ164w3iS9N8PJAmwjYeVOPpPqP9/5xwdyNBWqDezxyVgSjhoYPKIaN3TAl6A o7tQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=gRQqo2mD; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l20si4425279pgc.748.2018.03.29.12.16.28; Thu, 29 Mar 2018 12:16:29 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=gRQqo2mD; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752308AbeC2TQZ (ORCPT + 29 others); Thu, 29 Mar 2018 15:16:25 -0400 Received: from mail-wm0-f65.google.com ([74.125.82.65]:53048 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752058AbeC2TPv (ORCPT ); Thu, 29 Mar 2018 15:15:51 -0400 Received: by mail-wm0-f65.google.com with SMTP id l9so12560094wmh.2 for ; Thu, 29 Mar 2018 12:15:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfert-encoding; bh=UFZ3UbTPLodfuLFFeYVino4jl695NijaxawhKcAPH3o=; b=gRQqo2mD5d7/IINbI54XjbfL1dEDyNbN4UpjyMDTIAKL+W4MHd35SE/VLu4yg+CSlk wyEE11aZe/Se+avO79KV/xl7vwEMBH7mluM+h0Ais+F7FmgNhu0NY+uIVFo2nVMWuwi8 qS2XA1NwzE5TO328CSVb8GdfOFuB8kMdF2ilo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfert-encoding; bh=UFZ3UbTPLodfuLFFeYVino4jl695NijaxawhKcAPH3o=; b=l+reI2Df2hBEhYfNY1HFe3f5QXyeC4Vjng/BHmvX9uRCtprxFtF83HBUT2AF40Me4Q KkDwi8PLedXFAWq+c883s8nomm0GDOxrTr4O+ZTZvaOckNymB2aWPWFWxK4DwAXBBzpU xNV4l6q5LBoYTJvEMmg+pGzrtr3KB+DjeiYROSGMNHjU2tLANy9k9OJDtZFzteMvqcMp Zq3Wa/LB4JpGIsFYpHRuxXzflPKYTdBeEoG0Re/Z/VXs0nKoNogHpyGCkTNv0RMWv8MW +taG1LGRFXx1XR7kSaF6pfO/B8TCEawhcuv90gZ27UORgdn8wvjGrbal83g4eWFv/Mic ekdQ== X-Gm-Message-State: ALQs6tA4syJdhTNQxHLjocsUYCNsT8n4acr3fq5rSmNhwGcXS6AbBfgV J9tBCY0vyxvt9DoX4bvmyUkaIA== X-Received: by 10.28.144.146 with SMTP id s140mr170995wmd.74.1522350950438; Thu, 29 Mar 2018 12:15:50 -0700 (PDT) Received: from localhost.localdomain (aig34-1-88-167-228-121.fbx.proxad.net. [88.167.228.121]) by smtp.gmail.com with ESMTPSA id b40sm16145099wrb.88.2018.03.29.12.15.49 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 29 Mar 2018 12:15:49 -0700 (PDT) From: Thierry Escande To: Rob Herring , Andy Gross , Marcel Holtmann , Johan Hedberg , David Brown , Mark Rutland Cc: Andy Shevchenko , Loic Poulain , Bjorn Andersson , Srinivas Kandagatla , linux-bluetooth@vger.kernel.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v7 3/4] dt-bindings: net: bluetooth: Add qualcomm-bluetooth Date: Thu, 29 Mar 2018 21:15:23 +0200 Message-Id: <20180329191524.30225-4-thierry.escande@linaro.org> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180329191524.30225-1-thierry.escande@linaro.org> References: <20180329191524.30225-1-thierry.escande@linaro.org> MIME-Version: 1.0 Content-Transfert-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add binding document for serial bluetooth chips using Qualcomm protocol. Signed-off-by: Thierry Escande Reviewed-by: Rob Herring --- v7: no change v6: - Remove chip specific pinctrl conf - Move gpio and clocks into optional props section v5: - Rename 'bt-disable-n' gpio as 'enable' v4: - Move bt-disable-n-gpios to required properties section - Add clocks and pinctrl-0 as required properties v3: no change v2: no change .../devicetree/bindings/net/qualcomm-bluetooth.txt | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt -- 2.14.1 diff --git a/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt b/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt new file mode 100644 index 000000000000..0ea18a53cc29 --- /dev/null +++ b/Documentation/devicetree/bindings/net/qualcomm-bluetooth.txt @@ -0,0 +1,30 @@ +Qualcomm Bluetooth Chips +--------------------- + +This documents the binding structure and common properties for serial +attached Qualcomm devices. + +Serial attached Qualcomm devices shall be a child node of the host UART +device the slave device is attached to. + +Required properties: + - compatible: should contain one of the following: + * "qcom,qca6174-bt" + +Optional properties: + - enable-gpios: gpio specifier used to enable chip + - clocks: clock provided to the controller (SUSCLK_32KHZ) + +Example: + +serial@7570000 { + label = "BT-UART"; + status = "okay"; + + bluetooth { + compatible = "qcom,qca6174-bt"; + + enable-gpios = <&pm8994_gpios 19 GPIO_ACTIVE_HIGH>; + clocks = <&divclk4>; + }; +}; From patchwork Thu Mar 29 19:15:24 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thierry Escande X-Patchwork-Id: 132574 Delivered-To: patch@linaro.org Received: by 10.46.84.29 with SMTP id i29csp2140135ljb; Thu, 29 Mar 2018 12:16:05 -0700 (PDT) X-Google-Smtp-Source: AIpwx484oSLVxX3VMZk4skIZ3iP61GwNgJK0UtreaI6WeIdInGx0J4qysXqYW5GMeWgz3T4ead6Y X-Received: by 10.99.120.3 with SMTP id t3mr6314628pgc.56.1522350964989; Thu, 29 Mar 2018 12:16:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522350964; cv=none; d=google.com; s=arc-20160816; b=A9P/KrbGvDx3LvJ/fc4MWekDFdpYtvYFBA/SLw+PKpuZNEVuJzREAd9qkBga9wfhPt 99vAGZQ0ow4OwNhSjd8dyO6Zcb5ZN2DM3joUFAAMRHG1vXKFP46zrDvtgqc7zCKgUAyT +tQbrnx9+Dk9ngesFvkjKq+KB8rq7JgRClrkf5jEBQLsGsrI2ZLrK5+/FIG6/xVOZ0Uw 9Wpa2nUuPaYoVhln94sJTkKD14uuCtOhF1R7MLMzyevIOhlugMtdL0dE+8tM01pauqoZ v1tVQGUSV9M1NI36Z2icwihAu/vfyfv93aiCQ1EnfV/YltsLS8mo7lmm5x5bYqEuOVPm GSLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfert-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=Kn8OgpakPTbzGTgNqoomQPcEFpCsonc/F+jGAS3FAs8=; b=IbFUNKs8sP8QpITc2E+zHIArfnZJgHQsQryRs7IA1c1GO1LraVKL9h5ZkgELe3NgsM SiJd1g1dPYy3gOslm2wJiy6E5R3gmmucpVbX5fMfwud0V4Cpxr4yWrwdQn5Dyzki6rWi yHtWLFy3v7WusqwtaVt5dhZ18fvsZkZM1NclAwKvzhX1S9jnvgW9IGiFYH3CL85hAWpv XATrVELAjRJghh3/cqgRKnODWnF1Ht26/KTf2M6V1Ch5skHviLcwcHlp338DkR4KGyPj wQb1iA/U9pToWLlkq6+cM1VxzZhqNNMR1Pq/ViicxNU4ZA6ejEcC/x2FGJWCqVPKjVvY K8Mg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=RdO+MKXl; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 73si4422974pgg.68.2018.03.29.12.16.04; Thu, 29 Mar 2018 12:16:04 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=RdO+MKXl; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752246AbeC2TQC (ORCPT + 29 others); Thu, 29 Mar 2018 15:16:02 -0400 Received: from mail-wr0-f195.google.com ([209.85.128.195]:35111 "EHLO mail-wr0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751897AbeC2TPx (ORCPT ); Thu, 29 Mar 2018 15:15:53 -0400 Received: by mail-wr0-f195.google.com with SMTP id 80so6345915wrb.2 for ; Thu, 29 Mar 2018 12:15:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfert-encoding; bh=Kn8OgpakPTbzGTgNqoomQPcEFpCsonc/F+jGAS3FAs8=; b=RdO+MKXl9ukIHJLOGb76Ysk7FCJeEbVvenq2MflrpuaicM9kUG9KmVeNOeRl7ZkolB u5l2LU829bQ0VH+vSlrt3o7bTEUk0zi0qEZxB+kWPx0nuqWj1c1yNFDnlSag41on7ABw +tlZ6IcqX+aYbpc5CWwrhPA+qkqjQO1X09Wmk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfert-encoding; bh=Kn8OgpakPTbzGTgNqoomQPcEFpCsonc/F+jGAS3FAs8=; b=GhdoGDU4qHJmo3EEVuMuEMMFAHUyjdfASd2rtJj3WLEeb9FA0ceSyAEUfHQzPpD8dW aS74c3p6TgpxXtiBcNia44HazSldI4aB6KlH7fvbswxtyZ/w5UFGw2NQyKpK4QZFjf8h sWcG8j9VoHLZiAs5uhUtuggJCTTo1DPU6Z3QwtdDHRmG/ZtY+dGswcs5aeumFtRBInPl 82eX6MOu7t3btoa5085cRhBBOKuPJnw+rRyUmPiR9TnQwPSdUHsVP/6ENHbk5v0T75E2 hwbvuy0V5rsFHA51GDBKn12lxxiOex7maq2nMDN4h9mV1ftpyQA3bEiAwrpzxUmtGeLX nwzg== X-Gm-Message-State: AElRT7E8tlz77Vohl75Uha99rb79TM8i+SfNTQEChgkhYSJZ3fktfDqu OYRh9y9yctwn5Wj5szyENXhVDQ== X-Received: by 10.223.184.188 with SMTP id i57mr7400863wrf.105.1522350951710; Thu, 29 Mar 2018 12:15:51 -0700 (PDT) Received: from localhost.localdomain (aig34-1-88-167-228-121.fbx.proxad.net. [88.167.228.121]) by smtp.gmail.com with ESMTPSA id b40sm16145099wrb.88.2018.03.29.12.15.50 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 29 Mar 2018 12:15:51 -0700 (PDT) From: Thierry Escande To: Rob Herring , Andy Gross , Marcel Holtmann , Johan Hedberg , David Brown , Mark Rutland Cc: Andy Shevchenko , Loic Poulain , Bjorn Andersson , Srinivas Kandagatla , linux-bluetooth@vger.kernel.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v7 4/4] Bluetooth: hci_qca: Add serdev support Date: Thu, 29 Mar 2018 21:15:24 +0200 Message-Id: <20180329191524.30225-5-thierry.escande@linaro.org> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20180329191524.30225-1-thierry.escande@linaro.org> References: <20180329191524.30225-1-thierry.escande@linaro.org> MIME-Version: 1.0 Content-Transfert-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add support for Qualcomm serial slave devices. Probe the serial device, retrieve its maximum speed and register a new hci uart device. Signed-off-by: Thierry Escande Reviewed-by: Andy Shevchenko --- v7: no change v6: - Fix gpio name in error message v5: - Use gpio new name 'enable' v4: - Rename divclk4 as susclk (its name in the bt chip) - Use gpiod_set_value_cansleep() - Replace #include with - Restore dependency on BT_HCIUART v3: - Remove redundant call to gpiod_set_value() after devm_gpiod_get() - Check returned values for clk_set_rate() and clk_prepare_enable() - Use clk_disable_unprepare() v2: - Fix author email drivers/bluetooth/Kconfig | 1 + drivers/bluetooth/hci_qca.c | 110 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 109 insertions(+), 2 deletions(-) -- 2.14.1 diff --git a/drivers/bluetooth/Kconfig b/drivers/bluetooth/Kconfig index 07e55cd8f8c8..e0f1a6609b68 100644 --- a/drivers/bluetooth/Kconfig +++ b/drivers/bluetooth/Kconfig @@ -196,6 +196,7 @@ config BT_HCIUART_BCM config BT_HCIUART_QCA bool "Qualcomm Atheros protocol support" depends on BT_HCIUART + depends on BT_HCIUART_SERDEV select BT_HCIUART_H4 select BT_QCA help diff --git a/drivers/bluetooth/hci_qca.c b/drivers/bluetooth/hci_qca.c index 05ec530b8a3a..1afa17ff6303 100644 --- a/drivers/bluetooth/hci_qca.c +++ b/drivers/bluetooth/hci_qca.c @@ -29,7 +29,12 @@ */ #include +#include #include +#include +#include +#include +#include #include #include @@ -50,6 +55,9 @@ #define IBS_TX_IDLE_TIMEOUT_MS 2000 #define BAUDRATE_SETTLE_TIMEOUT_MS 300 +/* susclk rate */ +#define SUSCLK_RATE_32KHZ 32768 + /* HCI_IBS transmit side sleep protocol states */ enum tx_ibs_states { HCI_IBS_TX_ASLEEP, @@ -111,6 +119,12 @@ struct qca_data { u64 votes_off; }; +struct qca_serdev { + struct hci_uart serdev_hu; + struct gpio_desc *bt_en; + struct clk *susclk; +}; + static void __serial_clock_on(struct tty_struct *tty) { /* TODO: Some chipset requires to enable UART clock on client @@ -386,6 +400,7 @@ static void hci_ibs_wake_retrans_timeout(struct timer_list *t) /* Initialize protocol */ static int qca_open(struct hci_uart *hu) { + struct qca_serdev *qcadev; struct qca_data *qca; BT_DBG("hu %p qca_open", hu); @@ -444,6 +459,13 @@ static int qca_open(struct hci_uart *hu) timer_setup(&qca->tx_idle_timer, hci_ibs_tx_idle_timeout, 0); qca->tx_idle_delay = IBS_TX_IDLE_TIMEOUT_MS; + if (hu->serdev) { + serdev_device_open(hu->serdev); + + qcadev = serdev_device_get_drvdata(hu->serdev); + gpiod_set_value_cansleep(qcadev->bt_en, 1); + } + BT_DBG("HCI_UART_QCA open, tx_idle_delay=%u, wake_retrans=%u", qca->tx_idle_delay, qca->wake_retrans); @@ -512,6 +534,7 @@ static int qca_flush(struct hci_uart *hu) /* Close protocol */ static int qca_close(struct hci_uart *hu) { + struct qca_serdev *qcadev; struct qca_data *qca = hu->priv; BT_DBG("hu %p qca close", hu); @@ -525,6 +548,13 @@ static int qca_close(struct hci_uart *hu) destroy_workqueue(qca->workqueue); qca->hu = NULL; + if (hu->serdev) { + serdev_device_close(hu->serdev); + + qcadev = serdev_device_get_drvdata(hu->serdev); + gpiod_set_value_cansleep(qcadev->bt_en, 0); + } + kfree_skb(qca->rx_skb); hu->priv = NULL; @@ -885,6 +915,14 @@ static int qca_set_baudrate(struct hci_dev *hdev, uint8_t baudrate) return 0; } +static inline void host_set_baudrate(struct hci_uart *hu, unsigned int speed) +{ + if (hu->serdev) + serdev_device_set_baudrate(hu->serdev, speed); + else + hci_uart_set_baudrate(hu, speed); +} + static int qca_setup(struct hci_uart *hu) { struct hci_dev *hdev = hu->hdev; @@ -905,7 +943,7 @@ static int qca_setup(struct hci_uart *hu) speed = hu->proto->init_speed; if (speed) - hci_uart_set_baudrate(hu, speed); + host_set_baudrate(hu, speed); /* Setup user speed if needed */ speed = 0; @@ -924,7 +962,7 @@ static int qca_setup(struct hci_uart *hu) ret); return ret; } - hci_uart_set_baudrate(hu, speed); + host_set_baudrate(hu, speed); } /* Setup patch / NVM configurations */ @@ -958,12 +996,80 @@ static struct hci_uart_proto qca_proto = { .dequeue = qca_dequeue, }; +static int qca_serdev_probe(struct serdev_device *serdev) +{ + struct qca_serdev *qcadev; + int err; + + qcadev = devm_kzalloc(&serdev->dev, sizeof(*qcadev), GFP_KERNEL); + if (!qcadev) + return -ENOMEM; + + qcadev->serdev_hu.serdev = serdev; + serdev_device_set_drvdata(serdev, qcadev); + + qcadev->bt_en = devm_gpiod_get(&serdev->dev, "enable", + GPIOD_OUT_LOW); + if (IS_ERR(qcadev->bt_en)) { + dev_err(&serdev->dev, "failed to acquire enable gpio\n"); + return PTR_ERR(qcadev->bt_en); + } + + qcadev->susclk = devm_clk_get(&serdev->dev, NULL); + if (IS_ERR(qcadev->susclk)) { + dev_err(&serdev->dev, "failed to acquire clk\n"); + return PTR_ERR(qcadev->susclk); + } + + err = clk_set_rate(qcadev->susclk, SUSCLK_RATE_32KHZ); + if (err) + return err; + + err = clk_prepare_enable(qcadev->susclk); + if (err) + return err; + + err = hci_uart_register_device(&qcadev->serdev_hu, &qca_proto); + if (err) + clk_disable_unprepare(qcadev->susclk); + + return err; +} + +static void qca_serdev_remove(struct serdev_device *serdev) +{ + struct qca_serdev *qcadev = serdev_device_get_drvdata(serdev); + + hci_uart_unregister_device(&qcadev->serdev_hu); + + clk_disable_unprepare(qcadev->susclk); +} + +static const struct of_device_id qca_bluetooth_of_match[] = { + { .compatible = "qcom,qca6174-bt" }, + { /* sentinel */ } +}; +MODULE_DEVICE_TABLE(of, qca_bluetooth_of_match); + +static struct serdev_device_driver qca_serdev_driver = { + .probe = qca_serdev_probe, + .remove = qca_serdev_remove, + .driver = { + .name = "hci_uart_qca", + .of_match_table = qca_bluetooth_of_match, + }, +}; + int __init qca_init(void) { + serdev_device_driver_register(&qca_serdev_driver); + return hci_uart_register_proto(&qca_proto); } int __exit qca_deinit(void) { + serdev_device_driver_unregister(&qca_serdev_driver); + return hci_uart_unregister_proto(&qca_proto); }