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

Commit ed8f8ce3 authored by Russell King's avatar Russell King
Browse files

Merge branches 'debug', 'fixes', 'l2c' (early part), 'misc' and 'sa1100' into for-next

Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
What:		/sys/bus/amba/devices/.../driver_override
Date:		September 2014
Contact:	Antonios Motakis <a.motakis@virtualopensystems.com>
Description:
		This file allows the driver for a device to be specified which
		will override standard OF, ACPI, ID table, and name matching.
		When specified, only a driver with a name matching the value
		written to driver_override will have an opportunity to bind to
		the device. The override is specified by writing a string to the
		driver_override file (echo vfio-amba > driver_override)	and may
		be cleared with an empty string (echo > driver_override).
		This returns the device to standard matching rules binding.
		Writing to driver_override does not automatically unbind the
		device from its current driver or make any attempt to
		automatically load the specified driver. If no driver with a
		matching name is currently loaded in the kernel, the device will
		not bind to any driver. This also allows devices to opt-out of
		driver binding using a driver_override name such as "none".
		Only a single driver may be specified in the override, there is
		no support for parsing delimiters.
+10 −0
Original line number Diff line number Diff line
@@ -57,6 +57,16 @@ Optional properties:
- cache-id-part: cache id part number to be used if it is not present
  on hardware
- wt-override: If present then L2 is forced to Write through mode
- arm,double-linefill : Override double linefill enable setting. Enable if
  non-zero, disable if zero.
- arm,double-linefill-incr : Override double linefill on INCR read. Enable
  if non-zero, disable if zero.
- arm,double-linefill-wrap : Override double linefill on WRAP read. Enable
  if non-zero, disable if zero.
- arm,prefetch-drop : Override prefetch drop enable setting. Enable if non-zero,
  disable if zero.
- arm,prefetch-offset : Override prefetch offset value. Valid values are
  0-7, 15, 23, and 31.

Example:

+1 −0
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ config ARM
	select HANDLE_DOMAIN_IRQ
	select HARDIRQS_SW_RESEND
	select HAVE_ARCH_AUDITSYSCALL if (AEABI && !OABI_COMPAT)
	select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6
	select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL
	select HAVE_ARCH_KGDB
	select HAVE_ARCH_SECCOMP_FILTER if (AEABI && !OABI_COMPAT)
+31 −10
Original line number Diff line number Diff line
@@ -178,7 +178,7 @@ not_angel:

		/*
		 * Set up a page table only if it won't overwrite ourself.
		 * That means r4 < pc && r4 - 16k page directory > &_end.
		 * That means r4 < pc || r4 - 16k page directory > &_end.
		 * Given that r4 > &_end is most unfrequent, we add a rough
		 * additional 1MB of room for a possible appended DTB.
		 */
@@ -263,16 +263,37 @@ restart: adr r0, LC0
		 * OK... Let's do some funky business here.
		 * If we do have a DTB appended to zImage, and we do have
		 * an ATAG list around, we want the later to be translated
		 * and folded into the former here.  To be on the safe side,
		 * let's temporarily move  the stack away into the malloc
		 * area.  No GOT fixup has occurred yet, but none of the
		 * code we're about to call uses any global variable.
		 * and folded into the former here. No GOT fixup has occurred
		 * yet, but none of the code we're about to call uses any
		 * global variable.
		*/
		add	sp, sp, #0x10000

		/* Get the initial DTB size */
		ldr	r5, [r6, #4]
#ifndef __ARMEB__
		/* convert to little endian */
		eor	r1, r5, r5, ror #16
		bic	r1, r1, #0x00ff0000
		mov	r5, r5, ror #8
		eor	r5, r5, r1, lsr #8
#endif
		/* 50% DTB growth should be good enough */
		add	r5, r5, r5, lsr #1
		/* preserve 64-bit alignment */
		add	r5, r5, #7
		bic	r5, r5, #7
		/* clamp to 32KB min and 1MB max */
		cmp	r5, #(1 << 15)
		movlo	r5, #(1 << 15)
		cmp	r5, #(1 << 20)
		movhi	r5, #(1 << 20)
		/* temporarily relocate the stack past the DTB work space */
		add	sp, sp, r5

		stmfd	sp!, {r0-r3, ip, lr}
		mov	r0, r8
		mov	r1, r6
		sub	r2, sp, r6
		mov	r2, r5
		bl	atags_to_fdt

		/*
@@ -285,11 +306,11 @@ restart: adr r0, LC0
		bic	r0, r0, #1
		add	r0, r0, #0x100
		mov	r1, r6
		sub	r2, sp, r6
		mov	r2, r5
		bleq	atags_to_fdt

		ldmfd	sp!, {r0-r3, ip, lr}
		sub	sp, sp, #0x10000
		sub	sp, sp, r5
#endif

		mov	r8, r6			@ use the appended device tree
@@ -306,7 +327,7 @@ restart: adr r0, LC0
		subs	r1, r5, r1
		addhi	r9, r9, r1

		/* Get the dtb's size */
		/* Get the current DTB size */
		ldr	r5, [r6, #4]
#ifndef __ARMEB__
		/* convert r5 (dtb size) to little endian */
+9 −0
Original line number Diff line number Diff line
@@ -81,6 +81,15 @@
		reg = <0x10023CA0 0x20>;
	};

	l2c: l2-cache-controller@10502000 {
		compatible = "arm,pl310-cache";
		reg = <0x10502000 0x1000>;
		cache-unified;
		cache-level = <2>;
		arm,tag-latency = <2 2 1>;
		arm,data-latency = <2 2 1>;
	};

	gic: interrupt-controller@10490000 {
		cpu-offset = <0x8000>;
	};
Loading