|  | @@ -89,3 +89,141 @@
 | 
	
		
			
				|  |  |  #define NETX_VA_UART0    (NETX_IO_VIRT + NETX_OFS_UART0)
 | 
	
		
			
				|  |  |  #define NETX_VA_UART1    (NETX_IO_VIRT + NETX_OFS_UART1)
 | 
	
		
			
				|  |  |  #define NETX_VA_UART2    (NETX_IO_VIRT + NETX_OFS_UART2)
 | 
	
		
			
				|  |  | +#define NETX_VA_MIIMU    (NETX_IO_VIRT + NETX_OF_MIIMU)
 | 
	
		
			
				|  |  | +#define NETX_VA_SPI      (NETX_IO_VIRT + NETX_OFS_SPI)
 | 
	
		
			
				|  |  | +#define NETX_VA_I2C      (NETX_IO_VIRT + NETX_OFS_I2C)
 | 
	
		
			
				|  |  | +#define NETX_VA_SYSTIME  (NETX_IO_VIRT + NETX_OFS_SYSTIME)
 | 
	
		
			
				|  |  | +#define NETX_VA_RTC      (NETX_IO_VIRT + NETX_OFS_RTC)
 | 
	
		
			
				|  |  | +#define NETX_VA_EXTBUS   (NETX_IO_VIRT + NETX_OFS_EXTBUS)
 | 
	
		
			
				|  |  | +#define NETX_VA_LCD      (NETX_IO_VIRT + NETX_OFS_LCD)
 | 
	
		
			
				|  |  | +#define NETX_VA_USB      (NETX_IO_VIRT + NETX_OFS_USB)
 | 
	
		
			
				|  |  | +#define NETX_VA_XMAC0    (NETX_IO_VIRT + NETX_OFS_XMAC0)
 | 
	
		
			
				|  |  | +#define NETX_VA_XMAC1    (NETX_IO_VIRT + NETX_OFS_XMAC1)
 | 
	
		
			
				|  |  | +#define NETX_VA_XMAC2    (NETX_IO_VIRT + NETX_OFS_XMAC2)
 | 
	
		
			
				|  |  | +#define NETX_VA_XMAC3    (NETX_IO_VIRT + NETX_OFS_XMAC3)
 | 
	
		
			
				|  |  | +#define NETX_VA_XMAC(no) (NETX_IO_VIRT + NETX_OFS_XMAC(no))
 | 
	
		
			
				|  |  | +#define NETX_VA_PFIFO    (NETX_IO_VIRT + NETX_OFS_PFIFO)
 | 
	
		
			
				|  |  | +#define NETX_VA_XPEC0    (NETX_IO_VIRT + NETX_OFS_XPEC0)
 | 
	
		
			
				|  |  | +#define NETX_VA_XPEC1    (NETX_IO_VIRT + NETX_OFS_XPEC1)
 | 
	
		
			
				|  |  | +#define NETX_VA_XPEC2    (NETX_IO_VIRT + NETX_OFS_XPEC2)
 | 
	
		
			
				|  |  | +#define NETX_VA_XPEC3    (NETX_IO_VIRT + NETX_OFS_XPEC3)
 | 
	
		
			
				|  |  | +#define NETX_VA_XPEC(no) (NETX_IO_VIRT + NETX_OFS_XPEC(no))
 | 
	
		
			
				|  |  | +#define NETX_VA_VIC      (NETX_IO_VIRT + NETX_OFS_VIC)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/*********************************
 | 
	
		
			
				|  |  | + * System functions              *
 | 
	
		
			
				|  |  | + *********************************/
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/* Registers */
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_REG(ofs)            IOMEM(NETX_VA_SYSTEM + (ofs))
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_BOO_SR          NETX_SYSTEM_REG(0x00)
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_IOC_CR          NETX_SYSTEM_REG(0x04)
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_IOC_MR          NETX_SYSTEM_REG(0x08)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/* FIXME: Docs are not consistent */
 | 
	
		
			
				|  |  | +/* #define NETX_SYSTEM_RES_CR          NETX_SYSTEM_REG(0x08) */
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_RES_CR          NETX_SYSTEM_REG(0x0c)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_PHY_CONTROL     NETX_SYSTEM_REG(0x10)
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_REV             NETX_SYSTEM_REG(0x34)
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_IOC_ACCESS_KEY  NETX_SYSTEM_REG(0x70)
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_WDG_TR          NETX_SYSTEM_REG(0x200)
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_WDG_CTR         NETX_SYSTEM_REG(0x204)
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_WDG_IRQ_TIMEOUT NETX_SYSTEM_REG(0x208)
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_WDG_RES_TIMEOUT NETX_SYSTEM_REG(0x20c)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/* Bits */
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_RES_CR_RSTIN         (1<<0)
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_RES_CR_WDG_RES       (1<<1)
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_RES_CR_HOST_RES      (1<<2)
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_RES_CR_FIRMW_RES     (1<<3)
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_RES_CR_XPEC0_RES     (1<<4)
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_RES_CR_XPEC1_RES     (1<<5)
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_RES_CR_XPEC2_RES     (1<<6)
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_RES_CR_XPEC3_RES     (1<<7)
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_RES_CR_DIS_XPEC0_RES (1<<16)
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_RES_CR_DIS_XPEC1_RES (1<<17)
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_RES_CR_DIS_XPEC2_RES (1<<18)
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_RES_CR_DIS_XPEC3_RES (1<<19)
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_RES_CR_FIRMW_FLG0    (1<<20)
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_RES_CR_FIRMW_FLG1    (1<<21)
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_RES_CR_FIRMW_FLG2    (1<<22)
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_RES_CR_FIRMW_FLG3    (1<<23)
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_RES_CR_FIRMW_RES_EN  (1<<24)
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_RES_CR_RSTOUT        (1<<25)
 | 
	
		
			
				|  |  | +#define NETX_SYSTEM_RES_CR_EN_RSTOUT     (1<<26)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#define PHY_CONTROL_RESET            (1<<31)
 | 
	
		
			
				|  |  | +#define PHY_CONTROL_SIM_BYP          (1<<30)
 | 
	
		
			
				|  |  | +#define PHY_CONTROL_CLK_XLATIN       (1<<29)
 | 
	
		
			
				|  |  | +#define PHY_CONTROL_PHY1_EN          (1<<21)
 | 
	
		
			
				|  |  | +#define PHY_CONTROL_PHY1_NP_MSG_CODE
 | 
	
		
			
				|  |  | +#define PHY_CONTROL_PHY1_AUTOMDIX    (1<<17)
 | 
	
		
			
				|  |  | +#define PHY_CONTROL_PHY1_FIXMODE     (1<<16)
 | 
	
		
			
				|  |  | +#define PHY_CONTROL_PHY1_MODE(mode)  (((mode) & 0x7) << 13)
 | 
	
		
			
				|  |  | +#define PHY_CONTROL_PHY0_EN          (1<<12)
 | 
	
		
			
				|  |  | +#define PHY_CONTROL_PHY0_NP_MSG_CODE
 | 
	
		
			
				|  |  | +#define PHY_CONTROL_PHY0_AUTOMDIX    (1<<8)
 | 
	
		
			
				|  |  | +#define PHY_CONTROL_PHY0_FIXMODE     (1<<7)
 | 
	
		
			
				|  |  | +#define PHY_CONTROL_PHY0_MODE(mode)  (((mode) & 0x7) << 4)
 | 
	
		
			
				|  |  | +#define PHY_CONTROL_PHY_ADDRESS(adr) ((adr) & 0xf)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#define PHY_MODE_10BASE_T_HALF      0
 | 
	
		
			
				|  |  | +#define PHY_MODE_10BASE_T_FULL      1
 | 
	
		
			
				|  |  | +#define PHY_MODE_100BASE_TX_FX_FULL 2
 | 
	
		
			
				|  |  | +#define PHY_MODE_100BASE_TX_FX_HALF 3
 | 
	
		
			
				|  |  | +#define PHY_MODE_100BASE_TX_HALF    4
 | 
	
		
			
				|  |  | +#define PHY_MODE_REPEATER           5
 | 
	
		
			
				|  |  | +#define PHY_MODE_POWER_DOWN         6
 | 
	
		
			
				|  |  | +#define PHY_MODE_ALL                7
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/* Bits */
 | 
	
		
			
				|  |  | +#define VECT_CNTL_ENABLE               (1 << 5)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/*******************************
 | 
	
		
			
				|  |  | + * GPIO and timer module       *
 | 
	
		
			
				|  |  | + *******************************/
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/* Registers */
 | 
	
		
			
				|  |  | +#define NETX_GPIO_REG(ofs)                     IOMEM(NETX_VA_GPIO + (ofs))
 | 
	
		
			
				|  |  | +#define NETX_GPIO_CFG(gpio)                NETX_GPIO_REG(0x0  + ((gpio)<<2))
 | 
	
		
			
				|  |  | +#define NETX_GPIO_THRESHOLD_CAPTURE(gpio)  NETX_GPIO_REG(0x40 + ((gpio)<<2))
 | 
	
		
			
				|  |  | +#define NETX_GPIO_COUNTER_CTRL(counter)    NETX_GPIO_REG(0x80 + ((counter)<<2))
 | 
	
		
			
				|  |  | +#define NETX_GPIO_COUNTER_MAX(counter)     NETX_GPIO_REG(0x94 + ((counter)<<2))
 | 
	
		
			
				|  |  | +#define NETX_GPIO_COUNTER_CURRENT(counter) NETX_GPIO_REG(0xa8 + ((counter)<<2))
 | 
	
		
			
				|  |  | +#define NETX_GPIO_IRQ_ENABLE               NETX_GPIO_REG(0xbc)
 | 
	
		
			
				|  |  | +#define NETX_GPIO_IRQ_DISABLE              NETX_GPIO_REG(0xc0)
 | 
	
		
			
				|  |  | +#define NETX_GPIO_SYSTIME_NS_CMP           NETX_GPIO_REG(0xc4)
 | 
	
		
			
				|  |  | +#define NETX_GPIO_LINE                     NETX_GPIO_REG(0xc8)
 | 
	
		
			
				|  |  | +#define NETX_GPIO_IRQ                      NETX_GPIO_REG(0xd0)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/* Bits */
 | 
	
		
			
				|  |  | +#define NETX_GPIO_CFG_IOCFG_GP_INPUT                 (0x0)
 | 
	
		
			
				|  |  | +#define NETX_GPIO_CFG_IOCFG_GP_OUTPUT                (0x1)
 | 
	
		
			
				|  |  | +#define NETX_GPIO_CFG_IOCFG_GP_UART                  (0x2)
 | 
	
		
			
				|  |  | +#define NETX_GPIO_CFG_INV                            (1<<2)
 | 
	
		
			
				|  |  | +#define NETX_GPIO_CFG_MODE_INPUT_READ                (0<<3)
 | 
	
		
			
				|  |  | +#define NETX_GPIO_CFG_MODE_INPUT_CAPTURE_CONT_RISING (1<<3)
 | 
	
		
			
				|  |  | +#define NETX_GPIO_CFG_MODE_INPUT_CAPTURE_ONCE_RISING (2<<3)
 | 
	
		
			
				|  |  | +#define NETX_GPIO_CFG_MODE_INPUT_CAPTURE_HIGH_LEVEL  (3<<3)
 | 
	
		
			
				|  |  | +#define NETX_GPIO_CFG_COUNT_REF_COUNTER0             (0<<5)
 | 
	
		
			
				|  |  | +#define NETX_GPIO_CFG_COUNT_REF_COUNTER1             (1<<5)
 | 
	
		
			
				|  |  | +#define NETX_GPIO_CFG_COUNT_REF_COUNTER2             (2<<5)
 | 
	
		
			
				|  |  | +#define NETX_GPIO_CFG_COUNT_REF_COUNTER3             (3<<5)
 | 
	
		
			
				|  |  | +#define NETX_GPIO_CFG_COUNT_REF_COUNTER4             (4<<5)
 | 
	
		
			
				|  |  | +#define NETX_GPIO_CFG_COUNT_REF_SYSTIME              (7<<5)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#define NETX_GPIO_COUNTER_CTRL_RUN                   (1<<0)
 | 
	
		
			
				|  |  | +#define NETX_GPIO_COUNTER_CTRL_SYM                   (1<<1)
 | 
	
		
			
				|  |  | +#define NETX_GPIO_COUNTER_CTRL_ONCE                  (1<<2)
 | 
	
		
			
				|  |  | +#define NETX_GPIO_COUNTER_CTRL_IRQ_EN                (1<<3)
 | 
	
		
			
				|  |  | +#define NETX_GPIO_COUNTER_CTRL_CNT_EVENT             (1<<4)
 | 
	
		
			
				|  |  | +#define NETX_GPIO_COUNTER_CTRL_RST_EN                (1<<5)
 | 
	
		
			
				|  |  | +#define NETX_GPIO_COUNTER_CTRL_SEL_EVENT             (1<<6)
 | 
	
		
			
				|  |  | +#define NETX_GPIO_COUNTER_CTRL_GPIO_REF /* FIXME */
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +#define GPIO_BIT(gpio)                     (1<<(gpio))
 | 
	
		
			
				|  |  | +#define COUNTER_BIT(counter)               ((1<<16)<<(counter))
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/*******************************
 | 
	
		
			
				|  |  | + * PIO                         *
 |