Search Linux Wireless

Re: [PATCH v3 4/5] wifi: brcmfmac: Add optional lpo clock enable support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Am 30.06.24 um 09:36 schrieb Jacobe Zang:
WiFi modules often require 32kHz clock to function. Add support to
enable the clock to PCIe driver.
the low power clock is independent from the host interface like PCIe. So
the clock handling should move to the common code. Sorry, not i cannot
give a good suggestion, what's the best place for this.

Co-developed-by: Ondrej Jirman <megi@xxxxxx>
Signed-off-by: Ondrej Jirman <megi@xxxxxx>
Signed-off-by: Jacobe Zang <jacobe.zang@xxxxxxxxxx>
---
  .../net/wireless/broadcom/brcm80211/brcmfmac/pcie.c    | 10 ++++++++++
  1 file changed, 10 insertions(+)

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
index 06698a714b523..e84f562fc91b8 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
@@ -3,6 +3,7 @@
   * Copyright (c) 2014 Broadcom Corporation
   */

+#include <linux/clk.h>
  #include <linux/kernel.h>
  #include <linux/module.h>
  #include <linux/firmware.h>
@@ -2411,6 +2412,7 @@ brcmf_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *id)
  	struct brcmf_pciedev *pcie_bus_dev;
  	struct brcmf_core *core;
  	struct brcmf_bus *bus;
+	struct clk *clk;

  	if (!id) {
  		id = pci_match_id(brcmf_pcie_devid_table, pdev);
@@ -2422,6 +2424,14 @@ brcmf_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *id)

  	brcmf_dbg(PCIE, "Enter %x:%x\n", pdev->vendor, pdev->device);

+	clk = devm_clk_get_optional_enabled(&pdev->dev, "lpo");
+	if (IS_ERR(clk))
+		return PTR_ERR(clk);
+	if (clk) {
+		brcmf_dbg(PCIE, "enabling 32kHz clock\n", pdev->vendor, pdev->device);
+		clk_set_rate(clk, 32768);
+	}
+
  	ret = -ENOMEM;
  	devinfo = kzalloc(sizeof(*devinfo), GFP_KERNEL);
  	if (devinfo == NULL)






[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux