首页 > 其他分享 >AMD-Xilinx MPSoC的SATA的psgtr的配置

AMD-Xilinx MPSoC的SATA的psgtr的配置

时间:2023-02-21 17:23:13浏览次数:63  
标签:MPSoC clock ahci psgtr AMD SATA ceva ref

问题

在启动基于K26设计的扩展板时,遇到下列错误。

 [    5.858755] ata1: SATA max UDMA/133 mmio [mem 0xfd0c0000-0xfd0c1fff] port 0x100 irq 46
 [    5.866665] ata2: SATA max UDMA/133 mmio [mem 0xfd0c0000-0xfd0c1fff] port 0x180 irq 46
 [    6.187547] ata1: SATA link down (SStatus 0 SControl 330)
 [    8.085543] ata2: SATA link down (SStatus 1 SControl 330)

Devicetree 设置

检查硬件设计,SATA使用Lane 3,ref_clk2。时钟是固定时钟。

首先定义参考时钟。其中的psgtr_ref_clk_2 ,是SATA使用的125MHz的参考时钟。

/ {
	psgtr_ref_clk_0_dp: psgtr_ref_clk_0 {
		u-boot,dm-pre-reloc;
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <27000000>;
	};

	psgtr_ref_clk_1_usb3: psgtr_ref_clk_1 {
		u-boot,dm-pre-reloc;
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <100000000>;
	};

	psgtr_ref_clk_2_sata: psgtr_ref_clk_2 {
		u-boot,dm-pre-reloc;
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <125000000>;
	};

	psgtr_ref_clk_3_unused: psgtr_ref_clk_3 {
		u-boot,dm-pre-reloc;
		compatible = "fixed-clock";
		#clock-cells = <0>;
		clock-frequency = <19200000>;
	};
};

其次通过psgtr的属性clocks定义每个GTR Lan使用的参考时钟。

/*
   k26_Exp ref_clk2 gt-lane 3, ref_clk2
*/
&psgtr {
	/* nc, sata, usb3, dp */
	clocks = <&psgtr_ref_clk_0_dp>, <&psgtr_ref_clk_1_usb3>, <&psgtr_ref_clk_2_sata>, <&psgtr_ref_clk_3_unused>;
	clock-names = "ref0", "ref1", "ref2", "ref3";
};

最后定义SATA使用的Phy的属性phys。根据参考文档,phys有四个属性。第1个是GTR lane,因此设置为3。第2个是PHY type,设置为PHY_TYPE_SATA。第3个是PHY instance,设置为1 (for DP, SATA or USB)。第4个是reference clock number,设置为2。

&sata {
	/* SATA OOB timing settings */
	ceva,p0-cominit-params = /bits/ 8 <0x18 0x40 0x18 0x28>;
	ceva,p0-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>;
	ceva,p0-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
	ceva,p0-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
	ceva,p1-cominit-params = /bits/ 8 <0x18 0x40 0x18 0x28>;
	ceva,p1-comwake-params = /bits/ 8 <0x06 0x14 0x08 0x0E>;
	ceva,p1-burst-params = /bits/ 8 <0x13 0x08 0x4A 0x06>;
	ceva,p1-retry-params = /bits/ 16 <0x96A4 0x3FFC>;
	phy-names = "sata-phy";

	phys = <&psgtr 3 PHY_TYPE_SATA 1 2>;
};

正常日志

使用上述设置后,SATA启动正常。Linux的启动信息如下。

U-Boot的启动信息如下。

SATA link 0 timeout.
Target spinup took 0 ms.
AHCI 0001.0301 32 slots 2 ports 6 Gbps 0x3 impl SATA mode
flags: 64bit ncq pm clo only pmp fbss pio slum part ccc apst
  Device 0: (1:0) Vendor: ATA Prod.: Thinkplus ST600 Rev: V092
            Type: Hard Disk
            Capacity: 953869.7 MB = 931.5 GB (1953525168 x 512)
Hit any key to stop autoboot:  0

Linux的启动信息如下。

[    2.278328] zynqmp-display fd4a0000.display: ZynqMP DisplayPort Subsystem driver probed
[    2.286627] ahci-ceva fd0c0000.ahci: supply ahci not found, using dummy regulator
[    2.294183] ahci-ceva fd0c0000.ahci: supply phy not found, using dummy regulator
[    2.301650] ahci-ceva fd0c0000.ahci: supply target not found, using dummy regulator
[    2.309511] ahci-ceva fd0c0000.ahci: AHCI 0001.0301 32 slots 2 ports 6 Gbps 0x3 impl platform mode
[    2.318469] ahci-ceva fd0c0000.ahci: flags: 64bit ncq sntf pm clo only pmp fbs pio slum part ccc sds apst
[    2.328892] scsi host0: ahci-ceva
[    2.332498] scsi host1: ahci-ceva
[    2.335920] ata1: SATA max UDMA/133 mmio [mem 0xfd0c0000-0xfd0c1fff] port 0x100 irq 47
[    2.343838] ata2: SATA max UDMA/133 mmio [mem 0xfd0c0000-0xfd0c1fff] port 0x180 irq 47p2

[    2.664566] ata1: SATA link down (SStatus 0 SControl 330)

[    2.834331] ata2: SATA link up 6.0 Gbps (SStatus 133 SControl 330)
[    2.841882] ata2.00: ATA-10: Thinkplus ST600 M.2 1TB, V0923A0, max UDMA/133
[    2.848840] ata2.00: 1953525168 sectors, multi 1: LBA48 NCQ (depth 32)
[    2.857553] ata2.00: configured for UDMA/133
[    2.862020] scsi 1:0:0:0: Direct-Access     ATA      Thinkplus ST600  3A0  PQ: 0 ANSI: 5

Linux下的块设备信息如下:

/dev/sda1       455G  4.0G  451G   1% /run/media/sda1
/dev/sda2       469G  7.6G  437G   2% /run/media/sda2

参考文档

Zynq Ultrascale MPSOC Linux SIOU driver

Documentation/devicetree/bindings/phy/xlnx,zynqmp-psgtr.yaml

测试单板

K26
2022.1

标签:MPSoC,clock,ahci,psgtr,AMD,SATA,ceva,ref
From: https://www.cnblogs.com/hankfu/p/17141726.html

相关文章

  • AMD-Xilinx MPSoC的Watchdog在Linux中使用的简明教程
    AMD-XilinxMPSoC的器件里,提供了内置的Watchdog。在Vivado里选择Watchdog,并在设备树里使能Watchdog,还不能在Linux中正常使用。pmu-firmware修改如果要在Linux中使用Watch......
  • c++ 11 lamda 如何实现 linq 中 先 where 再 select 的功能
    面向AI编程,回答如下:在C++11中,可以使用lambda表达式和算法库中的std::copy_if和std::transform算法来实现LINQ中先where再select的功能。具体来说,可以先使用......
  • 《DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南》第十三章 QSPI Flash读写测试实验​
    QSPIFlash读写测试实验​PS的输入/输出外设(IOP)有两个具有不同功能特性和IO接口性能的QSPI控制器。它们共享相同的APB从接口和MIO引脚。一次只能使用控制器中的一个。QSPI......
  • Lamda表达式
              ......
  • Nvidia/AMD GPU与新能源汽车杂谈
    Nvidia/AMDGPU与新能源汽车杂谈Nvidia/AMD竞争:GPU架构创新升级和新兴领域前瞻探索1999年NVIDIA提出GPU概念,GPU已经有20余年发展历史;NVIDIA率先构筑通用计算的CUDA生态,引......
  • Lamda表达式
    Lamda表达式的实质是函数式编程函数式接口,任何接口,如果只包含唯一的一个抽象方法,那么他就是一个函数式接口对于函数式接口,可以通过lamda表达式来创建该接口的对象是一......
  • Lamda 表达式比较器
    比较器Comparator接口lamda表达式定法和比较器类写法publicclassStringComparatorimplementsComparator<String>{@Overridepublicintcompare(S......
  • Fix error - processing package linux-headers-6.0.0-kali6-amd64 (--configure)
    Fixerror-processingpackagelinux-headers-6.0.0-kali6-amd64(--configure)Issue:Settinguplinux-headers-6.0.0-kali6-amd64(6.0.12-1kali1).../etc/kernel/......
  • Java lamdba表达式
    JavaLambda表达式函数式接口任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数时接口publicinterfaceRunnable{ publicabstractvoidrun();}推导方法:......
  • CSAPP随笔: Amdahl(阿姆达尔)定律
         主要思想:对系统的某个部分加速时,对系统整体的影响取决于该部分对于整体的重要性及加速效果。  Told:系统执行应用程序的耗时。  alpha:系统某......