nt9856x/BSP/linux-kernel/drivers/net/phy/na51055_reg.h
2023-03-28 15:07:53 +08:00

107 lines
2.9 KiB
C
Executable File

/*
* drivers/net/phy/novatek_reg.h
*
* Novatek PHYs register
*
* Copyright (c) 2019 Novatek Microelectronics Corp.
*
*/
/* Workaround: Phy reset detection when DUT AN fail(SUT set speed from 10m to 100m) */
//#define NVT_PHY_AN_FAIL_10M_TO_100M
#define HW_RESET_ADDRESS 0xFD020088
#define HW_RESET_MASK 0xC0000000
#define SW_RESET_ADDRESS 0xFD2B3800
#define SW_RESET_MASK 0x00000002
#define PLLREGWR_MASK 0x00000008
#define EQ_RESET_ADDRESS 0xFD2B3818
#define EQ_RESET_MASK 0x00000002
#define PHY_REGISTER_READ(data,addr) do { \
data = ioread32((void *)addr); \
}while(0)
#define phy_hw_reset_enable() do { \
unsigned long v; \
v = ioread32((void *)HW_RESET_ADDRESS); \
v &= ~(HW_RESET_MASK); \
iowrite32(v, (void *)HW_RESET_ADDRESS);\
}while(0)
#define phy_hw_reset_disable() do { \
unsigned long v; \
v = ioread32((void *)HW_RESET_ADDRESS); \
v |= HW_RESET_MASK; \
iowrite32(v, (void *)HW_RESET_ADDRESS);\
}while(0)
#define phy_sw_reset_enable() do { \
unsigned long v; \
v = ioread32((void *)SW_RESET_ADDRESS); \
v |= SW_RESET_MASK; \
iowrite32(v, (void *)SW_RESET_ADDRESS);\
}while(0)
#define phy_sw_reset_disable() do { \
unsigned long v; \
v = ioread32((void *)SW_RESET_ADDRESS); \
v |= PLLREGWR_MASK; \
v &= ~(SW_RESET_MASK); \
iowrite32(v, (void *)SW_RESET_ADDRESS);\
}while(0)
#define eq_reset_enable() do { \
unsigned long v; \
v = ioread32((void *)EQ_RESET_ADDRESS); \
v |= EQ_RESET_MASK; \
iowrite32(v, (void *)EQ_RESET_ADDRESS);\
}while(0)
#define eq_reset_disable() do { \
unsigned long v; \
v = ioread32((void *)EQ_RESET_ADDRESS); \
v &= ~(EQ_RESET_MASK); \
iowrite32(v, (void *)EQ_RESET_ADDRESS);\
}while(0)
#define set_break_link_timer() do { \
iowrite32(0x53, (void *)0xFD2B3A88);\
iowrite32(0x07, (void *)0xFD2B3A8C);\
iowrite32(0xC9, (void *)0xFD2B3A84);\
}while(0)
#define set_one_led_link_act() do { \
iowrite32(0x40, (void *)0xFD2B3900);\
iowrite32(0x300, (void *)0xFD2B300C);\
}while(0)
#define set_two_leds_link_act() do { \
iowrite32(0x40, (void *)0xFD2B3900);\
iowrite32(0x312, (void *)0xFD2B300C);\
}while(0)
#define set_led_inv() do { \
unsigned long v; \
v = ioread32((void *)0xFD2B300C); \
v &= ~(0x3<<8); \
iowrite32(v, (void *)0xFD2B300C);\
} while (0)
#define set_best_setting() do { \
unsigned long v; \
v = ioread32((void *)0xFD2B3AF8); \
v &= ~(0x07); \
v |= (0x03); \
iowrite32(v, (void *)0xFD2B3AF8);\
v = ioread32((void *)0xFD2B3B54); \
v |= (1<<7); \
iowrite32(v, (void *)0xFD2B3B54);\
v = ioread32((void *)0xFD2B3B58); \
v |= (0x3<<4); \
iowrite32(v, (void *)0xFD2B3B58);\
}while(0)