power down Lane1 Lane2 Lane3 Lane4 Lane5 of serdes 1 for lx2160a

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

power down Lane1 Lane2 Lane3 Lane4 Lane5 of serdes 1 for lx2160a

ソリューションへジャンプ
1,062件の閲覧回数
156614400
Contributor III

I set the RCW of lx2160a


SRDS_PRTCL_S1=8
SRDS_PLL_PD_PLL1=1
SRDS_REFCLKF_DIS_S1=1

but only use serdes 1's XFI.3 XFI.9 XFI.10 (Lane0 Lane6 Lane7)
want to power down Lane1 Lane2 Lane3 Lane4 Lane5 of serdes 1
which register can be controled to power down Lane1 Lane2 Lane3 Lane4 Lane5
Thanks

0 件の賞賛
1 解決策
1,057件の閲覧回数
ufedor
NXP Employee
NXP Employee

Please refer to the QorIQ LX2160A Reference Manual, Rev. 0, 26.10.2 Unused Lanes
Unused lanes should be powered down to save power and avoid noise on adjacent lanes.
Power down the Rx portion of the lanes by setting LNmRRSTCTL[STP_REQ]=1, waiting for STP_REQ to clear, and then LNmRRSTCTL[DIS]=1.
Power down the Tx portion of the lanes by setting LNmTRSTCTL[STP_REQ]=1, waiting for STP_REQ to clear, and then LNmTRSTCTL[DIS]=1.

元の投稿で解決策を見る

0 件の賞賛
3 返答(返信)
1,048件の閲覧回数
156614400
Contributor III

//power down serdes 1 lane 1 2 3 4 5
u32 srds1_base_addr = 0x1EA0000;
int lane = 1;
u32 val, tmp;
for(lane=1; lane<6; lane++)
{
tmp = readl(srds1_base_addr + 0x820 + 0x100*lane);
val = 0x5000000;
val = val | tmp;
writel(val, srds1_base_addr + 0x820 + 0x100*lane);
writel(val, srds1_base_addr + 0x820 + 0x100*lane);
tmp = readl(srds1_base_addr + 0x840 + 0x100*lane);
val = 0x5000000;
val = val | tmp;
writel(val, srds1_base_addr + 0x840 + 0x100*lane);
writel(val, srds1_base_addr + 0x840 + 0x100*lane);
}

0 件の賞賛
1,058件の閲覧回数
ufedor
NXP Employee
NXP Employee

Please refer to the QorIQ LX2160A Reference Manual, Rev. 0, 26.10.2 Unused Lanes
Unused lanes should be powered down to save power and avoid noise on adjacent lanes.
Power down the Rx portion of the lanes by setting LNmRRSTCTL[STP_REQ]=1, waiting for STP_REQ to clear, and then LNmRRSTCTL[DIS]=1.
Power down the Tx portion of the lanes by setting LNmTRSTCTL[STP_REQ]=1, waiting for STP_REQ to clear, and then LNmTRSTCTL[DIS]=1.

0 件の賞賛
1,048件の閲覧回数
156614400
Contributor III

add code in uboot

 

//power down serdes 1 lane 1 2 3 4 5
u32 srds1_base_addr = 0x1EA0000;
int lane = 1;
u32 val, tmp;
for(lane=1; lane<6; lane++)
{
tmp = readl(srds1_base_addr + 0x820 + 0x100*lane);
val = 0x5000000;
val = val | tmp;
writel(val, srds1_base_addr + 0x820 + 0x100*lane);
writel(val, srds1_base_addr + 0x820 + 0x100*lane);
tmp = readl(srds1_base_addr + 0x840 + 0x100*lane);
val = 0x5000000;
val = val | tmp;
writel(val, srds1_base_addr + 0x840 + 0x100*lane);
writel(val, srds1_base_addr + 0x840 + 0x100*lane);
}

0 件の賞賛