问题
在启动基于K26设计的扩展板时,遇到下列错误。
[5.858755]ata1:SATAmaxUDMA/133mmio[mem0xfd0c0000-0xfd0c1fff]port0x100irq46 [5.866665]ata2:SATAmaxUDMA/133mmio[mem0xfd0c0000-0xfd0c1fff]port0x180irq46 [6.187547]ata1:SATAlinkdown(SStatus0SControl330) [8.085543]ata2:SATAlinkdown(SStatus1SControl330)
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_Expref_clk2gt-lane3,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"; };
其次通过psgtr的属性clocks定义每个GTR Lan使用的参考时钟。
/* k26_Expref_clk2gt-lane3,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 (forDP, SATA or USB)。第4个是reference clock number,设置为2。
&sata{ /*SATAOOBtimingsettings*/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的启动信息如下。
SATAlink0timeout. Targetspinuptook0ms. AHCI0001.030132slots2ports6Gbps0x3implSATAmode flags:64bitncqpmcloonlypmpfbsspioslumpartcccapst Device0:(1:0)Vendor:ATAProd.:ThinkplusST600Rev:V092 Type:HardDisk Capacity:953869.7MB=931.5GB(1953525168x512) Hitanykeytostopautoboot:0
Linux的启动信息如下。
[2.278328]zynqmp-displayfd4a0000.display:ZynqMPDisplayPortSubsystemdriverprobed [2.286627]ahci-cevafd0c0000.ahci:supplyahcinotfound,usingdummyregulator [2.294183]ahci-cevafd0c0000.ahci:supplyphynotfound,usingdummyregulator [2.301650]ahci-cevafd0c0000.ahci:supplytargetnotfound,usingdummyregulator [2.309511]ahci-cevafd0c0000.ahci:AHCI0001.030132slots2ports6Gbps0x3implplatformmode [2.318469]ahci-cevafd0c0000.ahci:flags:64bitncqsntfpmcloonlypmpfbspioslumpartcccsdsapst [2.328892]scsihost0:ahci-ceva [2.332498]scsihost1:ahci-ceva [2.335920]ata1:SATAmaxUDMA/133mmio[mem0xfd0c0000-0xfd0c1fff]port0x100irq47 [2.343838]ata2:SATAmaxUDMA/133mmio[mem0xfd0c0000-0xfd0c1fff]port0x180irq47p2 [2.664566]ata1:SATAlinkdown(SStatus0SControl330) [2.834331]ata2:SATAlinkup6.0Gbps(SStatus133SControl330) [2.841882]ata2.00:ATA-10:ThinkplusST600M.21TB,V0923A0,maxUDMA/133 [2.848840]ata2.00:1953525168sectors,multi1:LBA48NCQ(depth32) [2.857553]ata2.00:configuredforUDMA/133 [2.862020]scsi1:0:0:0:Direct-AccessATAThinkplusST6003A0PQ:0ANSI:5
Linux下的块设备信息如下:
/dev/sda1455G4.0G451G1%/run/media/sda1 /dev/sda2469G7.6G437G2%/run/media/sda2
参考文档
Zynq UltrascaleMPSOC Linux SIOU driver
Documentation/devicetree/bindings/phy/xlnx,zynqmp-psgtr.yaml
测试单板
K26
2022.1
审核编辑:汤梓红
- amd
+关注
关注
25文章
5327浏览量
133231 - SATA
+关注
关注
0文章
262浏览量
83094 - Xilinx
+关注
关注
70文章
2133浏览量
120124 - MPSoC
+关注
关注
0文章
194浏览量
24178
发布评论请先登录
相关推荐
评论