* [PATCH v3 0/2] ath10k: device tree support
@ 2014-11-27 12:00 Kalle Valo
2014-11-27 12:00 ` [PATCH v3 1/2] dt: bindings: add ath10k wireless device Kalle Valo
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Kalle Valo @ 2014-11-27 12:00 UTC (permalink / raw)
To: ath10k; +Cc: devicetree-discuss, linux-wireless, toshik
Hi,
here's ath10k device tree support which Toshi and me have been working
on. Please review.
Device tree maintainers: please review the bindings document
carefully, this is the first time I have written one.
v3:
* add a debug message to ath10k
* write bindings file
* use ar->dev.of_node instead of pci_device_to_OF_node()
v2:
* fixed a bug that returns an uninitialized value if the node is not
found
---
Kalle Valo (1):
dt: bindings: add ath10k wireless device
Toshi Kikuchi (1):
ath10k: read calibration data from Device Tree
.../bindings/net/wireless/qcom,ath10k.txt | 30 +++++++++
drivers/net/wireless/ath/ath10k/core.c | 70 ++++++++++++++++++++
drivers/net/wireless/ath/ath10k/core.h | 3 +
3 files changed, 102 insertions(+), 1 deletion(-)
create mode 100644 Documentation/devicetree/bindings/net/wireless/qcom,ath10k.txt
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v3 1/2] dt: bindings: add ath10k wireless device
2014-11-27 12:00 [PATCH v3 0/2] ath10k: device tree support Kalle Valo
@ 2014-11-27 12:00 ` Kalle Valo
2014-11-27 12:00 ` [PATCH v3 2/2] ath10k: read calibration data from Device Tree Kalle Valo
2014-11-27 12:04 ` [PATCH v3 0/2] ath10k: device tree support Kalle Valo
2 siblings, 0 replies; 4+ messages in thread
From: Kalle Valo @ 2014-11-27 12:00 UTC (permalink / raw)
To: ath10k; +Cc: devicetree-discuss, linux-wireless, toshik
Document how calibration data can be provided to ath10k via Device Tree.
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
---
.../bindings/net/wireless/qcom,ath10k.txt | 30 ++++++++++++++++++++
1 file changed, 30 insertions(+)
create mode 100644 Documentation/devicetree/bindings/net/wireless/qcom,ath10k.txt
diff --git a/Documentation/devicetree/bindings/net/wireless/qcom,ath10k.txt b/Documentation/devicetree/bindings/net/wireless/qcom,ath10k.txt
new file mode 100644
index 000000000000..edefc26c6204
--- /dev/null
+++ b/Documentation/devicetree/bindings/net/wireless/qcom,ath10k.txt
@@ -0,0 +1,30 @@
+* Qualcomm Atheros ath10k wireless devices
+
+For ath10k devices the calibration data can be provided through Device
+Tree. The node is a child node of the PCI controller.
+
+Required properties:
+-compatible : Should be "qcom,ath10k"
+
+Optional properties:
+- qcom,ath10k-calibration-data : calibration data as an array, the
+ length can vary between hw versions
+
+
+Example:
+
+pci {
+ pcie@0 {
+ reg = <0 0 0 0 0>;
+ #interrupt-cells = <1>;
+ #size-cells = <2>;
+ #address-cells = <3>;
+ device_type = "pci";
+
+ ath10k@0,0 {
+ reg = <0 0 0 0 0>;
+ device_type = "pci";
+ qcom,ath10k-calibration-data = [ 01 02 03 ... ];
+ };
+ };
+};
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v3 2/2] ath10k: read calibration data from Device Tree
2014-11-27 12:00 [PATCH v3 0/2] ath10k: device tree support Kalle Valo
2014-11-27 12:00 ` [PATCH v3 1/2] dt: bindings: add ath10k wireless device Kalle Valo
@ 2014-11-27 12:00 ` Kalle Valo
2014-11-27 12:04 ` [PATCH v3 0/2] ath10k: device tree support Kalle Valo
2 siblings, 0 replies; 4+ messages in thread
From: Kalle Valo @ 2014-11-27 12:00 UTC (permalink / raw)
To: ath10k; +Cc: devicetree-discuss, linux-wireless, toshik
From: Toshi Kikuchi <toshik@chromium.org>
This patch adds support for reading calibration data from Device Tree.
It looks for the calibration data in Device Tree if it can't find it
in a file. If there's no node in Device Tree, ath10k will try to find the
calibration data from OTP.
The node for the calibration data should be defined like this:
pci {
pcie@0 {
reg = <0 0 0 0 0>;
#interrupt-cells = <1>;
#size-cells = <2>;
#address-cells = <3>;
device_type = "pci";
ath10k@0,0 {
reg = <0 0 0 0 0>;
device_type = "pci";
qcom,ath10k-calibration-data = [ 01 02 03 ... ];
};
};
};
Signed-off-by: Toshi Kikuchi <toshik@chromium.org>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
---
drivers/net/wireless/ath/ath10k/core.c | 70 ++++++++++++++++++++++++++++++++
drivers/net/wireless/ath/ath10k/core.h | 3 +
2 files changed, 72 insertions(+), 1 deletion(-)
diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c
index 7762061a1944..6165f2735b35 100644
--- a/drivers/net/wireless/ath/ath10k/core.c
+++ b/drivers/net/wireless/ath/ath10k/core.c
@@ -17,6 +17,7 @@
#include <linux/module.h>
#include <linux/firmware.h>
+#include <linux/of.h>
#include "core.h"
#include "mac.h"
@@ -249,6 +250,63 @@ static int ath10k_download_cal_file(struct ath10k *ar)
return 0;
}
+static int ath10k_download_cal_dt(struct ath10k *ar)
+{
+ struct device_node *node;
+ int data_len;
+ void *data;
+ int ret;
+
+ node = ar->dev->of_node;
+ if (!node)
+ /* Device Tree is optional, don't print any warnings if
+ * there's no node for ath10k.
+ */
+ return -ENOENT;
+
+ if (!of_get_property(node, "qcom,ath10k-calibration-data",
+ &data_len)) {
+ /* The calibration data node is optional */
+ return -ENOENT;
+ }
+
+ if (data_len != QCA988X_CAL_DATA_LEN) {
+ ath10k_warn(ar, "invalid calibration data length in DT: %d\n",
+ data_len);
+ ret = -EMSGSIZE;
+ goto out;
+ }
+
+ data = kmalloc(data_len, GFP_KERNEL);
+ if (!data) {
+ ret = -ENOMEM;
+ goto out;
+ }
+
+ ret = of_property_read_u8_array(node, "qcom,ath10k-calibration-data",
+ data, data_len);
+ if (ret) {
+ ath10k_warn(ar, "failed to read calibration data from DT: %d\n",
+ ret);
+ goto out_free;
+ }
+
+ ret = ath10k_download_board_data(ar, data, data_len);
+ if (ret) {
+ ath10k_warn(ar, "failed to download calibration data from Device Tree: %d\n",
+ ret);
+ goto out_free;
+ }
+
+ ret = 0;
+
+out_free:
+ kfree(data);
+
+out:
+ return ret;
+}
+
static int ath10k_download_and_run_otp(struct ath10k *ar)
{
u32 result, address = ar->hw_params.patch_load_addr;
@@ -662,7 +720,17 @@ static int ath10k_download_cal_data(struct ath10k *ar)
}
ath10k_dbg(ar, ATH10K_DBG_BOOT,
- "boot did not find a calibration file, try OTP next: %d\n",
+ "boot did not find a calibration file, try DT next: %d\n",
+ ret);
+
+ ret = ath10k_download_cal_dt(ar);
+ if (ret == 0) {
+ ar->cal_mode = ATH10K_CAL_MODE_DT;
+ goto done;
+ }
+
+ ath10k_dbg(ar, ATH10K_DBG_BOOT,
+ "boot did not find DT entry, try OTP next: %d\n",
ret);
ret = ath10k_download_and_run_otp(ar);
diff --git a/drivers/net/wireless/ath/ath10k/core.h b/drivers/net/wireless/ath/ath10k/core.h
index 4a294987736c..2dd1bb05a3fc 100644
--- a/drivers/net/wireless/ath/ath10k/core.h
+++ b/drivers/net/wireless/ath/ath10k/core.h
@@ -400,6 +400,7 @@ enum ath10k_dev_flags {
enum ath10k_cal_mode {
ATH10K_CAL_MODE_FILE,
ATH10K_CAL_MODE_OTP,
+ ATH10K_CAL_MODE_DT,
};
static inline const char *ath10k_cal_mode_str(enum ath10k_cal_mode mode)
@@ -409,6 +410,8 @@ static inline const char *ath10k_cal_mode_str(enum ath10k_cal_mode mode)
return "file";
case ATH10K_CAL_MODE_OTP:
return "otp";
+ case ATH10K_CAL_MODE_DT:
+ return "dt";
}
return "unknown";
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v3 0/2] ath10k: device tree support
2014-11-27 12:00 [PATCH v3 0/2] ath10k: device tree support Kalle Valo
2014-11-27 12:00 ` [PATCH v3 1/2] dt: bindings: add ath10k wireless device Kalle Valo
2014-11-27 12:00 ` [PATCH v3 2/2] ath10k: read calibration data from Device Tree Kalle Valo
@ 2014-11-27 12:04 ` Kalle Valo
2 siblings, 0 replies; 4+ messages in thread
From: Kalle Valo @ 2014-11-27 12:04 UTC (permalink / raw)
To: ath10k; +Cc: devicetree-discuss, linux-wireless, toshik
Kalle Valo <kvalo@qca.qualcomm.com> writes:
> here's ath10k device tree support which Toshi and me have been working
> on. Please review.
>
> Device tree maintainers: please review the bindings document
> carefully, this is the first time I have written one.
Argh, I again used the old devicetree mailing list address. Please
ignore this one, I'll resend using the correct address.
--
Kalle Valo
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2014-11-27 12:04 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-11-27 12:00 [PATCH v3 0/2] ath10k: device tree support Kalle Valo
2014-11-27 12:00 ` [PATCH v3 1/2] dt: bindings: add ath10k wireless device Kalle Valo
2014-11-27 12:00 ` [PATCH v3 2/2] ath10k: read calibration data from Device Tree Kalle Valo
2014-11-27 12:04 ` [PATCH v3 0/2] ath10k: device tree support Kalle Valo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).