Sven Eckelmann <sven.eckelmann@xxxxxxxxxxxx> writes: > Board Data File (BDF) is loaded upon driver boot-up procedure. The right > board data file is identified on QCA4019 using bus, bmi-chip-id and > bmi-board-id. > > The problem, however, can occur when the (default) board data file cannot > fulfill with the vendor requirements and it is necessary to use a different > board data file. > > This problem was solved for SMBIOS by adding a special SMBIOS type 0xF8. > Something similar has to be provided for systems without SMBIOS but with > device trees. No solution was specified by QCA and therefore a new one has > to be found for ath10k. > > The device tree requires addition strings to define the variant name > > wifi@a000000 { > status = "okay"; > qcom,ath10k-calibration-variant = "RT-AC58U"; > }; > > wifi@a800000 { > status = "okay"; > qcom,ath10k-calibration-variant = "RT-AC58U"; > }; > > This would create the boarddata identifiers for the board-2.bin search > > * bus=ahb,bmi-chip-id=0,bmi-board-id=16,variant=RT-AC58U > * bus=ahb,bmi-chip-id=0,bmi-board-id=17,variant=RT-AC58U > > Signed-off-by: Sven Eckelmann <sven.eckelmann@xxxxxxxxxxxx> > --- > Since RFC: > > - initialize variant pointer to have it initialized to NULL when > of_property_read_string fails (thanks Christian Lamparter) > - Only print warning that DT doesn't contain string ones (thanks Christian > Lamparter) > - Split patch in DT doc and ath10k part (thanks Christian Lamparter) > - Allow to overwrite the variant string via DT and ignore that SMBIOS had > written anything to it [...] > --- a/drivers/net/wireless/ath/ath10k/core.c > +++ b/drivers/net/wireless/ath/ath10k/core.c > @@ -779,6 +779,25 @@ static int ath10k_core_check_smbios(struct ath10k *ar) > return 0; > } > > +static int ath10k_core_check_dt(struct ath10k *ar) > +{ > + struct device_node *node; > + const char *variant = NULL; > + > + node = ar->dev->of_node; > + if (!node) > + return -ENOENT; > + > + of_property_read_string(node, "qcom,ath10k-calibration-variant", > + &variant); > + if (!variant) > + return -ENODATA; > + > + strscpy(ar->id.bdf_ext, variant, sizeof(ar->id.bdf_ext)); Kbuild bot found a warning here: drivers/net/wireless/ath/ath10k/core.c: In function 'ath10k_core_check_dt': >> drivers/net/wireless/ath/ath10k/core.c:877:2: warning: ignoring return value of 'strscpy', declared with attribute warn_unused_result [-Wunused-result] strscpy(ar->id.bdf_ext, variant, sizeof(ar->id.bdf_ext)); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ I guess warn_unused_result in strscpy() is a recent addition and that's why you didn't see it. -- Kalle Valo-- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html