-
Notifications
You must be signed in to change notification settings - Fork 62
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
MIPS: Fork loongson2ef from loongson64
As later model of GSx64 family processors including 2-series-soc have similar design with initial loongson3a while loongson2e/f seems less identical, we separate loongson2e/f support code out of mach-loongson64 to make our life easier. This patch contains mostly file moving works. Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com> [paulburton@kernel.org: Squash in the MAINTAINERS updates] Signed-off-by: Paul Burton <paulburton@kernel.org> Cc: linux-mips@vger.kernel.org Cc: paul.burton@mips.com
- Loading branch information
1 parent
268a2d6
commit 71e2f4d
Showing
71 changed files
with
3,351 additions
and
132 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,221 @@ | ||
/* SPDX-License-Identifier: GPL-2.0 */ | ||
#ifndef __ASM_MACH_LOONGSON64_BOOT_PARAM_H_ | ||
#define __ASM_MACH_LOONGSON64_BOOT_PARAM_H_ | ||
|
||
#define SYSTEM_RAM_LOW 1 | ||
#define SYSTEM_RAM_HIGH 2 | ||
#define SYSTEM_RAM_RESERVED 3 | ||
#define PCI_IO 4 | ||
#define PCI_MEM 5 | ||
#define LOONGSON_CFG_REG 6 | ||
#define VIDEO_ROM 7 | ||
#define ADAPTER_ROM 8 | ||
#define ACPI_TABLE 9 | ||
#define SMBIOS_TABLE 10 | ||
#define MAX_MEMORY_TYPE 11 | ||
|
||
#define LOONGSON3_BOOT_MEM_MAP_MAX 128 | ||
struct efi_memory_map_loongson { | ||
u16 vers; /* version of efi_memory_map */ | ||
u32 nr_map; /* number of memory_maps */ | ||
u32 mem_freq; /* memory frequence */ | ||
struct mem_map { | ||
u32 node_id; /* node_id which memory attached to */ | ||
u32 mem_type; /* system memory, pci memory, pci io, etc. */ | ||
u64 mem_start; /* memory map start address */ | ||
u32 mem_size; /* each memory_map size, not the total size */ | ||
} map[LOONGSON3_BOOT_MEM_MAP_MAX]; | ||
} __packed; | ||
|
||
enum loongson_cpu_type { | ||
Legacy_2E = 0x0, | ||
Legacy_2F = 0x1, | ||
Legacy_3A = 0x2, | ||
Legacy_3B = 0x3, | ||
Legacy_1A = 0x4, | ||
Legacy_1B = 0x5, | ||
Legacy_2G = 0x6, | ||
Legacy_2H = 0x7, | ||
Loongson_1A = 0x100, | ||
Loongson_1B = 0x101, | ||
Loongson_2E = 0x200, | ||
Loongson_2F = 0x201, | ||
Loongson_2G = 0x202, | ||
Loongson_2H = 0x203, | ||
Loongson_3A = 0x300, | ||
Loongson_3B = 0x301 | ||
}; | ||
|
||
/* | ||
* Capability and feature descriptor structure for MIPS CPU | ||
*/ | ||
struct efi_cpuinfo_loongson { | ||
u16 vers; /* version of efi_cpuinfo_loongson */ | ||
u32 processor_id; /* PRID, e.g. 6305, 6306 */ | ||
u32 cputype; /* Loongson_3A/3B, etc. */ | ||
u32 total_node; /* num of total numa nodes */ | ||
u16 cpu_startup_core_id; /* Boot core id */ | ||
u16 reserved_cores_mask; | ||
u32 cpu_clock_freq; /* cpu_clock */ | ||
u32 nr_cpus; | ||
} __packed; | ||
|
||
#define MAX_UARTS 64 | ||
struct uart_device { | ||
u32 iotype; /* see include/linux/serial_core.h */ | ||
u32 uartclk; | ||
u32 int_offset; | ||
u64 uart_base; | ||
} __packed; | ||
|
||
#define MAX_SENSORS 64 | ||
#define SENSOR_TEMPER 0x00000001 | ||
#define SENSOR_VOLTAGE 0x00000002 | ||
#define SENSOR_FAN 0x00000004 | ||
struct sensor_device { | ||
char name[32]; /* a formal name */ | ||
char label[64]; /* a flexible description */ | ||
u32 type; /* SENSOR_* */ | ||
u32 id; /* instance id of a sensor-class */ | ||
u32 fan_policy; /* see loongson_hwmon.h */ | ||
u32 fan_percent;/* only for constant speed policy */ | ||
u64 base_addr; /* base address of device registers */ | ||
} __packed; | ||
|
||
struct system_loongson { | ||
u16 vers; /* version of system_loongson */ | ||
u32 ccnuma_smp; /* 0: no numa; 1: has numa */ | ||
u32 sing_double_channel; /* 1:single; 2:double */ | ||
u32 nr_uarts; | ||
struct uart_device uarts[MAX_UARTS]; | ||
u32 nr_sensors; | ||
struct sensor_device sensors[MAX_SENSORS]; | ||
char has_ec; | ||
char ec_name[32]; | ||
u64 ec_base_addr; | ||
char has_tcm; | ||
char tcm_name[32]; | ||
u64 tcm_base_addr; | ||
u64 workarounds; /* see workarounds.h */ | ||
} __packed; | ||
|
||
struct irq_source_routing_table { | ||
u16 vers; | ||
u16 size; | ||
u16 rtr_bus; | ||
u16 rtr_devfn; | ||
u32 vendor; | ||
u32 device; | ||
u32 PIC_type; /* conform use HT or PCI to route to CPU-PIC */ | ||
u64 ht_int_bit; /* 3A: 1<<24; 3B: 1<<16 */ | ||
u64 ht_enable; /* irqs used in this PIC */ | ||
u32 node_id; /* node id: 0x0-0; 0x1-1; 0x10-2; 0x11-3 */ | ||
u64 pci_mem_start_addr; | ||
u64 pci_mem_end_addr; | ||
u64 pci_io_start_addr; | ||
u64 pci_io_end_addr; | ||
u64 pci_config_addr; | ||
u32 dma_mask_bits; | ||
} __packed; | ||
|
||
struct interface_info { | ||
u16 vers; /* version of the specificition */ | ||
u16 size; | ||
u8 flag; | ||
char description[64]; | ||
} __packed; | ||
|
||
#define MAX_RESOURCE_NUMBER 128 | ||
struct resource_loongson { | ||
u64 start; /* resource start address */ | ||
u64 end; /* resource end address */ | ||
char name[64]; | ||
u32 flags; | ||
}; | ||
|
||
struct archdev_data {}; /* arch specific additions */ | ||
|
||
struct board_devices { | ||
char name[64]; /* hold the device name */ | ||
u32 num_resources; /* number of device_resource */ | ||
/* for each device's resource */ | ||
struct resource_loongson resource[MAX_RESOURCE_NUMBER]; | ||
/* arch specific additions */ | ||
struct archdev_data archdata; | ||
}; | ||
|
||
struct loongson_special_attribute { | ||
u16 vers; /* version of this special */ | ||
char special_name[64]; /* special_atribute_name */ | ||
u32 loongson_special_type; /* type of special device */ | ||
/* for each device's resource */ | ||
struct resource_loongson resource[MAX_RESOURCE_NUMBER]; | ||
}; | ||
|
||
struct loongson_params { | ||
u64 memory_offset; /* efi_memory_map_loongson struct offset */ | ||
u64 cpu_offset; /* efi_cpuinfo_loongson struct offset */ | ||
u64 system_offset; /* system_loongson struct offset */ | ||
u64 irq_offset; /* irq_source_routing_table struct offset */ | ||
u64 interface_offset; /* interface_info struct offset */ | ||
u64 special_offset; /* loongson_special_attribute struct offset */ | ||
u64 boarddev_table_offset; /* board_devices offset */ | ||
}; | ||
|
||
struct smbios_tables { | ||
u16 vers; /* version of smbios */ | ||
u64 vga_bios; /* vga_bios address */ | ||
struct loongson_params lp; | ||
}; | ||
|
||
struct efi_reset_system_t { | ||
u64 ResetCold; | ||
u64 ResetWarm; | ||
u64 ResetType; | ||
u64 Shutdown; | ||
u64 DoSuspend; /* NULL if not support */ | ||
}; | ||
|
||
struct efi_loongson { | ||
u64 mps; /* MPS table */ | ||
u64 acpi; /* ACPI table (IA64 ext 0.71) */ | ||
u64 acpi20; /* ACPI table (ACPI 2.0) */ | ||
struct smbios_tables smbios; /* SM BIOS table */ | ||
u64 sal_systab; /* SAL system table */ | ||
u64 boot_info; /* boot info table */ | ||
}; | ||
|
||
struct boot_params { | ||
struct efi_loongson efi; | ||
struct efi_reset_system_t reset_system; | ||
}; | ||
|
||
struct loongson_system_configuration { | ||
u32 nr_cpus; | ||
u32 nr_nodes; | ||
int cores_per_node; | ||
int cores_per_package; | ||
u16 boot_cpu_id; | ||
u16 reserved_cpus_mask; | ||
enum loongson_cpu_type cputype; | ||
u64 ht_control_base; | ||
u64 pci_mem_start_addr; | ||
u64 pci_mem_end_addr; | ||
u64 pci_io_base; | ||
u64 restart_addr; | ||
u64 poweroff_addr; | ||
u64 suspend_addr; | ||
u64 vgabios_addr; | ||
u32 dma_mask_bits; | ||
char ecname[32]; | ||
u32 nr_uarts; | ||
struct uart_device uarts[MAX_UARTS]; | ||
u32 nr_sensors; | ||
struct sensor_device sensors[MAX_SENSORS]; | ||
u64 workarounds; | ||
}; | ||
|
||
extern struct efi_memory_map_loongson *loongson_memmap; | ||
extern struct loongson_system_configuration loongson_sysconf; | ||
|
||
#endif |
53 changes: 53 additions & 0 deletions
53
arch/mips/include/asm/mach-loongson2ef/cpu-feature-overrides.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
/* | ||
* This file is subject to the terms and conditions of the GNU General Public | ||
* License. See the file "COPYING" in the main directory of this archive | ||
* for more details. | ||
* | ||
* Copyright (C) 2009 Wu Zhangjin <wuzhangjin@gmail.com> | ||
* Copyright (C) 2009 Philippe Vachon <philippe@cowpig.ca> | ||
* Copyright (C) 2009 Zhang Le <r0bertz@gentoo.org> | ||
* | ||
* reference: /proc/cpuinfo, | ||
* arch/mips/kernel/cpu-probe.c(cpu_probe_legacy), | ||
* arch/mips/kernel/proc.c(show_cpuinfo), | ||
* loongson2f user manual. | ||
*/ | ||
|
||
#ifndef __ASM_MACH_LOONGSON64_CPU_FEATURE_OVERRIDES_H | ||
#define __ASM_MACH_LOONGSON64_CPU_FEATURE_OVERRIDES_H | ||
|
||
#define cpu_has_32fpr 1 | ||
#define cpu_has_3k_cache 0 | ||
#define cpu_has_4k_cache 1 | ||
#define cpu_has_4kex 1 | ||
#define cpu_has_64bits 1 | ||
#define cpu_has_cache_cdex_p 0 | ||
#define cpu_has_cache_cdex_s 0 | ||
#define cpu_has_counter 1 | ||
#define cpu_has_dc_aliases (PAGE_SIZE < 0x4000) | ||
#define cpu_has_divec 0 | ||
#define cpu_has_ejtag 0 | ||
#define cpu_has_inclusive_pcaches 1 | ||
#define cpu_has_llsc 1 | ||
#define cpu_has_mcheck 0 | ||
#define cpu_has_mdmx 0 | ||
#define cpu_has_mips16 0 | ||
#define cpu_has_mips16e2 0 | ||
#define cpu_has_mips3d 0 | ||
#define cpu_has_mipsmt 0 | ||
#define cpu_has_smartmips 0 | ||
#define cpu_has_tlb 1 | ||
#define cpu_has_tx39_cache 0 | ||
#define cpu_has_vce 0 | ||
#define cpu_has_veic 0 | ||
#define cpu_has_vint 0 | ||
#define cpu_has_vtag_icache 0 | ||
#define cpu_has_watch 1 | ||
|
||
#ifdef CONFIG_CPU_LOONGSON64 | ||
#define cpu_has_wsbh 1 | ||
#define cpu_has_ic_fills_f_dc 1 | ||
#define cpu_hwrena_impl_bits 0xc0000000 | ||
#endif | ||
|
||
#endif /* __ASM_MACH_LOONGSON64_CPU_FEATURE_OVERRIDES_H */ |
Oops, something went wrong.