[Letux-kernel] AESS driver

H. Nikolaus Schaller hns at goldelico.com
Wed Jul 18 06:46:44 CEST 2018


Hi Marek,

> Am 12.07.2018 um 21:30 schrieb Belisko Marek <marek.belisko at gmail.com>:
> 
> Hi Nikolaus,
> On Tue, Jul 10, 2018 at 9:12 AM H. Nikolaus Schaller <hns at goldelico.com> wrote:
>> 
>> Hi Marek,
>> 
>>> Am 10.07.2018 um 08:10 schrieb Belisko Marek <marek.belisko at gmail.com>:
>>> 
>>> Hi Nikolaus,
>>> On Tue, Jul 10, 2018 at 8:06 AM H. Nikolaus Schaller <hns at goldelico.com> wrote:
>>>> 
>>>> Hi Marek,
>>>> I merged letux-4.17.3 (and replaced the gab driver merge conflict by the new version).
>>>> Then I added the firmware ED had sent by mail and got this:
>>> cool thanks. I plan to do it today but you're faster than me ;).
>> 
>> Well, I did take a shortcut by merge+quick fix. Should better be a rebase so that we can
>> have all aess stuff at the tip of the branch.
>> 
>>>> 
>>>> root at letux:~# lsmod|fgrep aess
>>>> snd_soc_omap_aess      61440  2 snd_soc_omap_abe_twl6040,snd_soc_omap_mcpdm
>>>> root at letux:~# dmesg|fgrep aess
>>>> [    6.349644] aess 401f1000.aess: ASoC: invalid header size for type 0 at offset 0x0 size 0x1a5e8.
>>>> [    6.362569] aess 401f1000.aess: request for AESS FW failed -22
>>>> [    6.373974] aess 401f1000.aess: ASoC: failed to probe component -22
>>>> root at letux:~# aplay -l
>>>> **** List of PLAYBACK Hardware Devices ****
>>>> card 0: H58040000encode [HDMI 58040000.encoder], device 0: HDMI 58040000.encoder snd-soc-dummy-dai-0 []
>>>> Subdevices: 1/1
>>>> Subdevice #0: subdevice #0
>>>> root at letux:~# ls -l /lib/firmware/omap_aess-adfw.bin
>>>> -rw-r--r-- 1 root root 108008 Jul 10 05:57 /lib/firmware/omap_aess-adfw.bin
>>>> root at letux:~# file /lib/firmware/omap_aess-adfw.bin
>>>> /lib/firmware/omap_aess-adfw.bin: data
>>>> root at letux:~# xxd /lib/firmware/omap_aess-adfw.bin | head -10
>>>> 0000000: 436f 5341 0100 0000 0500 0000 0000 0000  CoSA............
>>>> 0000010: a032 0f00 4404 0000 0500 0000 444c 3120  .2..D.......DL1
>>>> 0000020: 4571 7561 6c69 7a65 7200 0000 0000 0000  Equalizer.......
>>>> 0000030: 0000 0000 0000 0000 0000 0000 0683 8300  ................
>>>> 0000040: 0300 0000 0000 0000 3b00 0000 0000 0000  ........;.......
>>>> 0000050: 0000 0000 0500 0000 ffff ffff 466c 6174  ............Flat
>>>> 0000060: 2052 6573 706f 6e73 6500 0000 0000 0000   Response.......
>>>> 0000070: 0000 0000 0000 0000 0000 0000 3830 3048  ............800H
>>>> 0000080: 7a20 4850 4620 3064 4200 0000 0000 0000  z HPF 0dB.......
>>>> 0000090: 0000 0000 0000 0000 0000 0000 3830 3048  ............800H
>>>> root at letux:~#
>>>> 
>>>> This seems to confirm that the firmware blob is not what the driver code expects...
>>> Hmm well then we need to get it somehow from TI guys. Do you have any
>>> contact? Thanks.
>> 
>> Peter should have best contacts and recommendations. So I put him on To: address.
> I did check more deeply what is going on with above error. I checked
> 3.15 branch from omap-audio and compared to actual one soc-fw was
> replaced by soc-topology which should be by my rough guess some
> standard format for ASoC firmware.
> I looked again to data and firmware looks to be correct according old
> struct but from our kernel it has format:
> struct snd_soc_tplg_hdr {
>        __le32 magic;           /* magic number */
>        __le32 abi;             /* ABI version */
>        __le32 version;         /* optional vendor specific version details */
>        __le32 type;            /* SND_SOC_TPLG_TYPE_ */
>        __le32 size;            /* size of this structure */
>        __le32 vendor_type;     /* optional vendor specific type info */
>        __le32 payload_size;    /* data bytes, excluding this header */
>        __le32 index;           /* identifier for block */
>        __le32 count;           /* number of elements in block */
> } __attribute__((packed));
> 
> so thus we get this error.
> 
> In original 3.15 kernel struct looks like:
> struct snd_soc_fw_hdr {
>        __le32 magic;
>        __le32 abi;             /* ABI version */
>        __le32 type;
>        __le32 vendor_type;     /* optional vendor specific type info */
>        __le32 version;         /* optional vendor specific version details */
>        __le32 size;            /* data bytes, excluding this header */
> } __attribute__((packed));
> 
> so it's some items are missing like abi. So I think we would need to
> get somehow updated firmware based on some later kernel. I tried to
> look on https://github.com/omap-audio/abefw/tree/master and tried to
> compile but it cannot find some defines so no idea how to proceed. I
> can maybe edit existing snd_soc_tplg_hdr to fit to snd_soc_tplg_hdr
> and try it (first attempt shows a lot of is issues so it will take
> some time to rework).

I came across commit ac9391daac004e12dc4e4c62e130b09f245ece2b
"ASoC: topology: Improve backwards compatibility with v4 topology files"

which may be related to this problem. This patch came with 4.18-rc1
so we probably should rebase our aess driver on 4.18-rc* first (which
means to replace struct platform device by component etc.) before
trying to rebuild firmware.

BR,
Nikolaus



More information about the Letux-kernel mailing list