forked from M-Labs/artiq
disable DRTIO-over-EEM OSERDES until clock is stable
This asserts OOB reset on EFC.
This commit is contained in:
parent
5e5d671f4c
commit
7f63bb322d
@ -267,6 +267,9 @@ pub fn init() {
|
|||||||
// enable TX after the reboot, with stable clock
|
// enable TX after the reboot, with stable clock
|
||||||
unsafe {
|
unsafe {
|
||||||
csr::gt_drtio::txenable_write(0xffffffffu32 as _);
|
csr::gt_drtio::txenable_write(0xffffffffu32 as _);
|
||||||
|
|
||||||
|
#[cfg(has_drtio_eem)]
|
||||||
|
csr::eem_transceiver::txenable_write(0xffffffffu32 as _);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -556,6 +556,11 @@ pub extern fn main() -> i32 {
|
|||||||
csr::gt_drtio::txenable_write(0xffffffffu32 as _);
|
csr::gt_drtio::txenable_write(0xffffffffu32 as _);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(has_drtio_eem)]
|
||||||
|
unsafe {
|
||||||
|
csr::eem_transceiver::txenable_write(0xffffffffu32 as _);
|
||||||
|
}
|
||||||
|
|
||||||
init_rtio_crg();
|
init_rtio_crg();
|
||||||
|
|
||||||
#[cfg(has_drtio_eem)]
|
#[cfg(has_drtio_eem)]
|
||||||
|
@ -109,6 +109,8 @@ class TXSerdes(Module):
|
|||||||
ser_out = [ Signal() for _ in range(4) ]
|
ser_out = [ Signal() for _ in range(4) ]
|
||||||
t_out = [ Signal() for _ in range(4) ]
|
t_out = [ Signal() for _ in range(4) ]
|
||||||
|
|
||||||
|
self.ext_rst = Signal()
|
||||||
|
|
||||||
for i in range(4):
|
for i in range(4):
|
||||||
self.specials += [
|
self.specials += [
|
||||||
# Serializer
|
# Serializer
|
||||||
@ -118,7 +120,7 @@ class TXSerdes(Module):
|
|||||||
p_INIT_OQ=0b00000,
|
p_INIT_OQ=0b00000,
|
||||||
o_OQ=ser_out[i],
|
o_OQ=ser_out[i],
|
||||||
o_TQ=t_out[i],
|
o_TQ=t_out[i],
|
||||||
i_RST=ResetSignal(),
|
i_RST=ResetSignal() | self.ext_rst,
|
||||||
i_CLK=ClockSignal("sys5x"),
|
i_CLK=ClockSignal("sys5x"),
|
||||||
i_CLKDIV=ClockSignal(),
|
i_CLKDIV=ClockSignal(),
|
||||||
i_D1=self.txdata[i][0],
|
i_D1=self.txdata[i][0],
|
||||||
@ -529,3 +531,6 @@ class EEMSerdes(Module, TransceiverInterface, AutoCSR):
|
|||||||
self.rst.attr.add("no_retiming")
|
self.rst.attr.add("no_retiming")
|
||||||
|
|
||||||
TransceiverInterface.__init__(self, channel_interfaces, async_rx=False)
|
TransceiverInterface.__init__(self, channel_interfaces, async_rx=False)
|
||||||
|
|
||||||
|
for tx_en, serdes in zip(self.txenable.storage, serdes_list):
|
||||||
|
self.comb += serdes.tx_serdes.ext_rst.eq(~tx_en)
|
||||||
|
Loading…
Reference in New Issue
Block a user