mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
Merge branch 'x86/generalize-visws' into x86/core
This commit is contained in:
commit
6c82a000a2
36 changed files with 865 additions and 909 deletions
|
|
@ -107,9 +107,9 @@
|
|||
#define LAST_VM86_IRQ 15
|
||||
#define invalid_vm86_irq(irq) ((irq) < 3 || (irq) > 15)
|
||||
|
||||
#if !defined(CONFIG_X86_VISWS) && !defined(CONFIG_X86_VOYAGER)
|
||||
#if !defined(CONFIG_X86_VOYAGER)
|
||||
|
||||
# if defined(CONFIG_X86_IO_APIC) || defined(CONFIG_PARAVIRT)
|
||||
# if defined(CONFIG_X86_IO_APIC) || defined(CONFIG_PARAVIRT) || defined(CONFIG_X86_VISWS)
|
||||
|
||||
# define NR_IRQS 224
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,9 @@
|
|||
|
||||
static inline void smpboot_clear_io_apic_irqs(void)
|
||||
{
|
||||
#ifdef CONFIG_X86_IO_APIC
|
||||
io_apic_irqs = 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void smpboot_setup_warm_reset_vector(unsigned long start_eip)
|
||||
|
|
@ -35,6 +37,7 @@ static inline void smpboot_restore_warm_reset_vector(void)
|
|||
|
||||
static inline void __init smpboot_setup_io_apic(void)
|
||||
{
|
||||
#ifdef CONFIG_X86_IO_APIC
|
||||
/*
|
||||
* Here we can be sure that there is an IO-APIC in the system. Let's
|
||||
* go and set it up:
|
||||
|
|
@ -45,9 +48,12 @@ static inline void __init smpboot_setup_io_apic(void)
|
|||
nr_ioapics = 0;
|
||||
localise_nmi_watchdog();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void smpboot_clear_io_apic(void)
|
||||
{
|
||||
#ifdef CONFIG_X86_IO_APIC
|
||||
nr_ioapics = 0;
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,103 +1 @@
|
|||
#ifndef __ASM_MACH_APIC_H
|
||||
#define __ASM_MACH_APIC_H
|
||||
|
||||
#include <mach_apicdef.h>
|
||||
#include <asm/smp.h>
|
||||
|
||||
#define APIC_DFR_VALUE (APIC_DFR_FLAT)
|
||||
|
||||
#define no_balance_irq (0)
|
||||
#define esr_disable (0)
|
||||
|
||||
#define INT_DELIVERY_MODE dest_LowestPrio
|
||||
#define INT_DEST_MODE 1 /* logical delivery broadcast to all procs */
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
#define TARGET_CPUS cpu_online_map
|
||||
#else
|
||||
#define TARGET_CPUS cpumask_of_cpu(0)
|
||||
#endif
|
||||
|
||||
#define check_apicid_used(bitmap, apicid) physid_isset(apicid, bitmap)
|
||||
#define check_apicid_present(bit) physid_isset(bit, phys_cpu_present_map)
|
||||
|
||||
static inline int apic_id_registered(void)
|
||||
{
|
||||
return physid_isset(GET_APIC_ID(read_apic_id()), phys_cpu_present_map);
|
||||
}
|
||||
|
||||
/*
|
||||
* Set up the logical destination ID.
|
||||
*
|
||||
* Intel recommends to set DFR, LDR and TPR before enabling
|
||||
* an APIC. See e.g. "AP-388 82489DX User's Manual" (Intel
|
||||
* document number 292116). So here it goes...
|
||||
*/
|
||||
static inline void init_apic_ldr(void)
|
||||
{
|
||||
unsigned long val;
|
||||
|
||||
apic_write_around(APIC_DFR, APIC_DFR_VALUE);
|
||||
val = apic_read(APIC_LDR) & ~APIC_LDR_MASK;
|
||||
val |= SET_APIC_LOGICAL_ID(1UL << smp_processor_id());
|
||||
apic_write_around(APIC_LDR, val);
|
||||
}
|
||||
|
||||
static inline void summit_check(char *oem, char *productid)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void setup_apic_routing(void)
|
||||
{
|
||||
}
|
||||
|
||||
static inline int apicid_to_node(int logical_apicid)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Mapping from cpu number to logical apicid */
|
||||
static inline int cpu_to_logical_apicid(int cpu)
|
||||
{
|
||||
return 1 << cpu;
|
||||
}
|
||||
|
||||
static inline int cpu_present_to_apicid(int mps_cpu)
|
||||
{
|
||||
if (mps_cpu < get_physical_broadcast())
|
||||
return mps_cpu;
|
||||
else
|
||||
return BAD_APICID;
|
||||
}
|
||||
|
||||
static inline physid_mask_t apicid_to_cpu_present(int apicid)
|
||||
{
|
||||
return physid_mask_of_physid(apicid);
|
||||
}
|
||||
|
||||
#define WAKE_SECONDARY_VIA_INIT
|
||||
|
||||
static inline void setup_portio_remap(void)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void enable_apic_mode(void)
|
||||
{
|
||||
}
|
||||
|
||||
static inline int check_phys_apicid_present(int boot_cpu_physical_apicid)
|
||||
{
|
||||
return physid_isset(boot_cpu_physical_apicid, phys_cpu_present_map);
|
||||
}
|
||||
|
||||
static inline unsigned int cpu_mask_to_apicid(cpumask_t cpumask)
|
||||
{
|
||||
return cpus_addr(cpumask)[0];
|
||||
}
|
||||
|
||||
static inline u32 phys_pkg_id(u32 cpuid_apic, int index_msb)
|
||||
{
|
||||
return cpuid_apic >> index_msb;
|
||||
}
|
||||
|
||||
#endif /* __ASM_MACH_APIC_H */
|
||||
#include "../mach-default/mach_apic.h"
|
||||
|
|
|
|||
|
|
@ -1,12 +1 @@
|
|||
#ifndef __ASM_MACH_APICDEF_H
|
||||
#define __ASM_MACH_APICDEF_H
|
||||
|
||||
#define APIC_ID_MASK (0xF<<24)
|
||||
|
||||
static inline unsigned get_apic_id(unsigned long x)
|
||||
{
|
||||
return (((x)>>24)&0xF);
|
||||
}
|
||||
#define GET_APIC_ID(x) get_apic_id(x)
|
||||
|
||||
#endif
|
||||
#include "../mach-default/mach_apicdef.h"
|
||||
|
|
|
|||
|
|
@ -1,6 +1 @@
|
|||
/* Hook to call BIOS initialisation function */
|
||||
|
||||
extern unsigned long sgivwfb_mem_phys;
|
||||
extern unsigned long sgivwfb_mem_size;
|
||||
|
||||
/* no action for visws */
|
||||
#include "../mach-default/setup_arch.h"
|
||||
|
|
|
|||
|
|
@ -1,28 +1 @@
|
|||
static inline void smpboot_setup_warm_reset_vector(unsigned long start_eip)
|
||||
{
|
||||
CMOS_WRITE(0xa, 0xf);
|
||||
local_flush_tlb();
|
||||
Dprintk("1.\n");
|
||||
*((volatile unsigned short *) TRAMPOLINE_HIGH) = start_eip >> 4;
|
||||
Dprintk("2.\n");
|
||||
*((volatile unsigned short *) TRAMPOLINE_LOW) = start_eip & 0xf;
|
||||
Dprintk("3.\n");
|
||||
}
|
||||
|
||||
/* for visws do nothing for any of these */
|
||||
|
||||
static inline void smpboot_clear_io_apic_irqs(void)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void smpboot_restore_warm_reset_vector(void)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void smpboot_setup_io_apic(void)
|
||||
{
|
||||
}
|
||||
|
||||
static inline void smpboot_clear_io_apic(void)
|
||||
{
|
||||
}
|
||||
#include "../mach-default/smpboot_hooks.h"
|
||||
|
|
|
|||
|
|
@ -8,6 +8,25 @@
|
|||
/* Interrupt control for vSMPowered x86_64 systems */
|
||||
void vsmp_init(void);
|
||||
|
||||
#ifdef CONFIG_X86_VISWS
|
||||
extern void visws_early_detect(void);
|
||||
extern int is_visws_box(void);
|
||||
#else
|
||||
static inline void visws_early_detect(void) { }
|
||||
static inline int is_visws_box(void) { return 0; }
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Any setup quirks to be performed?
|
||||
*/
|
||||
extern int (*arch_time_init_quirk)(void);
|
||||
extern int (*arch_pre_intr_init_quirk)(void);
|
||||
extern int (*arch_intr_init_quirk)(void);
|
||||
extern int (*arch_trap_init_quirk)(void);
|
||||
extern char * (*arch_memory_setup_quirk)(void);
|
||||
extern int (*mach_get_smp_config_quirk)(unsigned int early);
|
||||
extern int (*mach_find_smp_config_quirk)(unsigned int reserve);
|
||||
|
||||
#ifndef CONFIG_PARAVIRT
|
||||
#define paravirt_post_allocator_init() do {} while (0)
|
||||
#endif
|
||||
|
|
|
|||
5
include/asm-x86/visws/sgivw.h
Normal file
5
include/asm-x86/visws/sgivw.h
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
/*
|
||||
* Frame buffer position and size:
|
||||
*/
|
||||
extern unsigned long sgivwfb_mem_phys;
|
||||
extern unsigned long sgivwfb_mem_size;
|
||||
Loading…
Reference in a new issue