linux-headers/arch/e2k/include/asm/sic_regs_access.h

96 lines
2.8 KiB
C

#ifndef _E2K_SIC_REGS_ACCESS_H_
#define _E2K_SIC_REGS_ACCESS_H_
#ifdef __KERNEL__
#include <asm/io.h>
#include <asm/e2k_sic.h>
#undef DEBUG_BOOT_NBSR_MODE
#undef DebugBNBSR
#define DEBUG_BOOT_NBSR_MODE 0 /* early NBSR access */
#define DebugBNBSR(fmt, args...) \
({ if (DEBUG_BOOT_NBSR_MODE) \
do_boot_printk(fmt, ##args); })
#define SIC_io_reg_offset(io_link, reg) ((reg) + 0x1000 * (io_link))
#ifndef CONFIG_BOOT_E2K
#define nbsr_early_read(addr) boot_readl((addr))
#define nbsr_early_write(value, addr) boot_writel((value), (addr))
#else /* CONFIG_BOOT_E2K */
#define nbsr_early_read(addr) boot_native_readl((addr))
#define nbsr_early_write(value, addr) boot_native_writel((value), (addr))
#endif /* ! CONFIG_BOOT_E2K */
static inline unsigned int
boot_do_sic_read_node_nbsr_reg(unsigned char *node_nbsr, int reg_offset)
{
unsigned char *addr;
unsigned int reg_value;
addr = node_nbsr + reg_offset;
reg_value = nbsr_early_read(addr);
DebugBNBSR("boot_sic_read_node_nbsr_reg() the node reg 0x%x read 0x%x "
"from 0x%lx\n",
reg_offset, reg_value, addr);
return reg_value;
}
static inline void
boot_do_sic_write_node_nbsr_reg(unsigned char *node_nbsr, int reg_offset,
unsigned int reg_val)
{
unsigned char *addr;
addr = node_nbsr + reg_offset;
nbsr_early_write(reg_val, addr);
DebugBNBSR("boot_sic_write_node_nbsr_reg() the node reg 0x%x write "
"0x%x to 0x%lx\n",
reg_offset, reg_val, addr);
}
static inline unsigned int
boot_sic_read_node_nbsr_reg(int node_id, int reg_offset)
{
unsigned char *node_nbsr;
node_nbsr = BOOT_THE_NODE_NBSR_PHYS_BASE(node_id);
return boot_do_sic_read_node_nbsr_reg(node_nbsr, reg_offset);
}
static inline void
boot_sic_write_node_nbsr_reg(int node_id, int reg_offset, unsigned int reg_val)
{
unsigned char *node_nbsr;
node_nbsr = BOOT_THE_NODE_NBSR_PHYS_BASE(node_id);
boot_do_sic_write_node_nbsr_reg(node_nbsr, reg_offset, reg_val);
}
#define nbsr_read(addr) readl((addr))
#define nbsr_readll(addr) readq((addr))
#define nbsr_readw(addr) readw((addr))
#define nbsr_write(value, addr) writel((value), (addr))
#define nbsr_writell(value, addr) writeq((value), (addr))
#define nbsr_writew(value, addr) writew((value), (addr))
#define nbsr_write_relaxed(value, addr) writel_relaxed((value), (addr))
unsigned int sic_get_mc_ecc(int node, int num);
void sic_set_mc_ecc(int node, int num, unsigned int reg_value);
unsigned int sic_get_mc_opmb(int node, int num);
unsigned int sic_get_mc_cfg(int node, int num);
unsigned int sic_get_ipcc_csr(int node, int num);
void sic_set_ipcc_csr(int node, int num, unsigned int val);
unsigned int sic_get_ipcc_str(int node, int num);
void sic_set_ipcc_str(int node, int num, unsigned int val);
unsigned int sic_get_io_str(int node, int num);
void sic_set_io_str(int node, int num, unsigned int val);
#endif /* __KERNEL__ */
#include <asm-l/sic_regs.h>
#endif /* _E2K_SIC_REGS_ACCESS_H_ */