Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 91b006de authored by Russell King's avatar Russell King
Browse files

Merge branches 'audit', 'delay', 'fixes', 'misc' and 'sta2x11' into for-linus

Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -45,6 +45,9 @@ config ARM
	select GENERIC_SMP_IDLE_THREAD
	select KTIME_SCALAR
	select GENERIC_CLOCKEVENTS_BROADCAST if SMP
	select GENERIC_STRNCPY_FROM_USER
	select GENERIC_STRNLEN_USER
	select DCACHE_WORD_ACCESS if (CPU_V6 || CPU_V6K || CPU_V7) && !CPU_BIG_ENDIAN
	help
	  The ARM series is a line of low-power-consumption RISC chip designs
	  licensed by ARM Ltd and targeted at embedded applications and
@@ -1961,6 +1964,25 @@ config ARM_ATAG_DTB_COMPAT
	  bootloaders, this option allows zImage to extract the information
	  from the ATAG list and store it at run time into the appended DTB.

choice
	prompt "Kernel command line type" if ARM_ATAG_DTB_COMPAT
	default ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER

config ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER
	bool "Use bootloader kernel arguments if available"
	help
	  Uses the command-line options passed by the boot loader instead of
	  the device tree bootargs property. If the boot loader doesn't provide
	  any, the device tree bootargs property will be used.

config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND
	bool "Extend with bootloader kernel arguments"
	help
	  The command-line arguments provided by the boot loader will be
	  appended to the the device tree bootargs property.

endchoice

config CMDLINE
	string "Default kernel command string"
	default ""
+9 −0
Original line number Diff line number Diff line
@@ -369,4 +369,13 @@ config ARM_KPROBES_TEST
	help
	  Perform tests of kprobes API and instruction set simulation.

config PID_IN_CONTEXTIDR
	bool "Write the current PID to the CONTEXTIDR register"
	depends on CPU_COPY_V6
	help
	  Enabling this option causes the kernel to write the current PID to
	  the PROCID field of the CONTEXTIDR register, at the expense of some
	  additional instructions during context switch. Say Y here only if you
	  are planning to use hardware trace tools with this kernel.

endmenu
+3 −0
Original line number Diff line number Diff line
@@ -10,6 +10,9 @@
#
# Copyright (C) 1995-2001 by Russell King

# Ensure linker flags are correct
LDFLAGS		:=

LDFLAGS_vmlinux	:=-p --no-undefined -X
ifeq ($(CONFIG_CPU_ENDIAN_BE8),y)
LDFLAGS_vmlinux	+= --be8
+60 −2
Original line number Diff line number Diff line
#include <asm/setup.h>
#include <libfdt.h>

#if defined(CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND)
#define do_extend_cmdline 1
#else
#define do_extend_cmdline 0
#endif

static int node_offset(void *fdt, const char *node_path)
{
	int offset = fdt_path_offset(fdt, node_path);
@@ -36,6 +42,48 @@ static int setprop_cell(void *fdt, const char *node_path,
	return fdt_setprop_cell(fdt, offset, property, val);
}

static const void *getprop(const void *fdt, const char *node_path,
			   const char *property, int *len)
{
	int offset = fdt_path_offset(fdt, node_path);

	if (offset == -FDT_ERR_NOTFOUND)
		return NULL;

	return fdt_getprop(fdt, offset, property, len);
}

static void merge_fdt_bootargs(void *fdt, const char *fdt_cmdline)
{
	char cmdline[COMMAND_LINE_SIZE];
	const char *fdt_bootargs;
	char *ptr = cmdline;
	int len = 0;

	/* copy the fdt command line into the buffer */
	fdt_bootargs = getprop(fdt, "/chosen", "bootargs", &len);
	if (fdt_bootargs)
		if (len < COMMAND_LINE_SIZE) {
			memcpy(ptr, fdt_bootargs, len);
			/* len is the length of the string
			 * including the NULL terminator */
			ptr += len - 1;
		}

	/* and append the ATAG_CMDLINE */
	if (fdt_cmdline) {
		len = strlen(fdt_cmdline);
		if (ptr - cmdline + len + 2 < COMMAND_LINE_SIZE) {
			*ptr++ = ' ';
			memcpy(ptr, fdt_cmdline, len);
			ptr += len;
		}
	}
	*ptr = '\0';

	setprop_string(fdt, "/chosen", "bootargs", cmdline);
}

/*
 * Convert and fold provided ATAGs into the provided FDT.
 *
@@ -72,6 +120,16 @@ int atags_to_fdt(void *atag_list, void *fdt, int total_space)

	for_each_tag(atag, atag_list) {
		if (atag->hdr.tag == ATAG_CMDLINE) {
			/* Append the ATAGS command line to the device tree
			 * command line.
			 * NB: This means that if the same parameter is set in
			 * the device tree and in the tags, the one from the
			 * tags will be chosen.
			 */
			if (do_extend_cmdline)
				merge_fdt_bootargs(fdt,
						   atag->u.cmdline.cmdline);
			else
				setprop_string(fdt, "/chosen", "bootargs",
					       atag->u.cmdline.cmdline);
		} else if (atag->hdr.tag == ATAG_MEM) {
+3 −0
Original line number Diff line number Diff line
#ifndef __ASMARM_ARCH_TIMER_H
#define __ASMARM_ARCH_TIMER_H

#include <asm/errno.h>

#ifdef CONFIG_ARM_ARCH_TIMER
#define ARCH_HAS_READ_CURRENT_TIMER
int arch_timer_of_register(void);
int arch_timer_sched_clock_init(void);
#else
Loading