This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] PROCESSOR-SDK-J784S4:从 SDK 9.2迁移至10.1后、tscadc0不工作

Guru**** 2409250 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1482955/processor-sdk-j784s4-tscadc0-not-working-after-migration-from-sdk-9-2-to-10-1

器件型号:PROCESSOR-SDK-J784S4

工具与软件:

你(们)好

目前、我们正在将定制电路板从 SDK 9.2迁移到10.1。 很遗憾、 tscadc0器件在 Linux 端不再工作。

设备树配置为:

&wkup_pmx2 {
	mcu_adc0_pins_default: mcu-adc0-pins-default {
		pinctrl-single,pins = <
			J784S4_WKUP_IOPAD(0x0cc, PIN_INPUT, 0) /* (P36) MCU_ADC0_AIN0 */ /* WKUP_PADCONFIG_77 */
			J784S4_WKUP_IOPAD(0x0d0, PIN_INPUT, 0) /* (V36) MCU_ADC0_AIN1 */ /* WKUP_PADCONFIG_78 */
			J784S4_WKUP_IOPAD(0x0d4, PIN_INPUT, 0) /* (T34) MCU_ADC0_AIN2 */ /* WKUP_PADCONFIG_79 */
			J784S4_WKUP_IOPAD(0x0d8, PIN_INPUT, 0) /* (T36) MCU_ADC0_AIN3 */ /* WKUP_PADCONFIG_80 */
			J784S4_WKUP_IOPAD(0x0dc, PIN_INPUT, 0) /* (P34) MCU_ADC0_AIN4 */ /* WKUP_PADCONFIG_81 */
			J784S4_WKUP_IOPAD(0x0e0, PIN_INPUT, 0) /* (R37) MCU_ADC0_AIN5 */ /* WKUP_PADCONFIG_82 */
			J784S4_WKUP_IOPAD(0x0e4, PIN_INPUT, 0) /* (R33) MCU_ADC0_AIN6 */ /* WKUP_PADCONFIG_83 */
			J784S4_WKUP_IOPAD(0x0e8, PIN_INPUT, 0) /* (V38) MCU_ADC0_AIN7 */ /* WKUP_PADCONFIG_84 */
		>;
	};
};

&tscadc0 {
	pinctrl-0 = <&mcu_adc0_pins_default>;
	pinctrl-names = "default";
	status = "okay";
	adc {
		ti,adc-channels = <0 1 2 3 4 5 6 7>;
	};
};

下面是我们看到的一些调试消息:

[   18.343131] platform 40200000.tscadc: Retrying from deferred list
[   18.343205] bus: 'platform': __driver_probe_device: matched device 40200000.tscadc with driver ti_am3359-tscadc
[   18.343210] bus: 'platform': really_probe: probing driver ti_am3359-tscadc with device 40200000.tscadc
[   18.343427] ti_am3359-tscadc 40200000.tscadc: Driver ti_am3359-tscadc requests probe deferral
[   18.343431] really_probe: call_driver_probe(40200000.tscadc) failed
[   18.343453] platform 40200000.tscadc: Added to deferred list

经过 几个小时的调试后、我们发现以下函数中的 drivers/base/dd.c 中的探测器出现故障:

static int call_driver_probe(struct device *dev, struct device_driver *drv)
{
	int ret = 0;

	if (dev->bus->probe)
		ret = dev->bus->probe(dev);
	else if (drv->probe)
		ret = drv->probe(dev);

	switch (ret) {
	case 0:
		break;
	case -EPROBE_DEFER:
		/* Driver requested deferred probing */
		dev_dbg(dev, "Driver %s requests probe deferral\n", drv->name);
		break;
	case -ENODEV:
	case -ENXIO:
		pr_debug("%s: probe of %s rejects match %d\n",
			 drv->name, dev_name(dev), ret);
		break;
	default:
		/* driver matched but the probe failed */
		pr_warn("%s: probe of %s failed with error %d\n",
			drv->name, dev_name(dev), ret);
		break;
	}

	return ret;
}

我们是否错过了 u-boot/MCU 1/0固件中阻止对总线进行访问的某些配置?

此致

Daniel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Daniel、您好!

    根据与 devicetree 兼容的字段、驱动程序应该会在此处的 ti_tscadc_probe 函数中出现故障: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/mfd/ti_am335x_tscadc.c?h=ti-linux-6.6.y#n115

    您是否能够确定该探测函数中的哪个行会返回-EPROBE_DELAY?

    此致、

    Takuma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Takuma

    我们可以看到器件上电会失败:

    [   17.720602] ti_am3359-tscadc 40200000.tscadc: adding to PM domain pd:0
    [   17.720606] ti_am3359-tscadc 40200000.tscadc: genpd_add_device()
    [   17.720727] ti-sci 44083000.system-controller: MSGHDR:type=0x0200 host=0x0c seq=0x00 flags=0x00000000
    [   17.720748] ti_am3359-tscadc 40200000.tscadc: genpd_remove_device()
    [   17.720758] ti_am3359-tscadc 40200000.tscadc: Driver ti_am3359-tscadc requests probe deferral

    这是-eprobe_defer 的来源:

    https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/base/power/domain.c?h=ti-linux-6.6.y#n2787

    此致

    Daniel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Daniel、您好!

    感谢您的观看。 这有点奇怪、在上电期间驱动程序发生故障。

    我想您过去已经为不同的线程共享了一些 dmesg 日志、但是...

    • 您能再次共享完整的 dmesg 日志吗? 无需删除任何已启用的额外调试日志
    • 您能否共享定制电路板的 dts 文件、以及用于构建 dtb 文件的 k3-j784s4-mcu-wakeup.dtsi 文件? dtsi 文件应该包含 tscadc0的电源域属性、最好检查 电路板 dts 文件是否存在任何资源冲突。

    此致、

    Takuma

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、Takuma

    此问题出现在我们的 MCU 1/0固件上。

    感谢您的帮助!

    此致

    Daniel