rk3399_arm_lvds/motorboard/Jtag.cpp

95 lines
1.7 KiB
C++

#include "Jtag.h"
Jtag::Jtag():jtag_tms(152),jtag_tck(156),jtag_tdi(155),jtag_tdo(72),COM_BOOT0(153)
{
printf("Jtag()\n");
char fname[128];
write_dev("/sys/class/gpio/export", 152);
write_dev("/sys/class/gpio/export", 156);
write_dev("/sys/class/gpio/export", 155);
write_dev("/sys/class/gpio/export", 72);
write_dev("/sys/class/gpio/export", 153);
jtag_tms.setDirection(Gpio::out);
jtag_tck.setDirection(Gpio::out);
jtag_tdi.setDirection(Gpio::out);
jtag_tdo.setDirection(Gpio::in);
COM_BOOT0.setDirection(Gpio::out);
COM_BOOT0.setValue(Gpio::High);
jtag_tms.setValue(Gpio::Low);
jtag_tck.setValue(Gpio::Low);
jtag_tdi.setValue(Gpio::Low);
}
void Jtag::TMS_Wr(u8 value)
{
if(value == 1)
jtag_tms.setValue(Gpio::High);
else
jtag_tms.setValue(Gpio::Low);
}
u8 Jtag::TMS_RD()
{
return jtag_tms.getValue();
}
void Jtag::TCK_Wr(u8 value)
{
if(value == 1)
jtag_tck.setValue(Gpio::High);
else
jtag_tck.setValue(Gpio::Low);
}
u8 Jtag::TCK_RD()
{
return jtag_tck.getValue();
}
void Jtag::TDI_Wr(u8 value)
{
if(value == 1)
jtag_tdi.setValue(Gpio::High);
else
jtag_tdi.setValue(Gpio::Low);
}
u8 Jtag::TDI_RD()
{
return jtag_tdi.getValue();
}
u8 Jtag::TDO_RD()
{
return jtag_tdo.getValue();
}
void Jtag::Anlogic_Calibration(void)
{
/*Apply 2 pulses to TCK.*/
TCK_Wr(1);
TCK_Wr(1);
TCK_Wr(0);
TCK_Wr(1);
TCK_Wr(0);
TCK_Wr(1);
TCK_Wr(1);
/*Delay for 1 millisecond. Pass on 1000 = 1ms delay.*/
Anlogic_ProcessRunTestTck(10000) ;
/*Apply 2 pulses to TCK*/
TCK_Wr(1);
TCK_Wr(1);
TCK_Wr(0);
TCK_Wr(1);
TCK_Wr(0);
TCK_Wr(1);
TCK_Wr(1);
}