11#include "iLink_internal.h"
15#define RdPhy 0x80000000
16#define WrPhy 0x40000000
18static void iLinkPhySync(
void)
20 while (ILINKRegisterBase->PHYAccess & (RdPhy | WrPhy)) {};
23unsigned char iLinkReadPhy(
unsigned char address)
25 ILINKRegisterBase->PHYAccess = (((
unsigned int)address) << 24) | RdPhy;
28 while (!(ILINKRegisterBase->intr0 & iLink_INTR0_PhyRRx)) {};
29 ILINKRegisterBase->intr0 = iLink_INTR0_PhyRRx;
31 return (ILINKRegisterBase->PHYAccess & 0xFF);
34void iLinkWritePhy(
unsigned char address,
unsigned char data)
36 ILINKRegisterBase->PHYAccess = (((
unsigned int)address) << 24) | (((
unsigned int)data) << 16) | WrPhy;
40void iLinkPHY_SetRootBit(
int isRoot)
42 unsigned short int Register01value;
44 Register01value = iLinkReadPhy(1);
46 Register01value |= REG01_RHB;
48 Register01value &= (~REG01_RHB);
50 iLinkWritePhy(1, Register01value);
53void iLinkPHY_SetGapCount(
unsigned char GapCount)
55 iLinkWritePhy(1, (iLinkReadPhy(1) & 0xC0) | GapCount);
58void iLinkPHY_SetLCTRL(
int LCTRL_status)
60 unsigned short int Register04value;
62 Register04value = iLinkReadPhy(4);
64 Register04value |= REG04_LCTRL;
66 Register04value &= (~REG04_LCTRL);
68 iLinkWritePhy(4, Register04value);
71void iLinkPHYBusReset(
void)
73 iLinkWritePhy(5, iLinkReadPhy(5) | REG05_ISBR);