9 Replies Latest reply on Jun 27, 2017 9:19 AM by StezMIND

    Audio over I2S




      Has any one tried connecting an I2S codec to the module?


      By looking at the kernel source code for Ostro OS it seems like the following driver is handling the I2S hardware interface - sound/soc/intel/skylake/skl.c

      And there is a machine driver that would be a good place to start writing a sound card driver - sound/soc/intel/boards/bxt_florida.c

      That is what is being loaded on a Brexton M machine with WM8998 codec connected.

      Is that right?


      I've already written a simple machine driver for the Joule module with a dummy I2S codec.

      But I'm having trouble with getting the sound card to register.


      During the probe stage in the snd_soc_skl driver a FW file is being requested.

      The name of the file is 1a98-INTEL-EDK2-2-tplg.bin or dfw_sst.bin

      And since the files don't come with Ostro the probe fails.


      Any ideas where that FW file comes from?

        • 1. Re: Audio over I2S
          Intel Corporation
          This message was posted on behalf of Intel Corporation


          Thanks for your interest in the Intel Joule Platform.

          I haven’t used an I2S codec with the Joule module yet, however, let me investigate about this and as soon as I find useful information I’ll let you know.

          I’ll appreciate your patience during the meantime.


          • 2. Re: Audio over I2S
            Intel Corporation
            This message was posted on behalf of Intel Corporation


            Thank you very much for your patience. We have been investigating and we would like to let you know that we are planning on enabling the audio feature in a future release. You can keep an eye on our communities, as this release has no specific date for a launch.


            • 3. Re: Audio over I2S

              The version of Ostro that will be released in December will have I2S enabled.

              • 4. Re: Audio over I2S
                Intel Corporation
                This message was posted on behalf of Intel Corporation

                Hi RVG,

                Currently our team is working on it but there is not specific date for a launch, so my best suggestion would be to keep checking the community.


                • 5. Re: Audio over I2S

                  Hi Yermi,


                  Any progress on the audio drivers?


                  We are using the latest Ostro OS release v1.0.1 from December 16th 2016.

                  Looks like the OS update added a DSP FW configuration blob.


                  I created a similar driver to the “bxt_florida.c” called “bxt_smt" and a dummy I2C codec driver called “smt_i2c".


                  But I’m running into problems when loading the new machine driver:



                  1) When using the default kernel configuration "snd-soc-skl" driver is initialized but _probe() is not called,

                  therefore my machine driver is not being requested/loaded at all.


                    Only the HDMI audio card is loaded. Here is a list of loaded modules (lsmod output):

                  snd_hda_codec_hdmi        34241   1

                  snd_soc_skl                       43106   0

                  snd_soc_skl_ipc                 22431  1 snd_soc_skl

                  snd_soc_sst_ipc                 4126    1 snd_soc_skl_ipc

                  snd_soc_sst_dsp               12973   1 snd_soc_skl_ipc

                  snd_hda_ext_core              10957   1 snd_soc_skl

                  snd_soc_sst_match            1682   1 snd_soc_skl

                  snd_hda_intel                     22961   0

                  snd_hda_codec                 83289   2 snd_hda_codec_hdmi,snd_hda_intel

                  snd_hda_core                    51281   5 snd_hda_ext_core,snd_hda_codec_hdmi,snd_hda_codec,snd_hda_intel,snd_soc_skl

                  snd_soc_smt_i2c               3457   0

                  snd_soc_core                    145286   2 snd_soc_smt_i2c,snd_soc_skl

                  ac97_bus                           1694   1 snd_soc_core

                  snd_pcm                           81037   8 snd_hda_ext_core,snd_soc_core,snd_hda_codec_hdmi,snd_soc_smt_i2c,snd_hda_codec,snd_hda_intel,snd_soc_skl,snd_hda_core



                  As it can be seen the “snd_soc_skl" and “snd_soc_smt_i2c" drivers are not used.



                  2) When I disable CONFIG_SND_HDA_INTEL the “snd_soc_skl” driver is being probed and the “bxt_smt” mach driver is being loaded, but the DSP FW fails to load:



                  [    8.813577] snd_soc_skl 0000:00:0e.0: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])

                  [    8.962281] snd_soc_skl 0000:00:0e.0: FW Poll Status: reg=0x1010303 Power up successful

                  [    8.962287] snd_soc_skl 0000:00:0e.0: FW Poll Status: reg=0x1010302 Unset reset successful

                  [    9.463154] snd_soc_skl 0000:00:0e.0: Waiting for HIPCIE done, reg: 0x0

                  [    9.470612] snd_soc_skl 0000:00:0e.0: ROM loaded, continue FW loading

                  [   12.519877] snd_soc_skl 0000:00:0e.0: FW Poll Status: reg=0x5000001 Firmware boot timedout

                  [   12.529359] snd_soc_skl 0000:00:0e.0: Transfer firmware failed -62

                  [   12.536327] snd_soc_skl 0000:00:0e.0: Error code=0x0: FW status=0x5000001

                  [   12.544025] snd_soc_skl 0000:00:0e.0: FW Poll Status: reg=0x1 Set reset successful

                  [   12.552570] snd_soc_skl 0000:00:0e.0: FW Poll Status: reg=0x1 Power down successful

                  [   12.561214] snd_soc_skl 0000:00:0e.0: Load base fw failed: ffffffc2

                  [   12.571532] snd_soc_skl 0000:00:0e.0: error failed to register dsp -62



                  And loaded drivers are:



                  snd_soc_sst_bxt_smt     3519      0

                  snd_soc_skl                     43079   0

                  snd_soc_skl_ipc              22431   1 snd_soc_skl

                  snd_soc_sst_ipc              4126    1 snd_soc_skl_ipc

                  snd_soc_sst_dsp             12973   1 snd_soc_skl_ipc

                  snd_hda_ext_core           10957   1 snd_soc_skl

                  snd_soc_smt_i2c             3457     0

                  snd_hda_core                  51281   2 snd_hda_ext_core,snd_soc_skl

                  snd_soc_sst_match         1682     1 snd_soc_skl

                  snd_soc_core                  145286  3 snd_soc_smt_i2c,snd_soc_skl,snd_soc_sst_bxt_smt

                  ac97_bus                         1694     1 snd_soc_core

                  snd_pcm                          81037   5 snd_hda_ext_core,snd_soc_core,snd_soc_smt_i2c,snd_soc_skl,snd_hda_core



                  This time the “snd_soc_skl" probe is called and the “bxt_smt” driver is loaded but probing fails.




                  • 6. Re: Audio over I2S
                    Intel Corporation
                    This message was posted on behalf of Intel Corporation

                    Hi Corrosion,
                    Thanks for all the information provided, currently, we still have no update and we are working on it. We are going to be checking for any updates and we’ll let you know as soon as we have any news.
                    We’ll really appreciate your patience during this time.
                    -Yermi A.

                    • 7. Re: Audio over I2S


                      • 8. Re: Audio over I2S


                        any update on this?

                        If original poster got it to work, a short report here would be very appreciated!

                        • 9. Re: Audio over I2S


                          bumping (again) this discussion.


                          I'm on latest ref-os-iot and trying to connect the Cirrus Logic Audio Card to an Joule 550x.


                          So far I have:


                          1) created an ASoC machine driver (bxt-cirrus.c) based on the version for RaspberryPi



                          removing all DT specific stuff and filling manually the DAI structures. Not really sure about all the fields here though, tried to follow bxt_florida.c for those.


                          2) As the other poster, removed snd_hda_intel and manually probed the new bxt-cirrus module


                          3) In my case, snd_soc_skl loads fine and firmware is transferred correctly


                          But still, lsmod | grep snd shows that the new module is loaded but not probed:


                          snd_soc_sst_bxt_cirrus    16956  0

                          snd_soc_sst_acpi        3171  0

                          snd_soc_sst_match       1554  2 snd_soc_sst_acpi,snd_soc_skl

                          snd_soc_wm8804          9697  0

                          snd_soc_wm5102        641540  0


                          Any suggestion on how to move from here? Is it necessary to modify ACPI tables to have the module probed?