120 lines
3.2 KiB
C
120 lines
3.2 KiB
C
#ifndef _ASM_E2K_SIC_H_
|
|
#define _ASM_E2K_SIC_H_
|
|
|
|
#include <linux/init.h>
|
|
#include <linux/mmdebug.h>
|
|
#include <linux/numa.h>
|
|
#include <linux/nodemask.h>
|
|
|
|
#include <asm-l/mpspec.h>
|
|
#include <asm/e2k.h>
|
|
#include <asm/e2k_api.h>
|
|
#include <asm/mas.h>
|
|
#include <asm/e2s.h>
|
|
#include <asm/e8c.h>
|
|
#include <asm/e16c.h>
|
|
#include <asm/e12c.h>
|
|
#include <asm/e2c3.h>
|
|
|
|
|
|
/*
|
|
* NBR area configuration
|
|
*/
|
|
#define E2K_NSR_AREA_PHYS_BASE (machine.get_nsr_area_phys_base())
|
|
#define E2K_NSR_AREA_SIZE 0x0000000000100000UL
|
|
#define E2K_NBSR_OFFSET 0x0000000000000000UL
|
|
#define E2K_NBSR_SIZE E2K_NSR_AREA_SIZE
|
|
|
|
#define BOOT_NSR_AREA_PHYS_BASE (boot_machine.nsr_area_phys_base)
|
|
#define BOOT_NSR_AREA_SIZE E2K_NSR_AREA_SIZE
|
|
#define BOOT_NBSR_OFFSET E2K_NBSR_OFFSET
|
|
#define BOOT_NBSR_SIZE E2K_NBSR_SIZE
|
|
|
|
/*
|
|
* Nodes system registers area - NSR = { NSR0 ... NSRj ... }
|
|
* NSR is some part of common system communicator area SR
|
|
*/
|
|
#define NODE_NSR_SIZE E2K_NSR_AREA_SIZE
|
|
#define THE_NODE_NSR_PHYS_BASE(node) \
|
|
(E2K_NSR_AREA_PHYS_BASE + (node * NODE_NSR_SIZE))
|
|
|
|
#define BOOT_NODE_NSR_SIZE BOOT_NSR_AREA_SIZE
|
|
#define BOOT_THE_NODE_NSR_PHYS_BASE(node) \
|
|
(BOOT_NSR_AREA_PHYS_BASE + (node * BOOT_NODE_NSR_SIZE))
|
|
|
|
/*
|
|
* Nodes processor system registers (north bridge)
|
|
* NBSR = { NBSR0 ... NBSRj ... }
|
|
* NBSR is some part of node system registers area NSR
|
|
*/
|
|
#define NODE_NBSR_SIZE E2K_NBSR_SIZE
|
|
#define NODE_NBSR_OFFSET E2K_NBSR_OFFSET
|
|
#define THE_NODE_NBSR_PHYS_BASE(node) \
|
|
((unsigned char *)(THE_NODE_NSR_PHYS_BASE(node) + \
|
|
NODE_NBSR_OFFSET))
|
|
|
|
#define BOOT_NODE_NBSR_SIZE BOOT_NBSR_SIZE
|
|
#define BOOT_NODE_NBSR_OFFSET BOOT_NBSR_OFFSET
|
|
#define BOOT_THE_NODE_NBSR_PHYS_BASE(node) \
|
|
((unsigned char *)(BOOT_THE_NODE_NSR_PHYS_BASE(node) + \
|
|
BOOT_NODE_NBSR_OFFSET))
|
|
|
|
extern unsigned char *nodes_nbsr_base[MAX_NUMNODES];
|
|
extern phys_addr_t nodes_nbsr_phys_base[MAX_NUMNODES];
|
|
|
|
extern void boot_e2k_sic_setup_arch(void);
|
|
#ifndef CONFIG_E2K_MACHINE
|
|
extern int boot_get_e2k_machine_id(void);
|
|
#endif
|
|
|
|
extern int __init e2k_sic_init(void);
|
|
extern int __init e2k_early_iohub_online(int node, int link);
|
|
|
|
static inline e2k_addr_t sic_get_io_area_base(void)
|
|
{
|
|
return machine.x86_io_area_base;
|
|
}
|
|
|
|
static inline e2k_addr_t sic_get_io_area_size(void)
|
|
{
|
|
return machine.x86_io_area_size;
|
|
}
|
|
extern e2k_addr_t sic_get_io_area_max_size(void);
|
|
|
|
static inline unsigned char *sic_get_node_nbsr_base(int node_id)
|
|
{
|
|
return nodes_nbsr_base[node_id];
|
|
}
|
|
|
|
static inline phys_addr_t sic_get_node_nbsr_phys_base(int node_id)
|
|
{
|
|
phys_addr_t base = nodes_nbsr_phys_base[node_id];
|
|
VM_BUG_ON(!base);
|
|
return base;
|
|
}
|
|
|
|
#define sic_domain_pci_conf_size() (machine.pcicfg_area_size)
|
|
#define sic_domain_pci_conf_base(domain) \
|
|
(machine.pcicfg_area_phys_base + \
|
|
sic_domain_pci_conf_size() * ((unsigned long)domain))
|
|
|
|
#define boot_sic_domain_pci_conf_base(domain) \
|
|
(boot_machine.pcicfg_area_phys_base + \
|
|
boot_machine.pcicfg_area_size * ((unsigned long)domain))
|
|
|
|
extern unsigned long domain_to_pci_conf_base[];
|
|
|
|
static inline unsigned long
|
|
domain_pci_conf_base(unsigned int domain)
|
|
{
|
|
return domain_to_pci_conf_base[domain];
|
|
}
|
|
|
|
static inline unsigned long
|
|
domain_pci_conf_size(unsigned int domain)
|
|
{
|
|
return sic_domain_pci_conf_size();
|
|
}
|
|
|
|
#endif /* _ASM_E2K_SIC_H_ */
|