static inline hi_void delay(hi_u32 n)
{
hi_u32 i;
for(i = 0; i < n; i++)
{
__asm__ __volatile__("nop");
}
}
static inline hi_void write0()
{
writel(0xff, GPI016_DATA); // 一次写寄存器时间大概是340ns
writel(0x0, GPI016_DATA); // 写两次寄存器,时间为680ns,满足单极性归零码时序要求
writel(0x0, GPI016_DATA);
delay(200); // 码元周期必须大于1.2us,这里通过空指令延时约360ns,这样整个码元周期就是1.38us,满足要求
}
static inline hi_void write1()
{
writel(0xff, GPI016_DATA);
writel(0xff, GPI016_DATA);
writel(0x0, GPI016_DATA);
delay(200);
}
static inline hi_void reset()
{
writel(0x0, GPI016_DATA);
usleep(300);
}