尊敬的支持:
我们已经完成了 TAS2770放大器与 EVM 板的评估、目前正在将其集成到我们的音频模块设计中。 我们面临两个问题
1) 1)为其创建 devicetree
TAS 2770放大器的 i2c 部分如下所示:
i2c0{(&I)
状态="正常";
时钟频率=<400000>;
tas2770:tas2770@41{
#address-cells =<1>;
#sound-di-cells =<0>;
#size-cells =<0>;
兼容="ti、tas2770";
reg =<0x41>;
TI、ASI-format =<0>;
TI、imon-slot-no =<0>;
TI、VMON-SLOT-NO =<2>;
};
};
在这种情况下、Linux 内核出现"no pinctrl hande"错误:
[1.760000] 总线:"I2C_PROBE:使用器件0-0041探测驱动程序 tas2770
[1.761000] tas2770 0-0041:无 pinctrl 句柄
[1.763000] 8<--剪切此处----
[1.764000] 无法在虚拟地址00000044处处理内核 NULL 指针解除引用
[1.765000] PgD =(ptrval)
[1.766000] [00000044]* PgD=00000000
[1.767000] 内部错误:Oops:5 [#1]抢占 SMP Thumb2
[1.767000] 链接的模块:
[1.767000] CPU:0 PID:1 Comm:swapper/0未被污染5.5.0-rc5 #1
[1.767000] 硬件名称:All赢家 sun8i 系列
[1.767000] PC 处于 Snd_soc_component_write+0x0/0x20
[1.767000] LR 位于 tas2770_i2c_probe+0xd7/0x190
[1.767000] PC:[<8048c050>] LR:[<804de08f>] PSR:00000033
[1.767000] sp:8e82dde8 IP:8e048c00 FP:00000000
[1.767000] R10:80ed8524 R9:00000000 R8:00000000
[1.767000] r7:8e035820 R6:8e035800 R5:8e149bc0 R4:00000000
[1.767000] r3:f03e5b2d r2:00000001 r1:00000001 r0:00000000
[1.767000] 标志: 在模式 SVC_32 ISA Thumb 段无时、FIQ 上的 nzcv IRQ
[1.767000] 控制:50c5387d 表:4000406a DAC:00000051
[1.767000] 进程 swapper/0 (pid:1、栈限制= 0x (ptrval))
[1.767000] 堆栈:(0x8e82dde8至0x8e82e000)
[1.767000] dde0: 00000000 8e035820 804ddfb9 80e7720c 8e035800 804017b1
[1.767000] de00:80ed8520 00000000 8e035820 00000000 80e7720c 8036933d 8e031940 00000000
[1.767000] de20:8e035820 80e7720c 80c375e4 80e03e88 00000000 000000d9 00000007 803695f5
[1.767000] de40:80c375e4 8043c2f5 80e3df2c 8e035820 00000000 80e7720c 80e03e88 00000000
我们是否错过了 devictree 中的某个条目? 我们使用的是内核5.5-rc5的 tas2770驱动程序。 论坛中有一个线程指向 TI 提供的另一个驱动程序-哪一个是首选使用的驱动程序? 您能否提供一些有关如何编译它并为其配置 devicetree 的提示?
2) 2)通过 i2c 手动控制 TAS2770
为了继续软件开发直到1)问题解决、我们创建了一些脚本、以使用用户空间中的 T2C-tools 初始化和控制 TAS2770放大器。 这种方法运行良好、但有一个例外:我们无法在最后为放大器加电
我们进行复位、然后寄存器0x02出现0xE 值。 如果我们尝试将位0和位1设置为0 (放大器处于活动状态)、运算结果始终为0x2 (SW 关断)。 无论我们是否尝试、该值都不会改变。 我们使用的 EVM 板通过 I2C 线路连接到我们的音频模块。 这些是我们尝试执行的命令:
设置页0:
i2cset -y 0 0x41 0x0 0x0
设置功率寄存器
i2cset -y 0 0x41 0x02 0x0 b
检查设置值:
i2cget -y 0 0x41 0x02
0x02
您是否有任何想法、这里会出现什么问题? 将跳线设置为使用外部 i2c 时、我是否应断开 USB 电缆与 EVM 板的连接?
非常感谢您的参与、
Alex