mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-12 13:55:32 +00:00
Merge branches 'sh/urgent' and 'sh/platform-updates' into sh-latest
This commit is contained in:
commit
c40e0fa51c
961 changed files with 29264 additions and 10041 deletions
|
@ -50,7 +50,9 @@
|
|||
|
||||
<sect1><title>Delaying, scheduling, and timer routines</title>
|
||||
!Iinclude/linux/sched.h
|
||||
!Ekernel/sched.c
|
||||
!Ekernel/sched/core.c
|
||||
!Ikernel/sched/cpupri.c
|
||||
!Ikernel/sched/fair.c
|
||||
!Iinclude/linux/completion.h
|
||||
!Ekernel/timer.c
|
||||
</sect1>
|
||||
|
@ -216,7 +218,6 @@ X!Isound/sound_firmware.c
|
|||
|
||||
<chapter id="uart16x50">
|
||||
<title>16x50 UART Driver</title>
|
||||
!Iinclude/linux/serial_core.h
|
||||
!Edrivers/tty/serial/serial_core.c
|
||||
!Edrivers/tty/serial/8250.c
|
||||
</chapter>
|
||||
|
|
|
@ -317,7 +317,7 @@ CPU B: spin_unlock_irqrestore(&dev_lock, flags)
|
|||
<chapter id="pubfunctions">
|
||||
<title>Public Functions Provided</title>
|
||||
!Iarch/x86/include/asm/io.h
|
||||
!Elib/iomap.c
|
||||
!Elib/pci_iomap.c
|
||||
</chapter>
|
||||
|
||||
</book>
|
||||
|
|
|
@ -163,14 +163,16 @@ get/set up to 64 properties. The actual meaning of each property is described on
|
|||
<section id="DTV-FREQUENCY">
|
||||
<title><constant>DTV_FREQUENCY</constant></title>
|
||||
|
||||
<para>Central frequency of the channel, in HZ.</para>
|
||||
<para>Central frequency of the channel.</para>
|
||||
|
||||
<para>Notes:</para>
|
||||
<para>1)For ISDB-T, the channels are usually transmitted with an offset of 143kHz.
|
||||
<para>1)For satellital delivery systems, it is measured in kHz.
|
||||
For the other ones, it is measured in Hz.</para>
|
||||
<para>2)For ISDB-T, the channels are usually transmitted with an offset of 143kHz.
|
||||
E.g. a valid frequncy could be 474143 kHz. The stepping is bound to the bandwidth of
|
||||
the channel which is 6MHz.</para>
|
||||
|
||||
<para>2)As in ISDB-Tsb the channel consists of only one or three segments the
|
||||
<para>3)As in ISDB-Tsb the channel consists of only one or three segments the
|
||||
frequency step is 429kHz, 3*429 respectively. As for ISDB-T the
|
||||
central frequency of the channel is expected.</para>
|
||||
</section>
|
||||
|
@ -735,14 +737,10 @@ typedef enum fe_hierarchy {
|
|||
<listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-CODE-RATE-HP"><constant>DTV_CODE_RATE_HP</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-CODE-RATE-LP"><constant>DTV_CODE_RATE_LP</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-GUARD-INTERVAL"><constant>DTV_GUARD_INTERVAL</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-TRANSMISSION-MODE"><constant>DTV_TRANSMISSION_MODE</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-HIERARCHY"><constant>DTV_HIERARCHY</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-ISDBT-LAYER-ENABLED"><constant>DTV_ISDBT_LAYER_ENABLED</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-ISDBT-PARTIAL-RECEPTION"><constant>DTV_ISDBT_PARTIAL_RECEPTION</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-ISDBT-SOUND-BROADCASTING"><constant>DTV_ISDBT_SOUND_BROADCASTING</constant></link></para></listitem>
|
||||
|
|
|
@ -183,7 +183,12 @@ applications must set the array to zero.</entry>
|
|||
<entry>__u32</entry>
|
||||
<entry><structfield>ctrl_class</structfield></entry>
|
||||
<entry>The control class to which all controls belong, see
|
||||
<xref linkend="ctrl-class" />.</entry>
|
||||
<xref linkend="ctrl-class" />. Drivers that use a kernel framework for handling
|
||||
controls will also accept a value of 0 here, meaning that the controls can
|
||||
belong to any control class. Whether drivers support this can be tested by setting
|
||||
<structfield>ctrl_class</structfield> to 0 and calling <constant>VIDIOC_TRY_EXT_CTRLS</constant>
|
||||
with a <structfield>count</structfield> of 0. If that succeeds, then the driver
|
||||
supports this feature.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
|
@ -194,10 +199,13 @@ also be zero.</entry>
|
|||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>error_idx</structfield></entry>
|
||||
<entry>Set by the driver in case of an error. It is the
|
||||
index of the control causing the error or equal to 'count' when the
|
||||
error is not associated with a particular control. Undefined when the
|
||||
ioctl returns 0 (success).</entry>
|
||||
<entry>Set by the driver in case of an error. If it is equal
|
||||
to <structfield>count</structfield>, then no actual changes were made to
|
||||
controls. In other words, the error was not associated with setting a particular
|
||||
control. If it is another value, then only the controls up to <structfield>error_idx-1</structfield>
|
||||
were modified and control <structfield>error_idx</structfield> is the one that
|
||||
caused the error. The <structfield>error_idx</structfield> value is undefined
|
||||
if the ioctl returned 0 (success).</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
|
|
|
@ -364,15 +364,20 @@ capability and it is cleared otherwise.</entry>
|
|||
<row>
|
||||
<entry><constant>V4L2_FBUF_FLAG_OVERLAY</constant></entry>
|
||||
<entry>0x0002</entry>
|
||||
<entry>The frame buffer is an overlay surface the same
|
||||
size as the capture. [?]</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry spanname="hspan">The purpose of
|
||||
<constant>V4L2_FBUF_FLAG_OVERLAY</constant> was never quite clear.
|
||||
Most drivers seem to ignore this flag. For compatibility with the
|
||||
<wordasword>bttv</wordasword> driver applications should set the
|
||||
<constant>V4L2_FBUF_FLAG_OVERLAY</constant> flag.</entry>
|
||||
<entry>If this flag is set for a video capture device, then the
|
||||
driver will set the initial overlay size to cover the full framebuffer size,
|
||||
otherwise the existing overlay size (as set by &VIDIOC-S-FMT;) will be used.
|
||||
|
||||
Only one video capture driver (bttv) supports this flag. The use of this flag
|
||||
for capture devices is deprecated. There is no way to detect which drivers
|
||||
support this flag, so the only reliable method of setting the overlay size is
|
||||
through &VIDIOC-S-FMT;.
|
||||
|
||||
If this flag is set for a video output device, then the video output overlay
|
||||
window is relative to the top-left corner of the framebuffer and restricted
|
||||
to the size of the framebuffer. If it is cleared, then the video output
|
||||
overlay window is relative to the video output display.
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_FBUF_FLAG_CHROMAKEY</constant></entry>
|
||||
|
|
|
@ -98,8 +98,11 @@ the &v4l2-output; <structfield>modulator</structfield> field and the
|
|||
<entry>&v4l2-tuner-type;</entry>
|
||||
<entry><structfield>type</structfield></entry>
|
||||
<entry>The tuner type. This is the same value as in the
|
||||
&v4l2-tuner; <structfield>type</structfield> field. The field is not
|
||||
applicable to modulators, &ie; ignored by drivers.</entry>
|
||||
&v4l2-tuner; <structfield>type</structfield> field. The type must be set
|
||||
to <constant>V4L2_TUNER_RADIO</constant> for <filename>/dev/radioX</filename>
|
||||
device nodes, and to <constant>V4L2_TUNER_ANALOG_TV</constant>
|
||||
for all others. The field is not applicable to modulators, &ie; ignored
|
||||
by drivers.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
|
|
|
@ -61,8 +61,8 @@ desired input in an integer and call the
|
|||
<constant>VIDIOC_S_INPUT</constant> ioctl with a pointer to this
|
||||
integer. Side effects are possible. For example inputs may support
|
||||
different video standards, so the driver may implicitly switch the
|
||||
current standard. It is good practice to select an input before
|
||||
querying or negotiating any other parameters.</para>
|
||||
current standard. Because of these possible side effects applications
|
||||
must select an input before querying or negotiating any other parameters.</para>
|
||||
|
||||
<para>Information about video inputs is available using the
|
||||
&VIDIOC-ENUMINPUT; ioctl.</para>
|
||||
|
|
|
@ -61,8 +61,9 @@ desired output in an integer and call the
|
|||
<constant>VIDIOC_S_OUTPUT</constant> ioctl with a pointer to this integer.
|
||||
Side effects are possible. For example outputs may support different
|
||||
video standards, so the driver may implicitly switch the current
|
||||
standard. It is good practice to select an output before querying or
|
||||
negotiating any other parameters.</para>
|
||||
standard.
|
||||
standard. Because of these possible side effects applications
|
||||
must select an output before querying or negotiating any other parameters.</para>
|
||||
|
||||
<para>Information about video outputs is available using the
|
||||
&VIDIOC-ENUMOUTPUT; ioctl.</para>
|
||||
|
|
|
@ -47,20 +47,53 @@ directory apei/einj. The following files are provided.
|
|||
|
||||
- param1
|
||||
This file is used to set the first error parameter value. Effect of
|
||||
parameter depends on error_type specified. For memory error, this is
|
||||
physical memory address. Only available if param_extension module
|
||||
parameter is specified.
|
||||
parameter depends on error_type specified.
|
||||
|
||||
- param2
|
||||
This file is used to set the second error parameter value. Effect of
|
||||
parameter depends on error_type specified. For memory error, this is
|
||||
physical memory address mask. Only available if param_extension
|
||||
module parameter is specified.
|
||||
parameter depends on error_type specified.
|
||||
|
||||
BIOS versions based in the ACPI 4.0 specification have limited options
|
||||
to control where the errors are injected. Your BIOS may support an
|
||||
extension (enabled with the param_extension=1 module parameter, or
|
||||
boot command line einj.param_extension=1). This allows the address
|
||||
and mask for memory injections to be specified by the param1 and
|
||||
param2 files in apei/einj.
|
||||
|
||||
BIOS versions using the ACPI 5.0 specification have more control over
|
||||
the target of the injection. For processor related errors (type 0x1,
|
||||
0x2 and 0x4) the APICID of the target should be provided using the
|
||||
param1 file in apei/einj. For memory errors (type 0x8, 0x10 and 0x20)
|
||||
the address is set using param1 with a mask in param2 (0x0 is equivalent
|
||||
to all ones). For PCI express errors (type 0x40, 0x80 and 0x100) the
|
||||
segment, bus, device and function are specified using param1:
|
||||
|
||||
31 24 23 16 15 11 10 8 7 0
|
||||
+-------------------------------------------------+
|
||||
| segment | bus | device | function | reserved |
|
||||
+-------------------------------------------------+
|
||||
|
||||
An ACPI 5.0 BIOS may also allow vendor specific errors to be injected.
|
||||
In this case a file named vendor will contain identifying information
|
||||
from the BIOS that hopefully will allow an application wishing to use
|
||||
the vendor specific extension to tell that they are running on a BIOS
|
||||
that supports it. All vendor extensions have the 0x80000000 bit set in
|
||||
error_type. A file vendor_flags controls the interpretation of param1
|
||||
and param2 (1 = PROCESSOR, 2 = MEMORY, 4 = PCI). See your BIOS vendor
|
||||
documentation for details (and expect changes to this API if vendors
|
||||
creativity in using this feature expands beyond our expectations).
|
||||
|
||||
Example:
|
||||
# cd /sys/kernel/debug/apei/einj
|
||||
# cat available_error_type # See which errors can be injected
|
||||
0x00000002 Processor Uncorrectable non-fatal
|
||||
0x00000008 Memory Correctable
|
||||
0x00000010 Memory Uncorrectable non-fatal
|
||||
# echo 0x12345000 > param1 # Set memory address for injection
|
||||
# echo 0xfffffffffffff000 > param2 # Mask - anywhere in this page
|
||||
# echo 0x8 > error_type # Choose correctable memory error
|
||||
# echo 1 > error_inject # Inject now
|
||||
|
||||
Injecting parameter support is a BIOS version specific extension, that
|
||||
is, it only works on some BIOS version. If you want to use it, please
|
||||
make sure your BIOS version has the proper support and specify
|
||||
"param_extension=y" in module parameter.
|
||||
|
||||
For more information about EINJ, please refer to ACPI specification
|
||||
version 4.0, section 17.5.
|
||||
version 4.0, section 17.5 and ACPI 5.0, section 18.6.
|
||||
|
|
|
@ -447,6 +447,9 @@ Your cooperation is appreciated.
|
|||
234 = /dev/btrfs-control Btrfs control device
|
||||
235 = /dev/autofs Autofs control device
|
||||
236 = /dev/mapper/control Device-Mapper control device
|
||||
237 = /dev/loop-control Loopback control device
|
||||
238 = /dev/vhost-net Host kernel accelerator for virtio net
|
||||
|
||||
240-254 Reserved for local use
|
||||
255 Reserved for MISC_DYNAMIC_MINOR
|
||||
|
||||
|
|
14
Documentation/devicetree/bindings/dma/atmel-dma.txt
Normal file
14
Documentation/devicetree/bindings/dma/atmel-dma.txt
Normal file
|
@ -0,0 +1,14 @@
|
|||
* Atmel Direct Memory Access Controller (DMA)
|
||||
|
||||
Required properties:
|
||||
- compatible: Should be "atmel,<chip>-dma"
|
||||
- reg: Should contain DMA registers location and length
|
||||
- interrupts: Should contain DMA interrupt
|
||||
|
||||
Examples:
|
||||
|
||||
dma@ffffec00 {
|
||||
compatible = "atmel,at91sam9g45-dma";
|
||||
reg = <0xffffec00 0x200>;
|
||||
interrupts = <21>;
|
||||
};
|
30
Documentation/devicetree/bindings/i2c/omap-i2c.txt
Normal file
30
Documentation/devicetree/bindings/i2c/omap-i2c.txt
Normal file
|
@ -0,0 +1,30 @@
|
|||
I2C for OMAP platforms
|
||||
|
||||
Required properties :
|
||||
- compatible : Must be "ti,omap3-i2c" or "ti,omap4-i2c"
|
||||
- ti,hwmods : Must be "i2c<n>", n being the instance number (1-based)
|
||||
- #address-cells = <1>;
|
||||
- #size-cells = <0>;
|
||||
|
||||
Recommended properties :
|
||||
- clock-frequency : Desired I2C bus clock frequency in Hz. Otherwise
|
||||
the default 100 kHz frequency will be used.
|
||||
|
||||
Optional properties:
|
||||
- Child nodes conforming to i2c bus binding
|
||||
|
||||
Note: Current implementation will fetch base address, irq and dma
|
||||
from omap hwmod data base during device registration.
|
||||
Future plan is to migrate hwmod data base contents into device tree
|
||||
blob so that, all the required data will be used from device tree dts
|
||||
file.
|
||||
|
||||
Examples :
|
||||
|
||||
i2c1: i2c@0 {
|
||||
compatible = "ti,omap3-i2c";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
ti,hwmods = "i2c1";
|
||||
clock-frequency = <400000>;
|
||||
};
|
|
@ -75,6 +75,10 @@ The slave DMA usage consists of following steps:
|
|||
slave_sg - DMA a list of scatter gather buffers from/to a peripheral
|
||||
dma_cyclic - Perform a cyclic DMA operation from/to a peripheral till the
|
||||
operation is explicitly stopped.
|
||||
interleaved_dma - This is common to Slave as well as M2M clients. For slave
|
||||
address of devices' fifo could be already known to the driver.
|
||||
Various types of operations could be expressed by setting
|
||||
appropriate values to the 'dma_interleaved_template' members.
|
||||
|
||||
A non-NULL return of this transfer API represents a "descriptor" for
|
||||
the given transaction.
|
||||
|
@ -89,6 +93,10 @@ The slave DMA usage consists of following steps:
|
|||
struct dma_chan *chan, dma_addr_t buf_addr, size_t buf_len,
|
||||
size_t period_len, enum dma_data_direction direction);
|
||||
|
||||
struct dma_async_tx_descriptor *(*device_prep_interleaved_dma)(
|
||||
struct dma_chan *chan, struct dma_interleaved_template *xt,
|
||||
unsigned long flags);
|
||||
|
||||
The peripheral driver is expected to have mapped the scatterlist for
|
||||
the DMA operation prior to calling device_prep_slave_sg, and must
|
||||
keep the scatterlist mapped until the DMA operation has completed.
|
||||
|
|
|
@ -439,17 +439,6 @@ Who: Jean Delvare <khali@linux-fr.org>
|
|||
|
||||
----------------------------
|
||||
|
||||
What: For VIDIOC_S_FREQUENCY the type field must match the device node's type.
|
||||
If not, return -EINVAL.
|
||||
When: 3.2
|
||||
Why: It makes no sense to switch the tuner to radio mode by calling
|
||||
VIDIOC_S_FREQUENCY on a video node, or to switch the tuner to tv mode by
|
||||
calling VIDIOC_S_FREQUENCY on a radio node. This is the first step of a
|
||||
move to more consistent handling of tv and radio tuners.
|
||||
Who: Hans Verkuil <hans.verkuil@cisco.com>
|
||||
|
||||
----------------------------
|
||||
|
||||
What: Opening a radio device node will no longer automatically switch the
|
||||
tuner mode from tv to radio.
|
||||
When: 3.3
|
||||
|
|
|
@ -149,6 +149,7 @@ Code Seq#(hex) Include File Comments
|
|||
'M' 01-03 drivers/scsi/megaraid/megaraid_sas.h
|
||||
'M' 00-0F drivers/video/fsl-diu-fb.h conflict!
|
||||
'N' 00-1F drivers/usb/scanner.h
|
||||
'N' 40-7F drivers/block/nvme.c
|
||||
'O' 00-06 mtd/ubi-user.h UBI
|
||||
'P' all linux/soundcard.h conflict!
|
||||
'P' 60-6F sound/sscape_ioctl.h conflict!
|
||||
|
|
|
@ -1059,6 +1059,11 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
|||
By default, super page will be supported if Intel IOMMU
|
||||
has the capability. With this option, super page will
|
||||
not be supported.
|
||||
|
||||
intel_idle.max_cstate= [KNL,HW,ACPI,X86]
|
||||
0 disables intel_idle and fall back on acpi_idle.
|
||||
1 to 6 specify maximum depth of C-state.
|
||||
|
||||
intremap= [X86-64, Intel-IOMMU]
|
||||
on enable Interrupt Remapping (default)
|
||||
off disable Interrupt Remapping
|
||||
|
|
|
@ -15,7 +15,7 @@ test at least a couple of times in a row for confidence. [This is necessary,
|
|||
because some problems only show up on a second attempt at suspending and
|
||||
resuming the system.] Moreover, hibernating in the "reboot" and "shutdown"
|
||||
modes causes the PM core to skip some platform-related callbacks which on ACPI
|
||||
systems might be necessary to make hibernation work. Thus, if you machine fails
|
||||
systems might be necessary to make hibernation work. Thus, if your machine fails
|
||||
to hibernate or resume in the "reboot" mode, you should try the "platform" mode:
|
||||
|
||||
# echo platform > /sys/power/disk
|
||||
|
|
|
@ -120,10 +120,10 @@ So in practice, the 'at all' may become a 'why freeze kernel threads?' and
|
|||
freezing user threads I don't find really objectionable."
|
||||
|
||||
Still, there are kernel threads that may want to be freezable. For example, if
|
||||
a kernel that belongs to a device driver accesses the device directly, it in
|
||||
principle needs to know when the device is suspended, so that it doesn't try to
|
||||
access it at that time. However, if the kernel thread is freezable, it will be
|
||||
frozen before the driver's .suspend() callback is executed and it will be
|
||||
a kernel thread that belongs to a device driver accesses the device directly, it
|
||||
in principle needs to know when the device is suspended, so that it doesn't try
|
||||
to access it at that time. However, if the kernel thread is freezable, it will
|
||||
be frozen before the driver's .suspend() callback is executed and it will be
|
||||
thawed after the driver's .resume() callback has run, so it won't be accessing
|
||||
the device while it's suspended.
|
||||
|
||||
|
|
|
@ -1,3 +1,13 @@
|
|||
Release Date : Fri. Jan 6, 2012 17:00:00 PST 2010 -
|
||||
(emaild-id:megaraidlinux@lsi.com)
|
||||
Adam Radford
|
||||
Current Version : 00.00.06.14-rc1
|
||||
Old Version : 00.00.06.12-rc1
|
||||
1. Fix reglockFlags for degraded raid5/6 for MR 9360/9380.
|
||||
2. Mask off flags in ioctl path to prevent memory scribble with older
|
||||
MegaCLI versions.
|
||||
3. Remove poll_mode_io module paramater, sysfs node, and associated code.
|
||||
-------------------------------------------------------------------------------
|
||||
Release Date : Wed. Oct 5, 2011 17:00:00 PST 2010 -
|
||||
(emaild-id:megaraidlinux@lsi.com)
|
||||
Adam Radford
|
||||
|
|
|
@ -1,32 +1,11 @@
|
|||
Copyright (c) 2003-2011 QLogic Corporation
|
||||
QLogic Linux iSCSI HBA Driver
|
||||
QLogic Linux iSCSI Driver
|
||||
|
||||
This program includes a device driver for Linux 3.x.
|
||||
You may modify and redistribute the device driver code under the
|
||||
GNU General Public License (a copy of which is attached hereto as
|
||||
Exhibit A) published by the Free Software Foundation (version 2).
|
||||
|
||||
REGARDLESS OF WHAT LICENSING MECHANISM IS USED OR APPLICABLE,
|
||||
THIS PROGRAM IS PROVIDED BY QLOGIC CORPORATION "AS IS'' AND ANY
|
||||
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
|
||||
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
||||
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
USER ACKNOWLEDGES AND AGREES THAT USE OF THIS PROGRAM WILL NOT
|
||||
CREATE OR GIVE GROUNDS FOR A LICENSE BY IMPLICATION, ESTOPPEL, OR
|
||||
OTHERWISE IN ANY INTELLECTUAL PROPERTY RIGHTS (PATENT, COPYRIGHT,
|
||||
TRADE SECRET, MASK WORK, OR OTHER PROPRIETARY RIGHT) EMBODIED IN
|
||||
ANY OTHER QLOGIC HARDWARE OR SOFTWARE EITHER SOLELY OR IN
|
||||
COMBINATION WITH THIS PROGRAM.
|
||||
|
||||
|
||||
EXHIBIT A
|
||||
|
||||
|
|
|
@ -230,14 +230,9 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name):
|
|||
buf += "#include <linux/ctype.h>\n"
|
||||
buf += "#include <asm/unaligned.h>\n\n"
|
||||
buf += "#include <target/target_core_base.h>\n"
|
||||
buf += "#include <target/target_core_transport.h>\n"
|
||||
buf += "#include <target/target_core_fabric_ops.h>\n"
|
||||
buf += "#include <target/target_core_fabric.h>\n"
|
||||
buf += "#include <target/target_core_fabric_configfs.h>\n"
|
||||
buf += "#include <target/target_core_fabric_lib.h>\n"
|
||||
buf += "#include <target/target_core_device.h>\n"
|
||||
buf += "#include <target/target_core_tpg.h>\n"
|
||||
buf += "#include <target/target_core_configfs.h>\n"
|
||||
buf += "#include <target/target_core_base.h>\n"
|
||||
buf += "#include <target/configfs_macros.h>\n\n"
|
||||
buf += "#include \"" + fabric_mod_name + "_base.h\"\n"
|
||||
buf += "#include \"" + fabric_mod_name + "_fabric.h\"\n\n"
|
||||
|
@ -260,7 +255,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name):
|
|||
buf += " /* " + fabric_mod_name + "_parse_wwn(name, &wwpn, 1) < 0)\n"
|
||||
buf += " return ERR_PTR(-EINVAL); */\n"
|
||||
buf += " se_nacl_new = " + fabric_mod_name + "_alloc_fabric_acl(se_tpg);\n"
|
||||
buf += " if (!(se_nacl_new))\n"
|
||||
buf += " if (!se_nacl_new)\n"
|
||||
buf += " return ERR_PTR(-ENOMEM);\n"
|
||||
buf += "//#warning FIXME: Hardcoded nexus depth in " + fabric_mod_name + "_make_nodeacl()\n"
|
||||
buf += " nexus_depth = 1;\n"
|
||||
|
@ -308,7 +303,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name):
|
|||
buf += " if (strict_strtoul(name + 5, 10, &tpgt) || tpgt > UINT_MAX)\n"
|
||||
buf += " return ERR_PTR(-EINVAL);\n\n"
|
||||
buf += " tpg = kzalloc(sizeof(struct " + fabric_mod_name + "_tpg), GFP_KERNEL);\n"
|
||||
buf += " if (!(tpg)) {\n"
|
||||
buf += " if (!tpg) {\n"
|
||||
buf += " printk(KERN_ERR \"Unable to allocate struct " + fabric_mod_name + "_tpg\");\n"
|
||||
buf += " return ERR_PTR(-ENOMEM);\n"
|
||||
buf += " }\n"
|
||||
|
@ -344,7 +339,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name):
|
|||
buf += " /* if (" + fabric_mod_name + "_parse_wwn(name, &wwpn, 1) < 0)\n"
|
||||
buf += " return ERR_PTR(-EINVAL); */\n\n"
|
||||
buf += " " + fabric_mod_port + " = kzalloc(sizeof(struct " + fabric_mod_name + "_" + fabric_mod_port + "), GFP_KERNEL);\n"
|
||||
buf += " if (!(" + fabric_mod_port + ")) {\n"
|
||||
buf += " if (!" + fabric_mod_port + ") {\n"
|
||||
buf += " printk(KERN_ERR \"Unable to allocate struct " + fabric_mod_name + "_" + fabric_mod_port + "\");\n"
|
||||
buf += " return ERR_PTR(-ENOMEM);\n"
|
||||
buf += " }\n"
|
||||
|
@ -352,7 +347,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name):
|
|||
if proto_ident == "FC" or proto_ident == "SAS":
|
||||
buf += " " + fabric_mod_port + "->" + fabric_mod_port + "_wwpn = wwpn;\n"
|
||||
|
||||
buf += " /* " + fabric_mod_name + "_format_wwn(&" + fabric_mod_port + "->" + fabric_mod_port + "_name[0], " + fabric_mod_name.upper() + "__NAMELEN, wwpn); */\n\n"
|
||||
buf += " /* " + fabric_mod_name + "_format_wwn(&" + fabric_mod_port + "->" + fabric_mod_port + "_name[0], " + fabric_mod_name.upper() + "_NAMELEN, wwpn); */\n\n"
|
||||
buf += " return &" + fabric_mod_port + "->" + fabric_mod_port + "_wwn;\n"
|
||||
buf += "}\n\n"
|
||||
buf += "static void " + fabric_mod_name + "_drop_" + fabric_mod_port + "(struct se_wwn *wwn)\n"
|
||||
|
@ -391,8 +386,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name):
|
|||
buf += " .tpg_alloc_fabric_acl = " + fabric_mod_name + "_alloc_fabric_acl,\n"
|
||||
buf += " .tpg_release_fabric_acl = " + fabric_mod_name + "_release_fabric_acl,\n"
|
||||
buf += " .tpg_get_inst_index = " + fabric_mod_name + "_tpg_get_inst_index,\n"
|
||||
buf += " .release_cmd_to_pool = " + fabric_mod_name + "_release_cmd,\n"
|
||||
buf += " .release_cmd_direct = " + 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 += " .close_session = " + fabric_mod_name + "_close_session,\n"
|
||||
buf += " .stop_session = " + fabric_mod_name + "_stop_session,\n"
|
||||
|
@ -405,14 +399,12 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name):
|
|||
buf += " .set_default_node_attributes = " + fabric_mod_name + "_set_default_node_attrs,\n"
|
||||
buf += " .get_task_tag = " + fabric_mod_name + "_get_task_tag,\n"
|
||||
buf += " .get_cmd_state = " + fabric_mod_name + "_get_cmd_state,\n"
|
||||
buf += " .new_cmd_failure = " + fabric_mod_name + "_new_cmd_failure,\n"
|
||||
buf += " .queue_data_in = " + fabric_mod_name + "_queue_data_in,\n"
|
||||
buf += " .queue_status = " + fabric_mod_name + "_queue_status,\n"
|
||||
buf += " .queue_tm_rsp = " + fabric_mod_name + "_queue_tm_rsp,\n"
|
||||
buf += " .get_fabric_sense_len = " + fabric_mod_name + "_get_fabric_sense_len,\n"
|
||||
buf += " .set_fabric_sense_len = " + fabric_mod_name + "_set_fabric_sense_len,\n"
|
||||
buf += " .is_state_remove = " + fabric_mod_name + "_is_state_remove,\n"
|
||||
buf += " .pack_lun = " + fabric_mod_name + "_pack_lun,\n"
|
||||
buf += " /*\n"
|
||||
buf += " * Setup function pointers for generic logic in target_core_fabric_configfs.c\n"
|
||||
buf += " */\n"
|
||||
|
@ -439,9 +431,9 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name):
|
|||
buf += " * Register the top level struct config_item_type with TCM core\n"
|
||||
buf += " */\n"
|
||||
buf += " fabric = target_fabric_configfs_init(THIS_MODULE, \"" + fabric_mod_name[4:] + "\");\n"
|
||||
buf += " if (!(fabric)) {\n"
|
||||
buf += " if (IS_ERR(fabric)) {\n"
|
||||
buf += " printk(KERN_ERR \"target_fabric_configfs_init() failed\\n\");\n"
|
||||
buf += " return -ENOMEM;\n"
|
||||
buf += " return PTR_ERR(fabric);\n"
|
||||
buf += " }\n"
|
||||
buf += " /*\n"
|
||||
buf += " * Setup fabric->tf_ops from our local " + fabric_mod_name + "_ops\n"
|
||||
|
@ -475,9 +467,9 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name):
|
|||
buf += " printk(KERN_INFO \"" + fabric_mod_name.upper() + "[0] - Set fabric -> " + fabric_mod_name + "_fabric_configfs\\n\");\n"
|
||||
buf += " return 0;\n"
|
||||
buf += "};\n\n"
|
||||
buf += "static void " + fabric_mod_name + "_deregister_configfs(void)\n"
|
||||
buf += "static void __exit " + fabric_mod_name + "_deregister_configfs(void)\n"
|
||||
buf += "{\n"
|
||||
buf += " if (!(" + fabric_mod_name + "_fabric_configfs))\n"
|
||||
buf += " if (!" + fabric_mod_name + "_fabric_configfs)\n"
|
||||
buf += " return;\n\n"
|
||||
buf += " target_fabric_configfs_deregister(" + fabric_mod_name + "_fabric_configfs);\n"
|
||||
buf += " " + fabric_mod_name + "_fabric_configfs = NULL;\n"
|
||||
|
@ -492,17 +484,15 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name):
|
|||
buf += " return ret;\n\n"
|
||||
buf += " return 0;\n"
|
||||
buf += "};\n\n"
|
||||
buf += "static void " + fabric_mod_name + "_exit(void)\n"
|
||||
buf += "static void __exit " + fabric_mod_name + "_exit(void)\n"
|
||||
buf += "{\n"
|
||||
buf += " " + fabric_mod_name + "_deregister_configfs();\n"
|
||||
buf += "};\n\n"
|
||||
|
||||
buf += "#ifdef MODULE\n"
|
||||
buf += "MODULE_DESCRIPTION(\"" + fabric_mod_name.upper() + " series fabric driver\");\n"
|
||||
buf += "MODULE_LICENSE(\"GPL\");\n"
|
||||
buf += "module_init(" + fabric_mod_name + "_init);\n"
|
||||
buf += "module_exit(" + fabric_mod_name + "_exit);\n"
|
||||
buf += "#endif\n"
|
||||
|
||||
ret = p.write(buf)
|
||||
if ret:
|
||||
|
@ -514,7 +504,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name):
|
|||
|
||||
def tcm_mod_scan_fabric_ops(tcm_dir):
|
||||
|
||||
fabric_ops_api = tcm_dir + "include/target/target_core_fabric_ops.h"
|
||||
fabric_ops_api = tcm_dir + "include/target/target_core_fabric.h"
|
||||
|
||||
print "Using tcm_mod_scan_fabric_ops: " + fabric_ops_api
|
||||
process_fo = 0;
|
||||
|
@ -579,11 +569,7 @@ def tcm_mod_dump_fabric_ops(proto_ident, fabric_mod_dir_var, fabric_mod_name):
|
|||
buf += "#include <scsi/scsi_cmnd.h>\n"
|
||||
buf += "#include <scsi/libfc.h>\n\n"
|
||||
buf += "#include <target/target_core_base.h>\n"
|
||||
buf += "#include <target/target_core_transport.h>\n"
|
||||
buf += "#include <target/target_core_fabric_ops.h>\n"
|
||||
buf += "#include <target/target_core_fabric_lib.h>\n"
|
||||
buf += "#include <target/target_core_device.h>\n"
|
||||
buf += "#include <target/target_core_tpg.h>\n"
|
||||
buf += "#include <target/target_core_fabric.h>\n"
|
||||
buf += "#include <target/target_core_configfs.h>\n\n"
|
||||
buf += "#include \"" + fabric_mod_name + "_base.h\"\n"
|
||||
buf += "#include \"" + fabric_mod_name + "_fabric.h\"\n\n"
|
||||
|
@ -788,7 +774,7 @@ def tcm_mod_dump_fabric_ops(proto_ident, fabric_mod_dir_var, fabric_mod_name):
|
|||
buf += "{\n"
|
||||
buf += " struct " + fabric_mod_name + "_nacl *nacl;\n\n"
|
||||
buf += " nacl = kzalloc(sizeof(struct " + fabric_mod_name + "_nacl), GFP_KERNEL);\n"
|
||||
buf += " if (!(nacl)) {\n"
|
||||
buf += " if (!nacl) {\n"
|
||||
buf += " printk(KERN_ERR \"Unable to alocate struct " + fabric_mod_name + "_nacl\\n\");\n"
|
||||
buf += " return NULL;\n"
|
||||
buf += " }\n\n"
|
||||
|
@ -815,7 +801,7 @@ def tcm_mod_dump_fabric_ops(proto_ident, fabric_mod_dir_var, fabric_mod_name):
|
|||
buf += "}\n\n"
|
||||
bufi += "u32 " + fabric_mod_name + "_tpg_get_inst_index(struct se_portal_group *);\n"
|
||||
|
||||
if re.search('release_cmd_to_pool', fo):
|
||||
if re.search('\*release_cmd\)\(', fo):
|
||||
buf += "void " + fabric_mod_name + "_release_cmd(struct se_cmd *se_cmd)\n"
|
||||
buf += "{\n"
|
||||
buf += " return;\n"
|
||||
|
@ -899,13 +885,6 @@ def tcm_mod_dump_fabric_ops(proto_ident, fabric_mod_dir_var, fabric_mod_name):
|
|||
buf += "}\n\n"
|
||||
bufi += "int " + fabric_mod_name + "_get_cmd_state(struct se_cmd *);\n"
|
||||
|
||||
if re.search('new_cmd_failure\)\(', fo):
|
||||
buf += "void " + fabric_mod_name + "_new_cmd_failure(struct se_cmd *se_cmd)\n"
|
||||
buf += "{\n"
|
||||
buf += " return;\n"
|
||||
buf += "}\n\n"
|
||||
bufi += "void " + fabric_mod_name + "_new_cmd_failure(struct se_cmd *);\n"
|
||||
|
||||
if re.search('queue_data_in\)\(', fo):
|
||||
buf += "int " + fabric_mod_name + "_queue_data_in(struct se_cmd *se_cmd)\n"
|
||||
buf += "{\n"
|
||||
|
@ -948,15 +927,6 @@ def tcm_mod_dump_fabric_ops(proto_ident, fabric_mod_dir_var, fabric_mod_name):
|
|||
buf += "}\n\n"
|
||||
bufi += "int " + fabric_mod_name + "_is_state_remove(struct se_cmd *);\n"
|
||||
|
||||
if re.search('pack_lun\)\(', fo):
|
||||
buf += "u64 " + fabric_mod_name + "_pack_lun(unsigned int lun)\n"
|
||||
buf += "{\n"
|
||||
buf += " WARN_ON(lun >= 256);\n"
|
||||
buf += " /* Caller wants this byte-swapped */\n"
|
||||
buf += " return cpu_to_le64((lun & 0xff) << 8);\n"
|
||||
buf += "}\n\n"
|
||||
bufi += "u64 " + fabric_mod_name + "_pack_lun(unsigned int);\n"
|
||||
|
||||
|
||||
ret = p.write(buf)
|
||||
if ret:
|
||||
|
|
|
@ -284,7 +284,7 @@ method, the sys I/F structure will be built like this:
|
|||
The framework includes a simple notification mechanism, in the form of a
|
||||
netlink event. Netlink socket initialization is done during the _init_
|
||||
of the framework. Drivers which intend to use the notification mechanism
|
||||
just need to call generate_netlink_event() with two arguments viz
|
||||
just need to call thermal_generate_netlink_event() with two arguments viz
|
||||
(originator, event). Typically the originator will be an integer assigned
|
||||
to a thermal_zone_device when it registers itself with the framework. The
|
||||
event will be one of:{THERMAL_AUX0, THERMAL_AUX1, THERMAL_CRITICAL,
|
||||
|
|
|
@ -666,27 +666,6 @@ a control of this type whenever the first control belonging to a new control
|
|||
class is added.
|
||||
|
||||
|
||||
Differences from the Spec
|
||||
=========================
|
||||
|
||||
There are a few places where the framework acts slightly differently from the
|
||||
V4L2 Specification. Those differences are described in this section. We will
|
||||
have to see whether we need to adjust the spec or not.
|
||||
|
||||
1) It is no longer required to have all controls contained in a
|
||||
v4l2_ext_control array be from the same control class. The framework will be
|
||||
able to handle any type of control in the array. You need to set ctrl_class
|
||||
to 0 in order to enable this. If ctrl_class is non-zero, then it will still
|
||||
check that all controls belong to that control class.
|
||||
|
||||
If you set ctrl_class to 0 and count to 0, then it will only return an error
|
||||
if there are no controls at all.
|
||||
|
||||
2) Clarified the way error_idx works. For get and set it will be equal to
|
||||
count if nothing was done yet. If it is less than count then only the controls
|
||||
up to error_idx-1 were successfully applied.
|
||||
|
||||
|
||||
Proposals for Extensions
|
||||
========================
|
||||
|
||||
|
|
33
MAINTAINERS
33
MAINTAINERS
|
@ -745,6 +745,7 @@ M: Barry Song <baohua.song@csr.com>
|
|||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||
S: Maintained
|
||||
F: arch/arm/mach-prima2/
|
||||
F: drivers/dma/sirf-dma*
|
||||
|
||||
ARM/EBSA110 MACHINE SUPPORT
|
||||
M: Russell King <linux@arm.linux.org.uk>
|
||||
|
@ -1411,6 +1412,7 @@ F: net/ax25/
|
|||
B43 WIRELESS DRIVER
|
||||
M: Stefano Brivio <stefano.brivio@polimi.it>
|
||||
L: linux-wireless@vger.kernel.org
|
||||
L: b43-dev@lists.infradead.org (moderated for non-subscribers)
|
||||
W: http://linuxwireless.org/en/users/Drivers/b43
|
||||
S: Maintained
|
||||
F: drivers/net/wireless/b43/
|
||||
|
@ -1587,6 +1589,13 @@ L: linux-scsi@vger.kernel.org
|
|||
S: Supported
|
||||
F: drivers/scsi/bnx2fc/
|
||||
|
||||
BROADCOM SPECIFIC AMBA DRIVER (BCMA)
|
||||
M: Rafał Miłecki <zajec5@gmail.com>
|
||||
L: linux-wireless@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/bcma/
|
||||
F: include/linux/bcma/
|
||||
|
||||
BROCADE BFA FC SCSI DRIVER
|
||||
M: Jing Huang <huangj@brocade.com>
|
||||
L: linux-scsi@vger.kernel.org
|
||||
|
@ -2237,6 +2246,17 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm.git
|
|||
S: Supported
|
||||
F: fs/dlm/
|
||||
|
||||
DMA BUFFER SHARING FRAMEWORK
|
||||
M: Sumit Semwal <sumit.semwal@linaro.org>
|
||||
S: Maintained
|
||||
L: linux-media@vger.kernel.org
|
||||
L: dri-devel@lists.freedesktop.org
|
||||
L: linaro-mm-sig@lists.linaro.org
|
||||
F: drivers/base/dma-buf*
|
||||
F: include/linux/dma-buf*
|
||||
F: Documentation/dma-buf-sharing.txt
|
||||
T: git git://git.linaro.org/people/sumitsemwal/linux-dma-buf.git
|
||||
|
||||
DMA GENERIC OFFLOAD ENGINE SUBSYSTEM
|
||||
M: Vinod Koul <vinod.koul@intel.com>
|
||||
M: Dan Williams <dan.j.williams@intel.com>
|
||||
|
@ -2382,7 +2402,7 @@ F: net/bridge/netfilter/ebt*.c
|
|||
|
||||
ECRYPT FILE SYSTEM
|
||||
M: Tyler Hicks <tyhicks@canonical.com>
|
||||
M: Dustin Kirkland <kirkland@canonical.com>
|
||||
M: Dustin Kirkland <dustin.kirkland@gazzang.com>
|
||||
L: ecryptfs@vger.kernel.org
|
||||
W: https://launchpad.net/ecryptfs
|
||||
S: Supported
|
||||
|
@ -5846,7 +5866,7 @@ F: drivers/mmc/host/sdhci-spear.c
|
|||
SECURITY SUBSYSTEM
|
||||
M: James Morris <jmorris@namei.org>
|
||||
L: linux-security-module@vger.kernel.org (suggested Cc:)
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6.git
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git
|
||||
W: http://security.wiki.kernel.org/
|
||||
S: Supported
|
||||
F: security/
|
||||
|
@ -6116,13 +6136,6 @@ S: Maintained
|
|||
F: drivers/ssb/
|
||||
F: include/linux/ssb/
|
||||
|
||||
BROADCOM SPECIFIC AMBA DRIVER (BCMA)
|
||||
M: Rafał Miłecki <zajec5@gmail.com>
|
||||
L: linux-wireless@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/bcma/
|
||||
F: include/linux/bcma/
|
||||
|
||||
SONY VAIO CONTROL DEVICE DRIVER
|
||||
M: Mattia Dongili <malattia@linux.it>
|
||||
L: platform-driver-x86@vger.kernel.org
|
||||
|
@ -7198,7 +7211,7 @@ S: Maintained
|
|||
F: drivers/net/vmxnet3/
|
||||
|
||||
VMware PVSCSI driver
|
||||
M: Alok Kataria <akataria@vmware.com>
|
||||
M: Arvind Kumar <arvindkumar@vmware.com>
|
||||
M: VMware PV-Drivers <pv-drivers@vmware.com>
|
||||
L: linux-scsi@vger.kernel.org
|
||||
S: Maintained
|
||||
|
|
4
Makefile
4
Makefile
|
@ -1,7 +1,7 @@
|
|||
VERSION = 3
|
||||
PATCHLEVEL = 2
|
||||
PATCHLEVEL = 3
|
||||
SUBLEVEL = 0
|
||||
EXTRAVERSION =
|
||||
EXTRAVERSION = -rc1
|
||||
NAME = Saber-toothed Squirrel
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
|
|
@ -160,7 +160,6 @@ machine-$(CONFIG_ARCH_MSM) := msm
|
|||
machine-$(CONFIG_ARCH_MV78XX0) := mv78xx0
|
||||
machine-$(CONFIG_ARCH_IMX_V4_V5) := imx
|
||||
machine-$(CONFIG_ARCH_IMX_V6_V7) := imx
|
||||
machine-$(CONFIG_ARCH_MX5) := mx5
|
||||
machine-$(CONFIG_ARCH_MXS) := mxs
|
||||
machine-$(CONFIG_ARCH_NETX) := netx
|
||||
machine-$(CONFIG_ARCH_NOMADIK) := nomadik
|
||||
|
|
|
@ -3,6 +3,7 @@ CONFIG_EXPERIMENTAL=y
|
|||
CONFIG_KERNEL_LZO=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_LOG_BUF_SHIFT=18
|
||||
CONFIG_CGROUPS=y
|
||||
CONFIG_RELAY=y
|
||||
CONFIG_EXPERT=y
|
||||
# CONFIG_SLUB_DEBUG is not set
|
||||
|
@ -14,20 +15,31 @@ CONFIG_MODULE_SRCVERSION_ALL=y
|
|||
# CONFIG_LBDAF is not set
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
CONFIG_ARCH_MXC=y
|
||||
CONFIG_ARCH_MX5=y
|
||||
CONFIG_MACH_MX51_BABBAGE=y
|
||||
CONFIG_MACH_MX31LILLY=y
|
||||
CONFIG_MACH_MX31LITE=y
|
||||
CONFIG_MACH_PCM037=y
|
||||
CONFIG_MACH_PCM037_EET=y
|
||||
CONFIG_MACH_MX31_3DS=y
|
||||
CONFIG_MACH_MX31MOBOARD=y
|
||||
CONFIG_MACH_QONG=y
|
||||
CONFIG_MACH_ARMADILLO5X0=y
|
||||
CONFIG_MACH_KZM_ARM11_01=y
|
||||
CONFIG_MACH_PCM043=y
|
||||
CONFIG_MACH_MX35_3DS=y
|
||||
CONFIG_MACH_EUKREA_CPUIMX35=y
|
||||
CONFIG_MACH_VPR200=y
|
||||
CONFIG_MACH_IMX51_DT=y
|
||||
CONFIG_MACH_MX51_3DS=y
|
||||
CONFIG_MACH_EUKREA_CPUIMX51=y
|
||||
CONFIG_MACH_EUKREA_CPUIMX51SD=y
|
||||
CONFIG_MACH_MX51_EFIKAMX=y
|
||||
CONFIG_MACH_MX51_EFIKASB=y
|
||||
CONFIG_MACH_MX53_EVK=y
|
||||
CONFIG_MACH_MX53_SMD=y
|
||||
CONFIG_MACH_MX53_LOCO=y
|
||||
CONFIG_MACH_MX53_ARD=y
|
||||
CONFIG_MACH_IMX53_DT=y
|
||||
CONFIG_SOC_IMX6Q=y
|
||||
CONFIG_MXC_PWM=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_VMSPLIT_2G=y
|
||||
CONFIG_PREEMPT_VOLUNTARY=y
|
||||
CONFIG_AEABI=y
|
||||
|
@ -49,7 +61,7 @@ CONFIG_IP_PNP_DHCP=y
|
|||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
# CONFIG_INET_LRO is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_IPV6=y
|
||||
# CONFIG_WIRELESS is not set
|
||||
CONFIG_DEVTMPFS=y
|
||||
CONFIG_DEVTMPFS_MOUNT=y
|
||||
|
@ -68,24 +80,20 @@ CONFIG_SCSI_SCAN_ASYNC=y
|
|||
CONFIG_ATA=y
|
||||
CONFIG_PATA_IMX=y
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_MII=m
|
||||
CONFIG_MARVELL_PHY=y
|
||||
CONFIG_DAVICOM_PHY=y
|
||||
CONFIG_QSEMI_PHY=y
|
||||
CONFIG_LXT_PHY=y
|
||||
CONFIG_CICADA_PHY=y
|
||||
CONFIG_VITESSE_PHY=y
|
||||
CONFIG_SMSC_PHY=y
|
||||
CONFIG_BROADCOM_PHY=y
|
||||
CONFIG_ICPLUS_PHY=y
|
||||
CONFIG_REALTEK_PHY=y
|
||||
CONFIG_NATIONAL_PHY=y
|
||||
CONFIG_STE10XP=y
|
||||
CONFIG_LSI_ET1011C_PHY=y
|
||||
CONFIG_MICREL_PHY=y
|
||||
CONFIG_NET_ETHERNET=y
|
||||
# CONFIG_NETDEV_1000 is not set
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
# CONFIG_NET_VENDOR_BROADCOM is not set
|
||||
# CONFIG_NET_VENDOR_CHELSIO is not set
|
||||
# CONFIG_NET_VENDOR_FARADAY is not set
|
||||
CONFIG_FEC=y
|
||||
# CONFIG_NET_VENDOR_INTEL is not set
|
||||
# CONFIG_NET_VENDOR_MARVELL is not set
|
||||
# CONFIG_NET_VENDOR_MICREL is not set
|
||||
# CONFIG_NET_VENDOR_MICROCHIP is not set
|
||||
# CONFIG_NET_VENDOR_NATSEMI is not set
|
||||
# CONFIG_NET_VENDOR_SEEQ is not set
|
||||
CONFIG_SMC91X=y
|
||||
CONFIG_SMC911X=y
|
||||
CONFIG_SMSC911X=y
|
||||
# CONFIG_NET_VENDOR_STMICRO is not set
|
||||
# CONFIG_WLAN is not set
|
||||
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
|
||||
CONFIG_INPUT_EVDEV=y
|
||||
|
@ -124,7 +132,6 @@ CONFIG_USB_EHCI_HCD=y
|
|||
CONFIG_USB_EHCI_MXC=y
|
||||
CONFIG_USB_STORAGE=y
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_BLOCK=m
|
||||
CONFIG_MMC_SDHCI=y
|
||||
CONFIG_MMC_SDHCI_PLTFM=y
|
||||
CONFIG_MMC_SDHCI_ESDHC_IMX=y
|
||||
|
@ -133,6 +140,8 @@ CONFIG_LEDS_CLASS=y
|
|||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_INTF_DEV_UIE_EMUL=y
|
||||
CONFIG_RTC_MXC=y
|
||||
CONFIG_DMADEVICES=y
|
||||
CONFIG_IMX_SDMA=y
|
||||
CONFIG_EXT2_FS=y
|
||||
CONFIG_EXT2_FS_XATTR=y
|
||||
CONFIG_EXT2_FS_POSIX_ACL=y
|
|
@ -1,144 +0,0 @@
|
|||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_IKCONFIG=y
|
||||
CONFIG_IKCONFIG_PROC=y
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_EXPERT=y
|
||||
CONFIG_SLAB=y
|
||||
CONFIG_MODULES=y
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
CONFIG_MODULE_FORCE_UNLOAD=y
|
||||
CONFIG_MODVERSIONS=y
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
CONFIG_ARCH_MXC=y
|
||||
CONFIG_MACH_MX31ADS_WM1133_EV1=y
|
||||
CONFIG_MACH_MX31LILLY=y
|
||||
CONFIG_MACH_MX31LITE=y
|
||||
CONFIG_MACH_PCM037=y
|
||||
CONFIG_MACH_PCM037_EET=y
|
||||
CONFIG_MACH_MX31_3DS=y
|
||||
CONFIG_MACH_MX31MOBOARD=y
|
||||
CONFIG_MACH_QONG=y
|
||||
CONFIG_MACH_ARMADILLO5X0=y
|
||||
CONFIG_MACH_KZM_ARM11_01=y
|
||||
CONFIG_MACH_PCM043=y
|
||||
CONFIG_MACH_MX35_3DS=y
|
||||
CONFIG_MACH_EUKREA_CPUIMX35=y
|
||||
CONFIG_MXC_IRQ_PRIOR=y
|
||||
CONFIG_MXC_PWM=y
|
||||
CONFIG_ARM_ERRATA_411920=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_AEABI=y
|
||||
CONFIG_ZBOOT_ROM_TEXT=0x0
|
||||
CONFIG_ZBOOT_ROM_BSS=0x0
|
||||
CONFIG_CMDLINE="noinitrd console=ttymxc0,115200 root=/dev/mtdblock2 rw ip=off"
|
||||
CONFIG_VFP=y
|
||||
CONFIG_PM_DEBUG=y
|
||||
CONFIG_NET=y
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_UNIX=y
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_PNP=y
|
||||
CONFIG_IP_PNP_DHCP=y
|
||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
# CONFIG_INET_LRO is not set
|
||||
# CONFIG_INET_DIAG is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_FW_LOADER=m
|
||||
CONFIG_MTD=y
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
CONFIG_MTD_CFI=y
|
||||
CONFIG_MTD_PHYSMAP=y
|
||||
CONFIG_MTD_NAND=y
|
||||
CONFIG_MTD_NAND_MXC=y
|
||||
CONFIG_MTD_UBI=y
|
||||
# CONFIG_BLK_DEV is not set
|
||||
CONFIG_MISC_DEVICES=y
|
||||
CONFIG_EEPROM_AT24=y
|
||||
CONFIG_NETDEVICES=y
|
||||
CONFIG_SMSC_PHY=y
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_SMSC911X=y
|
||||
CONFIG_DNET=y
|
||||
# CONFIG_NETDEV_1000 is not set
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
# CONFIG_INPUT_MOUSEDEV is not set
|
||||
# CONFIG_KEYBOARD_ATKBD is not set
|
||||
CONFIG_KEYBOARD_IMX=y
|
||||
# CONFIG_INPUT_MOUSE is not set
|
||||
# CONFIG_SERIO is not set
|
||||
# CONFIG_VT is not set
|
||||
# CONFIG_LEGACY_PTYS is not set
|
||||
CONFIG_SERIAL_8250=m
|
||||
CONFIG_SERIAL_8250_EXTENDED=y
|
||||
CONFIG_SERIAL_8250_SHARE_IRQ=y
|
||||
CONFIG_SERIAL_IMX=y
|
||||
CONFIG_SERIAL_IMX_CONSOLE=y
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
CONFIG_I2C=y
|
||||
CONFIG_I2C_CHARDEV=y
|
||||
CONFIG_I2C_IMX=y
|
||||
CONFIG_SPI=y
|
||||
CONFIG_W1=y
|
||||
CONFIG_W1_MASTER_MXC=y
|
||||
CONFIG_W1_SLAVE_THERM=y
|
||||
# CONFIG_HWMON is not set
|
||||
CONFIG_WATCHDOG=y
|
||||
CONFIG_IMX2_WDT=y
|
||||
CONFIG_MFD_WM8350_I2C=y
|
||||
CONFIG_REGULATOR=y
|
||||
CONFIG_REGULATOR_WM8350=y
|
||||
CONFIG_MEDIA_SUPPORT=y
|
||||
CONFIG_VIDEO_DEV=y
|
||||
# CONFIG_RC_CORE is not set
|
||||
# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
|
||||
CONFIG_SOC_CAMERA=y
|
||||
CONFIG_SOC_CAMERA_MT9M001=y
|
||||
CONFIG_SOC_CAMERA_MT9M111=y
|
||||
CONFIG_SOC_CAMERA_MT9T031=y
|
||||
CONFIG_SOC_CAMERA_MT9V022=y
|
||||
CONFIG_SOC_CAMERA_TW9910=y
|
||||
CONFIG_SOC_CAMERA_OV772X=y
|
||||
CONFIG_VIDEO_MX3=y
|
||||
# CONFIG_RADIO_ADAPTERS is not set
|
||||
CONFIG_FB=y
|
||||
CONFIG_SOUND=y
|
||||
CONFIG_SND=y
|
||||
# CONFIG_SND_ARM is not set
|
||||
# CONFIG_SND_SPI is not set
|
||||
CONFIG_SND_SOC=y
|
||||
CONFIG_SND_IMX_SOC=y
|
||||
CONFIG_SND_MXC_SOC_WM1133_EV1=y
|
||||
CONFIG_SND_SOC_PHYCORE_AC97=y
|
||||
CONFIG_SND_SOC_EUKREA_TLV320=y
|
||||
CONFIG_USB=y
|
||||
CONFIG_USB_EHCI_HCD=y
|
||||
CONFIG_USB_EHCI_MXC=y
|
||||
CONFIG_USB_GADGET=m
|
||||
CONFIG_USB_FSL_USB2=m
|
||||
CONFIG_USB_G_SERIAL=m
|
||||
CONFIG_USB_ULPI=y
|
||||
CONFIG_MMC=y
|
||||
CONFIG_MMC_MXC=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_MXC=y
|
||||
CONFIG_DMADEVICES=y
|
||||
# CONFIG_DNOTIFY is not set
|
||||
CONFIG_TMPFS=y
|
||||
CONFIG_JFFS2_FS=y
|
||||
CONFIG_UBIFS_FS=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3=y
|
||||
CONFIG_NFS_V4=y
|
||||
CONFIG_ROOT_NFS=y
|
||||
# CONFIG_ENABLE_WARN_DEPRECATED is not set
|
||||
# CONFIG_ENABLE_MUST_CHECK is not set
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
# CONFIG_CRYPTO_ANSI_CPRNG is not set
|
|
@ -24,7 +24,6 @@
|
|||
#define MAX_INSN_SIZE 2
|
||||
#define MAX_STACK_SIZE 64 /* 32 would probably be OK */
|
||||
|
||||
#define regs_return_value(regs) ((regs)->ARM_r0)
|
||||
#define flush_insn_slot(p) do { } while (0)
|
||||
#define kretprobe_blacklist_size 0
|
||||
|
||||
|
|
|
@ -189,6 +189,11 @@ static inline int valid_user_regs(struct pt_regs *regs)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static inline long regs_return_value(struct pt_regs *regs)
|
||||
{
|
||||
return regs->ARM_r0;
|
||||
}
|
||||
|
||||
#define instruction_pointer(regs) (regs)->ARM_pc
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
|
|
|
@ -129,6 +129,7 @@ extern void vfp_flush_hwstate(struct thread_info *);
|
|||
/*
|
||||
* thread information flags:
|
||||
* TIF_SYSCALL_TRACE - syscall trace active
|
||||
* TIF_SYSCAL_AUDIT - syscall auditing active
|
||||
* TIF_SIGPENDING - signal pending
|
||||
* TIF_NEED_RESCHED - rescheduling necessary
|
||||
* TIF_NOTIFY_RESUME - callback before returning to user
|
||||
|
@ -139,6 +140,7 @@ extern void vfp_flush_hwstate(struct thread_info *);
|
|||
#define TIF_NEED_RESCHED 1
|
||||
#define TIF_NOTIFY_RESUME 2 /* callback before returning to user */
|
||||
#define TIF_SYSCALL_TRACE 8
|
||||
#define TIF_SYSCALL_AUDIT 9
|
||||
#define TIF_POLLING_NRFLAG 16
|
||||
#define TIF_USING_IWMMXT 17
|
||||
#define TIF_MEMDIE 18 /* is terminating due to OOM killer */
|
||||
|
@ -149,11 +151,15 @@ extern void vfp_flush_hwstate(struct thread_info *);
|
|||
#define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED)
|
||||
#define _TIF_NOTIFY_RESUME (1 << TIF_NOTIFY_RESUME)
|
||||
#define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE)
|
||||
#define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT)
|
||||
#define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG)
|
||||
#define _TIF_USING_IWMMXT (1 << TIF_USING_IWMMXT)
|
||||
#define _TIF_RESTORE_SIGMASK (1 << TIF_RESTORE_SIGMASK)
|
||||
#define _TIF_SECCOMP (1 << TIF_SECCOMP)
|
||||
|
||||
/* Checks for any syscall work in entry-common.S */
|
||||
#define _TIF_SYSCALL_WORK (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT)
|
||||
|
||||
/*
|
||||
* Change these and you break ASM code in entry-common.S
|
||||
*/
|
||||
|
|
|
@ -37,8 +37,8 @@
|
|||
#define THUMB(x...) x
|
||||
#ifdef __ASSEMBLY__
|
||||
#define W(instr) instr.w
|
||||
#endif
|
||||
#define BSYM(sym) sym + 1
|
||||
#endif
|
||||
|
||||
#else /* !CONFIG_THUMB2_KERNEL */
|
||||
|
||||
|
@ -49,8 +49,8 @@
|
|||
#define THUMB(x...)
|
||||
#ifdef __ASSEMBLY__
|
||||
#define W(instr) instr
|
||||
#endif
|
||||
#define BSYM(sym) sym
|
||||
#endif
|
||||
|
||||
#endif /* CONFIG_THUMB2_KERNEL */
|
||||
|
||||
|
|
|
@ -87,7 +87,7 @@ ENTRY(ret_from_fork)
|
|||
get_thread_info tsk
|
||||
ldr r1, [tsk, #TI_FLAGS] @ check for syscall tracing
|
||||
mov why, #1
|
||||
tst r1, #_TIF_SYSCALL_TRACE @ are we tracing syscalls?
|
||||
tst r1, #_TIF_SYSCALL_WORK @ are we tracing syscalls?
|
||||
beq ret_slow_syscall
|
||||
mov r1, sp
|
||||
mov r0, #1 @ trace exit [IP = 1]
|
||||
|
@ -443,7 +443,7 @@ ENTRY(vector_swi)
|
|||
1:
|
||||
#endif
|
||||
|
||||
tst r10, #_TIF_SYSCALL_TRACE @ are we tracing syscalls?
|
||||
tst r10, #_TIF_SYSCALL_WORK @ are we tracing syscalls?
|
||||
bne __sys_trace
|
||||
|
||||
cmp scno, #NR_syscalls @ check upper syscall limit
|
||||
|
|
|
@ -906,11 +906,6 @@ asmlinkage int syscall_trace(int why, struct pt_regs *regs, int scno)
|
|||
{
|
||||
unsigned long ip;
|
||||
|
||||
if (!test_thread_flag(TIF_SYSCALL_TRACE))
|
||||
return scno;
|
||||
if (!(current->ptrace & PT_PTRACED))
|
||||
return scno;
|
||||
|
||||
/*
|
||||
* Save IP. IP is used to denote syscall entry/exit:
|
||||
* IP = 0 -> entry, = 1 -> exit
|
||||
|
@ -918,6 +913,17 @@ asmlinkage int syscall_trace(int why, struct pt_regs *regs, int scno)
|
|||
ip = regs->ARM_ip;
|
||||
regs->ARM_ip = why;
|
||||
|
||||
if (!ip)
|
||||
audit_syscall_exit(regs);
|
||||
else
|
||||
audit_syscall_entry(AUDIT_ARCH_ARMEB, scno, regs->ARM_r0,
|
||||
regs->ARM_r1, regs->ARM_r2, regs->ARM_r3);
|
||||
|
||||
if (!test_thread_flag(TIF_SYSCALL_TRACE))
|
||||
return scno;
|
||||
if (!(current->ptrace & PT_PTRACED))
|
||||
return scno;
|
||||
|
||||
current_thread_info()->syscall = scno;
|
||||
|
||||
/* the 0x80 provides a way for the tracing parent to distinguish
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
*/
|
||||
struct ep93xx_dma_data {
|
||||
int port;
|
||||
enum dma_data_direction direction;
|
||||
enum dma_transfer_direction direction;
|
||||
const char *name;
|
||||
};
|
||||
|
||||
|
@ -80,14 +80,14 @@ static inline bool ep93xx_dma_chan_is_m2p(struct dma_chan *chan)
|
|||
* channel supports given DMA direction. Only M2P channels have such
|
||||
* limitation, for M2M channels the direction is configurable.
|
||||
*/
|
||||
static inline enum dma_data_direction
|
||||
static inline enum dma_transfer_direction
|
||||
ep93xx_dma_chan_direction(struct dma_chan *chan)
|
||||
{
|
||||
if (!ep93xx_dma_chan_is_m2p(chan))
|
||||
return DMA_NONE;
|
||||
|
||||
/* even channels are for TX, odd for RX */
|
||||
return (chan->chan_id % 2 == 0) ? DMA_TO_DEVICE : DMA_FROM_DEVICE;
|
||||
return (chan->chan_id % 2 == 0) ? DMA_MEM_TO_DEV : DMA_DEV_TO_MEM;
|
||||
}
|
||||
|
||||
#endif /* __ASM_ARCH_DMA_H */
|
||||
|
|
|
@ -36,6 +36,8 @@ pen: ldr r7, [r6]
|
|||
* should now contain the SVC stack for this core
|
||||
*/
|
||||
b secondary_startup
|
||||
ENDPROC(exynos4_secondary_startup)
|
||||
|
||||
.align 2
|
||||
1: .long .
|
||||
.long pen_release
|
||||
|
|
|
@ -597,7 +597,8 @@ static struct s3c_fb_pd_win origen_fb_win0 = {
|
|||
static struct s3c_fb_platdata origen_lcd_pdata __initdata = {
|
||||
.win[0] = &origen_fb_win0,
|
||||
.vidcon0 = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB,
|
||||
.vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
|
||||
.vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC |
|
||||
VIDCON1_INV_VCLK,
|
||||
.setup_gpio = exynos4_fimd0_gpio_setup_24bpp,
|
||||
};
|
||||
|
||||
|
|
|
@ -24,7 +24,6 @@
|
|||
#include <asm/cacheflush.h>
|
||||
#include <asm/hardware/gic.h>
|
||||
#include <asm/smp_scu.h>
|
||||
#include <asm/unified.h>
|
||||
|
||||
#include <mach/hardware.h>
|
||||
#include <mach/regs-clock.h>
|
||||
|
@ -137,7 +136,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle)
|
|||
while (time_before(jiffies, timeout)) {
|
||||
smp_rmb();
|
||||
|
||||
__raw_writel(BSYM(virt_to_phys(exynos4_secondary_startup)),
|
||||
__raw_writel(virt_to_phys(exynos4_secondary_startup),
|
||||
CPU1_BOOT_REG);
|
||||
gic_raise_softirq(cpumask_of(cpu), 1);
|
||||
|
||||
|
@ -192,6 +191,6 @@ void __init platform_smp_prepare_cpus(unsigned int max_cpus)
|
|||
* until it receives a soft interrupt, and then the
|
||||
* secondary CPU branches to this address.
|
||||
*/
|
||||
__raw_writel(BSYM(virt_to_phys(exynos4_secondary_startup)),
|
||||
__raw_writel(virt_to_phys(exynos4_secondary_startup),
|
||||
CPU1_BOOT_REG);
|
||||
}
|
||||
|
|
|
@ -25,7 +25,6 @@
|
|||
#include <linux/smp.h>
|
||||
|
||||
#include <asm/cacheflush.h>
|
||||
#include <asm/unified.h>
|
||||
#include <asm/smp_scu.h>
|
||||
#include <asm/hardware/arm_timer.h>
|
||||
#include <asm/hardware/timer-sp.h>
|
||||
|
@ -76,7 +75,7 @@ void highbank_set_cpu_jump(int cpu, void *jump_addr)
|
|||
#ifdef CONFIG_SMP
|
||||
cpu = cpu_logical_map(cpu);
|
||||
#endif
|
||||
writel(BSYM(virt_to_phys(jump_addr)), HB_JUMP_TABLE_VIRT(cpu));
|
||||
writel(virt_to_phys(jump_addr), HB_JUMP_TABLE_VIRT(cpu));
|
||||
__cpuc_flush_dcache_area(HB_JUMP_TABLE_VIRT(cpu), 16);
|
||||
outer_clean_range(HB_JUMP_TABLE_PHYS(cpu),
|
||||
HB_JUMP_TABLE_PHYS(cpu) + 15);
|
||||
|
|
|
@ -22,6 +22,18 @@ config ARCH_MX25
|
|||
config MACH_MX27
|
||||
bool
|
||||
|
||||
config ARCH_MX5
|
||||
bool
|
||||
|
||||
config ARCH_MX50
|
||||
bool
|
||||
|
||||
config ARCH_MX51
|
||||
bool
|
||||
|
||||
config ARCH_MX53
|
||||
bool
|
||||
|
||||
config SOC_IMX1
|
||||
bool
|
||||
select ARCH_MX1
|
||||
|
@ -73,6 +85,32 @@ config SOC_IMX35
|
|||
select MXC_AVIC
|
||||
select SMP_ON_UP if SMP
|
||||
|
||||
config SOC_IMX5
|
||||
select CPU_V7
|
||||
select ARM_L1_CACHE_SHIFT_6
|
||||
select MXC_TZIC
|
||||
select ARCH_MXC_IOMUX_V3
|
||||
select ARCH_MXC_AUDMUX_V2
|
||||
select ARCH_HAS_CPUFREQ
|
||||
select ARCH_MX5
|
||||
bool
|
||||
|
||||
config SOC_IMX50
|
||||
bool
|
||||
select SOC_IMX5
|
||||
select ARCH_MX50
|
||||
|
||||
config SOC_IMX51
|
||||
bool
|
||||
select SOC_IMX5
|
||||
select ARCH_MX5
|
||||
select ARCH_MX51
|
||||
|
||||
config SOC_IMX53
|
||||
bool
|
||||
select SOC_IMX5
|
||||
select ARCH_MX5
|
||||
select ARCH_MX53
|
||||
|
||||
if ARCH_IMX_V4_V5
|
||||
|
||||
|
@ -592,6 +630,207 @@ config MACH_VPR200
|
|||
Include support for VPR200 platform. This includes specific
|
||||
configurations for the board and its peripherals.
|
||||
|
||||
comment "i.MX5 platforms:"
|
||||
|
||||
config MACH_MX50_RDP
|
||||
bool "Support MX50 reference design platform"
|
||||
depends on BROKEN
|
||||
select SOC_IMX50
|
||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
|
||||
select IMX_HAVE_PLATFORM_SPI_IMX
|
||||
help
|
||||
Include support for MX50 reference design platform (RDP) board. This
|
||||
includes specific configurations for the board and its peripherals.
|
||||
|
||||
comment "i.MX51 machines:"
|
||||
|
||||
config MACH_IMX51_DT
|
||||
bool "Support i.MX51 platforms from device tree"
|
||||
select SOC_IMX51
|
||||
select USE_OF
|
||||
select MACH_MX51_BABBAGE
|
||||
help
|
||||
Include support for Freescale i.MX51 based platforms
|
||||
using the device tree for discovery
|
||||
|
||||
config MACH_MX51_BABBAGE
|
||||
bool "Support MX51 BABBAGE platforms"
|
||||
select SOC_IMX51
|
||||
select IMX_HAVE_PLATFORM_FSL_USB2_UDC
|
||||
select IMX_HAVE_PLATFORM_IMX2_WDT
|
||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_MXC_EHCI
|
||||
select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
|
||||
select IMX_HAVE_PLATFORM_SPI_IMX
|
||||
help
|
||||
Include support for MX51 Babbage platform, also known as MX51EVK in
|
||||
u-boot. This includes specific configurations for the board and its
|
||||
peripherals.
|
||||
|
||||
config MACH_MX51_3DS
|
||||
bool "Support MX51PDK (3DS)"
|
||||
select SOC_IMX51
|
||||
select IMX_HAVE_PLATFORM_IMX2_WDT
|
||||
select IMX_HAVE_PLATFORM_IMX_KEYPAD
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
|
||||
select IMX_HAVE_PLATFORM_SPI_IMX
|
||||
select MXC_DEBUG_BOARD
|
||||
help
|
||||
Include support for MX51PDK (3DS) platform. This includes specific
|
||||
configurations for the board and its peripherals.
|
||||
|
||||
config MACH_EUKREA_CPUIMX51
|
||||
bool "Support Eukrea CPUIMX51 module"
|
||||
select SOC_IMX51
|
||||
select IMX_HAVE_PLATFORM_FSL_USB2_UDC
|
||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_MXC_EHCI
|
||||
select IMX_HAVE_PLATFORM_MXC_NAND
|
||||
select IMX_HAVE_PLATFORM_SPI_IMX
|
||||
help
|
||||
Include support for Eukrea CPUIMX51 platform. This includes
|
||||
specific configurations for the module and its peripherals.
|
||||
|
||||
choice
|
||||
prompt "Baseboard"
|
||||
depends on MACH_EUKREA_CPUIMX51
|
||||
default MACH_EUKREA_MBIMX51_BASEBOARD
|
||||
|
||||
config MACH_EUKREA_MBIMX51_BASEBOARD
|
||||
prompt "Eukrea MBIMX51 development board"
|
||||
bool
|
||||
select IMX_HAVE_PLATFORM_IMX_KEYPAD
|
||||
select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
|
||||
select LEDS_GPIO_REGISTER
|
||||
help
|
||||
This adds board specific devices that can be found on Eukrea's
|
||||
MBIMX51 evaluation board.
|
||||
|
||||
endchoice
|
||||
|
||||
config MACH_EUKREA_CPUIMX51SD
|
||||
bool "Support Eukrea CPUIMX51SD module"
|
||||
select SOC_IMX51
|
||||
select IMX_HAVE_PLATFORM_FSL_USB2_UDC
|
||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_MXC_EHCI
|
||||
select IMX_HAVE_PLATFORM_MXC_NAND
|
||||
select IMX_HAVE_PLATFORM_SPI_IMX
|
||||
help
|
||||
Include support for Eukrea CPUIMX51SD platform. This includes
|
||||
specific configurations for the module and its peripherals.
|
||||
|
||||
choice
|
||||
prompt "Baseboard"
|
||||
depends on MACH_EUKREA_CPUIMX51SD
|
||||
default MACH_EUKREA_MBIMXSD51_BASEBOARD
|
||||
|
||||
config MACH_EUKREA_MBIMXSD51_BASEBOARD
|
||||
prompt "Eukrea MBIMXSD development board"
|
||||
bool
|
||||
select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
|
||||
select LEDS_GPIO_REGISTER
|
||||
help
|
||||
This adds board specific devices that can be found on Eukrea's
|
||||
MBIMXSD evaluation board.
|
||||
|
||||
endchoice
|
||||
|
||||
config MX51_EFIKA_COMMON
|
||||
bool
|
||||
select SOC_IMX51
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_MXC_EHCI
|
||||
select IMX_HAVE_PLATFORM_PATA_IMX
|
||||
select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
|
||||
select IMX_HAVE_PLATFORM_SPI_IMX
|
||||
select MXC_ULPI if USB_ULPI
|
||||
|
||||
config MACH_MX51_EFIKAMX
|
||||
bool "Support MX51 Genesi Efika MX nettop"
|
||||
select LEDS_GPIO_REGISTER
|
||||
select MX51_EFIKA_COMMON
|
||||
help
|
||||
Include support for Genesi Efika MX nettop. This includes specific
|
||||
configurations for the board and its peripherals.
|
||||
|
||||
config MACH_MX51_EFIKASB
|
||||
bool "Support MX51 Genesi Efika Smartbook"
|
||||
select LEDS_GPIO_REGISTER
|
||||
select MX51_EFIKA_COMMON
|
||||
help
|
||||
Include support for Genesi Efika Smartbook. This includes specific
|
||||
configurations for the board and its peripherals.
|
||||
|
||||
comment "i.MX53 machines:"
|
||||
|
||||
config MACH_IMX53_DT
|
||||
bool "Support i.MX53 platforms from device tree"
|
||||
select SOC_IMX53
|
||||
select USE_OF
|
||||
select MACH_MX53_ARD
|
||||
select MACH_MX53_EVK
|
||||
select MACH_MX53_LOCO
|
||||
select MACH_MX53_SMD
|
||||
help
|
||||
Include support for Freescale i.MX53 based platforms
|
||||
using the device tree for discovery
|
||||
|
||||
config MACH_MX53_EVK
|
||||
bool "Support MX53 EVK platforms"
|
||||
select SOC_IMX53
|
||||
select IMX_HAVE_PLATFORM_IMX2_WDT
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
||||
select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
|
||||
select IMX_HAVE_PLATFORM_SPI_IMX
|
||||
select LEDS_GPIO_REGISTER
|
||||
help
|
||||
Include support for MX53 EVK platform. This includes specific
|
||||
configurations for the board and its peripherals.
|
||||
|
||||
config MACH_MX53_SMD
|
||||
bool "Support MX53 SMD platforms"
|
||||
select SOC_IMX53
|
||||
select IMX_HAVE_PLATFORM_IMX2_WDT
|
||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
|
||||
help
|
||||
Include support for MX53 SMD platform. This includes specific
|
||||
configurations for the board and its peripherals.
|
||||
|
||||
config MACH_MX53_LOCO
|
||||
bool "Support MX53 LOCO platforms"
|
||||
select SOC_IMX53
|
||||
select IMX_HAVE_PLATFORM_IMX2_WDT
|
||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
|
||||
select IMX_HAVE_PLATFORM_GPIO_KEYS
|
||||
select LEDS_GPIO_REGISTER
|
||||
help
|
||||
Include support for MX53 LOCO platform. This includes specific
|
||||
configurations for the board and its peripherals.
|
||||
|
||||
config MACH_MX53_ARD
|
||||
bool "Support MX53 ARD platforms"
|
||||
select SOC_IMX53
|
||||
select IMX_HAVE_PLATFORM_IMX2_WDT
|
||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
|
||||
select IMX_HAVE_PLATFORM_GPIO_KEYS
|
||||
help
|
||||
Include support for MX53 ARD platform. This includes specific
|
||||
configurations for the board and its peripherals.
|
||||
|
||||
comment "i.MX6 family:"
|
||||
|
||||
config SOC_IMX6Q
|
||||
|
|
|
@ -11,6 +11,8 @@ obj-$(CONFIG_SOC_IMX27) += clock-imx27.o mm-imx27.o ehci-imx27.o
|
|||
obj-$(CONFIG_SOC_IMX31) += mm-imx3.o cpu-imx31.o clock-imx31.o iomux-imx31.o ehci-imx31.o
|
||||
obj-$(CONFIG_SOC_IMX35) += mm-imx3.o cpu-imx35.o clock-imx35.o ehci-imx35.o
|
||||
|
||||
obj-$(CONFIG_SOC_IMX5) += cpu-imx5.o mm-imx5.o clock-mx51-mx53.o ehci-imx5.o pm-imx5.o cpu_op-mx51.o
|
||||
|
||||
# Support for CMOS sensor interface
|
||||
obj-$(CONFIG_MX1_VIDEO) += mx1-camera-fiq.o mx1-camera-fiq-ksym.o
|
||||
|
||||
|
@ -75,3 +77,22 @@ obj-$(CONFIG_SOC_IMX6Q) += clock-imx6q.o mach-imx6q.o
|
|||
ifeq ($(CONFIG_PM),y)
|
||||
obj-$(CONFIG_SOC_IMX6Q) += pm-imx6q.o
|
||||
endif
|
||||
|
||||
# i.MX5 based machines
|
||||
obj-$(CONFIG_MACH_MX51_BABBAGE) += mach-mx51_babbage.o
|
||||
obj-$(CONFIG_MACH_MX51_3DS) += mach-mx51_3ds.o
|
||||
obj-$(CONFIG_MACH_MX53_EVK) += mach-mx53_evk.o
|
||||
obj-$(CONFIG_MACH_MX53_SMD) += mach-mx53_smd.o
|
||||
obj-$(CONFIG_MACH_MX53_LOCO) += mach-mx53_loco.o
|
||||
obj-$(CONFIG_MACH_MX53_ARD) += mach-mx53_ard.o
|
||||
obj-$(CONFIG_MACH_EUKREA_CPUIMX51) += mach-cpuimx51.o
|
||||
obj-$(CONFIG_MACH_EUKREA_MBIMX51_BASEBOARD) += eukrea_mbimx51-baseboard.o
|
||||
obj-$(CONFIG_MACH_EUKREA_CPUIMX51SD) += mach-cpuimx51sd.o
|
||||
obj-$(CONFIG_MACH_EUKREA_MBIMXSD51_BASEBOARD) += eukrea_mbimxsd-baseboard.o
|
||||
obj-$(CONFIG_MX51_EFIKA_COMMON) += mx51_efika.o
|
||||
obj-$(CONFIG_MACH_MX51_EFIKAMX) += mach-mx51_efikamx.o
|
||||
obj-$(CONFIG_MACH_MX51_EFIKASB) += mach-mx51_efikasb.o
|
||||
obj-$(CONFIG_MACH_MX50_RDP) += mach-mx50_rdp.o
|
||||
|
||||
obj-$(CONFIG_MACH_IMX51_DT) += imx51-dt.o
|
||||
obj-$(CONFIG_MACH_IMX53_DT) += imx53-dt.o
|
||||
|
|
|
@ -22,6 +22,18 @@ zreladdr-$(CONFIG_SOC_IMX35) += 0x80008000
|
|||
params_phys-$(CONFIG_SOC_IMX35) := 0x80000100
|
||||
initrd_phys-$(CONFIG_SOC_IMX35) := 0x80800000
|
||||
|
||||
zreladdr-$(CONFIG_SOC_IMX50) += 0x70008000
|
||||
params_phys-$(CONFIG_SOC_IMX50) := 0x70000100
|
||||
initrd_phys-$(CONFIG_SOC_IMX50) := 0x70800000
|
||||
|
||||
zreladdr-$(CONFIG_SOC_IMX51) += 0x90008000
|
||||
params_phys-$(CONFIG_SOC_IMX51) := 0x90000100
|
||||
initrd_phys-$(CONFIG_SOC_IMX51) := 0x90800000
|
||||
|
||||
zreladdr-$(CONFIG_SOC_IMX53) += 0x70008000
|
||||
params_phys-$(CONFIG_SOC_IMX53) := 0x70000100
|
||||
initrd_phys-$(CONFIG_SOC_IMX53) := 0x70800000
|
||||
|
||||
zreladdr-$(CONFIG_SOC_IMX6Q) += 0x10008000
|
||||
params_phys-$(CONFIG_SOC_IMX6Q) := 0x10000100
|
||||
initrd_phys-$(CONFIG_SOC_IMX6Q) := 0x10800000
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
#include <mach/common.h>
|
||||
#include <mach/clock.h>
|
||||
|
||||
#include "crm_regs.h"
|
||||
#include "crm-regs-imx5.h"
|
||||
|
||||
/* External clock values passed-in by the board code */
|
||||
static unsigned long external_high_reference, external_low_reference;
|
|
@ -32,7 +32,6 @@
|
|||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/time.h>
|
||||
|
||||
#include "crm_regs.h"
|
||||
#include "devices-imx53.h"
|
||||
|
||||
#define ARD_ETHERNET_INT_B IMX_GPIO_NR(2, 31)
|
|
@ -37,7 +37,6 @@
|
|||
#define EVK_ECSPI1_CS1 IMX_GPIO_NR(3, 19)
|
||||
#define MX53EVK_LED IMX_GPIO_NR(7, 7)
|
||||
|
||||
#include "crm_regs.h"
|
||||
#include "devices-imx53.h"
|
||||
|
||||
static iomux_v3_cfg_t mx53_evk_pads[] = {
|
|
@ -32,7 +32,6 @@
|
|||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/time.h>
|
||||
|
||||
#include "crm_regs.h"
|
||||
#include "devices-imx53.h"
|
||||
|
||||
#define MX53_LOCO_POWER IMX_GPIO_NR(1, 8)
|
|
@ -31,7 +31,6 @@
|
|||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/time.h>
|
||||
|
||||
#include "crm_regs.h"
|
||||
#include "devices-imx53.h"
|
||||
|
||||
#define SMD_FEC_PHY_RST IMX_GPIO_NR(7, 6)
|
|
@ -1,8 +1,6 @@
|
|||
/*
|
||||
* Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved.
|
||||
*
|
||||
* The code contained herein is licensed under the GNU General Public
|
||||
* License. You may obtain a copy of the GNU General Public License
|
||||
* Version 2 or later at the following locations:
|
||||
|
@ -10,14 +8,22 @@
|
|||
* http://www.opensource.org/licenses/gpl-license.html
|
||||
* http://www.gnu.org/copyleft/gpl.html
|
||||
*/
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/suspend.h>
|
||||
#include <linux/clk.h>
|
||||
#include <linux/io.h>
|
||||
#include <mach/hardware.h>
|
||||
#include <linux/err.h>
|
||||
#include <asm/cacheflush.h>
|
||||
#include <asm/tlbflush.h>
|
||||
#include <mach/common.h>
|
||||
#include "crm_regs.h"
|
||||
#include <mach/hardware.h>
|
||||
#include "crm-regs-imx5.h"
|
||||
|
||||
/* set cpu low power mode before WFI instruction. This function is called
|
||||
* mx5 because it can be used for mx50, mx51, and mx53.*/
|
||||
static struct clk *gpc_dvfs_clk;
|
||||
|
||||
/*
|
||||
* set cpu low power mode before WFI instruction. This function is called
|
||||
* mx5 because it can be used for mx50, mx51, and mx53.
|
||||
*/
|
||||
void mx5_cpu_lp_set(enum mxc_cpu_pwr_mode mode)
|
||||
{
|
||||
u32 plat_lpc, arm_srpgcr, ccm_clpcr;
|
||||
|
@ -80,3 +86,68 @@ void mx5_cpu_lp_set(enum mxc_cpu_pwr_mode mode)
|
|||
__raw_writel(empgc1, MXC_SRPG_EMPGC1_SRPGCR);
|
||||
}
|
||||
}
|
||||
|
||||
static int mx5_suspend_prepare(void)
|
||||
{
|
||||
return clk_enable(gpc_dvfs_clk);
|
||||
}
|
||||
|
||||
static int mx5_suspend_enter(suspend_state_t state)
|
||||
{
|
||||
switch (state) {
|
||||
case PM_SUSPEND_MEM:
|
||||
mx5_cpu_lp_set(STOP_POWER_OFF);
|
||||
break;
|
||||
case PM_SUSPEND_STANDBY:
|
||||
mx5_cpu_lp_set(WAIT_UNCLOCKED_POWER_OFF);
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (state == PM_SUSPEND_MEM) {
|
||||
local_flush_tlb_all();
|
||||
flush_cache_all();
|
||||
|
||||
/*clear the EMPGC0/1 bits */
|
||||
__raw_writel(0, MXC_SRPG_EMPGC0_SRPGCR);
|
||||
__raw_writel(0, MXC_SRPG_EMPGC1_SRPGCR);
|
||||
}
|
||||
cpu_do_idle();
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void mx5_suspend_finish(void)
|
||||
{
|
||||
clk_disable(gpc_dvfs_clk);
|
||||
}
|
||||
|
||||
static int mx5_pm_valid(suspend_state_t state)
|
||||
{
|
||||
return (state > PM_SUSPEND_ON && state <= PM_SUSPEND_MAX);
|
||||
}
|
||||
|
||||
static const struct platform_suspend_ops mx5_suspend_ops = {
|
||||
.valid = mx5_pm_valid,
|
||||
.prepare = mx5_suspend_prepare,
|
||||
.enter = mx5_suspend_enter,
|
||||
.finish = mx5_suspend_finish,
|
||||
};
|
||||
|
||||
static int __init mx5_pm_init(void)
|
||||
{
|
||||
if (!cpu_is_mx51() && !cpu_is_mx53())
|
||||
return 0;
|
||||
|
||||
if (gpc_dvfs_clk == NULL)
|
||||
gpc_dvfs_clk = clk_get(NULL, "gpc_dvfs");
|
||||
|
||||
if (!IS_ERR(gpc_dvfs_clk)) {
|
||||
if (cpu_is_mx51())
|
||||
suspend_set_ops(&mx5_suspend_ops);
|
||||
} else
|
||||
return -EPERM;
|
||||
|
||||
return 0;
|
||||
}
|
||||
device_initcall(mx5_pm_init);
|
|
@ -15,7 +15,6 @@
|
|||
#include <linux/of.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/smp.h>
|
||||
#include <asm/unified.h>
|
||||
|
||||
#define SRC_SCR 0x000
|
||||
#define SRC_GPR1 0x020
|
||||
|
@ -43,7 +42,7 @@ void imx_enable_cpu(int cpu, bool enable)
|
|||
void imx_set_cpu_jump(int cpu, void *jump_addr)
|
||||
{
|
||||
cpu = cpu_logical_map(cpu);
|
||||
writel_relaxed(BSYM(virt_to_phys(jump_addr)),
|
||||
writel_relaxed(virt_to_phys(jump_addr),
|
||||
src_base + SRC_GPR1 + cpu * 8);
|
||||
}
|
||||
|
||||
|
|
|
@ -34,6 +34,7 @@ pen: ldr r7, [r6]
|
|||
* should now contain the SVC stack for this core
|
||||
*/
|
||||
b secondary_startup
|
||||
ENDPROC(msm_secondary_startup)
|
||||
|
||||
.align
|
||||
1: .long .
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include <linux/device.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/debugfs.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/string.h>
|
||||
#include <mach/vreg.h>
|
||||
|
||||
|
|
|
@ -1,244 +0,0 @@
|
|||
if ARCH_MX5
|
||||
|
||||
# ARCH_MX5/50/53 are left to mark places where prevent multi-soc in single
|
||||
# image. So for most time, SOC_IMX50/51/53 should be used.
|
||||
|
||||
config ARCH_MX51
|
||||
bool
|
||||
|
||||
config ARCH_MX50
|
||||
bool
|
||||
|
||||
config ARCH_MX53
|
||||
bool
|
||||
|
||||
config SOC_IMX50
|
||||
bool
|
||||
select CPU_V7
|
||||
select ARM_L1_CACHE_SHIFT_6
|
||||
select MXC_TZIC
|
||||
select ARCH_MXC_IOMUX_V3
|
||||
select ARCH_MXC_AUDMUX_V2
|
||||
select ARCH_HAS_CPUFREQ
|
||||
select ARCH_MX50
|
||||
|
||||
config SOC_IMX51
|
||||
bool
|
||||
select CPU_V7
|
||||
select ARM_L1_CACHE_SHIFT_6
|
||||
select MXC_TZIC
|
||||
select ARCH_MXC_IOMUX_V3
|
||||
select ARCH_MXC_AUDMUX_V2
|
||||
select ARCH_HAS_CPUFREQ
|
||||
select ARCH_MX51
|
||||
|
||||
config SOC_IMX53
|
||||
bool
|
||||
select CPU_V7
|
||||
select ARM_L1_CACHE_SHIFT_6
|
||||
select MXC_TZIC
|
||||
select ARCH_MXC_IOMUX_V3
|
||||
select ARCH_MX53
|
||||
|
||||
#comment "i.MX50 machines:"
|
||||
|
||||
config MACH_MX50_RDP
|
||||
bool "Support MX50 reference design platform"
|
||||
depends on BROKEN
|
||||
select SOC_IMX50
|
||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
|
||||
select IMX_HAVE_PLATFORM_SPI_IMX
|
||||
help
|
||||
Include support for MX50 reference design platform (RDP) board. This
|
||||
includes specific configurations for the board and its peripherals.
|
||||
|
||||
comment "i.MX51 machines:"
|
||||
|
||||
config MACH_IMX51_DT
|
||||
bool "Support i.MX51 platforms from device tree"
|
||||
select SOC_IMX51
|
||||
select USE_OF
|
||||
select MACH_MX51_BABBAGE
|
||||
help
|
||||
Include support for Freescale i.MX51 based platforms
|
||||
using the device tree for discovery
|
||||
|
||||
config MACH_MX51_BABBAGE
|
||||
bool "Support MX51 BABBAGE platforms"
|
||||
select SOC_IMX51
|
||||
select IMX_HAVE_PLATFORM_FSL_USB2_UDC
|
||||
select IMX_HAVE_PLATFORM_IMX2_WDT
|
||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_MXC_EHCI
|
||||
select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
|
||||
select IMX_HAVE_PLATFORM_SPI_IMX
|
||||
help
|
||||
Include support for MX51 Babbage platform, also known as MX51EVK in
|
||||
u-boot. This includes specific configurations for the board and its
|
||||
peripherals.
|
||||
|
||||
config MACH_MX51_3DS
|
||||
bool "Support MX51PDK (3DS)"
|
||||
select SOC_IMX51
|
||||
select IMX_HAVE_PLATFORM_IMX2_WDT
|
||||
select IMX_HAVE_PLATFORM_IMX_KEYPAD
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
|
||||
select IMX_HAVE_PLATFORM_SPI_IMX
|
||||
select MXC_DEBUG_BOARD
|
||||
help
|
||||
Include support for MX51PDK (3DS) platform. This includes specific
|
||||
configurations for the board and its peripherals.
|
||||
|
||||
config MACH_EUKREA_CPUIMX51
|
||||
bool "Support Eukrea CPUIMX51 module"
|
||||
select SOC_IMX51
|
||||
select IMX_HAVE_PLATFORM_FSL_USB2_UDC
|
||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_MXC_EHCI
|
||||
select IMX_HAVE_PLATFORM_MXC_NAND
|
||||
select IMX_HAVE_PLATFORM_SPI_IMX
|
||||
help
|
||||
Include support for Eukrea CPUIMX51 platform. This includes
|
||||
specific configurations for the module and its peripherals.
|
||||
|
||||
choice
|
||||
prompt "Baseboard"
|
||||
depends on MACH_EUKREA_CPUIMX51
|
||||
default MACH_EUKREA_MBIMX51_BASEBOARD
|
||||
|
||||
config MACH_EUKREA_MBIMX51_BASEBOARD
|
||||
prompt "Eukrea MBIMX51 development board"
|
||||
bool
|
||||
select IMX_HAVE_PLATFORM_IMX_KEYPAD
|
||||
select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
|
||||
select LEDS_GPIO_REGISTER
|
||||
help
|
||||
This adds board specific devices that can be found on Eukrea's
|
||||
MBIMX51 evaluation board.
|
||||
|
||||
endchoice
|
||||
|
||||
config MACH_EUKREA_CPUIMX51SD
|
||||
bool "Support Eukrea CPUIMX51SD module"
|
||||
select SOC_IMX51
|
||||
select IMX_HAVE_PLATFORM_FSL_USB2_UDC
|
||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_MXC_EHCI
|
||||
select IMX_HAVE_PLATFORM_MXC_NAND
|
||||
select IMX_HAVE_PLATFORM_SPI_IMX
|
||||
help
|
||||
Include support for Eukrea CPUIMX51SD platform. This includes
|
||||
specific configurations for the module and its peripherals.
|
||||
|
||||
choice
|
||||
prompt "Baseboard"
|
||||
depends on MACH_EUKREA_CPUIMX51SD
|
||||
default MACH_EUKREA_MBIMXSD51_BASEBOARD
|
||||
|
||||
config MACH_EUKREA_MBIMXSD51_BASEBOARD
|
||||
prompt "Eukrea MBIMXSD development board"
|
||||
bool
|
||||
select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
|
||||
select LEDS_GPIO_REGISTER
|
||||
help
|
||||
This adds board specific devices that can be found on Eukrea's
|
||||
MBIMXSD evaluation board.
|
||||
|
||||
endchoice
|
||||
|
||||
config MX51_EFIKA_COMMON
|
||||
bool
|
||||
select SOC_IMX51
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_MXC_EHCI
|
||||
select IMX_HAVE_PLATFORM_PATA_IMX
|
||||
select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
|
||||
select IMX_HAVE_PLATFORM_SPI_IMX
|
||||
select MXC_ULPI if USB_ULPI
|
||||
|
||||
config MACH_MX51_EFIKAMX
|
||||
bool "Support MX51 Genesi Efika MX nettop"
|
||||
select LEDS_GPIO_REGISTER
|
||||
select MX51_EFIKA_COMMON
|
||||
help
|
||||
Include support for Genesi Efika MX nettop. This includes specific
|
||||
configurations for the board and its peripherals.
|
||||
|
||||
config MACH_MX51_EFIKASB
|
||||
bool "Support MX51 Genesi Efika Smartbook"
|
||||
select LEDS_GPIO_REGISTER
|
||||
select MX51_EFIKA_COMMON
|
||||
help
|
||||
Include support for Genesi Efika Smartbook. This includes specific
|
||||
configurations for the board and its peripherals.
|
||||
|
||||
comment "i.MX53 machines:"
|
||||
|
||||
config MACH_IMX53_DT
|
||||
bool "Support i.MX53 platforms from device tree"
|
||||
select SOC_IMX53
|
||||
select USE_OF
|
||||
select MACH_MX53_ARD
|
||||
select MACH_MX53_EVK
|
||||
select MACH_MX53_LOCO
|
||||
select MACH_MX53_SMD
|
||||
help
|
||||
Include support for Freescale i.MX53 based platforms
|
||||
using the device tree for discovery
|
||||
|
||||
config MACH_MX53_EVK
|
||||
bool "Support MX53 EVK platforms"
|
||||
select SOC_IMX53
|
||||
select IMX_HAVE_PLATFORM_IMX2_WDT
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
||||
select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
|
||||
select IMX_HAVE_PLATFORM_SPI_IMX
|
||||
select LEDS_GPIO_REGISTER
|
||||
help
|
||||
Include support for MX53 EVK platform. This includes specific
|
||||
configurations for the board and its peripherals.
|
||||
|
||||
config MACH_MX53_SMD
|
||||
bool "Support MX53 SMD platforms"
|
||||
select SOC_IMX53
|
||||
select IMX_HAVE_PLATFORM_IMX2_WDT
|
||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
|
||||
help
|
||||
Include support for MX53 SMD platform. This includes specific
|
||||
configurations for the board and its peripherals.
|
||||
|
||||
config MACH_MX53_LOCO
|
||||
bool "Support MX53 LOCO platforms"
|
||||
select SOC_IMX53
|
||||
select IMX_HAVE_PLATFORM_IMX2_WDT
|
||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
|
||||
select IMX_HAVE_PLATFORM_GPIO_KEYS
|
||||
select LEDS_GPIO_REGISTER
|
||||
help
|
||||
Include support for MX53 LOCO platform. This includes specific
|
||||
configurations for the board and its peripherals.
|
||||
|
||||
config MACH_MX53_ARD
|
||||
bool "Support MX53 ARD platforms"
|
||||
select SOC_IMX53
|
||||
select IMX_HAVE_PLATFORM_IMX2_WDT
|
||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
|
||||
select IMX_HAVE_PLATFORM_GPIO_KEYS
|
||||
help
|
||||
Include support for MX53 ARD platform. This includes specific
|
||||
configurations for the board and its peripherals.
|
||||
|
||||
endif
|
|
@ -1,26 +0,0 @@
|
|||
#
|
||||
# Makefile for the linux kernel.
|
||||
#
|
||||
|
||||
# Object file lists.
|
||||
obj-y := cpu.o mm.o clock-mx51-mx53.o ehci.o system.o
|
||||
|
||||
obj-$(CONFIG_PM) += pm-imx5.o
|
||||
obj-$(CONFIG_CPU_FREQ_IMX) += cpu_op-mx51.o
|
||||
obj-$(CONFIG_MACH_MX51_BABBAGE) += board-mx51_babbage.o
|
||||
obj-$(CONFIG_MACH_MX51_3DS) += board-mx51_3ds.o
|
||||
obj-$(CONFIG_MACH_MX53_EVK) += board-mx53_evk.o
|
||||
obj-$(CONFIG_MACH_MX53_SMD) += board-mx53_smd.o
|
||||
obj-$(CONFIG_MACH_MX53_LOCO) += board-mx53_loco.o
|
||||
obj-$(CONFIG_MACH_MX53_ARD) += board-mx53_ard.o
|
||||
obj-$(CONFIG_MACH_EUKREA_CPUIMX51) += board-cpuimx51.o
|
||||
obj-$(CONFIG_MACH_EUKREA_MBIMX51_BASEBOARD) += eukrea_mbimx51-baseboard.o
|
||||
obj-$(CONFIG_MACH_EUKREA_CPUIMX51SD) += board-cpuimx51sd.o
|
||||
obj-$(CONFIG_MACH_EUKREA_MBIMXSD51_BASEBOARD) += eukrea_mbimxsd-baseboard.o
|
||||
obj-$(CONFIG_MX51_EFIKA_COMMON) += mx51_efika.o
|
||||
obj-$(CONFIG_MACH_MX51_EFIKAMX) += board-mx51_efikamx.o
|
||||
obj-$(CONFIG_MACH_MX51_EFIKASB) += board-mx51_efikasb.o
|
||||
obj-$(CONFIG_MACH_MX50_RDP) += board-mx50_rdp.o
|
||||
|
||||
obj-$(CONFIG_MACH_IMX51_DT) += imx51-dt.o
|
||||
obj-$(CONFIG_MACH_IMX53_DT) += imx53-dt.o
|
|
@ -1,9 +0,0 @@
|
|||
zreladdr-$(CONFIG_ARCH_MX50) += 0x70008000
|
||||
params_phys-$(CONFIG_ARCH_MX50) := 0x70000100
|
||||
initrd_phys-$(CONFIG_ARCH_MX50) := 0x70800000
|
||||
zreladdr-$(CONFIG_ARCH_MX51) += 0x90008000
|
||||
params_phys-$(CONFIG_ARCH_MX51) := 0x90000100
|
||||
initrd_phys-$(CONFIG_ARCH_MX51) := 0x90800000
|
||||
zreladdr-$(CONFIG_ARCH_MX53) += 0x70008000
|
||||
params_phys-$(CONFIG_ARCH_MX53) := 0x70000100
|
||||
initrd_phys-$(CONFIG_ARCH_MX53) := 0x70800000
|
|
@ -1,83 +0,0 @@
|
|||
/*
|
||||
* Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved.
|
||||
*
|
||||
* The code contained herein is licensed under the GNU General Public
|
||||
* License. You may obtain a copy of the GNU General Public License
|
||||
* Version 2 or later at the following locations:
|
||||
*
|
||||
* http://www.opensource.org/licenses/gpl-license.html
|
||||
* http://www.gnu.org/copyleft/gpl.html
|
||||
*/
|
||||
#include <linux/suspend.h>
|
||||
#include <linux/clk.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/err.h>
|
||||
#include <asm/cacheflush.h>
|
||||
#include <asm/tlbflush.h>
|
||||
#include <mach/common.h>
|
||||
#include <mach/hardware.h>
|
||||
#include "crm_regs.h"
|
||||
|
||||
static struct clk *gpc_dvfs_clk;
|
||||
|
||||
static int mx5_suspend_prepare(void)
|
||||
{
|
||||
return clk_enable(gpc_dvfs_clk);
|
||||
}
|
||||
|
||||
static int mx5_suspend_enter(suspend_state_t state)
|
||||
{
|
||||
switch (state) {
|
||||
case PM_SUSPEND_MEM:
|
||||
mx5_cpu_lp_set(STOP_POWER_OFF);
|
||||
break;
|
||||
case PM_SUSPEND_STANDBY:
|
||||
mx5_cpu_lp_set(WAIT_UNCLOCKED_POWER_OFF);
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (state == PM_SUSPEND_MEM) {
|
||||
local_flush_tlb_all();
|
||||
flush_cache_all();
|
||||
|
||||
/*clear the EMPGC0/1 bits */
|
||||
__raw_writel(0, MXC_SRPG_EMPGC0_SRPGCR);
|
||||
__raw_writel(0, MXC_SRPG_EMPGC1_SRPGCR);
|
||||
}
|
||||
cpu_do_idle();
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void mx5_suspend_finish(void)
|
||||
{
|
||||
clk_disable(gpc_dvfs_clk);
|
||||
}
|
||||
|
||||
static int mx5_pm_valid(suspend_state_t state)
|
||||
{
|
||||
return (state > PM_SUSPEND_ON && state <= PM_SUSPEND_MAX);
|
||||
}
|
||||
|
||||
static const struct platform_suspend_ops mx5_suspend_ops = {
|
||||
.valid = mx5_pm_valid,
|
||||
.prepare = mx5_suspend_prepare,
|
||||
.enter = mx5_suspend_enter,
|
||||
.finish = mx5_suspend_finish,
|
||||
};
|
||||
|
||||
static int __init mx5_pm_init(void)
|
||||
{
|
||||
if (gpc_dvfs_clk == NULL)
|
||||
gpc_dvfs_clk = clk_get(NULL, "gpc_dvfs");
|
||||
|
||||
if (!IS_ERR(gpc_dvfs_clk)) {
|
||||
if (cpu_is_mx51())
|
||||
suspend_set_ops(&mx5_suspend_ops);
|
||||
} else
|
||||
return -EPERM;
|
||||
|
||||
return 0;
|
||||
}
|
||||
device_initcall(mx5_pm_init);
|
|
@ -67,7 +67,7 @@ static void picoxcell_add_clocksource(struct device_node *source_timer)
|
|||
|
||||
static void __iomem *sched_io_base;
|
||||
|
||||
unsigned u32 notrace picoxcell_read_sched_clock(void)
|
||||
static u32 picoxcell_read_sched_clock(void)
|
||||
{
|
||||
return __raw_readl(sched_io_base);
|
||||
}
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
#include <asm/hardware/gic.h>
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/smp_scu.h>
|
||||
#include <asm/unified.h>
|
||||
|
||||
#include <mach/board-eb.h>
|
||||
#include <mach/board-pb11mp.h>
|
||||
|
@ -75,6 +74,6 @@ void __init platform_smp_prepare_cpus(unsigned int max_cpus)
|
|||
* until it receives a soft interrupt, and then the
|
||||
* secondary CPU branches to this address.
|
||||
*/
|
||||
__raw_writel(BSYM(virt_to_phys(versatile_secondary_startup)),
|
||||
__raw_writel(virt_to_phys(versatile_secondary_startup),
|
||||
__io_address(REALVIEW_SYS_FLAGSSET));
|
||||
}
|
||||
|
|
|
@ -21,5 +21,6 @@
|
|||
#define CODEC_GPIO_BASE (GPIO_BOARD_START + 8)
|
||||
#define GLENFARCLAS_PMIC_GPIO_BASE (GPIO_BOARD_START + 32)
|
||||
#define BANFF_PMIC_GPIO_BASE (GPIO_BOARD_START + 64)
|
||||
#define MMGPIO_GPIO_BASE (GPIO_BOARD_START + 96)
|
||||
|
||||
#endif
|
||||
|
|
|
@ -260,6 +260,7 @@ static struct platform_device crag6410_dm9k_device = {
|
|||
|
||||
static struct resource crag6410_mmgpio_resource[] = {
|
||||
[0] = {
|
||||
.name = "dat",
|
||||
.start = S3C64XX_PA_XM0CSN4 + 1,
|
||||
.end = S3C64XX_PA_XM0CSN4 + 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
|
@ -272,7 +273,7 @@ static struct platform_device crag6410_mmgpio = {
|
|||
.resource = crag6410_mmgpio_resource,
|
||||
.num_resources = ARRAY_SIZE(crag6410_mmgpio_resource),
|
||||
.dev.platform_data = &(struct bgpio_pdata) {
|
||||
.base = -1,
|
||||
.base = MMGPIO_GPIO_BASE,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -328,7 +329,6 @@ static struct platform_device wallvdd_device = {
|
|||
|
||||
static struct platform_device *crag6410_devices[] __initdata = {
|
||||
&s3c_device_hsmmc0,
|
||||
&s3c_device_hsmmc1,
|
||||
&s3c_device_hsmmc2,
|
||||
&s3c_device_i2c0,
|
||||
&s3c_device_i2c1,
|
||||
|
@ -355,7 +355,7 @@ static struct platform_device *crag6410_devices[] __initdata = {
|
|||
|
||||
static struct pca953x_platform_data crag6410_pca_data = {
|
||||
.gpio_base = PCA935X_GPIO_BASE,
|
||||
.irq_base = 0,
|
||||
.irq_base = -1,
|
||||
};
|
||||
|
||||
/* VDDARM is controlled by DVS1 connected to GPK(0) */
|
||||
|
@ -683,12 +683,6 @@ static struct s3c_sdhci_platdata crag6410_hsmmc2_pdata = {
|
|||
.cd_type = S3C_SDHCI_CD_PERMANENT,
|
||||
};
|
||||
|
||||
static struct s3c_sdhci_platdata crag6410_hsmmc1_pdata = {
|
||||
.max_width = 4,
|
||||
.cd_type = S3C_SDHCI_CD_GPIO,
|
||||
.ext_cd_gpio = S3C64XX_GPF(11),
|
||||
};
|
||||
|
||||
static void crag6410_cfg_sdhci0(struct platform_device *dev, int width)
|
||||
{
|
||||
/* Set all the necessary GPG pins to special-function 2 */
|
||||
|
@ -723,7 +717,6 @@ static void __init crag6410_machine_init(void)
|
|||
gpio_direction_output(S3C64XX_GPF(10), 1);
|
||||
|
||||
s3c_sdhci0_set_platdata(&crag6410_hsmmc0_pdata);
|
||||
s3c_sdhci1_set_platdata(&crag6410_hsmmc1_pdata);
|
||||
s3c_sdhci2_set_platdata(&crag6410_hsmmc2_pdata);
|
||||
|
||||
s3c_i2c0_set_platdata(&i2c0_pdata);
|
||||
|
|
|
@ -346,23 +346,10 @@ int __init s3c64xx_pm_init(void)
|
|||
|
||||
static __init int s3c64xx_pm_initcall(void)
|
||||
{
|
||||
u32 val;
|
||||
|
||||
pm_cpu_prep = s3c64xx_pm_prepare;
|
||||
pm_cpu_sleep = s3c64xx_cpu_suspend;
|
||||
pm_uart_udivslot = 1;
|
||||
|
||||
/*
|
||||
* Unconditionally disable power domains that contain only
|
||||
* blocks which have no mainline driver support.
|
||||
*/
|
||||
val = __raw_readl(S3C64XX_NORMAL_CFG);
|
||||
val &= ~(S3C64XX_NORMALCFG_DOMAIN_G_ON |
|
||||
S3C64XX_NORMALCFG_DOMAIN_V_ON |
|
||||
S3C64XX_NORMALCFG_DOMAIN_I_ON |
|
||||
S3C64XX_NORMALCFG_DOMAIN_P_ON);
|
||||
__raw_writel(val, S3C64XX_NORMAL_CFG);
|
||||
|
||||
#ifdef CONFIG_S3C_PM_DEBUG_LED_SMDK
|
||||
gpio_request(S3C64XX_GPN(12), "DEBUG_LED0");
|
||||
gpio_request(S3C64XX_GPN(13), "DEBUG_LED1");
|
||||
|
|
|
@ -445,31 +445,39 @@ static const struct sh_dmae_slave_config sh7372_dmae_slaves[] = {
|
|||
},
|
||||
};
|
||||
|
||||
#define SH7372_CHCLR 0x220
|
||||
|
||||
static const struct sh_dmae_channel sh7372_dmae_channels[] = {
|
||||
{
|
||||
.offset = 0,
|
||||
.dmars = 0,
|
||||
.dmars_bit = 0,
|
||||
.chclr_offset = SH7372_CHCLR + 0,
|
||||
}, {
|
||||
.offset = 0x10,
|
||||
.dmars = 0,
|
||||
.dmars_bit = 8,
|
||||
.chclr_offset = SH7372_CHCLR + 0x10,
|
||||
}, {
|
||||
.offset = 0x20,
|
||||
.dmars = 4,
|
||||
.dmars_bit = 0,
|
||||
.chclr_offset = SH7372_CHCLR + 0x20,
|
||||
}, {
|
||||
.offset = 0x30,
|
||||
.dmars = 4,
|
||||
.dmars_bit = 8,
|
||||
.chclr_offset = SH7372_CHCLR + 0x30,
|
||||
}, {
|
||||
.offset = 0x50,
|
||||
.dmars = 8,
|
||||
.dmars_bit = 0,
|
||||
.chclr_offset = SH7372_CHCLR + 0x50,
|
||||
}, {
|
||||
.offset = 0x60,
|
||||
.dmars = 8,
|
||||
.dmars_bit = 8,
|
||||
.chclr_offset = SH7372_CHCLR + 0x60,
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -487,6 +495,7 @@ static struct sh_dmae_pdata dma_platform_data = {
|
|||
.ts_shift = ts_shift,
|
||||
.ts_shift_num = ARRAY_SIZE(ts_shift),
|
||||
.dmaor_init = DMAOR_DME,
|
||||
.chclr_present = 1,
|
||||
};
|
||||
|
||||
/* Resource order important! */
|
||||
|
@ -494,7 +503,7 @@ static struct resource sh7372_dmae0_resources[] = {
|
|||
{
|
||||
/* Channel registers and DMAOR */
|
||||
.start = 0xfe008020,
|
||||
.end = 0xfe00808f,
|
||||
.end = 0xfe00828f,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
|
@ -522,7 +531,7 @@ static struct resource sh7372_dmae1_resources[] = {
|
|||
{
|
||||
/* Channel registers and DMAOR */
|
||||
.start = 0xfe018020,
|
||||
.end = 0xfe01808f,
|
||||
.end = 0xfe01828f,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
|
@ -550,7 +559,7 @@ static struct resource sh7372_dmae2_resources[] = {
|
|||
{
|
||||
/* Channel registers and DMAOR */
|
||||
.start = 0xfe028020,
|
||||
.end = 0xfe02808f,
|
||||
.end = 0xfe02828f,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
|
|
|
@ -32,6 +32,8 @@ pen: ldr r7, [r6]
|
|||
* should now contain the SVC stack for this core
|
||||
*/
|
||||
b secondary_startup
|
||||
ENDPROC(u8500_secondary_startup)
|
||||
|
||||
.align 2
|
||||
1: .long .
|
||||
.long pen_release
|
||||
|
|
|
@ -13,8 +13,6 @@
|
|||
#include <linux/smp.h>
|
||||
#include <linux/io.h>
|
||||
|
||||
#include <asm/unified.h>
|
||||
|
||||
#include <mach/motherboard.h>
|
||||
#define V2M_PA_CS7 0x10000000
|
||||
|
||||
|
@ -46,6 +44,6 @@ void __init platform_smp_prepare_cpus(unsigned int max_cpus)
|
|||
* secondary CPU branches to this address.
|
||||
*/
|
||||
writel(~0, MMIO_P2V(V2M_SYS_FLAGSCLR));
|
||||
writel(BSYM(virt_to_phys(versatile_secondary_startup)),
|
||||
writel(virt_to_phys(versatile_secondary_startup),
|
||||
MMIO_P2V(V2M_SYS_FLAGSSET));
|
||||
}
|
||||
|
|
|
@ -17,26 +17,17 @@ config ARCH_IMX_V4_V5
|
|||
and ARMv5 SoCs
|
||||
|
||||
config ARCH_IMX_V6_V7
|
||||
bool "i.MX3, i.MX6"
|
||||
bool "i.MX3, i.MX5, i.MX6"
|
||||
select AUTO_ZRELADDR if !ZBOOT_ROM
|
||||
select ARM_PATCH_PHYS_VIRT
|
||||
select MIGHT_HAVE_CACHE_L2X0
|
||||
help
|
||||
This enables support for systems based on the Freescale i.MX3 and i.MX6
|
||||
family.
|
||||
|
||||
config ARCH_MX5
|
||||
bool "i.MX50, i.MX51, i.MX53"
|
||||
select AUTO_ZRELADDR if !ZBOOT_ROM
|
||||
select ARM_PATCH_PHYS_VIRT
|
||||
help
|
||||
This enables support for machines using Freescale's i.MX50 and i.MX53
|
||||
processors.
|
||||
This enables support for systems based on the Freescale i.MX3, i.MX5
|
||||
and i.MX6 family.
|
||||
|
||||
endchoice
|
||||
|
||||
source "arch/arm/mach-imx/Kconfig"
|
||||
source "arch/arm/mach-mx5/Kconfig"
|
||||
|
||||
endmenu
|
||||
|
||||
|
|
|
@ -22,6 +22,20 @@
|
|||
#define FB_SYNC_SWAP_RGB 0x04000000
|
||||
#define FB_SYNC_CLK_SEL_EN 0x02000000
|
||||
|
||||
/*
|
||||
* Specify the way your display is connected. The IPU can arbitrarily
|
||||
* map the internal colors to the external data lines. We only support
|
||||
* the following mappings at the moment.
|
||||
*/
|
||||
enum disp_data_mapping {
|
||||
/* blue -> d[0..5], green -> d[6..11], red -> d[12..17] */
|
||||
IPU_DISP_DATA_MAPPING_RGB666,
|
||||
/* blue -> d[0..4], green -> d[5..10], red -> d[11..15] */
|
||||
IPU_DISP_DATA_MAPPING_RGB565,
|
||||
/* blue -> d[0..7], green -> d[8..15], red -> d[16..23] */
|
||||
IPU_DISP_DATA_MAPPING_RGB888,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct mx3fb_platform_data - mx3fb platform data
|
||||
*
|
||||
|
@ -33,6 +47,7 @@ struct mx3fb_platform_data {
|
|||
const char *name;
|
||||
const struct fb_videomode *mode;
|
||||
int num_modes;
|
||||
enum disp_data_mapping disp_data_fmt;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -113,7 +113,8 @@ struct stedma40_half_channel_info {
|
|||
* @dst_dev_type: Dst device type
|
||||
* @src_info: Parameters for dst half channel
|
||||
* @dst_info: Parameters for dst half channel
|
||||
*
|
||||
* @use_fixed_channel: if true, use physical channel specified by phy_channel
|
||||
* @phy_channel: physical channel to use, only if use_fixed_channel is true
|
||||
*
|
||||
* This structure has to be filled by the client drivers.
|
||||
* It is recommended to do all dma configurations for clients in the machine.
|
||||
|
@ -129,6 +130,9 @@ struct stedma40_chan_cfg {
|
|||
int dst_dev_type;
|
||||
struct stedma40_half_channel_info src_info;
|
||||
struct stedma40_half_channel_info dst_info;
|
||||
|
||||
bool use_fixed_channel;
|
||||
int phy_channel;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -153,6 +157,7 @@ struct stedma40_platform_data {
|
|||
struct stedma40_chan_cfg *memcpy_conf_phy;
|
||||
struct stedma40_chan_cfg *memcpy_conf_log;
|
||||
int disabled_channels[STEDMA40_MAX_PHYS];
|
||||
bool use_esram_lcla;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_STE_DMA40
|
||||
|
@ -187,7 +192,7 @@ static inline struct
|
|||
dma_async_tx_descriptor *stedma40_slave_mem(struct dma_chan *chan,
|
||||
dma_addr_t addr,
|
||||
unsigned int size,
|
||||
enum dma_data_direction direction,
|
||||
enum dma_transfer_direction direction,
|
||||
unsigned long flags)
|
||||
{
|
||||
struct scatterlist sg;
|
||||
|
@ -209,7 +214,7 @@ static inline struct
|
|||
dma_async_tx_descriptor *stedma40_slave_mem(struct dma_chan *chan,
|
||||
dma_addr_t addr,
|
||||
unsigned int size,
|
||||
enum dma_data_direction direction,
|
||||
enum dma_transfer_direction direction,
|
||||
unsigned long flags)
|
||||
{
|
||||
return NULL;
|
||||
|
|
|
@ -37,14 +37,14 @@ static unsigned samsung_dmadev_request(enum dma_ch dma_ch,
|
|||
(void *)dma_ch;
|
||||
chan = dma_request_channel(mask, pl330_filter, filter_param);
|
||||
|
||||
if (info->direction == DMA_FROM_DEVICE) {
|
||||
if (info->direction == DMA_DEV_TO_MEM) {
|
||||
memset(&slave_config, 0, sizeof(struct dma_slave_config));
|
||||
slave_config.direction = info->direction;
|
||||
slave_config.src_addr = info->fifo;
|
||||
slave_config.src_addr_width = info->width;
|
||||
slave_config.src_maxburst = 1;
|
||||
dmaengine_slave_config(chan, &slave_config);
|
||||
} else if (info->direction == DMA_TO_DEVICE) {
|
||||
} else if (info->direction == DMA_MEM_TO_DEV) {
|
||||
memset(&slave_config, 0, sizeof(struct dma_slave_config));
|
||||
slave_config.direction = info->direction;
|
||||
slave_config.dst_addr = info->fifo;
|
||||
|
|
|
@ -14,10 +14,11 @@
|
|||
#define __SAMSUNG_DMA_OPS_H_ __FILE__
|
||||
|
||||
#include <linux/dmaengine.h>
|
||||
#include <mach/dma.h>
|
||||
|
||||
struct samsung_dma_prep_info {
|
||||
enum dma_transaction_type cap;
|
||||
enum dma_data_direction direction;
|
||||
enum dma_transfer_direction direction;
|
||||
dma_addr_t buf;
|
||||
unsigned long period;
|
||||
unsigned long len;
|
||||
|
@ -27,7 +28,7 @@ struct samsung_dma_prep_info {
|
|||
|
||||
struct samsung_dma_info {
|
||||
enum dma_transaction_type cap;
|
||||
enum dma_data_direction direction;
|
||||
enum dma_transfer_direction direction;
|
||||
enum dma_slave_buswidth width;
|
||||
dma_addr_t fifo;
|
||||
struct s3c2410_dma_client *client;
|
||||
|
|
|
@ -10,6 +10,9 @@
|
|||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#ifndef __PLAT_DMA_H
|
||||
#define __PLAT_DMA_H
|
||||
|
||||
#include <linux/dma-mapping.h>
|
||||
|
||||
enum s3c2410_dma_buffresult {
|
||||
|
@ -122,5 +125,6 @@ extern int s3c2410_dma_getposition(enum dma_ch channel,
|
|||
extern int s3c2410_dma_set_opfn(enum dma_ch, s3c2410_dma_opfn_t rtn);
|
||||
extern int s3c2410_dma_set_buffdone_fn(enum dma_ch, s3c2410_dma_cbfn_t rtn);
|
||||
|
||||
|
||||
#include <plat/dma-ops.h>
|
||||
|
||||
#endif
|
||||
|
|
|
@ -11,6 +11,8 @@
|
|||
#ifndef __S3C64XX_PLAT_SPI_H
|
||||
#define __S3C64XX_PLAT_SPI_H
|
||||
|
||||
struct platform_device;
|
||||
|
||||
/**
|
||||
* struct s3c64xx_spi_csinfo - ChipSelect description
|
||||
* @fb_delay: Slave specific feedback delay.
|
||||
|
|
|
@ -38,3 +38,4 @@ pen: ldr r7, [r6]
|
|||
.align
|
||||
1: .long .
|
||||
.long pen_release
|
||||
ENDPROC(versatile_secondary_startup)
|
||||
|
|
|
@ -246,7 +246,18 @@ static inline unsigned long user_stack_pointer(struct pt_regs *regs)
|
|||
return regs->ar_bspstore;
|
||||
}
|
||||
|
||||
#define regs_return_value(regs) ((regs)->r8)
|
||||
static inline int is_syscall_success(struct pt_regs *regs)
|
||||
{
|
||||
return regs->r10 != -1;
|
||||
}
|
||||
|
||||
static inline long regs_return_value(struct pt_regs *regs)
|
||||
{
|
||||
if (is_syscall_success(regs))
|
||||
return regs->r8;
|
||||
else
|
||||
return -regs->r8;
|
||||
}
|
||||
|
||||
/* Conserve space in histogram by encoding slot bits in address
|
||||
* bits 2 and 3 rather than bits 0 and 1.
|
||||
|
|
|
@ -429,22 +429,24 @@ static u32 __devinitdata pxm_flag[PXM_FLAG_LEN];
|
|||
static struct acpi_table_slit __initdata *slit_table;
|
||||
cpumask_t early_cpu_possible_map = CPU_MASK_NONE;
|
||||
|
||||
static int get_processor_proximity_domain(struct acpi_srat_cpu_affinity *pa)
|
||||
static int __init
|
||||
get_processor_proximity_domain(struct acpi_srat_cpu_affinity *pa)
|
||||
{
|
||||
int pxm;
|
||||
|
||||
pxm = pa->proximity_domain_lo;
|
||||
if (ia64_platform_is("sn2"))
|
||||
if (ia64_platform_is("sn2") || acpi_srat_revision >= 2)
|
||||
pxm += pa->proximity_domain_hi[0] << 8;
|
||||
return pxm;
|
||||
}
|
||||
|
||||
static int get_memory_proximity_domain(struct acpi_srat_mem_affinity *ma)
|
||||
static int __init
|
||||
get_memory_proximity_domain(struct acpi_srat_mem_affinity *ma)
|
||||
{
|
||||
int pxm;
|
||||
|
||||
pxm = ma->proximity_domain;
|
||||
if (!ia64_platform_is("sn2"))
|
||||
if (!ia64_platform_is("sn2") && acpi_srat_revision <= 1)
|
||||
pxm &= 0xff;
|
||||
|
||||
return pxm;
|
||||
|
|
|
@ -1246,15 +1246,8 @@ syscall_trace_enter (long arg0, long arg1, long arg2, long arg3,
|
|||
if (test_thread_flag(TIF_RESTORE_RSE))
|
||||
ia64_sync_krbs();
|
||||
|
||||
if (unlikely(current->audit_context)) {
|
||||
long syscall;
|
||||
int arch;
|
||||
|
||||
syscall = regs.r15;
|
||||
arch = AUDIT_ARCH_IA64;
|
||||
|
||||
audit_syscall_entry(arch, syscall, arg0, arg1, arg2, arg3);
|
||||
}
|
||||
audit_syscall_entry(AUDIT_ARCH_IA64, regs.r15, arg0, arg1, arg2, arg3);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1268,14 +1261,7 @@ syscall_trace_leave (long arg0, long arg1, long arg2, long arg3,
|
|||
{
|
||||
int step;
|
||||
|
||||
if (unlikely(current->audit_context)) {
|
||||
int success = AUDITSC_RESULT(regs.r10);
|
||||
long result = regs.r8;
|
||||
|
||||
if (success != AUDITSC_SUCCESS)
|
||||
result = -result;
|
||||
audit_syscall_exit(success, result);
|
||||
}
|
||||
audit_syscall_exit(®s);
|
||||
|
||||
step = test_thread_flag(TIF_SINGLESTEP);
|
||||
if (step || test_thread_flag(TIF_SYSCALL_TRACE))
|
||||
|
|
|
@ -414,9 +414,9 @@ void __init config_atari(void)
|
|||
* FDC val = 4 -> Supervisor only */
|
||||
asm volatile ("\n"
|
||||
" .chip 68030\n"
|
||||
" pmove %0@,%/tt1\n"
|
||||
" pmove %0,%/tt1\n"
|
||||
" .chip 68k"
|
||||
: : "a" (&tt1_val));
|
||||
: : "m" (tt1_val));
|
||||
} else {
|
||||
asm volatile ("\n"
|
||||
" .chip 68040\n"
|
||||
|
@ -569,10 +569,10 @@ static void atari_reset(void)
|
|||
: "d0");
|
||||
} else
|
||||
asm volatile ("\n"
|
||||
" pmove %0@,%%tc\n"
|
||||
" pmove %0,%%tc\n"
|
||||
" jmp %1@"
|
||||
: /* no outputs */
|
||||
: "a" (&tc_val), "a" (reset_addr));
|
||||
: "m" (tc_val), "a" (reset_addr));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -50,19 +50,6 @@
|
|||
|
||||
#define IRQ_USER 8
|
||||
|
||||
/*
|
||||
* various flags for request_irq() - the Amiga now uses the standard
|
||||
* mechanism like all other architectures - IRQF_DISABLED and
|
||||
* IRQF_SHARED are your friends.
|
||||
*/
|
||||
#ifndef MACH_AMIGA_ONLY
|
||||
#define IRQ_FLG_LOCK (0x0001) /* handler is not replaceable */
|
||||
#define IRQ_FLG_REPLACE (0x0002) /* replace existing handler */
|
||||
#define IRQ_FLG_FAST (0x0004)
|
||||
#define IRQ_FLG_SLOW (0x0008)
|
||||
#define IRQ_FLG_STD (0x8000) /* internally used */
|
||||
#endif
|
||||
|
||||
struct irq_data;
|
||||
struct irq_chip;
|
||||
struct irq_desc;
|
||||
|
|
|
@ -172,7 +172,7 @@ void flush_thread(void)
|
|||
|
||||
current->thread.fs = __USER_DS;
|
||||
if (!FPU_IS_EMU)
|
||||
asm volatile ("frestore %0@" : : "a" (&zero) : "memory");
|
||||
asm volatile("frestore %0": :"m" (zero));
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -163,8 +163,8 @@ void flush_thread(void)
|
|||
#ifdef CONFIG_FPU
|
||||
if (!FPU_IS_EMU)
|
||||
asm volatile (".chip 68k/68881\n\t"
|
||||
"frestore %0@\n\t"
|
||||
".chip 68k" : : "a" (&zero));
|
||||
"frestore %0\n\t"
|
||||
".chip 68k" : : "m" (zero));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue