QCA4019: calibration files and board files
Christian Lamparter
chunkeey at googlemail.com
Wed Mar 1 04:51:12 PST 2017
On Tuesday, February 28, 2017 7:22:32 PM CET Rajkumar Manoharan wrote:
> On 2017-02-27 23:58, Sven Eckelmann wrote:
> > It looks to me now that this information is contradicting your
> > implementation
> > (which now loads the data from 0:ART partition [1] like pre-cal data
> > [2] and
> > then loads the board-2.bin [3]).
> >
> Both reading from ART and loading pre-cal data file are same.
>
> > I have doubt regarding his explanation but I got no actual spec - only
> > information which seems to be contradicting (or to vague) . Is is
> > possible
> > to get some confirmation from you about whether the data from the 0:ART
> > partition is pre-cal data or not and whether the board-2.bin should be
> > used when the data from 0:ART is used.
> >
> In QCA4019 platform, only radio specific calibration (pre-cal-data) is
> stored in flash.
> Board specific contents are read from board-2.bin. For each radio
> appropriate board data should be loaded. To fetch correct board data
> from board-2.bin bundle, pre-cal/radio specific caldata should be
> loaded first to get proper board id.
>
> > My understanding until now was that:
> >
> > * pre-cal data + board-2.bin info == actual calibration data
> >
> Correct.
>
> > * pre-cal data == some incomplete calibration data from somewhere else
> > (he never specified it - just that it exists)
> > * calibration data == incomplete calibration data from 0:ART
> > (what I've described in the past as pre-cal
> > data)
> > * (pre-cal or calibration data) + board-2.bin info == actual
> > calibration data
> >
> > Would be nice if this confusion could be cleared up by you.
> >
> Following methods are used to read radio specific caldata.
>
> 1) In some platform which lags DT support, init.d script is used to read
> the calibrations content from flash memory and write it in file system
> at boot time.
> This is done by dd command.
>
> 2) DT entry “qcom,ath10k-pre-calibration-data" is used to pass
> calibration data
> from flash to driver. But it needs CoreBSB support to transfer the
> contents from flash to device tree.
>
> qcom,pre-calibration-data ==> only radio specific calibration.
> qcom,calibration-data ==> {radio specific + board specific calibration}.
>
> 3) Reading calibration data directly from ART partition by mtd_read
> operation. This one can be removed from QSDK either by init script
> or by DT support.
>
> "qcom,calibration-data" is used for qca988x on AP148 plaform.
> Here calibration data mean both radio + board contents.
> Always calibration content are stored in ART partition.
Ok. Thanks for the clarification.
So, pre-cal data (from flash) + board-2 (from fs) is the
right way for now.
However, this is a bit of a problem for LEDE/OpenWRT.
You see: The board-2.bin will have to be baked into the rootfs-image
of the LEDE/OpenWRT firmware.
But in order to do that, the board-2.bin needs to be extracted from
the vendor's binary firmware image (via unsquashfs). Or if we are
lucky: from the source archive, if the vendor left them in there.
The problem is: these raw board.bin files sourced from the binary
firmware image lack a redistributable license.
And therefore they can't be shipped with LEDE/OpenWRT.
(The raw board.bin files from the source archive [1] are usually
in the madwifi-11n directory, which has a redistributable
license file [2] and can be converted to board-2.bin with the
ath10k-bdencoder [3]. But there's no explicit statement that
this is possible.)
The way I see it atm, developers would need to ask the vendors
for permission and LEDE/OpenWRT needs to setup something like
a board-2.bin repository (similar to linux-firmware [0]) for
all the IPQ40XX devices (and future devices?)...
...
Is there a way around this problem?
Can somebody ask around in the Legal Department? And clarify if:
1. Whenever the board-2.bin are copyright-able in the first place?
INAL. These files just contain calibration values/parameters
and no programs. From what I know facts/numbers are not copyright-able.
But I don't know if it applies here or not. And if there is a
difference between US/Europe/China/... laws.
2. What license these board.bin files should have.
They are generated by the halphy_tools' eepromUtil utility.
Are these files all original, or do they classify as
derived works?
3. Most importantly: Can this be handled differently for future devices?
Like adding a redistributable license text inside the board.bin files?
(Like a header or trailer. A trailer would have the advantage that if
the caldata length is fixed (like 12064 bytes for IPQ40XX), the trailer
won't be uploaded to the device. So a trailer can be easily added to
existing files).
(4. Any workaround?
Like trying to get by with just the precal-data from flash like in [4]?)
Thanks,
Christian
[0] <https://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git/tree/README>
[1] <https://github.com/paul-chambers/netgear-r7800/tree/master/git_home/madwifi-11n.git/halphy_tools/host/eepromUtil/release_ipq4019>
[2] <https://github.com/paul-chambers/netgear-r7800/blob/master/git_home/madwifi-11n.git/COPYING>
[3] <https://github.com/qca/qca-swiss-army-knife/blob/master/tools/scripts/ath10k/ath10k-bdencoder>
[4] <https://www.mail-archive.com/ath10k@lists.infradead.org/msg05911.html>
More information about the ath10k
mailing list