mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-14 17:14:09 +00:00
Linux 3.19-rc6
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAABAgAGBQJUxbzlAAoJEHm+PkMAQRiGtqYIAJ8YlKX9cXKYmXx8/FncINH+ 2erj94KyHG080R1uwSq1+7zXWCZUUlxiJnDnsup5rG0dImcicqgOE48oHax1aN6b yHfPONkTjNJ1HYepuGC3YWCG9wIjPZQ5S8KHrwRjyVoE+ddhe9gWgvArA3jl/fW/ 2fYNWekoRoMcRiNb4/w2weyOOBywdSVpmj0WYiwdztysG2ymw5hUXRHJhvSf1AFm RQJfUHkhCOYpQGY7XFba/1uGhTJfOgDmYAfspAOLzmrXE/DJcCutsVdBZO+12fAL nhGpM/PkRYxMvwzDKIUoG35qsymYOMqo54oXhr0S2JjyXTGdGmB6qHxIfqnV5Tk= =O/Lr -----END PGP SIGNATURE----- Merge tag 'v3.19-rc6' into devel Linux 3.19-rc6
This commit is contained in:
commit
b6afdbe8e8
1
.mailmap
1
.mailmap
@ -51,6 +51,7 @@ Greg Kroah-Hartman <gregkh@suse.de>
|
|||||||
Greg Kroah-Hartman <greg@kroah.com>
|
Greg Kroah-Hartman <greg@kroah.com>
|
||||||
Henk Vergonet <Henk.Vergonet@gmail.com>
|
Henk Vergonet <Henk.Vergonet@gmail.com>
|
||||||
Henrik Kretzschmar <henne@nachtwindheim.de>
|
Henrik Kretzschmar <henne@nachtwindheim.de>
|
||||||
|
Henrik Rydberg <rydberg@bitmath.org>
|
||||||
Herbert Xu <herbert@gondor.apana.org.au>
|
Herbert Xu <herbert@gondor.apana.org.au>
|
||||||
Jacob Shin <Jacob.Shin@amd.com>
|
Jacob Shin <Jacob.Shin@amd.com>
|
||||||
James Bottomley <jejb@mulgrave.(none)>
|
James Bottomley <jejb@mulgrave.(none)>
|
||||||
|
@ -14,3 +14,18 @@ Description:
|
|||||||
The /sys/class/mei/meiN directory is created for
|
The /sys/class/mei/meiN directory is created for
|
||||||
each probed mei device
|
each probed mei device
|
||||||
|
|
||||||
|
What: /sys/class/mei/meiN/fw_status
|
||||||
|
Date: Nov 2014
|
||||||
|
KernelVersion: 3.19
|
||||||
|
Contact: Tomas Winkler <tomas.winkler@intel.com>
|
||||||
|
Description: Display fw status registers content
|
||||||
|
|
||||||
|
The ME FW writes its status information into fw status
|
||||||
|
registers for BIOS and OS to monitor fw health.
|
||||||
|
|
||||||
|
The register contains running state, power management
|
||||||
|
state, error codes, and others. The way the registers
|
||||||
|
are decoded depends on PCH or SoC generation.
|
||||||
|
Also number of registers varies between 1 and 6
|
||||||
|
depending on generation.
|
||||||
|
|
||||||
|
@ -1,60 +0,0 @@
|
|||||||
What: /sys/class/leds/dell::kbd_backlight/als_setting
|
|
||||||
Date: December 2014
|
|
||||||
KernelVersion: 3.19
|
|
||||||
Contact: Gabriele Mazzotta <gabriele.mzt@gmail.com>,
|
|
||||||
Pali Rohár <pali.rohar@gmail.com>
|
|
||||||
Description:
|
|
||||||
This file allows to control the automatic keyboard
|
|
||||||
illumination mode on some systems that have an ambient
|
|
||||||
light sensor. Write 1 to this file to enable the auto
|
|
||||||
mode, 0 to disable it.
|
|
||||||
|
|
||||||
What: /sys/class/leds/dell::kbd_backlight/start_triggers
|
|
||||||
Date: December 2014
|
|
||||||
KernelVersion: 3.19
|
|
||||||
Contact: Gabriele Mazzotta <gabriele.mzt@gmail.com>,
|
|
||||||
Pali Rohár <pali.rohar@gmail.com>
|
|
||||||
Description:
|
|
||||||
This file allows to control the input triggers that
|
|
||||||
turn on the keyboard backlight illumination that is
|
|
||||||
disabled because of inactivity.
|
|
||||||
Read the file to see the triggers available. The ones
|
|
||||||
enabled are preceded by '+', those disabled by '-'.
|
|
||||||
|
|
||||||
To enable a trigger, write its name preceded by '+' to
|
|
||||||
this file. To disable a trigger, write its name preceded
|
|
||||||
by '-' instead.
|
|
||||||
|
|
||||||
For example, to enable the keyboard as trigger run:
|
|
||||||
echo +keyboard > /sys/class/leds/dell::kbd_backlight/start_triggers
|
|
||||||
To disable it:
|
|
||||||
echo -keyboard > /sys/class/leds/dell::kbd_backlight/start_triggers
|
|
||||||
|
|
||||||
Note that not all the available triggers can be configured.
|
|
||||||
|
|
||||||
What: /sys/class/leds/dell::kbd_backlight/stop_timeout
|
|
||||||
Date: December 2014
|
|
||||||
KernelVersion: 3.19
|
|
||||||
Contact: Gabriele Mazzotta <gabriele.mzt@gmail.com>,
|
|
||||||
Pali Rohár <pali.rohar@gmail.com>
|
|
||||||
Description:
|
|
||||||
This file allows to specify the interval after which the
|
|
||||||
keyboard illumination is disabled because of inactivity.
|
|
||||||
The timeouts are expressed in seconds, minutes, hours and
|
|
||||||
days, for which the symbols are 's', 'm', 'h' and 'd'
|
|
||||||
respectively.
|
|
||||||
|
|
||||||
To configure the timeout, write to this file a value along
|
|
||||||
with any the above units. If no unit is specified, the value
|
|
||||||
is assumed to be expressed in seconds.
|
|
||||||
|
|
||||||
For example, to set the timeout to 10 minutes run:
|
|
||||||
echo 10m > /sys/class/leds/dell::kbd_backlight/stop_timeout
|
|
||||||
|
|
||||||
Note that when this file is read, the returned value might be
|
|
||||||
expressed in a different unit than the one used when the timeout
|
|
||||||
was set.
|
|
||||||
|
|
||||||
Also note that only some timeouts are supported and that
|
|
||||||
some systems might fall back to a specific timeout in case
|
|
||||||
an invalid timeout is written to this file.
|
|
@ -23,7 +23,7 @@ Required nodes:
|
|||||||
range of 0x200 bytes.
|
range of 0x200 bytes.
|
||||||
|
|
||||||
- syscon: the root node of the Integrator platforms must have a
|
- syscon: the root node of the Integrator platforms must have a
|
||||||
system controller node pointong to the control registers,
|
system controller node pointing to the control registers,
|
||||||
with the compatible string
|
with the compatible string
|
||||||
"arm,integrator-ap-syscon"
|
"arm,integrator-ap-syscon"
|
||||||
"arm,integrator-cp-syscon"
|
"arm,integrator-cp-syscon"
|
||||||
|
72
Documentation/devicetree/bindings/arm/fw-cfg.txt
Normal file
72
Documentation/devicetree/bindings/arm/fw-cfg.txt
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
* QEMU Firmware Configuration bindings for ARM
|
||||||
|
|
||||||
|
QEMU's arm-softmmu and aarch64-softmmu emulation / virtualization targets
|
||||||
|
provide the following Firmware Configuration interface on the "virt" machine
|
||||||
|
type:
|
||||||
|
|
||||||
|
- A write-only, 16-bit wide selector (or control) register,
|
||||||
|
- a read-write, 64-bit wide data register.
|
||||||
|
|
||||||
|
QEMU exposes the control and data register to ARM guests as memory mapped
|
||||||
|
registers; their location is communicated to the guest's UEFI firmware in the
|
||||||
|
DTB that QEMU places at the bottom of the guest's DRAM.
|
||||||
|
|
||||||
|
The guest writes a selector value (a key) to the selector register, and then
|
||||||
|
can read the corresponding data (produced by QEMU) via the data register. If
|
||||||
|
the selected entry is writable, the guest can rewrite it through the data
|
||||||
|
register.
|
||||||
|
|
||||||
|
The selector register takes keys in big endian byte order.
|
||||||
|
|
||||||
|
The data register allows accesses with 8, 16, 32 and 64-bit width (only at
|
||||||
|
offset 0 of the register). Accesses larger than a byte are interpreted as
|
||||||
|
arrays, bundled together only for better performance. The bytes constituting
|
||||||
|
such a word, in increasing address order, correspond to the bytes that would
|
||||||
|
have been transferred by byte-wide accesses in chronological order.
|
||||||
|
|
||||||
|
The interface allows guest firmware to download various parameters and blobs
|
||||||
|
that affect how the firmware works and what tables it installs for the guest
|
||||||
|
OS. For example, boot order of devices, ACPI tables, SMBIOS tables, kernel and
|
||||||
|
initrd images for direct kernel booting, virtual machine UUID, SMP information,
|
||||||
|
virtual NUMA topology, and so on.
|
||||||
|
|
||||||
|
The authoritative registry of the valid selector values and their meanings is
|
||||||
|
the QEMU source code; the structure of the data blobs corresponding to the
|
||||||
|
individual key values is also defined in the QEMU source code.
|
||||||
|
|
||||||
|
The presence of the registers can be verified by selecting the "signature" blob
|
||||||
|
with key 0x0000, and reading four bytes from the data register. The returned
|
||||||
|
signature is "QEMU".
|
||||||
|
|
||||||
|
The outermost protocol (involving the write / read sequences of the control and
|
||||||
|
data registers) is expected to be versioned, and/or described by feature bits.
|
||||||
|
The interface revision / feature bitmap can be retrieved with key 0x0001. The
|
||||||
|
blob to be read from the data register has size 4, and it is to be interpreted
|
||||||
|
as a uint32_t value in little endian byte order. The current value
|
||||||
|
(corresponding to the above outer protocol) is zero.
|
||||||
|
|
||||||
|
The guest kernel is not expected to use these registers (although it is
|
||||||
|
certainly allowed to); the device tree bindings are documented here because
|
||||||
|
this is where device tree bindings reside in general.
|
||||||
|
|
||||||
|
Required properties:
|
||||||
|
|
||||||
|
- compatible: "qemu,fw-cfg-mmio".
|
||||||
|
|
||||||
|
- reg: the MMIO region used by the device.
|
||||||
|
* Bytes 0x0 to 0x7 cover the data register.
|
||||||
|
* Bytes 0x8 to 0x9 cover the selector register.
|
||||||
|
* Further registers may be appended to the region in case of future interface
|
||||||
|
revisions / feature bits.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
/ {
|
||||||
|
#size-cells = <0x2>;
|
||||||
|
#address-cells = <0x2>;
|
||||||
|
|
||||||
|
fw-cfg@9020000 {
|
||||||
|
compatible = "qemu,fw-cfg-mmio";
|
||||||
|
reg = <0x0 0x9020000 0x0 0xa>;
|
||||||
|
};
|
||||||
|
};
|
@ -19,7 +19,7 @@ type of the connections, they just map their existence. Specific properties
|
|||||||
may be described by specialized bindings depending on the type of connection.
|
may be described by specialized bindings depending on the type of connection.
|
||||||
|
|
||||||
To see how this binding applies to video pipelines, for example, see
|
To see how this binding applies to video pipelines, for example, see
|
||||||
Documentation/device-tree/bindings/media/video-interfaces.txt.
|
Documentation/devicetree/bindings/media/video-interfaces.txt.
|
||||||
Here the ports describe data interfaces, and the links between them are
|
Here the ports describe data interfaces, and the links between them are
|
||||||
the connecting data buses. A single port with multiple connections can
|
the connecting data buses. A single port with multiple connections can
|
||||||
correspond to multiple devices being connected to the same physical bus.
|
correspond to multiple devices being connected to the same physical bus.
|
||||||
|
@ -10,12 +10,13 @@ Optional properties:
|
|||||||
Each button (key) is represented as a sub-node of "gpio-keys":
|
Each button (key) is represented as a sub-node of "gpio-keys":
|
||||||
Subnode properties:
|
Subnode properties:
|
||||||
|
|
||||||
|
- gpios: OF device-tree gpio specification.
|
||||||
|
- interrupts: the interrupt line for that input.
|
||||||
- label: Descriptive name of the key.
|
- label: Descriptive name of the key.
|
||||||
- linux,code: Keycode to emit.
|
- linux,code: Keycode to emit.
|
||||||
|
|
||||||
Required mutual exclusive subnode-properties:
|
Note that either "interrupts" or "gpios" properties can be omitted, but not
|
||||||
- gpios: OF device-tree gpio specification.
|
both at the same time. Specifying both properties is allowed.
|
||||||
- interrupts: the interrupt line for that input
|
|
||||||
|
|
||||||
Optional subnode-properties:
|
Optional subnode-properties:
|
||||||
- linux,input-type: Specify event type this button/key generates.
|
- linux,input-type: Specify event type this button/key generates.
|
||||||
@ -23,6 +24,9 @@ Optional subnode-properties:
|
|||||||
- debounce-interval: Debouncing interval time in milliseconds.
|
- debounce-interval: Debouncing interval time in milliseconds.
|
||||||
If not specified defaults to 5.
|
If not specified defaults to 5.
|
||||||
- gpio-key,wakeup: Boolean, button can wake-up the system.
|
- gpio-key,wakeup: Boolean, button can wake-up the system.
|
||||||
|
- linux,can-disable: Boolean, indicates that button is connected
|
||||||
|
to dedicated (not shared) interrupt which can be disabled to
|
||||||
|
suppress events from the button.
|
||||||
|
|
||||||
Example nodes:
|
Example nodes:
|
||||||
|
|
||||||
|
@ -8,6 +8,8 @@ Optional properties:
|
|||||||
- debounce-interval : Debouncing interval time in milliseconds
|
- debounce-interval : Debouncing interval time in milliseconds
|
||||||
- st,scan-count : Scanning cycles elapsed before key data is updated
|
- st,scan-count : Scanning cycles elapsed before key data is updated
|
||||||
- st,no-autorepeat : If specified device will not autorepeat
|
- st,no-autorepeat : If specified device will not autorepeat
|
||||||
|
- keypad,num-rows : See ./matrix-keymap.txt
|
||||||
|
- keypad,num-columns : See ./matrix-keymap.txt
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
|
@ -4,7 +4,8 @@ This file provides information, what the device node
|
|||||||
for the davinci_emac interface contains.
|
for the davinci_emac interface contains.
|
||||||
|
|
||||||
Required properties:
|
Required properties:
|
||||||
- compatible: "ti,davinci-dm6467-emac" or "ti,am3517-emac"
|
- compatible: "ti,davinci-dm6467-emac", "ti,am3517-emac" or
|
||||||
|
"ti,dm816-emac"
|
||||||
- reg: Offset and length of the register set for the device
|
- reg: Offset and length of the register set for the device
|
||||||
- ti,davinci-ctrl-reg-offset: offset to control register
|
- ti,davinci-ctrl-reg-offset: offset to control register
|
||||||
- ti,davinci-ctrl-mod-reg-offset: offset to control module register
|
- ti,davinci-ctrl-mod-reg-offset: offset to control module register
|
||||||
|
@ -9,7 +9,6 @@ ad Avionic Design GmbH
|
|||||||
adapteva Adapteva, Inc.
|
adapteva Adapteva, Inc.
|
||||||
adi Analog Devices, Inc.
|
adi Analog Devices, Inc.
|
||||||
aeroflexgaisler Aeroflex Gaisler AB
|
aeroflexgaisler Aeroflex Gaisler AB
|
||||||
ak Asahi Kasei Corp.
|
|
||||||
allwinner Allwinner Technology Co., Ltd.
|
allwinner Allwinner Technology Co., Ltd.
|
||||||
altr Altera Corp.
|
altr Altera Corp.
|
||||||
amcc Applied Micro Circuits Corporation (APM, formally AMCC)
|
amcc Applied Micro Circuits Corporation (APM, formally AMCC)
|
||||||
@ -20,6 +19,7 @@ amstaos AMS-Taos Inc.
|
|||||||
apm Applied Micro Circuits Corporation (APM)
|
apm Applied Micro Circuits Corporation (APM)
|
||||||
arm ARM Ltd.
|
arm ARM Ltd.
|
||||||
armadeus ARMadeus Systems SARL
|
armadeus ARMadeus Systems SARL
|
||||||
|
asahi-kasei Asahi Kasei Corp.
|
||||||
atmel Atmel Corporation
|
atmel Atmel Corporation
|
||||||
auo AU Optronics Corporation
|
auo AU Optronics Corporation
|
||||||
avago Avago Technologies
|
avago Avago Technologies
|
||||||
@ -127,6 +127,7 @@ pixcir PIXCIR MICROELECTRONICS Co., Ltd
|
|||||||
powervr PowerVR (deprecated, use img)
|
powervr PowerVR (deprecated, use img)
|
||||||
qca Qualcomm Atheros, Inc.
|
qca Qualcomm Atheros, Inc.
|
||||||
qcom Qualcomm Technologies, Inc
|
qcom Qualcomm Technologies, Inc
|
||||||
|
qemu QEMU, a generic and open source machine emulator and virtualizer
|
||||||
qnap QNAP Systems, Inc.
|
qnap QNAP Systems, Inc.
|
||||||
radxa Radxa
|
radxa Radxa
|
||||||
raidsonic RaidSonic Technology GmbH
|
raidsonic RaidSonic Technology GmbH
|
||||||
@ -168,6 +169,7 @@ usi Universal Scientific Industrial Co., Ltd.
|
|||||||
v3 V3 Semiconductor
|
v3 V3 Semiconductor
|
||||||
variscite Variscite Ltd.
|
variscite Variscite Ltd.
|
||||||
via VIA Technologies, Inc.
|
via VIA Technologies, Inc.
|
||||||
|
virtio Virtual I/O Device Specification, developed by the OASIS consortium
|
||||||
voipac Voipac Technologies s.r.o.
|
voipac Voipac Technologies s.r.o.
|
||||||
winbond Winbond Electronics corp.
|
winbond Winbond Electronics corp.
|
||||||
wlf Wolfson Microelectronics
|
wlf Wolfson Microelectronics
|
||||||
|
@ -1277,6 +1277,7 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
|||||||
i8042.notimeout [HW] Ignore timeout condition signalled by controller
|
i8042.notimeout [HW] Ignore timeout condition signalled by controller
|
||||||
i8042.reset [HW] Reset the controller during init and cleanup
|
i8042.reset [HW] Reset the controller during init and cleanup
|
||||||
i8042.unlock [HW] Unlock (ignore) the keylock
|
i8042.unlock [HW] Unlock (ignore) the keylock
|
||||||
|
i8042.kbdreset [HW] Reset device connected to KBD port
|
||||||
|
|
||||||
i810= [HW,DRM]
|
i810= [HW,DRM]
|
||||||
|
|
||||||
|
@ -66,6 +66,8 @@ fwmark_reflect - BOOLEAN
|
|||||||
route/max_size - INTEGER
|
route/max_size - INTEGER
|
||||||
Maximum number of routes allowed in the kernel. Increase
|
Maximum number of routes allowed in the kernel. Increase
|
||||||
this when using large numbers of interfaces and/or routes.
|
this when using large numbers of interfaces and/or routes.
|
||||||
|
From linux kernel 3.6 onwards, this is deprecated for ipv4
|
||||||
|
as route cache is no longer used.
|
||||||
|
|
||||||
neigh/default/gc_thresh1 - INTEGER
|
neigh/default/gc_thresh1 - INTEGER
|
||||||
Minimum number of entries to keep. Garbage collector will not
|
Minimum number of entries to keep. Garbage collector will not
|
||||||
|
@ -389,9 +389,6 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name):
|
|||||||
buf += " .release_cmd = " + fabric_mod_name + "_release_cmd,\n"
|
buf += " .release_cmd = " + fabric_mod_name + "_release_cmd,\n"
|
||||||
buf += " .shutdown_session = " + fabric_mod_name + "_shutdown_session,\n"
|
buf += " .shutdown_session = " + fabric_mod_name + "_shutdown_session,\n"
|
||||||
buf += " .close_session = " + fabric_mod_name + "_close_session,\n"
|
buf += " .close_session = " + fabric_mod_name + "_close_session,\n"
|
||||||
buf += " .stop_session = " + fabric_mod_name + "_stop_session,\n"
|
|
||||||
buf += " .fall_back_to_erl0 = " + fabric_mod_name + "_reset_nexus,\n"
|
|
||||||
buf += " .sess_logged_in = " + fabric_mod_name + "_sess_logged_in,\n"
|
|
||||||
buf += " .sess_get_index = " + fabric_mod_name + "_sess_get_index,\n"
|
buf += " .sess_get_index = " + fabric_mod_name + "_sess_get_index,\n"
|
||||||
buf += " .sess_get_initiator_sid = NULL,\n"
|
buf += " .sess_get_initiator_sid = NULL,\n"
|
||||||
buf += " .write_pending = " + fabric_mod_name + "_write_pending,\n"
|
buf += " .write_pending = " + fabric_mod_name + "_write_pending,\n"
|
||||||
@ -402,7 +399,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name):
|
|||||||
buf += " .queue_data_in = " + fabric_mod_name + "_queue_data_in,\n"
|
buf += " .queue_data_in = " + fabric_mod_name + "_queue_data_in,\n"
|
||||||
buf += " .queue_status = " + fabric_mod_name + "_queue_status,\n"
|
buf += " .queue_status = " + fabric_mod_name + "_queue_status,\n"
|
||||||
buf += " .queue_tm_rsp = " + fabric_mod_name + "_queue_tm_rsp,\n"
|
buf += " .queue_tm_rsp = " + fabric_mod_name + "_queue_tm_rsp,\n"
|
||||||
buf += " .is_state_remove = " + fabric_mod_name + "_is_state_remove,\n"
|
buf += " .aborted_task = " + fabric_mod_name + "_aborted_task,\n"
|
||||||
buf += " /*\n"
|
buf += " /*\n"
|
||||||
buf += " * Setup function pointers for generic logic in target_core_fabric_configfs.c\n"
|
buf += " * Setup function pointers for generic logic in target_core_fabric_configfs.c\n"
|
||||||
buf += " */\n"
|
buf += " */\n"
|
||||||
@ -428,7 +425,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name):
|
|||||||
buf += " /*\n"
|
buf += " /*\n"
|
||||||
buf += " * Register the top level struct config_item_type with TCM core\n"
|
buf += " * Register the top level struct config_item_type with TCM core\n"
|
||||||
buf += " */\n"
|
buf += " */\n"
|
||||||
buf += " fabric = target_fabric_configfs_init(THIS_MODULE, \"" + fabric_mod_name[4:] + "\");\n"
|
buf += " fabric = target_fabric_configfs_init(THIS_MODULE, \"" + fabric_mod_name + "\");\n"
|
||||||
buf += " if (IS_ERR(fabric)) {\n"
|
buf += " if (IS_ERR(fabric)) {\n"
|
||||||
buf += " printk(KERN_ERR \"target_fabric_configfs_init() failed\\n\");\n"
|
buf += " printk(KERN_ERR \"target_fabric_configfs_init() failed\\n\");\n"
|
||||||
buf += " return PTR_ERR(fabric);\n"
|
buf += " return PTR_ERR(fabric);\n"
|
||||||
@ -595,7 +592,7 @@ def tcm_mod_dump_fabric_ops(proto_ident, fabric_mod_dir_var, fabric_mod_name):
|
|||||||
if re.search('get_fabric_name', fo):
|
if re.search('get_fabric_name', fo):
|
||||||
buf += "char *" + fabric_mod_name + "_get_fabric_name(void)\n"
|
buf += "char *" + fabric_mod_name + "_get_fabric_name(void)\n"
|
||||||
buf += "{\n"
|
buf += "{\n"
|
||||||
buf += " return \"" + fabric_mod_name[4:] + "\";\n"
|
buf += " return \"" + fabric_mod_name + "\";\n"
|
||||||
buf += "}\n\n"
|
buf += "}\n\n"
|
||||||
bufi += "char *" + fabric_mod_name + "_get_fabric_name(void);\n"
|
bufi += "char *" + fabric_mod_name + "_get_fabric_name(void);\n"
|
||||||
continue
|
continue
|
||||||
@ -820,27 +817,6 @@ def tcm_mod_dump_fabric_ops(proto_ident, fabric_mod_dir_var, fabric_mod_name):
|
|||||||
buf += "}\n\n"
|
buf += "}\n\n"
|
||||||
bufi += "void " + fabric_mod_name + "_close_session(struct se_session *);\n"
|
bufi += "void " + fabric_mod_name + "_close_session(struct se_session *);\n"
|
||||||
|
|
||||||
if re.search('stop_session\)\(', fo):
|
|
||||||
buf += "void " + fabric_mod_name + "_stop_session(struct se_session *se_sess, int sess_sleep , int conn_sleep)\n"
|
|
||||||
buf += "{\n"
|
|
||||||
buf += " return;\n"
|
|
||||||
buf += "}\n\n"
|
|
||||||
bufi += "void " + fabric_mod_name + "_stop_session(struct se_session *, int, int);\n"
|
|
||||||
|
|
||||||
if re.search('fall_back_to_erl0\)\(', fo):
|
|
||||||
buf += "void " + fabric_mod_name + "_reset_nexus(struct se_session *se_sess)\n"
|
|
||||||
buf += "{\n"
|
|
||||||
buf += " return;\n"
|
|
||||||
buf += "}\n\n"
|
|
||||||
bufi += "void " + fabric_mod_name + "_reset_nexus(struct se_session *);\n"
|
|
||||||
|
|
||||||
if re.search('sess_logged_in\)\(', fo):
|
|
||||||
buf += "int " + fabric_mod_name + "_sess_logged_in(struct se_session *se_sess)\n"
|
|
||||||
buf += "{\n"
|
|
||||||
buf += " return 0;\n"
|
|
||||||
buf += "}\n\n"
|
|
||||||
bufi += "int " + fabric_mod_name + "_sess_logged_in(struct se_session *);\n"
|
|
||||||
|
|
||||||
if re.search('sess_get_index\)\(', fo):
|
if re.search('sess_get_index\)\(', fo):
|
||||||
buf += "u32 " + fabric_mod_name + "_sess_get_index(struct se_session *se_sess)\n"
|
buf += "u32 " + fabric_mod_name + "_sess_get_index(struct se_session *se_sess)\n"
|
||||||
buf += "{\n"
|
buf += "{\n"
|
||||||
@ -898,19 +874,18 @@ def tcm_mod_dump_fabric_ops(proto_ident, fabric_mod_dir_var, fabric_mod_name):
|
|||||||
bufi += "int " + fabric_mod_name + "_queue_status(struct se_cmd *);\n"
|
bufi += "int " + fabric_mod_name + "_queue_status(struct se_cmd *);\n"
|
||||||
|
|
||||||
if re.search('queue_tm_rsp\)\(', fo):
|
if re.search('queue_tm_rsp\)\(', fo):
|
||||||
buf += "int " + fabric_mod_name + "_queue_tm_rsp(struct se_cmd *se_cmd)\n"
|
buf += "void " + fabric_mod_name + "_queue_tm_rsp(struct se_cmd *se_cmd)\n"
|
||||||
buf += "{\n"
|
buf += "{\n"
|
||||||
buf += " return 0;\n"
|
buf += " return;\n"
|
||||||
buf += "}\n\n"
|
buf += "}\n\n"
|
||||||
bufi += "int " + fabric_mod_name + "_queue_tm_rsp(struct se_cmd *);\n"
|
bufi += "void " + fabric_mod_name + "_queue_tm_rsp(struct se_cmd *);\n"
|
||||||
|
|
||||||
if re.search('is_state_remove\)\(', fo):
|
if re.search('aborted_task\)\(', fo):
|
||||||
buf += "int " + fabric_mod_name + "_is_state_remove(struct se_cmd *se_cmd)\n"
|
buf += "void " + fabric_mod_name + "_aborted_task(struct se_cmd *se_cmd)\n"
|
||||||
buf += "{\n"
|
buf += "{\n"
|
||||||
buf += " return 0;\n"
|
buf += " return;\n"
|
||||||
buf += "}\n\n"
|
buf += "}\n\n"
|
||||||
bufi += "int " + fabric_mod_name + "_is_state_remove(struct se_cmd *);\n"
|
bufi += "void " + fabric_mod_name + "_aborted_task(struct se_cmd *);\n"
|
||||||
|
|
||||||
|
|
||||||
ret = p.write(buf)
|
ret = p.write(buf)
|
||||||
if ret:
|
if ret:
|
||||||
@ -1018,11 +993,11 @@ def main(modname, proto_ident):
|
|||||||
tcm_mod_build_kbuild(fabric_mod_dir, fabric_mod_name)
|
tcm_mod_build_kbuild(fabric_mod_dir, fabric_mod_name)
|
||||||
tcm_mod_build_kconfig(fabric_mod_dir, fabric_mod_name)
|
tcm_mod_build_kconfig(fabric_mod_dir, fabric_mod_name)
|
||||||
|
|
||||||
input = raw_input("Would you like to add " + fabric_mod_name + "to drivers/target/Makefile..? [yes,no]: ")
|
input = raw_input("Would you like to add " + fabric_mod_name + " to drivers/target/Makefile..? [yes,no]: ")
|
||||||
if input == "yes" or input == "y":
|
if input == "yes" or input == "y":
|
||||||
tcm_mod_add_kbuild(tcm_dir, fabric_mod_name)
|
tcm_mod_add_kbuild(tcm_dir, fabric_mod_name)
|
||||||
|
|
||||||
input = raw_input("Would you like to add " + fabric_mod_name + "to drivers/target/Kconfig..? [yes,no]: ")
|
input = raw_input("Would you like to add " + fabric_mod_name + " to drivers/target/Kconfig..? [yes,no]: ")
|
||||||
if input == "yes" or input == "y":
|
if input == "yes" or input == "y":
|
||||||
tcm_mod_add_kconfig(tcm_dir, fabric_mod_name)
|
tcm_mod_add_kconfig(tcm_dir, fabric_mod_name)
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@ CPU cooling APIs How To
|
|||||||
|
|
||||||
Written by Amit Daniel Kachhap <amit.kachhap@linaro.org>
|
Written by Amit Daniel Kachhap <amit.kachhap@linaro.org>
|
||||||
|
|
||||||
Updated: 12 May 2012
|
Updated: 6 Jan 2015
|
||||||
|
|
||||||
Copyright (c) 2012 Samsung Electronics Co., Ltd(http://www.samsung.com)
|
Copyright (c) 2012 Samsung Electronics Co., Ltd(http://www.samsung.com)
|
||||||
|
|
||||||
@ -25,7 +25,18 @@ the user. The registration APIs returns the cooling device pointer.
|
|||||||
|
|
||||||
clip_cpus: cpumask of cpus where the frequency constraints will happen.
|
clip_cpus: cpumask of cpus where the frequency constraints will happen.
|
||||||
|
|
||||||
1.1.2 void cpufreq_cooling_unregister(struct thermal_cooling_device *cdev)
|
1.1.2 struct thermal_cooling_device *of_cpufreq_cooling_register(
|
||||||
|
struct device_node *np, const struct cpumask *clip_cpus)
|
||||||
|
|
||||||
|
This interface function registers the cpufreq cooling device with
|
||||||
|
the name "thermal-cpufreq-%x" linking it with a device tree node, in
|
||||||
|
order to bind it via the thermal DT code. This api can support multiple
|
||||||
|
instances of cpufreq cooling devices.
|
||||||
|
|
||||||
|
np: pointer to the cooling device device tree node
|
||||||
|
clip_cpus: cpumask of cpus where the frequency constraints will happen.
|
||||||
|
|
||||||
|
1.1.3 void cpufreq_cooling_unregister(struct thermal_cooling_device *cdev)
|
||||||
|
|
||||||
This interface function unregisters the "thermal-cpufreq-%x" cooling device.
|
This interface function unregisters the "thermal-cpufreq-%x" cooling device.
|
||||||
|
|
||||||
|
128
MAINTAINERS
128
MAINTAINERS
@ -724,15 +724,15 @@ F: include/uapi/linux/apm_bios.h
|
|||||||
F: drivers/char/apm-emulation.c
|
F: drivers/char/apm-emulation.c
|
||||||
|
|
||||||
APPLE BCM5974 MULTITOUCH DRIVER
|
APPLE BCM5974 MULTITOUCH DRIVER
|
||||||
M: Henrik Rydberg <rydberg@euromail.se>
|
M: Henrik Rydberg <rydberg@bitmath.org>
|
||||||
L: linux-input@vger.kernel.org
|
L: linux-input@vger.kernel.org
|
||||||
S: Maintained
|
S: Odd fixes
|
||||||
F: drivers/input/mouse/bcm5974.c
|
F: drivers/input/mouse/bcm5974.c
|
||||||
|
|
||||||
APPLE SMC DRIVER
|
APPLE SMC DRIVER
|
||||||
M: Henrik Rydberg <rydberg@euromail.se>
|
M: Henrik Rydberg <rydberg@bitmath.org>
|
||||||
L: lm-sensors@lm-sensors.org
|
L: lm-sensors@lm-sensors.org
|
||||||
S: Maintained
|
S: Odd fixes
|
||||||
F: drivers/hwmon/applesmc.c
|
F: drivers/hwmon/applesmc.c
|
||||||
|
|
||||||
APPLETALK NETWORK LAYER
|
APPLETALK NETWORK LAYER
|
||||||
@ -754,13 +754,6 @@ L: linux-media@vger.kernel.org
|
|||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/media/i2c/aptina-pll.*
|
F: drivers/media/i2c/aptina-pll.*
|
||||||
|
|
||||||
ARASAN COMPACT FLASH PATA CONTROLLER
|
|
||||||
M: Viresh Kumar <viresh.linux@gmail.com>
|
|
||||||
L: linux-ide@vger.kernel.org
|
|
||||||
S: Maintained
|
|
||||||
F: include/linux/pata_arasan_cf_data.h
|
|
||||||
F: drivers/ata/pata_arasan_cf.c
|
|
||||||
|
|
||||||
ARC FRAMEBUFFER DRIVER
|
ARC FRAMEBUFFER DRIVER
|
||||||
M: Jaya Kumar <jayalk@intworks.biz>
|
M: Jaya Kumar <jayalk@intworks.biz>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@ -2259,6 +2252,7 @@ F: drivers/gpio/gpio-bt8xx.c
|
|||||||
BTRFS FILE SYSTEM
|
BTRFS FILE SYSTEM
|
||||||
M: Chris Mason <clm@fb.com>
|
M: Chris Mason <clm@fb.com>
|
||||||
M: Josef Bacik <jbacik@fb.com>
|
M: Josef Bacik <jbacik@fb.com>
|
||||||
|
M: David Sterba <dsterba@suse.cz>
|
||||||
L: linux-btrfs@vger.kernel.org
|
L: linux-btrfs@vger.kernel.org
|
||||||
W: http://btrfs.wiki.kernel.org/
|
W: http://btrfs.wiki.kernel.org/
|
||||||
Q: http://patchwork.kernel.org/project/linux-btrfs/list/
|
Q: http://patchwork.kernel.org/project/linux-btrfs/list/
|
||||||
@ -2345,7 +2339,8 @@ CAN NETWORK LAYER
|
|||||||
M: Oliver Hartkopp <socketcan@hartkopp.net>
|
M: Oliver Hartkopp <socketcan@hartkopp.net>
|
||||||
L: linux-can@vger.kernel.org
|
L: linux-can@vger.kernel.org
|
||||||
W: http://gitorious.org/linux-can
|
W: http://gitorious.org/linux-can
|
||||||
T: git git://gitorious.org/linux-can/linux-can-next.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can.git
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: Documentation/networking/can.txt
|
F: Documentation/networking/can.txt
|
||||||
F: net/can/
|
F: net/can/
|
||||||
@ -2360,7 +2355,8 @@ M: Wolfgang Grandegger <wg@grandegger.com>
|
|||||||
M: Marc Kleine-Budde <mkl@pengutronix.de>
|
M: Marc Kleine-Budde <mkl@pengutronix.de>
|
||||||
L: linux-can@vger.kernel.org
|
L: linux-can@vger.kernel.org
|
||||||
W: http://gitorious.org/linux-can
|
W: http://gitorious.org/linux-can
|
||||||
T: git git://gitorious.org/linux-can/linux-can-next.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can.git
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/net/can/
|
F: drivers/net/can/
|
||||||
F: include/linux/can/dev.h
|
F: include/linux/can/dev.h
|
||||||
@ -3182,7 +3178,7 @@ L: dmaengine@vger.kernel.org
|
|||||||
Q: https://patchwork.kernel.org/project/linux-dmaengine/list/
|
Q: https://patchwork.kernel.org/project/linux-dmaengine/list/
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/dma/
|
F: drivers/dma/
|
||||||
F: include/linux/dma*
|
F: include/linux/dmaengine.h
|
||||||
F: Documentation/dmaengine/
|
F: Documentation/dmaengine/
|
||||||
T: git git://git.infradead.org/users/vkoul/slave-dma.git
|
T: git git://git.infradead.org/users/vkoul/slave-dma.git
|
||||||
|
|
||||||
@ -4748,20 +4744,20 @@ S: Supported
|
|||||||
F: drivers/scsi/ipr.*
|
F: drivers/scsi/ipr.*
|
||||||
|
|
||||||
IBM Power Virtual Ethernet Device Driver
|
IBM Power Virtual Ethernet Device Driver
|
||||||
M: Santiago Leon <santil@linux.vnet.ibm.com>
|
M: Thomas Falcon <tlfalcon@linux.vnet.ibm.com>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/net/ethernet/ibm/ibmveth.*
|
F: drivers/net/ethernet/ibm/ibmveth.*
|
||||||
|
|
||||||
IBM Power Virtual SCSI Device Drivers
|
IBM Power Virtual SCSI Device Drivers
|
||||||
M: Nathan Fontenot <nfont@linux.vnet.ibm.com>
|
M: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
|
||||||
L: linux-scsi@vger.kernel.org
|
L: linux-scsi@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/scsi/ibmvscsi/ibmvscsi*
|
F: drivers/scsi/ibmvscsi/ibmvscsi*
|
||||||
F: drivers/scsi/ibmvscsi/viosrp.h
|
F: drivers/scsi/ibmvscsi/viosrp.h
|
||||||
|
|
||||||
IBM Power Virtual FC Device Drivers
|
IBM Power Virtual FC Device Drivers
|
||||||
M: Brian King <brking@linux.vnet.ibm.com>
|
M: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
|
||||||
L: linux-scsi@vger.kernel.org
|
L: linux-scsi@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: drivers/scsi/ibmvscsi/ibmvfc*
|
F: drivers/scsi/ibmvscsi/ibmvfc*
|
||||||
@ -4929,7 +4925,6 @@ F: include/uapi/linux/inotify.h
|
|||||||
|
|
||||||
INPUT (KEYBOARD, MOUSE, JOYSTICK, TOUCHSCREEN) DRIVERS
|
INPUT (KEYBOARD, MOUSE, JOYSTICK, TOUCHSCREEN) DRIVERS
|
||||||
M: Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
M: Dmitry Torokhov <dmitry.torokhov@gmail.com>
|
||||||
M: Dmitry Torokhov <dtor@mail.ru>
|
|
||||||
L: linux-input@vger.kernel.org
|
L: linux-input@vger.kernel.org
|
||||||
Q: http://patchwork.kernel.org/project/linux-input/list/
|
Q: http://patchwork.kernel.org/project/linux-input/list/
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git
|
||||||
@ -4940,10 +4935,10 @@ F: include/uapi/linux/input.h
|
|||||||
F: include/linux/input/
|
F: include/linux/input/
|
||||||
|
|
||||||
INPUT MULTITOUCH (MT) PROTOCOL
|
INPUT MULTITOUCH (MT) PROTOCOL
|
||||||
M: Henrik Rydberg <rydberg@euromail.se>
|
M: Henrik Rydberg <rydberg@bitmath.org>
|
||||||
L: linux-input@vger.kernel.org
|
L: linux-input@vger.kernel.org
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/rydberg/input-mt.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/rydberg/input-mt.git
|
||||||
S: Maintained
|
S: Odd fixes
|
||||||
F: Documentation/input/multi-touch-protocol.txt
|
F: Documentation/input/multi-touch-protocol.txt
|
||||||
F: drivers/input/input-mt.c
|
F: drivers/input/input-mt.c
|
||||||
K: \b(ABS|SYN)_MT_
|
K: \b(ABS|SYN)_MT_
|
||||||
@ -4951,7 +4946,6 @@ K: \b(ABS|SYN)_MT_
|
|||||||
INTEL C600 SERIES SAS CONTROLLER DRIVER
|
INTEL C600 SERIES SAS CONTROLLER DRIVER
|
||||||
M: Intel SCU Linux support <intel-linux-scu@intel.com>
|
M: Intel SCU Linux support <intel-linux-scu@intel.com>
|
||||||
M: Artur Paszkiewicz <artur.paszkiewicz@intel.com>
|
M: Artur Paszkiewicz <artur.paszkiewicz@intel.com>
|
||||||
M: Dave Jiang <dave.jiang@intel.com>
|
|
||||||
L: linux-scsi@vger.kernel.org
|
L: linux-scsi@vger.kernel.org
|
||||||
T: git git://git.code.sf.net/p/intel-sas/isci
|
T: git git://git.code.sf.net/p/intel-sas/isci
|
||||||
S: Supported
|
S: Supported
|
||||||
@ -5279,6 +5273,15 @@ W: www.open-iscsi.org
|
|||||||
Q: http://patchwork.kernel.org/project/linux-rdma/list/
|
Q: http://patchwork.kernel.org/project/linux-rdma/list/
|
||||||
F: drivers/infiniband/ulp/iser/
|
F: drivers/infiniband/ulp/iser/
|
||||||
|
|
||||||
|
ISCSI EXTENSIONS FOR RDMA (ISER) TARGET
|
||||||
|
M: Sagi Grimberg <sagig@mellanox.com>
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending.git master
|
||||||
|
L: linux-rdma@vger.kernel.org
|
||||||
|
L: target-devel@vger.kernel.org
|
||||||
|
S: Supported
|
||||||
|
W: http://www.linux-iscsi.org
|
||||||
|
F: drivers/infiniband/ulp/isert
|
||||||
|
|
||||||
ISDN SUBSYSTEM
|
ISDN SUBSYSTEM
|
||||||
M: Karsten Keil <isdn@linux-pingi.de>
|
M: Karsten Keil <isdn@linux-pingi.de>
|
||||||
L: isdn4linux@listserv.isdn4linux.de (subscribers-only)
|
L: isdn4linux@listserv.isdn4linux.de (subscribers-only)
|
||||||
@ -5693,6 +5696,49 @@ F: drivers/lguest/
|
|||||||
F: include/linux/lguest*.h
|
F: include/linux/lguest*.h
|
||||||
F: tools/lguest/
|
F: tools/lguest/
|
||||||
|
|
||||||
|
LIBATA SUBSYSTEM (Serial and Parallel ATA drivers)
|
||||||
|
M: Tejun Heo <tj@kernel.org>
|
||||||
|
L: linux-ide@vger.kernel.org
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata.git
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/ata/
|
||||||
|
F: include/linux/ata.h
|
||||||
|
F: include/linux/libata.h
|
||||||
|
|
||||||
|
LIBATA PATA ARASAN COMPACT FLASH CONTROLLER
|
||||||
|
M: Viresh Kumar <viresh.linux@gmail.com>
|
||||||
|
L: linux-ide@vger.kernel.org
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata.git
|
||||||
|
S: Maintained
|
||||||
|
F: include/linux/pata_arasan_cf_data.h
|
||||||
|
F: drivers/ata/pata_arasan_cf.c
|
||||||
|
|
||||||
|
LIBATA PATA DRIVERS
|
||||||
|
M: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
|
||||||
|
M: Tejun Heo <tj@kernel.org>
|
||||||
|
L: linux-ide@vger.kernel.org
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata.git
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/ata/pata_*.c
|
||||||
|
F: drivers/ata/ata_generic.c
|
||||||
|
|
||||||
|
LIBATA SATA AHCI PLATFORM devices support
|
||||||
|
M: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
M: Tejun Heo <tj@kernel.org>
|
||||||
|
L: linux-ide@vger.kernel.org
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata.git
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/ata/ahci_platform.c
|
||||||
|
F: drivers/ata/libahci_platform.c
|
||||||
|
F: include/linux/ahci_platform.h
|
||||||
|
|
||||||
|
LIBATA SATA PROMISE TX2/TX4 CONTROLLER DRIVER
|
||||||
|
M: Mikael Pettersson <mikpelinux@gmail.com>
|
||||||
|
L: linux-ide@vger.kernel.org
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata.git
|
||||||
|
S: Maintained
|
||||||
|
F: drivers/ata/sata_promise.*
|
||||||
|
|
||||||
LIBLOCKDEP
|
LIBLOCKDEP
|
||||||
M: Sasha Levin <sasha.levin@oracle.com>
|
M: Sasha Levin <sasha.levin@oracle.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
@ -6977,14 +7023,12 @@ OPEN FIRMWARE AND FLATTENED DEVICE TREE
|
|||||||
M: Grant Likely <grant.likely@linaro.org>
|
M: Grant Likely <grant.likely@linaro.org>
|
||||||
M: Rob Herring <robh+dt@kernel.org>
|
M: Rob Herring <robh+dt@kernel.org>
|
||||||
L: devicetree@vger.kernel.org
|
L: devicetree@vger.kernel.org
|
||||||
W: http://fdt.secretlab.ca
|
W: http://www.devicetree.org/
|
||||||
T: git git://git.secretlab.ca/git/linux-2.6.git
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/glikely/linux.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/of/
|
F: drivers/of/
|
||||||
F: include/linux/of*.h
|
F: include/linux/of*.h
|
||||||
F: scripts/dtc/
|
F: scripts/dtc/
|
||||||
K: of_get_property
|
|
||||||
K: of_match_table
|
|
||||||
|
|
||||||
OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS
|
OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS
|
||||||
M: Rob Herring <robh+dt@kernel.org>
|
M: Rob Herring <robh+dt@kernel.org>
|
||||||
@ -7229,7 +7273,7 @@ S: Maintained
|
|||||||
F: drivers/pci/host/*layerscape*
|
F: drivers/pci/host/*layerscape*
|
||||||
|
|
||||||
PCI DRIVER FOR IMX6
|
PCI DRIVER FOR IMX6
|
||||||
M: Richard Zhu <r65037@freescale.com>
|
M: Richard Zhu <Richard.Zhu@freescale.com>
|
||||||
M: Lucas Stach <l.stach@pengutronix.de>
|
M: Lucas Stach <l.stach@pengutronix.de>
|
||||||
L: linux-pci@vger.kernel.org
|
L: linux-pci@vger.kernel.org
|
||||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||||
@ -7399,6 +7443,7 @@ F: drivers/crypto/picoxcell*
|
|||||||
PIN CONTROL SUBSYSTEM
|
PIN CONTROL SUBSYSTEM
|
||||||
M: Linus Walleij <linus.walleij@linaro.org>
|
M: Linus Walleij <linus.walleij@linaro.org>
|
||||||
L: linux-gpio@vger.kernel.org
|
L: linux-gpio@vger.kernel.org
|
||||||
|
T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: drivers/pinctrl/
|
F: drivers/pinctrl/
|
||||||
F: include/linux/pinctrl/
|
F: include/linux/pinctrl/
|
||||||
@ -7566,12 +7611,6 @@ W: http://wireless.kernel.org/en/users/Drivers/p54
|
|||||||
S: Obsolete
|
S: Obsolete
|
||||||
F: drivers/net/wireless/prism54/
|
F: drivers/net/wireless/prism54/
|
||||||
|
|
||||||
PROMISE SATA TX2/TX4 CONTROLLER LIBATA DRIVER
|
|
||||||
M: Mikael Pettersson <mikpelinux@gmail.com>
|
|
||||||
L: linux-ide@vger.kernel.org
|
|
||||||
S: Maintained
|
|
||||||
F: drivers/ata/sata_promise.*
|
|
||||||
|
|
||||||
PS3 NETWORK SUPPORT
|
PS3 NETWORK SUPPORT
|
||||||
M: Geoff Levand <geoff@infradead.org>
|
M: Geoff Levand <geoff@infradead.org>
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
@ -7737,8 +7776,7 @@ F: Documentation/scsi/LICENSE.qla2xxx
|
|||||||
F: drivers/scsi/qla2xxx/
|
F: drivers/scsi/qla2xxx/
|
||||||
|
|
||||||
QLOGIC QLA4XXX iSCSI DRIVER
|
QLOGIC QLA4XXX iSCSI DRIVER
|
||||||
M: Vikas Chaudhary <vikas.chaudhary@qlogic.com>
|
M: QLogic-Storage-Upstream@qlogic.com
|
||||||
M: iscsi-driver@qlogic.com
|
|
||||||
L: linux-scsi@vger.kernel.org
|
L: linux-scsi@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
F: Documentation/scsi/LICENSE.qla4xxx
|
F: Documentation/scsi/LICENSE.qla4xxx
|
||||||
@ -8546,25 +8584,6 @@ S: Maintained
|
|||||||
F: drivers/misc/phantom.c
|
F: drivers/misc/phantom.c
|
||||||
F: include/uapi/linux/phantom.h
|
F: include/uapi/linux/phantom.h
|
||||||
|
|
||||||
SERIAL ATA (SATA) SUBSYSTEM
|
|
||||||
M: Tejun Heo <tj@kernel.org>
|
|
||||||
L: linux-ide@vger.kernel.org
|
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata.git
|
|
||||||
S: Supported
|
|
||||||
F: drivers/ata/
|
|
||||||
F: include/linux/ata.h
|
|
||||||
F: include/linux/libata.h
|
|
||||||
|
|
||||||
SERIAL ATA AHCI PLATFORM devices support
|
|
||||||
M: Hans de Goede <hdegoede@redhat.com>
|
|
||||||
M: Tejun Heo <tj@kernel.org>
|
|
||||||
L: linux-ide@vger.kernel.org
|
|
||||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata.git
|
|
||||||
S: Supported
|
|
||||||
F: drivers/ata/ahci_platform.c
|
|
||||||
F: drivers/ata/libahci_platform.c
|
|
||||||
F: include/linux/ahci_platform.h
|
|
||||||
|
|
||||||
SERVER ENGINES 10Gbps iSCSI - BladeEngine 2 DRIVER
|
SERVER ENGINES 10Gbps iSCSI - BladeEngine 2 DRIVER
|
||||||
M: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
|
M: Jayamohan Kallickal <jayamohan.kallickal@emulex.com>
|
||||||
L: linux-scsi@vger.kernel.org
|
L: linux-scsi@vger.kernel.org
|
||||||
@ -9533,7 +9552,8 @@ F: drivers/platform/x86/thinkpad_acpi.c
|
|||||||
TI BANDGAP AND THERMAL DRIVER
|
TI BANDGAP AND THERMAL DRIVER
|
||||||
M: Eduardo Valentin <edubezval@gmail.com>
|
M: Eduardo Valentin <edubezval@gmail.com>
|
||||||
L: linux-pm@vger.kernel.org
|
L: linux-pm@vger.kernel.org
|
||||||
S: Supported
|
L: linux-omap@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
F: drivers/thermal/ti-soc-thermal/
|
F: drivers/thermal/ti-soc-thermal/
|
||||||
|
|
||||||
TI CLOCK DRIVER
|
TI CLOCK DRIVER
|
||||||
|
3
Makefile
3
Makefile
@ -1,7 +1,7 @@
|
|||||||
VERSION = 3
|
VERSION = 3
|
||||||
PATCHLEVEL = 19
|
PATCHLEVEL = 19
|
||||||
SUBLEVEL = 0
|
SUBLEVEL = 0
|
||||||
EXTRAVERSION = -rc2
|
EXTRAVERSION = -rc6
|
||||||
NAME = Diseased Newt
|
NAME = Diseased Newt
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
@ -391,6 +391,7 @@ USERINCLUDE := \
|
|||||||
# Needed to be compatible with the O= option
|
# Needed to be compatible with the O= option
|
||||||
LINUXINCLUDE := \
|
LINUXINCLUDE := \
|
||||||
-I$(srctree)/arch/$(hdr-arch)/include \
|
-I$(srctree)/arch/$(hdr-arch)/include \
|
||||||
|
-Iarch/$(hdr-arch)/include/generated/uapi \
|
||||||
-Iarch/$(hdr-arch)/include/generated \
|
-Iarch/$(hdr-arch)/include/generated \
|
||||||
$(if $(KBUILD_SRC), -I$(srctree)/include) \
|
$(if $(KBUILD_SRC), -I$(srctree)/include) \
|
||||||
-Iinclude \
|
-Iinclude \
|
||||||
|
@ -285,8 +285,12 @@ pcibios_claim_one_bus(struct pci_bus *b)
|
|||||||
if (r->parent || !r->start || !r->flags)
|
if (r->parent || !r->start || !r->flags)
|
||||||
continue;
|
continue;
|
||||||
if (pci_has_flag(PCI_PROBE_ONLY) ||
|
if (pci_has_flag(PCI_PROBE_ONLY) ||
|
||||||
(r->flags & IORESOURCE_PCI_FIXED))
|
(r->flags & IORESOURCE_PCI_FIXED)) {
|
||||||
pci_claim_resource(dev, i);
|
if (pci_claim_resource(dev, i) == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
pci_claim_bridge_resource(dev, i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -203,27 +203,3 @@
|
|||||||
compatible = "linux,spdif-dir";
|
compatible = "linux,spdif-dir";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&pinctrl {
|
|
||||||
/*
|
|
||||||
* These pins might be muxed as I2S by
|
|
||||||
* the bootloader, but it conflicts
|
|
||||||
* with the real I2S pins that are
|
|
||||||
* muxed using i2s_pins. We must mux
|
|
||||||
* those pins to a function other than
|
|
||||||
* I2S.
|
|
||||||
*/
|
|
||||||
pinctrl-0 = <&hog_pins1 &hog_pins2>;
|
|
||||||
pinctrl-names = "default";
|
|
||||||
|
|
||||||
hog_pins1: hog-pins1 {
|
|
||||||
marvell,pins = "mpp6", "mpp8", "mpp10",
|
|
||||||
"mpp12", "mpp13";
|
|
||||||
marvell,function = "gpio";
|
|
||||||
};
|
|
||||||
|
|
||||||
hog_pins2: hog-pins2 {
|
|
||||||
marvell,pins = "mpp5", "mpp7", "mpp9";
|
|
||||||
marvell,function = "gpo";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
@ -953,6 +953,8 @@
|
|||||||
interrupts = <26 IRQ_TYPE_LEVEL_HIGH 3>;
|
interrupts = <26 IRQ_TYPE_LEVEL_HIGH 3>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_fb>;
|
pinctrl-0 = <&pinctrl_fb>;
|
||||||
|
clocks = <&lcd_clk>, <&lcd_clk>;
|
||||||
|
clock-names = "lcdc_clk", "hclk";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -65,6 +65,8 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&sdhci2 {
|
&sdhci2 {
|
||||||
|
broken-cd;
|
||||||
|
bus-width = <8>;
|
||||||
non-removable;
|
non-removable;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
@ -83,7 +83,8 @@
|
|||||||
compatible = "mrvl,pxav3-mmc";
|
compatible = "mrvl,pxav3-mmc";
|
||||||
reg = <0xab1000 0x200>;
|
reg = <0xab1000 0x200>;
|
||||||
interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&chip CLKID_SDIO1XIN>;
|
clocks = <&chip CLKID_NFC_ECC>, <&chip CLKID_NFC>;
|
||||||
|
clock-names = "io", "core";
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -348,36 +349,6 @@
|
|||||||
interrupt-parent = <&gic>;
|
interrupt-parent = <&gic>;
|
||||||
interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio4: gpio@5000 {
|
|
||||||
compatible = "snps,dw-apb-gpio";
|
|
||||||
reg = <0x5000 0x400>;
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
|
|
||||||
porte: gpio-port@4 {
|
|
||||||
compatible = "snps,dw-apb-gpio-port";
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
snps,nr-gpios = <32>;
|
|
||||||
reg = <0>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
gpio5: gpio@c000 {
|
|
||||||
compatible = "snps,dw-apb-gpio";
|
|
||||||
reg = <0xc000 0x400>;
|
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
|
|
||||||
portf: gpio-port@5 {
|
|
||||||
compatible = "snps,dw-apb-gpio-port";
|
|
||||||
gpio-controller;
|
|
||||||
#gpio-cells = <2>;
|
|
||||||
snps,nr-gpios = <32>;
|
|
||||||
reg = <0>;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
chip: chip-control@ea0000 {
|
chip: chip-control@ea0000 {
|
||||||
@ -466,6 +437,21 @@
|
|||||||
ranges = <0 0xfc0000 0x10000>;
|
ranges = <0 0xfc0000 0x10000>;
|
||||||
interrupt-parent = <&sic>;
|
interrupt-parent = <&sic>;
|
||||||
|
|
||||||
|
sm_gpio1: gpio@5000 {
|
||||||
|
compatible = "snps,dw-apb-gpio";
|
||||||
|
reg = <0x5000 0x400>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
portf: gpio-port@5 {
|
||||||
|
compatible = "snps,dw-apb-gpio-port";
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
snps,nr-gpios = <32>;
|
||||||
|
reg = <0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
i2c2: i2c@7000 {
|
i2c2: i2c@7000 {
|
||||||
compatible = "snps,designware-i2c";
|
compatible = "snps,designware-i2c";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
@ -516,6 +502,21 @@
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
sm_gpio0: gpio@c000 {
|
||||||
|
compatible = "snps,dw-apb-gpio";
|
||||||
|
reg = <0xc000 0x400>;
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
porte: gpio-port@4 {
|
||||||
|
compatible = "snps,dw-apb-gpio-port";
|
||||||
|
gpio-controller;
|
||||||
|
#gpio-cells = <2>;
|
||||||
|
snps,nr-gpios = <32>;
|
||||||
|
reg = <0>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
sysctrl: pin-controller@d000 {
|
sysctrl: pin-controller@d000 {
|
||||||
compatible = "marvell,berlin2q-system-ctrl";
|
compatible = "marvell,berlin2q-system-ctrl";
|
||||||
reg = <0xd000 0x100>;
|
reg = <0xd000 0x100>;
|
||||||
|
@ -499,23 +499,23 @@
|
|||||||
};
|
};
|
||||||
partition@5 {
|
partition@5 {
|
||||||
label = "QSPI.u-boot-spl-os";
|
label = "QSPI.u-boot-spl-os";
|
||||||
reg = <0x00140000 0x00010000>;
|
reg = <0x00140000 0x00080000>;
|
||||||
};
|
};
|
||||||
partition@6 {
|
partition@6 {
|
||||||
label = "QSPI.u-boot-env";
|
label = "QSPI.u-boot-env";
|
||||||
reg = <0x00150000 0x00010000>;
|
reg = <0x001c0000 0x00010000>;
|
||||||
};
|
};
|
||||||
partition@7 {
|
partition@7 {
|
||||||
label = "QSPI.u-boot-env.backup1";
|
label = "QSPI.u-boot-env.backup1";
|
||||||
reg = <0x00160000 0x0010000>;
|
reg = <0x001d0000 0x0010000>;
|
||||||
};
|
};
|
||||||
partition@8 {
|
partition@8 {
|
||||||
label = "QSPI.kernel";
|
label = "QSPI.kernel";
|
||||||
reg = <0x00170000 0x0800000>;
|
reg = <0x001e0000 0x0800000>;
|
||||||
};
|
};
|
||||||
partition@9 {
|
partition@9 {
|
||||||
label = "QSPI.file-system";
|
label = "QSPI.file-system";
|
||||||
reg = <0x00970000 0x01690000>;
|
reg = <0x009e0000 0x01620000>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -1257,6 +1257,8 @@
|
|||||||
tx-fifo-resize;
|
tx-fifo-resize;
|
||||||
maximum-speed = "super-speed";
|
maximum-speed = "super-speed";
|
||||||
dr_mode = "otg";
|
dr_mode = "otg";
|
||||||
|
snps,dis_u3_susphy_quirk;
|
||||||
|
snps,dis_u2_susphy_quirk;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1278,6 +1280,8 @@
|
|||||||
tx-fifo-resize;
|
tx-fifo-resize;
|
||||||
maximum-speed = "high-speed";
|
maximum-speed = "high-speed";
|
||||||
dr_mode = "otg";
|
dr_mode = "otg";
|
||||||
|
snps,dis_u3_susphy_quirk;
|
||||||
|
snps,dis_u2_susphy_quirk;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1299,6 +1303,8 @@
|
|||||||
tx-fifo-resize;
|
tx-fifo-resize;
|
||||||
maximum-speed = "high-speed";
|
maximum-speed = "high-speed";
|
||||||
dr_mode = "otg";
|
dr_mode = "otg";
|
||||||
|
snps,dis_u3_susphy_quirk;
|
||||||
|
snps,dis_u2_susphy_quirk;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -736,7 +736,7 @@
|
|||||||
|
|
||||||
dp_phy: video-phy@10040720 {
|
dp_phy: video-phy@10040720 {
|
||||||
compatible = "samsung,exynos5250-dp-video-phy";
|
compatible = "samsung,exynos5250-dp-video-phy";
|
||||||
reg = <0x10040720 4>;
|
samsung,pmu-syscon = <&pmu_system_controller>;
|
||||||
#phy-cells = <0>;
|
#phy-cells = <0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -372,3 +372,7 @@
|
|||||||
&usbdrd_dwc3_1 {
|
&usbdrd_dwc3_1 {
|
||||||
dr_mode = "host";
|
dr_mode = "host";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&cci {
|
||||||
|
status = "disabled";
|
||||||
|
};
|
||||||
|
@ -120,7 +120,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
cci@10d20000 {
|
cci: cci@10d20000 {
|
||||||
compatible = "arm,cci-400";
|
compatible = "arm,cci-400";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
@ -503,8 +503,8 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
dp_phy: video-phy@10040728 {
|
dp_phy: video-phy@10040728 {
|
||||||
compatible = "samsung,exynos5250-dp-video-phy";
|
compatible = "samsung,exynos5420-dp-video-phy";
|
||||||
reg = <0x10040728 4>;
|
samsung,pmu-syscon = <&pmu_system_controller>;
|
||||||
#phy-cells = <0>;
|
#phy-cells = <0>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -162,7 +162,7 @@
|
|||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
compatible = "fsl,imx25-cspi", "fsl,imx35-cspi";
|
compatible = "fsl,imx25-cspi", "fsl,imx35-cspi";
|
||||||
reg = <0x43fa4000 0x4000>;
|
reg = <0x43fa4000 0x4000>;
|
||||||
clocks = <&clks 62>, <&clks 62>;
|
clocks = <&clks 78>, <&clks 78>;
|
||||||
clock-names = "ipg", "per";
|
clock-names = "ipg", "per";
|
||||||
interrupts = <14>;
|
interrupts = <14>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
@ -369,7 +369,7 @@
|
|||||||
compatible = "fsl,imx25-pwm", "fsl,imx27-pwm";
|
compatible = "fsl,imx25-pwm", "fsl,imx27-pwm";
|
||||||
#pwm-cells = <2>;
|
#pwm-cells = <2>;
|
||||||
reg = <0x53fa0000 0x4000>;
|
reg = <0x53fa0000 0x4000>;
|
||||||
clocks = <&clks 106>, <&clks 36>;
|
clocks = <&clks 106>, <&clks 52>;
|
||||||
clock-names = "ipg", "per";
|
clock-names = "ipg", "per";
|
||||||
interrupts = <36>;
|
interrupts = <36>;
|
||||||
};
|
};
|
||||||
@ -388,7 +388,7 @@
|
|||||||
compatible = "fsl,imx25-pwm", "fsl,imx27-pwm";
|
compatible = "fsl,imx25-pwm", "fsl,imx27-pwm";
|
||||||
#pwm-cells = <2>;
|
#pwm-cells = <2>;
|
||||||
reg = <0x53fa8000 0x4000>;
|
reg = <0x53fa8000 0x4000>;
|
||||||
clocks = <&clks 107>, <&clks 36>;
|
clocks = <&clks 107>, <&clks 52>;
|
||||||
clock-names = "ipg", "per";
|
clock-names = "ipg", "per";
|
||||||
interrupts = <41>;
|
interrupts = <41>;
|
||||||
};
|
};
|
||||||
@ -429,7 +429,7 @@
|
|||||||
pwm4: pwm@53fc8000 {
|
pwm4: pwm@53fc8000 {
|
||||||
compatible = "fsl,imx25-pwm", "fsl,imx27-pwm";
|
compatible = "fsl,imx25-pwm", "fsl,imx27-pwm";
|
||||||
reg = <0x53fc8000 0x4000>;
|
reg = <0x53fc8000 0x4000>;
|
||||||
clocks = <&clks 108>, <&clks 36>;
|
clocks = <&clks 108>, <&clks 52>;
|
||||||
clock-names = "ipg", "per";
|
clock-names = "ipg", "per";
|
||||||
interrupts = <42>;
|
interrupts = <42>;
|
||||||
};
|
};
|
||||||
@ -476,7 +476,7 @@
|
|||||||
compatible = "fsl,imx25-pwm", "fsl,imx27-pwm";
|
compatible = "fsl,imx25-pwm", "fsl,imx27-pwm";
|
||||||
#pwm-cells = <2>;
|
#pwm-cells = <2>;
|
||||||
reg = <0x53fe0000 0x4000>;
|
reg = <0x53fe0000 0x4000>;
|
||||||
clocks = <&clks 105>, <&clks 36>;
|
clocks = <&clks 105>, <&clks 52>;
|
||||||
clock-names = "ipg", "per";
|
clock-names = "ipg", "per";
|
||||||
interrupts = <26>;
|
interrupts = <26>;
|
||||||
};
|
};
|
||||||
|
@ -127,24 +127,12 @@
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
reg_usbh1_vbus: regulator@0 {
|
reg_hub_reset: regulator@0 {
|
||||||
compatible = "regulator-fixed";
|
|
||||||
pinctrl-names = "default";
|
|
||||||
pinctrl-0 = <&pinctrl_usbh1reg>;
|
|
||||||
reg = <0>;
|
|
||||||
regulator-name = "usbh1_vbus";
|
|
||||||
regulator-min-microvolt = <5000000>;
|
|
||||||
regulator-max-microvolt = <5000000>;
|
|
||||||
gpio = <&gpio2 5 GPIO_ACTIVE_HIGH>;
|
|
||||||
enable-active-high;
|
|
||||||
};
|
|
||||||
|
|
||||||
reg_usbotg_vbus: regulator@1 {
|
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usbotgreg>;
|
pinctrl-0 = <&pinctrl_usbotgreg>;
|
||||||
reg = <1>;
|
reg = <0>;
|
||||||
regulator-name = "usbotg_vbus";
|
regulator-name = "hub_reset";
|
||||||
regulator-min-microvolt = <5000000>;
|
regulator-min-microvolt = <5000000>;
|
||||||
regulator-max-microvolt = <5000000>;
|
regulator-max-microvolt = <5000000>;
|
||||||
gpio = <&gpio1 7 GPIO_ACTIVE_HIGH>;
|
gpio = <&gpio1 7 GPIO_ACTIVE_HIGH>;
|
||||||
@ -176,6 +164,7 @@
|
|||||||
reg = <0>;
|
reg = <0>;
|
||||||
clocks = <&clks IMX5_CLK_DUMMY>;
|
clocks = <&clks IMX5_CLK_DUMMY>;
|
||||||
clock-names = "main_clk";
|
clock-names = "main_clk";
|
||||||
|
reset-gpios = <&gpio2 5 GPIO_ACTIVE_LOW>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -419,7 +408,7 @@
|
|||||||
&usbh1 {
|
&usbh1 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_usbh1>;
|
pinctrl-0 = <&pinctrl_usbh1>;
|
||||||
vbus-supply = <®_usbh1_vbus>;
|
vbus-supply = <®_hub_reset>;
|
||||||
fsl,usbphy = <&usbh1phy>;
|
fsl,usbphy = <&usbh1phy>;
|
||||||
phy_type = "ulpi";
|
phy_type = "ulpi";
|
||||||
status = "okay";
|
status = "okay";
|
||||||
@ -429,7 +418,6 @@
|
|||||||
dr_mode = "otg";
|
dr_mode = "otg";
|
||||||
disable-over-current;
|
disable-over-current;
|
||||||
phy_type = "utmi_wide";
|
phy_type = "utmi_wide";
|
||||||
vbus-supply = <®_usbotg_vbus>;
|
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -335,8 +335,8 @@
|
|||||||
vpu: vpu@02040000 {
|
vpu: vpu@02040000 {
|
||||||
compatible = "cnm,coda960";
|
compatible = "cnm,coda960";
|
||||||
reg = <0x02040000 0x3c000>;
|
reg = <0x02040000 0x3c000>;
|
||||||
interrupts = <0 3 IRQ_TYPE_LEVEL_HIGH>,
|
interrupts = <0 12 IRQ_TYPE_LEVEL_HIGH>,
|
||||||
<0 12 IRQ_TYPE_LEVEL_HIGH>;
|
<0 3 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
interrupt-names = "bit", "jpeg";
|
interrupt-names = "bit", "jpeg";
|
||||||
clocks = <&clks IMX6QDL_CLK_VPU_AXI>,
|
clocks = <&clks IMX6QDL_CLK_VPU_AXI>,
|
||||||
<&clks IMX6QDL_CLK_MMDC_CH0_AXI>,
|
<&clks IMX6QDL_CLK_MMDC_CH0_AXI>,
|
||||||
|
@ -159,13 +159,28 @@
|
|||||||
pinctrl-0 = <&pinctrl_enet1>;
|
pinctrl-0 = <&pinctrl_enet1>;
|
||||||
phy-supply = <®_enet_3v3>;
|
phy-supply = <®_enet_3v3>;
|
||||||
phy-mode = "rgmii";
|
phy-mode = "rgmii";
|
||||||
|
phy-handle = <ðphy1>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
|
mdio {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
ethphy1: ethernet-phy@0 {
|
||||||
|
reg = <0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
ethphy2: ethernet-phy@1 {
|
||||||
|
reg = <1>;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&fec2 {
|
&fec2 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_enet2>;
|
pinctrl-0 = <&pinctrl_enet2>;
|
||||||
phy-mode = "rgmii";
|
phy-mode = "rgmii";
|
||||||
|
phy-handle = <ðphy2>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -142,6 +142,7 @@
|
|||||||
scfg: scfg@1570000 {
|
scfg: scfg@1570000 {
|
||||||
compatible = "fsl,ls1021a-scfg", "syscon";
|
compatible = "fsl,ls1021a-scfg", "syscon";
|
||||||
reg = <0x0 0x1570000 0x0 0x10000>;
|
reg = <0x0 0x1570000 0x0 0x10000>;
|
||||||
|
big-endian;
|
||||||
};
|
};
|
||||||
|
|
||||||
clockgen: clocking@1ee1000 {
|
clockgen: clocking@1ee1000 {
|
||||||
|
@ -700,11 +700,9 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Ethernet is on some early development boards and qemu */
|
||||||
ethernet@gpmc {
|
ethernet@gpmc {
|
||||||
compatible = "smsc,lan91c94";
|
compatible = "smsc,lan91c94";
|
||||||
|
|
||||||
status = "disabled";
|
|
||||||
|
|
||||||
interrupt-parent = <&gpio2>;
|
interrupt-parent = <&gpio2>;
|
||||||
interrupts = <22 IRQ_TYPE_LEVEL_HIGH>; /* gpio54 */
|
interrupts = <22 IRQ_TYPE_LEVEL_HIGH>; /* gpio54 */
|
||||||
reg = <1 0x300 0xf>; /* 16 byte IO range at offset 0x300 */
|
reg = <1 0x300 0xf>; /* 16 byte IO range at offset 0x300 */
|
||||||
|
@ -155,6 +155,15 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
&pinctrl {
|
&pinctrl {
|
||||||
|
pcfg_pull_none_drv_8ma: pcfg-pull-none-drv-8ma {
|
||||||
|
drive-strength = <8>;
|
||||||
|
};
|
||||||
|
|
||||||
|
pcfg_pull_up_drv_8ma: pcfg-pull-up-drv-8ma {
|
||||||
|
bias-pull-up;
|
||||||
|
drive-strength = <8>;
|
||||||
|
};
|
||||||
|
|
||||||
backlight {
|
backlight {
|
||||||
bl_en: bl-en {
|
bl_en: bl-en {
|
||||||
rockchip,pins = <7 2 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <7 2 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
@ -173,6 +182,27 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
sdmmc {
|
||||||
|
/*
|
||||||
|
* Default drive strength isn't enough to achieve even
|
||||||
|
* high-speed mode on EVB board so bump up to 8ma.
|
||||||
|
*/
|
||||||
|
sdmmc_bus4: sdmmc-bus4 {
|
||||||
|
rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_up_drv_8ma>,
|
||||||
|
<6 17 RK_FUNC_1 &pcfg_pull_up_drv_8ma>,
|
||||||
|
<6 18 RK_FUNC_1 &pcfg_pull_up_drv_8ma>,
|
||||||
|
<6 19 RK_FUNC_1 &pcfg_pull_up_drv_8ma>;
|
||||||
|
};
|
||||||
|
|
||||||
|
sdmmc_clk: sdmmc-clk {
|
||||||
|
rockchip,pins = <6 20 RK_FUNC_1 &pcfg_pull_none_drv_8ma>;
|
||||||
|
};
|
||||||
|
|
||||||
|
sdmmc_cmd: sdmmc-cmd {
|
||||||
|
rockchip,pins = <6 21 RK_FUNC_1 &pcfg_pull_up_drv_8ma>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
usb {
|
usb {
|
||||||
host_vbus_drv: host-vbus-drv {
|
host_vbus_drv: host-vbus-drv {
|
||||||
rockchip,pins = <0 14 RK_FUNC_GPIO &pcfg_pull_none>;
|
rockchip,pins = <0 14 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||||
|
@ -176,7 +176,7 @@
|
|||||||
"Headphone Jack", "HPOUTR",
|
"Headphone Jack", "HPOUTR",
|
||||||
"IN2L", "Line In Jack",
|
"IN2L", "Line In Jack",
|
||||||
"IN2R", "Line In Jack",
|
"IN2R", "Line In Jack",
|
||||||
"MICBIAS", "IN1L",
|
"Mic", "MICBIAS",
|
||||||
"IN1L", "Mic";
|
"IN1L", "Mic";
|
||||||
|
|
||||||
atmel,ssc-controller = <&ssc0>;
|
atmel,ssc-controller = <&ssc0>;
|
||||||
|
@ -1008,7 +1008,7 @@
|
|||||||
|
|
||||||
pit: timer@fc068630 {
|
pit: timer@fc068630 {
|
||||||
compatible = "atmel,at91sam9260-pit";
|
compatible = "atmel,at91sam9260-pit";
|
||||||
reg = <0xfc068630 0xf>;
|
reg = <0xfc068630 0x10>;
|
||||||
interrupts = <3 IRQ_TYPE_LEVEL_HIGH 5>;
|
interrupts = <3 IRQ_TYPE_LEVEL_HIGH 5>;
|
||||||
clocks = <&h32ck>;
|
clocks = <&h32ck>;
|
||||||
};
|
};
|
||||||
|
@ -25,11 +25,11 @@
|
|||||||
stmpe2401_1 {
|
stmpe2401_1 {
|
||||||
stmpe2401_1_nhk_mode: stmpe2401_1_nhk {
|
stmpe2401_1_nhk_mode: stmpe2401_1_nhk {
|
||||||
nhk_cfg1 {
|
nhk_cfg1 {
|
||||||
ste,pins = "GPIO76_B20"; // IRQ line
|
pins = "GPIO76_B20"; // IRQ line
|
||||||
ste,input = <0>;
|
ste,input = <0>;
|
||||||
};
|
};
|
||||||
nhk_cfg2 {
|
nhk_cfg2 {
|
||||||
ste,pins = "GPIO77_B8"; // reset line
|
pins = "GPIO77_B8"; // reset line
|
||||||
ste,output = <1>;
|
ste,output = <1>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -37,11 +37,11 @@
|
|||||||
stmpe2401_2 {
|
stmpe2401_2 {
|
||||||
stmpe2401_2_nhk_mode: stmpe2401_2_nhk {
|
stmpe2401_2_nhk_mode: stmpe2401_2_nhk {
|
||||||
nhk_cfg1 {
|
nhk_cfg1 {
|
||||||
ste,pins = "GPIO78_A8"; // IRQ line
|
pins = "GPIO78_A8"; // IRQ line
|
||||||
ste,input = <0>;
|
ste,input = <0>;
|
||||||
};
|
};
|
||||||
nhk_cfg2 {
|
nhk_cfg2 {
|
||||||
ste,pins = "GPIO79_C9"; // reset line
|
pins = "GPIO79_C9"; // reset line
|
||||||
ste,output = <1>;
|
ste,output = <1>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -406,7 +406,7 @@
|
|||||||
clock-frequency = <400000>;
|
clock-frequency = <400000>;
|
||||||
|
|
||||||
magnetometer@c {
|
magnetometer@c {
|
||||||
compatible = "ak,ak8975";
|
compatible = "asahi-kasei,ak8975";
|
||||||
reg = <0xc>;
|
reg = <0xc>;
|
||||||
interrupt-parent = <&gpio>;
|
interrupt-parent = <&gpio>;
|
||||||
interrupts = <TEGRA_GPIO(N, 5) IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <TEGRA_GPIO(N, 5) IRQ_TYPE_LEVEL_HIGH>;
|
||||||
|
@ -129,13 +129,28 @@
|
|||||||
|
|
||||||
&fec0 {
|
&fec0 {
|
||||||
phy-mode = "rmii";
|
phy-mode = "rmii";
|
||||||
|
phy-handle = <ðphy0>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_fec0>;
|
pinctrl-0 = <&pinctrl_fec0>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
|
mdio {
|
||||||
|
#address-cells = <1>;
|
||||||
|
#size-cells = <0>;
|
||||||
|
|
||||||
|
ethphy0: ethernet-phy@0 {
|
||||||
|
reg = <0>;
|
||||||
|
};
|
||||||
|
|
||||||
|
ethphy1: ethernet-phy@1 {
|
||||||
|
reg = <1>;
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&fec1 {
|
&fec1 {
|
||||||
phy-mode = "rmii";
|
phy-mode = "rmii";
|
||||||
|
phy-handle = <ðphy1>;
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_fec1>;
|
pinctrl-0 = <&pinctrl_fec1>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
@ -84,7 +84,8 @@ CONFIG_DEBUG_GPIO=y
|
|||||||
CONFIG_POWER_SUPPLY=y
|
CONFIG_POWER_SUPPLY=y
|
||||||
CONFIG_BATTERY_SBS=y
|
CONFIG_BATTERY_SBS=y
|
||||||
CONFIG_CHARGER_TPS65090=y
|
CONFIG_CHARGER_TPS65090=y
|
||||||
# CONFIG_HWMON is not set
|
CONFIG_HWMON=y
|
||||||
|
CONFIG_SENSORS_LM90=y
|
||||||
CONFIG_THERMAL=y
|
CONFIG_THERMAL=y
|
||||||
CONFIG_EXYNOS_THERMAL=y
|
CONFIG_EXYNOS_THERMAL=y
|
||||||
CONFIG_EXYNOS_THERMAL_CORE=y
|
CONFIG_EXYNOS_THERMAL_CORE=y
|
||||||
@ -109,11 +110,26 @@ CONFIG_REGULATOR_S2MPA01=y
|
|||||||
CONFIG_REGULATOR_S2MPS11=y
|
CONFIG_REGULATOR_S2MPS11=y
|
||||||
CONFIG_REGULATOR_S5M8767=y
|
CONFIG_REGULATOR_S5M8767=y
|
||||||
CONFIG_REGULATOR_TPS65090=y
|
CONFIG_REGULATOR_TPS65090=y
|
||||||
|
CONFIG_DRM=y
|
||||||
|
CONFIG_DRM_BRIDGE=y
|
||||||
|
CONFIG_DRM_PTN3460=y
|
||||||
|
CONFIG_DRM_PS8622=y
|
||||||
|
CONFIG_DRM_EXYNOS=y
|
||||||
|
CONFIG_DRM_EXYNOS_FIMD=y
|
||||||
|
CONFIG_DRM_EXYNOS_DP=y
|
||||||
|
CONFIG_DRM_PANEL=y
|
||||||
|
CONFIG_DRM_PANEL_SIMPLE=y
|
||||||
CONFIG_FB=y
|
CONFIG_FB=y
|
||||||
CONFIG_FB_MODE_HELPERS=y
|
CONFIG_FB_MODE_HELPERS=y
|
||||||
CONFIG_FB_SIMPLE=y
|
CONFIG_FB_SIMPLE=y
|
||||||
CONFIG_EXYNOS_VIDEO=y
|
CONFIG_EXYNOS_VIDEO=y
|
||||||
CONFIG_EXYNOS_MIPI_DSI=y
|
CONFIG_EXYNOS_MIPI_DSI=y
|
||||||
|
CONFIG_BACKLIGHT_LCD_SUPPORT=y
|
||||||
|
CONFIG_LCD_CLASS_DEVICE=y
|
||||||
|
CONFIG_LCD_PLATFORM=y
|
||||||
|
CONFIG_BACKLIGHT_CLASS_DEVICE=y
|
||||||
|
CONFIG_BACKLIGHT_GENERIC=y
|
||||||
|
CONFIG_BACKLIGHT_PWM=y
|
||||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||||
CONFIG_FONTS=y
|
CONFIG_FONTS=y
|
||||||
CONFIG_FONT_7x14=y
|
CONFIG_FONT_7x14=y
|
||||||
|
@ -338,6 +338,7 @@ CONFIG_USB=y
|
|||||||
CONFIG_USB_XHCI_HCD=y
|
CONFIG_USB_XHCI_HCD=y
|
||||||
CONFIG_USB_XHCI_MVEBU=y
|
CONFIG_USB_XHCI_MVEBU=y
|
||||||
CONFIG_USB_EHCI_HCD=y
|
CONFIG_USB_EHCI_HCD=y
|
||||||
|
CONFIG_USB_EHCI_EXYNOS=y
|
||||||
CONFIG_USB_EHCI_TEGRA=y
|
CONFIG_USB_EHCI_TEGRA=y
|
||||||
CONFIG_USB_EHCI_HCD_STI=y
|
CONFIG_USB_EHCI_HCD_STI=y
|
||||||
CONFIG_USB_EHCI_HCD_PLATFORM=y
|
CONFIG_USB_EHCI_HCD_PLATFORM=y
|
||||||
|
@ -68,7 +68,7 @@ CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
|
|||||||
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
|
||||||
CONFIG_CPU_FREQ_GOV_USERSPACE=y
|
CONFIG_CPU_FREQ_GOV_USERSPACE=y
|
||||||
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
|
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
|
||||||
CONFIG_GENERIC_CPUFREQ_CPU0=y
|
CONFIG_CPUFREQ_DT=y
|
||||||
# CONFIG_ARM_OMAP2PLUS_CPUFREQ is not set
|
# CONFIG_ARM_OMAP2PLUS_CPUFREQ is not set
|
||||||
CONFIG_CPU_IDLE=y
|
CONFIG_CPU_IDLE=y
|
||||||
CONFIG_BINFMT_MISC=y
|
CONFIG_BINFMT_MISC=y
|
||||||
|
@ -413,6 +413,7 @@
|
|||||||
#define __NR_getrandom (__NR_SYSCALL_BASE+384)
|
#define __NR_getrandom (__NR_SYSCALL_BASE+384)
|
||||||
#define __NR_memfd_create (__NR_SYSCALL_BASE+385)
|
#define __NR_memfd_create (__NR_SYSCALL_BASE+385)
|
||||||
#define __NR_bpf (__NR_SYSCALL_BASE+386)
|
#define __NR_bpf (__NR_SYSCALL_BASE+386)
|
||||||
|
#define __NR_execveat (__NR_SYSCALL_BASE+387)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The following SWIs are ARM private.
|
* The following SWIs are ARM private.
|
||||||
|
@ -396,6 +396,7 @@
|
|||||||
CALL(sys_getrandom)
|
CALL(sys_getrandom)
|
||||||
/* 385 */ CALL(sys_memfd_create)
|
/* 385 */ CALL(sys_memfd_create)
|
||||||
CALL(sys_bpf)
|
CALL(sys_bpf)
|
||||||
|
CALL(sys_execveat)
|
||||||
#ifndef syscalls_counted
|
#ifndef syscalls_counted
|
||||||
.equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls
|
.equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls
|
||||||
#define syscalls_counted
|
#define syscalls_counted
|
||||||
|
@ -253,21 +253,22 @@
|
|||||||
.endm
|
.endm
|
||||||
|
|
||||||
.macro restore_user_regs, fast = 0, offset = 0
|
.macro restore_user_regs, fast = 0, offset = 0
|
||||||
ldr r1, [sp, #\offset + S_PSR] @ get calling cpsr
|
mov r2, sp
|
||||||
ldr lr, [sp, #\offset + S_PC]! @ get pc
|
ldr r1, [r2, #\offset + S_PSR] @ get calling cpsr
|
||||||
|
ldr lr, [r2, #\offset + S_PC]! @ get pc
|
||||||
msr spsr_cxsf, r1 @ save in spsr_svc
|
msr spsr_cxsf, r1 @ save in spsr_svc
|
||||||
#if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_32v6K)
|
#if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_32v6K)
|
||||||
@ We must avoid clrex due to Cortex-A15 erratum #830321
|
@ We must avoid clrex due to Cortex-A15 erratum #830321
|
||||||
strex r1, r2, [sp] @ clear the exclusive monitor
|
strex r1, r2, [r2] @ clear the exclusive monitor
|
||||||
#endif
|
#endif
|
||||||
.if \fast
|
.if \fast
|
||||||
ldmdb sp, {r1 - lr}^ @ get calling r1 - lr
|
ldmdb r2, {r1 - lr}^ @ get calling r1 - lr
|
||||||
.else
|
.else
|
||||||
ldmdb sp, {r0 - lr}^ @ get calling r0 - lr
|
ldmdb r2, {r0 - lr}^ @ get calling r0 - lr
|
||||||
.endif
|
.endif
|
||||||
mov r0, r0 @ ARMv5T and earlier require a nop
|
mov r0, r0 @ ARMv5T and earlier require a nop
|
||||||
@ after ldm {}^
|
@ after ldm {}^
|
||||||
add sp, sp, #S_FRAME_SIZE - S_PC
|
add sp, sp, #\offset + S_FRAME_SIZE
|
||||||
movs pc, lr @ return & move spsr_svc into cpsr
|
movs pc, lr @ return & move spsr_svc into cpsr
|
||||||
.endm
|
.endm
|
||||||
|
|
||||||
|
@ -116,8 +116,14 @@ int armpmu_event_set_period(struct perf_event *event)
|
|||||||
ret = 1;
|
ret = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (left > (s64)armpmu->max_period)
|
/*
|
||||||
left = armpmu->max_period;
|
* Limit the maximum period to prevent the counter value
|
||||||
|
* from overtaking the one we are about to program. In
|
||||||
|
* effect we are reducing max_period to account for
|
||||||
|
* interrupt latency (and we are being very conservative).
|
||||||
|
*/
|
||||||
|
if (left > (armpmu->max_period >> 1))
|
||||||
|
left = armpmu->max_period >> 1;
|
||||||
|
|
||||||
local64_set(&hwc->prev_count, (u64)-left);
|
local64_set(&hwc->prev_count, (u64)-left);
|
||||||
|
|
||||||
|
@ -28,3 +28,11 @@ u64 perf_reg_abi(struct task_struct *task)
|
|||||||
{
|
{
|
||||||
return PERF_SAMPLE_REGS_ABI_32;
|
return PERF_SAMPLE_REGS_ABI_32;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void perf_get_regs_user(struct perf_regs *regs_user,
|
||||||
|
struct pt_regs *regs,
|
||||||
|
struct pt_regs *regs_user_copy)
|
||||||
|
{
|
||||||
|
regs_user->regs = task_pt_regs(current);
|
||||||
|
regs_user->abi = perf_reg_abi(current);
|
||||||
|
}
|
||||||
|
@ -657,10 +657,13 @@ int __init arm_add_memory(u64 start, u64 size)
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Ensure that start/size are aligned to a page boundary.
|
* Ensure that start/size are aligned to a page boundary.
|
||||||
* Size is appropriately rounded down, start is rounded up.
|
* Size is rounded down, start is rounded up.
|
||||||
*/
|
*/
|
||||||
size -= start & ~PAGE_MASK;
|
|
||||||
aligned_start = PAGE_ALIGN(start);
|
aligned_start = PAGE_ALIGN(start);
|
||||||
|
if (aligned_start > start + size)
|
||||||
|
size = 0;
|
||||||
|
else
|
||||||
|
size -= aligned_start - start;
|
||||||
|
|
||||||
#ifndef CONFIG_ARCH_PHYS_ADDR_T_64BIT
|
#ifndef CONFIG_ARCH_PHYS_ADDR_T_64BIT
|
||||||
if (aligned_start > ULONG_MAX) {
|
if (aligned_start > ULONG_MAX) {
|
||||||
@ -1046,6 +1049,15 @@ static int c_show(struct seq_file *m, void *v)
|
|||||||
seq_printf(m, "model name\t: %s rev %d (%s)\n",
|
seq_printf(m, "model name\t: %s rev %d (%s)\n",
|
||||||
cpu_name, cpuid & 15, elf_platform);
|
cpu_name, cpuid & 15, elf_platform);
|
||||||
|
|
||||||
|
#if defined(CONFIG_SMP)
|
||||||
|
seq_printf(m, "BogoMIPS\t: %lu.%02lu\n",
|
||||||
|
per_cpu(cpu_data, i).loops_per_jiffy / (500000UL/HZ),
|
||||||
|
(per_cpu(cpu_data, i).loops_per_jiffy / (5000UL/HZ)) % 100);
|
||||||
|
#else
|
||||||
|
seq_printf(m, "BogoMIPS\t: %lu.%02lu\n",
|
||||||
|
loops_per_jiffy / (500000/HZ),
|
||||||
|
(loops_per_jiffy / (5000/HZ)) % 100);
|
||||||
|
#endif
|
||||||
/* dump out the processor features */
|
/* dump out the processor features */
|
||||||
seq_puts(m, "Features\t: ");
|
seq_puts(m, "Features\t: ");
|
||||||
|
|
||||||
|
@ -387,6 +387,18 @@ asmlinkage void secondary_start_kernel(void)
|
|||||||
|
|
||||||
void __init smp_cpus_done(unsigned int max_cpus)
|
void __init smp_cpus_done(unsigned int max_cpus)
|
||||||
{
|
{
|
||||||
|
int cpu;
|
||||||
|
unsigned long bogosum = 0;
|
||||||
|
|
||||||
|
for_each_online_cpu(cpu)
|
||||||
|
bogosum += per_cpu(cpu_data, cpu).loops_per_jiffy;
|
||||||
|
|
||||||
|
printk(KERN_INFO "SMP: Total of %d processors activated "
|
||||||
|
"(%lu.%02lu BogoMIPS).\n",
|
||||||
|
num_online_cpus(),
|
||||||
|
bogosum / (500000/HZ),
|
||||||
|
(bogosum / (5000/HZ)) % 100);
|
||||||
|
|
||||||
hyp_mode_check();
|
hyp_mode_check();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
#include <linux/of_platform.h>
|
#include <linux/of_platform.h>
|
||||||
#include <linux/phy.h>
|
#include <linux/phy.h>
|
||||||
#include <linux/clk-provider.h>
|
#include <linux/clk-provider.h>
|
||||||
|
#include <linux/phy.h>
|
||||||
|
|
||||||
#include <asm/setup.h>
|
#include <asm/setup.h>
|
||||||
#include <asm/irq.h>
|
#include <asm/irq.h>
|
||||||
@ -26,8 +27,25 @@
|
|||||||
|
|
||||||
#include "generic.h"
|
#include "generic.h"
|
||||||
|
|
||||||
|
static int ksz8081_phy_fixup(struct phy_device *phy)
|
||||||
|
{
|
||||||
|
int value;
|
||||||
|
|
||||||
|
value = phy_read(phy, 0x16);
|
||||||
|
value &= ~0x20;
|
||||||
|
phy_write(phy, 0x16, value);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static void __init sama5_dt_device_init(void)
|
static void __init sama5_dt_device_init(void)
|
||||||
{
|
{
|
||||||
|
if (of_machine_is_compatible("atmel,sama5d4ek") &&
|
||||||
|
IS_ENABLED(CONFIG_PHYLIB)) {
|
||||||
|
phy_register_fixup_for_id("fc028000.etherne:00",
|
||||||
|
ksz8081_phy_fixup);
|
||||||
|
}
|
||||||
|
|
||||||
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
|
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -144,7 +144,7 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node)
|
|||||||
post_div_table[1].div = 1;
|
post_div_table[1].div = 1;
|
||||||
post_div_table[2].div = 1;
|
post_div_table[2].div = 1;
|
||||||
video_div_table[1].div = 1;
|
video_div_table[1].div = 1;
|
||||||
video_div_table[2].div = 1;
|
video_div_table[3].div = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
clk[IMX6QDL_PLL1_BYPASS_SRC] = imx_clk_mux("pll1_bypass_src", base + 0x00, 14, 2, pll_bypass_src_sels, ARRAY_SIZE(pll_bypass_src_sels));
|
clk[IMX6QDL_PLL1_BYPASS_SRC] = imx_clk_mux("pll1_bypass_src", base + 0x00, 14, 2, pll_bypass_src_sels, ARRAY_SIZE(pll_bypass_src_sels));
|
||||||
|
@ -558,6 +558,9 @@ static void __init imx6sx_clocks_init(struct device_node *ccm_node)
|
|||||||
clk_set_parent(clks[IMX6SX_CLK_GPU_CORE_SEL], clks[IMX6SX_CLK_PLL3_PFD0]);
|
clk_set_parent(clks[IMX6SX_CLK_GPU_CORE_SEL], clks[IMX6SX_CLK_PLL3_PFD0]);
|
||||||
clk_set_parent(clks[IMX6SX_CLK_GPU_AXI_SEL], clks[IMX6SX_CLK_PLL3_PFD0]);
|
clk_set_parent(clks[IMX6SX_CLK_GPU_AXI_SEL], clks[IMX6SX_CLK_PLL3_PFD0]);
|
||||||
|
|
||||||
|
clk_set_parent(clks[IMX6SX_CLK_QSPI1_SEL], clks[IMX6SX_CLK_PLL2_BUS]);
|
||||||
|
clk_set_parent(clks[IMX6SX_CLK_QSPI2_SEL], clks[IMX6SX_CLK_PLL2_BUS]);
|
||||||
|
|
||||||
/* Set initial power mode */
|
/* Set initial power mode */
|
||||||
imx6q_set_lpm(WAIT_CLOCKED);
|
imx6q_set_lpm(WAIT_CLOCKED);
|
||||||
}
|
}
|
||||||
|
@ -246,9 +246,14 @@ static int coherency_type(void)
|
|||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* As a precaution, we currently completely disable hardware I/O
|
||||||
|
* coherency, until enough testing is done with automatic I/O
|
||||||
|
* synchronization barriers to validate that it is a proper solution.
|
||||||
|
*/
|
||||||
int coherency_available(void)
|
int coherency_available(void)
|
||||||
{
|
{
|
||||||
return coherency_type() != COHERENCY_FABRIC_TYPE_NONE;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
int __init coherency_init(void)
|
int __init coherency_init(void)
|
||||||
|
@ -77,6 +77,24 @@ MACHINE_END
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_OMAP3
|
#ifdef CONFIG_ARCH_OMAP3
|
||||||
|
/* Some boards need board name for legacy userspace in /proc/cpuinfo */
|
||||||
|
static const char *const n900_boards_compat[] __initconst = {
|
||||||
|
"nokia,omap3-n900",
|
||||||
|
NULL,
|
||||||
|
};
|
||||||
|
|
||||||
|
DT_MACHINE_START(OMAP3_N900_DT, "Nokia RX-51 board")
|
||||||
|
.reserve = omap_reserve,
|
||||||
|
.map_io = omap3_map_io,
|
||||||
|
.init_early = omap3430_init_early,
|
||||||
|
.init_machine = omap_generic_init,
|
||||||
|
.init_late = omap3_init_late,
|
||||||
|
.init_time = omap3_sync32k_timer_init,
|
||||||
|
.dt_compat = n900_boards_compat,
|
||||||
|
.restart = omap3xxx_restart,
|
||||||
|
MACHINE_END
|
||||||
|
|
||||||
|
/* Generic omap3 boards, most boards can use these */
|
||||||
static const char *const omap3_boards_compat[] __initconst = {
|
static const char *const omap3_boards_compat[] __initconst = {
|
||||||
"ti,omap3430",
|
"ti,omap3430",
|
||||||
"ti,omap3",
|
"ti,omap3",
|
||||||
|
@ -211,6 +211,7 @@ extern struct device *omap2_get_iva_device(void);
|
|||||||
extern struct device *omap2_get_l3_device(void);
|
extern struct device *omap2_get_l3_device(void);
|
||||||
extern struct device *omap4_get_dsp_device(void);
|
extern struct device *omap4_get_dsp_device(void);
|
||||||
|
|
||||||
|
unsigned int omap4_xlate_irq(unsigned int hwirq);
|
||||||
void omap_gic_of_init(void);
|
void omap_gic_of_init(void);
|
||||||
|
|
||||||
#ifdef CONFIG_CACHE_L2X0
|
#ifdef CONFIG_CACHE_L2X0
|
||||||
@ -249,6 +250,7 @@ extern void omap4_cpu_die(unsigned int cpu);
|
|||||||
extern struct smp_operations omap4_smp_ops;
|
extern struct smp_operations omap4_smp_ops;
|
||||||
|
|
||||||
extern void omap5_secondary_startup(void);
|
extern void omap5_secondary_startup(void);
|
||||||
|
extern void omap5_secondary_hyp_startup(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_SMP) && defined(CONFIG_PM)
|
#if defined(CONFIG_SMP) && defined(CONFIG_PM)
|
||||||
|
@ -286,6 +286,10 @@
|
|||||||
#define OMAP5XXX_CONTROL_STATUS 0x134
|
#define OMAP5XXX_CONTROL_STATUS 0x134
|
||||||
#define OMAP5_DEVICETYPE_MASK (0x7 << 6)
|
#define OMAP5_DEVICETYPE_MASK (0x7 << 6)
|
||||||
|
|
||||||
|
/* DRA7XX CONTROL CORE BOOTSTRAP */
|
||||||
|
#define DRA7_CTRL_CORE_BOOTSTRAP 0x6c4
|
||||||
|
#define DRA7_SPEEDSELECT_MASK (0x3 << 8)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* REVISIT: This list of registers is not comprehensive - there are more
|
* REVISIT: This list of registers is not comprehensive - there are more
|
||||||
* that should be added.
|
* that should be added.
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
/* Physical address needed since MMU not enabled yet on secondary core */
|
/* Physical address needed since MMU not enabled yet on secondary core */
|
||||||
#define AUX_CORE_BOOT0_PA 0x48281800
|
#define AUX_CORE_BOOT0_PA 0x48281800
|
||||||
|
#define API_HYP_ENTRY 0x102
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* OMAP5 specific entry point for secondary CPU to jump from ROM
|
* OMAP5 specific entry point for secondary CPU to jump from ROM
|
||||||
@ -40,6 +41,26 @@ wait: ldr r2, =AUX_CORE_BOOT0_PA @ read from AuxCoreBoot0
|
|||||||
bne wait
|
bne wait
|
||||||
b secondary_startup
|
b secondary_startup
|
||||||
ENDPROC(omap5_secondary_startup)
|
ENDPROC(omap5_secondary_startup)
|
||||||
|
/*
|
||||||
|
* Same as omap5_secondary_startup except we call into the ROM to
|
||||||
|
* enable HYP mode first. This is called instead of
|
||||||
|
* omap5_secondary_startup if the primary CPU was put into HYP mode by
|
||||||
|
* the boot loader.
|
||||||
|
*/
|
||||||
|
ENTRY(omap5_secondary_hyp_startup)
|
||||||
|
wait_2: ldr r2, =AUX_CORE_BOOT0_PA @ read from AuxCoreBoot0
|
||||||
|
ldr r0, [r2]
|
||||||
|
mov r0, r0, lsr #5
|
||||||
|
mrc p15, 0, r4, c0, c0, 5
|
||||||
|
and r4, r4, #0x0f
|
||||||
|
cmp r0, r4
|
||||||
|
bne wait_2
|
||||||
|
ldr r12, =API_HYP_ENTRY
|
||||||
|
adr r0, hyp_boot
|
||||||
|
smc #0
|
||||||
|
hyp_boot:
|
||||||
|
b secondary_startup
|
||||||
|
ENDPROC(omap5_secondary_hyp_startup)
|
||||||
/*
|
/*
|
||||||
* OMAP4 specific entry point for secondary CPU to jump from ROM
|
* OMAP4 specific entry point for secondary CPU to jump from ROM
|
||||||
* code. This routine also provides a holding flag into which
|
* code. This routine also provides a holding flag into which
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#include <linux/irqchip/arm-gic.h>
|
#include <linux/irqchip/arm-gic.h>
|
||||||
|
|
||||||
#include <asm/smp_scu.h>
|
#include <asm/smp_scu.h>
|
||||||
|
#include <asm/virt.h>
|
||||||
|
|
||||||
#include "omap-secure.h"
|
#include "omap-secure.h"
|
||||||
#include "omap-wakeupgen.h"
|
#include "omap-wakeupgen.h"
|
||||||
@ -227,8 +228,16 @@ static void __init omap4_smp_prepare_cpus(unsigned int max_cpus)
|
|||||||
if (omap_secure_apis_support())
|
if (omap_secure_apis_support())
|
||||||
omap_auxcoreboot_addr(virt_to_phys(startup_addr));
|
omap_auxcoreboot_addr(virt_to_phys(startup_addr));
|
||||||
else
|
else
|
||||||
writel_relaxed(virt_to_phys(omap5_secondary_startup),
|
/*
|
||||||
base + OMAP_AUX_CORE_BOOT_1);
|
* If the boot CPU is in HYP mode then start secondary
|
||||||
|
* CPU in HYP mode as well.
|
||||||
|
*/
|
||||||
|
if ((__boot_cpu_mode & MODE_MASK) == HYP_MODE)
|
||||||
|
writel_relaxed(virt_to_phys(omap5_secondary_hyp_startup),
|
||||||
|
base + OMAP_AUX_CORE_BOOT_1);
|
||||||
|
else
|
||||||
|
writel_relaxed(virt_to_phys(omap5_secondary_startup),
|
||||||
|
base + OMAP_AUX_CORE_BOOT_1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -256,6 +256,38 @@ static int __init omap4_sar_ram_init(void)
|
|||||||
}
|
}
|
||||||
omap_early_initcall(omap4_sar_ram_init);
|
omap_early_initcall(omap4_sar_ram_init);
|
||||||
|
|
||||||
|
static struct of_device_id gic_match[] = {
|
||||||
|
{ .compatible = "arm,cortex-a9-gic", },
|
||||||
|
{ .compatible = "arm,cortex-a15-gic", },
|
||||||
|
{ },
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct device_node *gic_node;
|
||||||
|
|
||||||
|
unsigned int omap4_xlate_irq(unsigned int hwirq)
|
||||||
|
{
|
||||||
|
struct of_phandle_args irq_data;
|
||||||
|
unsigned int irq;
|
||||||
|
|
||||||
|
if (!gic_node)
|
||||||
|
gic_node = of_find_matching_node(NULL, gic_match);
|
||||||
|
|
||||||
|
if (WARN_ON(!gic_node))
|
||||||
|
return hwirq;
|
||||||
|
|
||||||
|
irq_data.np = gic_node;
|
||||||
|
irq_data.args_count = 3;
|
||||||
|
irq_data.args[0] = 0;
|
||||||
|
irq_data.args[1] = hwirq - OMAP44XX_IRQ_GIC_START;
|
||||||
|
irq_data.args[2] = IRQ_TYPE_LEVEL_HIGH;
|
||||||
|
|
||||||
|
irq = irq_create_of_mapping(&irq_data);
|
||||||
|
if (WARN_ON(!irq))
|
||||||
|
irq = hwirq;
|
||||||
|
|
||||||
|
return irq;
|
||||||
|
}
|
||||||
|
|
||||||
void __init omap_gic_of_init(void)
|
void __init omap_gic_of_init(void)
|
||||||
{
|
{
|
||||||
struct device_node *np;
|
struct device_node *np;
|
||||||
|
@ -3534,9 +3534,15 @@ int omap_hwmod_fill_resources(struct omap_hwmod *oh, struct resource *res)
|
|||||||
|
|
||||||
mpu_irqs_cnt = _count_mpu_irqs(oh);
|
mpu_irqs_cnt = _count_mpu_irqs(oh);
|
||||||
for (i = 0; i < mpu_irqs_cnt; i++) {
|
for (i = 0; i < mpu_irqs_cnt; i++) {
|
||||||
|
unsigned int irq;
|
||||||
|
|
||||||
|
if (oh->xlate_irq)
|
||||||
|
irq = oh->xlate_irq((oh->mpu_irqs + i)->irq);
|
||||||
|
else
|
||||||
|
irq = (oh->mpu_irqs + i)->irq;
|
||||||
(res + r)->name = (oh->mpu_irqs + i)->name;
|
(res + r)->name = (oh->mpu_irqs + i)->name;
|
||||||
(res + r)->start = (oh->mpu_irqs + i)->irq;
|
(res + r)->start = irq;
|
||||||
(res + r)->end = (oh->mpu_irqs + i)->irq;
|
(res + r)->end = irq;
|
||||||
(res + r)->flags = IORESOURCE_IRQ;
|
(res + r)->flags = IORESOURCE_IRQ;
|
||||||
r++;
|
r++;
|
||||||
}
|
}
|
||||||
|
@ -676,6 +676,7 @@ struct omap_hwmod {
|
|||||||
spinlock_t _lock;
|
spinlock_t _lock;
|
||||||
struct list_head node;
|
struct list_head node;
|
||||||
struct omap_hwmod_ocp_if *_mpu_port;
|
struct omap_hwmod_ocp_if *_mpu_port;
|
||||||
|
unsigned int (*xlate_irq)(unsigned int);
|
||||||
u16 flags;
|
u16 flags;
|
||||||
u8 mpu_rt_idx;
|
u8 mpu_rt_idx;
|
||||||
u8 response_lat;
|
u8 response_lat;
|
||||||
|
@ -479,6 +479,7 @@ static struct omap_hwmod omap44xx_dma_system_hwmod = {
|
|||||||
.class = &omap44xx_dma_hwmod_class,
|
.class = &omap44xx_dma_hwmod_class,
|
||||||
.clkdm_name = "l3_dma_clkdm",
|
.clkdm_name = "l3_dma_clkdm",
|
||||||
.mpu_irqs = omap44xx_dma_system_irqs,
|
.mpu_irqs = omap44xx_dma_system_irqs,
|
||||||
|
.xlate_irq = omap4_xlate_irq,
|
||||||
.main_clk = "l3_div_ck",
|
.main_clk = "l3_div_ck",
|
||||||
.prcm = {
|
.prcm = {
|
||||||
.omap4 = {
|
.omap4 = {
|
||||||
@ -640,6 +641,7 @@ static struct omap_hwmod omap44xx_dss_dispc_hwmod = {
|
|||||||
.class = &omap44xx_dispc_hwmod_class,
|
.class = &omap44xx_dispc_hwmod_class,
|
||||||
.clkdm_name = "l3_dss_clkdm",
|
.clkdm_name = "l3_dss_clkdm",
|
||||||
.mpu_irqs = omap44xx_dss_dispc_irqs,
|
.mpu_irqs = omap44xx_dss_dispc_irqs,
|
||||||
|
.xlate_irq = omap4_xlate_irq,
|
||||||
.sdma_reqs = omap44xx_dss_dispc_sdma_reqs,
|
.sdma_reqs = omap44xx_dss_dispc_sdma_reqs,
|
||||||
.main_clk = "dss_dss_clk",
|
.main_clk = "dss_dss_clk",
|
||||||
.prcm = {
|
.prcm = {
|
||||||
@ -693,6 +695,7 @@ static struct omap_hwmod omap44xx_dss_dsi1_hwmod = {
|
|||||||
.class = &omap44xx_dsi_hwmod_class,
|
.class = &omap44xx_dsi_hwmod_class,
|
||||||
.clkdm_name = "l3_dss_clkdm",
|
.clkdm_name = "l3_dss_clkdm",
|
||||||
.mpu_irqs = omap44xx_dss_dsi1_irqs,
|
.mpu_irqs = omap44xx_dss_dsi1_irqs,
|
||||||
|
.xlate_irq = omap4_xlate_irq,
|
||||||
.sdma_reqs = omap44xx_dss_dsi1_sdma_reqs,
|
.sdma_reqs = omap44xx_dss_dsi1_sdma_reqs,
|
||||||
.main_clk = "dss_dss_clk",
|
.main_clk = "dss_dss_clk",
|
||||||
.prcm = {
|
.prcm = {
|
||||||
@ -726,6 +729,7 @@ static struct omap_hwmod omap44xx_dss_dsi2_hwmod = {
|
|||||||
.class = &omap44xx_dsi_hwmod_class,
|
.class = &omap44xx_dsi_hwmod_class,
|
||||||
.clkdm_name = "l3_dss_clkdm",
|
.clkdm_name = "l3_dss_clkdm",
|
||||||
.mpu_irqs = omap44xx_dss_dsi2_irqs,
|
.mpu_irqs = omap44xx_dss_dsi2_irqs,
|
||||||
|
.xlate_irq = omap4_xlate_irq,
|
||||||
.sdma_reqs = omap44xx_dss_dsi2_sdma_reqs,
|
.sdma_reqs = omap44xx_dss_dsi2_sdma_reqs,
|
||||||
.main_clk = "dss_dss_clk",
|
.main_clk = "dss_dss_clk",
|
||||||
.prcm = {
|
.prcm = {
|
||||||
@ -784,6 +788,7 @@ static struct omap_hwmod omap44xx_dss_hdmi_hwmod = {
|
|||||||
*/
|
*/
|
||||||
.flags = HWMOD_SWSUP_SIDLE,
|
.flags = HWMOD_SWSUP_SIDLE,
|
||||||
.mpu_irqs = omap44xx_dss_hdmi_irqs,
|
.mpu_irqs = omap44xx_dss_hdmi_irqs,
|
||||||
|
.xlate_irq = omap4_xlate_irq,
|
||||||
.sdma_reqs = omap44xx_dss_hdmi_sdma_reqs,
|
.sdma_reqs = omap44xx_dss_hdmi_sdma_reqs,
|
||||||
.main_clk = "dss_48mhz_clk",
|
.main_clk = "dss_48mhz_clk",
|
||||||
.prcm = {
|
.prcm = {
|
||||||
|
@ -288,6 +288,7 @@ static struct omap_hwmod omap54xx_dma_system_hwmod = {
|
|||||||
.class = &omap54xx_dma_hwmod_class,
|
.class = &omap54xx_dma_hwmod_class,
|
||||||
.clkdm_name = "dma_clkdm",
|
.clkdm_name = "dma_clkdm",
|
||||||
.mpu_irqs = omap54xx_dma_system_irqs,
|
.mpu_irqs = omap54xx_dma_system_irqs,
|
||||||
|
.xlate_irq = omap4_xlate_irq,
|
||||||
.main_clk = "l3_iclk_div",
|
.main_clk = "l3_iclk_div",
|
||||||
.prcm = {
|
.prcm = {
|
||||||
.omap4 = {
|
.omap4 = {
|
||||||
|
@ -498,6 +498,7 @@ struct omap_prcm_irq_setup {
|
|||||||
u8 nr_irqs;
|
u8 nr_irqs;
|
||||||
const struct omap_prcm_irq *irqs;
|
const struct omap_prcm_irq *irqs;
|
||||||
int irq;
|
int irq;
|
||||||
|
unsigned int (*xlate_irq)(unsigned int);
|
||||||
void (*read_pending_irqs)(unsigned long *events);
|
void (*read_pending_irqs)(unsigned long *events);
|
||||||
void (*ocp_barrier)(void);
|
void (*ocp_barrier)(void);
|
||||||
void (*save_and_clear_irqen)(u32 *saved_mask);
|
void (*save_and_clear_irqen)(u32 *saved_mask);
|
||||||
|
@ -49,6 +49,7 @@ static struct omap_prcm_irq_setup omap4_prcm_irq_setup = {
|
|||||||
.irqs = omap4_prcm_irqs,
|
.irqs = omap4_prcm_irqs,
|
||||||
.nr_irqs = ARRAY_SIZE(omap4_prcm_irqs),
|
.nr_irqs = ARRAY_SIZE(omap4_prcm_irqs),
|
||||||
.irq = 11 + OMAP44XX_IRQ_GIC_START,
|
.irq = 11 + OMAP44XX_IRQ_GIC_START,
|
||||||
|
.xlate_irq = omap4_xlate_irq,
|
||||||
.read_pending_irqs = &omap44xx_prm_read_pending_irqs,
|
.read_pending_irqs = &omap44xx_prm_read_pending_irqs,
|
||||||
.ocp_barrier = &omap44xx_prm_ocp_barrier,
|
.ocp_barrier = &omap44xx_prm_ocp_barrier,
|
||||||
.save_and_clear_irqen = &omap44xx_prm_save_and_clear_irqen,
|
.save_and_clear_irqen = &omap44xx_prm_save_and_clear_irqen,
|
||||||
@ -751,8 +752,10 @@ static int omap44xx_prm_late_init(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Once OMAP4 DT is filled as well */
|
/* Once OMAP4 DT is filled as well */
|
||||||
if (irq_num >= 0)
|
if (irq_num >= 0) {
|
||||||
omap4_prcm_irq_setup.irq = irq_num;
|
omap4_prcm_irq_setup.irq = irq_num;
|
||||||
|
omap4_prcm_irq_setup.xlate_irq = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
omap44xx_prm_enable_io_wakeup();
|
omap44xx_prm_enable_io_wakeup();
|
||||||
|
@ -187,6 +187,7 @@ int omap_prcm_event_to_irq(const char *name)
|
|||||||
*/
|
*/
|
||||||
void omap_prcm_irq_cleanup(void)
|
void omap_prcm_irq_cleanup(void)
|
||||||
{
|
{
|
||||||
|
unsigned int irq;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (!prcm_irq_setup) {
|
if (!prcm_irq_setup) {
|
||||||
@ -211,7 +212,11 @@ void omap_prcm_irq_cleanup(void)
|
|||||||
kfree(prcm_irq_setup->priority_mask);
|
kfree(prcm_irq_setup->priority_mask);
|
||||||
prcm_irq_setup->priority_mask = NULL;
|
prcm_irq_setup->priority_mask = NULL;
|
||||||
|
|
||||||
irq_set_chained_handler(prcm_irq_setup->irq, NULL);
|
if (prcm_irq_setup->xlate_irq)
|
||||||
|
irq = prcm_irq_setup->xlate_irq(prcm_irq_setup->irq);
|
||||||
|
else
|
||||||
|
irq = prcm_irq_setup->irq;
|
||||||
|
irq_set_chained_handler(irq, NULL);
|
||||||
|
|
||||||
if (prcm_irq_setup->base_irq > 0)
|
if (prcm_irq_setup->base_irq > 0)
|
||||||
irq_free_descs(prcm_irq_setup->base_irq,
|
irq_free_descs(prcm_irq_setup->base_irq,
|
||||||
@ -259,6 +264,7 @@ int omap_prcm_register_chain_handler(struct omap_prcm_irq_setup *irq_setup)
|
|||||||
int offset, i;
|
int offset, i;
|
||||||
struct irq_chip_generic *gc;
|
struct irq_chip_generic *gc;
|
||||||
struct irq_chip_type *ct;
|
struct irq_chip_type *ct;
|
||||||
|
unsigned int irq;
|
||||||
|
|
||||||
if (!irq_setup)
|
if (!irq_setup)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
@ -298,7 +304,11 @@ int omap_prcm_register_chain_handler(struct omap_prcm_irq_setup *irq_setup)
|
|||||||
1 << (offset & 0x1f);
|
1 << (offset & 0x1f);
|
||||||
}
|
}
|
||||||
|
|
||||||
irq_set_chained_handler(irq_setup->irq, omap_prcm_irq_handler);
|
if (irq_setup->xlate_irq)
|
||||||
|
irq = irq_setup->xlate_irq(irq_setup->irq);
|
||||||
|
else
|
||||||
|
irq = irq_setup->irq;
|
||||||
|
irq_set_chained_handler(irq, omap_prcm_irq_handler);
|
||||||
|
|
||||||
irq_setup->base_irq = irq_alloc_descs(-1, 0, irq_setup->nr_regs * 32,
|
irq_setup->base_irq = irq_alloc_descs(-1, 0, irq_setup->nr_regs * 32,
|
||||||
0);
|
0);
|
||||||
|
@ -54,6 +54,7 @@
|
|||||||
|
|
||||||
#include "soc.h"
|
#include "soc.h"
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
#include "control.h"
|
||||||
#include "powerdomain.h"
|
#include "powerdomain.h"
|
||||||
#include "omap-secure.h"
|
#include "omap-secure.h"
|
||||||
|
|
||||||
@ -496,7 +497,8 @@ static void __init realtime_counter_init(void)
|
|||||||
void __iomem *base;
|
void __iomem *base;
|
||||||
static struct clk *sys_clk;
|
static struct clk *sys_clk;
|
||||||
unsigned long rate;
|
unsigned long rate;
|
||||||
unsigned int reg, num, den;
|
unsigned int reg;
|
||||||
|
unsigned long long num, den;
|
||||||
|
|
||||||
base = ioremap(REALTIME_COUNTER_BASE, SZ_32);
|
base = ioremap(REALTIME_COUNTER_BASE, SZ_32);
|
||||||
if (!base) {
|
if (!base) {
|
||||||
@ -511,13 +513,42 @@ static void __init realtime_counter_init(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
rate = clk_get_rate(sys_clk);
|
rate = clk_get_rate(sys_clk);
|
||||||
|
|
||||||
|
if (soc_is_dra7xx()) {
|
||||||
|
/*
|
||||||
|
* Errata i856 says the 32.768KHz crystal does not start at
|
||||||
|
* power on, so the CPU falls back to an emulated 32KHz clock
|
||||||
|
* based on sysclk / 610 instead. This causes the master counter
|
||||||
|
* frequency to not be 6.144MHz but at sysclk / 610 * 375 / 2
|
||||||
|
* (OR sysclk * 75 / 244)
|
||||||
|
*
|
||||||
|
* This affects at least the DRA7/AM572x 1.0, 1.1 revisions.
|
||||||
|
* Of course any board built without a populated 32.768KHz
|
||||||
|
* crystal would also need this fix even if the CPU is fixed
|
||||||
|
* later.
|
||||||
|
*
|
||||||
|
* Either case can be detected by using the two speedselect bits
|
||||||
|
* If they are not 0, then the 32.768KHz clock driving the
|
||||||
|
* coarse counter that corrects the fine counter every time it
|
||||||
|
* ticks is actually rate/610 rather than 32.768KHz and we
|
||||||
|
* should compensate to avoid the 570ppm (at 20MHz, much worse
|
||||||
|
* at other rates) too fast system time.
|
||||||
|
*/
|
||||||
|
reg = omap_ctrl_readl(DRA7_CTRL_CORE_BOOTSTRAP);
|
||||||
|
if (reg & DRA7_SPEEDSELECT_MASK) {
|
||||||
|
num = 75;
|
||||||
|
den = 244;
|
||||||
|
goto sysclk1_based;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Numerator/denumerator values refer TRM Realtime Counter section */
|
/* Numerator/denumerator values refer TRM Realtime Counter section */
|
||||||
switch (rate) {
|
switch (rate) {
|
||||||
case 1200000:
|
case 12000000:
|
||||||
num = 64;
|
num = 64;
|
||||||
den = 125;
|
den = 125;
|
||||||
break;
|
break;
|
||||||
case 1300000:
|
case 13000000:
|
||||||
num = 768;
|
num = 768;
|
||||||
den = 1625;
|
den = 1625;
|
||||||
break;
|
break;
|
||||||
@ -529,11 +560,11 @@ static void __init realtime_counter_init(void)
|
|||||||
num = 192;
|
num = 192;
|
||||||
den = 625;
|
den = 625;
|
||||||
break;
|
break;
|
||||||
case 2600000:
|
case 26000000:
|
||||||
num = 384;
|
num = 384;
|
||||||
den = 1625;
|
den = 1625;
|
||||||
break;
|
break;
|
||||||
case 2700000:
|
case 27000000:
|
||||||
num = 256;
|
num = 256;
|
||||||
den = 1125;
|
den = 1125;
|
||||||
break;
|
break;
|
||||||
@ -545,6 +576,7 @@ static void __init realtime_counter_init(void)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sysclk1_based:
|
||||||
/* Program numerator and denumerator registers */
|
/* Program numerator and denumerator registers */
|
||||||
reg = readl_relaxed(base + INCREMENTER_NUMERATOR_OFFSET) &
|
reg = readl_relaxed(base + INCREMENTER_NUMERATOR_OFFSET) &
|
||||||
NUMERATOR_DENUMERATOR_MASK;
|
NUMERATOR_DENUMERATOR_MASK;
|
||||||
@ -556,7 +588,7 @@ static void __init realtime_counter_init(void)
|
|||||||
reg |= den;
|
reg |= den;
|
||||||
writel_relaxed(reg, base + INCREMENTER_DENUMERATOR_RELOAD_OFFSET);
|
writel_relaxed(reg, base + INCREMENTER_DENUMERATOR_RELOAD_OFFSET);
|
||||||
|
|
||||||
arch_timer_freq = (rate / den) * num;
|
arch_timer_freq = DIV_ROUND_UP_ULL(rate * num, den);
|
||||||
set_cntfreq();
|
set_cntfreq();
|
||||||
|
|
||||||
iounmap(base);
|
iounmap(base);
|
||||||
|
@ -66,19 +66,24 @@ void __init omap_pmic_init(int bus, u32 clkrate,
|
|||||||
omap_register_i2c_bus(bus, clkrate, &pmic_i2c_board_info, 1);
|
omap_register_i2c_bus(bus, clkrate, &pmic_i2c_board_info, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARCH_OMAP4
|
||||||
void __init omap4_pmic_init(const char *pmic_type,
|
void __init omap4_pmic_init(const char *pmic_type,
|
||||||
struct twl4030_platform_data *pmic_data,
|
struct twl4030_platform_data *pmic_data,
|
||||||
struct i2c_board_info *devices, int nr_devices)
|
struct i2c_board_info *devices, int nr_devices)
|
||||||
{
|
{
|
||||||
/* PMIC part*/
|
/* PMIC part*/
|
||||||
|
unsigned int irq;
|
||||||
|
|
||||||
omap_mux_init_signal("sys_nirq1", OMAP_PIN_INPUT_PULLUP | OMAP_PIN_OFF_WAKEUPENABLE);
|
omap_mux_init_signal("sys_nirq1", OMAP_PIN_INPUT_PULLUP | OMAP_PIN_OFF_WAKEUPENABLE);
|
||||||
omap_mux_init_signal("fref_clk0_out.sys_drm_msecure", OMAP_PIN_OUTPUT);
|
omap_mux_init_signal("fref_clk0_out.sys_drm_msecure", OMAP_PIN_OUTPUT);
|
||||||
omap_pmic_init(1, 400, pmic_type, 7 + OMAP44XX_IRQ_GIC_START, pmic_data);
|
irq = omap4_xlate_irq(7 + OMAP44XX_IRQ_GIC_START);
|
||||||
|
omap_pmic_init(1, 400, pmic_type, irq, pmic_data);
|
||||||
|
|
||||||
/* Register additional devices on i2c1 bus if needed */
|
/* Register additional devices on i2c1 bus if needed */
|
||||||
if (devices)
|
if (devices)
|
||||||
i2c_register_board_info(1, devices, nr_devices);
|
i2c_register_board_info(1, devices, nr_devices);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void __init omap_pmic_late_init(void)
|
void __init omap_pmic_late_init(void)
|
||||||
{
|
{
|
||||||
|
@ -19,11 +19,37 @@
|
|||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/of_platform.h>
|
#include <linux/of_platform.h>
|
||||||
#include <linux/irqchip.h>
|
#include <linux/irqchip.h>
|
||||||
|
#include <linux/clk-provider.h>
|
||||||
|
#include <linux/clocksource.h>
|
||||||
|
#include <linux/mfd/syscon.h>
|
||||||
|
#include <linux/regmap.h>
|
||||||
#include <asm/mach/arch.h>
|
#include <asm/mach/arch.h>
|
||||||
#include <asm/mach/map.h>
|
#include <asm/mach/map.h>
|
||||||
#include <asm/hardware/cache-l2x0.h>
|
#include <asm/hardware/cache-l2x0.h>
|
||||||
#include "core.h"
|
#include "core.h"
|
||||||
|
|
||||||
|
#define RK3288_GRF_SOC_CON0 0x244
|
||||||
|
|
||||||
|
static void __init rockchip_timer_init(void)
|
||||||
|
{
|
||||||
|
if (of_machine_is_compatible("rockchip,rk3288")) {
|
||||||
|
struct regmap *grf;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Disable auto jtag/sdmmc switching that causes issues
|
||||||
|
* with the mmc controllers making them unreliable
|
||||||
|
*/
|
||||||
|
grf = syscon_regmap_lookup_by_compatible("rockchip,rk3288-grf");
|
||||||
|
if (!IS_ERR(grf))
|
||||||
|
regmap_write(grf, RK3288_GRF_SOC_CON0, 0x10000000);
|
||||||
|
else
|
||||||
|
pr_err("rockchip: could not get grf syscon\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
of_clk_init(NULL);
|
||||||
|
clocksource_of_init();
|
||||||
|
}
|
||||||
|
|
||||||
static void __init rockchip_dt_init(void)
|
static void __init rockchip_dt_init(void)
|
||||||
{
|
{
|
||||||
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
|
of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
|
||||||
@ -42,6 +68,7 @@ static const char * const rockchip_board_dt_compat[] = {
|
|||||||
DT_MACHINE_START(ROCKCHIP_DT, "Rockchip Cortex-A9 (Device Tree)")
|
DT_MACHINE_START(ROCKCHIP_DT, "Rockchip Cortex-A9 (Device Tree)")
|
||||||
.l2c_aux_val = 0,
|
.l2c_aux_val = 0,
|
||||||
.l2c_aux_mask = ~0,
|
.l2c_aux_mask = ~0,
|
||||||
|
.init_time = rockchip_timer_init,
|
||||||
.dt_compat = rockchip_board_dt_compat,
|
.dt_compat = rockchip_board_dt_compat,
|
||||||
.init_machine = rockchip_dt_init,
|
.init_machine = rockchip_dt_init,
|
||||||
MACHINE_END
|
MACHINE_END
|
||||||
|
@ -800,7 +800,14 @@ void __init r8a7740_init_irq_of(void)
|
|||||||
void __iomem *intc_msk_base = ioremap_nocache(0xe6900040, 0x10);
|
void __iomem *intc_msk_base = ioremap_nocache(0xe6900040, 0x10);
|
||||||
void __iomem *pfc_inta_ctrl = ioremap_nocache(0xe605807c, 0x4);
|
void __iomem *pfc_inta_ctrl = ioremap_nocache(0xe605807c, 0x4);
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARCH_SHMOBILE_LEGACY
|
||||||
|
void __iomem *gic_dist_base = ioremap_nocache(0xc2800000, 0x1000);
|
||||||
|
void __iomem *gic_cpu_base = ioremap_nocache(0xc2000000, 0x1000);
|
||||||
|
|
||||||
|
gic_init(0, 29, gic_dist_base, gic_cpu_base);
|
||||||
|
#else
|
||||||
irqchip_init();
|
irqchip_init();
|
||||||
|
#endif
|
||||||
|
|
||||||
/* route signals to GIC */
|
/* route signals to GIC */
|
||||||
iowrite32(0x0, pfc_inta_ctrl);
|
iowrite32(0x0, pfc_inta_ctrl);
|
||||||
|
@ -576,11 +576,18 @@ void __init r8a7778_init_irq_extpin(int irlm)
|
|||||||
void __init r8a7778_init_irq_dt(void)
|
void __init r8a7778_init_irq_dt(void)
|
||||||
{
|
{
|
||||||
void __iomem *base = ioremap_nocache(0xfe700000, 0x00100000);
|
void __iomem *base = ioremap_nocache(0xfe700000, 0x00100000);
|
||||||
|
#ifdef CONFIG_ARCH_SHMOBILE_LEGACY
|
||||||
|
void __iomem *gic_dist_base = ioremap_nocache(0xfe438000, 0x1000);
|
||||||
|
void __iomem *gic_cpu_base = ioremap_nocache(0xfe430000, 0x1000);
|
||||||
|
#endif
|
||||||
|
|
||||||
BUG_ON(!base);
|
BUG_ON(!base);
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARCH_SHMOBILE_LEGACY
|
||||||
|
gic_init(0, 29, gic_dist_base, gic_cpu_base);
|
||||||
|
#else
|
||||||
irqchip_init();
|
irqchip_init();
|
||||||
|
#endif
|
||||||
/* route all interrupts to ARM */
|
/* route all interrupts to ARM */
|
||||||
__raw_writel(0x73ffffff, base + INT2NTSR0);
|
__raw_writel(0x73ffffff, base + INT2NTSR0);
|
||||||
__raw_writel(0xffffffff, base + INT2NTSR1);
|
__raw_writel(0xffffffff, base + INT2NTSR1);
|
||||||
|
@ -720,10 +720,17 @@ static int r8a7779_set_wake(struct irq_data *data, unsigned int on)
|
|||||||
|
|
||||||
void __init r8a7779_init_irq_dt(void)
|
void __init r8a7779_init_irq_dt(void)
|
||||||
{
|
{
|
||||||
|
#ifdef CONFIG_ARCH_SHMOBILE_LEGACY
|
||||||
|
void __iomem *gic_dist_base = ioremap_nocache(0xf0001000, 0x1000);
|
||||||
|
void __iomem *gic_cpu_base = ioremap_nocache(0xf0000100, 0x1000);
|
||||||
|
#endif
|
||||||
gic_arch_extn.irq_set_wake = r8a7779_set_wake;
|
gic_arch_extn.irq_set_wake = r8a7779_set_wake;
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARCH_SHMOBILE_LEGACY
|
||||||
|
gic_init(0, 29, gic_dist_base, gic_cpu_base);
|
||||||
|
#else
|
||||||
irqchip_init();
|
irqchip_init();
|
||||||
|
#endif
|
||||||
/* route all interrupts to ARM */
|
/* route all interrupts to ARM */
|
||||||
__raw_writel(0xffffffff, INT2NTSR0);
|
__raw_writel(0xffffffff, INT2NTSR0);
|
||||||
__raw_writel(0x3fffffff, INT2NTSR1);
|
__raw_writel(0x3fffffff, INT2NTSR1);
|
||||||
|
@ -595,6 +595,7 @@ static struct platform_device ipmmu_device = {
|
|||||||
|
|
||||||
static struct renesas_intc_irqpin_config irqpin0_platform_data = {
|
static struct renesas_intc_irqpin_config irqpin0_platform_data = {
|
||||||
.irq_base = irq_pin(0), /* IRQ0 -> IRQ7 */
|
.irq_base = irq_pin(0), /* IRQ0 -> IRQ7 */
|
||||||
|
.control_parent = true,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct resource irqpin0_resources[] = {
|
static struct resource irqpin0_resources[] = {
|
||||||
@ -656,6 +657,7 @@ static struct platform_device irqpin1_device = {
|
|||||||
|
|
||||||
static struct renesas_intc_irqpin_config irqpin2_platform_data = {
|
static struct renesas_intc_irqpin_config irqpin2_platform_data = {
|
||||||
.irq_base = irq_pin(16), /* IRQ16 -> IRQ23 */
|
.irq_base = irq_pin(16), /* IRQ16 -> IRQ23 */
|
||||||
|
.control_parent = true,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct resource irqpin2_resources[] = {
|
static struct resource irqpin2_resources[] = {
|
||||||
@ -686,6 +688,7 @@ static struct platform_device irqpin2_device = {
|
|||||||
|
|
||||||
static struct renesas_intc_irqpin_config irqpin3_platform_data = {
|
static struct renesas_intc_irqpin_config irqpin3_platform_data = {
|
||||||
.irq_base = irq_pin(24), /* IRQ24 -> IRQ31 */
|
.irq_base = irq_pin(24), /* IRQ24 -> IRQ31 */
|
||||||
|
.control_parent = true,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct resource irqpin3_resources[] = {
|
static struct resource irqpin3_resources[] = {
|
||||||
|
@ -220,9 +220,6 @@ static void note_page(struct pg_state *st, unsigned long addr, unsigned level, u
|
|||||||
static const char units[] = "KMGTPE";
|
static const char units[] = "KMGTPE";
|
||||||
u64 prot = val & pg_level[level].mask;
|
u64 prot = val & pg_level[level].mask;
|
||||||
|
|
||||||
if (addr < USER_PGTABLES_CEILING)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (!st->level) {
|
if (!st->level) {
|
||||||
st->level = level;
|
st->level = level;
|
||||||
st->current_prot = prot;
|
st->current_prot = prot;
|
||||||
@ -308,15 +305,13 @@ static void walk_pgd(struct seq_file *m)
|
|||||||
pgd_t *pgd = swapper_pg_dir;
|
pgd_t *pgd = swapper_pg_dir;
|
||||||
struct pg_state st;
|
struct pg_state st;
|
||||||
unsigned long addr;
|
unsigned long addr;
|
||||||
unsigned i, pgdoff = USER_PGTABLES_CEILING / PGDIR_SIZE;
|
unsigned i;
|
||||||
|
|
||||||
memset(&st, 0, sizeof(st));
|
memset(&st, 0, sizeof(st));
|
||||||
st.seq = m;
|
st.seq = m;
|
||||||
st.marker = address_markers;
|
st.marker = address_markers;
|
||||||
|
|
||||||
pgd += pgdoff;
|
for (i = 0; i < PTRS_PER_PGD; i++, pgd++) {
|
||||||
|
|
||||||
for (i = pgdoff; i < PTRS_PER_PGD; i++, pgd++) {
|
|
||||||
addr = i * PGDIR_SIZE;
|
addr = i * PGDIR_SIZE;
|
||||||
if (!pgd_none(*pgd)) {
|
if (!pgd_none(*pgd)) {
|
||||||
walk_pud(&st, pgd, addr);
|
walk_pud(&st, pgd, addr);
|
||||||
|
@ -658,8 +658,8 @@ static struct section_perm ro_perms[] = {
|
|||||||
.start = (unsigned long)_stext,
|
.start = (unsigned long)_stext,
|
||||||
.end = (unsigned long)__init_begin,
|
.end = (unsigned long)__init_begin,
|
||||||
#ifdef CONFIG_ARM_LPAE
|
#ifdef CONFIG_ARM_LPAE
|
||||||
.mask = ~PMD_SECT_RDONLY,
|
.mask = ~L_PMD_SECT_RDONLY,
|
||||||
.prot = PMD_SECT_RDONLY,
|
.prot = L_PMD_SECT_RDONLY,
|
||||||
#else
|
#else
|
||||||
.mask = ~(PMD_SECT_APX | PMD_SECT_AP_WRITE),
|
.mask = ~(PMD_SECT_APX | PMD_SECT_AP_WRITE),
|
||||||
.prot = PMD_SECT_APX | PMD_SECT_AP_WRITE,
|
.prot = PMD_SECT_APX | PMD_SECT_AP_WRITE,
|
||||||
|
@ -1329,8 +1329,8 @@ static void __init kmap_init(void)
|
|||||||
static void __init map_lowmem(void)
|
static void __init map_lowmem(void)
|
||||||
{
|
{
|
||||||
struct memblock_region *reg;
|
struct memblock_region *reg;
|
||||||
unsigned long kernel_x_start = round_down(__pa(_stext), SECTION_SIZE);
|
phys_addr_t kernel_x_start = round_down(__pa(_stext), SECTION_SIZE);
|
||||||
unsigned long kernel_x_end = round_up(__pa(__init_end), SECTION_SIZE);
|
phys_addr_t kernel_x_end = round_up(__pa(__init_end), SECTION_SIZE);
|
||||||
|
|
||||||
/* Map all the lowmem memory banks. */
|
/* Map all the lowmem memory banks. */
|
||||||
for_each_memblock(memory, reg) {
|
for_each_memblock(memory, reg) {
|
||||||
|
@ -85,6 +85,7 @@ vdso_install:
|
|||||||
# We use MRPROPER_FILES and CLEAN_FILES now
|
# We use MRPROPER_FILES and CLEAN_FILES now
|
||||||
archclean:
|
archclean:
|
||||||
$(Q)$(MAKE) $(clean)=$(boot)
|
$(Q)$(MAKE) $(clean)=$(boot)
|
||||||
|
$(Q)$(MAKE) $(clean)=$(boot)/dts
|
||||||
|
|
||||||
define archhelp
|
define archhelp
|
||||||
echo '* Image.gz - Compressed kernel image (arch/$(ARCH)/boot/Image.gz)'
|
echo '* Image.gz - Compressed kernel image (arch/$(ARCH)/boot/Image.gz)'
|
||||||
|
@ -3,6 +3,4 @@ dts-dirs += apm
|
|||||||
dts-dirs += arm
|
dts-dirs += arm
|
||||||
dts-dirs += cavium
|
dts-dirs += cavium
|
||||||
|
|
||||||
always := $(dtb-y)
|
|
||||||
subdir-y := $(dts-dirs)
|
subdir-y := $(dts-dirs)
|
||||||
clean-files := *.dtb
|
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
chosen {
|
chosen {
|
||||||
stdout-path = &soc_uart0;
|
stdout-path = "serial0:115200n8";
|
||||||
};
|
};
|
||||||
|
|
||||||
psci {
|
psci {
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
|
|
||||||
#include <asm/barrier.h>
|
#include <asm/barrier.h>
|
||||||
|
|
||||||
|
#include <linux/bug.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
|
||||||
|
@ -39,6 +39,7 @@ struct cpuinfo_arm64 {
|
|||||||
u64 reg_id_aa64pfr0;
|
u64 reg_id_aa64pfr0;
|
||||||
u64 reg_id_aa64pfr1;
|
u64 reg_id_aa64pfr1;
|
||||||
|
|
||||||
|
u32 reg_id_dfr0;
|
||||||
u32 reg_id_isar0;
|
u32 reg_id_isar0;
|
||||||
u32 reg_id_isar1;
|
u32 reg_id_isar1;
|
||||||
u32 reg_id_isar2;
|
u32 reg_id_isar2;
|
||||||
@ -51,6 +52,10 @@ struct cpuinfo_arm64 {
|
|||||||
u32 reg_id_mmfr3;
|
u32 reg_id_mmfr3;
|
||||||
u32 reg_id_pfr0;
|
u32 reg_id_pfr0;
|
||||||
u32 reg_id_pfr1;
|
u32 reg_id_pfr1;
|
||||||
|
|
||||||
|
u32 reg_mvfr0;
|
||||||
|
u32 reg_mvfr1;
|
||||||
|
u32 reg_mvfr2;
|
||||||
};
|
};
|
||||||
|
|
||||||
DECLARE_PER_CPU(struct cpuinfo_arm64, cpu_data);
|
DECLARE_PER_CPU(struct cpuinfo_arm64, cpu_data);
|
||||||
|
@ -41,6 +41,8 @@ void kvm_inject_pabt(struct kvm_vcpu *vcpu, unsigned long addr);
|
|||||||
static inline void vcpu_reset_hcr(struct kvm_vcpu *vcpu)
|
static inline void vcpu_reset_hcr(struct kvm_vcpu *vcpu)
|
||||||
{
|
{
|
||||||
vcpu->arch.hcr_el2 = HCR_GUEST_FLAGS;
|
vcpu->arch.hcr_el2 = HCR_GUEST_FLAGS;
|
||||||
|
if (test_bit(KVM_ARM_VCPU_EL1_32BIT, vcpu->arch.features))
|
||||||
|
vcpu->arch.hcr_el2 &= ~HCR_RW;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline unsigned long *vcpu_pc(const struct kvm_vcpu *vcpu)
|
static inline unsigned long *vcpu_pc(const struct kvm_vcpu *vcpu)
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
|
|
||||||
#include <asm/fpsimd.h>
|
#include <asm/fpsimd.h>
|
||||||
#include <asm/hw_breakpoint.h>
|
#include <asm/hw_breakpoint.h>
|
||||||
|
#include <asm/pgtable-hwdef.h>
|
||||||
#include <asm/ptrace.h>
|
#include <asm/ptrace.h>
|
||||||
#include <asm/types.h>
|
#include <asm/types.h>
|
||||||
|
|
||||||
@ -123,9 +124,6 @@ struct task_struct;
|
|||||||
/* Free all resources held by a thread. */
|
/* Free all resources held by a thread. */
|
||||||
extern void release_thread(struct task_struct *);
|
extern void release_thread(struct task_struct *);
|
||||||
|
|
||||||
/* Prepare to copy thread state - unlazy all lazy status */
|
|
||||||
#define prepare_to_copy(tsk) do { } while (0)
|
|
||||||
|
|
||||||
unsigned long get_wchan(struct task_struct *p);
|
unsigned long get_wchan(struct task_struct *p);
|
||||||
|
|
||||||
#define cpu_relax() barrier()
|
#define cpu_relax() barrier()
|
||||||
|
@ -44,7 +44,7 @@
|
|||||||
#define __ARM_NR_compat_cacheflush (__ARM_NR_COMPAT_BASE+2)
|
#define __ARM_NR_compat_cacheflush (__ARM_NR_COMPAT_BASE+2)
|
||||||
#define __ARM_NR_compat_set_tls (__ARM_NR_COMPAT_BASE+5)
|
#define __ARM_NR_compat_set_tls (__ARM_NR_COMPAT_BASE+5)
|
||||||
|
|
||||||
#define __NR_compat_syscalls 386
|
#define __NR_compat_syscalls 388
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define __ARCH_WANT_SYS_CLONE
|
#define __ARCH_WANT_SYS_CLONE
|
||||||
|
@ -795,3 +795,5 @@ __SYSCALL(__NR_getrandom, sys_getrandom)
|
|||||||
__SYSCALL(__NR_memfd_create, sys_memfd_create)
|
__SYSCALL(__NR_memfd_create, sys_memfd_create)
|
||||||
#define __NR_bpf 386
|
#define __NR_bpf 386
|
||||||
__SYSCALL(__NR_bpf, sys_bpf)
|
__SYSCALL(__NR_bpf, sys_bpf)
|
||||||
|
#define __NR_execveat 387
|
||||||
|
__SYSCALL(__NR_execveat, compat_sys_execveat)
|
||||||
|
@ -147,6 +147,7 @@ static void cpuinfo_sanity_check(struct cpuinfo_arm64 *cur)
|
|||||||
* If we have AArch32, we care about 32-bit features for compat. These
|
* If we have AArch32, we care about 32-bit features for compat. These
|
||||||
* registers should be RES0 otherwise.
|
* registers should be RES0 otherwise.
|
||||||
*/
|
*/
|
||||||
|
diff |= CHECK(id_dfr0, boot, cur, cpu);
|
||||||
diff |= CHECK(id_isar0, boot, cur, cpu);
|
diff |= CHECK(id_isar0, boot, cur, cpu);
|
||||||
diff |= CHECK(id_isar1, boot, cur, cpu);
|
diff |= CHECK(id_isar1, boot, cur, cpu);
|
||||||
diff |= CHECK(id_isar2, boot, cur, cpu);
|
diff |= CHECK(id_isar2, boot, cur, cpu);
|
||||||
@ -165,6 +166,10 @@ static void cpuinfo_sanity_check(struct cpuinfo_arm64 *cur)
|
|||||||
diff |= CHECK(id_pfr0, boot, cur, cpu);
|
diff |= CHECK(id_pfr0, boot, cur, cpu);
|
||||||
diff |= CHECK(id_pfr1, boot, cur, cpu);
|
diff |= CHECK(id_pfr1, boot, cur, cpu);
|
||||||
|
|
||||||
|
diff |= CHECK(mvfr0, boot, cur, cpu);
|
||||||
|
diff |= CHECK(mvfr1, boot, cur, cpu);
|
||||||
|
diff |= CHECK(mvfr2, boot, cur, cpu);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mismatched CPU features are a recipe for disaster. Don't even
|
* Mismatched CPU features are a recipe for disaster. Don't even
|
||||||
* pretend to support them.
|
* pretend to support them.
|
||||||
@ -189,6 +194,7 @@ static void __cpuinfo_store_cpu(struct cpuinfo_arm64 *info)
|
|||||||
info->reg_id_aa64pfr0 = read_cpuid(ID_AA64PFR0_EL1);
|
info->reg_id_aa64pfr0 = read_cpuid(ID_AA64PFR0_EL1);
|
||||||
info->reg_id_aa64pfr1 = read_cpuid(ID_AA64PFR1_EL1);
|
info->reg_id_aa64pfr1 = read_cpuid(ID_AA64PFR1_EL1);
|
||||||
|
|
||||||
|
info->reg_id_dfr0 = read_cpuid(ID_DFR0_EL1);
|
||||||
info->reg_id_isar0 = read_cpuid(ID_ISAR0_EL1);
|
info->reg_id_isar0 = read_cpuid(ID_ISAR0_EL1);
|
||||||
info->reg_id_isar1 = read_cpuid(ID_ISAR1_EL1);
|
info->reg_id_isar1 = read_cpuid(ID_ISAR1_EL1);
|
||||||
info->reg_id_isar2 = read_cpuid(ID_ISAR2_EL1);
|
info->reg_id_isar2 = read_cpuid(ID_ISAR2_EL1);
|
||||||
@ -202,6 +208,10 @@ static void __cpuinfo_store_cpu(struct cpuinfo_arm64 *info)
|
|||||||
info->reg_id_pfr0 = read_cpuid(ID_PFR0_EL1);
|
info->reg_id_pfr0 = read_cpuid(ID_PFR0_EL1);
|
||||||
info->reg_id_pfr1 = read_cpuid(ID_PFR1_EL1);
|
info->reg_id_pfr1 = read_cpuid(ID_PFR1_EL1);
|
||||||
|
|
||||||
|
info->reg_mvfr0 = read_cpuid(MVFR0_EL1);
|
||||||
|
info->reg_mvfr1 = read_cpuid(MVFR1_EL1);
|
||||||
|
info->reg_mvfr2 = read_cpuid(MVFR2_EL1);
|
||||||
|
|
||||||
cpuinfo_detect_icache_policy(info);
|
cpuinfo_detect_icache_policy(info);
|
||||||
|
|
||||||
check_local_cpu_errata();
|
check_local_cpu_errata();
|
||||||
|
@ -326,6 +326,7 @@ void __init efi_idmap_init(void)
|
|||||||
|
|
||||||
/* boot time idmap_pg_dir is incomplete, so fill in missing parts */
|
/* boot time idmap_pg_dir is incomplete, so fill in missing parts */
|
||||||
efi_setup_idmap();
|
efi_setup_idmap();
|
||||||
|
early_memunmap(memmap.map, memmap.map_end - memmap.map);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __init remap_region(efi_memory_desc_t *md, void **new)
|
static int __init remap_region(efi_memory_desc_t *md, void **new)
|
||||||
@ -380,7 +381,6 @@ static int __init arm64_enter_virtual_mode(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
mapsize = memmap.map_end - memmap.map;
|
mapsize = memmap.map_end - memmap.map;
|
||||||
early_memunmap(memmap.map, mapsize);
|
|
||||||
|
|
||||||
if (efi_runtime_disabled()) {
|
if (efi_runtime_disabled()) {
|
||||||
pr_info("EFI runtime services will be disabled.\n");
|
pr_info("EFI runtime services will be disabled.\n");
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
#include <linux/moduleloader.h>
|
#include <linux/moduleloader.h>
|
||||||
#include <linux/vmalloc.h>
|
#include <linux/vmalloc.h>
|
||||||
|
#include <asm/alternative.h>
|
||||||
#include <asm/insn.h>
|
#include <asm/insn.h>
|
||||||
#include <asm/sections.h>
|
#include <asm/sections.h>
|
||||||
|
|
||||||
|
@ -50,3 +50,11 @@ u64 perf_reg_abi(struct task_struct *task)
|
|||||||
else
|
else
|
||||||
return PERF_SAMPLE_REGS_ABI_64;
|
return PERF_SAMPLE_REGS_ABI_64;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void perf_get_regs_user(struct perf_regs *regs_user,
|
||||||
|
struct pt_regs *regs,
|
||||||
|
struct pt_regs *regs_user_copy)
|
||||||
|
{
|
||||||
|
regs_user->regs = task_pt_regs(current);
|
||||||
|
regs_user->abi = perf_reg_abi(current);
|
||||||
|
}
|
||||||
|
@ -402,6 +402,7 @@ void __init setup_arch(char **cmdline_p)
|
|||||||
request_standard_resources();
|
request_standard_resources();
|
||||||
|
|
||||||
efi_idmap_init();
|
efi_idmap_init();
|
||||||
|
early_ioremap_reset();
|
||||||
|
|
||||||
unflatten_device_tree();
|
unflatten_device_tree();
|
||||||
|
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#include <asm/cacheflush.h>
|
#include <asm/cacheflush.h>
|
||||||
#include <asm/cpu_ops.h>
|
#include <asm/cpu_ops.h>
|
||||||
#include <asm/cputype.h>
|
#include <asm/cputype.h>
|
||||||
|
#include <asm/io.h>
|
||||||
#include <asm/smp_plat.h>
|
#include <asm/smp_plat.h>
|
||||||
|
|
||||||
extern void secondary_holding_pen(void);
|
extern void secondary_holding_pen(void);
|
||||||
|
@ -1014,6 +1014,7 @@ ENTRY(__kvm_tlb_flush_vmid_ipa)
|
|||||||
* Instead, we invalidate Stage-2 for this IPA, and the
|
* Instead, we invalidate Stage-2 for this IPA, and the
|
||||||
* whole of Stage-1. Weep...
|
* whole of Stage-1. Weep...
|
||||||
*/
|
*/
|
||||||
|
lsr x1, x1, #12
|
||||||
tlbi ipas2e1is, x1
|
tlbi ipas2e1is, x1
|
||||||
/*
|
/*
|
||||||
* We have to ensure completion of the invalidation at Stage-2,
|
* We have to ensure completion of the invalidation at Stage-2,
|
||||||
|
@ -90,7 +90,6 @@ int kvm_reset_vcpu(struct kvm_vcpu *vcpu)
|
|||||||
if (!cpu_has_32bit_el1())
|
if (!cpu_has_32bit_el1())
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
cpu_reset = &default_regs_reset32;
|
cpu_reset = &default_regs_reset32;
|
||||||
vcpu->arch.hcr_el2 &= ~HCR_RW;
|
|
||||||
} else {
|
} else {
|
||||||
cpu_reset = &default_regs_reset;
|
cpu_reset = &default_regs_reset;
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
*/
|
*/
|
||||||
#include <linux/debugfs.h>
|
#include <linux/debugfs.h>
|
||||||
#include <linux/fs.h>
|
#include <linux/fs.h>
|
||||||
|
#include <linux/io.h>
|
||||||
#include <linux/mm.h>
|
#include <linux/mm.h>
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
#include <linux/seq_file.h>
|
#include <linux/seq_file.h>
|
||||||
|
@ -335,14 +335,8 @@ static int keep_initrd;
|
|||||||
|
|
||||||
void free_initrd_mem(unsigned long start, unsigned long end)
|
void free_initrd_mem(unsigned long start, unsigned long end)
|
||||||
{
|
{
|
||||||
if (!keep_initrd) {
|
if (!keep_initrd)
|
||||||
if (start == initrd_start)
|
|
||||||
start = round_down(start, PAGE_SIZE);
|
|
||||||
if (end == initrd_end)
|
|
||||||
end = round_up(end, PAGE_SIZE);
|
|
||||||
|
|
||||||
free_reserved_area((void *)start, (void *)end, 0, "initrd");
|
free_reserved_area((void *)start, (void *)end, 0, "initrd");
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __init keepinitrd_setup(char *__unused)
|
static int __init keepinitrd_setup(char *__unused)
|
||||||
|
@ -19,12 +19,10 @@
|
|||||||
#include <linux/moduleloader.h>
|
#include <linux/moduleloader.h>
|
||||||
#include <linux/vmalloc.h>
|
#include <linux/vmalloc.h>
|
||||||
|
|
||||||
void module_free(struct module *mod, void *module_region)
|
void module_arch_freeing_init(struct module *mod)
|
||||||
{
|
{
|
||||||
vfree(mod->arch.syminfo);
|
vfree(mod->arch.syminfo);
|
||||||
mod->arch.syminfo = NULL;
|
mod->arch.syminfo = NULL;
|
||||||
|
|
||||||
vfree(module_region);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int check_rela(Elf32_Rela *rela, struct module *module,
|
static inline int check_rela(Elf32_Rela *rela, struct module *module,
|
||||||
@ -291,12 +289,3 @@ int apply_relocate_add(Elf32_Shdr *sechdrs, const char *strtab,
|
|||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int module_finalize(const Elf_Ehdr *hdr, const Elf_Shdr *sechdrs,
|
|
||||||
struct module *module)
|
|
||||||
{
|
|
||||||
vfree(module->arch.syminfo);
|
|
||||||
module->arch.syminfo = NULL;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/device.h>
|
#include <linux/device.h>
|
||||||
|
#include <linux/delay.h>
|
||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
#include <linux/mtd/mtd.h>
|
#include <linux/mtd/mtd.h>
|
||||||
#include <linux/mtd/partitions.h>
|
#include <linux/mtd/partitions.h>
|
||||||
|
@ -604,7 +604,7 @@ static ssize_t __sync_serial_read(struct file *file,
|
|||||||
struct timespec *ts)
|
struct timespec *ts)
|
||||||
{
|
{
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
int dev = MINOR(file->f_dentry->d_inode->i_rdev);
|
int dev = MINOR(file_inode(file)->i_rdev);
|
||||||
int avail;
|
int avail;
|
||||||
struct sync_port *port;
|
struct sync_port *port;
|
||||||
unsigned char *start;
|
unsigned char *start;
|
||||||
|
@ -36,7 +36,7 @@ void *module_alloc(unsigned long size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Free memory returned from module_alloc */
|
/* Free memory returned from module_alloc */
|
||||||
void module_free(struct module *mod, void *module_region)
|
void module_memfree(void *module_region)
|
||||||
{
|
{
|
||||||
kfree(module_region);
|
kfree(module_region);
|
||||||
}
|
}
|
||||||
|
@ -94,7 +94,7 @@ static void __init pcibios_allocate_bus_resources(struct list_head *bus_list)
|
|||||||
r = &dev->resource[idx];
|
r = &dev->resource[idx];
|
||||||
if (!r->start)
|
if (!r->start)
|
||||||
continue;
|
continue;
|
||||||
pci_claim_resource(dev, idx);
|
pci_claim_bridge_resource(dev, idx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pcibios_allocate_bus_resources(&bus->children);
|
pcibios_allocate_bus_resources(&bus->children);
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define NR_syscalls 318 /* length of syscall table */
|
#define NR_syscalls 319 /* length of syscall table */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The following defines stop scripts/checksyscalls.sh from complaining about
|
* The following defines stop scripts/checksyscalls.sh from complaining about
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user