forked from cores/microwatt
Add microwatt_soc.h and io.h include file
This contains C definitions for various Microwatt internal MMIOs and a set of accessors. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>jtag-port
parent
025cf5efe8
commit
33de131384
@ -0,0 +1,53 @@
|
|||||||
|
#ifndef __IO_H
|
||||||
|
#define __IO_H
|
||||||
|
|
||||||
|
static inline uint8_t readb(unsigned long addr)
|
||||||
|
{
|
||||||
|
uint8_t val;
|
||||||
|
__asm__ volatile("sync; lbzcix %0,0,%1" : "=r" (val) : "r" (addr) : "memory");
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline uint16_t readw(unsigned long addr)
|
||||||
|
{
|
||||||
|
uint16_t val;
|
||||||
|
__asm__ volatile("sync; lhzcix %0,0,%1" : "=r" (val) : "r" (addr) : "memory");
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline uint32_t readl(unsigned long addr)
|
||||||
|
{
|
||||||
|
uint32_t val;
|
||||||
|
__asm__ volatile("sync; lwzcix %0,0,%1" : "=r" (val) : "r" (addr) : "memory");
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline uint64_t readq(unsigned long addr)
|
||||||
|
{
|
||||||
|
uint64_t val;
|
||||||
|
__asm__ volatile("sync; ldcix %0,0,%1" : "=r" (val) : "r" (addr) : "memory");
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void writeb(uint8_t val, unsigned long addr)
|
||||||
|
{
|
||||||
|
__asm__ volatile("sync; stbcix %0,0,%1" : : "r" (val), "r" (addr) : "memory");
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void writew(uint16_t val, unsigned long addr)
|
||||||
|
{
|
||||||
|
__asm__ volatile("sync; sthcix %0,0,%1" : : "r" (val), "r" (addr) : "memory");
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void writel(uint32_t val, unsigned long addr)
|
||||||
|
{
|
||||||
|
__asm__ volatile("sync; stwcix %0,0,%1" : : "r" (val), "r" (addr) : "memory");
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void writeq(uint64_t val, unsigned long addr)
|
||||||
|
{
|
||||||
|
__asm__ volatile("sync; stdcix %0,0,%1" : : "r" (val), "r" (addr) : "memory");
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* __IO_H */
|
||||||
|
|
@ -0,0 +1,34 @@
|
|||||||
|
#ifndef __MICROWATT_SOC_H
|
||||||
|
#define __MICROWATT_SOC_H
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Definitions for the syscon registers
|
||||||
|
*/
|
||||||
|
#define SYSCON_BASE 0xc0000000
|
||||||
|
|
||||||
|
#define SYS_REG_SIGNATURE 0x00
|
||||||
|
#define SYS_REG_INFO 0x08
|
||||||
|
#define SYS_REG_INFO_HAS_UART (1ull << 0)
|
||||||
|
#define SYS_REG_INFO_HAS_DRAM (1ull << 1)
|
||||||
|
#define SYS_REG_BRAMINFO 0x10
|
||||||
|
#define SYS_REG_DRAMINFO 0x18
|
||||||
|
#define SYS_REG_CLKINFO 0x20
|
||||||
|
#define SYS_REG_CTRL 0x28
|
||||||
|
#define SYS_REG_CTRL_DRAM_AT_0 (1ull << 0)
|
||||||
|
#define SYS_REG_CTRL_CORE_RESET (1ull << 1)
|
||||||
|
#define SYS_REG_CTRL_SOC_RESET (1ull << 2)
|
||||||
|
|
||||||
|
/* Definition for the "Potato" UART */
|
||||||
|
#define UART_BASE 0xc0002000
|
||||||
|
|
||||||
|
#define POTATO_CONSOLE_TX 0x00
|
||||||
|
#define POTATO_CONSOLE_RX 0x08
|
||||||
|
#define POTATO_CONSOLE_STATUS 0x10
|
||||||
|
#define POTATO_CONSOLE_STATUS_RX_EMPTY 0x01
|
||||||
|
#define POTATO_CONSOLE_STATUS_TX_EMPTY 0x02
|
||||||
|
#define POTATO_CONSOLE_STATUS_RX_FULL 0x04
|
||||||
|
#define POTATO_CONSOLE_STATUS_TX_FULL 0x08
|
||||||
|
#define POTATO_CONSOLE_CLOCK_DIV 0x18
|
||||||
|
#define POTATO_CONSOLE_IRQ_EN 0x20
|
||||||
|
|
||||||
|
#endif /* __MICROWATT_SOC_H */
|
Loading…
Reference in New Issue