mirror of
https://github.com/Qortal/Brooklyn.git
synced 2025-02-01 07:42:18 +00:00
First batch of augmented kernel
T3Q sucks donkey cock
This commit is contained in:
parent
9f6f847f86
commit
7c1eb8ceac
@ -1234,6 +1234,9 @@ config RELR
|
||||
config ARCH_HAS_MEM_ENCRYPT
|
||||
bool
|
||||
|
||||
config ARCH_HAS_CC_PLATFORM
|
||||
bool
|
||||
|
||||
config HAVE_SPARSE_SYSCALL_NR
|
||||
bool
|
||||
help
|
||||
|
@ -294,7 +294,7 @@ int elf_check_arch(const struct elf32_hdr *x)
|
||||
eflags = x->e_flags;
|
||||
if ((eflags & EF_ARC_OSABI_MSK) != EF_ARC_OSABI_CURRENT) {
|
||||
pr_err("ABI mismatch - you need newer toolchain\n");
|
||||
force_sigsegv(SIGSEGV);
|
||||
force_fatal_sig(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,2 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
obj-y += kernel/ mm/ boot/dts/
|
||||
|
||||
# for cleaning
|
||||
subdir- += boot
|
||||
|
@ -34,6 +34,9 @@ libs-y += arch/$(ARCH)/lib/
|
||||
|
||||
boot := arch/h8300/boot
|
||||
|
||||
archclean:
|
||||
$(Q)$(MAKE) $(clean)=$(boot)
|
||||
|
||||
vmlinux.srec vmlinux.bin zImage uImage.bin: vmlinux
|
||||
$(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
|
||||
|
||||
|
@ -30,11 +30,9 @@ $(obj)/vmlinux.bin: vmlinux FORCE
|
||||
|
||||
suffix-$(CONFIG_KERNEL_GZIP) := gzip
|
||||
suffix-$(CONFIG_KERNEL_LZO) := lzo
|
||||
compress-$(CONFIG_KERNEL_GZIP) := gzip
|
||||
compress-$(CONFIG_KERNEL_LZO) := lzo_with_size
|
||||
|
||||
$(obj)/vmlinux.bin.$(suffix-y): $(obj)/vmlinux.bin FORCE
|
||||
$(call if_changed,$(compress-y))
|
||||
$(call if_changed,$(suffix-y))
|
||||
|
||||
LDFLAGS_piggy.o := -r --format binary --oformat elf32-h8300-linux -T
|
||||
OBJCOPYFLAGS := -O binary
|
||||
|
@ -1,5 +1,9 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
obj-y += $(addsuffix .dtb.o, $(CONFIG_H8300_BUILTIN_DTB))
|
||||
ifneq '$(CONFIG_H8300_BUILTIN_DTB)' '""'
|
||||
BUILTIN_DTB := $(patsubst "%",%,$(CONFIG_H8300_BUILTIN_DTB)).dtb.o
|
||||
endif
|
||||
|
||||
obj-y += $(BUILTIN_DTB)
|
||||
|
||||
dtb-$(CONFIG_H8300H_SIM) := h8300h_sim.dtb
|
||||
dtb-$(CONFIG_H8S_SIM) := h8s_sim.dtb
|
||||
|
@ -168,6 +168,7 @@ static inline unsigned long __ffs(unsigned long word)
|
||||
return result;
|
||||
}
|
||||
|
||||
#include <asm-generic/bitops/find.h>
|
||||
#include <asm-generic/bitops/sched.h>
|
||||
#include <asm-generic/bitops/hweight.h>
|
||||
#include <asm-generic/bitops/lock.h>
|
||||
|
@ -2,6 +2,8 @@
|
||||
#ifndef _H8300_IRQ_H_
|
||||
#define _H8300_IRQ_H_
|
||||
|
||||
#include <linux/irqchip.h>
|
||||
|
||||
#if defined(CONFIG_CPU_H8300H)
|
||||
#define NR_IRQS 64
|
||||
#define IRQ_CHIP h8300h_irq_chip
|
||||
|
@ -105,7 +105,7 @@ static inline void release_thread(struct task_struct *dead_task)
|
||||
{
|
||||
}
|
||||
|
||||
unsigned long __get_wchan(struct task_struct *p);
|
||||
unsigned long get_wchan(struct task_struct *p);
|
||||
|
||||
#define KSTK_EIP(tsk) \
|
||||
({ \
|
||||
|
@ -8,7 +8,6 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/irqchip.h>
|
||||
#include <linux/irqdomain.h>
|
||||
#include <linux/of_irq.h>
|
||||
#include <asm/traps.h>
|
||||
|
@ -128,12 +128,15 @@ int copy_thread(unsigned long clone_flags, unsigned long usp,
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned long __get_wchan(struct task_struct *p)
|
||||
unsigned long get_wchan(struct task_struct *p)
|
||||
{
|
||||
unsigned long fp, pc;
|
||||
unsigned long stack_page;
|
||||
int count = 0;
|
||||
|
||||
if (!p || p == current || task_is_running(p))
|
||||
return 0;
|
||||
|
||||
stack_page = (unsigned long)p;
|
||||
fp = ((struct pt_regs *)p->thread.ksp)->er6;
|
||||
do {
|
||||
|
@ -17,7 +17,6 @@
|
||||
#include <linux/types.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/sched/debug.h>
|
||||
#include <linux/sched/task.h>
|
||||
#include <linux/mm_types.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/errno.h>
|
||||
@ -107,7 +106,7 @@ void die(const char *str, struct pt_regs *fp, unsigned long err)
|
||||
dump(fp);
|
||||
|
||||
spin_unlock_irq(&die_lock);
|
||||
make_task_dead(SIGSEGV);
|
||||
do_exit(SIGSEGV);
|
||||
}
|
||||
|
||||
static int kstack_depth_to_print = 24;
|
||||
|
@ -51,7 +51,7 @@ asmlinkage int do_page_fault(struct pt_regs *regs, unsigned long address,
|
||||
printk(" at virtual address %08lx\n", address);
|
||||
if (!user_mode(regs))
|
||||
die("Oops", regs, error_code);
|
||||
make_task_dead(SIGKILL);
|
||||
do_exit(SIGKILL);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
@ -32,7 +32,6 @@ config IA64
|
||||
select HAVE_FTRACE_MCOUNT_RECORD
|
||||
select HAVE_DYNAMIC_FTRACE if (!ITANIUM)
|
||||
select HAVE_FUNCTION_TRACER
|
||||
select HAVE_SETUP_PER_CPU_AREA
|
||||
select TTY
|
||||
select HAVE_ARCH_TRACEHOOK
|
||||
select HAVE_VIRT_CPU_ACCOUNTING
|
||||
@ -89,6 +88,9 @@ config GENERIC_CALIBRATE_DELAY
|
||||
bool
|
||||
default y
|
||||
|
||||
config HAVE_SETUP_PER_CPU_AREA
|
||||
def_bool y
|
||||
|
||||
config DMI
|
||||
bool
|
||||
default y
|
||||
@ -290,7 +292,6 @@ config NUMA
|
||||
bool "NUMA support"
|
||||
depends on !FLATMEM
|
||||
select SMP
|
||||
select USE_PERCPU_NUMA_NODE_ID
|
||||
help
|
||||
Say Y to compile the kernel to support NUMA (Non-Uniform Memory
|
||||
Access). This option is for configuring high-end multiprocessor
|
||||
@ -310,6 +311,10 @@ config HAVE_ARCH_NODEDATA_EXTENSION
|
||||
def_bool y
|
||||
depends on NUMA
|
||||
|
||||
config USE_PERCPU_NUMA_NODE_ID
|
||||
def_bool y
|
||||
depends on NUMA
|
||||
|
||||
config HAVE_MEMORYLESS_NODES
|
||||
def_bool NUMA
|
||||
|
||||
@ -318,7 +323,7 @@ config ARCH_PROC_KCORE_TEXT
|
||||
depends on PROC_KCORE
|
||||
|
||||
config IA64_MCA_RECOVERY
|
||||
bool "MCA recovery from errors other than TLB."
|
||||
tristate "MCA recovery from errors other than TLB."
|
||||
|
||||
config IA64_PALINFO
|
||||
tristate "/proc/pal support"
|
||||
|
@ -67,6 +67,8 @@ vmlinux.bin: vmlinux FORCE
|
||||
unwcheck: vmlinux
|
||||
-$(Q)READELF=$(READELF) $(PYTHON3) $(srctree)/arch/ia64/scripts/unwcheck.py $<
|
||||
|
||||
archclean:
|
||||
|
||||
archheaders:
|
||||
$(Q)$(MAKE) $(build)=arch/ia64/kernel/syscalls all
|
||||
|
||||
|
@ -441,6 +441,8 @@ static __inline__ unsigned long __arch_hweight64(unsigned long x)
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#include <asm-generic/bitops/find.h>
|
||||
|
||||
#ifdef __KERNEL__
|
||||
|
||||
#include <asm-generic/bitops/le.h>
|
||||
|
@ -330,7 +330,7 @@ struct task_struct;
|
||||
#define release_thread(dead_task)
|
||||
|
||||
/* Get wait channel for task P. */
|
||||
extern unsigned long __get_wchan (struct task_struct *p);
|
||||
extern unsigned long get_wchan (struct task_struct *p);
|
||||
|
||||
/* Return instruction pointer of blocked task TSK. */
|
||||
#define KSTK_EIP(tsk) \
|
||||
|
@ -51,11 +51,6 @@
|
||||
* the canonical representation by adding to instruction pointer.
|
||||
*/
|
||||
# define instruction_pointer(regs) ((regs)->cr_iip + ia64_psr(regs)->ri)
|
||||
# define instruction_pointer_set(regs, val) \
|
||||
({ \
|
||||
ia64_psr(regs)->ri = (val & 0xf); \
|
||||
regs->cr_iip = (val & ~0xfULL); \
|
||||
})
|
||||
|
||||
static inline unsigned long user_stack_pointer(struct pt_regs *regs)
|
||||
{
|
||||
@ -134,9 +129,9 @@ static inline long regs_return_value(struct pt_regs *regs)
|
||||
extern void ia64_decrement_ip (struct pt_regs *pt);
|
||||
|
||||
extern void ia64_ptrace_stop(void);
|
||||
#define arch_ptrace_stop() \
|
||||
#define arch_ptrace_stop(code, info) \
|
||||
ia64_ptrace_stop()
|
||||
#define arch_ptrace_stop_needed() \
|
||||
#define arch_ptrace_stop_needed(code, info) \
|
||||
(!test_thread_flag(TIF_RESTORE_RSE))
|
||||
|
||||
extern void ptrace_attach_sync_user_rbs (struct task_struct *);
|
||||
|
@ -124,13 +124,18 @@ static __always_inline void arch_spin_unlock(arch_spinlock_t *lock)
|
||||
__ticket_spin_unlock(lock);
|
||||
}
|
||||
|
||||
static __always_inline void arch_spin_lock_flags(arch_spinlock_t *lock,
|
||||
unsigned long flags)
|
||||
{
|
||||
arch_spin_lock(lock);
|
||||
}
|
||||
#define arch_spin_lock_flags arch_spin_lock_flags
|
||||
|
||||
#ifdef ASM_SUPPORTED
|
||||
|
||||
static __always_inline void
|
||||
arch_read_lock(arch_rwlock_t *lock)
|
||||
arch_read_lock_flags(arch_rwlock_t *lock, unsigned long flags)
|
||||
{
|
||||
unsigned long flags = 0;
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"tbit.nz p6, p0 = %1,%2\n"
|
||||
"br.few 3f\n"
|
||||
@ -152,8 +157,13 @@ arch_read_lock(arch_rwlock_t *lock)
|
||||
: "p6", "p7", "r2", "memory");
|
||||
}
|
||||
|
||||
#define arch_read_lock_flags arch_read_lock_flags
|
||||
#define arch_read_lock(lock) arch_read_lock_flags(lock, 0)
|
||||
|
||||
#else /* !ASM_SUPPORTED */
|
||||
|
||||
#define arch_read_lock_flags(rw, flags) arch_read_lock(rw)
|
||||
|
||||
#define arch_read_lock(rw) \
|
||||
do { \
|
||||
arch_rwlock_t *__read_lock_ptr = (rw); \
|
||||
@ -176,10 +186,8 @@ do { \
|
||||
#ifdef ASM_SUPPORTED
|
||||
|
||||
static __always_inline void
|
||||
arch_write_lock(arch_rwlock_t *lock)
|
||||
arch_write_lock_flags(arch_rwlock_t *lock, unsigned long flags)
|
||||
{
|
||||
unsigned long flags = 0;
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"tbit.nz p6, p0 = %1, %2\n"
|
||||
"mov ar.ccv = r0\n"
|
||||
@ -202,6 +210,9 @@ arch_write_lock(arch_rwlock_t *lock)
|
||||
: "ar.ccv", "p6", "p7", "r2", "r29", "memory");
|
||||
}
|
||||
|
||||
#define arch_write_lock_flags arch_write_lock_flags
|
||||
#define arch_write_lock(rw) arch_write_lock_flags(rw, 0)
|
||||
|
||||
#define arch_write_trylock(rw) \
|
||||
({ \
|
||||
register long result; \
|
||||
|
@ -2,7 +2,7 @@
|
||||
#ifndef _ASM_IA64_SPINLOCK_TYPES_H
|
||||
#define _ASM_IA64_SPINLOCK_TYPES_H
|
||||
|
||||
#ifndef __LINUX_SPINLOCK_TYPES_RAW_H
|
||||
#ifndef __LINUX_SPINLOCK_TYPES_H
|
||||
# error "please don't include this file directly"
|
||||
#endif
|
||||
|
||||
|
@ -55,8 +55,21 @@ static inline void syscall_set_return_value(struct task_struct *task,
|
||||
}
|
||||
}
|
||||
|
||||
extern void syscall_get_arguments(struct task_struct *task,
|
||||
struct pt_regs *regs, unsigned long *args);
|
||||
extern void ia64_syscall_get_set_arguments(struct task_struct *task,
|
||||
struct pt_regs *regs, unsigned long *args, int rw);
|
||||
static inline void syscall_get_arguments(struct task_struct *task,
|
||||
struct pt_regs *regs,
|
||||
unsigned long *args)
|
||||
{
|
||||
ia64_syscall_get_set_arguments(task, regs, args, 0);
|
||||
}
|
||||
|
||||
static inline void syscall_set_arguments(struct task_struct *task,
|
||||
struct pt_regs *regs,
|
||||
unsigned long *args)
|
||||
{
|
||||
ia64_syscall_get_set_arguments(task, regs, args, 1);
|
||||
}
|
||||
|
||||
static inline int syscall_get_arch(struct task_struct *task)
|
||||
{
|
||||
|
@ -38,15 +38,13 @@ int audit_classify_syscall(int abi, unsigned syscall)
|
||||
{
|
||||
switch(syscall) {
|
||||
case __NR_open:
|
||||
return AUDITSC_OPEN;
|
||||
return 2;
|
||||
case __NR_openat:
|
||||
return AUDITSC_OPENAT;
|
||||
return 3;
|
||||
case __NR_execve:
|
||||
return AUDITSC_EXECVE;
|
||||
case __NR_openat2:
|
||||
return AUDITSC_OPENAT2;
|
||||
return 5;
|
||||
default:
|
||||
return AUDITSC_NATIVE;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -194,3 +194,9 @@ int ftrace_update_ftrace_func(ftrace_func_t func)
|
||||
flush_icache_range(addr, addr + 16);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* run from kstop_machine */
|
||||
int __init ftrace_dyn_arch_init(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
@ -392,13 +392,14 @@ static void __kprobes set_current_kprobe(struct kprobe *p,
|
||||
__this_cpu_write(current_kprobe, p);
|
||||
}
|
||||
|
||||
void __kretprobe_trampoline(void)
|
||||
static void kretprobe_trampoline(void)
|
||||
{
|
||||
}
|
||||
|
||||
int __kprobes trampoline_probe_handler(struct kprobe *p, struct pt_regs *regs)
|
||||
{
|
||||
regs->cr_iip = __kretprobe_trampoline_handler(regs, NULL);
|
||||
regs->cr_iip = __kretprobe_trampoline_handler(regs,
|
||||
dereference_function_descriptor(kretprobe_trampoline), NULL);
|
||||
/*
|
||||
* By returning a non-zero value, we are telling
|
||||
* kprobe_handler() that we don't want the post_handler
|
||||
@ -414,7 +415,7 @@ void __kprobes arch_prepare_kretprobe(struct kretprobe_instance *ri,
|
||||
ri->fp = NULL;
|
||||
|
||||
/* Replace the return addr with trampoline addr */
|
||||
regs->b0 = (unsigned long)dereference_function_descriptor(__kretprobe_trampoline);
|
||||
regs->b0 = (unsigned long)dereference_function_descriptor(kretprobe_trampoline);
|
||||
}
|
||||
|
||||
/* Check the instruction in the slot is break */
|
||||
@ -890,6 +891,11 @@ int __kprobes kprobe_exceptions_notify(struct notifier_block *self,
|
||||
return ret;
|
||||
}
|
||||
|
||||
unsigned long arch_deref_entry_point(void *entry)
|
||||
{
|
||||
return ((struct fnptr *)entry)->ip;
|
||||
}
|
||||
|
||||
static struct kprobe trampoline_p = {
|
||||
.pre_handler = trampoline_probe_handler
|
||||
};
|
||||
@ -897,14 +903,14 @@ static struct kprobe trampoline_p = {
|
||||
int __init arch_init_kprobes(void)
|
||||
{
|
||||
trampoline_p.addr =
|
||||
dereference_function_descriptor(__kretprobe_trampoline);
|
||||
dereference_function_descriptor(kretprobe_trampoline);
|
||||
return register_kprobe(&trampoline_p);
|
||||
}
|
||||
|
||||
int __kprobes arch_trampoline_kprobe(struct kprobe *p)
|
||||
{
|
||||
if (p->addr ==
|
||||
dereference_function_descriptor(__kretprobe_trampoline))
|
||||
dereference_function_descriptor(kretprobe_trampoline))
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
|
@ -176,7 +176,7 @@ mca_handler_bh(unsigned long paddr, void *iip, unsigned long ipsr)
|
||||
spin_unlock(&mca_bh_lock);
|
||||
|
||||
/* This process is about to be killed itself */
|
||||
make_task_dead(SIGKILL);
|
||||
do_exit(SIGKILL);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -848,7 +848,7 @@ register_unwind_table (struct module *mod)
|
||||
{
|
||||
struct unw_table_entry *start = (void *) mod->arch.unwind->sh_addr;
|
||||
struct unw_table_entry *end = start + mod->arch.unwind->sh_size / sizeof (*start);
|
||||
struct unw_table_entry *e1, *e2, *core, *init;
|
||||
struct unw_table_entry tmp, *e1, *e2, *core, *init;
|
||||
unsigned long num_init = 0, num_core = 0;
|
||||
|
||||
/* First, count how many init and core unwind-table entries there are. */
|
||||
@ -865,7 +865,9 @@ register_unwind_table (struct module *mod)
|
||||
for (e1 = start; e1 < end; ++e1) {
|
||||
for (e2 = e1 + 1; e2 < end; ++e2) {
|
||||
if (e2->start_offset < e1->start_offset) {
|
||||
swap(*e1, *e2);
|
||||
tmp = *e1;
|
||||
*e1 = *e2;
|
||||
*e2 = tmp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -523,12 +523,15 @@ exit_thread (struct task_struct *tsk)
|
||||
}
|
||||
|
||||
unsigned long
|
||||
__get_wchan (struct task_struct *p)
|
||||
get_wchan (struct task_struct *p)
|
||||
{
|
||||
struct unw_frame_info info;
|
||||
unsigned long ip;
|
||||
int count = 0;
|
||||
|
||||
if (!p || p == current || task_is_running(p))
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* Note: p may not be a blocked task (it could be current or
|
||||
* another process running on some other CPU. Rather than
|
||||
|
@ -2001,16 +2001,17 @@ const struct user_regset_view *task_user_regset_view(struct task_struct *tsk)
|
||||
return &user_ia64_view;
|
||||
}
|
||||
|
||||
struct syscall_get_args {
|
||||
struct syscall_get_set_args {
|
||||
unsigned int i;
|
||||
unsigned int n;
|
||||
unsigned long *args;
|
||||
struct pt_regs *regs;
|
||||
int rw;
|
||||
};
|
||||
|
||||
static void syscall_get_args_cb(struct unw_frame_info *info, void *data)
|
||||
static void syscall_get_set_args_cb(struct unw_frame_info *info, void *data)
|
||||
{
|
||||
struct syscall_get_args *args = data;
|
||||
struct syscall_get_set_args *args = data;
|
||||
struct pt_regs *pt = args->regs;
|
||||
unsigned long *krbs, cfm, ndirty, nlocals, nouts;
|
||||
int i, count;
|
||||
@ -2041,31 +2042,37 @@ static void syscall_get_args_cb(struct unw_frame_info *info, void *data)
|
||||
/* Iterate over outs. */
|
||||
for (i = 0; i < count; i++) {
|
||||
int j = ndirty + nlocals + i + args->i;
|
||||
args->args[i] = *ia64_rse_skip_regs(krbs, j);
|
||||
if (args->rw)
|
||||
*ia64_rse_skip_regs(krbs, j) = args->args[i];
|
||||
else
|
||||
args->args[i] = *ia64_rse_skip_regs(krbs, j);
|
||||
}
|
||||
|
||||
while (i < args->n) {
|
||||
args->args[i] = 0;
|
||||
i++;
|
||||
if (!args->rw) {
|
||||
while (i < args->n) {
|
||||
args->args[i] = 0;
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void syscall_get_arguments(struct task_struct *task,
|
||||
struct pt_regs *regs, unsigned long *args)
|
||||
void ia64_syscall_get_set_arguments(struct task_struct *task,
|
||||
struct pt_regs *regs, unsigned long *args, int rw)
|
||||
{
|
||||
struct syscall_get_args data = {
|
||||
struct syscall_get_set_args data = {
|
||||
.i = 0,
|
||||
.n = 6,
|
||||
.args = args,
|
||||
.regs = regs,
|
||||
.rw = rw,
|
||||
};
|
||||
|
||||
if (task == current)
|
||||
unw_init_running(syscall_get_args_cb, &data);
|
||||
unw_init_running(syscall_get_set_args_cb, &data);
|
||||
else {
|
||||
struct unw_frame_info ufi;
|
||||
memset(&ufi, 0, sizeof(ufi));
|
||||
unw_init_from_blocked_task(&ufi, task);
|
||||
syscall_get_args_cb(&ufi, &data);
|
||||
syscall_get_set_args_cb(&ufi, &data);
|
||||
}
|
||||
}
|
||||
|
@ -208,7 +208,10 @@ sort_regions (struct rsvd_region *rsvd_region, int max)
|
||||
while (max--) {
|
||||
for (j = 0; j < max; ++j) {
|
||||
if (rsvd_region[j].start > rsvd_region[j+1].start) {
|
||||
swap(rsvd_region[j], rsvd_region[j + 1]);
|
||||
struct rsvd_region tmp;
|
||||
tmp = rsvd_region[j];
|
||||
rsvd_region[j] = rsvd_region[j + 1];
|
||||
rsvd_region[j + 1] = tmp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -369,5 +369,3 @@
|
||||
446 common landlock_restrict_self sys_landlock_restrict_self
|
||||
# 447 reserved for memfd_secret
|
||||
448 common process_mrelease sys_process_mrelease
|
||||
449 common futex_waitv sys_futex_waitv
|
||||
450 common set_mempolicy_home_node sys_set_mempolicy_home_node
|
||||
|
@ -264,7 +264,6 @@ static struct attribute * cache_default_attrs[] = {
|
||||
&shared_cpu_map.attr,
|
||||
NULL
|
||||
};
|
||||
ATTRIBUTE_GROUPS(cache_default);
|
||||
|
||||
#define to_object(k) container_of(k, struct cache_info, kobj)
|
||||
#define to_attr(a) container_of(a, struct cache_attr, attr)
|
||||
@ -285,7 +284,7 @@ static const struct sysfs_ops cache_sysfs_ops = {
|
||||
|
||||
static struct kobj_type cache_ktype = {
|
||||
.sysfs_ops = &cache_sysfs_ops,
|
||||
.default_groups = cache_default_groups,
|
||||
.default_attrs = cache_default_attrs,
|
||||
};
|
||||
|
||||
static struct kobj_type cache_ktype_percpu_entry = {
|
||||
|
@ -85,7 +85,7 @@ die (const char *str, struct pt_regs *regs, long err)
|
||||
if (panic_on_oops)
|
||||
panic("Fatal exception");
|
||||
|
||||
make_task_dead(SIGSEGV);
|
||||
do_exit(SIGSEGV);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -171,7 +171,7 @@ static int uncached_add_chunk(struct uncached_pool *uc_pool, int nid)
|
||||
* @n_pages: number of contiguous pages to allocate
|
||||
*
|
||||
* Allocate the specified number of contiguous uncached pages on the
|
||||
* requested node. If not enough contiguous uncached pages are available
|
||||
* the requested node. If not enough contiguous uncached pages are available
|
||||
* on the requested node, roundrobin starting with the next higher node.
|
||||
*/
|
||||
unsigned long uncached_alloc_page(int starting_nid, int n_pages)
|
||||
|
@ -153,7 +153,7 @@ find_memory (void)
|
||||
efi_memmap_walk(find_max_min_low_pfn, NULL);
|
||||
max_pfn = max_low_pfn;
|
||||
|
||||
memblock_add_node(0, PFN_PHYS(max_low_pfn), 0, MEMBLOCK_NONE);
|
||||
memblock_add_node(0, PFN_PHYS(max_low_pfn), 0);
|
||||
|
||||
find_initrd();
|
||||
|
||||
|
@ -156,15 +156,17 @@ ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *re
|
||||
BUG();
|
||||
}
|
||||
|
||||
if (fault & VM_FAULT_RETRY) {
|
||||
flags |= FAULT_FLAG_TRIED;
|
||||
if (flags & FAULT_FLAG_ALLOW_RETRY) {
|
||||
if (fault & VM_FAULT_RETRY) {
|
||||
flags |= FAULT_FLAG_TRIED;
|
||||
|
||||
/* No need to mmap_read_unlock(mm) as we would
|
||||
* have already released it in __lock_page_or_retry
|
||||
* in mm/filemap.c.
|
||||
*/
|
||||
/* No need to mmap_read_unlock(mm) as we would
|
||||
* have already released it in __lock_page_or_retry
|
||||
* in mm/filemap.c.
|
||||
*/
|
||||
|
||||
goto retry;
|
||||
goto retry;
|
||||
}
|
||||
}
|
||||
|
||||
mmap_read_unlock(mm);
|
||||
@ -257,7 +259,7 @@ ia64_do_page_fault (unsigned long address, unsigned long isr, struct pt_regs *re
|
||||
regs = NULL;
|
||||
bust_spinlocks(0);
|
||||
if (regs)
|
||||
make_task_dead(SIGKILL);
|
||||
do_exit(SIGKILL);
|
||||
return;
|
||||
|
||||
out_of_memory:
|
||||
|
@ -378,7 +378,7 @@ int __init register_active_ranges(u64 start, u64 len, int nid)
|
||||
#endif
|
||||
|
||||
if (start < end)
|
||||
memblock_add_node(__pa(start), end - start, nid, MEMBLOCK_NONE);
|
||||
memblock_add_node(__pa(start), end - start, nid);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -3,6 +3,3 @@ obj-y += kernel/
|
||||
obj-y += mm/
|
||||
obj-$(CONFIG_PCI) += pci/
|
||||
obj-y += boot/dts/
|
||||
|
||||
# for cleaning
|
||||
subdir- += boot
|
||||
|
@ -5,10 +5,10 @@ UTS_SYSNAME = -DUTS_SYSNAME=\"Linux\"
|
||||
|
||||
# What CPU version are we building for, and crack it open
|
||||
# as major.minor.rev
|
||||
CPU_VER := $(CONFIG_XILINX_MICROBLAZE0_HW_VER)
|
||||
CPU_MAJOR := $(word 1, $(subst ., , $(CPU_VER)))
|
||||
CPU_MINOR := $(word 2, $(subst ., , $(CPU_VER)))
|
||||
CPU_REV := $(word 3, $(subst ., , $(CPU_VER)))
|
||||
CPU_VER := $(shell echo $(CONFIG_XILINX_MICROBLAZE0_HW_VER))
|
||||
CPU_MAJOR := $(shell echo $(CPU_VER) | cut -d '.' -f 1)
|
||||
CPU_MINOR := $(shell echo $(CPU_VER) | cut -d '.' -f 2)
|
||||
CPU_REV := $(shell echo $(CPU_VER) | cut -d '.' -f 3)
|
||||
|
||||
export CPU_VER CPU_MAJOR CPU_MINOR CPU_REV
|
||||
|
||||
@ -60,6 +60,9 @@ export DTB
|
||||
|
||||
all: linux.bin
|
||||
|
||||
archclean:
|
||||
$(Q)$(MAKE) $(clean)=$(boot)
|
||||
|
||||
archheaders:
|
||||
$(Q)$(MAKE) $(build)=arch/microblaze/kernel/syscalls all
|
||||
|
||||
|
@ -347,7 +347,12 @@ xps_timer_1: timer@83c00000 {
|
||||
interrupts = < 3 2 >;
|
||||
reg = < 0x83c00000 0x10000 >;
|
||||
xlnx,count-width = <0x20>;
|
||||
xlnx,family = "virtex5";
|
||||
xlnx,gen0-assert = <0x1>;
|
||||
xlnx,gen1-assert = <0x1>;
|
||||
xlnx,one-timer-only = <0x0>;
|
||||
xlnx,trig0-assert = <0x1>;
|
||||
xlnx,trig1-assert = <0x1>;
|
||||
} ;
|
||||
} ;
|
||||
} ;
|
||||
|
@ -68,7 +68,7 @@ static inline void release_thread(struct task_struct *dead_task)
|
||||
{
|
||||
}
|
||||
|
||||
unsigned long __get_wchan(struct task_struct *p);
|
||||
unsigned long get_wchan(struct task_struct *p);
|
||||
|
||||
/* The size allocated for kernel stacks. This _must_ be a power of two! */
|
||||
# define KERNEL_STACK_SIZE 0x2000
|
||||
|
@ -58,6 +58,28 @@ static inline microblaze_reg_t microblaze_get_syscall_arg(struct pt_regs *regs,
|
||||
return ~0;
|
||||
}
|
||||
|
||||
static inline void microblaze_set_syscall_arg(struct pt_regs *regs,
|
||||
unsigned int n,
|
||||
unsigned long val)
|
||||
{
|
||||
switch (n) {
|
||||
case 5:
|
||||
regs->r10 = val;
|
||||
case 4:
|
||||
regs->r9 = val;
|
||||
case 3:
|
||||
regs->r8 = val;
|
||||
case 2:
|
||||
regs->r7 = val;
|
||||
case 1:
|
||||
regs->r6 = val;
|
||||
case 0:
|
||||
regs->r5 = val;
|
||||
default:
|
||||
BUG();
|
||||
}
|
||||
}
|
||||
|
||||
static inline void syscall_get_arguments(struct task_struct *task,
|
||||
struct pt_regs *regs,
|
||||
unsigned long *args)
|
||||
@ -69,6 +91,17 @@ static inline void syscall_get_arguments(struct task_struct *task,
|
||||
*args++ = microblaze_get_syscall_arg(regs, i++);
|
||||
}
|
||||
|
||||
static inline void syscall_set_arguments(struct task_struct *task,
|
||||
struct pt_regs *regs,
|
||||
const unsigned long *args)
|
||||
{
|
||||
unsigned int i = 0;
|
||||
unsigned int n = 6;
|
||||
|
||||
while (n--)
|
||||
microblaze_set_syscall_arg(regs, i++, *args++);
|
||||
}
|
||||
|
||||
asmlinkage unsigned long do_syscall_trace_enter(struct pt_regs *regs);
|
||||
asmlinkage void do_syscall_trace_leave(struct pt_regs *regs);
|
||||
|
||||
|
@ -44,10 +44,10 @@ void die(const char *str, struct pt_regs *fp, long err)
|
||||
pr_warn("Oops: %s, sig: %ld\n", str, err);
|
||||
show_regs(fp);
|
||||
spin_unlock_irq(&die_lock);
|
||||
/* make_task_dead() should take care of panic'ing from an interrupt
|
||||
/* do_exit() should take care of panic'ing from an interrupt
|
||||
* context so we don't handle it here
|
||||
*/
|
||||
make_task_dead(err);
|
||||
do_exit(err);
|
||||
}
|
||||
|
||||
/* for user application debugging */
|
||||
|
@ -163,6 +163,11 @@ int ftrace_make_call(struct dyn_ftrace *rec, unsigned long addr)
|
||||
return ret;
|
||||
}
|
||||
|
||||
int __init ftrace_dyn_arch_init(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ftrace_update_ftrace_func(ftrace_func_t func)
|
||||
{
|
||||
unsigned long ip = (unsigned long)(&ftrace_call);
|
||||
|
@ -112,7 +112,7 @@ int copy_thread(unsigned long clone_flags, unsigned long usp, unsigned long arg,
|
||||
return 0;
|
||||
}
|
||||
|
||||
unsigned long __get_wchan(struct task_struct *p)
|
||||
unsigned long get_wchan(struct task_struct *p)
|
||||
{
|
||||
/* TBD (used by procfs) */
|
||||
return 0;
|
||||
|
@ -283,7 +283,7 @@ static void do_signal(struct pt_regs *regs, int in_syscall)
|
||||
#ifdef DEBUG_SIG
|
||||
pr_info("do signal: %p %d\n", regs, in_syscall);
|
||||
pr_info("do signal2: %lx %lx %ld [%lx]\n", regs->pc, regs->r1,
|
||||
regs->r12, read_thread_flags());
|
||||
regs->r12, current_thread_info()->flags);
|
||||
#endif
|
||||
|
||||
if (get_signal(&ksig)) {
|
||||
|
@ -454,5 +454,3 @@
|
||||
446 common landlock_restrict_self sys_landlock_restrict_self
|
||||
# 447 reserved for memfd_secret
|
||||
448 common process_mrelease sys_process_mrelease
|
||||
449 common futex_waitv sys_futex_waitv
|
||||
450 common set_mempolicy_home_node sys_set_mempolicy_home_node
|
||||
|
@ -232,16 +232,18 @@ void do_page_fault(struct pt_regs *regs, unsigned long address,
|
||||
BUG();
|
||||
}
|
||||
|
||||
if (fault & VM_FAULT_RETRY) {
|
||||
flags |= FAULT_FLAG_TRIED;
|
||||
if (flags & FAULT_FLAG_ALLOW_RETRY) {
|
||||
if (fault & VM_FAULT_RETRY) {
|
||||
flags |= FAULT_FLAG_TRIED;
|
||||
|
||||
/*
|
||||
* No need to mmap_read_unlock(mm) as we would
|
||||
* have already released it in __lock_page_or_retry
|
||||
* in mm/filemap.c.
|
||||
*/
|
||||
/*
|
||||
* No need to mmap_read_unlock(mm) as we would
|
||||
* have already released it in __lock_page_or_retry
|
||||
* in mm/filemap.c.
|
||||
*/
|
||||
|
||||
goto retry;
|
||||
goto retry;
|
||||
}
|
||||
}
|
||||
|
||||
mmap_read_unlock(mm);
|
||||
|
@ -34,7 +34,6 @@
|
||||
#include <linux/mm_types.h>
|
||||
#include <linux/pgtable.h>
|
||||
#include <linux/memblock.h>
|
||||
#include <linux/kallsyms.h>
|
||||
|
||||
#include <asm/pgalloc.h>
|
||||
#include <linux/io.h>
|
||||
@ -172,7 +171,7 @@ void __init mapin_ram(void)
|
||||
for (s = 0; s < lowmem_size; s += PAGE_SIZE) {
|
||||
f = _PAGE_PRESENT | _PAGE_ACCESSED |
|
||||
_PAGE_SHARED | _PAGE_HWEXEC;
|
||||
if (!is_kernel_text(v))
|
||||
if ((char *) v < _stext || (char *) v >= _etext)
|
||||
f |= _PAGE_WRENABLE;
|
||||
else
|
||||
/* On the MicroBlaze, no user access
|
||||
|
@ -587,12 +587,13 @@ static void pcibios_fixup_resources(struct pci_dev *dev)
|
||||
}
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_ANY_ID, PCI_ANY_ID, pcibios_fixup_resources);
|
||||
|
||||
int pcibios_device_add(struct pci_dev *dev)
|
||||
int pcibios_add_device(struct pci_dev *dev)
|
||||
{
|
||||
dev->irq = of_irq_parse_and_map_pci(dev, 0, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(pcibios_add_device);
|
||||
|
||||
/*
|
||||
* Reparent resource children of pr that conflict with res
|
||||
|
@ -25,6 +25,3 @@ obj-y += vdso/
|
||||
ifdef CONFIG_KVM
|
||||
obj-y += kvm/
|
||||
endif
|
||||
|
||||
# for cleaning
|
||||
subdir- += boot
|
||||
|
@ -19,6 +19,7 @@ platform-$(CONFIG_MACH_LOONGSON32) += loongson32/
|
||||
platform-$(CONFIG_MACH_LOONGSON64) += loongson64/
|
||||
platform-$(CONFIG_MIPS_MALTA) += mti-malta/
|
||||
platform-$(CONFIG_MACH_NINTENDO64) += n64/
|
||||
platform-$(CONFIG_NLM_COMMON) += netlogic/
|
||||
platform-$(CONFIG_PIC32MZDA) += pic32/
|
||||
platform-$(CONFIG_RALINK) += ralink/
|
||||
platform-$(CONFIG_MIKROTIK_RB532) += rb532/
|
||||
|
@ -32,6 +32,7 @@ config MIPS
|
||||
select GENERIC_ATOMIC64 if !64BIT
|
||||
select GENERIC_CMOS_UPDATE
|
||||
select GENERIC_CPU_AUTOPROBE
|
||||
select GENERIC_FIND_FIRST_BIT
|
||||
select GENERIC_GETTIMEOFDAY
|
||||
select GENERIC_IOMAP
|
||||
select GENERIC_IRQ_PROBE
|
||||
@ -46,6 +47,7 @@ config MIPS
|
||||
select GENERIC_SMP_IDLE_THREAD
|
||||
select GENERIC_TIME_VSYSCALL
|
||||
select GUP_GET_PTE_LOW_HIGH if CPU_MIPS32 && PHYS_ADDR_T_64BIT
|
||||
select HANDLE_DOMAIN_IRQ
|
||||
select HAVE_ARCH_COMPILER_H
|
||||
select HAVE_ARCH_JUMP_LABEL
|
||||
select HAVE_ARCH_KGDB if MIPS_FP_SUPPORT
|
||||
@ -55,6 +57,7 @@ config MIPS
|
||||
select HAVE_ARCH_TRACEHOOK
|
||||
select HAVE_ARCH_TRANSPARENT_HUGEPAGE if CPU_SUPPORTS_HUGEPAGES
|
||||
select HAVE_ASM_MODVERSIONS
|
||||
select HAVE_CBPF_JIT if !64BIT && !CPU_MICROMIPS
|
||||
select HAVE_CONTEXT_TRACKING
|
||||
select HAVE_TIF_NOHZ
|
||||
select HAVE_C_RECORDMCOUNT
|
||||
@ -62,10 +65,7 @@ config MIPS
|
||||
select HAVE_DEBUG_STACKOVERFLOW
|
||||
select HAVE_DMA_CONTIGUOUS
|
||||
select HAVE_DYNAMIC_FTRACE
|
||||
select HAVE_EBPF_JIT if !CPU_MICROMIPS && \
|
||||
!CPU_DADDI_WORKAROUNDS && \
|
||||
!CPU_R4000_WORKAROUNDS && \
|
||||
!CPU_R4400_WORKAROUNDS
|
||||
select HAVE_EBPF_JIT if 64BIT && !CPU_MICROMIPS && TARGET_ISA_REV >= 2
|
||||
select HAVE_EXIT_THREAD
|
||||
select HAVE_FAST_GUP
|
||||
select HAVE_FTRACE_MCOUNT_RECORD
|
||||
@ -263,6 +263,7 @@ config BMIPS_GENERIC
|
||||
bool "Broadcom Generic BMIPS kernel"
|
||||
select ARCH_HAS_RESET_CONTROLLER
|
||||
select ARCH_HAS_SYNC_DMA_FOR_CPU_ALL
|
||||
select ARCH_HAS_PHYS_TO_DMA
|
||||
select BOOT_RAW
|
||||
select NO_EXCEPT_FILL
|
||||
select USE_OF
|
||||
@ -290,8 +291,6 @@ config BMIPS_GENERIC
|
||||
select USB_OHCI_BIG_ENDIAN_DESC if CPU_BIG_ENDIAN
|
||||
select USB_OHCI_BIG_ENDIAN_MMIO if CPU_BIG_ENDIAN
|
||||
select HARDIRQS_SW_RESEND
|
||||
select HAVE_PCI
|
||||
select PCI_DRIVERS_GENERIC
|
||||
help
|
||||
Build a generic DT-based kernel image that boots on select
|
||||
BCM33xx cable modem chips, BCM63xx DSL chips, and BCM7xxx set-top
|
||||
@ -638,6 +637,9 @@ config MACH_REALTEK_RTL
|
||||
select SYS_SUPPORTS_MIPS16
|
||||
select SYS_SUPPORTS_MULTITHREADING
|
||||
select SYS_SUPPORTS_VPE_LOADER
|
||||
select SYS_HAS_EARLY_PRINTK
|
||||
select SYS_HAS_EARLY_PRINTK_8250
|
||||
select USE_GENERIC_EARLY_PRINTK_8250
|
||||
select BOOT_RAW
|
||||
select PINCTRL
|
||||
select USE_OF
|
||||
@ -760,6 +762,7 @@ config SGI_IP30
|
||||
select HAVE_PCI
|
||||
select IRQ_MIPS_CPU
|
||||
select IRQ_DOMAIN_HIERARCHY
|
||||
select NR_CPUS_DEFAULT_2
|
||||
select PCI_DRIVERS_GENERIC
|
||||
select PCI_XTALK_BRIDGE
|
||||
select SYS_HAS_EARLY_PRINTK
|
||||
@ -994,6 +997,60 @@ config CAVIUM_OCTEON_SOC
|
||||
Hikari
|
||||
Say Y here for most Octeon reference boards.
|
||||
|
||||
config NLM_XLR_BOARD
|
||||
bool "Netlogic XLR/XLS based systems"
|
||||
select BOOT_ELF32
|
||||
select NLM_COMMON
|
||||
select SYS_HAS_CPU_XLR
|
||||
select SYS_SUPPORTS_SMP
|
||||
select HAVE_PCI
|
||||
select SWAP_IO_SPACE
|
||||
select SYS_SUPPORTS_32BIT_KERNEL
|
||||
select SYS_SUPPORTS_64BIT_KERNEL
|
||||
select PHYS_ADDR_T_64BIT
|
||||
select SYS_SUPPORTS_BIG_ENDIAN
|
||||
select SYS_SUPPORTS_HIGHMEM
|
||||
select NR_CPUS_DEFAULT_32
|
||||
select CEVT_R4K
|
||||
select CSRC_R4K
|
||||
select IRQ_MIPS_CPU
|
||||
select ZONE_DMA32 if 64BIT
|
||||
select SYNC_R4K
|
||||
select SYS_HAS_EARLY_PRINTK
|
||||
select SYS_SUPPORTS_ZBOOT
|
||||
select SYS_SUPPORTS_ZBOOT_UART16550
|
||||
help
|
||||
Support for systems based on Netlogic XLR and XLS processors.
|
||||
Say Y here if you have a XLR or XLS based board.
|
||||
|
||||
config NLM_XLP_BOARD
|
||||
bool "Netlogic XLP based systems"
|
||||
select BOOT_ELF32
|
||||
select NLM_COMMON
|
||||
select SYS_HAS_CPU_XLP
|
||||
select SYS_SUPPORTS_SMP
|
||||
select HAVE_PCI
|
||||
select SYS_SUPPORTS_32BIT_KERNEL
|
||||
select SYS_SUPPORTS_64BIT_KERNEL
|
||||
select PHYS_ADDR_T_64BIT
|
||||
select GPIOLIB
|
||||
select SYS_SUPPORTS_BIG_ENDIAN
|
||||
select SYS_SUPPORTS_LITTLE_ENDIAN
|
||||
select SYS_SUPPORTS_HIGHMEM
|
||||
select NR_CPUS_DEFAULT_32
|
||||
select CEVT_R4K
|
||||
select CSRC_R4K
|
||||
select IRQ_MIPS_CPU
|
||||
select ZONE_DMA32 if 64BIT
|
||||
select SYNC_R4K
|
||||
select SYS_HAS_EARLY_PRINTK
|
||||
select USE_OF
|
||||
select SYS_SUPPORTS_ZBOOT
|
||||
select SYS_SUPPORTS_ZBOOT_UART16550
|
||||
help
|
||||
This board is based on Netlogic XLP Processor.
|
||||
Say Y here if you have a XLP based board.
|
||||
|
||||
endchoice
|
||||
|
||||
source "arch/mips/alchemy/Kconfig"
|
||||
@ -1016,6 +1073,7 @@ source "arch/mips/cavium-octeon/Kconfig"
|
||||
source "arch/mips/loongson2ef/Kconfig"
|
||||
source "arch/mips/loongson32/Kconfig"
|
||||
source "arch/mips/loongson64/Kconfig"
|
||||
source "arch/mips/netlogic/Kconfig"
|
||||
|
||||
endmenu
|
||||
|
||||
@ -1157,6 +1215,15 @@ config SYS_SUPPORTS_RELOCATABLE
|
||||
The platform must provide plat_get_fdt() if it selects CONFIG_USE_OF
|
||||
to allow access to command line and entropy sources.
|
||||
|
||||
config MIPS_CBPF_JIT
|
||||
def_bool y
|
||||
depends on BPF_JIT && HAVE_CBPF_JIT
|
||||
|
||||
config MIPS_EBPF_JIT
|
||||
def_bool y
|
||||
depends on BPF_JIT && HAVE_EBPF_JIT
|
||||
|
||||
|
||||
#
|
||||
# Endianness selection. Sufficiently obscure so many users don't know what to
|
||||
# answer,so we try hard to limit the available choices. Also the use of a
|
||||
@ -1605,6 +1672,7 @@ config CPU_R4300
|
||||
depends on SYS_HAS_CPU_R4300
|
||||
select CPU_SUPPORTS_32BIT_KERNEL
|
||||
select CPU_SUPPORTS_64BIT_KERNEL
|
||||
select CPU_HAS_LOAD_STORE_LR
|
||||
help
|
||||
MIPS Technologies R4300-series processors.
|
||||
|
||||
@ -1718,10 +1786,35 @@ config CPU_BMIPS
|
||||
select CPU_HAS_PREFETCH
|
||||
select CPU_SUPPORTS_CPUFREQ
|
||||
select MIPS_EXTERNAL_TIMER
|
||||
select GENERIC_IRQ_MIGRATION if HOTPLUG_CPU
|
||||
help
|
||||
Support for BMIPS32/3300/4350/4380 and BMIPS5000 processors.
|
||||
|
||||
config CPU_XLR
|
||||
bool "Netlogic XLR SoC"
|
||||
depends on SYS_HAS_CPU_XLR
|
||||
select CPU_SUPPORTS_32BIT_KERNEL
|
||||
select CPU_SUPPORTS_64BIT_KERNEL
|
||||
select CPU_SUPPORTS_HIGHMEM
|
||||
select CPU_SUPPORTS_HUGEPAGES
|
||||
select WEAK_ORDERING
|
||||
select WEAK_REORDERING_BEYOND_LLSC
|
||||
help
|
||||
Netlogic Microsystems XLR/XLS processors.
|
||||
|
||||
config CPU_XLP
|
||||
bool "Netlogic XLP SoC"
|
||||
depends on SYS_HAS_CPU_XLP
|
||||
select CPU_SUPPORTS_32BIT_KERNEL
|
||||
select CPU_SUPPORTS_64BIT_KERNEL
|
||||
select CPU_SUPPORTS_HIGHMEM
|
||||
select WEAK_ORDERING
|
||||
select WEAK_REORDERING_BEYOND_LLSC
|
||||
select CPU_HAS_PREFETCH
|
||||
select CPU_MIPSR2
|
||||
select CPU_SUPPORTS_HUGEPAGES
|
||||
select MIPS_ASID_BITS_VARIABLE
|
||||
help
|
||||
Netlogic Microsystems XLP processors.
|
||||
endchoice
|
||||
|
||||
config CPU_MIPS32_3_5_FEATURES
|
||||
@ -1972,6 +2065,12 @@ config SYS_HAS_CPU_BMIPS5000
|
||||
select SYS_HAS_CPU_BMIPS
|
||||
select ARCH_HAS_SYNC_DMA_FOR_CPU
|
||||
|
||||
config SYS_HAS_CPU_XLR
|
||||
bool
|
||||
|
||||
config SYS_HAS_CPU_XLP
|
||||
bool
|
||||
|
||||
#
|
||||
# CPU may reorder R->R, R->W, W->R, W->W
|
||||
# Reordering beyond LL and SC is handled in WEAK_REORDERING_BEYOND_LLSC
|
||||
@ -2066,7 +2165,7 @@ config CPU_SUPPORTS_HUGEPAGES
|
||||
config MIPS_PGD_C0_CONTEXT
|
||||
bool
|
||||
depends on 64BIT
|
||||
default y if (CPU_MIPSR2 || CPU_MIPSR6)
|
||||
default y if (CPU_MIPSR2 || CPU_MIPSR6) && !CPU_XLP
|
||||
|
||||
#
|
||||
# Set to y for ptrace access to watch registers.
|
||||
@ -2113,16 +2212,6 @@ config MIPS_VA_BITS_48
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
config ZBOOT_LOAD_ADDRESS
|
||||
hex "Compressed kernel load address"
|
||||
default 0xffffffff80400000 if BCM47XX
|
||||
default 0x0
|
||||
depends on SYS_SUPPORTS_ZBOOT
|
||||
help
|
||||
The address to load compressed kernel, aka vmlinuz.
|
||||
|
||||
This is only used if non-zero.
|
||||
|
||||
choice
|
||||
prompt "Kernel page size"
|
||||
default PAGE_SIZE_4KB
|
||||
@ -2673,8 +2762,6 @@ config NUMA
|
||||
bool "NUMA Support"
|
||||
depends on SYS_SUPPORTS_NUMA
|
||||
select SMP
|
||||
select HAVE_SETUP_PER_CPU_AREA
|
||||
select NEED_PER_CPU_EMBED_FIRST_CHUNK
|
||||
help
|
||||
Say Y to compile the kernel to support NUMA (Non-Uniform Memory
|
||||
Access). This option improves performance on systems with more
|
||||
@ -2685,6 +2772,14 @@ config NUMA
|
||||
config SYS_SUPPORTS_NUMA
|
||||
bool
|
||||
|
||||
config HAVE_SETUP_PER_CPU_AREA
|
||||
def_bool y
|
||||
depends on NUMA
|
||||
|
||||
config NEED_PER_CPU_EMBED_FIRST_CHUNK
|
||||
def_bool y
|
||||
depends on NUMA
|
||||
|
||||
config RELOCATABLE
|
||||
bool "Relocatable kernel"
|
||||
depends on SYS_SUPPORTS_RELOCATABLE
|
||||
@ -2753,7 +2848,7 @@ config NODES_SHIFT
|
||||
|
||||
config HW_PERF_EVENTS
|
||||
bool "Enable hardware performance counter support for perf events"
|
||||
depends on PERF_EVENTS && (CPU_MIPS32 || CPU_MIPS64 || CPU_R10000 || CPU_SB1 || CPU_CAVIUM_OCTEON || CPU_LOONGSON64)
|
||||
depends on PERF_EVENTS && (CPU_MIPS32 || CPU_MIPS64 || CPU_R10000 || CPU_SB1 || CPU_CAVIUM_OCTEON || CPU_XLP || CPU_LOONGSON64)
|
||||
default y
|
||||
help
|
||||
Enable hardware performance counter support for perf events. If
|
||||
|
@ -8,7 +8,8 @@
|
||||
# Copyright (C) 2002, 2003, 2004 Maciej W. Rozycki
|
||||
#
|
||||
# This file is included by the global makefile so that you can add your own
|
||||
# architecture-specific flags and dependencies.
|
||||
# architecture-specific flags and dependencies. Remember to do have actions
|
||||
# for "archclean" cleaning up for this architecture.
|
||||
#
|
||||
|
||||
archscripts: scripts_basic
|
||||
@ -253,7 +254,9 @@ endif
|
||||
#
|
||||
# Board-dependent options and extra files
|
||||
#
|
||||
ifdef need-compiler
|
||||
include $(srctree)/arch/mips/Kbuild.platforms
|
||||
endif
|
||||
|
||||
ifdef CONFIG_PHYSICAL_START
|
||||
load-y = $(CONFIG_PHYSICAL_START)
|
||||
@ -425,6 +428,11 @@ endif
|
||||
$(Q)install -D -m 644 .config $(INSTALL_PATH)/config-$(KERNELRELEASE)
|
||||
$(Q)install -D -m 644 System.map $(INSTALL_PATH)/System.map-$(KERNELRELEASE)
|
||||
|
||||
archclean:
|
||||
$(Q)$(MAKE) $(clean)=arch/mips/boot
|
||||
$(Q)$(MAKE) $(clean)=arch/mips/boot/compressed
|
||||
$(Q)$(MAKE) $(clean)=arch/mips/boot/tools
|
||||
|
||||
archheaders:
|
||||
$(Q)$(MAKE) $(build)=arch/mips/kernel/syscalls all
|
||||
|
||||
|
@ -23,6 +23,8 @@
|
||||
* 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* Notes :
|
||||
* This file must ONLY be built when CONFIG_GPIOLIB=y and
|
||||
* CONFIG_ALCHEMY_GPIO_INDIRECT=n, otherwise compilation will fail!
|
||||
* au1000 SoC have only one GPIO block : GPIO1
|
||||
* Au1100, Au15x0, Au12x0 have a second one : GPIO2
|
||||
* Au1300 is totally different: 1 block with up to 128 GPIOs
|
||||
|
@ -66,7 +66,6 @@ int __init db1550_board_setup(void)
|
||||
case BCSR_WHOAMI_PB1550_DDR:
|
||||
bcsr_init(PB1550_BCSR_PHYS_ADDR,
|
||||
PB1550_BCSR_PHYS_ADDR + PB1550_BCSR_HEXLED_OFS);
|
||||
break;
|
||||
case BCSR_WHOAMI_DB1550:
|
||||
break;
|
||||
default:
|
||||
|
@ -34,6 +34,15 @@
|
||||
|
||||
static char ath79_sys_type[ATH79_SYS_TYPE_LEN];
|
||||
|
||||
static void ath79_restart(char *command)
|
||||
{
|
||||
local_irq_disable();
|
||||
ath79_device_reset_set(AR71XX_RESET_FULL_CHIP);
|
||||
for (;;)
|
||||
if (cpu_wait)
|
||||
cpu_wait();
|
||||
}
|
||||
|
||||
static void ath79_halt(void)
|
||||
{
|
||||
while (1)
|
||||
@ -225,6 +234,7 @@ void __init plat_mem_setup(void)
|
||||
|
||||
detect_memory_region(0, ATH79_MEM_SIZE_MIN, ATH79_MEM_SIZE_MAX);
|
||||
|
||||
_machine_restart = ath79_restart;
|
||||
_machine_halt = ath79_halt;
|
||||
pm_power_off = ath79_halt;
|
||||
}
|
||||
|
@ -4,3 +4,4 @@
|
||||
cflags-$(CONFIG_BCM47XX) += \
|
||||
-I$(srctree)/arch/mips/include/asm/mach-bcm47xx
|
||||
load-$(CONFIG_BCM47XX) := 0xffffffff80001000
|
||||
zload-$(CONFIG_BCM47XX) += 0xffffffff80400000
|
||||
|
@ -141,7 +141,6 @@ struct bcm47xx_board_type_list2 bcm47xx_board_list_boot_hw[] __initconst = {
|
||||
{{BCM47XX_BOARD_LINKSYS_WRT300NV11, "Linksys WRT300N V1.1"}, "WRT300N", "1.1"},
|
||||
{{BCM47XX_BOARD_LINKSYS_WRT310NV1, "Linksys WRT310N V1"}, "WRT310N", "1.0"},
|
||||
{{BCM47XX_BOARD_LINKSYS_WRT310NV2, "Linksys WRT310N V2"}, "WRT310N", "2.0"},
|
||||
{{BCM47XX_BOARD_LINKSYS_WRT320N_V1, "Linksys WRT320N V1"}, "WRT320N", "1.0"},
|
||||
{{BCM47XX_BOARD_LINKSYS_WRT54G3GV2, "Linksys WRT54G3GV2-VF"}, "WRT54G3GV2-VF", "1.0"},
|
||||
{{BCM47XX_BOARD_LINKSYS_WRT610NV1, "Linksys WRT610N V1"}, "WRT610N", "1.0"},
|
||||
{{BCM47XX_BOARD_LINKSYS_WRT610NV2, "Linksys WRT610N V2"}, "WRT610N", "2.0"},
|
||||
@ -162,12 +161,9 @@ struct bcm47xx_board_type_list1 bcm47xx_board_list_board_id[] __initconst = {
|
||||
{{BCM47XX_BOARD_LUXUL_XWR_600_V1, "Luxul XWR-600 V1"}, "luxul_xwr600_v1"},
|
||||
{{BCM47XX_BOARD_LUXUL_XWR_1750_V1, "Luxul XWR-1750 V1"}, "luxul_xwr1750_v1"},
|
||||
{{BCM47XX_BOARD_NETGEAR_R6200_V1, "Netgear R6200 V1"}, "U12H192T00_NETGEAR"},
|
||||
{{BCM47XX_BOARD_NETGEAR_R6300_V1, "Netgear R6300 V1"}, "U12H218T00_NETGEAR"},
|
||||
{{BCM47XX_BOARD_NETGEAR_WGR614V8, "Netgear WGR614 V8"}, "U12H072T00_NETGEAR"},
|
||||
{{BCM47XX_BOARD_NETGEAR_WGR614V9, "Netgear WGR614 V9"}, "U12H094T00_NETGEAR"},
|
||||
{{BCM47XX_BOARD_NETGEAR_WGR614_V10, "Netgear WGR614 V10"}, "U12H139T01_NETGEAR"},
|
||||
{{BCM47XX_BOARD_NETGEAR_WN2500RP_V1, "Netgear WN2500RP V1"}, "U12H197T00_NETGEAR"},
|
||||
{{BCM47XX_BOARD_NETGEAR_WN2500RP_V2, "Netgear WN2500RP V2"}, "U12H294T00_NETGEAR"},
|
||||
{{BCM47XX_BOARD_NETGEAR_WNDR3300, "Netgear WNDR3300"}, "U12H093T00_NETGEAR"},
|
||||
{{BCM47XX_BOARD_NETGEAR_WNDR3400V1, "Netgear WNDR3400 V1"}, "U12H155T00_NETGEAR"},
|
||||
{{BCM47XX_BOARD_NETGEAR_WNDR3400V2, "Netgear WNDR3400 V2"}, "U12H187T00_NETGEAR"},
|
||||
@ -349,7 +345,7 @@ void __init bcm47xx_board_detect(void)
|
||||
|
||||
board_detected = bcm47xx_board_get_nvram();
|
||||
bcm47xx_board.board = board_detected->board;
|
||||
strscpy(bcm47xx_board.name, board_detected->name,
|
||||
strlcpy(bcm47xx_board.name, board_detected->name,
|
||||
BCM47XX_BOARD_MAX_NAME);
|
||||
}
|
||||
|
||||
|
@ -26,12 +26,6 @@
|
||||
|
||||
/* Asus */
|
||||
|
||||
static const struct gpio_keys_button
|
||||
bcm47xx_buttons_asus_rtn10u[] __initconst = {
|
||||
BCM47XX_GPIO_KEY(20, KEY_WPS_BUTTON),
|
||||
BCM47XX_GPIO_KEY(21, KEY_RESTART),
|
||||
};
|
||||
|
||||
static const struct gpio_keys_button
|
||||
bcm47xx_buttons_asus_rtn12[] __initconst = {
|
||||
BCM47XX_GPIO_KEY(0, KEY_WPS_BUTTON),
|
||||
@ -282,18 +276,6 @@ bcm47xx_buttons_linksys_wrt310nv1[] __initconst = {
|
||||
BCM47XX_GPIO_KEY(8, KEY_UNKNOWN),
|
||||
};
|
||||
|
||||
static const struct gpio_keys_button
|
||||
bcm47xx_buttons_linksys_wrt310n_v2[] __initconst = {
|
||||
BCM47XX_GPIO_KEY(5, KEY_WPS_BUTTON),
|
||||
BCM47XX_GPIO_KEY(6, KEY_RESTART),
|
||||
};
|
||||
|
||||
static const struct gpio_keys_button
|
||||
bcm47xx_buttons_linksys_wrt320n_v1[] __initconst = {
|
||||
BCM47XX_GPIO_KEY(5, KEY_WPS_BUTTON),
|
||||
BCM47XX_GPIO_KEY(8, KEY_RESTART),
|
||||
};
|
||||
|
||||
static const struct gpio_keys_button
|
||||
bcm47xx_buttons_linksys_wrt54g3gv2[] __initconst = {
|
||||
BCM47XX_GPIO_KEY(5, KEY_WIMAX),
|
||||
@ -409,17 +391,6 @@ bcm47xx_buttons_netgear_r6200_v1[] __initconst = {
|
||||
BCM47XX_GPIO_KEY(4, KEY_WPS_BUTTON),
|
||||
};
|
||||
|
||||
static const struct gpio_keys_button
|
||||
bcm47xx_buttons_netgear_r6300_v1[] __initconst = {
|
||||
BCM47XX_GPIO_KEY(6, KEY_RESTART),
|
||||
};
|
||||
|
||||
static const struct gpio_keys_button
|
||||
bcm47xx_buttons_netgear_wn2500rp_v1[] __initconst = {
|
||||
BCM47XX_GPIO_KEY(12, KEY_RESTART),
|
||||
BCM47XX_GPIO_KEY(31, KEY_WPS_BUTTON),
|
||||
};
|
||||
|
||||
static const struct gpio_keys_button
|
||||
bcm47xx_buttons_netgear_wndr3400v1[] __initconst = {
|
||||
BCM47XX_GPIO_KEY(4, KEY_RESTART),
|
||||
@ -507,9 +478,6 @@ int __init bcm47xx_buttons_register(void)
|
||||
int err;
|
||||
|
||||
switch (board) {
|
||||
case BCM47XX_BOARD_ASUS_RTN10U:
|
||||
err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_rtn10u);
|
||||
break;
|
||||
case BCM47XX_BOARD_ASUS_RTN12:
|
||||
err = bcm47xx_copy_bdata(bcm47xx_buttons_asus_rtn12);
|
||||
break;
|
||||
@ -640,12 +608,6 @@ int __init bcm47xx_buttons_register(void)
|
||||
case BCM47XX_BOARD_LINKSYS_WRT310NV1:
|
||||
err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt310nv1);
|
||||
break;
|
||||
case BCM47XX_BOARD_LINKSYS_WRT310NV2:
|
||||
err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt310n_v2);
|
||||
break;
|
||||
case BCM47XX_BOARD_LINKSYS_WRT320N_V1:
|
||||
err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt320n_v1);
|
||||
break;
|
||||
case BCM47XX_BOARD_LINKSYS_WRT54G3GV2:
|
||||
err = bcm47xx_copy_bdata(bcm47xx_buttons_linksys_wrt54g3gv2);
|
||||
break;
|
||||
@ -712,12 +674,6 @@ int __init bcm47xx_buttons_register(void)
|
||||
case BCM47XX_BOARD_NETGEAR_R6200_V1:
|
||||
err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_r6200_v1);
|
||||
break;
|
||||
case BCM47XX_BOARD_NETGEAR_R6300_V1:
|
||||
err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_r6300_v1);
|
||||
break;
|
||||
case BCM47XX_BOARD_NETGEAR_WN2500RP_V1:
|
||||
err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wn2500rp_v1);
|
||||
break;
|
||||
case BCM47XX_BOARD_NETGEAR_WNDR3400V1:
|
||||
err = bcm47xx_copy_bdata(bcm47xx_buttons_netgear_wndr3400v1);
|
||||
break;
|
||||
|
@ -29,14 +29,6 @@
|
||||
|
||||
/* Asus */
|
||||
|
||||
static const struct gpio_led
|
||||
bcm47xx_leds_asus_rtn10u[] __initconst = {
|
||||
BCM47XX_GPIO_LED(5, "green", "wlan", 0, LEDS_GPIO_DEFSTATE_OFF),
|
||||
BCM47XX_GPIO_LED(6, "green", "power", 1, LEDS_GPIO_DEFSTATE_ON),
|
||||
BCM47XX_GPIO_LED(7, "green", "wps", 0, LEDS_GPIO_DEFSTATE_OFF),
|
||||
BCM47XX_GPIO_LED(8, "green", "usb", 0, LEDS_GPIO_DEFSTATE_OFF),
|
||||
};
|
||||
|
||||
static const struct gpio_led
|
||||
bcm47xx_leds_asus_rtn12[] __initconst = {
|
||||
BCM47XX_GPIO_LED(2, "unk", "power", 1, LEDS_GPIO_DEFSTATE_ON),
|
||||
@ -321,13 +313,6 @@ bcm47xx_leds_linksys_wrt310nv1[] __initconst = {
|
||||
BCM47XX_GPIO_LED(9, "blue", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
|
||||
};
|
||||
|
||||
static const struct gpio_led
|
||||
bcm47xx_leds_linksys_wrt320n_v1[] __initconst = {
|
||||
BCM47XX_GPIO_LED(1, "blue", "wlan", 1, LEDS_GPIO_DEFSTATE_OFF),
|
||||
BCM47XX_GPIO_LED(2, "blue", "power", 0, LEDS_GPIO_DEFSTATE_ON),
|
||||
BCM47XX_GPIO_LED(4, "amber", "wps", 1, LEDS_GPIO_DEFSTATE_OFF),
|
||||
};
|
||||
|
||||
static const struct gpio_led
|
||||
bcm47xx_leds_linksys_wrt54g_generic[] __initconst = {
|
||||
BCM47XX_GPIO_LED(0, "unk", "dmz", 1, LEDS_GPIO_DEFSTATE_OFF),
|
||||
@ -571,9 +556,6 @@ void __init bcm47xx_leds_register(void)
|
||||
enum bcm47xx_board board = bcm47xx_board_get();
|
||||
|
||||
switch (board) {
|
||||
case BCM47XX_BOARD_ASUS_RTN10U:
|
||||
bcm47xx_set_pdata(bcm47xx_leds_asus_rtn10u);
|
||||
break;
|
||||
case BCM47XX_BOARD_ASUS_RTN12:
|
||||
bcm47xx_set_pdata(bcm47xx_leds_asus_rtn12);
|
||||
break;
|
||||
@ -707,9 +689,6 @@ void __init bcm47xx_leds_register(void)
|
||||
case BCM47XX_BOARD_LINKSYS_WRT310NV1:
|
||||
bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt310nv1);
|
||||
break;
|
||||
case BCM47XX_BOARD_LINKSYS_WRT320N_V1:
|
||||
bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt320n_v1);
|
||||
break;
|
||||
case BCM47XX_BOARD_LINKSYS_WRT54G3GV2:
|
||||
bcm47xx_set_pdata(bcm47xx_leds_linksys_wrt54g3gv2);
|
||||
break;
|
||||
|
@ -9,7 +9,6 @@
|
||||
#include <linux/init.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/platform_data/bcm7038_wdt.h>
|
||||
#include <bcm63xx_cpu.h>
|
||||
|
||||
static struct resource wdt_resources[] = {
|
||||
@ -20,18 +19,11 @@ static struct resource wdt_resources[] = {
|
||||
},
|
||||
};
|
||||
|
||||
static struct bcm7038_wdt_platform_data bcm63xx_wdt_pdata = {
|
||||
.clk_name = "periph",
|
||||
};
|
||||
|
||||
static struct platform_device bcm63xx_wdt_device = {
|
||||
.name = "bcm63xx-wdt",
|
||||
.id = -1,
|
||||
.num_resources = ARRAY_SIZE(wdt_resources),
|
||||
.resource = wdt_resources,
|
||||
.dev = {
|
||||
.platform_data = &bcm63xx_wdt_pdata,
|
||||
},
|
||||
};
|
||||
|
||||
int __init bcm63xx_wdt_register(void)
|
||||
|
@ -1,8 +1,68 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* 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) 2014 Kevin Cernekee <cernekee@gmail.com>
|
||||
*/
|
||||
|
||||
#define pr_fmt(fmt) "bmips-dma: " fmt
|
||||
|
||||
#include <linux/device.h>
|
||||
#include <linux/dma-direction.h>
|
||||
#include <linux/dma-direct.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/of.h>
|
||||
#include <linux/printk.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/types.h>
|
||||
#include <asm/bmips.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
/*
|
||||
* BCM338x has configurable address translation windows which allow the
|
||||
* peripherals' DMA addresses to be different from the Zephyr-visible
|
||||
* physical addresses. e.g. usb_dma_addr = zephyr_pa ^ 0x08000000
|
||||
*
|
||||
* If the "brcm,ubus" node has a "dma-ranges" property we will enable this
|
||||
* translation globally using the provided information. This implements a
|
||||
* very limited subset of "dma-ranges" support and it will probably be
|
||||
* replaced by a more generic version later.
|
||||
*/
|
||||
|
||||
struct bmips_dma_range {
|
||||
u32 child_addr;
|
||||
u32 parent_addr;
|
||||
u32 size;
|
||||
};
|
||||
|
||||
static struct bmips_dma_range *bmips_dma_ranges;
|
||||
|
||||
#define FLUSH_RAC 0x100
|
||||
|
||||
dma_addr_t phys_to_dma(struct device *dev, phys_addr_t pa)
|
||||
{
|
||||
struct bmips_dma_range *r;
|
||||
|
||||
for (r = bmips_dma_ranges; r && r->size; r++) {
|
||||
if (pa >= r->child_addr &&
|
||||
pa < (r->child_addr + r->size))
|
||||
return pa - r->child_addr + r->parent_addr;
|
||||
}
|
||||
return pa;
|
||||
}
|
||||
|
||||
phys_addr_t dma_to_phys(struct device *dev, dma_addr_t dma_addr)
|
||||
{
|
||||
struct bmips_dma_range *r;
|
||||
|
||||
for (r = bmips_dma_ranges; r && r->size; r++) {
|
||||
if (dma_addr >= r->parent_addr &&
|
||||
dma_addr < (r->parent_addr + r->size))
|
||||
return dma_addr - r->parent_addr + r->child_addr;
|
||||
}
|
||||
return dma_addr;
|
||||
}
|
||||
|
||||
void arch_sync_dma_for_cpu_all(void)
|
||||
{
|
||||
@ -19,3 +79,45 @@ void arch_sync_dma_for_cpu_all(void)
|
||||
__raw_writel(cfg | 0x100, cbr + BMIPS_RAC_CONFIG);
|
||||
__raw_readl(cbr + BMIPS_RAC_CONFIG);
|
||||
}
|
||||
|
||||
static int __init bmips_init_dma_ranges(void)
|
||||
{
|
||||
struct device_node *np =
|
||||
of_find_compatible_node(NULL, NULL, "brcm,ubus");
|
||||
const __be32 *data;
|
||||
struct bmips_dma_range *r;
|
||||
int len;
|
||||
|
||||
if (!np)
|
||||
return 0;
|
||||
|
||||
data = of_get_property(np, "dma-ranges", &len);
|
||||
if (!data)
|
||||
goto out_good;
|
||||
|
||||
len /= sizeof(*data) * 3;
|
||||
if (!len)
|
||||
goto out_bad;
|
||||
|
||||
/* add a dummy (zero) entry at the end as a sentinel */
|
||||
bmips_dma_ranges = kcalloc(len + 1, sizeof(struct bmips_dma_range),
|
||||
GFP_KERNEL);
|
||||
if (!bmips_dma_ranges)
|
||||
goto out_bad;
|
||||
|
||||
for (r = bmips_dma_ranges; len; len--, r++) {
|
||||
r->child_addr = be32_to_cpup(data++);
|
||||
r->parent_addr = be32_to_cpup(data++);
|
||||
r->size = be32_to_cpup(data++);
|
||||
}
|
||||
|
||||
out_good:
|
||||
of_node_put(np);
|
||||
return 0;
|
||||
|
||||
out_bad:
|
||||
pr_err("error parsing dma-ranges property\n");
|
||||
of_node_put(np);
|
||||
return -EINVAL;
|
||||
}
|
||||
arch_initcall(bmips_init_dma_ranges);
|
||||
|
@ -171,6 +171,3 @@ $(obj)/vmlinux.itb: $(obj)/vmlinux.its $(obj)/vmlinux.bin FORCE
|
||||
|
||||
$(obj)/vmlinux.%.itb: $(obj)/vmlinux.%.its $(obj)/vmlinux.bin.% FORCE
|
||||
$(call if_changed,itb-image,$<)
|
||||
|
||||
# for cleaning
|
||||
subdir- += compressed tools
|
||||
|
@ -50,10 +50,26 @@ vmlinuzobjs-$(CONFIG_MIPS_ALCHEMY) += $(obj)/uart-alchemy.o
|
||||
vmlinuzobjs-$(CONFIG_ATH79) += $(obj)/uart-ath79.o
|
||||
endif
|
||||
|
||||
extra-y += uart-ath79.c
|
||||
$(obj)/uart-ath79.c: $(srctree)/arch/mips/ath79/early_printk.c
|
||||
$(call cmd,shipped)
|
||||
|
||||
vmlinuzobjs-$(CONFIG_KERNEL_XZ) += $(obj)/ashldi3.o
|
||||
|
||||
vmlinuzobjs-$(CONFIG_KERNEL_ZSTD) += $(obj)/bswapdi.o $(obj)/ashldi3.o $(obj)/clz_ctz.o
|
||||
|
||||
extra-y += ashldi3.c
|
||||
$(obj)/ashldi3.c: $(obj)/%.c: $(srctree)/lib/%.c FORCE
|
||||
$(call if_changed,shipped)
|
||||
|
||||
extra-y += bswapsi.c
|
||||
$(obj)/bswapsi.c: $(obj)/%.c: $(srctree)/arch/mips/lib/%.c FORCE
|
||||
$(call if_changed,shipped)
|
||||
|
||||
extra-y += bswapdi.c
|
||||
$(obj)/bswapdi.c: $(obj)/%.c: $(srctree)/arch/mips/lib/%.c FORCE
|
||||
$(call if_changed,shipped)
|
||||
|
||||
targets := $(notdir $(vmlinuzobjs-y))
|
||||
|
||||
targets += vmlinux.bin
|
||||
@ -64,12 +80,12 @@ $(obj)/vmlinux.bin: $(KBUILD_IMAGE) FORCE
|
||||
$(call if_changed,objcopy)
|
||||
|
||||
tool_$(CONFIG_KERNEL_GZIP) = gzip
|
||||
tool_$(CONFIG_KERNEL_BZIP2) = bzip2_with_size
|
||||
tool_$(CONFIG_KERNEL_LZ4) = lz4_with_size
|
||||
tool_$(CONFIG_KERNEL_LZMA) = lzma_with_size
|
||||
tool_$(CONFIG_KERNEL_LZO) = lzo_with_size
|
||||
tool_$(CONFIG_KERNEL_XZ) = xzkern_with_size
|
||||
tool_$(CONFIG_KERNEL_ZSTD) = zstd22_with_size
|
||||
tool_$(CONFIG_KERNEL_BZIP2) = bzip2
|
||||
tool_$(CONFIG_KERNEL_LZ4) = lz4
|
||||
tool_$(CONFIG_KERNEL_LZMA) = lzma
|
||||
tool_$(CONFIG_KERNEL_LZO) = lzo
|
||||
tool_$(CONFIG_KERNEL_XZ) = xzkern
|
||||
tool_$(CONFIG_KERNEL_ZSTD) = zstd22
|
||||
|
||||
targets += vmlinux.bin.z
|
||||
|
||||
@ -89,10 +105,6 @@ HOSTCFLAGS_calc_vmlinuz_load_addr.o += $(LINUXINCLUDE)
|
||||
# Calculate the load address of the compressed kernel image
|
||||
hostprogs := calc_vmlinuz_load_addr
|
||||
|
||||
ifneq (0x0,$(CONFIG_ZBOOT_LOAD_ADDRESS))
|
||||
zload-y = $(CONFIG_ZBOOT_LOAD_ADDRESS)
|
||||
endif
|
||||
|
||||
ifneq ($(zload-y),)
|
||||
VMLINUZ_LOAD_ADDRESS := $(zload-y)
|
||||
else
|
||||
|
@ -23,6 +23,18 @@
|
||||
#define PORT(offset) (CKSEG1ADDR(INGENIC_UART_BASE_ADDR) + (4 * offset))
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CPU_XLR
|
||||
#define UART0_BASE 0x1EF14000
|
||||
#define PORT(offset) (CKSEG1ADDR(UART0_BASE) + (4 * offset))
|
||||
#define IOTYPE unsigned int
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CPU_XLP
|
||||
#define UART0_BASE 0x18030100
|
||||
#define PORT(offset) (CKSEG1ADDR(UART0_BASE) + (4 * offset))
|
||||
#define IOTYPE unsigned int
|
||||
#endif
|
||||
|
||||
#ifndef IOTYPE
|
||||
#define IOTYPE char
|
||||
#endif
|
||||
|
@ -9,6 +9,7 @@ subdir-$(CONFIG_MACH_LOONGSON64) += loongson
|
||||
subdir-$(CONFIG_SOC_VCOREIII) += mscc
|
||||
subdir-$(CONFIG_MIPS_MALTA) += mti
|
||||
subdir-$(CONFIG_LEGACY_BOARD_SEAD3) += mti
|
||||
subdir-$(CONFIG_NLM_XLP_BOARD) += netlogic
|
||||
subdir-$(CONFIG_FIT_IMAGE_FDT_NI169445) += ni
|
||||
subdir-$(CONFIG_MACH_PIC32) += pic32
|
||||
subdir-$(CONFIG_ATH79) += qca
|
||||
|
@ -584,34 +584,4 @@ shimphy@8000 {
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
pcie_0: pcie@8b20000 {
|
||||
status = "disabled";
|
||||
compatible = "brcm,bcm7425-pcie";
|
||||
|
||||
ranges = <0x02000000 0x0 0xd0000000 0xd0000000 0x0 0x08000000
|
||||
0x02000000 0x0 0xd8000000 0xd8000000 0x0 0x08000000
|
||||
0x02000000 0x0 0xe0000000 0xe0000000 0x0 0x08000000
|
||||
0x02000000 0x0 0xe8000000 0xe8000000 0x0 0x08000000>;
|
||||
|
||||
reg = <0x10410000 0x19310>;
|
||||
aspm-no-l0s;
|
||||
device_type = "pci";
|
||||
msi-controller;
|
||||
msi-parent = <&pcie_0>;
|
||||
#address-cells = <0x3>;
|
||||
#size-cells = <0x2>;
|
||||
bus-range = <0x0 0xff>;
|
||||
interrupt-map-mask = <0x0 0x0 0x0 0x7>;
|
||||
linux,pci-domain = <0x0>;
|
||||
|
||||
interrupt-parent = <&periph_intc>;
|
||||
interrupts = <37>, <37>;
|
||||
interrupt-names = "pcie", "msi";
|
||||
#interrupt-cells = <0x1>;
|
||||
interrupt-map = <0 0 0 1 &periph_intc 0x21
|
||||
0 0 0 1 &periph_intc 0x22
|
||||
0 0 0 1 &periph_intc 0x23
|
||||
0 0 0 1 &periph_intc 0x24>;
|
||||
};
|
||||
};
|
||||
|
@ -599,34 +599,4 @@ shimphy@8000 {
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
pcie_0: pcie@8b20000 {
|
||||
status = "disabled";
|
||||
compatible = "brcm,bcm7435-pcie";
|
||||
|
||||
ranges = <0x02000000 0x0 0xd0000000 0xd0000000 0x0 0x08000000
|
||||
0x02000000 0x0 0xd8000000 0xd8000000 0x0 0x08000000
|
||||
0x02000000 0x0 0xe0000000 0xe0000000 0x0 0x08000000
|
||||
0x02000000 0x0 0xe8000000 0xe8000000 0x0 0x08000000>;
|
||||
|
||||
reg = <0x10410000 0x19310>;
|
||||
aspm-no-l0s;
|
||||
device_type = "pci";
|
||||
msi-controller;
|
||||
msi-parent = <&pcie_0>;
|
||||
#address-cells = <0x3>;
|
||||
#size-cells = <0x2>;
|
||||
bus-range = <0x0 0xff>;
|
||||
interrupt-map-mask = <0x0 0x0 0x0 0x7>;
|
||||
linux,pci-domain = <0x0>;
|
||||
|
||||
interrupt-parent = <&periph_intc>;
|
||||
interrupts = <39>, <39>;
|
||||
interrupt-names = "pcie", "msi";
|
||||
#interrupt-cells = <0x1>;
|
||||
interrupt-map = <0 0 0 1 &periph_intc 0x23
|
||||
0 0 0 1 &periph_intc 0x24
|
||||
0 0 0 1 &periph_intc 0x25
|
||||
0 0 0 1 &periph_intc 0x26>;
|
||||
};
|
||||
};
|
||||
|
@ -152,12 +152,3 @@ &mspi {
|
||||
&waketimer {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie_0 {
|
||||
status = "okay";
|
||||
/* 1GB Memc0, 1GB Memc1 */
|
||||
brcm,scb-sizes = <0 0x40000000 0 0x40000000>;
|
||||
dma-ranges = <0x43000000 0x00000000 0x00000000 0x00000000 0x0 0x10000000
|
||||
0x43000000 0x00000000 0x10000000 0x20000000 0x0 0x30000000
|
||||
0x43000000 0x00000000 0x40000000 0x90000000 0x0 0x40000000>;
|
||||
};
|
||||
|
@ -128,12 +128,3 @@ &mspi {
|
||||
&waketimer {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie_0 {
|
||||
status = "okay";
|
||||
/* 1GB Memc0, 1GB Memc1 */
|
||||
brcm,scb-sizes = <0 0x40000000 0 0x40000000>;
|
||||
dma-ranges = <0x43000000 0x00000000 0x00000000 0x00000000 0x0 0x10000000
|
||||
0x43000000 0x00000000 0x10000000 0x20000000 0x0 0x30000000
|
||||
0x43000000 0x00000000 0x40000000 0x90000000 0x0 0x40000000>;
|
||||
};
|
||||
|
@ -78,20 +78,6 @@ eth0_power: fixedregulator@0 {
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
hdmi_out: connector {
|
||||
compatible = "hdmi-connector";
|
||||
label = "HDMI OUT";
|
||||
type = "a";
|
||||
|
||||
ddc-en-gpios = <&gpa 25 GPIO_ACTIVE_HIGH>;
|
||||
|
||||
port {
|
||||
hdmi_con: endpoint {
|
||||
remote-endpoint = <&dw_hdmi_out>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
ir: ir {
|
||||
compatible = "gpio-ir-receiver";
|
||||
gpios = <&gpe 3 GPIO_ACTIVE_LOW>;
|
||||
@ -127,13 +113,9 @@ &cgu {
|
||||
* Use the 32.768 kHz oscillator as the parent of the RTC for a higher
|
||||
* precision.
|
||||
*/
|
||||
assigned-clocks = <&cgu JZ4780_CLK_OTGPHY>, <&cgu JZ4780_CLK_RTC>,
|
||||
<&cgu JZ4780_CLK_SSIPLL>, <&cgu JZ4780_CLK_SSI>,
|
||||
<&cgu JZ4780_CLK_HDMI>;
|
||||
assigned-clock-parents = <0>, <&cgu JZ4780_CLK_RTCLK>,
|
||||
<&cgu JZ4780_CLK_MPLL>,
|
||||
<&cgu JZ4780_CLK_SSIPLL>;
|
||||
assigned-clock-rates = <48000000>, <0>, <54000000>, <0>, <27000000>;
|
||||
assigned-clocks = <&cgu JZ4780_CLK_OTGPHY>, <&cgu JZ4780_CLK_RTC>;
|
||||
assigned-clock-parents = <0>, <&cgu JZ4780_CLK_RTCLK>;
|
||||
assigned-clock-rates = <48000000>;
|
||||
};
|
||||
|
||||
&tcu {
|
||||
@ -524,12 +506,6 @@ pins_i2c4: i2c4 {
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pins_hdmi_ddc: hdmi_ddc {
|
||||
function = "hdmi-ddc";
|
||||
groups = "hdmi-ddc";
|
||||
bias-disable;
|
||||
};
|
||||
|
||||
pins_nemc: nemc {
|
||||
function = "nemc";
|
||||
groups = "nemc-data", "nemc-cle-ale", "nemc-rd-we", "nemc-frd-fwe";
|
||||
@ -560,39 +536,3 @@ pins_mmc1: mmc1 {
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
status = "okay";
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pins_hdmi_ddc>;
|
||||
|
||||
ports {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
port@0 {
|
||||
reg = <0>;
|
||||
dw_hdmi_in: endpoint {
|
||||
remote-endpoint = <&lcd_out>;
|
||||
};
|
||||
};
|
||||
|
||||
port@1 {
|
||||
reg = <1>;
|
||||
dw_hdmi_out: endpoint {
|
||||
remote-endpoint = <&hdmi_con>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&lcdc0 {
|
||||
status = "okay";
|
||||
|
||||
port {
|
||||
lcd_out: endpoint {
|
||||
remote-endpoint = <&dw_hdmi_in>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
#include <dt-bindings/clock/ingenic,jz4725b-cgu.h>
|
||||
#include <dt-bindings/clock/jz4725b-cgu.h>
|
||||
#include <dt-bindings/clock/ingenic,tcu.h>
|
||||
|
||||
/ {
|
||||
@ -321,7 +321,7 @@ udc: usb@13040000 {
|
||||
|
||||
lcd: lcd-controller@13050000 {
|
||||
compatible = "ingenic,jz4725b-lcd";
|
||||
reg = <0x13050000 0x130>; /* tbc */
|
||||
reg = <0x13050000 0x1000>;
|
||||
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <31>;
|
||||
|
@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
#include <dt-bindings/clock/ingenic,jz4740-cgu.h>
|
||||
#include <dt-bindings/clock/jz4740-cgu.h>
|
||||
#include <dt-bindings/clock/ingenic,tcu.h>
|
||||
|
||||
/ {
|
||||
@ -323,7 +323,7 @@ udc: usb@13040000 {
|
||||
|
||||
lcd: lcd-controller@13050000 {
|
||||
compatible = "ingenic,jz4740-lcd";
|
||||
reg = <0x13050000 0x60>; /* LCDCMD1+4 */
|
||||
reg = <0x13050000 0x1000>;
|
||||
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <30>;
|
||||
|
@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
#include <dt-bindings/clock/ingenic,jz4770-cgu.h>
|
||||
#include <dt-bindings/clock/jz4770-cgu.h>
|
||||
#include <dt-bindings/clock/ingenic,tcu.h>
|
||||
|
||||
/ {
|
||||
@ -399,7 +399,7 @@ gpu: gpu@13040000 {
|
||||
|
||||
lcd: lcd-controller@13050000 {
|
||||
compatible = "ingenic,jz4770-lcd";
|
||||
reg = <0x13050000 0x130>; /* tbc */
|
||||
reg = <0x13050000 0x300>;
|
||||
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <31>;
|
||||
|
@ -1,5 +1,5 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
#include <dt-bindings/clock/ingenic,jz4780-cgu.h>
|
||||
#include <dt-bindings/clock/jz4780-cgu.h>
|
||||
#include <dt-bindings/clock/ingenic,tcu.h>
|
||||
#include <dt-bindings/dma/jz4780-dma.h>
|
||||
|
||||
@ -255,23 +255,22 @@ gpf: gpio@5 {
|
||||
};
|
||||
};
|
||||
|
||||
spi0: spi@10043000 {
|
||||
compatible = "ingenic,jz4780-spi";
|
||||
reg = <0x10043000 0x1c>;
|
||||
spi_gpio {
|
||||
compatible = "spi-gpio";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
num-chipselects = <2>;
|
||||
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <8>;
|
||||
gpio-miso = <&gpe 14 0>;
|
||||
gpio-sck = <&gpe 15 0>;
|
||||
gpio-mosi = <&gpe 17 0>;
|
||||
cs-gpios = <&gpe 16 0>, <&gpe 18 0>;
|
||||
|
||||
clocks = <&cgu JZ4780_CLK_SSI0>;
|
||||
clock-names = "spi";
|
||||
|
||||
dmas = <&dma JZ4780_DMA_SSI0_RX 0xffffffff>,
|
||||
<&dma JZ4780_DMA_SSI0_TX 0xffffffff>;
|
||||
dma-names = "rx", "tx";
|
||||
|
||||
status = "disabled";
|
||||
spidev@0 {
|
||||
compatible = "spidev";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <1000000>;
|
||||
};
|
||||
};
|
||||
|
||||
uart0: serial@10030000 {
|
||||
@ -339,25 +338,6 @@ uart4: serial@10034000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
spi1: spi@10044000 {
|
||||
compatible = "ingenic,jz4780-spi";
|
||||
reg = <0x10044000 0x1c>;
|
||||
#address-cells = <1>;
|
||||
#size-sells = <0>;
|
||||
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <7>;
|
||||
|
||||
clocks = <&cgu JZ4780_CLK_SSI1>;
|
||||
clock-names = "spi";
|
||||
|
||||
dmas = <&dma JZ4780_DMA_SSI1_RX 0xffffffff>,
|
||||
<&dma JZ4780_DMA_SSI1_TX 0xffffffff>;
|
||||
dma-names = "rx", "tx";
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2c0: i2c@10050000 {
|
||||
compatible = "ingenic,jz4780-i2c", "ingenic,jz4770-i2c";
|
||||
#address-cells = <1>;
|
||||
@ -444,46 +424,6 @@ i2c4: i2c@10054000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
hdmi: hdmi@10180000 {
|
||||
compatible = "ingenic,jz4780-dw-hdmi";
|
||||
reg = <0x10180000 0x8000>;
|
||||
reg-io-width = <4>;
|
||||
|
||||
clocks = <&cgu JZ4780_CLK_AHB0>, <&cgu JZ4780_CLK_HDMI>;
|
||||
clock-names = "iahb", "isfr";
|
||||
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <3>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
lcdc0: lcdc0@13050000 {
|
||||
compatible = "ingenic,jz4780-lcd";
|
||||
reg = <0x13050000 0x1800>;
|
||||
|
||||
clocks = <&cgu JZ4780_CLK_TVE>, <&cgu JZ4780_CLK_LCD0PIXCLK>;
|
||||
clock-names = "lcd", "lcd_pclk";
|
||||
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <31>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
lcdc1: lcdc1@130a0000 {
|
||||
compatible = "ingenic,jz4780-lcd";
|
||||
reg = <0x130a0000 0x1800>;
|
||||
|
||||
clocks = <&cgu JZ4780_CLK_TVE>, <&cgu JZ4780_CLK_LCD1PIXCLK>;
|
||||
clock-names = "lcd", "lcd_pclk";
|
||||
|
||||
interrupt-parent = <&intc>;
|
||||
interrupts = <23>;
|
||||
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
nemc: nemc@13410000 {
|
||||
compatible = "ingenic,jz4780-nemc", "simple-mfd";
|
||||
reg = <0x13410000 0x10000>;
|
||||
|
@ -1,6 +1,6 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
#include <dt-bindings/clock/ingenic,tcu.h>
|
||||
#include <dt-bindings/clock/ingenic,x1000-cgu.h>
|
||||
#include <dt-bindings/clock/x1000-cgu.h>
|
||||
#include <dt-bindings/dma/x1000-dma.h>
|
||||
|
||||
/ {
|
||||
|
@ -1,6 +1,6 @@
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
#include <dt-bindings/clock/ingenic,tcu.h>
|
||||
#include <dt-bindings/clock/ingenic,x1830-cgu.h>
|
||||
#include <dt-bindings/clock/x1830-cgu.h>
|
||||
#include <dt-bindings/dma/x1830-dma.h>
|
||||
|
||||
/ {
|
||||
|
@ -52,11 +52,6 @@ package0: bus@10000000 {
|
||||
0 0x40000000 0 0x40000000 0 0x40000000
|
||||
0xfe 0x00000000 0xfe 0x00000000 0 0x40000000>;
|
||||
|
||||
pm: reset-controller@1fe07000 {
|
||||
compatible = "loongson,ls2k-pm";
|
||||
reg = <0 0x1fe07000 0 0x422>;
|
||||
};
|
||||
|
||||
liointc0: interrupt-controller@1fe11400 {
|
||||
compatible = "loongson,liointc-2.0";
|
||||
reg = <0 0x1fe11400 0 0x40>,
|
||||
|
@ -15,7 +15,6 @@
|
||||
|
||||
#include <linux/mm.h>
|
||||
#include <crypto/sha1.h>
|
||||
#include <crypto/sha1_base.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/module.h>
|
||||
@ -72,6 +71,20 @@ static void octeon_sha1_transform(const void *_block)
|
||||
octeon_sha1_start(block[7]);
|
||||
}
|
||||
|
||||
static int octeon_sha1_init(struct shash_desc *desc)
|
||||
{
|
||||
struct sha1_state *sctx = shash_desc_ctx(desc);
|
||||
|
||||
sctx->state[0] = SHA1_H0;
|
||||
sctx->state[1] = SHA1_H1;
|
||||
sctx->state[2] = SHA1_H2;
|
||||
sctx->state[3] = SHA1_H3;
|
||||
sctx->state[4] = SHA1_H4;
|
||||
sctx->count = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void __octeon_sha1_update(struct sha1_state *sctx, const u8 *data,
|
||||
unsigned int len)
|
||||
{
|
||||
@ -187,7 +200,7 @@ static int octeon_sha1_import(struct shash_desc *desc, const void *in)
|
||||
|
||||
static struct shash_alg octeon_sha1_alg = {
|
||||
.digestsize = SHA1_DIGEST_SIZE,
|
||||
.init = sha1_base_init,
|
||||
.init = octeon_sha1_init,
|
||||
.update = octeon_sha1_update,
|
||||
.final = octeon_sha1_final,
|
||||
.export = octeon_sha1_export,
|
||||
|
@ -16,7 +16,6 @@
|
||||
|
||||
#include <linux/mm.h>
|
||||
#include <crypto/sha2.h>
|
||||
#include <crypto/sha256_base.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/module.h>
|
||||
@ -64,6 +63,40 @@ static void octeon_sha256_transform(const void *_block)
|
||||
octeon_sha256_start(block[7]);
|
||||
}
|
||||
|
||||
static int octeon_sha224_init(struct shash_desc *desc)
|
||||
{
|
||||
struct sha256_state *sctx = shash_desc_ctx(desc);
|
||||
|
||||
sctx->state[0] = SHA224_H0;
|
||||
sctx->state[1] = SHA224_H1;
|
||||
sctx->state[2] = SHA224_H2;
|
||||
sctx->state[3] = SHA224_H3;
|
||||
sctx->state[4] = SHA224_H4;
|
||||
sctx->state[5] = SHA224_H5;
|
||||
sctx->state[6] = SHA224_H6;
|
||||
sctx->state[7] = SHA224_H7;
|
||||
sctx->count = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int octeon_sha256_init(struct shash_desc *desc)
|
||||
{
|
||||
struct sha256_state *sctx = shash_desc_ctx(desc);
|
||||
|
||||
sctx->state[0] = SHA256_H0;
|
||||
sctx->state[1] = SHA256_H1;
|
||||
sctx->state[2] = SHA256_H2;
|
||||
sctx->state[3] = SHA256_H3;
|
||||
sctx->state[4] = SHA256_H4;
|
||||
sctx->state[5] = SHA256_H5;
|
||||
sctx->state[6] = SHA256_H6;
|
||||
sctx->state[7] = SHA256_H7;
|
||||
sctx->count = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void __octeon_sha256_update(struct sha256_state *sctx, const u8 *data,
|
||||
unsigned int len)
|
||||
{
|
||||
@ -191,7 +224,7 @@ static int octeon_sha256_import(struct shash_desc *desc, const void *in)
|
||||
|
||||
static struct shash_alg octeon_sha256_algs[2] = { {
|
||||
.digestsize = SHA256_DIGEST_SIZE,
|
||||
.init = sha256_base_init,
|
||||
.init = octeon_sha256_init,
|
||||
.update = octeon_sha256_update,
|
||||
.final = octeon_sha256_final,
|
||||
.export = octeon_sha256_export,
|
||||
@ -207,7 +240,7 @@ static struct shash_alg octeon_sha256_algs[2] = { {
|
||||
}
|
||||
}, {
|
||||
.digestsize = SHA224_DIGEST_SIZE,
|
||||
.init = sha224_base_init,
|
||||
.init = octeon_sha224_init,
|
||||
.update = octeon_sha256_update,
|
||||
.final = octeon_sha224_final,
|
||||
.descsize = sizeof(struct sha256_state),
|
||||
|
@ -15,7 +15,6 @@
|
||||
|
||||
#include <linux/mm.h>
|
||||
#include <crypto/sha2.h>
|
||||
#include <crypto/sha512_base.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/module.h>
|
||||
@ -75,6 +74,40 @@ static void octeon_sha512_transform(const void *_block)
|
||||
octeon_sha512_start(block[15]);
|
||||
}
|
||||
|
||||
static int octeon_sha512_init(struct shash_desc *desc)
|
||||
{
|
||||
struct sha512_state *sctx = shash_desc_ctx(desc);
|
||||
|
||||
sctx->state[0] = SHA512_H0;
|
||||
sctx->state[1] = SHA512_H1;
|
||||
sctx->state[2] = SHA512_H2;
|
||||
sctx->state[3] = SHA512_H3;
|
||||
sctx->state[4] = SHA512_H4;
|
||||
sctx->state[5] = SHA512_H5;
|
||||
sctx->state[6] = SHA512_H6;
|
||||
sctx->state[7] = SHA512_H7;
|
||||
sctx->count[0] = sctx->count[1] = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int octeon_sha384_init(struct shash_desc *desc)
|
||||
{
|
||||
struct sha512_state *sctx = shash_desc_ctx(desc);
|
||||
|
||||
sctx->state[0] = SHA384_H0;
|
||||
sctx->state[1] = SHA384_H1;
|
||||
sctx->state[2] = SHA384_H2;
|
||||
sctx->state[3] = SHA384_H3;
|
||||
sctx->state[4] = SHA384_H4;
|
||||
sctx->state[5] = SHA384_H5;
|
||||
sctx->state[6] = SHA384_H6;
|
||||
sctx->state[7] = SHA384_H7;
|
||||
sctx->count[0] = sctx->count[1] = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void __octeon_sha512_update(struct sha512_state *sctx, const u8 *data,
|
||||
unsigned int len)
|
||||
{
|
||||
@ -190,7 +223,7 @@ static int octeon_sha384_final(struct shash_desc *desc, u8 *hash)
|
||||
|
||||
static struct shash_alg octeon_sha512_algs[2] = { {
|
||||
.digestsize = SHA512_DIGEST_SIZE,
|
||||
.init = sha512_base_init,
|
||||
.init = octeon_sha512_init,
|
||||
.update = octeon_sha512_update,
|
||||
.final = octeon_sha512_final,
|
||||
.descsize = sizeof(struct sha512_state),
|
||||
@ -203,7 +236,7 @@ static struct shash_alg octeon_sha512_algs[2] = { {
|
||||
}
|
||||
}, {
|
||||
.digestsize = SHA384_DIGEST_SIZE,
|
||||
.init = sha384_base_init,
|
||||
.init = octeon_sha384_init,
|
||||
.update = octeon_sha512_update,
|
||||
.final = octeon_sha384_final,
|
||||
.descsize = sizeof(struct sha512_state),
|
||||
|
@ -1055,6 +1055,16 @@ int cvmx_helper_initialize_packet_io_global(void)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(cvmx_helper_initialize_packet_io_global);
|
||||
|
||||
/**
|
||||
* Does core local initialization for packet io
|
||||
*
|
||||
* Returns Zero on success, non-zero on failure
|
||||
*/
|
||||
int cvmx_helper_initialize_packet_io_local(void)
|
||||
{
|
||||
return cvmx_pko_initialize_local();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the link state of an IPD/PKO port as returned by
|
||||
* auto negotiation. The result of this function may not match
|
||||
|
@ -229,6 +229,20 @@ void cvmx_pko_initialize_global(void)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* This function does per-core initialization required by the PKO routines.
|
||||
* This must be called on all cores that will do packet output, and must
|
||||
* be called after the FPA has been initialized and filled with pages.
|
||||
*
|
||||
* Returns 0 on success
|
||||
* !0 on failure
|
||||
*/
|
||||
int cvmx_pko_initialize_local(void)
|
||||
{
|
||||
/* Nothing to do */
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Enables the packet output hardware. It must already be
|
||||
* configured.
|
||||
|
@ -2609,10 +2609,7 @@ static void octeon_irq_ciu3_ip2(void)
|
||||
else
|
||||
hw = intsn;
|
||||
|
||||
irq_enter();
|
||||
ret = generic_handle_domain_irq(domain, hw);
|
||||
irq_exit();
|
||||
|
||||
ret = handle_domain_irq(domain, hw, NULL);
|
||||
if (ret < 0) {
|
||||
union cvmx_ciu3_iscx_w1c isc_w1c;
|
||||
u64 isc_w1c_addr = ciu3_addr + CIU3_ISC_W1C(intsn);
|
||||
|
@ -1,7 +1,6 @@
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
# CONFIG_SWAP is not set
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HZ=1000
|
||||
CONFIG_BLK_DEV_INITRD=y
|
||||
CONFIG_EXPERT=y
|
||||
# CONFIG_VM_EVENT_COUNTERS is not set
|
||||
@ -9,34 +8,17 @@ CONFIG_EXPERT=y
|
||||
CONFIG_BMIPS_GENERIC=y
|
||||
CONFIG_CPU_LITTLE_ENDIAN=y
|
||||
CONFIG_HIGHMEM=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=4
|
||||
CONFIG_CC_STACKPROTECTOR_STRONG=y
|
||||
# CONFIG_SECCOMP is not set
|
||||
CONFIG_MIPS_O32_FP64_SUPPORT=y
|
||||
# CONFIG_RD_GZIP is not set
|
||||
# CONFIG_RD_BZIP2 is not set
|
||||
# CONFIG_RD_LZMA is not set
|
||||
CONFIG_RD_XZ=y
|
||||
# CONFIG_RD_LZO is not set
|
||||
# CONFIG_RD_LZ4 is not set
|
||||
# CONFIG_IOSCHED_DEADLINE is not set
|
||||
# CONFIG_IOSCHED_CFQ is not set
|
||||
CONFIG_PCI=y
|
||||
CONFIG_PCI_MSI=y
|
||||
CONFIG_PCIEASPM_POWERSAVE=y
|
||||
CONFIG_PCIEPORTBUS=y
|
||||
CONFIG_PCIE_BRCMSTB=y
|
||||
CONFIG_CPU_FREQ=y
|
||||
CONFIG_CPU_FREQ_STAT=y
|
||||
CONFIG_CPU_FREQ_STAT_DETAILS=y
|
||||
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
|
||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||
CONFIG_CPU_FREQ_GOV_USERSPACE=y
|
||||
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
|
||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
|
||||
CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
|
||||
CONFIG_BMIPS_CPUFREQ=y
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
CONFIG_NET=y
|
||||
@ -50,99 +32,32 @@ CONFIG_INET=y
|
||||
# CONFIG_INET_DIAG is not set
|
||||
CONFIG_CFG80211=y
|
||||
CONFIG_NL80211_TESTMODE=y
|
||||
CONFIG_WIRELESS=y
|
||||
CONFIG_MAC80211=y
|
||||
CONFIG_NL80211=y
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
# CONFIG_STANDALONE is not set
|
||||
# CONFIG_PREVENT_FIRMWARE_BUILD is not set
|
||||
CONFIG_BRCMSTB_GISB_ARB=y
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_FORCE_LOAD=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
CONFIG_IP_MULTICAST=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
CONFIG_IP_PNP_BOOTP=y
|
||||
CONFIG_IP_PNP_RARP=y
|
||||
CONFIG_IP_MROUTE=y
|
||||
CONFIG_IP_PIMSM_V1=y
|
||||
CONFIG_IP_PIMSM_V2=y
|
||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
# CONFIG_INET_LRO is not set
|
||||
CONFIG_INET_UDP_DIAG=y
|
||||
CONFIG_TCP_CONG_ADVANCED=y
|
||||
CONFIG_TCP_CONG_BIC=y
|
||||
# CONFIG_TCP_CONG_WESTWOOD is not set
|
||||
# CONFIG_TCP_CONG_HTCP is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_IP_NF_IPTABLES=y
|
||||
CONFIG_IP_NF_FILTER=y
|
||||
CONFIG_NETFILTER=y
|
||||
CONFIG_NETFILTER_XTABLES=y
|
||||
CONFIG_BRIDGE=y
|
||||
CONFIG_BRIDGE_NETFILTER=m
|
||||
CONFIG_BRIDGE_NF_EBTABLES=m
|
||||
CONFIG_BRIDGE_EBT_BROUTE=m
|
||||
CONFIG_NET_DSA=y
|
||||
CONFIG_NET_SWITCHDEV=y
|
||||
CONFIG_DMA_CMA=y
|
||||
CONFIG_CMA_ALIGNMENT=12
|
||||
CONFIG_SPI=y
|
||||
CONFIG_SPI_BRCMSTB=y
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_MTD_JEDECPROBE=y
|
||||
CONFIG_MTD_CFI_INTELEXT=y
|
||||
CONFIG_MTD_CFI_AMDSTD=y
|
||||
CONFIG_MTD_CFI_STAA=y
|
||||
CONFIG_MTD_ROM=y
|
||||
CONFIG_MTD_ABSENT=y
|
||||
CONFIG_MTD_PHYSMAP_OF=y
|
||||
CONFIG_MTD_M25P80=y
|
||||
CONFIG_MTD_NAND=y
|
||||
CONFIG_MTD_NAND_BRCMNAND=y
|
||||
CONFIG_MTD_SPI_NOR=y
|
||||
# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
|
||||
CONFIG_MTD_UBI=y
|
||||
CONFIG_MTD_UBI_GLUEBI=y
|
||||
CONFIG_PROC_DEVICETREE=y
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
CONFIG_BLK_DEV_RAM=y
|
||||
CONFIG_BLK_DEV_RAM_SIZE=8192
|
||||
CONFIG_MTD_PHYSMAP=y
|
||||
# CONFIG_BLK_DEV is not set
|
||||
CONFIG_SCSI=y
|
||||
CONFIG_BLK_DEV_SD=y
|
||||
CONFIG_CHR_DEV_SG=y
|
||||
CONFIG_SCSI_MULTI_LUN=y
|
||||
# CONFIG_SCSI_LOWLEVEL is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_VLAN_8021Q=y
|
||||
CONFIG_MACVLAN=y
|
||||
CONFIG_BCMGENET=y
|
||||
CONFIG_USB_USBNET=y
|
||||
CONFIG_INPUT_EVDEV=y
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
# CONFIG_INPUT_MOUSE is not set
|
||||
CONFIG_INPUT_MISC=y
|
||||
CONFIG_INPUT_UINPUT=y
|
||||
# CONFIG_INPUT is not set
|
||||
# CONFIG_SERIO is not set
|
||||
CONFIG_VT=y
|
||||
CONFIG_VT_HW_CONSOLE_BINDING=y
|
||||
# CONFIG_DEVKMEM is not set
|
||||
# CONFIG_VT is not set
|
||||
CONFIG_SERIAL_8250=y
|
||||
# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
|
||||
CONFIG_SERIAL_8250_CONSOLE=y
|
||||
CONFIG_SERIAL_OF_PLATFORM=y
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
CONFIG_POWER_RESET=y
|
||||
CONFIG_POWER_RESET_BRCMSTB=y
|
||||
CONFIG_POWER_RESET_SYSCON=y
|
||||
CONFIG_POWER_SUPPLY=y
|
||||
# CONFIG_HWMON is not set
|
||||
@ -154,76 +69,22 @@ CONFIG_USB_OHCI_HCD=y
|
||||
CONFIG_USB_OHCI_HCD_PLATFORM=y
|
||||
CONFIG_USB_STORAGE=y
|
||||
CONFIG_SOC_BRCMSTB=y
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_BLOCK_MINORS=16
|
||||
CONFIG_MMC_SDHCI=y
|
||||
CONFIG_MMC_SDHCI_PLTFM=y
|
||||
CONFIG_EXT4_FS=y
|
||||
CONFIG_EXT4_FS_POSIX_ACL=y
|
||||
CONFIG_EXT4_FS_SECURITY=y
|
||||
# CONFIG_DNOTIFY is not set
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_CIFS=y
|
||||
CONFIG_JBD2_DEBUG=y
|
||||
CONFIG_FUSE_FS=y
|
||||
CONFIG_FHANDLE=y
|
||||
CONFIG_CGROUPS=y
|
||||
CONFIG_CUSE=y
|
||||
CONFIG_ISO9660_FS=y
|
||||
CONFIG_JOLIET=y
|
||||
CONFIG_ZISOFS=y
|
||||
CONFIG_UDF_FS=y
|
||||
CONFIG_MSDOS_FS=y
|
||||
CONFIG_VFAT_FS=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_JFFS2_FS=y
|
||||
CONFIG_UBIFS_FS=y
|
||||
CONFIG_SQUASHFS=y
|
||||
CONFIG_SQUASHFS_LZO=y
|
||||
CONFIG_SQUASHFS_XZ=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3_ACL=y
|
||||
CONFIG_NFS_V4=y
|
||||
CONFIG_NFS_V4_1=y
|
||||
CONFIG_NFS_V4_2=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
CONFIG_CIFS=y
|
||||
CONFIG_NLS_CODEPAGE_437=y
|
||||
CONFIG_NLS_ASCII=y
|
||||
CONFIG_NLS_ISO8859_1=y
|
||||
# CONFIG_CRYPTO_HW is not set
|
||||
CONFIG_PRINTK_TIME=y
|
||||
CONFIG_DYNAMIC_DEBUG=y
|
||||
# CONFIG_DEBUG_INFO is not set
|
||||
# CONFIG_DEBUG_INFO_REDUCED is not set
|
||||
CONFIG_DEBUG_FS=y
|
||||
CONFIG_MAGIC_SYSRQ=y
|
||||
CONFIG_LOCKUP_DETECTOR=y
|
||||
CONFIG_DEBUG_USER=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE="earlycon"
|
||||
# CONFIG_MIPS_CMDLINE_FROM_DTB is not set
|
||||
CONFIG_MIPS_CMDLINE_DTB_EXTEND=y
|
||||
# CONFIG_MIPS_CMDLINE_FROM_BOOTLOADER is not set
|
||||
# CONFIG_CRYPTO_HW is not set
|
||||
CONFIG_DT_BCM974XX=y
|
||||
CONFIG_FW_CFE=y
|
||||
CONFIG_ATA=y
|
||||
CONFIG_SATA_AHCI_PLATFORM=y
|
||||
CONFIG_AHCI_BRCMSTB=y
|
||||
CONFIG_GENERIC_PHY=y
|
||||
CONFIG_GPIOLIB=y
|
||||
CONFIG_GPIO_SYSFS=y
|
||||
CONFIG_PHY_BRCM_USB=y
|
||||
CONFIG_PHY_BRCM_SATA=y
|
||||
CONFIG_PM_RUNTIME=y
|
||||
CONFIG_PM_DEBUG=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_FUNCTION_GRAPH_TRACER=y
|
||||
CONFIG_DYNAMIC_FTRACE=y
|
||||
CONFIG_FUNCTION_TRACER=y
|
||||
CONFIG_FUNCTION_PROFILER=y
|
||||
CONFIG_IRQSOFF_TRACER=y
|
||||
CONFIG_SCHED_TRACER=y
|
||||
CONFIG_BLK_DEV_IO_TRACE=y
|
||||
CONFIG_FTRACE_SYSCALLS=y
|
||||
CONFIG_TRACER_SNAPSHOT=y
|
||||
CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP=y
|
||||
CONFIG_STACK_TRACER=y
|
||||
|
@ -98,13 +98,7 @@ CONFIG_RC_DEVICES=y
|
||||
CONFIG_IR_GPIO_CIR=m
|
||||
CONFIG_IR_GPIO_TX=m
|
||||
CONFIG_MEDIA_SUPPORT=m
|
||||
CONFIG_DRM=m
|
||||
CONFIG_DRM_INGENIC=m
|
||||
CONFIG_DRM_INGENIC_DW_HDMI=m
|
||||
CONFIG_DRM_DISPLAY_CONNECTOR=m
|
||||
# CONFIG_VGA_CONSOLE is not set
|
||||
CONFIG_FB=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
# CONFIG_HID is not set
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_STORAGE=y
|
||||
|
@ -144,6 +144,7 @@ CONFIG_EXT2_FS_SECURITY=y
|
||||
CONFIG_EXT3_FS=y
|
||||
CONFIG_EXT3_FS_POSIX_ACL=y
|
||||
CONFIG_EXT3_FS_SECURITY=y
|
||||
# CONFIG_MANDATORY_FILE_LOCKING is not set
|
||||
CONFIG_ISO9660_FS=y
|
||||
CONFIG_JOLIET=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
|
@ -140,6 +140,7 @@ CONFIG_EXT2_FS_SECURITY=y
|
||||
CONFIG_EXT3_FS=y
|
||||
CONFIG_EXT3_FS_POSIX_ACL=y
|
||||
CONFIG_EXT3_FS_SECURITY=y
|
||||
# CONFIG_MANDATORY_FILE_LOCKING is not set
|
||||
CONFIG_ISO9660_FS=y
|
||||
CONFIG_JOLIET=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
|
@ -140,6 +140,7 @@ CONFIG_EXT2_FS_SECURITY=y
|
||||
CONFIG_EXT3_FS=y
|
||||
CONFIG_EXT3_FS_POSIX_ACL=y
|
||||
CONFIG_EXT3_FS_SECURITY=y
|
||||
# CONFIG_MANDATORY_FILE_LOCKING is not set
|
||||
CONFIG_ISO9660_FS=y
|
||||
CONFIG_JOLIET=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
|
@ -223,6 +223,7 @@ CONFIG_TMD_HERMES=m
|
||||
CONFIG_NORTEL_HERMES=m
|
||||
CONFIG_P54_COMMON=m
|
||||
CONFIG_P54_PCI=m
|
||||
CONFIG_PRISM54=m
|
||||
CONFIG_LIBERTAS=m
|
||||
CONFIG_LIBERTAS_THINFIRM=m
|
||||
CONFIG_MWL8K=m
|
||||
|
@ -282,7 +282,6 @@ CONFIG_DRM=y
|
||||
CONFIG_DRM_RADEON=m
|
||||
CONFIG_DRM_QXL=y
|
||||
CONFIG_DRM_VIRTIO_GPU=y
|
||||
CONFIG_FB=y
|
||||
CONFIG_FB_RADEON=y
|
||||
CONFIG_LCD_CLASS_DEVICE=y
|
||||
CONFIG_LCD_PLATFORM=m
|
||||
|
@ -302,6 +302,7 @@ CONFIG_HOSTAP_FIRMWARE=y
|
||||
CONFIG_HOSTAP_FIRMWARE_NVRAM=y
|
||||
CONFIG_HOSTAP_PLX=m
|
||||
CONFIG_HOSTAP_PCI=m
|
||||
CONFIG_PRISM54=m
|
||||
CONFIG_LIBERTAS=m
|
||||
CONFIG_INPUT_MOUSEDEV=y
|
||||
CONFIG_MOUSE_PS2_ELANTECH=y
|
||||
|
@ -310,6 +310,7 @@ CONFIG_HOSTAP_FIRMWARE=y
|
||||
CONFIG_HOSTAP_FIRMWARE_NVRAM=y
|
||||
CONFIG_HOSTAP_PLX=m
|
||||
CONFIG_HOSTAP_PCI=m
|
||||
CONFIG_PRISM54=m
|
||||
CONFIG_LIBERTAS=m
|
||||
CONFIG_INPUT_MOUSEDEV=y
|
||||
CONFIG_SERIAL_8250=y
|
||||
|
@ -309,6 +309,7 @@ CONFIG_HOSTAP_FIRMWARE=y
|
||||
CONFIG_HOSTAP_FIRMWARE_NVRAM=y
|
||||
CONFIG_HOSTAP_PLX=m
|
||||
CONFIG_HOSTAP_PCI=m
|
||||
CONFIG_PRISM54=m
|
||||
CONFIG_LIBERTAS=m
|
||||
CONFIG_INPUT_MOUSEDEV=y
|
||||
CONFIG_MOUSE_PS2_ELANTECH=y
|
||||
|
@ -10,6 +10,9 @@ CONFIG_EXPERT=y
|
||||
CONFIG_SLAB=y
|
||||
CONFIG_MACH_TX49XX=y
|
||||
CONFIG_TOSHIBA_RBTX4927=y
|
||||
CONFIG_TOSHIBA_RBTX4938=y
|
||||
CONFIG_TOSHIBA_RBTX4939=y
|
||||
CONFIG_TOSHIBA_RBTX4938_MPLEX_KEEP=y
|
||||
# CONFIG_SECCOMP is not set
|
||||
CONFIG_PCI=y
|
||||
CONFIG_MODULES=y
|
||||
@ -35,6 +38,7 @@ CONFIG_MTD_JEDECPROBE=y
|
||||
CONFIG_MTD_CFI_AMDSTD=y
|
||||
CONFIG_MTD_COMPLEX_MAPPINGS=y
|
||||
CONFIG_MTD_PHYSMAP=y
|
||||
CONFIG_MTD_RBTX4939=y
|
||||
CONFIG_MTD_RAW_NAND=m
|
||||
CONFIG_MTD_NAND_TXX9NDFMC=m
|
||||
CONFIG_BLK_DEV_LOOP=y
|
||||
|
@ -117,21 +117,21 @@ static void __init dec_be_init(void)
|
||||
{
|
||||
switch (mips_machtype) {
|
||||
case MACH_DS23100: /* DS2100/DS3100 Pmin/Pmax */
|
||||
mips_set_be_handler(dec_kn01_be_handler);
|
||||
board_be_handler = dec_kn01_be_handler;
|
||||
busirq_handler = dec_kn01_be_interrupt;
|
||||
busirq_flags |= IRQF_SHARED;
|
||||
dec_kn01_be_init();
|
||||
break;
|
||||
case MACH_DS5000_1XX: /* DS5000/1xx 3min */
|
||||
case MACH_DS5000_XX: /* DS5000/xx Maxine */
|
||||
mips_set_be_handler(dec_kn02xa_be_handler);
|
||||
board_be_handler = dec_kn02xa_be_handler;
|
||||
busirq_handler = dec_kn02xa_be_interrupt;
|
||||
dec_kn02xa_be_init();
|
||||
break;
|
||||
case MACH_DS5000_200: /* DS5000/200 3max */
|
||||
case MACH_DS5000_2X0: /* DS5000/240 3max+ */
|
||||
case MACH_DS5900: /* DS5900 bigmax */
|
||||
mips_set_be_handler(dec_ecc_be_handler);
|
||||
board_be_handler = dec_ecc_be_handler;
|
||||
busirq_handler = dec_ecc_be_interrupt;
|
||||
dec_ecc_be_init();
|
||||
break;
|
||||
|
@ -13,7 +13,8 @@ cflags-$(CONFIG_MACH_INGENIC_SOC) += -I$(srctree)/arch/mips/include/asm/mach-ing
|
||||
cflags-$(CONFIG_MIPS_GENERIC) += -I$(srctree)/arch/mips/include/asm/mach-generic
|
||||
|
||||
load-$(CONFIG_MIPS_GENERIC) += 0xffffffff80100000
|
||||
all-$(CONFIG_MIPS_GENERIC) += vmlinux.gz.itb
|
||||
zload-$(CONFIG_MIPS_GENERIC) += 0xffffffff81000000
|
||||
all-$(CONFIG_MIPS_GENERIC) := vmlinux.gz.itb
|
||||
|
||||
its-y := vmlinux.its.S
|
||||
its-$(CONFIG_FIT_IMAGE_FDT_BOSTON) += board-boston.its.S
|
||||
|
@ -110,15 +110,14 @@ void __init plat_mem_setup(void)
|
||||
|
||||
void __init device_tree_init(void)
|
||||
{
|
||||
int err;
|
||||
|
||||
unflatten_and_copy_device_tree();
|
||||
mips_cpc_probe();
|
||||
|
||||
if (!register_cps_smp_ops())
|
||||
return;
|
||||
if (!register_vsmp_smp_ops())
|
||||
return;
|
||||
|
||||
register_up_smp_ops();
|
||||
err = register_cps_smp_ops();
|
||||
if (err)
|
||||
err = register_up_smp_ops();
|
||||
}
|
||||
|
||||
int __init apply_mips_fdt_fixups(void *fdt_out, size_t fdt_out_size,
|
||||
|
@ -19,7 +19,6 @@
|
||||
|
||||
#include <asm/sgidefs.h>
|
||||
#include <asm/asm-eva.h>
|
||||
#include <asm/isa-rev.h>
|
||||
|
||||
#ifndef __VDSO__
|
||||
/*
|
||||
@ -212,8 +211,6 @@ symbol = value
|
||||
#define LONG_SUB sub
|
||||
#define LONG_SUBU subu
|
||||
#define LONG_L lw
|
||||
#define LONG_LL ll
|
||||
#define LONG_SC sc
|
||||
#define LONG_S sw
|
||||
#define LONG_SP swp
|
||||
#define LONG_SLL sll
|
||||
@ -222,8 +219,6 @@ symbol = value
|
||||
#define LONG_SRLV srlv
|
||||
#define LONG_SRA sra
|
||||
#define LONG_SRAV srav
|
||||
#define LONG_INS ins
|
||||
#define LONG_EXT ext
|
||||
|
||||
#ifdef __ASSEMBLY__
|
||||
#define LONG .word
|
||||
@ -241,8 +236,6 @@ symbol = value
|
||||
#define LONG_SUB dsub
|
||||
#define LONG_SUBU dsubu
|
||||
#define LONG_L ld
|
||||
#define LONG_LL lld
|
||||
#define LONG_SC scd
|
||||
#define LONG_S sd
|
||||
#define LONG_SP sdp
|
||||
#define LONG_SLL dsll
|
||||
@ -251,8 +244,6 @@ symbol = value
|
||||
#define LONG_SRLV dsrlv
|
||||
#define LONG_SRA dsra
|
||||
#define LONG_SRAV dsrav
|
||||
#define LONG_INS dins
|
||||
#define LONG_EXT dext
|
||||
|
||||
#ifdef __ASSEMBLY__
|
||||
#define LONG .dword
|
||||
@ -329,19 +320,6 @@ symbol = value
|
||||
|
||||
#define SSNOP sll zero, zero, 1
|
||||
|
||||
/*
|
||||
* Using a branch-likely instruction to check the result of an sc instruction
|
||||
* works around a bug present in R10000 CPUs prior to revision 3.0 that could
|
||||
* cause ll-sc sequences to execute non-atomically.
|
||||
*/
|
||||
#ifdef CONFIG_WAR_R10000_LLSC
|
||||
# define SC_BEQZ beqzl
|
||||
#elif MIPS_ISA_REV >= 6
|
||||
# define SC_BEQZ beqzc
|
||||
#else
|
||||
# define SC_BEQZ beqz
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SGI_IP28
|
||||
/* Inhibit speculative stores to volatile (e.g.DMA) or invalid addresses. */
|
||||
#include <asm/cacheops.h>
|
||||
|
@ -16,12 +16,13 @@
|
||||
|
||||
#include <linux/irqflags.h>
|
||||
#include <linux/types.h>
|
||||
#include <asm/asm.h>
|
||||
#include <asm/barrier.h>
|
||||
#include <asm/compiler.h>
|
||||
#include <asm/cpu-features.h>
|
||||
#include <asm/cmpxchg.h>
|
||||
#include <asm/llsc.h>
|
||||
#include <asm/sync.h>
|
||||
#include <asm/war.h>
|
||||
|
||||
#define ATOMIC_OPS(pfx, type) \
|
||||
static __always_inline type arch_##pfx##_read(const pfx##_t *v) \
|
||||
@ -73,7 +74,7 @@ static __inline__ void arch_##pfx##_##op(type i, pfx##_t * v) \
|
||||
"1: " #ll " %0, %1 # " #pfx "_" #op " \n" \
|
||||
" " #asm_op " %0, %2 \n" \
|
||||
" " #sc " %0, %1 \n" \
|
||||
"\t" __stringify(SC_BEQZ) " %0, 1b \n" \
|
||||
"\t" __SC_BEQZ "%0, 1b \n" \
|
||||
" .set pop \n" \
|
||||
: "=&r" (temp), "+" GCC_OFF_SMALL_ASM() (v->counter) \
|
||||
: "Ir" (i) : __LLSC_CLOBBER); \
|
||||
@ -103,7 +104,7 @@ arch_##pfx##_##op##_return_relaxed(type i, pfx##_t * v) \
|
||||
"1: " #ll " %1, %2 # " #pfx "_" #op "_return\n" \
|
||||
" " #asm_op " %0, %1, %3 \n" \
|
||||
" " #sc " %0, %2 \n" \
|
||||
"\t" __stringify(SC_BEQZ) " %0, 1b \n" \
|
||||
"\t" __SC_BEQZ "%0, 1b \n" \
|
||||
" " #asm_op " %0, %1, %3 \n" \
|
||||
" .set pop \n" \
|
||||
: "=&r" (result), "=&r" (temp), \
|
||||
@ -136,7 +137,7 @@ arch_##pfx##_fetch_##op##_relaxed(type i, pfx##_t * v) \
|
||||
"1: " #ll " %1, %2 # " #pfx "_fetch_" #op "\n" \
|
||||
" " #asm_op " %0, %1, %3 \n" \
|
||||
" " #sc " %0, %2 \n" \
|
||||
"\t" __stringify(SC_BEQZ) " %0, 1b \n" \
|
||||
"\t" __SC_BEQZ "%0, 1b \n" \
|
||||
" .set pop \n" \
|
||||
" move %0, %1 \n" \
|
||||
: "=&r" (result), "=&r" (temp), \
|
||||
@ -236,7 +237,7 @@ static __inline__ type arch_##pfx##_sub_if_positive(type i, pfx##_t * v) \
|
||||
" .set push \n" \
|
||||
" .set " MIPS_ISA_LEVEL " \n" \
|
||||
" " #sc " %1, %2 \n" \
|
||||
" " __stringify(SC_BEQZ) " %1, 1b \n" \
|
||||
" " __SC_BEQZ "%1, 1b \n" \
|
||||
"2: " __SYNC(full, loongson3_war) " \n" \
|
||||
" .set pop \n" \
|
||||
: "=&r" (result), "=&r" (temp), \
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user