明远智睿技术论坛

 找回密码
 立即注册
搜索
查看: 29358|回复: 13
打印 上一主题 下一主题

【已解决】linux3.14.52+qt5 wm8960驱动 求助

[复制链接]

18

主题

47

帖子

257

积分

中级会员

Rank: 3Rank: 3

积分
257
跳转到指定楼层
楼主
发表于 2018-3-26 15:40:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 CONAN 于 2018-4-3 11:40 编辑

参照EK200开发板设计的底板,使用linux3.14.52+qt5的系统,音频使用wm8960。
1、内核编译选择了wm8960,去掉了wm8962;
2、 wm8960 在设备树里添加设备信息参考如下:


        在 myimx6ek200.dtsi 中找到   
        codec: wm8962@1a {
                compatible = "wlf,wm8962";
                reg = <0x1a>;
                clocks = <&clks 201>;
                DCVDD-supply = <®_audio>;
                DBVDD-supply = <®_audio>;
                AVDD-supply = <®_audio>;
                CPVDD-supply = <®_audio>;
                MICVDD-supply = <®_audio>;
                PLLVDD-supply = <®_audio>;
                SPKVDD1-supply = <®_audio>;
                SPKVDD2-supply = <®_audio>;
                amic-mono;
                gpio-cfg = <
                        0x0000 /* 0efault */
                        0x0000 /* 1efault */
                        0x0013 /* 2:FN_DMICCLK */
                        0x0000 /* 3efault */
                        0x8014 /* 4:FN_DMICCDAT */
                        0x0000 /* 5efault */
                >;
       };

        修改为:
[color=inherit !important]        codec: wm8960@1a {
                compatible = "wlf,wm8960";
                reg = <0x1a>;
                clocks = <&clks 201>;
                clock-names = "mclk";
                wlf,shared-lrclk;
        };


        找到
        sound {
                compatible = "myzr,myimx6-wm8962",
                           "fsl,imx-audio-wm8962";
                model = "wm8962-audio";
                cpu-dai = <&ssi2>;
                audio-codec = <&codec>;
                asrc-controller = <&asrc>;
                audio-routing =
                        "Headphone Jack", "HPOUTL",
                        "Headphone Jack", "HPOUTR",
                        "Ext Spk", "SPKOUTL",
                        "Ext Spk", "SPKOUTR",
                        "MICBIAS", "AMIC",
                        "IN3R", "MICBIAS",
                        "DMIC", "MICBIAS",
                        "DMICDAT", "DMIC",
                        "CPU-Playback", "ASRC-Playback",
                        "layback", "CPU-Playback",
                        "ASRC-Capture", "CPU-Capture",
                        "CPU-Capture", "Capture";
                mux-int-port = <2>;
                mux-ext-port = <3>;
                hp-det-gpios = <&gpio3 20 GPIO_ACTIVE_LOW>;
                mic-det-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>;
        };
        并修改为
        sound {
                compatible = "fsl,imx-audio-wm8960";
                model = "wm8960-audio";
                cpu-dai = <&ssi2>;
                audio-codec = <&codec>;
                asrc-controller = <&asrc>;
                codec-master;
                gpr = <&gpr>;
                /*
                 * hp-det = <hp-det-pin hp-det-polarity>;
                 * hp-det-pin: JD1 JD2  or JD3
                 * hp-det-polarity = 0: hp detect high for headphone
                 * hp-det-polarity = 1: hp detect high for speaker
                 */
                hp-det = <3 0>;
                hp-det-gpios = <&gpio3 20 0>;
                audio-routing =
                        "Headset Jack", "HP_L",
                        "Headset Jack", "HP_R",
                        "Ext Spk", "SPK_LP",
                        "Ext Spk", "SPK_LN",
                        "Ext Spk", "SPK_RP",
                        "Ext Spk", "SPK_RN",
                        "LINPUT2", "Hp MIC",
                        "LINPUT3", "Hp MIC",
                        "RINPUT1", "Main MIC",
                        "RINPUT2", "Main MIC",
                        "Hp MIC", "MICB",
                        "Main MIC", "MICB",
                        "CPU-Playback", "ASRC-Playback",
                        "layback", "CPU-Playback",
                        "ASRC-Capture", "CPU-Capture",
                        "CPU-Capture", "Capture";
        };
编译后,使用aplay、arecord命令,打印ASoC: HiFi startup failed: -16。
网上查看了相关的问题,都没有解决,请问有没有遇到相同情况的呀?



回复

使用道具 举报

18

主题

47

帖子

257

积分

中级会员

Rank: 3Rank: 3

积分
257
推荐
 楼主| 发表于 2018-4-3 11:37:35 | 只看该作者
看了一些资料,imx6s的板子的音频接在了SSI2上,而驱动使用了SAI,需要修改im-wm8960.c。
我的板子使用了R1 R3作为MIC的输入、Left Speaker作为输出,需要修改设备树的audio-routing。

另外,我的板子没有mic等接口的硬件检测,为了保证MIC的正常工作,需要把GPIO的检测等相关操作屏蔽掉。
设备树、驱动见附件





。另有帖子可以参考:https://community.nxp.com/message/854593

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 1 反对 0

使用道具 举报

0

主题

146

帖子

432

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
432
沙发
发表于 2018-3-27 10:58:54 | 只看该作者
首先,请确认“ALSA device list:”有没有设备。
再就是:提提供更多信息,如操作时的串口输出信息。
回复 支持 反对

使用道具 举报

18

主题

47

帖子

257

积分

中级会员

Rank: 3Rank: 3

积分
257
板凳
 楼主| 发表于 2018-3-27 16:38:11 | 只看该作者
软件02 发表于 2018-3-27 10:58
首先,请确认“ALSA device list:”有没有设备。
再就是:提提供更多信息,如操作时的串口输出信息。 ...

设备信息如下;
myzr login:
Freescale i.MX Release Distro 3.14.52-1.1.0 myzr /dev/ttymxc0

myzr login: root
root@myzr:~# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: wm8960audio [wm8960-audio], device 0: HiFi wm8960-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: wm8960audio [wm8960-audio], device 1: HiFi-ASRC-FE (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
root@myzr:~# aplay -L
null
    Discard all samples (playback) or generate zero samples (capture)
sysdefault:CARD=wm8960audio
    wm8960-audio,
    Default Audio Device
root@myzr:~# ls /dev/snd/
by-path  controlC0  pcmC0D0c  pcmC0D0p  pcmC0D1c  pcmC0D1p  timer
root@myzr:~#
root@myzr:~# aplay /unit_tests/audio8k16S.wav
ASoC: HiFi startup failed: -16
ALSA lib /home/tangb/yocto/imx-3.14.52-1.1.0_ga/build-x11/tmp/work/cortexa9hf-vfp-neon-mx6qdl-poky-linux-gnueabi/alsa-lib/1.0.28-r0/alsa-lib-1.0.28/src/pcm/pcm_dmix.c:1022snd_pcm_dmix_open) unable to open slave
aplay: main:730: audio open error: Device or resource busy
root@myzr:~#

内核启动信息:
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
fsl-asrc 2034000.asrc: driver registered
snd-soc-dummy snd-soc-dummy: ASoC: Failed to create platform debugfs directory
imx-wm8960 sound.20: wm8960-hifi <-> 202c000.ssi mapping ok
imx-wm8960 sound.20: snd-soc-dummy-dai <-> 2034000.asrc mapping ok
imx-wm8960 sound.20: wm8960-hifi <-> 202c000.ssi mapping ok
oprofile: using arm/armv7-ca9
NET: Registered protocol family 26
TCP: cubic registered
NET: Registered protocol family 10
sit: IPv6 over IPv4 tunneling driver
NET: Registered protocol family 17
can: controller area network core (rev 20120528 abi 9)
NET: Registered protocol family 29
can: raw protocol (rev 20120528)
can: broadcast manager protocol (rev 20120528 t)
can: netlink gateway (rev 20130117) max_hops=1
Bluetooth: RFCOMM TTY layer initialized
Bluetooth: RFCOMM socket layer initialized
Bluetooth: RFCOMM ver 1.11
Bluetooth: BNEP (Ethernet Emulation) ver 1.3
Bluetooth: BNEP filters: protocol multicast
Bluetooth: BNEP socket layer initialized
Bluetooth: HIDP (Human Interface Emulation) ver 1.2
Bluetooth: HIDP socket layer initialized
8021q: 802.1Q VLAN Support v1.8
Key type dns_resolver registered
failed to disable 1.2 GHz OPP
imx6q-pcie 1ffc000.pcie: phy link never came up
imx6q-pcie 1ffc000.pcie: Failed to bring link up!
imx6q-pcie 1ffc000.pcie: failed to initialize host
imx6q-pcie: probe of 1ffc000.pcie failed with error -22
wm8960-supply: disabling
usb_otg_vbus: disabling
regulator-dummy: disabling
imx mcc test is registered.
input: gpio-keys.19 as /devices/soc0/gpio-keys.19/input/input1
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
ALSA device list:
  #0: wm8960-audio
kjournald starting.  Commit interval 5 seconds
EXT3-fs (mmcblk3p2): using internal journal
EXT3-fs (mmcblk3p2): 1 orphan inode deleted
EXT3-fs (mmcblk3p2): recovery complete
EXT3-fs (mmcblk3p2): mounted filesystem with ordered data mode
VFS: Mounted root (ext3 filesystem) on device 179:2.
devtmpfs: mounted
Freeing unused kernel memory: 764K (809bb000 - 80a7a000)
INIT: version 2.88 booting
Starting udev
udevd[175]: starting version 182
ERROR: v4l2 capture: slave not found!
ERROR: v4l2 capture: slave not found!
random: nonblocking pool is initialized
FAT-fs (mmcblk3p1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
bootlogd: cannot allocate pseudo tty: No such file or directory
ALSA: Restoring mixer settings...
Found hardware: "wm8960-audio" "" "" "" ""
Hardware is initialized using a generic method
hwclock: can't open '/dev/misc/rtc': No such file or directory
/usr/sbin/alsactl: set_control:1325: failed to obtain info for control #57 (No such file or directory)
Wed Jan 20 10:18:19 UTC 2016
hwclock: can't open '/dev/misc/rtc': No such file or directory
INIT: Entering runlevel: 5
Configuring network interfaces... ifup: ignoring unknown interface eth0
Starting Xserver
Starting system message bus: Unknown username "xuser" in message bus configuration file
dbus.
Starting Connection Manager
Starting Dropbear SSH server: Generating key, this may take a while...
fec 2188000.ethernet eth0: Freescale FEC PHY driver [Generic PHY] (mii_bus:phy_addr=2188000.ethernet:00, irq=-1)
IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
ASoC: HiFi startup failed: -16
ASoC: HiFi startup failed: -16
ASoC: HiFi startup failed: -16
ASoC: HiFi startup failed: -16
ASoC: HiFi startup failed: -16
ASoC: HiFi startup failed: -16
Public key portion is:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDRx2YnmsklXHHWydOvEOOiuvEDyZIiXbPmSmGcFnJdHq2CyiKBZ5XtELjrO1YkqDnQGYfklgN2UK0urpSHhytCwh7797orClZm+5H5eg/Mr2T9hY9hfwsiP5QJ0908eng4ayc/6VR66FrXcRXbVtRzikxeBniHAfoVz2GISqf2iw5nlPLjvxxeHBqLcxC+EN+3XMtnBTmfrkP50qsV9Zqoj3fUlE7Mz1rKH3hk2fPo6BB5mFInhDdPEkA/Lxq9EtQm4A/7qun8MDqKFbZ7TqQwWjOIWhA+xFEIKPne9c0ttQWaIjN/kJyOtMlcleBtB7RJgQrXam6cuHAvSAcJSHk3 root@myzr
Fingerprint: md5 59:4e:2d:03:91:d7:4c:e1:66:e4:8e:49:5a:28:cf:a4
dropbear.
Starting rpcbind daemon...done.
starting statd: done
Starting advanced power management daemon: No APM support in kernel
(failed.)
hwclock: can't open '/dev/misc/rtc': No such file or directory
NFS daemon support not enabled in kernel
Starting syslogd/klogd: done
[ ok ]rting Avahi mDNS/DNS-SD Daemon: avahi-daemon
Starting Telephony daemon
Starting Linux NFC daemon
Starting OProfileUI server
Starting autohdmi:
Running local boot scripts (/etc/rc.local)
************ Welcome to i.MX6 ************
*     kernel version: linux-3.14.52       *
*          web: www.myzr.com.cn          *
*            Date: 2015/01/20            *
******************************************

.
回复 支持 反对

使用道具 举报

0

主题

146

帖子

432

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
432
地板
发表于 2018-3-28 09:18:38 | 只看该作者
wm8960那部分原理图发到我们公司邮箱。
回复 支持 反对

使用道具 举报

18

主题

47

帖子

257

积分

中级会员

Rank: 3Rank: 3

积分
257
5#
 楼主| 发表于 2018-3-28 11:44:04 | 只看该作者
软件02 发表于 2018-3-28 09:18
wm8960那部分原理图发到我们公司邮箱。

你好,已发贵司邮箱:service@myzr.com.cn。麻烦查收。
回复 支持 反对

使用道具 举报

0

主题

146

帖子

432

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
432
6#
发表于 2018-3-29 09:06:37 | 只看该作者
CONAN 发表于 2018-3-28 11:44
你好,已发贵司邮箱:。麻烦查收。

原理图已收到,我正在看。
回复 支持 反对

使用道具 举报

2

主题

15

帖子

100

积分

注册会员

Rank: 2

积分
100
8#
发表于 2018-4-25 16:52:16 | 只看该作者
楼主问题解决了吗?搭车同问,使用wm8960可以播放,但是播放声音很小,且无法调节
回复 支持 反对

使用道具 举报

2

主题

15

帖子

100

积分

注册会员

Rank: 2

积分
100
9#
发表于 2018-4-26 07:59:00 来自手机 | 只看该作者
CONAN 发表于 2018-4-3 11:37
看了一些资料,imx6s的板子的音频接在了SSI2上,而驱动使用了SAI,需要修改im-wm8960.c。
我的板子使用了R1 ...

最终是什么问题呢?
回复 支持 反对

使用道具 举报

36

主题

745

帖子

2872

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
2872
10#
发表于 2018-4-26 10:30:08 | 只看该作者
whxiaowang 发表于 2018-4-26 07:59
最终是什么问题呢?

IMX6q的音频接口是ssi,需要改驱动
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|明远智睿  

GMT+8, 2024-11-27 04:57 , Processed in 0.072975 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表