You've already forked gitified_old_clb_svn
72 lines
1.4 KiB
C
72 lines
1.4 KiB
C
#ifndef __SYSCON_H
|
|
#define __SYSCON_H
|
|
|
|
#include <inttypes.h>
|
|
#include <sys/types.h>
|
|
|
|
#include "board.h"
|
|
#undef PACKED /* if we already included a regs file, we'd get a warning */
|
|
#include <hw/wrc_syscon_regs.h>
|
|
|
|
struct SYSCON_WB {
|
|
uint32_t RSTR; /*Syscon Reset Register */
|
|
uint32_t GPSR; /*GPIO Set/Readback Register */
|
|
uint32_t GPCR; /*GPIO Clear Register */
|
|
uint32_t HWFR; /*Hardware Feature Register */
|
|
uint32_t TCR; /*Timer Control Register */
|
|
uint32_t TVR; /*Timer Counter Value Register */
|
|
};
|
|
|
|
/*GPIO pins*/
|
|
#define GPIO_LED_LINK SYSC_GPSR_LED_LINK
|
|
#define GPIO_LED_STAT SYSC_GPSR_LED_STAT
|
|
#define GPIO_BTN1 SYSC_GPSR_BTN1
|
|
#define GPIO_BTN2 SYSC_GPSR_BTN2
|
|
#define GPIO_SFP_DET SYSC_GPSR_SFP_DET
|
|
|
|
#define WRPC_FMC_I2C 0
|
|
#define WRPC_SFP_I2C 1
|
|
|
|
struct s_i2c_if {
|
|
uint32_t scl;
|
|
uint32_t sda;
|
|
};
|
|
|
|
extern struct s_i2c_if i2c_if[2];
|
|
|
|
#define TICS_PER_SECOND 1000
|
|
void timer_init(uint32_t enable);
|
|
uint32_t timer_get_tics();
|
|
void timer_delay(uint32_t how_long);
|
|
|
|
/* usleep.c */
|
|
extern void usleep_init(void);
|
|
extern int usleep(useconds_t usec);
|
|
|
|
|
|
|
|
extern volatile struct SYSCON_WB *syscon;
|
|
|
|
/****************************
|
|
* GPIO
|
|
***************************/
|
|
static inline void gpio_out(int pin, int val)
|
|
{
|
|
if (val)
|
|
syscon->GPSR = pin;
|
|
else
|
|
syscon->GPCR = pin;
|
|
}
|
|
|
|
static inline int gpio_in(int pin)
|
|
{
|
|
return syscon->GPSR & pin ? 1 : 0;
|
|
}
|
|
|
|
static inline int sysc_get_memsize()
|
|
{
|
|
return (SYSC_HWFR_MEMSIZE_R(syscon->HWFR) + 1) * 16;
|
|
}
|
|
|
|
#endif
|