Merge branch 'master' of /home/davem/src/GIT/linux-2.6/
Conflicts: drivers/net/wimax/i2400m/usb-notif.c
This commit is contained in:
Коммит
08abe18af1
2
CREDITS
2
CREDITS
|
@ -3738,7 +3738,7 @@ S: 93149 Nittenau
|
||||||
S: Germany
|
S: Germany
|
||||||
|
|
||||||
N: Gertjan van Wingerde
|
N: Gertjan van Wingerde
|
||||||
E: gwingerde@home.nl
|
E: gwingerde@gmail.com
|
||||||
D: Ralink rt2x00 WLAN driver
|
D: Ralink rt2x00 WLAN driver
|
||||||
D: Minix V2 file-system
|
D: Minix V2 file-system
|
||||||
D: Misc fixes
|
D: Misc fixes
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
What: security/ima/policy
|
||||||
|
Date: May 2008
|
||||||
|
Contact: Mimi Zohar <zohar@us.ibm.com>
|
||||||
|
Description:
|
||||||
|
The Trusted Computing Group(TCG) runtime Integrity
|
||||||
|
Measurement Architecture(IMA) maintains a list of hash
|
||||||
|
values of executables and other sensitive system files
|
||||||
|
loaded into the run-time of this system. At runtime,
|
||||||
|
the policy can be constrained based on LSM specific data.
|
||||||
|
Policies are loaded into the securityfs file ima/policy
|
||||||
|
by opening the file, writing the rules one at a time and
|
||||||
|
then closing the file. The new policy takes effect after
|
||||||
|
the file ima/policy is closed.
|
||||||
|
|
||||||
|
rule format: action [condition ...]
|
||||||
|
|
||||||
|
action: measure | dont_measure
|
||||||
|
condition:= base | lsm
|
||||||
|
base: [[func=] [mask=] [fsmagic=] [uid=]]
|
||||||
|
lsm: [[subj_user=] [subj_role=] [subj_type=]
|
||||||
|
[obj_user=] [obj_role=] [obj_type=]]
|
||||||
|
|
||||||
|
base: func:= [BPRM_CHECK][FILE_MMAP][INODE_PERMISSION]
|
||||||
|
mask:= [MAY_READ] [MAY_WRITE] [MAY_APPEND] [MAY_EXEC]
|
||||||
|
fsmagic:= hex value
|
||||||
|
uid:= decimal value
|
||||||
|
lsm: are LSM specific
|
||||||
|
|
||||||
|
default policy:
|
||||||
|
# PROC_SUPER_MAGIC
|
||||||
|
dont_measure fsmagic=0x9fa0
|
||||||
|
# SYSFS_MAGIC
|
||||||
|
dont_measure fsmagic=0x62656572
|
||||||
|
# DEBUGFS_MAGIC
|
||||||
|
dont_measure fsmagic=0x64626720
|
||||||
|
# TMPFS_MAGIC
|
||||||
|
dont_measure fsmagic=0x01021994
|
||||||
|
# SECURITYFS_MAGIC
|
||||||
|
dont_measure fsmagic=0x73636673
|
||||||
|
|
||||||
|
measure func=BPRM_CHECK
|
||||||
|
measure func=FILE_MMAP mask=MAY_EXEC
|
||||||
|
measure func=INODE_PERM mask=MAY_READ uid=0
|
||||||
|
|
||||||
|
The default policy measures all executables in bprm_check,
|
||||||
|
all files mmapped executable in file_mmap, and all files
|
||||||
|
open for read by root in inode_permission.
|
||||||
|
|
||||||
|
Examples of LSM specific definitions:
|
||||||
|
|
||||||
|
SELinux:
|
||||||
|
# SELINUX_MAGIC
|
||||||
|
dont_measure fsmagic=0xF97CFF8C
|
||||||
|
|
||||||
|
dont_measure obj_type=var_log_t
|
||||||
|
dont_measure obj_type=auditd_log_t
|
||||||
|
measure subj_user=system_u func=INODE_PERM mask=MAY_READ
|
||||||
|
measure subj_role=system_r func=INODE_PERM mask=MAY_READ
|
||||||
|
|
||||||
|
Smack:
|
||||||
|
measure subj_user=_ func=INODE_PERM mask=MAY_READ
|
|
@ -12,7 +12,8 @@ DOCBOOKS := z8530book.xml mcabook.xml device-drivers.xml \
|
||||||
kernel-api.xml filesystems.xml lsm.xml usb.xml kgdb.xml \
|
kernel-api.xml filesystems.xml lsm.xml usb.xml kgdb.xml \
|
||||||
gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \
|
gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \
|
||||||
genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml \
|
genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml \
|
||||||
mac80211.xml debugobjects.xml sh.xml regulator.xml
|
mac80211.xml debugobjects.xml sh.xml regulator.xml \
|
||||||
|
alsa-driver-api.xml writing-an-alsa-driver.xml
|
||||||
|
|
||||||
###
|
###
|
||||||
# The build process is as follows (targets):
|
# The build process is as follows (targets):
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||||
<book>
|
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
|
||||||
<?dbhtml filename="index.html">
|
|
||||||
|
|
||||||
<!-- ****************************************************** -->
|
<!-- ****************************************************** -->
|
||||||
<!-- Header -->
|
<!-- Header -->
|
||||||
<!-- ****************************************************** -->
|
<!-- ****************************************************** -->
|
||||||
|
<book id="ALSA-Driver-API">
|
||||||
<bookinfo>
|
<bookinfo>
|
||||||
<title>The ALSA Driver API</title>
|
<title>The ALSA Driver API</title>
|
||||||
|
|
||||||
|
@ -35,6 +35,8 @@
|
||||||
|
|
||||||
</bookinfo>
|
</bookinfo>
|
||||||
|
|
||||||
|
<toc></toc>
|
||||||
|
|
||||||
<chapter><title>Management of Cards and Devices</title>
|
<chapter><title>Management of Cards and Devices</title>
|
||||||
<sect1><title>Card Management</title>
|
<sect1><title>Card Management</title>
|
||||||
!Esound/core/init.c
|
!Esound/core/init.c
|
||||||
|
@ -71,6 +73,10 @@
|
||||||
!Esound/pci/ac97/ac97_codec.c
|
!Esound/pci/ac97/ac97_codec.c
|
||||||
!Esound/pci/ac97/ac97_pcm.c
|
!Esound/pci/ac97/ac97_pcm.c
|
||||||
</sect1>
|
</sect1>
|
||||||
|
<sect1><title>Virtual Master Control API</title>
|
||||||
|
!Esound/core/vmaster.c
|
||||||
|
!Iinclude/sound/control.h
|
||||||
|
</sect1>
|
||||||
</chapter>
|
</chapter>
|
||||||
<chapter><title>MIDI API</title>
|
<chapter><title>MIDI API</title>
|
||||||
<sect1><title>Raw MIDI API</title>
|
<sect1><title>Raw MIDI API</title>
|
||||||
|
@ -88,6 +94,9 @@
|
||||||
<chapter><title>Miscellaneous Functions</title>
|
<chapter><title>Miscellaneous Functions</title>
|
||||||
<sect1><title>Hardware-Dependent Devices API</title>
|
<sect1><title>Hardware-Dependent Devices API</title>
|
||||||
!Esound/core/hwdep.c
|
!Esound/core/hwdep.c
|
||||||
|
</sect1>
|
||||||
|
<sect1><title>Jack Abstraction Layer API</title>
|
||||||
|
!Esound/core/jack.c
|
||||||
</sect1>
|
</sect1>
|
||||||
<sect1><title>ISA DMA Helpers</title>
|
<sect1><title>ISA DMA Helpers</title>
|
||||||
!Esound/core/isadma.c
|
!Esound/core/isadma.c
|
|
@ -41,6 +41,13 @@ GPL version 2.
|
||||||
</abstract>
|
</abstract>
|
||||||
|
|
||||||
<revhistory>
|
<revhistory>
|
||||||
|
<revision>
|
||||||
|
<revnumber>0.8</revnumber>
|
||||||
|
<date>2008-12-24</date>
|
||||||
|
<authorinitials>hjk</authorinitials>
|
||||||
|
<revremark>Added name attributes in mem and portio sysfs directories.
|
||||||
|
</revremark>
|
||||||
|
</revision>
|
||||||
<revision>
|
<revision>
|
||||||
<revnumber>0.7</revnumber>
|
<revnumber>0.7</revnumber>
|
||||||
<date>2008-12-23</date>
|
<date>2008-12-23</date>
|
||||||
|
@ -303,10 +310,17 @@ interested in translating it, please email me
|
||||||
appear if the size of the mapping is not 0.
|
appear if the size of the mapping is not 0.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Each <filename>mapX/</filename> directory contains two read-only files
|
Each <filename>mapX/</filename> directory contains four read-only files
|
||||||
that show start address and size of the memory:
|
that show attributes of the memory:
|
||||||
</para>
|
</para>
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
<filename>name</filename>: A string identifier for this mapping. This
|
||||||
|
is optional, the string can be empty. Drivers can set this to make it
|
||||||
|
easier for userspace to find the correct mapping.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
<filename>addr</filename>: The address of memory that can be mapped.
|
<filename>addr</filename>: The address of memory that can be mapped.
|
||||||
|
@ -366,10 +380,17 @@ offset = N * getpagesize();
|
||||||
<filename>/sys/class/uio/uioX/portio/</filename>.
|
<filename>/sys/class/uio/uioX/portio/</filename>.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
Each <filename>portX/</filename> directory contains three read-only
|
Each <filename>portX/</filename> directory contains four read-only
|
||||||
files that show start, size, and type of the port region:
|
files that show name, start, size, and type of the port region:
|
||||||
</para>
|
</para>
|
||||||
<itemizedlist>
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
<filename>name</filename>: A string identifier for this port region.
|
||||||
|
The string is optional and can be empty. Drivers can set it to make it
|
||||||
|
easier for userspace to find a certain port region.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
<filename>start</filename>: The first port of this region.
|
<filename>start</filename>: The first port of this region.
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||||
<book>
|
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
|
||||||
<?dbhtml filename="index.html">
|
|
||||||
|
|
||||||
<!-- ****************************************************** -->
|
<!-- ****************************************************** -->
|
||||||
<!-- Header -->
|
<!-- Header -->
|
||||||
<!-- ****************************************************** -->
|
<!-- ****************************************************** -->
|
||||||
|
<book id="Writing-an-ALSA-Driver">
|
||||||
<bookinfo>
|
<bookinfo>
|
||||||
<title>Writing an ALSA Driver</title>
|
<title>Writing an ALSA Driver</title>
|
||||||
<author>
|
<author>
|
||||||
|
@ -492,9 +492,9 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (2) */
|
/* (2) */
|
||||||
card = snd_card_new(index[dev], id[dev], THIS_MODULE, 0);
|
err = snd_card_create(index[dev], id[dev], THIS_MODULE, 0, &card);
|
||||||
if (card == NULL)
|
if (err < 0)
|
||||||
return -ENOMEM;
|
return err;
|
||||||
|
|
||||||
/* (3) */
|
/* (3) */
|
||||||
err = snd_mychip_create(card, pci, &chip);
|
err = snd_mychip_create(card, pci, &chip);
|
||||||
|
@ -590,8 +590,9 @@
|
||||||
<programlisting>
|
<programlisting>
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
struct snd_card *card;
|
struct snd_card *card;
|
||||||
|
int err;
|
||||||
....
|
....
|
||||||
card = snd_card_new(index[dev], id[dev], THIS_MODULE, 0);
|
err = snd_card_create(index[dev], id[dev], THIS_MODULE, 0, &card);
|
||||||
]]>
|
]]>
|
||||||
</programlisting>
|
</programlisting>
|
||||||
</informalexample>
|
</informalexample>
|
||||||
|
@ -809,26 +810,28 @@
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
As mentioned above, to create a card instance, call
|
As mentioned above, to create a card instance, call
|
||||||
<function>snd_card_new()</function>.
|
<function>snd_card_create()</function>.
|
||||||
|
|
||||||
<informalexample>
|
<informalexample>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
struct snd_card *card;
|
struct snd_card *card;
|
||||||
card = snd_card_new(index, id, module, extra_size);
|
int err;
|
||||||
|
err = snd_card_create(index, id, module, extra_size, &card);
|
||||||
]]>
|
]]>
|
||||||
</programlisting>
|
</programlisting>
|
||||||
</informalexample>
|
</informalexample>
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
The function takes four arguments, the card-index number, the
|
The function takes five arguments, the card-index number, the
|
||||||
id string, the module pointer (usually
|
id string, the module pointer (usually
|
||||||
<constant>THIS_MODULE</constant>),
|
<constant>THIS_MODULE</constant>),
|
||||||
and the size of extra-data space. The last argument is used to
|
the size of extra-data space, and the pointer to return the
|
||||||
|
card instance. The extra_size argument is used to
|
||||||
allocate card->private_data for the
|
allocate card->private_data for the
|
||||||
chip-specific data. Note that these data
|
chip-specific data. Note that these data
|
||||||
are allocated by <function>snd_card_new()</function>.
|
are allocated by <function>snd_card_create()</function>.
|
||||||
</para>
|
</para>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
@ -915,15 +918,16 @@
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
<section id="card-management-chip-specific-snd-card-new">
|
<section id="card-management-chip-specific-snd-card-new">
|
||||||
<title>1. Allocating via <function>snd_card_new()</function>.</title>
|
<title>1. Allocating via <function>snd_card_create()</function>.</title>
|
||||||
<para>
|
<para>
|
||||||
As mentioned above, you can pass the extra-data-length
|
As mentioned above, you can pass the extra-data-length
|
||||||
to the 4th argument of <function>snd_card_new()</function>, i.e.
|
to the 4th argument of <function>snd_card_create()</function>, i.e.
|
||||||
|
|
||||||
<informalexample>
|
<informalexample>
|
||||||
<programlisting>
|
<programlisting>
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
card = snd_card_new(index[dev], id[dev], THIS_MODULE, sizeof(struct mychip));
|
err = snd_card_create(index[dev], id[dev], THIS_MODULE,
|
||||||
|
sizeof(struct mychip), &card);
|
||||||
]]>
|
]]>
|
||||||
</programlisting>
|
</programlisting>
|
||||||
</informalexample>
|
</informalexample>
|
||||||
|
@ -952,8 +956,8 @@
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
After allocating a card instance via
|
After allocating a card instance via
|
||||||
<function>snd_card_new()</function> (with
|
<function>snd_card_create()</function> (with
|
||||||
<constant>NULL</constant> on the 4th arg), call
|
<constant>0</constant> on the 4th arg), call
|
||||||
<function>kzalloc()</function>.
|
<function>kzalloc()</function>.
|
||||||
|
|
||||||
<informalexample>
|
<informalexample>
|
||||||
|
@ -961,7 +965,7 @@
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
struct snd_card *card;
|
struct snd_card *card;
|
||||||
struct mychip *chip;
|
struct mychip *chip;
|
||||||
card = snd_card_new(index[dev], id[dev], THIS_MODULE, NULL);
|
err = snd_card_create(index[dev], id[dev], THIS_MODULE, 0, &card);
|
||||||
.....
|
.....
|
||||||
chip = kzalloc(sizeof(*chip), GFP_KERNEL);
|
chip = kzalloc(sizeof(*chip), GFP_KERNEL);
|
||||||
]]>
|
]]>
|
||||||
|
@ -5750,8 +5754,9 @@ struct _snd_pcm_runtime {
|
||||||
....
|
....
|
||||||
struct snd_card *card;
|
struct snd_card *card;
|
||||||
struct mychip *chip;
|
struct mychip *chip;
|
||||||
|
int err;
|
||||||
....
|
....
|
||||||
card = snd_card_new(index[dev], id[dev], THIS_MODULE, NULL);
|
err = snd_card_create(index[dev], id[dev], THIS_MODULE, 0, &card);
|
||||||
....
|
....
|
||||||
chip = kzalloc(sizeof(*chip), GFP_KERNEL);
|
chip = kzalloc(sizeof(*chip), GFP_KERNEL);
|
||||||
....
|
....
|
||||||
|
@ -5763,7 +5768,7 @@ struct _snd_pcm_runtime {
|
||||||
</informalexample>
|
</informalexample>
|
||||||
|
|
||||||
When you created the chip data with
|
When you created the chip data with
|
||||||
<function>snd_card_new()</function>, it's anyway accessible
|
<function>snd_card_create()</function>, it's anyway accessible
|
||||||
via <structfield>private_data</structfield> field.
|
via <structfield>private_data</structfield> field.
|
||||||
|
|
||||||
<informalexample>
|
<informalexample>
|
||||||
|
@ -5775,9 +5780,10 @@ struct _snd_pcm_runtime {
|
||||||
....
|
....
|
||||||
struct snd_card *card;
|
struct snd_card *card;
|
||||||
struct mychip *chip;
|
struct mychip *chip;
|
||||||
|
int err;
|
||||||
....
|
....
|
||||||
card = snd_card_new(index[dev], id[dev], THIS_MODULE,
|
err = snd_card_create(index[dev], id[dev], THIS_MODULE,
|
||||||
sizeof(struct mychip));
|
sizeof(struct mychip), &card);
|
||||||
....
|
....
|
||||||
chip = card->private_data;
|
chip = card->private_data;
|
||||||
....
|
....
|
|
@ -298,3 +298,15 @@ over a rather long period of time, but improvements are always welcome!
|
||||||
|
|
||||||
Note that, rcu_assign_pointer() and rcu_dereference() relate to
|
Note that, rcu_assign_pointer() and rcu_dereference() relate to
|
||||||
SRCU just as they do to other forms of RCU.
|
SRCU just as they do to other forms of RCU.
|
||||||
|
|
||||||
|
15. The whole point of call_rcu(), synchronize_rcu(), and friends
|
||||||
|
is to wait until all pre-existing readers have finished before
|
||||||
|
carrying out some otherwise-destructive operation. It is
|
||||||
|
therefore critically important to -first- remove any path
|
||||||
|
that readers can follow that could be affected by the
|
||||||
|
destructive operation, and -only- -then- invoke call_rcu(),
|
||||||
|
synchronize_rcu(), or friends.
|
||||||
|
|
||||||
|
Because these primitives only wait for pre-existing readers,
|
||||||
|
it is the caller's responsibility to guarantee safety to
|
||||||
|
any subsequent readers.
|
||||||
|
|
|
@ -117,10 +117,28 @@ accessible parameters:
|
||||||
sampling_rate: measured in uS (10^-6 seconds), this is how often you
|
sampling_rate: measured in uS (10^-6 seconds), this is how often you
|
||||||
want the kernel to look at the CPU usage and to make decisions on
|
want the kernel to look at the CPU usage and to make decisions on
|
||||||
what to do about the frequency. Typically this is set to values of
|
what to do about the frequency. Typically this is set to values of
|
||||||
around '10000' or more.
|
around '10000' or more. It's default value is (cmp. with users-guide.txt):
|
||||||
|
transition_latency * 1000
|
||||||
|
The lowest value you can set is:
|
||||||
|
transition_latency * 100 or it may get restricted to a value where it
|
||||||
|
makes not sense for the kernel anymore to poll that often which depends
|
||||||
|
on your HZ config variable (HZ=1000: max=20000us, HZ=250: max=5000).
|
||||||
|
Be aware that transition latency is in ns and sampling_rate is in us, so you
|
||||||
|
get the same sysfs value by default.
|
||||||
|
Sampling rate should always get adjusted considering the transition latency
|
||||||
|
To set the sampling rate 750 times as high as the transition latency
|
||||||
|
in the bash (as said, 1000 is default), do:
|
||||||
|
echo `$(($(cat cpuinfo_transition_latency) * 750 / 1000)) \
|
||||||
|
>ondemand/sampling_rate
|
||||||
|
|
||||||
show_sampling_rate_(min|max): the minimum and maximum sampling rates
|
show_sampling_rate_(min|max): THIS INTERFACE IS DEPRECATED, DON'T USE IT.
|
||||||
available that you may set 'sampling_rate' to.
|
You can use wider ranges now and the general
|
||||||
|
cpuinfo_transition_latency variable (cmp. with user-guide.txt) can be
|
||||||
|
used to obtain exactly the same info:
|
||||||
|
show_sampling_rate_min = transtition_latency * 500 / 1000
|
||||||
|
show_sampling_rate_max = transtition_latency * 500000 / 1000
|
||||||
|
(divided by 1000 is to illustrate that sampling rate is in us and
|
||||||
|
transition latency is exported ns).
|
||||||
|
|
||||||
up_threshold: defines what the average CPU usage between the samplings
|
up_threshold: defines what the average CPU usage between the samplings
|
||||||
of 'sampling_rate' needs to be for the kernel to make a decision on
|
of 'sampling_rate' needs to be for the kernel to make a decision on
|
||||||
|
|
|
@ -152,6 +152,18 @@ cpuinfo_min_freq : this file shows the minimum operating
|
||||||
frequency the processor can run at(in kHz)
|
frequency the processor can run at(in kHz)
|
||||||
cpuinfo_max_freq : this file shows the maximum operating
|
cpuinfo_max_freq : this file shows the maximum operating
|
||||||
frequency the processor can run at(in kHz)
|
frequency the processor can run at(in kHz)
|
||||||
|
cpuinfo_transition_latency The time it takes on this CPU to
|
||||||
|
switch between two frequencies in nano
|
||||||
|
seconds. If unknown or known to be
|
||||||
|
that high that the driver does not
|
||||||
|
work with the ondemand governor, -1
|
||||||
|
(CPUFREQ_ETERNAL) will be returned.
|
||||||
|
Using this information can be useful
|
||||||
|
to choose an appropriate polling
|
||||||
|
frequency for a kernel governor or
|
||||||
|
userspace daemon. Make sure to not
|
||||||
|
switch the frequency too often
|
||||||
|
resulting in performance loss.
|
||||||
scaling_driver : this file shows what cpufreq driver is
|
scaling_driver : this file shows what cpufreq driver is
|
||||||
used to set the frequency on this CPU
|
used to set the frequency on this CPU
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,240 @@
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
============
|
||||||
|
|
||||||
|
This document describes how to use the dynamic debug (ddebug) feature.
|
||||||
|
|
||||||
|
Dynamic debug is designed to allow you to dynamically enable/disable kernel
|
||||||
|
code to obtain additional kernel information. Currently, if
|
||||||
|
CONFIG_DYNAMIC_DEBUG is set, then all pr_debug()/dev_debug() calls can be
|
||||||
|
dynamically enabled per-callsite.
|
||||||
|
|
||||||
|
Dynamic debug has even more useful features:
|
||||||
|
|
||||||
|
* Simple query language allows turning on and off debugging statements by
|
||||||
|
matching any combination of:
|
||||||
|
|
||||||
|
- source filename
|
||||||
|
- function name
|
||||||
|
- line number (including ranges of line numbers)
|
||||||
|
- module name
|
||||||
|
- format string
|
||||||
|
|
||||||
|
* Provides a debugfs control file: <debugfs>/dynamic_debug/control which can be
|
||||||
|
read to display the complete list of known debug statements, to help guide you
|
||||||
|
|
||||||
|
Controlling dynamic debug Behaviour
|
||||||
|
===============================
|
||||||
|
|
||||||
|
The behaviour of pr_debug()/dev_debug()s are controlled via writing to a
|
||||||
|
control file in the 'debugfs' filesystem. Thus, you must first mount the debugfs
|
||||||
|
filesystem, in order to make use of this feature. Subsequently, we refer to the
|
||||||
|
control file as: <debugfs>/dynamic_debug/control. For example, if you want to
|
||||||
|
enable printing from source file 'svcsock.c', line 1603 you simply do:
|
||||||
|
|
||||||
|
nullarbor:~ # echo 'file svcsock.c line 1603 +p' >
|
||||||
|
<debugfs>/dynamic_debug/control
|
||||||
|
|
||||||
|
If you make a mistake with the syntax, the write will fail thus:
|
||||||
|
|
||||||
|
nullarbor:~ # echo 'file svcsock.c wtf 1 +p' >
|
||||||
|
<debugfs>/dynamic_debug/control
|
||||||
|
-bash: echo: write error: Invalid argument
|
||||||
|
|
||||||
|
Viewing Dynamic Debug Behaviour
|
||||||
|
===========================
|
||||||
|
|
||||||
|
You can view the currently configured behaviour of all the debug statements
|
||||||
|
via:
|
||||||
|
|
||||||
|
nullarbor:~ # cat <debugfs>/dynamic_debug/control
|
||||||
|
# filename:lineno [module]function flags format
|
||||||
|
/usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svc_rdma.c:323 [svcxprt_rdma]svc_rdma_cleanup - "SVCRDMA Module Removed, deregister RPC RDMA transport\012"
|
||||||
|
/usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svc_rdma.c:341 [svcxprt_rdma]svc_rdma_init - "\011max_inline : %d\012"
|
||||||
|
/usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svc_rdma.c:340 [svcxprt_rdma]svc_rdma_init - "\011sq_depth : %d\012"
|
||||||
|
/usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svc_rdma.c:338 [svcxprt_rdma]svc_rdma_init - "\011max_requests : %d\012"
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
You can also apply standard Unix text manipulation filters to this
|
||||||
|
data, e.g.
|
||||||
|
|
||||||
|
nullarbor:~ # grep -i rdma <debugfs>/dynamic_debug/control | wc -l
|
||||||
|
62
|
||||||
|
|
||||||
|
nullarbor:~ # grep -i tcp <debugfs>/dynamic_debug/control | wc -l
|
||||||
|
42
|
||||||
|
|
||||||
|
Note in particular that the third column shows the enabled behaviour
|
||||||
|
flags for each debug statement callsite (see below for definitions of the
|
||||||
|
flags). The default value, no extra behaviour enabled, is "-". So
|
||||||
|
you can view all the debug statement callsites with any non-default flags:
|
||||||
|
|
||||||
|
nullarbor:~ # awk '$3 != "-"' <debugfs>/dynamic_debug/control
|
||||||
|
# filename:lineno [module]function flags format
|
||||||
|
/usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svcsock.c:1603 [sunrpc]svc_send p "svc_process: st_sendto returned %d\012"
|
||||||
|
|
||||||
|
|
||||||
|
Command Language Reference
|
||||||
|
==========================
|
||||||
|
|
||||||
|
At the lexical level, a command comprises a sequence of words separated
|
||||||
|
by whitespace characters. Note that newlines are treated as word
|
||||||
|
separators and do *not* end a command or allow multiple commands to
|
||||||
|
be done together. So these are all equivalent:
|
||||||
|
|
||||||
|
nullarbor:~ # echo -c 'file svcsock.c line 1603 +p' >
|
||||||
|
<debugfs>/dynamic_debug/control
|
||||||
|
nullarbor:~ # echo -c ' file svcsock.c line 1603 +p ' >
|
||||||
|
<debugfs>/dynamic_debug/control
|
||||||
|
nullarbor:~ # echo -c 'file svcsock.c\nline 1603 +p' >
|
||||||
|
<debugfs>/dynamic_debug/control
|
||||||
|
nullarbor:~ # echo -n 'file svcsock.c line 1603 +p' >
|
||||||
|
<debugfs>/dynamic_debug/control
|
||||||
|
|
||||||
|
Commands are bounded by a write() system call. If you want to do
|
||||||
|
multiple commands you need to do a separate "echo" for each, like:
|
||||||
|
|
||||||
|
nullarbor:~ # echo 'file svcsock.c line 1603 +p' > /proc/dprintk ;\
|
||||||
|
> echo 'file svcsock.c line 1563 +p' > /proc/dprintk
|
||||||
|
|
||||||
|
or even like:
|
||||||
|
|
||||||
|
nullarbor:~ # (
|
||||||
|
> echo 'file svcsock.c line 1603 +p' ;\
|
||||||
|
> echo 'file svcsock.c line 1563 +p' ;\
|
||||||
|
> ) > /proc/dprintk
|
||||||
|
|
||||||
|
At the syntactical level, a command comprises a sequence of match
|
||||||
|
specifications, followed by a flags change specification.
|
||||||
|
|
||||||
|
command ::= match-spec* flags-spec
|
||||||
|
|
||||||
|
The match-spec's are used to choose a subset of the known dprintk()
|
||||||
|
callsites to which to apply the flags-spec. Think of them as a query
|
||||||
|
with implicit ANDs between each pair. Note that an empty list of
|
||||||
|
match-specs is possible, but is not very useful because it will not
|
||||||
|
match any debug statement callsites.
|
||||||
|
|
||||||
|
A match specification comprises a keyword, which controls the attribute
|
||||||
|
of the callsite to be compared, and a value to compare against. Possible
|
||||||
|
keywords are:
|
||||||
|
|
||||||
|
match-spec ::= 'func' string |
|
||||||
|
'file' string |
|
||||||
|
'module' string |
|
||||||
|
'format' string |
|
||||||
|
'line' line-range
|
||||||
|
|
||||||
|
line-range ::= lineno |
|
||||||
|
'-'lineno |
|
||||||
|
lineno'-' |
|
||||||
|
lineno'-'lineno
|
||||||
|
// Note: line-range cannot contain space, e.g.
|
||||||
|
// "1-30" is valid range but "1 - 30" is not.
|
||||||
|
|
||||||
|
lineno ::= unsigned-int
|
||||||
|
|
||||||
|
The meanings of each keyword are:
|
||||||
|
|
||||||
|
func
|
||||||
|
The given string is compared against the function name
|
||||||
|
of each callsite. Example:
|
||||||
|
|
||||||
|
func svc_tcp_accept
|
||||||
|
|
||||||
|
file
|
||||||
|
The given string is compared against either the full
|
||||||
|
pathname or the basename of the source file of each
|
||||||
|
callsite. Examples:
|
||||||
|
|
||||||
|
file svcsock.c
|
||||||
|
file /usr/src/packages/BUILD/sgi-enhancednfs-1.4/default/net/sunrpc/svcsock.c
|
||||||
|
|
||||||
|
module
|
||||||
|
The given string is compared against the module name
|
||||||
|
of each callsite. The module name is the string as
|
||||||
|
seen in "lsmod", i.e. without the directory or the .ko
|
||||||
|
suffix and with '-' changed to '_'. Examples:
|
||||||
|
|
||||||
|
module sunrpc
|
||||||
|
module nfsd
|
||||||
|
|
||||||
|
format
|
||||||
|
The given string is searched for in the dynamic debug format
|
||||||
|
string. Note that the string does not need to match the
|
||||||
|
entire format, only some part. Whitespace and other
|
||||||
|
special characters can be escaped using C octal character
|
||||||
|
escape \ooo notation, e.g. the space character is \040.
|
||||||
|
Alternatively, the string can be enclosed in double quote
|
||||||
|
characters (") or single quote characters (').
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
format svcrdma: // many of the NFS/RDMA server dprintks
|
||||||
|
format readahead // some dprintks in the readahead cache
|
||||||
|
format nfsd:\040SETATTR // one way to match a format with whitespace
|
||||||
|
format "nfsd: SETATTR" // a neater way to match a format with whitespace
|
||||||
|
format 'nfsd: SETATTR' // yet another way to match a format with whitespace
|
||||||
|
|
||||||
|
line
|
||||||
|
The given line number or range of line numbers is compared
|
||||||
|
against the line number of each dprintk() callsite. A single
|
||||||
|
line number matches the callsite line number exactly. A
|
||||||
|
range of line numbers matches any callsite between the first
|
||||||
|
and last line number inclusive. An empty first number means
|
||||||
|
the first line in the file, an empty line number means the
|
||||||
|
last number in the file. Examples:
|
||||||
|
|
||||||
|
line 1603 // exactly line 1603
|
||||||
|
line 1600-1605 // the six lines from line 1600 to line 1605
|
||||||
|
line -1605 // the 1605 lines from line 1 to line 1605
|
||||||
|
line 1600- // all lines from line 1600 to the end of the file
|
||||||
|
|
||||||
|
The flags specification comprises a change operation followed
|
||||||
|
by one or more flag characters. The change operation is one
|
||||||
|
of the characters:
|
||||||
|
|
||||||
|
-
|
||||||
|
remove the given flags
|
||||||
|
|
||||||
|
+
|
||||||
|
add the given flags
|
||||||
|
|
||||||
|
=
|
||||||
|
set the flags to the given flags
|
||||||
|
|
||||||
|
The flags are:
|
||||||
|
|
||||||
|
p
|
||||||
|
Causes a printk() message to be emitted to dmesg
|
||||||
|
|
||||||
|
Note the regexp ^[-+=][scp]+$ matches a flags specification.
|
||||||
|
Note also that there is no convenient syntax to remove all
|
||||||
|
the flags at once, you need to use "-psc".
|
||||||
|
|
||||||
|
Examples
|
||||||
|
========
|
||||||
|
|
||||||
|
// enable the message at line 1603 of file svcsock.c
|
||||||
|
nullarbor:~ # echo -n 'file svcsock.c line 1603 +p' >
|
||||||
|
<debugfs>/dynamic_debug/control
|
||||||
|
|
||||||
|
// enable all the messages in file svcsock.c
|
||||||
|
nullarbor:~ # echo -n 'file svcsock.c +p' >
|
||||||
|
<debugfs>/dynamic_debug/control
|
||||||
|
|
||||||
|
// enable all the messages in the NFS server module
|
||||||
|
nullarbor:~ # echo -n 'module nfsd +p' >
|
||||||
|
<debugfs>/dynamic_debug/control
|
||||||
|
|
||||||
|
// enable all 12 messages in the function svc_process()
|
||||||
|
nullarbor:~ # echo -n 'func svc_process +p' >
|
||||||
|
<debugfs>/dynamic_debug/control
|
||||||
|
|
||||||
|
// disable all 12 messages in the function svc_process()
|
||||||
|
nullarbor:~ # echo -n 'func svc_process -p' >
|
||||||
|
<debugfs>/dynamic_debug/control
|
||||||
|
|
||||||
|
// enable messages for NFS calls READ, READLINK, READDIR and READDIR+.
|
||||||
|
nullarbor:~ # echo -n 'format "nfsd: READ" +p' >
|
||||||
|
<debugfs>/dynamic_debug/control
|
|
@ -337,3 +337,12 @@ Why: In 2.6.18 the Secmark concept was introduced to replace the "compat_net"
|
||||||
Secmark, it is time to deprecate the older mechanism and start the
|
Secmark, it is time to deprecate the older mechanism and start the
|
||||||
process of removing the old code.
|
process of removing the old code.
|
||||||
Who: Paul Moore <paul.moore@hp.com>
|
Who: Paul Moore <paul.moore@hp.com>
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
What: sysfs ui for changing p4-clockmod parameters
|
||||||
|
When: September 2009
|
||||||
|
Why: See commits 129f8ae9b1b5be94517da76009ea956e89104ce8 and
|
||||||
|
e088e4c9cdb618675874becb91b2fd581ee707e6.
|
||||||
|
Removal is subject to fixing any remaining bugs in ACPI which may
|
||||||
|
cause the thermal throttling not to happen at the right time.
|
||||||
|
Who: Dave Jones <davej@redhat.com>, Matthew Garrett <mjg@redhat.com>
|
||||||
|
|
|
@ -373,10 +373,11 @@ Filesystem Resizing http://ext2resize.sourceforge.net/
|
||||||
Compression (*) http://e2compr.sourceforge.net/
|
Compression (*) http://e2compr.sourceforge.net/
|
||||||
|
|
||||||
Implementations for:
|
Implementations for:
|
||||||
Windows 95/98/NT/2000 http://uranus.it.swin.edu.au/~jn/linux/Explore2fs.htm
|
Windows 95/98/NT/2000 http://www.chrysocome.net/explore2fs
|
||||||
Windows 95 (*) http://www.yipton.demon.co.uk/content.html#FSDEXT2
|
Windows 95 (*) http://www.yipton.net/content.html#FSDEXT2
|
||||||
DOS client (*) ftp://metalab.unc.edu/pub/Linux/system/filesystems/ext2/
|
DOS client (*) ftp://metalab.unc.edu/pub/Linux/system/filesystems/ext2/
|
||||||
OS/2 http://perso.wanadoo.fr/matthieu.willm/ext2-os2/
|
OS/2 (+) ftp://metalab.unc.edu/pub/Linux/system/filesystems/ext2/
|
||||||
RISC OS client ftp://ftp.barnet.ac.uk/pub/acorn/armlinux/iscafs/
|
RISC OS client http://www.esw-heim.tu-clausthal.de/~marco/smorbrod/IscaFS/
|
||||||
|
|
||||||
(*) no longer actively developed/supported (as of Apr 2001)
|
(*) no longer actively developed/supported (as of Apr 2001)
|
||||||
|
(+) no longer actively developed/supported (as of Mar 2009)
|
||||||
|
|
|
@ -198,5 +198,5 @@ kernel source: <file:fs/ext3/>
|
||||||
programs: http://e2fsprogs.sourceforge.net/
|
programs: http://e2fsprogs.sourceforge.net/
|
||||||
http://ext2resize.sourceforge.net
|
http://ext2resize.sourceforge.net
|
||||||
|
|
||||||
useful links: http://www-106.ibm.com/developerworks/linux/library/l-fs7/
|
useful links: http://www.ibm.com/developerworks/library/l-fs7.html
|
||||||
http://www-106.ibm.com/developerworks/linux/library/l-fs8/
|
http://www.ibm.com/developerworks/library/l-fs8.html
|
||||||
|
|
|
@ -22,7 +22,7 @@ Squashfs filesystem features versus Cramfs:
|
||||||
|
|
||||||
Squashfs Cramfs
|
Squashfs Cramfs
|
||||||
|
|
||||||
Max filesystem size: 2^64 16 MiB
|
Max filesystem size: 2^64 256 MiB
|
||||||
Max file size: ~ 2 TiB 16 MiB
|
Max file size: ~ 2 TiB 16 MiB
|
||||||
Max files: unlimited unlimited
|
Max files: unlimited unlimited
|
||||||
Max directories: unlimited unlimited
|
Max directories: unlimited unlimited
|
||||||
|
|
|
@ -42,6 +42,11 @@ Supported chips:
|
||||||
Addresses scanned: I2C 0x4e
|
Addresses scanned: I2C 0x4e
|
||||||
Datasheet: Publicly available at the Maxim website
|
Datasheet: Publicly available at the Maxim website
|
||||||
http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3497
|
http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3497
|
||||||
|
* Maxim MAX6648
|
||||||
|
Prefix: 'max6646'
|
||||||
|
Addresses scanned: I2C 0x4c
|
||||||
|
Datasheet: Publicly available at the Maxim website
|
||||||
|
http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3500
|
||||||
* Maxim MAX6649
|
* Maxim MAX6649
|
||||||
Prefix: 'max6646'
|
Prefix: 'max6646'
|
||||||
Addresses scanned: I2C 0x4c
|
Addresses scanned: I2C 0x4c
|
||||||
|
@ -74,6 +79,11 @@ Supported chips:
|
||||||
0x4c, 0x4d and 0x4e
|
0x4c, 0x4d and 0x4e
|
||||||
Datasheet: Publicly available at the Maxim website
|
Datasheet: Publicly available at the Maxim website
|
||||||
http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3370
|
http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3370
|
||||||
|
* Maxim MAX6692
|
||||||
|
Prefix: 'max6646'
|
||||||
|
Addresses scanned: I2C 0x4c
|
||||||
|
Datasheet: Publicly available at the Maxim website
|
||||||
|
http://www.maxim-ic.com/quick_view2.cfm/qv_pk/3500
|
||||||
|
|
||||||
|
|
||||||
Author: Jean Delvare <khali@linux-fr.org>
|
Author: Jean Delvare <khali@linux-fr.org>
|
||||||
|
|
|
@ -44,6 +44,7 @@ parameter is applicable:
|
||||||
FB The frame buffer device is enabled.
|
FB The frame buffer device is enabled.
|
||||||
HW Appropriate hardware is enabled.
|
HW Appropriate hardware is enabled.
|
||||||
IA-64 IA-64 architecture is enabled.
|
IA-64 IA-64 architecture is enabled.
|
||||||
|
IMA Integrity measurement architecture is enabled.
|
||||||
IOSCHED More than one I/O scheduler is enabled.
|
IOSCHED More than one I/O scheduler is enabled.
|
||||||
IP_PNP IP DHCP, BOOTP, or RARP is enabled.
|
IP_PNP IP DHCP, BOOTP, or RARP is enabled.
|
||||||
ISAPNP ISA PnP code is enabled.
|
ISAPNP ISA PnP code is enabled.
|
||||||
|
@ -902,6 +903,15 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||||
ihash_entries= [KNL]
|
ihash_entries= [KNL]
|
||||||
Set number of hash buckets for inode cache.
|
Set number of hash buckets for inode cache.
|
||||||
|
|
||||||
|
ima_audit= [IMA]
|
||||||
|
Format: { "0" | "1" }
|
||||||
|
0 -- integrity auditing messages. (Default)
|
||||||
|
1 -- enable informational integrity auditing messages.
|
||||||
|
|
||||||
|
ima_hash= [IMA]
|
||||||
|
Formt: { "sha1" | "md5" }
|
||||||
|
default: "sha1"
|
||||||
|
|
||||||
in2000= [HW,SCSI]
|
in2000= [HW,SCSI]
|
||||||
See header of drivers/scsi/in2000.c.
|
See header of drivers/scsi/in2000.c.
|
||||||
|
|
||||||
|
@ -1816,11 +1826,6 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||||
autoconfiguration.
|
autoconfiguration.
|
||||||
Ranges are in pairs (memory base and size).
|
Ranges are in pairs (memory base and size).
|
||||||
|
|
||||||
dynamic_printk Enables pr_debug()/dev_dbg() calls if
|
|
||||||
CONFIG_DYNAMIC_PRINTK_DEBUG has been enabled.
|
|
||||||
These can also be switched on/off via
|
|
||||||
<debugfs>/dynamic_printk/modules
|
|
||||||
|
|
||||||
print-fatal-signals=
|
print-fatal-signals=
|
||||||
[KNL] debug: print fatal signals
|
[KNL] debug: print fatal signals
|
||||||
print-fatal-signals=1: print segfault info to
|
print-fatal-signals=1: print segfault info to
|
||||||
|
|
Двоичные данные
Documentation/logo.gif
Двоичные данные
Documentation/logo.gif
Двоичный файл не отображается.
До Ширина: | Высота: | Размер: 16 KiB |
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
После Ширина: | Высота: | Размер: 303 KiB |
|
@ -1,13 +1,4 @@
|
||||||
This is the full-colour version of the currently unofficial Linux logo
|
Tux is taking a three month sabbatical to work as a barber, so Tuz is
|
||||||
("currently unofficial" just means that there has been no paperwork and
|
standing in. He's taken pains to ensure you'll hardly notice.
|
||||||
that I have not really announced it yet). It was created by Larry Ewing,
|
|
||||||
and is freely usable as long as you acknowledge Larry as the original
|
|
||||||
artist.
|
|
||||||
|
|
||||||
Note that there are black-and-white versions of this available that
|
|
||||||
scale down to smaller sizes and are better for letterheads or whatever
|
|
||||||
you want to use it for: for the full range of logos take a look at
|
|
||||||
Larry's web-page:
|
|
||||||
|
|
||||||
http://www.isc.tamu.edu/~lewing/linux/
|
|
||||||
|
|
||||||
|
Image by Andrew McGown and Josh Bush. Image is licensed CC BY-SA.
|
||||||
|
|
|
@ -346,6 +346,9 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||||
sbirq - IRQ # for CMI8330 chip (SB16)
|
sbirq - IRQ # for CMI8330 chip (SB16)
|
||||||
sbdma8 - 8bit DMA # for CMI8330 chip (SB16)
|
sbdma8 - 8bit DMA # for CMI8330 chip (SB16)
|
||||||
sbdma16 - 16bit DMA # for CMI8330 chip (SB16)
|
sbdma16 - 16bit DMA # for CMI8330 chip (SB16)
|
||||||
|
fmport - (optional) OPL3 I/O port
|
||||||
|
mpuport - (optional) MPU401 I/O port
|
||||||
|
mpuirq - (optional) MPU401 irq #
|
||||||
|
|
||||||
This module supports multiple cards and autoprobe.
|
This module supports multiple cards and autoprobe.
|
||||||
|
|
||||||
|
@ -388,34 +391,11 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||||
|
|
||||||
The power-management is supported.
|
The power-management is supported.
|
||||||
|
|
||||||
Module snd-cs4232
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
Module for sound cards based on CS4232/CS4232A ISA chips.
|
|
||||||
|
|
||||||
isapnp - ISA PnP detection - 0 = disable, 1 = enable (default)
|
|
||||||
|
|
||||||
with isapnp=0, the following options are available:
|
|
||||||
|
|
||||||
port - port # for CS4232 chip (PnP setup - 0x534)
|
|
||||||
cport - control port # for CS4232 chip (PnP setup - 0x120,0x210,0xf00)
|
|
||||||
mpu_port - port # for MPU-401 UART (PnP setup - 0x300), -1 = disable
|
|
||||||
fm_port - FM port # for CS4232 chip (PnP setup - 0x388), -1 = disable
|
|
||||||
irq - IRQ # for CS4232 chip (5,7,9,11,12,15)
|
|
||||||
mpu_irq - IRQ # for MPU-401 UART (9,11,12,15)
|
|
||||||
dma1 - first DMA # for CS4232 chip (0,1,3)
|
|
||||||
dma2 - second DMA # for Yamaha CS4232 chip (0,1,3), -1 = disable
|
|
||||||
|
|
||||||
This module supports multiple cards. This module does not support autoprobe
|
|
||||||
(if ISA PnP is not used) thus main port must be specified!!! Other ports are
|
|
||||||
optional.
|
|
||||||
|
|
||||||
The power-management is supported.
|
|
||||||
|
|
||||||
Module snd-cs4236
|
Module snd-cs4236
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
Module for sound cards based on CS4235/CS4236/CS4236B/CS4237B/
|
Module for sound cards based on CS4232/CS4232A,
|
||||||
|
CS4235/CS4236/CS4236B/CS4237B/
|
||||||
CS4238B/CS4239 ISA chips.
|
CS4238B/CS4239 ISA chips.
|
||||||
|
|
||||||
isapnp - ISA PnP detection - 0 = disable, 1 = enable (default)
|
isapnp - ISA PnP detection - 0 = disable, 1 = enable (default)
|
||||||
|
@ -437,6 +417,9 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||||
|
|
||||||
The power-management is supported.
|
The power-management is supported.
|
||||||
|
|
||||||
|
This module is aliased as snd-cs4232 since it provides the old
|
||||||
|
snd-cs4232 functionality, too.
|
||||||
|
|
||||||
Module snd-cs4281
|
Module snd-cs4281
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
@ -606,6 +589,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||||
Module for ESS AudioDrive ES-1688 and ES-688 sound cards.
|
Module for ESS AudioDrive ES-1688 and ES-688 sound cards.
|
||||||
|
|
||||||
port - port # for ES-1688 chip (0x220,0x240,0x260)
|
port - port # for ES-1688 chip (0x220,0x240,0x260)
|
||||||
|
fm_port - port # for OPL3 (option; share the same port as default)
|
||||||
mpu_port - port # for MPU-401 port (0x300,0x310,0x320,0x330), -1 = disable (default)
|
mpu_port - port # for MPU-401 port (0x300,0x310,0x320,0x330), -1 = disable (default)
|
||||||
irq - IRQ # for ES-1688 chip (5,7,9,10)
|
irq - IRQ # for ES-1688 chip (5,7,9,10)
|
||||||
mpu_irq - IRQ # for MPU-401 port (5,7,9,10)
|
mpu_irq - IRQ # for MPU-401 port (5,7,9,10)
|
||||||
|
@ -757,6 +741,9 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||||
model - force the model name
|
model - force the model name
|
||||||
position_fix - Fix DMA pointer (0 = auto, 1 = use LPIB, 2 = POSBUF)
|
position_fix - Fix DMA pointer (0 = auto, 1 = use LPIB, 2 = POSBUF)
|
||||||
probe_mask - Bitmask to probe codecs (default = -1, meaning all slots)
|
probe_mask - Bitmask to probe codecs (default = -1, meaning all slots)
|
||||||
|
When the bit 8 (0x100) is set, the lower 8 bits are used
|
||||||
|
as the "fixed" codec slots; i.e. the driver probes the
|
||||||
|
slots regardless what hardware reports back
|
||||||
probe_only - Only probing and no codec initialization (default=off);
|
probe_only - Only probing and no codec initialization (default=off);
|
||||||
Useful to check the initial codec status for debugging
|
Useful to check the initial codec status for debugging
|
||||||
bdl_pos_adj - Specifies the DMA IRQ timing delay in samples.
|
bdl_pos_adj - Specifies the DMA IRQ timing delay in samples.
|
||||||
|
@ -1185,6 +1172,54 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||||
|
|
||||||
This module supports multiple devices and PnP.
|
This module supports multiple devices and PnP.
|
||||||
|
|
||||||
|
Module snd-msnd-classic
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
Module for Turtle Beach MultiSound Classic, Tahiti or Monterey
|
||||||
|
soundcards.
|
||||||
|
|
||||||
|
io - Port # for msnd-classic card
|
||||||
|
irq - IRQ # for msnd-classic card
|
||||||
|
mem - Memory address (0xb0000, 0xc8000, 0xd0000, 0xd8000,
|
||||||
|
0xe0000 or 0xe8000)
|
||||||
|
write_ndelay - enable write ndelay (default = 1)
|
||||||
|
calibrate_signal - calibrate signal (default = 0)
|
||||||
|
isapnp - ISA PnP detection - 0 = disable, 1 = enable (default)
|
||||||
|
digital - Digital daughterboard present (default = 0)
|
||||||
|
cfg - Config port (0x250, 0x260 or 0x270) default = PnP
|
||||||
|
reset - Reset all devices
|
||||||
|
mpu_io - MPU401 I/O port
|
||||||
|
mpu_irq - MPU401 irq#
|
||||||
|
ide_io0 - IDE port #0
|
||||||
|
ide_io1 - IDE port #1
|
||||||
|
ide_irq - IDE irq#
|
||||||
|
joystick_io - Joystick I/O port
|
||||||
|
|
||||||
|
The driver requires firmware files "turtlebeach/msndinit.bin" and
|
||||||
|
"turtlebeach/msndperm.bin" in the proper firmware directory.
|
||||||
|
|
||||||
|
See Documentation/sound/oss/MultiSound for important information
|
||||||
|
about this driver. Note that it has been discontinued, but the
|
||||||
|
Voyetra Turtle Beach knowledge base entry for it is still available
|
||||||
|
at
|
||||||
|
http://www.turtlebeach.com/site/kb_ftp/790.asp
|
||||||
|
|
||||||
|
Module snd-msnd-pinnacle
|
||||||
|
------------------------
|
||||||
|
|
||||||
|
Module for Turtle Beach MultiSound Pinnacle/Fiji soundcards.
|
||||||
|
|
||||||
|
io - Port # for pinnacle/fiji card
|
||||||
|
irq - IRQ # for pinnalce/fiji card
|
||||||
|
mem - Memory address (0xb0000, 0xc8000, 0xd0000, 0xd8000,
|
||||||
|
0xe0000 or 0xe8000)
|
||||||
|
write_ndelay - enable write ndelay (default = 1)
|
||||||
|
calibrate_signal - calibrate signal (default = 0)
|
||||||
|
isapnp - ISA PnP detection - 0 = disable, 1 = enable (default)
|
||||||
|
|
||||||
|
The driver requires firmware files "turtlebeach/pndspini.bin" and
|
||||||
|
"turtlebeach/pndsperm.bin" in the proper firmware directory.
|
||||||
|
|
||||||
Module snd-mtpav
|
Module snd-mtpav
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
|
@ -1824,7 +1859,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
Module for sound cards based on the Asus AV100/AV200 chips,
|
Module for sound cards based on the Asus AV100/AV200 chips,
|
||||||
i.e., Xonar D1, DX, D2, D2X and HDAV1.3 (Deluxe).
|
i.e., Xonar D1, DX, D2, D2X, HDAV1.3 (Deluxe), and Essence STX.
|
||||||
|
|
||||||
This module supports autoprobe and multiple cards.
|
This module supports autoprobe and multiple cards.
|
||||||
|
|
||||||
|
|
|
@ -56,6 +56,7 @@ ALC262
|
||||||
sony-assamd Sony ASSAMD
|
sony-assamd Sony ASSAMD
|
||||||
toshiba-s06 Toshiba S06
|
toshiba-s06 Toshiba S06
|
||||||
toshiba-rx1 Toshiba RX1
|
toshiba-rx1 Toshiba RX1
|
||||||
|
tyan Tyan Thunder n6650W (S2915-E)
|
||||||
ultra Samsung Q1 Ultra Vista model
|
ultra Samsung Q1 Ultra Vista model
|
||||||
lenovo-3000 Lenovo 3000 y410
|
lenovo-3000 Lenovo 3000 y410
|
||||||
nec NEC Versa S9100
|
nec NEC Versa S9100
|
||||||
|
@ -261,6 +262,8 @@ Conexant 5051
|
||||||
=============
|
=============
|
||||||
laptop Basic Laptop config (default)
|
laptop Basic Laptop config (default)
|
||||||
hp HP Spartan laptop
|
hp HP Spartan laptop
|
||||||
|
hp-dv6736 HP dv6736
|
||||||
|
lenovo-x200 Lenovo X200 laptop
|
||||||
|
|
||||||
STAC9200
|
STAC9200
|
||||||
========
|
========
|
||||||
|
@ -278,6 +281,7 @@ STAC9200
|
||||||
gateway-m4 Gateway laptops with EAPD control
|
gateway-m4 Gateway laptops with EAPD control
|
||||||
gateway-m4-2 Gateway laptops with EAPD control
|
gateway-m4-2 Gateway laptops with EAPD control
|
||||||
panasonic Panasonic CF-74
|
panasonic Panasonic CF-74
|
||||||
|
auto BIOS setup (default)
|
||||||
|
|
||||||
STAC9205/9254
|
STAC9205/9254
|
||||||
=============
|
=============
|
||||||
|
@ -285,6 +289,8 @@ STAC9205/9254
|
||||||
dell-m42 Dell (unknown)
|
dell-m42 Dell (unknown)
|
||||||
dell-m43 Dell Precision
|
dell-m43 Dell Precision
|
||||||
dell-m44 Dell Inspiron
|
dell-m44 Dell Inspiron
|
||||||
|
eapd Keep EAPD on (e.g. Gateway T1616)
|
||||||
|
auto BIOS setup (default)
|
||||||
|
|
||||||
STAC9220/9221
|
STAC9220/9221
|
||||||
=============
|
=============
|
||||||
|
@ -308,6 +314,7 @@ STAC9220/9221
|
||||||
dell-d82 Dell (unknown)
|
dell-d82 Dell (unknown)
|
||||||
dell-m81 Dell (unknown)
|
dell-m81 Dell (unknown)
|
||||||
dell-m82 Dell XPS M1210
|
dell-m82 Dell XPS M1210
|
||||||
|
auto BIOS setup (default)
|
||||||
|
|
||||||
STAC9202/9250/9251
|
STAC9202/9250/9251
|
||||||
==================
|
==================
|
||||||
|
@ -319,6 +326,7 @@ STAC9202/9250/9251
|
||||||
m3 Some Gateway MX series laptops
|
m3 Some Gateway MX series laptops
|
||||||
m5 Some Gateway MX series laptops (MP6954)
|
m5 Some Gateway MX series laptops (MP6954)
|
||||||
m6 Some Gateway NX series laptops
|
m6 Some Gateway NX series laptops
|
||||||
|
auto BIOS setup (default)
|
||||||
|
|
||||||
STAC9227/9228/9229/927x
|
STAC9227/9228/9229/927x
|
||||||
=======================
|
=======================
|
||||||
|
@ -328,6 +336,7 @@ STAC9227/9228/9229/927x
|
||||||
5stack D965 5stack + SPDIF
|
5stack D965 5stack + SPDIF
|
||||||
dell-3stack Dell Dimension E520
|
dell-3stack Dell Dimension E520
|
||||||
dell-bios Fixes with Dell BIOS setup
|
dell-bios Fixes with Dell BIOS setup
|
||||||
|
auto BIOS setup (default)
|
||||||
|
|
||||||
STAC92HD71B*
|
STAC92HD71B*
|
||||||
============
|
============
|
||||||
|
@ -335,7 +344,10 @@ STAC92HD71B*
|
||||||
dell-m4-1 Dell desktops
|
dell-m4-1 Dell desktops
|
||||||
dell-m4-2 Dell desktops
|
dell-m4-2 Dell desktops
|
||||||
dell-m4-3 Dell desktops
|
dell-m4-3 Dell desktops
|
||||||
hp-m4 HP dv laptops
|
hp-m4 HP mini 1000
|
||||||
|
hp-dv5 HP dv series
|
||||||
|
hp-hdx HP HDX series
|
||||||
|
auto BIOS setup (default)
|
||||||
|
|
||||||
STAC92HD73*
|
STAC92HD73*
|
||||||
===========
|
===========
|
||||||
|
@ -345,13 +357,16 @@ STAC92HD73*
|
||||||
dell-m6-dmic Dell desktops/laptops with digital mics
|
dell-m6-dmic Dell desktops/laptops with digital mics
|
||||||
dell-m6 Dell desktops/laptops with both type of mics
|
dell-m6 Dell desktops/laptops with both type of mics
|
||||||
dell-eq Dell desktops/laptops
|
dell-eq Dell desktops/laptops
|
||||||
|
auto BIOS setup (default)
|
||||||
|
|
||||||
STAC92HD83*
|
STAC92HD83*
|
||||||
===========
|
===========
|
||||||
ref Reference board
|
ref Reference board
|
||||||
mic-ref Reference board with power managment for ports
|
mic-ref Reference board with power managment for ports
|
||||||
|
dell-s14 Dell laptop
|
||||||
|
auto BIOS setup (default)
|
||||||
|
|
||||||
STAC9872
|
STAC9872
|
||||||
========
|
========
|
||||||
vaio Setup for VAIO FE550G/SZ110
|
vaio VAIO laptop without SPDIF
|
||||||
vaio-ar Setup for VAIO AR
|
auto BIOS setup (default)
|
||||||
|
|
|
@ -109,6 +109,13 @@ slot, pass `probe_mask=1`. For the first and the third slots, pass
|
||||||
Since 2.6.29 kernel, the driver has a more robust probing method, so
|
Since 2.6.29 kernel, the driver has a more robust probing method, so
|
||||||
this error might happen rarely, though.
|
this error might happen rarely, though.
|
||||||
|
|
||||||
|
On a machine with a broken BIOS, sometimes you need to force the
|
||||||
|
driver to probe the codec slots the hardware doesn't report for use.
|
||||||
|
In such a case, turn the bit 8 (0x100) of `probe_mask` option on.
|
||||||
|
Then the rest 8 bits are passed as the codec slots to probe
|
||||||
|
unconditionally. For example, `probe_mask=0x103` will force to probe
|
||||||
|
the codec slots 0 and 1 no matter what the hardware reports.
|
||||||
|
|
||||||
|
|
||||||
Interrupt Handling
|
Interrupt Handling
|
||||||
~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~
|
||||||
|
@ -358,10 +365,26 @@ modelname::
|
||||||
to this file.
|
to this file.
|
||||||
init_verbs::
|
init_verbs::
|
||||||
The extra verbs to execute at initialization. You can add a verb by
|
The extra verbs to execute at initialization. You can add a verb by
|
||||||
writing to this file. Pass tree numbers, nid, verb and parameter.
|
writing to this file. Pass three numbers: nid, verb and parameter
|
||||||
|
(separated with a space).
|
||||||
hints::
|
hints::
|
||||||
Shows hint strings for codec parsers for any use. Right now it's
|
Shows / stores hint strings for codec parsers for any use.
|
||||||
not used.
|
Its format is `key = value`. For example, passing `hp_detect = yes`
|
||||||
|
to IDT/STAC codec parser will result in the disablement of the
|
||||||
|
headphone detection.
|
||||||
|
init_pin_configs::
|
||||||
|
Shows the initial pin default config values set by BIOS.
|
||||||
|
driver_pin_configs::
|
||||||
|
Shows the pin default values set by the codec parser explicitly.
|
||||||
|
This doesn't show all pin values but only the changed values by
|
||||||
|
the parser. That is, if the parser doesn't change the pin default
|
||||||
|
config values by itself, this will contain nothing.
|
||||||
|
user_pin_configs::
|
||||||
|
Shows the pin default config values to override the BIOS setup.
|
||||||
|
Writing this (with two numbers, NID and value) appends the new
|
||||||
|
value. The given will be used instead of the initial BIOS value at
|
||||||
|
the next reconfiguration time. Note that this config will override
|
||||||
|
even the driver pin configs, too.
|
||||||
reconfig::
|
reconfig::
|
||||||
Triggers the codec re-configuration. When any value is written to
|
Triggers the codec re-configuration. When any value is written to
|
||||||
this file, the driver re-initialize and parses the codec tree
|
this file, the driver re-initialize and parses the codec tree
|
||||||
|
@ -371,6 +394,14 @@ clear::
|
||||||
Resets the codec, removes the mixer elements and PCM stuff of the
|
Resets the codec, removes the mixer elements and PCM stuff of the
|
||||||
specified codec, and clear all init verbs and hints.
|
specified codec, and clear all init verbs and hints.
|
||||||
|
|
||||||
|
For example, when you want to change the pin default configuration
|
||||||
|
value of the pin widget 0x14 to 0x9993013f, and let the driver
|
||||||
|
re-configure based on that state, run like below:
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
# echo 0x14 0x9993013f > /sys/class/sound/hwC0D0/user_pin_configs
|
||||||
|
# echo 1 > /sys/class/sound/hwC0D0/reconfig
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
Power-Saving
|
Power-Saving
|
||||||
~~~~~~~~~~~~
|
~~~~~~~~~~~~
|
||||||
|
@ -461,6 +492,16 @@ run with `--no-upload` option, and attach the generated file.
|
||||||
There are some other useful options. See `--help` option output for
|
There are some other useful options. See `--help` option output for
|
||||||
details.
|
details.
|
||||||
|
|
||||||
|
When a probe error occurs or when the driver obviously assigns a
|
||||||
|
mismatched model, it'd be helpful to load the driver with
|
||||||
|
`probe_only=1` option (at best after the cold reboot) and run
|
||||||
|
alsa-info at this state. With this option, the driver won't configure
|
||||||
|
the mixer and PCM but just tries to probe the codec slot. After
|
||||||
|
probing, the proc file is available, so you can get the raw codec
|
||||||
|
information before modified by the driver. Of course, the driver
|
||||||
|
isn't usable with `probe_only=1`. But you can continue the
|
||||||
|
configuration via hwdep sysfs file if hda-reconfig option is enabled.
|
||||||
|
|
||||||
|
|
||||||
hda-verb
|
hda-verb
|
||||||
~~~~~~~~
|
~~~~~~~~
|
||||||
|
|
|
@ -116,6 +116,9 @@ SOC_DAPM_SINGLE("HiFi Playback Switch", WM8731_APANA, 4, 1, 0),
|
||||||
SND_SOC_DAPM_MIXER("Output Mixer", WM8731_PWR, 4, 1, wm8731_output_mixer_controls,
|
SND_SOC_DAPM_MIXER("Output Mixer", WM8731_PWR, 4, 1, wm8731_output_mixer_controls,
|
||||||
ARRAY_SIZE(wm8731_output_mixer_controls)),
|
ARRAY_SIZE(wm8731_output_mixer_controls)),
|
||||||
|
|
||||||
|
If you dont want the mixer elements prefixed with the name of the mixer widget,
|
||||||
|
you can use SND_SOC_DAPM_MIXER_NAMED_CTL instead. the parameters are the same
|
||||||
|
as for SND_SOC_DAPM_MIXER.
|
||||||
|
|
||||||
2.3 Platform/Machine domain Widgets
|
2.3 Platform/Machine domain Widgets
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
To configure the Crystal CS423x sound chip and activate its DSP functions,
|
|
||||||
modules may be loaded in this order:
|
|
||||||
|
|
||||||
modprobe sound
|
|
||||||
insmod ad1848
|
|
||||||
insmod uart401
|
|
||||||
insmod cs4232 io=* irq=* dma=* dma2=*
|
|
||||||
|
|
||||||
This is the meaning of the parameters:
|
|
||||||
|
|
||||||
io--I/O address of the Windows Sound System (normally 0x534)
|
|
||||||
irq--IRQ of this device
|
|
||||||
dma and dma2--DMA channels (DMA2 may be 0)
|
|
||||||
|
|
||||||
On some cards, the board attempts to do non-PnP setup, and fails. If you
|
|
||||||
have problems, use Linux' PnP facilities.
|
|
||||||
|
|
||||||
To get MIDI facilities add
|
|
||||||
|
|
||||||
insmod opl3 io=*
|
|
||||||
|
|
||||||
where "io" is the I/O address of the OPL3 synthesizer. This will be shown
|
|
||||||
in /proc/sys/pnp and is normally 0x388.
|
|
|
@ -80,7 +80,7 @@ Notes:
|
||||||
additional features.
|
additional features.
|
||||||
|
|
||||||
2. The commercial OSS driver may be obtained from the site:
|
2. The commercial OSS driver may be obtained from the site:
|
||||||
http://www/opensound.com. This may be used for cards that
|
http://www.opensound.com. This may be used for cards that
|
||||||
are unsupported by the kernel driver, or may be used
|
are unsupported by the kernel driver, or may be used
|
||||||
by other operating systems.
|
by other operating systems.
|
||||||
|
|
||||||
|
|
|
@ -229,16 +229,26 @@ struct usbmon_packet {
|
||||||
int status; /* 28: */
|
int status; /* 28: */
|
||||||
unsigned int length; /* 32: Length of data (submitted or actual) */
|
unsigned int length; /* 32: Length of data (submitted or actual) */
|
||||||
unsigned int len_cap; /* 36: Delivered length */
|
unsigned int len_cap; /* 36: Delivered length */
|
||||||
unsigned char setup[8]; /* 40: Only for Control 'S' */
|
union { /* 40: */
|
||||||
}; /* 48 bytes total */
|
unsigned char setup[SETUP_LEN]; /* Only for Control S-type */
|
||||||
|
struct iso_rec { /* Only for ISO */
|
||||||
|
int error_count;
|
||||||
|
int numdesc;
|
||||||
|
} iso;
|
||||||
|
} s;
|
||||||
|
int interval; /* 48: Only for Interrupt and ISO */
|
||||||
|
int start_frame; /* 52: For ISO */
|
||||||
|
unsigned int xfer_flags; /* 56: copy of URB's transfer_flags */
|
||||||
|
unsigned int ndesc; /* 60: Actual number of ISO descriptors */
|
||||||
|
}; /* 64 total length */
|
||||||
|
|
||||||
These events can be received from a character device by reading with read(2),
|
These events can be received from a character device by reading with read(2),
|
||||||
with an ioctl(2), or by accessing the buffer with mmap.
|
with an ioctl(2), or by accessing the buffer with mmap. However, read(2)
|
||||||
|
only returns first 48 bytes for compatibility reasons.
|
||||||
|
|
||||||
The character device is usually called /dev/usbmonN, where N is the USB bus
|
The character device is usually called /dev/usbmonN, where N is the USB bus
|
||||||
number. Number zero (/dev/usbmon0) is special and means "all buses".
|
number. Number zero (/dev/usbmon0) is special and means "all buses".
|
||||||
However, this feature is not implemented yet. Note that specific naming
|
Note that specific naming policy is set by your Linux distribution.
|
||||||
policy is set by your Linux distribution.
|
|
||||||
|
|
||||||
If you create /dev/usbmon0 by hand, make sure that it is owned by root
|
If you create /dev/usbmon0 by hand, make sure that it is owned by root
|
||||||
and has mode 0600. Otherwise, unpriviledged users will be able to snoop
|
and has mode 0600. Otherwise, unpriviledged users will be able to snoop
|
||||||
|
@ -279,9 +289,10 @@ size is out of [unspecified] bounds for this kernel, the call fails with
|
||||||
This call returns the current size of the buffer in bytes.
|
This call returns the current size of the buffer in bytes.
|
||||||
|
|
||||||
MON_IOCX_GET, defined as _IOW(MON_IOC_MAGIC, 6, struct mon_get_arg)
|
MON_IOCX_GET, defined as _IOW(MON_IOC_MAGIC, 6, struct mon_get_arg)
|
||||||
|
MON_IOCX_GETX, defined as _IOW(MON_IOC_MAGIC, 10, struct mon_get_arg)
|
||||||
|
|
||||||
This call waits for events to arrive if none were in the kernel buffer,
|
These calls wait for events to arrive if none were in the kernel buffer,
|
||||||
then returns the first event. Its argument is a pointer to the following
|
then return the first event. The argument is a pointer to the following
|
||||||
structure:
|
structure:
|
||||||
|
|
||||||
struct mon_get_arg {
|
struct mon_get_arg {
|
||||||
|
@ -294,6 +305,8 @@ Before the call, hdr, data, and alloc should be filled. Upon return, the area
|
||||||
pointed by hdr contains the next event structure, and the data buffer contains
|
pointed by hdr contains the next event structure, and the data buffer contains
|
||||||
the data, if any. The event is removed from the kernel buffer.
|
the data, if any. The event is removed from the kernel buffer.
|
||||||
|
|
||||||
|
The MON_IOCX_GET copies 48 bytes, MON_IOCX_GETX copies 64 bytes.
|
||||||
|
|
||||||
MON_IOCX_MFETCH, defined as _IOWR(MON_IOC_MAGIC, 7, struct mon_mfetch_arg)
|
MON_IOCX_MFETCH, defined as _IOWR(MON_IOC_MAGIC, 7, struct mon_mfetch_arg)
|
||||||
|
|
||||||
This ioctl is primarily used when the application accesses the buffer
|
This ioctl is primarily used when the application accesses the buffer
|
||||||
|
|
35
MAINTAINERS
35
MAINTAINERS
|
@ -1271,6 +1271,12 @@ L: linux-crypto@vger.kernel.org
|
||||||
T: git kernel.org:/pub/scm/linux/kernel/git/herbert/crypto-2.6.git
|
T: git kernel.org:/pub/scm/linux/kernel/git/herbert/crypto-2.6.git
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
|
CRYPTOGRAPHIC RANDOM NUMBER GENERATOR
|
||||||
|
P: Neil Horman
|
||||||
|
M: nhorman@tuxdriver.com
|
||||||
|
L: linux-crypto@vger.kernel.org
|
||||||
|
S: Maintained
|
||||||
|
|
||||||
CS5535 Audio ALSA driver
|
CS5535 Audio ALSA driver
|
||||||
P: Jaya Kumar
|
P: Jaya Kumar
|
||||||
M: jayakumar.alsa@gmail.com
|
M: jayakumar.alsa@gmail.com
|
||||||
|
@ -1471,8 +1477,6 @@ L: linux-acpi@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
|
|
||||||
DOCUMENTATION (/Documentation directory)
|
DOCUMENTATION (/Documentation directory)
|
||||||
P: Michael Kerrisk
|
|
||||||
M: mtk.manpages@gmail.com
|
|
||||||
P: Randy Dunlap
|
P: Randy Dunlap
|
||||||
M: rdunlap@xenotime.net
|
M: rdunlap@xenotime.net
|
||||||
L: linux-doc@vger.kernel.org
|
L: linux-doc@vger.kernel.org
|
||||||
|
@ -2220,6 +2224,11 @@ M: stefanr@s5r6.in-berlin.de
|
||||||
L: linux1394-devel@lists.sourceforge.net
|
L: linux1394-devel@lists.sourceforge.net
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
|
INTEGRITY MEASUREMENT ARCHITECTURE (IMA)
|
||||||
|
P: Mimi Zohar
|
||||||
|
M: zohar@us.ibm.com
|
||||||
|
S: Supported
|
||||||
|
|
||||||
IMS TWINTURBO FRAMEBUFFER DRIVER
|
IMS TWINTURBO FRAMEBUFFER DRIVER
|
||||||
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
L: linux-fbdev-devel@lists.sourceforge.net (moderated for non-subscribers)
|
||||||
S: Orphan
|
S: Orphan
|
||||||
|
@ -2881,7 +2890,7 @@ P: Michael Kerrisk
|
||||||
M: mtk.manpages@gmail.com
|
M: mtk.manpages@gmail.com
|
||||||
W: http://www.kernel.org/doc/man-pages
|
W: http://www.kernel.org/doc/man-pages
|
||||||
L: linux-man@vger.kernel.org
|
L: linux-man@vger.kernel.org
|
||||||
S: Supported
|
S: Maintained
|
||||||
|
|
||||||
MARVELL LIBERTAS WIRELESS DRIVER
|
MARVELL LIBERTAS WIRELESS DRIVER
|
||||||
P: Dan Williams
|
P: Dan Williams
|
||||||
|
@ -3354,10 +3363,8 @@ S: Maintained
|
||||||
PARISC ARCHITECTURE
|
PARISC ARCHITECTURE
|
||||||
P: Kyle McMartin
|
P: Kyle McMartin
|
||||||
M: kyle@mcmartin.ca
|
M: kyle@mcmartin.ca
|
||||||
P: Matthew Wilcox
|
P: Helge Deller
|
||||||
M: matthew@wil.cx
|
M: deller@gmx.de
|
||||||
P: Grant Grundler
|
|
||||||
M: grundler@parisc-linux.org
|
|
||||||
L: linux-parisc@vger.kernel.org
|
L: linux-parisc@vger.kernel.org
|
||||||
W: http://www.parisc-linux.org/
|
W: http://www.parisc-linux.org/
|
||||||
T: git kernel.org:/pub/scm/linux/kernel/git/kyle/parisc-2.6.git
|
T: git kernel.org:/pub/scm/linux/kernel/git/kyle/parisc-2.6.git
|
||||||
|
@ -3856,6 +3863,7 @@ M: jmorris@namei.org
|
||||||
L: linux-kernel@vger.kernel.org
|
L: linux-kernel@vger.kernel.org
|
||||||
L: linux-security-module@vger.kernel.org (suggested Cc:)
|
L: linux-security-module@vger.kernel.org (suggested Cc:)
|
||||||
T: git kernel.org:pub/scm/linux/kernel/git/jmorris/security-testing-2.6.git
|
T: git kernel.org:pub/scm/linux/kernel/git/jmorris/security-testing-2.6.git
|
||||||
|
W: http://security.wiki.kernel.org/
|
||||||
S: Supported
|
S: Supported
|
||||||
|
|
||||||
SECURITY CONTACT
|
SECURITY CONTACT
|
||||||
|
@ -4297,6 +4305,19 @@ L: tlan-devel@lists.sourceforge.net (subscribers-only)
|
||||||
W: http://sourceforge.net/projects/tlan/
|
W: http://sourceforge.net/projects/tlan/
|
||||||
S: Maintained
|
S: Maintained
|
||||||
|
|
||||||
|
TOMOYO SECURITY MODULE
|
||||||
|
P: Kentaro Takeda
|
||||||
|
M: takedakn@nttdata.co.jp
|
||||||
|
P: Tetsuo Handa
|
||||||
|
M: penguin-kernel@I-love.SAKURA.ne.jp
|
||||||
|
L: linux-kernel@vger.kernel.org (kernel issues)
|
||||||
|
L: tomoyo-users-en@lists.sourceforge.jp (subscribers-only, for developers and users in English)
|
||||||
|
L: tomoyo-dev@lists.sourceforge.jp (subscribers-only, for developers in Japanese)
|
||||||
|
L: tomoyo-users@lists.sourceforge.jp (subscribers-only, for users in Japanese)
|
||||||
|
W: http://tomoyo.sourceforge.jp/
|
||||||
|
T: quilt http://svn.sourceforge.jp/svnroot/tomoyo/trunk/2.2.x/tomoyo-lsm/patches/
|
||||||
|
S: Maintained
|
||||||
|
|
||||||
TOSHIBA ACPI EXTRAS DRIVER
|
TOSHIBA ACPI EXTRAS DRIVER
|
||||||
P: John Belmonte
|
P: John Belmonte
|
||||||
M: toshiba_acpi@memebeam.org
|
M: toshiba_acpi@memebeam.org
|
||||||
|
|
24
Makefile
24
Makefile
|
@ -1,8 +1,8 @@
|
||||||
VERSION = 2
|
VERSION = 2
|
||||||
PATCHLEVEL = 6
|
PATCHLEVEL = 6
|
||||||
SUBLEVEL = 29
|
SUBLEVEL = 29
|
||||||
EXTRAVERSION = -rc7
|
EXTRAVERSION =
|
||||||
NAME = Erotic Pickled Herring
|
NAME = Temporary Tasmanian Devil
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
# To see a list of typical targets execute "make help"
|
# To see a list of typical targets execute "make help"
|
||||||
|
@ -566,6 +566,12 @@ KBUILD_CFLAGS += $(call cc-option,-Wdeclaration-after-statement,)
|
||||||
# disable pointer signed / unsigned warnings in gcc 4.0
|
# disable pointer signed / unsigned warnings in gcc 4.0
|
||||||
KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,)
|
KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,)
|
||||||
|
|
||||||
|
# disable invalid "can't wrap" optimzations for signed / pointers
|
||||||
|
KBUILD_CFLAGS += $(call cc-option,-fwrapv)
|
||||||
|
|
||||||
|
# revert to pre-gcc-4.4 behaviour of .eh_frame
|
||||||
|
KBUILD_CFLAGS += $(call cc-option,-fno-dwarf2-cfi-asm)
|
||||||
|
|
||||||
# Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments
|
# Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments
|
||||||
# But warn user when we do so
|
# But warn user when we do so
|
||||||
warn-assign = \
|
warn-assign = \
|
||||||
|
@ -904,12 +910,18 @@ localver = $(subst $(space),, $(string) \
|
||||||
# and if the SCM is know a tag from the SCM is appended.
|
# and if the SCM is know a tag from the SCM is appended.
|
||||||
# The appended tag is determined by the SCM used.
|
# The appended tag is determined by the SCM used.
|
||||||
#
|
#
|
||||||
# Currently, only git is supported.
|
# .scmversion is used when generating rpm packages so we do not loose
|
||||||
# Other SCMs can edit scripts/setlocalversion and add the appropriate
|
# the version information from the SCM when we do the build of the kernel
|
||||||
# checks as needed.
|
# from the copied source
|
||||||
ifdef CONFIG_LOCALVERSION_AUTO
|
ifdef CONFIG_LOCALVERSION_AUTO
|
||||||
|
|
||||||
|
ifeq ($(wildcard .scmversion),)
|
||||||
_localver-auto = $(shell $(CONFIG_SHELL) \
|
_localver-auto = $(shell $(CONFIG_SHELL) \
|
||||||
$(srctree)/scripts/setlocalversion $(srctree))
|
$(srctree)/scripts/setlocalversion $(srctree))
|
||||||
|
else
|
||||||
|
_localver-auto = $(shell cat .scmversion 2> /dev/null)
|
||||||
|
endif
|
||||||
|
|
||||||
localver-auto = $(LOCALVERSION)$(_localver-auto)
|
localver-auto = $(LOCALVERSION)$(_localver-auto)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -1537,7 +1549,7 @@ quiet_cmd_depmod = DEPMOD $(KERNELRELEASE)
|
||||||
cmd_depmod = \
|
cmd_depmod = \
|
||||||
if [ -r System.map -a -x $(DEPMOD) ]; then \
|
if [ -r System.map -a -x $(DEPMOD) ]; then \
|
||||||
$(DEPMOD) -ae -F System.map \
|
$(DEPMOD) -ae -F System.map \
|
||||||
$(if $(strip $(INSTALL_MOD_PATH)), -b $(INSTALL_MOD_PATH) -r) \
|
$(if $(strip $(INSTALL_MOD_PATH)), -b $(INSTALL_MOD_PATH) ) \
|
||||||
$(KERNELRELEASE); \
|
$(KERNELRELEASE); \
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -111,6 +111,7 @@ ENTRY(mcount)
|
||||||
.globl mcount_call
|
.globl mcount_call
|
||||||
mcount_call:
|
mcount_call:
|
||||||
bl ftrace_stub
|
bl ftrace_stub
|
||||||
|
ldr lr, [fp, #-4] @ restore lr
|
||||||
ldmia sp!, {r0-r3, pc}
|
ldmia sp!, {r0-r3, pc}
|
||||||
|
|
||||||
ENTRY(ftrace_caller)
|
ENTRY(ftrace_caller)
|
||||||
|
@ -122,6 +123,7 @@ ENTRY(ftrace_caller)
|
||||||
.globl ftrace_call
|
.globl ftrace_call
|
||||||
ftrace_call:
|
ftrace_call:
|
||||||
bl ftrace_stub
|
bl ftrace_stub
|
||||||
|
ldr lr, [fp, #-4] @ restore lr
|
||||||
ldmia sp!, {r0-r3, pc}
|
ldmia sp!, {r0-r3, pc}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
@ -133,6 +135,7 @@ ENTRY(mcount)
|
||||||
adr r0, ftrace_stub
|
adr r0, ftrace_stub
|
||||||
cmp r0, r2
|
cmp r0, r2
|
||||||
bne trace
|
bne trace
|
||||||
|
ldr lr, [fp, #-4] @ restore lr
|
||||||
ldmia sp!, {r0-r3, pc}
|
ldmia sp!, {r0-r3, pc}
|
||||||
|
|
||||||
trace:
|
trace:
|
||||||
|
@ -141,6 +144,7 @@ trace:
|
||||||
sub r0, r0, #MCOUNT_INSN_SIZE
|
sub r0, r0, #MCOUNT_INSN_SIZE
|
||||||
mov lr, pc
|
mov lr, pc
|
||||||
mov pc, r2
|
mov pc, r2
|
||||||
|
mov lr, r1 @ restore lr
|
||||||
ldmia sp!, {r0-r3, pc}
|
ldmia sp!, {r0-r3, pc}
|
||||||
|
|
||||||
#endif /* CONFIG_DYNAMIC_FTRACE */
|
#endif /* CONFIG_DYNAMIC_FTRACE */
|
||||||
|
|
|
@ -88,7 +88,7 @@ void set_fiq_handler(void *start, unsigned int length)
|
||||||
* disable irqs for the duration. Note - these functions are almost
|
* disable irqs for the duration. Note - these functions are almost
|
||||||
* entirely coded in assembly.
|
* entirely coded in assembly.
|
||||||
*/
|
*/
|
||||||
void __attribute__((naked)) set_fiq_regs(struct pt_regs *regs)
|
void __naked set_fiq_regs(struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
register unsigned long tmp;
|
register unsigned long tmp;
|
||||||
asm volatile (
|
asm volatile (
|
||||||
|
@ -106,7 +106,7 @@ void __attribute__((naked)) set_fiq_regs(struct pt_regs *regs)
|
||||||
: "r" (®s->ARM_r8), "I" (PSR_I_BIT | PSR_F_BIT | FIQ_MODE));
|
: "r" (®s->ARM_r8), "I" (PSR_I_BIT | PSR_F_BIT | FIQ_MODE));
|
||||||
}
|
}
|
||||||
|
|
||||||
void __attribute__((naked)) get_fiq_regs(struct pt_regs *regs)
|
void __naked get_fiq_regs(struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
register unsigned long tmp;
|
register unsigned long tmp;
|
||||||
asm volatile (
|
asm volatile (
|
||||||
|
|
|
@ -347,6 +347,111 @@ void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data)
|
||||||
void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) {}
|
void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) {}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* --------------------------------------------------------------------
|
||||||
|
* Compact Flash (PCMCIA or IDE)
|
||||||
|
* -------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#if defined(CONFIG_AT91_CF) || defined(CONFIG_AT91_CF_MODULE) || \
|
||||||
|
defined(CONFIG_BLK_DEV_IDE_AT91) || defined(CONFIG_BLK_DEV_IDE_AT91_MODULE)
|
||||||
|
|
||||||
|
static struct at91_cf_data cf0_data;
|
||||||
|
|
||||||
|
static struct resource cf0_resources[] = {
|
||||||
|
[0] = {
|
||||||
|
.start = AT91_CHIPSELECT_4,
|
||||||
|
.end = AT91_CHIPSELECT_4 + SZ_256M - 1,
|
||||||
|
.flags = IORESOURCE_MEM | IORESOURCE_MEM_8AND16BIT,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct platform_device cf0_device = {
|
||||||
|
.id = 0,
|
||||||
|
.dev = {
|
||||||
|
.platform_data = &cf0_data,
|
||||||
|
},
|
||||||
|
.resource = cf0_resources,
|
||||||
|
.num_resources = ARRAY_SIZE(cf0_resources),
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct at91_cf_data cf1_data;
|
||||||
|
|
||||||
|
static struct resource cf1_resources[] = {
|
||||||
|
[0] = {
|
||||||
|
.start = AT91_CHIPSELECT_5,
|
||||||
|
.end = AT91_CHIPSELECT_5 + SZ_256M - 1,
|
||||||
|
.flags = IORESOURCE_MEM | IORESOURCE_MEM_8AND16BIT,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct platform_device cf1_device = {
|
||||||
|
.id = 1,
|
||||||
|
.dev = {
|
||||||
|
.platform_data = &cf1_data,
|
||||||
|
},
|
||||||
|
.resource = cf1_resources,
|
||||||
|
.num_resources = ARRAY_SIZE(cf1_resources),
|
||||||
|
};
|
||||||
|
|
||||||
|
void __init at91_add_device_cf(struct at91_cf_data *data)
|
||||||
|
{
|
||||||
|
unsigned long ebi0_csa;
|
||||||
|
struct platform_device *pdev;
|
||||||
|
|
||||||
|
if (!data)
|
||||||
|
return;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* assign CS4 or CS5 to SMC with Compact Flash logic support,
|
||||||
|
* we assume SMC timings are configured by board code,
|
||||||
|
* except True IDE where timings are controlled by driver
|
||||||
|
*/
|
||||||
|
ebi0_csa = at91_sys_read(AT91_MATRIX_EBI0CSA);
|
||||||
|
switch (data->chipselect) {
|
||||||
|
case 4:
|
||||||
|
at91_set_A_periph(AT91_PIN_PD6, 0); /* EBI0_NCS4/CFCS0 */
|
||||||
|
ebi0_csa |= AT91_MATRIX_EBI0_CS4A_SMC_CF1;
|
||||||
|
cf0_data = *data;
|
||||||
|
pdev = &cf0_device;
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
at91_set_A_periph(AT91_PIN_PD7, 0); /* EBI0_NCS5/CFCS1 */
|
||||||
|
ebi0_csa |= AT91_MATRIX_EBI0_CS5A_SMC_CF2;
|
||||||
|
cf1_data = *data;
|
||||||
|
pdev = &cf1_device;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
printk(KERN_ERR "AT91 CF: bad chip-select requested (%u)\n",
|
||||||
|
data->chipselect);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
at91_sys_write(AT91_MATRIX_EBI0CSA, ebi0_csa);
|
||||||
|
|
||||||
|
if (data->det_pin) {
|
||||||
|
at91_set_gpio_input(data->det_pin, 1);
|
||||||
|
at91_set_deglitch(data->det_pin, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data->irq_pin) {
|
||||||
|
at91_set_gpio_input(data->irq_pin, 1);
|
||||||
|
at91_set_deglitch(data->irq_pin, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data->vcc_pin)
|
||||||
|
/* initially off */
|
||||||
|
at91_set_gpio_output(data->vcc_pin, 0);
|
||||||
|
|
||||||
|
/* enable EBI controlled pins */
|
||||||
|
at91_set_A_periph(AT91_PIN_PD5, 1); /* NWAIT */
|
||||||
|
at91_set_A_periph(AT91_PIN_PD8, 0); /* CFCE1 */
|
||||||
|
at91_set_A_periph(AT91_PIN_PD9, 0); /* CFCE2 */
|
||||||
|
at91_set_A_periph(AT91_PIN_PD14, 0); /* CFNRW */
|
||||||
|
|
||||||
|
pdev->name = (data->flags & AT91_CF_TRUE_IDE) ? "at91_ide" : "at91_cf";
|
||||||
|
platform_device_register(pdev);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
void __init at91_add_device_cf(struct at91_cf_data *data) {}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* --------------------------------------------------------------------
|
/* --------------------------------------------------------------------
|
||||||
* NAND / SmartMedia
|
* NAND / SmartMedia
|
||||||
|
|
|
@ -56,6 +56,9 @@ struct at91_cf_data {
|
||||||
u8 vcc_pin; /* power switching */
|
u8 vcc_pin; /* power switching */
|
||||||
u8 rst_pin; /* card reset */
|
u8 rst_pin; /* card reset */
|
||||||
u8 chipselect; /* EBI Chip Select number */
|
u8 chipselect; /* EBI Chip Select number */
|
||||||
|
u8 flags;
|
||||||
|
#define AT91_CF_TRUE_IDE 0x01
|
||||||
|
#define AT91_IDE_SWAP_A0_A2 0x02
|
||||||
};
|
};
|
||||||
extern void __init at91_add_device_cf(struct at91_cf_data *data);
|
extern void __init at91_add_device_cf(struct at91_cf_data *data);
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,8 @@
|
||||||
|
|
||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
|
|
||||||
|
struct i2c_board_info;
|
||||||
|
|
||||||
struct ep93xx_eth_data
|
struct ep93xx_eth_data
|
||||||
{
|
{
|
||||||
unsigned char dev_addr[6];
|
unsigned char dev_addr[6];
|
||||||
|
|
|
@ -23,6 +23,8 @@
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/platform_device.h>
|
#include <linux/platform_device.h>
|
||||||
#include <linux/gpio.h>
|
#include <linux/gpio.h>
|
||||||
|
|
||||||
|
#include <mach/irqs.h>
|
||||||
#include <mach/hardware.h>
|
#include <mach/hardware.h>
|
||||||
|
|
||||||
static struct resource imx_csi_resources[] = {
|
static struct resource imx_csi_resources[] = {
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include <asm/mach/arch.h>
|
#include <asm/mach/arch.h>
|
||||||
#include <asm/mach/time.h>
|
#include <asm/mach/time.h>
|
||||||
|
|
||||||
|
#include <mach/irqs.h>
|
||||||
#include <mach/hardware.h>
|
#include <mach/hardware.h>
|
||||||
#include <mach/common.h>
|
#include <mach/common.h>
|
||||||
#include <mach/imx-uart.h>
|
#include <mach/imx-uart.h>
|
||||||
|
|
|
@ -178,7 +178,9 @@ static int __init omap3_beagle_i2c_init(void)
|
||||||
#ifdef CONFIG_I2C2_OMAP_BEAGLE
|
#ifdef CONFIG_I2C2_OMAP_BEAGLE
|
||||||
omap_register_i2c_bus(2, 400, NULL, 0);
|
omap_register_i2c_bus(2, 400, NULL, 0);
|
||||||
#endif
|
#endif
|
||||||
omap_register_i2c_bus(3, 400, NULL, 0);
|
/* Bus 3 is attached to the DVI port where devices like the pico DLP
|
||||||
|
* projector don't work reliably with 400kHz */
|
||||||
|
omap_register_i2c_bus(3, 100, NULL, 0);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -434,6 +434,10 @@ void __init orion5x_uart1_init(void)
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* XOR engine
|
* XOR engine
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
struct mv_xor_platform_shared_data orion5x_xor_shared_data = {
|
||||||
|
.dram = &orion5x_mbus_dram_info,
|
||||||
|
};
|
||||||
|
|
||||||
static struct resource orion5x_xor_shared_resources[] = {
|
static struct resource orion5x_xor_shared_resources[] = {
|
||||||
{
|
{
|
||||||
.name = "xor low",
|
.name = "xor low",
|
||||||
|
@ -451,6 +455,9 @@ static struct resource orion5x_xor_shared_resources[] = {
|
||||||
static struct platform_device orion5x_xor_shared = {
|
static struct platform_device orion5x_xor_shared = {
|
||||||
.name = MV_XOR_SHARED_NAME,
|
.name = MV_XOR_SHARED_NAME,
|
||||||
.id = 0,
|
.id = 0,
|
||||||
|
.dev = {
|
||||||
|
.platform_data = &orion5x_xor_shared_data,
|
||||||
|
},
|
||||||
.num_resources = ARRAY_SIZE(orion5x_xor_shared_resources),
|
.num_resources = ARRAY_SIZE(orion5x_xor_shared_resources),
|
||||||
.resource = orion5x_xor_shared_resources,
|
.resource = orion5x_xor_shared_resources,
|
||||||
};
|
};
|
||||||
|
|
|
@ -135,6 +135,11 @@ static unsigned long e740_pin_config[] __initdata = {
|
||||||
/* IrDA */
|
/* IrDA */
|
||||||
GPIO38_GPIO | MFP_LPM_DRIVE_HIGH,
|
GPIO38_GPIO | MFP_LPM_DRIVE_HIGH,
|
||||||
|
|
||||||
|
/* Audio power control */
|
||||||
|
GPIO16_GPIO, /* AC97 codec AVDD2 supply (analogue power) */
|
||||||
|
GPIO40_GPIO, /* Mic amp power */
|
||||||
|
GPIO41_GPIO, /* Headphone amp power */
|
||||||
|
|
||||||
/* PC Card */
|
/* PC Card */
|
||||||
GPIO8_GPIO, /* CD0 */
|
GPIO8_GPIO, /* CD0 */
|
||||||
GPIO44_GPIO, /* CD1 */
|
GPIO44_GPIO, /* CD1 */
|
||||||
|
|
|
@ -133,6 +133,11 @@ static unsigned long e750_pin_config[] __initdata = {
|
||||||
/* IrDA */
|
/* IrDA */
|
||||||
GPIO38_GPIO | MFP_LPM_DRIVE_HIGH,
|
GPIO38_GPIO | MFP_LPM_DRIVE_HIGH,
|
||||||
|
|
||||||
|
/* Audio power control */
|
||||||
|
GPIO4_GPIO, /* Headphone amp power */
|
||||||
|
GPIO7_GPIO, /* Speaker amp power */
|
||||||
|
GPIO37_GPIO, /* Headphone detect */
|
||||||
|
|
||||||
/* PC Card */
|
/* PC Card */
|
||||||
GPIO8_GPIO, /* CD0 */
|
GPIO8_GPIO, /* CD0 */
|
||||||
GPIO44_GPIO, /* CD1 */
|
GPIO44_GPIO, /* CD1 */
|
||||||
|
|
|
@ -153,6 +153,13 @@ static unsigned long h5000_pin_config[] __initdata = {
|
||||||
GPIO23_SSP1_SCLK,
|
GPIO23_SSP1_SCLK,
|
||||||
GPIO25_SSP1_TXD,
|
GPIO25_SSP1_TXD,
|
||||||
GPIO26_SSP1_RXD,
|
GPIO26_SSP1_RXD,
|
||||||
|
|
||||||
|
/* I2S */
|
||||||
|
GPIO28_I2S_BITCLK_OUT,
|
||||||
|
GPIO29_I2S_SDATA_IN,
|
||||||
|
GPIO30_I2S_SDATA_OUT,
|
||||||
|
GPIO31_I2S_SYNC,
|
||||||
|
GPIO32_I2S_SYSCLK,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -45,6 +45,21 @@
|
||||||
/* e7xx IrDA power control */
|
/* e7xx IrDA power control */
|
||||||
#define GPIO_E7XX_IR_OFF 38
|
#define GPIO_E7XX_IR_OFF 38
|
||||||
|
|
||||||
|
/* e740 audio control GPIOs */
|
||||||
|
#define GPIO_E740_WM9705_nAVDD2 16
|
||||||
|
#define GPIO_E740_MIC_ON 40
|
||||||
|
#define GPIO_E740_AMP_ON 41
|
||||||
|
|
||||||
|
/* e750 audio control GPIOs */
|
||||||
|
#define GPIO_E750_HP_AMP_OFF 4
|
||||||
|
#define GPIO_E750_SPK_AMP_OFF 7
|
||||||
|
#define GPIO_E750_HP_DETECT 37
|
||||||
|
|
||||||
|
/* e800 audio control GPIOs */
|
||||||
|
#define GPIO_E800_HP_DETECT 81
|
||||||
|
#define GPIO_E800_HP_AMP_OFF 82
|
||||||
|
#define GPIO_E800_SPK_AMP_ON 83
|
||||||
|
|
||||||
/* ASIC related GPIOs */
|
/* ASIC related GPIOs */
|
||||||
#define GPIO_ESERIES_TMIO_IRQ 5
|
#define GPIO_ESERIES_TMIO_IRQ 5
|
||||||
#define GPIO_ESERIES_TMIO_PCLR 19
|
#define GPIO_ESERIES_TMIO_PCLR 19
|
||||||
|
|
|
@ -50,7 +50,7 @@
|
||||||
#define SSCR0_TUM (1 << 23) /* Transmit FIFO underrun interrupt mask */
|
#define SSCR0_TUM (1 << 23) /* Transmit FIFO underrun interrupt mask */
|
||||||
#define SSCR0_FRDC (0x07000000) /* Frame rate divider control (mask) */
|
#define SSCR0_FRDC (0x07000000) /* Frame rate divider control (mask) */
|
||||||
#define SSCR0_SlotsPerFrm(x) (((x) - 1) << 24) /* Time slots per frame [1..8] */
|
#define SSCR0_SlotsPerFrm(x) (((x) - 1) << 24) /* Time slots per frame [1..8] */
|
||||||
#define SSCR0_ADC (1 << 30) /* Audio clock select */
|
#define SSCR0_ACS (1 << 30) /* Audio clock select */
|
||||||
#define SSCR0_MOD (1 << 31) /* Mode (normal or network) */
|
#define SSCR0_MOD (1 << 31) /* Mode (normal or network) */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -109,6 +109,11 @@
|
||||||
#define SSSR_TINT (1 << 19) /* Receiver Time-out Interrupt */
|
#define SSSR_TINT (1 << 19) /* Receiver Time-out Interrupt */
|
||||||
#define SSSR_PINT (1 << 18) /* Peripheral Trailing Byte Interrupt */
|
#define SSSR_PINT (1 << 18) /* Peripheral Trailing Byte Interrupt */
|
||||||
|
|
||||||
|
#if defined(CONFIG_PXA3xx)
|
||||||
|
#define SSPSP_EDMYSTOP(x) ((x) << 28) /* Extended Dummy Stop */
|
||||||
|
#define SSPSP_EDMYSTRT(x) ((x) << 26) /* Extended Dummy Start */
|
||||||
|
#endif
|
||||||
|
|
||||||
#define SSPSP_FSRT (1 << 25) /* Frame Sync Relative Timing */
|
#define SSPSP_FSRT (1 << 25) /* Frame Sync Relative Timing */
|
||||||
#define SSPSP_DMYSTOP(x) ((x) << 23) /* Dummy Stop */
|
#define SSPSP_DMYSTOP(x) ((x) << 23) /* Dummy Stop */
|
||||||
#define SSPSP_SFRMWDTH(x) ((x) << 16) /* Serial Frame Width */
|
#define SSPSP_SFRMWDTH(x) ((x) << 16) /* Serial Frame Width */
|
||||||
|
|
|
@ -105,6 +105,12 @@ static unsigned long spitz_pin_config[] __initdata = {
|
||||||
GPIO57_nIOIS16,
|
GPIO57_nIOIS16,
|
||||||
GPIO104_PSKTSEL,
|
GPIO104_PSKTSEL,
|
||||||
|
|
||||||
|
/* I2S */
|
||||||
|
GPIO28_I2S_BITCLK_OUT,
|
||||||
|
GPIO29_I2S_SDATA_IN,
|
||||||
|
GPIO30_I2S_SDATA_OUT,
|
||||||
|
GPIO31_I2S_SYNC,
|
||||||
|
|
||||||
/* MMC */
|
/* MMC */
|
||||||
GPIO32_MMC_CLK,
|
GPIO32_MMC_CLK,
|
||||||
GPIO112_MMC_CMD,
|
GPIO112_MMC_CMD,
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
#include <mach/regs-mem.h>
|
#include <mach/regs-mem.h>
|
||||||
#include <mach/regs-lcd.h>
|
#include <mach/regs-lcd.h>
|
||||||
#include <mach/regs-sdi.h>
|
#include <mach/regs-sdi.h>
|
||||||
#include <asm/plat-s3c24xx/regs-iis.h>
|
#include <plat/regs-iis.h>
|
||||||
#include <plat/regs-spi.h>
|
#include <plat/regs-spi.h>
|
||||||
|
|
||||||
static struct s3c24xx_dma_map __initdata s3c2410_dma_mappings[] = {
|
static struct s3c24xx_dma_map __initdata s3c2410_dma_mappings[] = {
|
||||||
|
|
|
@ -29,13 +29,14 @@
|
||||||
|
|
||||||
#include <mach/bast-map.h>
|
#include <mach/bast-map.h>
|
||||||
#include <mach/bast-irq.h>
|
#include <mach/bast-irq.h>
|
||||||
#include <mach/usb-control.h>
|
|
||||||
#include <mach/regs-gpio.h>
|
#include <mach/regs-gpio.h>
|
||||||
|
|
||||||
#include <mach/hardware.h>
|
#include <mach/hardware.h>
|
||||||
#include <asm/irq.h>
|
#include <asm/irq.h>
|
||||||
|
|
||||||
|
#include <plat/usb-control.h>
|
||||||
#include <plat/devs.h>
|
#include <plat/devs.h>
|
||||||
|
|
||||||
#include "usb-simtec.h"
|
#include "usb-simtec.h"
|
||||||
|
|
||||||
/* control power and monitor over-current events on various Simtec
|
/* control power and monitor over-current events on various Simtec
|
||||||
|
|
|
@ -29,8 +29,8 @@
|
||||||
#include <mach/regs-mem.h>
|
#include <mach/regs-mem.h>
|
||||||
#include <mach/regs-lcd.h>
|
#include <mach/regs-lcd.h>
|
||||||
#include <mach/regs-sdi.h>
|
#include <mach/regs-sdi.h>
|
||||||
#include <asm/plat-s3c24xx/regs-s3c2412-iis.h>
|
#include <plat/regs-s3c2412-iis.h>
|
||||||
#include <asm/plat-s3c24xx/regs-iis.h>
|
#include <plat/regs-iis.h>
|
||||||
#include <plat/regs-spi.h>
|
#include <plat/regs-spi.h>
|
||||||
|
|
||||||
#define MAP(x) { (x)| DMA_CH_VALID, (x)| DMA_CH_VALID, (x)| DMA_CH_VALID, (x)| DMA_CH_VALID }
|
#define MAP(x) { (x)| DMA_CH_VALID, (x)| DMA_CH_VALID, (x)| DMA_CH_VALID, (x)| DMA_CH_VALID }
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
#include <mach/regs-mem.h>
|
#include <mach/regs-mem.h>
|
||||||
#include <mach/regs-lcd.h>
|
#include <mach/regs-lcd.h>
|
||||||
#include <mach/regs-sdi.h>
|
#include <mach/regs-sdi.h>
|
||||||
#include <asm/plat-s3c24xx/regs-iis.h>
|
#include <plat/regs-iis.h>
|
||||||
#include <plat/regs-spi.h>
|
#include <plat/regs-spi.h>
|
||||||
|
|
||||||
static struct s3c24xx_dma_map __initdata s3c2440_dma_mappings[] = {
|
static struct s3c24xx_dma_map __initdata s3c2440_dma_mappings[] = {
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
#include <mach/regs-mem.h>
|
#include <mach/regs-mem.h>
|
||||||
#include <mach/regs-lcd.h>
|
#include <mach/regs-lcd.h>
|
||||||
#include <mach/regs-sdi.h>
|
#include <mach/regs-sdi.h>
|
||||||
#include <asm/plat-s3c24xx/regs-iis.h>
|
#include <plat/regs-iis.h>
|
||||||
#include <plat/regs-spi.h>
|
#include <plat/regs-spi.h>
|
||||||
|
|
||||||
#define MAP(x) { \
|
#define MAP(x) { \
|
||||||
|
|
|
@ -129,7 +129,7 @@ static struct s3c_fb_platdata smdk6410_lcd_pdata __initdata = {
|
||||||
.vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
|
.vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct map_desc smdk6410_iodesc[] = {};
|
static struct map_desc smdk6410_iodesc[] = {};
|
||||||
|
|
||||||
static struct platform_device *smdk6410_devices[] __initdata = {
|
static struct platform_device *smdk6410_devices[] __initdata = {
|
||||||
#ifdef CONFIG_SMDK6410_SD_CH0
|
#ifdef CONFIG_SMDK6410_SD_CH0
|
||||||
|
@ -146,7 +146,7 @@ static struct platform_device *smdk6410_devices[] __initdata = {
|
||||||
|
|
||||||
static struct i2c_board_info i2c_devs0[] __initdata = {
|
static struct i2c_board_info i2c_devs0[] __initdata = {
|
||||||
{ I2C_BOARD_INFO("24c08", 0x50), },
|
{ I2C_BOARD_INFO("24c08", 0x50), },
|
||||||
{ I2C_BOARD_INFO("WM8580", 0X1b), },
|
{ I2C_BOARD_INFO("wm8580", 0x1b), },
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct i2c_board_info i2c_devs1[] __initdata = {
|
static struct i2c_board_info i2c_devs1[] __initdata = {
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/highmem.h>
|
#include <linux/highmem.h>
|
||||||
|
|
||||||
static void __attribute__((naked))
|
static void __naked
|
||||||
feroceon_copy_user_page(void *kto, const void *kfrom)
|
feroceon_copy_user_page(void *kto, const void *kfrom)
|
||||||
{
|
{
|
||||||
asm("\
|
asm("\
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
*
|
*
|
||||||
* FIXME: do we need to handle cache stuff...
|
* FIXME: do we need to handle cache stuff...
|
||||||
*/
|
*/
|
||||||
static void __attribute__((naked))
|
static void __naked
|
||||||
v3_copy_user_page(void *kto, const void *kfrom)
|
v3_copy_user_page(void *kto, const void *kfrom)
|
||||||
{
|
{
|
||||||
asm("\n\
|
asm("\n\
|
||||||
|
|
|
@ -44,7 +44,7 @@ static DEFINE_SPINLOCK(minicache_lock);
|
||||||
* instruction. If your processor does not supply this, you have to write your
|
* instruction. If your processor does not supply this, you have to write your
|
||||||
* own copy_user_highpage that does the right thing.
|
* own copy_user_highpage that does the right thing.
|
||||||
*/
|
*/
|
||||||
static void __attribute__((naked))
|
static void __naked
|
||||||
mc_copy_user_page(void *from, void *to)
|
mc_copy_user_page(void *from, void *to)
|
||||||
{
|
{
|
||||||
asm volatile(
|
asm volatile(
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
* instruction. If your processor does not supply this, you have to write your
|
* instruction. If your processor does not supply this, you have to write your
|
||||||
* own copy_user_highpage that does the right thing.
|
* own copy_user_highpage that does the right thing.
|
||||||
*/
|
*/
|
||||||
static void __attribute__((naked))
|
static void __naked
|
||||||
v4wb_copy_user_page(void *kto, const void *kfrom)
|
v4wb_copy_user_page(void *kto, const void *kfrom)
|
||||||
{
|
{
|
||||||
asm("\
|
asm("\
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
* dirty data in the cache. However, we do have to ensure that
|
* dirty data in the cache. However, we do have to ensure that
|
||||||
* subsequent reads are up to date.
|
* subsequent reads are up to date.
|
||||||
*/
|
*/
|
||||||
static void __attribute__((naked))
|
static void __naked
|
||||||
v4wt_copy_user_page(void *kto, const void *kfrom)
|
v4wt_copy_user_page(void *kto, const void *kfrom)
|
||||||
{
|
{
|
||||||
asm("\
|
asm("\
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
* if we eventually end up using our copied page.
|
* if we eventually end up using our copied page.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
static void __attribute__((naked))
|
static void __naked
|
||||||
xsc3_mc_copy_user_page(void *kto, const void *kfrom)
|
xsc3_mc_copy_user_page(void *kto, const void *kfrom)
|
||||||
{
|
{
|
||||||
asm("\
|
asm("\
|
||||||
|
|
|
@ -42,7 +42,7 @@ static DEFINE_SPINLOCK(minicache_lock);
|
||||||
* Dcache aliasing issue. The writes will be forwarded to the write buffer,
|
* Dcache aliasing issue. The writes will be forwarded to the write buffer,
|
||||||
* and merged as appropriate.
|
* and merged as appropriate.
|
||||||
*/
|
*/
|
||||||
static void __attribute__((naked))
|
static void __naked
|
||||||
mc_copy_user_page(void *from, void *to)
|
mc_copy_user_page(void *from, void *to)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -490,26 +490,30 @@ core_initcall(consistent_init);
|
||||||
*/
|
*/
|
||||||
void dma_cache_maint(const void *start, size_t size, int direction)
|
void dma_cache_maint(const void *start, size_t size, int direction)
|
||||||
{
|
{
|
||||||
const void *end = start + size;
|
void (*inner_op)(const void *, const void *);
|
||||||
|
void (*outer_op)(unsigned long, unsigned long);
|
||||||
|
|
||||||
BUG_ON(!virt_addr_valid(start) || !virt_addr_valid(end - 1));
|
BUG_ON(!virt_addr_valid(start) || !virt_addr_valid(start + size - 1));
|
||||||
|
|
||||||
switch (direction) {
|
switch (direction) {
|
||||||
case DMA_FROM_DEVICE: /* invalidate only */
|
case DMA_FROM_DEVICE: /* invalidate only */
|
||||||
dmac_inv_range(start, end);
|
inner_op = dmac_inv_range;
|
||||||
outer_inv_range(__pa(start), __pa(end));
|
outer_op = outer_inv_range;
|
||||||
break;
|
break;
|
||||||
case DMA_TO_DEVICE: /* writeback only */
|
case DMA_TO_DEVICE: /* writeback only */
|
||||||
dmac_clean_range(start, end);
|
inner_op = dmac_clean_range;
|
||||||
outer_clean_range(__pa(start), __pa(end));
|
outer_op = outer_clean_range;
|
||||||
break;
|
break;
|
||||||
case DMA_BIDIRECTIONAL: /* writeback and invalidate */
|
case DMA_BIDIRECTIONAL: /* writeback and invalidate */
|
||||||
dmac_flush_range(start, end);
|
inner_op = dmac_flush_range;
|
||||||
outer_flush_range(__pa(start), __pa(end));
|
outer_op = outer_flush_range;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
BUG();
|
BUG();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inner_op(start, start + size);
|
||||||
|
outer_op(__pa(start), __pa(start) + size);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(dma_cache_maint);
|
EXPORT_SYMBOL(dma_cache_maint);
|
||||||
|
|
||||||
|
|
|
@ -382,7 +382,7 @@ void __init bootmem_init(void)
|
||||||
for_each_node(node)
|
for_each_node(node)
|
||||||
bootmem_free_node(node, mi);
|
bootmem_free_node(node, mi);
|
||||||
|
|
||||||
high_memory = __va(memend_pfn << PAGE_SHIFT);
|
high_memory = __va((memend_pfn << PAGE_SHIFT) - 1) + 1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This doesn't seem to be used by the Linux memory manager any
|
* This doesn't seem to be used by the Linux memory manager any
|
||||||
|
|
|
@ -124,7 +124,7 @@ int valid_phys_addr_range(unsigned long addr, size_t size)
|
||||||
{
|
{
|
||||||
if (addr < PHYS_OFFSET)
|
if (addr < PHYS_OFFSET)
|
||||||
return 0;
|
return 0;
|
||||||
if (addr + size > __pa(high_memory))
|
if (addr + size >= __pa(high_memory - 1))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -18,7 +18,8 @@ obj-$(CONFIG_CPU_FREQ) += cpu-omap.o
|
||||||
obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o
|
obj-$(CONFIG_OMAP_DM_TIMER) += dmtimer.o
|
||||||
obj-$(CONFIG_OMAP_DEBUG_DEVICES) += debug-devices.o
|
obj-$(CONFIG_OMAP_DEBUG_DEVICES) += debug-devices.o
|
||||||
obj-$(CONFIG_OMAP_DEBUG_LEDS) += debug-leds.o
|
obj-$(CONFIG_OMAP_DEBUG_LEDS) += debug-leds.o
|
||||||
obj-$(CONFIG_I2C_OMAP) += i2c.o
|
i2c-omap-$(CONFIG_I2C_OMAP) := i2c.o
|
||||||
|
obj-y += $(i2c-omap-m) $(i2c-omap-y)
|
||||||
|
|
||||||
# OMAP mailbox framework
|
# OMAP mailbox framework
|
||||||
obj-$(CONFIG_OMAP_MBOX_FWK) += mailbox.o
|
obj-$(CONFIG_OMAP_MBOX_FWK) += mailbox.o
|
||||||
|
|
|
@ -199,21 +199,17 @@ static struct clocksource clocksource_32k = {
|
||||||
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
|
.flags = CLOCK_SOURCE_IS_CONTINUOUS,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
* Rounds down to nearest nsec.
|
|
||||||
*/
|
|
||||||
unsigned long long omap_32k_ticks_to_nsecs(unsigned long ticks_32k)
|
|
||||||
{
|
|
||||||
return cyc2ns(&clocksource_32k, ticks_32k);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Returns current time from boot in nsecs. It's OK for this to wrap
|
* Returns current time from boot in nsecs. It's OK for this to wrap
|
||||||
* around for now, as it's just a relative time stamp.
|
* around for now, as it's just a relative time stamp.
|
||||||
*/
|
*/
|
||||||
unsigned long long sched_clock(void)
|
unsigned long long sched_clock(void)
|
||||||
{
|
{
|
||||||
return omap_32k_ticks_to_nsecs(omap_32k_read());
|
unsigned long long ret;
|
||||||
|
|
||||||
|
ret = (unsigned long long)omap_32k_read();
|
||||||
|
ret = (ret * clocksource_32k.mult_orig) >> clocksource_32k.shift;
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int __init omap_init_clocksource_32k(void)
|
static int __init omap_init_clocksource_32k(void)
|
||||||
|
|
|
@ -35,7 +35,7 @@ extern void omap_map_common_io(void);
|
||||||
extern struct sys_timer omap_timer;
|
extern struct sys_timer omap_timer;
|
||||||
extern void omap_serial_init(void);
|
extern void omap_serial_init(void);
|
||||||
extern void omap_serial_enable_clocks(int enable);
|
extern void omap_serial_enable_clocks(int enable);
|
||||||
#ifdef CONFIG_I2C_OMAP
|
#if defined(CONFIG_I2C_OMAP) || defined(CONFIG_I2C_OMAP_MODULE)
|
||||||
extern int omap_register_i2c_bus(int bus_id, u32 clkrate,
|
extern int omap_register_i2c_bus(int bus_id, u32 clkrate,
|
||||||
struct i2c_board_info const *info,
|
struct i2c_board_info const *info,
|
||||||
unsigned len);
|
unsigned len);
|
||||||
|
|
|
@ -108,7 +108,7 @@
|
||||||
!defined(CONFIG_ARCH_OMAP15XX) && \
|
!defined(CONFIG_ARCH_OMAP15XX) && \
|
||||||
!defined(CONFIG_ARCH_OMAP16XX) && \
|
!defined(CONFIG_ARCH_OMAP16XX) && \
|
||||||
!defined(CONFIG_ARCH_OMAP24XX)
|
!defined(CONFIG_ARCH_OMAP24XX)
|
||||||
#error "Power management for this processor not implemented yet"
|
#warning "Power management for this processor not implemented yet"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __ASSEMBLER__
|
#ifndef __ASSEMBLER__
|
||||||
|
|
|
@ -33,6 +33,9 @@
|
||||||
#define S3C2412_IISCON_RXDMA_ACTIVE (1 << 1)
|
#define S3C2412_IISCON_RXDMA_ACTIVE (1 << 1)
|
||||||
#define S3C2412_IISCON_IIS_ACTIVE (1 << 0)
|
#define S3C2412_IISCON_IIS_ACTIVE (1 << 0)
|
||||||
|
|
||||||
|
#define S3C64XX_IISMOD_IMS_PCLK (0 << 10)
|
||||||
|
#define S3C64XX_IISMOD_IMS_SYSMUX (1 << 10)
|
||||||
|
|
||||||
#define S3C2412_IISMOD_MASTER_INTERNAL (0 << 10)
|
#define S3C2412_IISMOD_MASTER_INTERNAL (0 << 10)
|
||||||
#define S3C2412_IISMOD_MASTER_EXTERNAL (1 << 10)
|
#define S3C2412_IISMOD_MASTER_EXTERNAL (1 << 10)
|
||||||
#define S3C2412_IISMOD_SLAVE (2 << 10)
|
#define S3C2412_IISMOD_SLAVE (2 << 10)
|
||||||
|
@ -44,8 +47,8 @@
|
||||||
#define S3C2412_IISMOD_LR_LLOW (0 << 7)
|
#define S3C2412_IISMOD_LR_LLOW (0 << 7)
|
||||||
#define S3C2412_IISMOD_LR_RLOW (1 << 7)
|
#define S3C2412_IISMOD_LR_RLOW (1 << 7)
|
||||||
#define S3C2412_IISMOD_SDF_IIS (0 << 5)
|
#define S3C2412_IISMOD_SDF_IIS (0 << 5)
|
||||||
#define S3C2412_IISMOD_SDF_MSB (0 << 5)
|
#define S3C2412_IISMOD_SDF_MSB (1 << 5)
|
||||||
#define S3C2412_IISMOD_SDF_LSB (0 << 5)
|
#define S3C2412_IISMOD_SDF_LSB (2 << 5)
|
||||||
#define S3C2412_IISMOD_SDF_MASK (3 << 5)
|
#define S3C2412_IISMOD_SDF_MASK (3 << 5)
|
||||||
#define S3C2412_IISMOD_RCLK_256FS (0 << 3)
|
#define S3C2412_IISMOD_RCLK_256FS (0 << 3)
|
||||||
#define S3C2412_IISMOD_RCLK_512FS (1 << 3)
|
#define S3C2412_IISMOD_RCLK_512FS (1 << 3)
|
|
@ -1,9 +1,9 @@
|
||||||
/* arch/arm/mach-s3c2410/include/mach/usb-control.h
|
/* arch/arm/plat-s3c/include/plat/usb-control.h
|
||||||
*
|
*
|
||||||
* Copyright (c) 2004 Simtec Electronics
|
* Copyright (c) 2004 Simtec Electronics
|
||||||
* Ben Dooks <ben@simtec.co.uk>
|
* Ben Dooks <ben@simtec.co.uk>
|
||||||
*
|
*
|
||||||
* S3C2410 - usb port information
|
* S3C - USB host port information
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License version 2 as
|
* it under the terms of the GNU General Public License version 2 as
|
||||||
|
@ -11,7 +11,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __ASM_ARCH_USBCONTROL_H
|
#ifndef __ASM_ARCH_USBCONTROL_H
|
||||||
#define __ASM_ARCH_USBCONTROL_H "arch/arm/mach-s3c2410/include/mach/usb-control.h"
|
#define __ASM_ARCH_USBCONTROL_H
|
||||||
|
|
||||||
#define S3C_HCDFLG_USED (1)
|
#define S3C_HCDFLG_USED (1)
|
||||||
|
|
|
@ -248,7 +248,7 @@ static struct clk *clks[] __initdata = {
|
||||||
&clk_48m,
|
&clk_48m,
|
||||||
};
|
};
|
||||||
|
|
||||||
void s3c64xx_register_clocks(void)
|
void __init s3c64xx_register_clocks(void)
|
||||||
{
|
{
|
||||||
struct clk *clkp;
|
struct clk *clkp;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
|
@ -417,4 +417,4 @@ static __init int s3c64xx_gpiolib_init(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
arch_initcall(s3c64xx_gpiolib_init);
|
core_initcall(s3c64xx_gpiolib_init);
|
||||||
|
|
|
@ -117,7 +117,7 @@
|
||||||
#define IRQ_ONENAND1 S3C64XX_IRQ_VIC1(12)
|
#define IRQ_ONENAND1 S3C64XX_IRQ_VIC1(12)
|
||||||
#define IRQ_NFC S3C64XX_IRQ_VIC1(13)
|
#define IRQ_NFC S3C64XX_IRQ_VIC1(13)
|
||||||
#define IRQ_CFCON S3C64XX_IRQ_VIC1(14)
|
#define IRQ_CFCON S3C64XX_IRQ_VIC1(14)
|
||||||
#define IRQ_UHOST S3C64XX_IRQ_VIC1(15)
|
#define IRQ_USBH S3C64XX_IRQ_VIC1(15)
|
||||||
#define IRQ_SPI0 S3C64XX_IRQ_VIC1(16)
|
#define IRQ_SPI0 S3C64XX_IRQ_VIC1(16)
|
||||||
#define IRQ_SPI1 S3C64XX_IRQ_VIC1(17)
|
#define IRQ_SPI1 S3C64XX_IRQ_VIC1(17)
|
||||||
#define IRQ_IIC S3C64XX_IRQ_VIC1(18)
|
#define IRQ_IIC S3C64XX_IRQ_VIC1(18)
|
||||||
|
|
|
@ -14,12 +14,15 @@
|
||||||
|
|
||||||
#include <linux/kernel.h>
|
#include <linux/kernel.h>
|
||||||
#include <linux/interrupt.h>
|
#include <linux/interrupt.h>
|
||||||
|
#include <linux/gpio.h>
|
||||||
#include <linux/irq.h>
|
#include <linux/irq.h>
|
||||||
#include <linux/io.h>
|
#include <linux/io.h>
|
||||||
|
|
||||||
#include <asm/hardware/vic.h>
|
#include <asm/hardware/vic.h>
|
||||||
|
|
||||||
#include <plat/regs-irqtype.h>
|
#include <plat/regs-irqtype.h>
|
||||||
|
#include <plat/regs-gpio.h>
|
||||||
|
#include <plat/gpio-cfg.h>
|
||||||
|
|
||||||
#include <mach/map.h>
|
#include <mach/map.h>
|
||||||
#include <plat/cpu.h>
|
#include <plat/cpu.h>
|
||||||
|
@ -74,6 +77,7 @@ static void s3c_irq_eint_maskack(unsigned int irq)
|
||||||
static int s3c_irq_eint_set_type(unsigned int irq, unsigned int type)
|
static int s3c_irq_eint_set_type(unsigned int irq, unsigned int type)
|
||||||
{
|
{
|
||||||
int offs = eint_offset(irq);
|
int offs = eint_offset(irq);
|
||||||
|
int pin;
|
||||||
int shift;
|
int shift;
|
||||||
u32 ctrl, mask;
|
u32 ctrl, mask;
|
||||||
u32 newvalue = 0;
|
u32 newvalue = 0;
|
||||||
|
@ -125,6 +129,15 @@ static int s3c_irq_eint_set_type(unsigned int irq, unsigned int type)
|
||||||
ctrl |= newvalue << shift;
|
ctrl |= newvalue << shift;
|
||||||
__raw_writel(ctrl, reg);
|
__raw_writel(ctrl, reg);
|
||||||
|
|
||||||
|
/* set the GPIO pin appropriately */
|
||||||
|
|
||||||
|
if (offs < 23)
|
||||||
|
pin = S3C64XX_GPN(offs);
|
||||||
|
else
|
||||||
|
pin = S3C64XX_GPM(offs - 23);
|
||||||
|
|
||||||
|
s3c_gpio_cfgpin(pin, S3C_GPIO_SFN(2));
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -181,7 +194,7 @@ static void s3c_irq_demux_eint20_27(unsigned int irq, struct irq_desc *desc)
|
||||||
s3c_irq_demux_eint(20, 27);
|
s3c_irq_demux_eint(20, 27);
|
||||||
}
|
}
|
||||||
|
|
||||||
int __init s3c64xx_init_irq_eint(void)
|
static int __init s3c64xx_init_irq_eint(void)
|
||||||
{
|
{
|
||||||
int irq;
|
int irq;
|
||||||
|
|
||||||
|
|
|
@ -207,7 +207,7 @@ static struct irq_chip s3c_irq_uart = {
|
||||||
|
|
||||||
static void __init s3c64xx_uart_irq(struct uart_irq *uirq)
|
static void __init s3c64xx_uart_irq(struct uart_irq *uirq)
|
||||||
{
|
{
|
||||||
void *reg_base = uirq->regs;
|
void __iomem *reg_base = uirq->regs;
|
||||||
unsigned int irq;
|
unsigned int irq;
|
||||||
int offs;
|
int offs;
|
||||||
|
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
* ext_xtal_mux for want of an actual name from the manual.
|
* ext_xtal_mux for want of an actual name from the manual.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct clk clk_ext_xtal_mux = {
|
static struct clk clk_ext_xtal_mux = {
|
||||||
.name = "ext_xtal",
|
.name = "ext_xtal",
|
||||||
.id = -1,
|
.id = -1,
|
||||||
};
|
};
|
||||||
|
@ -63,7 +63,7 @@ struct clksrc_clk {
|
||||||
void __iomem *reg_divider;
|
void __iomem *reg_divider;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct clk clk_fout_apll = {
|
static struct clk clk_fout_apll = {
|
||||||
.name = "fout_apll",
|
.name = "fout_apll",
|
||||||
.id = -1,
|
.id = -1,
|
||||||
};
|
};
|
||||||
|
@ -78,7 +78,7 @@ static struct clk_sources clk_src_apll = {
|
||||||
.nr_sources = ARRAY_SIZE(clk_src_apll_list),
|
.nr_sources = ARRAY_SIZE(clk_src_apll_list),
|
||||||
};
|
};
|
||||||
|
|
||||||
struct clksrc_clk clk_mout_apll = {
|
static struct clksrc_clk clk_mout_apll = {
|
||||||
.clk = {
|
.clk = {
|
||||||
.name = "mout_apll",
|
.name = "mout_apll",
|
||||||
.id = -1,
|
.id = -1,
|
||||||
|
@ -88,7 +88,7 @@ struct clksrc_clk clk_mout_apll = {
|
||||||
.sources = &clk_src_apll,
|
.sources = &clk_src_apll,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct clk clk_fout_epll = {
|
static struct clk clk_fout_epll = {
|
||||||
.name = "fout_epll",
|
.name = "fout_epll",
|
||||||
.id = -1,
|
.id = -1,
|
||||||
};
|
};
|
||||||
|
@ -103,7 +103,7 @@ static struct clk_sources clk_src_epll = {
|
||||||
.nr_sources = ARRAY_SIZE(clk_src_epll_list),
|
.nr_sources = ARRAY_SIZE(clk_src_epll_list),
|
||||||
};
|
};
|
||||||
|
|
||||||
struct clksrc_clk clk_mout_epll = {
|
static struct clksrc_clk clk_mout_epll = {
|
||||||
.clk = {
|
.clk = {
|
||||||
.name = "mout_epll",
|
.name = "mout_epll",
|
||||||
.id = -1,
|
.id = -1,
|
||||||
|
@ -123,7 +123,7 @@ static struct clk_sources clk_src_mpll = {
|
||||||
.nr_sources = ARRAY_SIZE(clk_src_mpll_list),
|
.nr_sources = ARRAY_SIZE(clk_src_mpll_list),
|
||||||
};
|
};
|
||||||
|
|
||||||
struct clksrc_clk clk_mout_mpll = {
|
static struct clksrc_clk clk_mout_mpll = {
|
||||||
.clk = {
|
.clk = {
|
||||||
.name = "mout_mpll",
|
.name = "mout_mpll",
|
||||||
.id = -1,
|
.id = -1,
|
||||||
|
@ -145,7 +145,7 @@ static unsigned long s3c64xx_clk_doutmpll_get_rate(struct clk *clk)
|
||||||
return rate;
|
return rate;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct clk clk_dout_mpll = {
|
static struct clk clk_dout_mpll = {
|
||||||
.name = "dout_mpll",
|
.name = "dout_mpll",
|
||||||
.id = -1,
|
.id = -1,
|
||||||
.parent = &clk_mout_mpll.clk,
|
.parent = &clk_mout_mpll.clk,
|
||||||
|
@ -189,10 +189,10 @@ static struct clk_sources clkset_uart = {
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct clk *clkset_uhost_list[] = {
|
static struct clk *clkset_uhost_list[] = {
|
||||||
|
&clk_48m,
|
||||||
&clk_mout_epll.clk,
|
&clk_mout_epll.clk,
|
||||||
&clk_dout_mpll,
|
&clk_dout_mpll,
|
||||||
&clk_fin_epll,
|
&clk_fin_epll,
|
||||||
&clk_48m,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct clk_sources clkset_uhost = {
|
static struct clk_sources clkset_uhost = {
|
||||||
|
@ -239,10 +239,12 @@ static int s3c64xx_setrate_clksrc(struct clk *clk, unsigned long rate)
|
||||||
|
|
||||||
rate = clk_round_rate(clk, rate);
|
rate = clk_round_rate(clk, rate);
|
||||||
div = clk_get_rate(clk->parent) / rate;
|
div = clk_get_rate(clk->parent) / rate;
|
||||||
|
if (div > 16)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
val = __raw_readl(reg);
|
val = __raw_readl(reg);
|
||||||
val &= ~sclk->mask;
|
val &= ~(0xf << sclk->shift);
|
||||||
val |= (rate - 1) << sclk->shift;
|
val |= (div - 1) << sclk->shift;
|
||||||
__raw_writel(val, reg);
|
__raw_writel(val, reg);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -351,7 +353,7 @@ static struct clksrc_clk clk_mmc2 = {
|
||||||
|
|
||||||
static struct clksrc_clk clk_usbhost = {
|
static struct clksrc_clk clk_usbhost = {
|
||||||
.clk = {
|
.clk = {
|
||||||
.name = "usb-host-bus",
|
.name = "usb-bus-host",
|
||||||
.id = -1,
|
.id = -1,
|
||||||
.ctrlbit = S3C_CLKCON_SCLK_UHOST,
|
.ctrlbit = S3C_CLKCON_SCLK_UHOST,
|
||||||
.enable = s3c64xx_sclk_ctrl,
|
.enable = s3c64xx_sclk_ctrl,
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
#
|
#
|
||||||
# http://www.arm.linux.org.uk/developer/machines/?action=new
|
# http://www.arm.linux.org.uk/developer/machines/?action=new
|
||||||
#
|
#
|
||||||
# Last update: Sun Nov 30 16:39:36 2008
|
# Last update: Thu Mar 12 18:01:45 2009
|
||||||
#
|
#
|
||||||
# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
|
# machine_is_xxx CONFIG_xxxx MACH_TYPE_xxx number
|
||||||
#
|
#
|
||||||
|
@ -1811,7 +1811,7 @@ pilz_pmi5 MACH_PILZ_PMI5 PILZ_PMI5 1820
|
||||||
jade MACH_JADE JADE 1821
|
jade MACH_JADE JADE 1821
|
||||||
ks8695_softplc MACH_KS8695_SOFTPLC KS8695_SOFTPLC 1822
|
ks8695_softplc MACH_KS8695_SOFTPLC KS8695_SOFTPLC 1822
|
||||||
gprisc3 MACH_GPRISC3 GPRISC3 1823
|
gprisc3 MACH_GPRISC3 GPRISC3 1823
|
||||||
stamp9260 MACH_STAMP9260 STAMP9260 1824
|
stamp9g20 MACH_STAMP9G20 STAMP9G20 1824
|
||||||
smdk6430 MACH_SMDK6430 SMDK6430 1825
|
smdk6430 MACH_SMDK6430 SMDK6430 1825
|
||||||
smdkc100 MACH_SMDKC100 SMDKC100 1826
|
smdkc100 MACH_SMDKC100 SMDKC100 1826
|
||||||
tavorevb MACH_TAVOREVB TAVOREVB 1827
|
tavorevb MACH_TAVOREVB TAVOREVB 1827
|
||||||
|
@ -1993,4 +1993,134 @@ spark MACH_SPARK SPARK 2002
|
||||||
benzina MACH_BENZINA BENZINA 2003
|
benzina MACH_BENZINA BENZINA 2003
|
||||||
blaze MACH_BLAZE BLAZE 2004
|
blaze MACH_BLAZE BLAZE 2004
|
||||||
linkstation_ls_hgl MACH_LINKSTATION_LS_HGL LINKSTATION_LS_HGL 2005
|
linkstation_ls_hgl MACH_LINKSTATION_LS_HGL LINKSTATION_LS_HGL 2005
|
||||||
htcvenus MACH_HTCVENUS HTCVENUS 2006
|
htckovsky MACH_HTCVENUS HTCVENUS 2006
|
||||||
|
sony_prs505 MACH_SONY_PRS505 SONY_PRS505 2007
|
||||||
|
hanlin_v3 MACH_HANLIN_V3 HANLIN_V3 2008
|
||||||
|
sapphira MACH_SAPPHIRA SAPPHIRA 2009
|
||||||
|
dack_sda_01 MACH_DACK_SDA_01 DACK_SDA_01 2010
|
||||||
|
armbox MACH_ARMBOX ARMBOX 2011
|
||||||
|
harris_rvp MACH_HARRIS_RVP HARRIS_RVP 2012
|
||||||
|
ribaldo MACH_RIBALDO RIBALDO 2013
|
||||||
|
agora MACH_AGORA AGORA 2014
|
||||||
|
omap3_mini MACH_OMAP3_MINI OMAP3_MINI 2015
|
||||||
|
a9sam6432_b MACH_A9SAM6432_B A9SAM6432_B 2016
|
||||||
|
usg2410 MACH_USG2410 USG2410 2017
|
||||||
|
pc72052_i10_revb MACH_PC72052_I10_REVB PC72052_I10_REVB 2018
|
||||||
|
mx35_exm32 MACH_MX35_EXM32 MX35_EXM32 2019
|
||||||
|
topas910 MACH_TOPAS910 TOPAS910 2020
|
||||||
|
hyena MACH_HYENA HYENA 2021
|
||||||
|
pospax MACH_POSPAX POSPAX 2022
|
||||||
|
hdl_gx MACH_HDL_GX HDL_GX 2023
|
||||||
|
ctera_4bay MACH_CTERA_4BAY CTERA_4BAY 2024
|
||||||
|
ctera_plug_c MACH_CTERA_PLUG_C CTERA_PLUG_C 2025
|
||||||
|
crwea_plug_i MACH_CRWEA_PLUG_I CRWEA_PLUG_I 2026
|
||||||
|
egauge2 MACH_EGAUGE2 EGAUGE2 2027
|
||||||
|
didj MACH_DIDJ DIDJ 2028
|
||||||
|
m_s3c2443 MACH_MEISTER MEISTER 2029
|
||||||
|
htcblackstone MACH_HTCBLACKSTONE HTCBLACKSTONE 2030
|
||||||
|
cpuat9g20 MACH_CPUAT9G20 CPUAT9G20 2031
|
||||||
|
smdk6440 MACH_SMDK6440 SMDK6440 2032
|
||||||
|
omap_35xx_mvp MACH_OMAP_35XX_MVP OMAP_35XX_MVP 2033
|
||||||
|
ctera_plug_i MACH_CTERA_PLUG_I CTERA_PLUG_I 2034
|
||||||
|
pvg610_100 MACH_PVG610 PVG610 2035
|
||||||
|
hprw6815 MACH_HPRW6815 HPRW6815 2036
|
||||||
|
omap3_oswald MACH_OMAP3_OSWALD OMAP3_OSWALD 2037
|
||||||
|
nas4220b MACH_NAS4220B NAS4220B 2038
|
||||||
|
htcraphael_cdma MACH_HTCRAPHAEL_CDMA HTCRAPHAEL_CDMA 2039
|
||||||
|
htcdiamond_cdma MACH_HTCDIAMOND_CDMA HTCDIAMOND_CDMA 2040
|
||||||
|
scaler MACH_SCALER SCALER 2041
|
||||||
|
zylonite2 MACH_ZYLONITE2 ZYLONITE2 2042
|
||||||
|
aspenite MACH_ASPENITE ASPENITE 2043
|
||||||
|
teton MACH_TETON TETON 2044
|
||||||
|
ttc_dkb MACH_TTC_DKB TTC_DKB 2045
|
||||||
|
bishop2 MACH_BISHOP2 BISHOP2 2046
|
||||||
|
ippv5 MACH_IPPV5 IPPV5 2047
|
||||||
|
farm926 MACH_FARM926 FARM926 2048
|
||||||
|
mmccpu MACH_MMCCPU MMCCPU 2049
|
||||||
|
sgmsfl MACH_SGMSFL SGMSFL 2050
|
||||||
|
tt8000 MACH_TT8000 TT8000 2051
|
||||||
|
zrn4300lp MACH_ZRN4300LP ZRN4300LP 2052
|
||||||
|
mptc MACH_MPTC MPTC 2053
|
||||||
|
h6051 MACH_H6051 H6051 2054
|
||||||
|
pvg610_101 MACH_PVG610_101 PVG610_101 2055
|
||||||
|
stamp9261_pc_evb MACH_STAMP9261_PC_EVB STAMP9261_PC_EVB 2056
|
||||||
|
pelco_odysseus MACH_PELCO_ODYSSEUS PELCO_ODYSSEUS 2057
|
||||||
|
tny_a9260 MACH_TNY_A9260 TNY_A9260 2058
|
||||||
|
tny_a9g20 MACH_TNY_A9G20 TNY_A9G20 2059
|
||||||
|
aesop_mp2530f MACH_AESOP_MP2530F AESOP_MP2530F 2060
|
||||||
|
dx900 MACH_DX900 DX900 2061
|
||||||
|
cpodc2 MACH_CPODC2 CPODC2 2062
|
||||||
|
tilt_8925 MACH_TILT_8925 TILT_8925 2063
|
||||||
|
davinci_dm357_evm MACH_DAVINCI_DM357_EVM DAVINCI_DM357_EVM 2064
|
||||||
|
swordfish MACH_SWORDFISH SWORDFISH 2065
|
||||||
|
corvus MACH_CORVUS CORVUS 2066
|
||||||
|
taurus MACH_TAURUS TAURUS 2067
|
||||||
|
axm MACH_AXM AXM 2068
|
||||||
|
axc MACH_AXC AXC 2069
|
||||||
|
baby MACH_BABY BABY 2070
|
||||||
|
mp200 MACH_MP200 MP200 2071
|
||||||
|
pcm043 MACH_PCM043 PCM043 2072
|
||||||
|
hanlin_v3c MACH_HANLIN_V3C HANLIN_V3C 2073
|
||||||
|
kbk9g20 MACH_KBK9G20 KBK9G20 2074
|
||||||
|
adsturbog5 MACH_ADSTURBOG5 ADSTURBOG5 2075
|
||||||
|
avenger_lite1 MACH_AVENGER_LITE1 AVENGER_LITE1 2076
|
||||||
|
suc82x MACH_SUC SUC 2077
|
||||||
|
at91sam7s256 MACH_AT91SAM7S256 AT91SAM7S256 2078
|
||||||
|
mendoza MACH_MENDOZA MENDOZA 2079
|
||||||
|
kira MACH_KIRA KIRA 2080
|
||||||
|
mx1hbm MACH_MX1HBM MX1HBM 2081
|
||||||
|
quatro43xx MACH_QUATRO43XX QUATRO43XX 2082
|
||||||
|
quatro4230 MACH_QUATRO4230 QUATRO4230 2083
|
||||||
|
nsb400 MACH_NSB400 NSB400 2084
|
||||||
|
drp255 MACH_DRP255 DRP255 2085
|
||||||
|
thoth MACH_THOTH THOTH 2086
|
||||||
|
firestone MACH_FIRESTONE FIRESTONE 2087
|
||||||
|
asusp750 MACH_ASUSP750 ASUSP750 2088
|
||||||
|
ctera_dl MACH_CTERA_DL CTERA_DL 2089
|
||||||
|
socr MACH_SOCR SOCR 2090
|
||||||
|
htcoxygen MACH_HTCOXYGEN HTCOXYGEN 2091
|
||||||
|
heroc MACH_HEROC HEROC 2092
|
||||||
|
zeno6800 MACH_ZENO6800 ZENO6800 2093
|
||||||
|
sc2mcs MACH_SC2MCS SC2MCS 2094
|
||||||
|
gene100 MACH_GENE100 GENE100 2095
|
||||||
|
as353x MACH_AS353X AS353X 2096
|
||||||
|
sheevaplug MACH_SHEEVAPLUG SHEEVAPLUG 2097
|
||||||
|
at91sam9g20 MACH_AT91SAM9G20 AT91SAM9G20 2098
|
||||||
|
mv88f6192gtw_fe MACH_MV88F6192GTW_FE MV88F6192GTW_FE 2099
|
||||||
|
cc9200 MACH_CC9200 CC9200 2100
|
||||||
|
sm9200 MACH_SM9200 SM9200 2101
|
||||||
|
tp9200 MACH_TP9200 TP9200 2102
|
||||||
|
snapperdv MACH_SNAPPERDV SNAPPERDV 2103
|
||||||
|
avengers_lite MACH_AVENGERS_LITE AVENGERS_LITE 2104
|
||||||
|
avengers_lite1 MACH_AVENGERS_LITE1 AVENGERS_LITE1 2105
|
||||||
|
omap3axon MACH_OMAP3AXON OMAP3AXON 2106
|
||||||
|
ma8xx MACH_MA8XX MA8XX 2107
|
||||||
|
mp201ek MACH_MP201EK MP201EK 2108
|
||||||
|
davinci_tux MACH_DAVINCI_TUX DAVINCI_TUX 2109
|
||||||
|
mpa1600 MACH_MPA1600 MPA1600 2110
|
||||||
|
pelco_troy MACH_PELCO_TROY PELCO_TROY 2111
|
||||||
|
nsb667 MACH_NSB667 NSB667 2112
|
||||||
|
rovers5_4mpix MACH_ROVERS5_4MPIX ROVERS5_4MPIX 2113
|
||||||
|
twocom MACH_TWOCOM TWOCOM 2114
|
||||||
|
ubisys_p9_rcu3r2 MACH_UBISYS_P9_RCU3R2 UBISYS_P9_RCU3R2 2115
|
||||||
|
hero_espresso MACH_HERO_ESPRESSO HERO_ESPRESSO 2116
|
||||||
|
afeusb MACH_AFEUSB AFEUSB 2117
|
||||||
|
t830 MACH_T830 T830 2118
|
||||||
|
spd8020_cc MACH_SPD8020_CC SPD8020_CC 2119
|
||||||
|
om_3d7k MACH_OM_3D7K OM_3D7K 2120
|
||||||
|
picocom2 MACH_PICOCOM2 PICOCOM2 2121
|
||||||
|
uwg4mx27 MACH_UWG4MX27 UWG4MX27 2122
|
||||||
|
uwg4mx31 MACH_UWG4MX31 UWG4MX31 2123
|
||||||
|
cherry MACH_CHERRY CHERRY 2124
|
||||||
|
mx51_babbage MACH_MX51_BABBAGE MX51_BABBAGE 2125
|
||||||
|
s3c2440turkiye MACH_S3C2440TURKIYE S3C2440TURKIYE 2126
|
||||||
|
tx37 MACH_TX37 TX37 2127
|
||||||
|
sbc2800_9g20 MACH_SBC2800_9G20 SBC2800_9G20 2128
|
||||||
|
benzglb MACH_BENZGLB BENZGLB 2129
|
||||||
|
benztd MACH_BENZTD BENZTD 2130
|
||||||
|
cartesio_plus MACH_CARTESIO_PLUS CARTESIO_PLUS 2131
|
||||||
|
solrad_g20 MACH_SOLRAD_G20 SOLRAD_G20 2132
|
||||||
|
mx27wallace MACH_MX27WALLACE MX27WALLACE 2133
|
||||||
|
fmzwebmodul MACH_FMZWEBMODUL FMZWEBMODUL 2134
|
||||||
|
rd78x00_masa MACH_RD78X00_MASA RD78X00_MASA 2135
|
||||||
|
smallogger MACH_SMALLOGGER SMALLOGGER 2136
|
||||||
|
|
|
@ -15,7 +15,6 @@
|
||||||
#include <linux/mtd/physmap.h>
|
#include <linux/mtd/physmap.h>
|
||||||
#include <linux/usb/isp116x.h>
|
#include <linux/usb/isp116x.h>
|
||||||
#include <linux/dma-mapping.h>
|
#include <linux/dma-mapping.h>
|
||||||
#include <linux/platform_device.h>
|
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
|
|
||||||
#include <mach/portmux.h>
|
#include <mach/portmux.h>
|
||||||
|
|
|
@ -230,10 +230,10 @@ extern int __put_user_bad(void);
|
||||||
asm volatile( \
|
asm volatile( \
|
||||||
"1: ld." suffix " %1, %3 \n" \
|
"1: ld." suffix " %1, %3 \n" \
|
||||||
"2: \n" \
|
"2: \n" \
|
||||||
" .section .fixup, \"ax\" \n" \
|
" .subsection 1 \n" \
|
||||||
"3: mov %0, %4 \n" \
|
"3: mov %0, %4 \n" \
|
||||||
" rjmp 2b \n" \
|
" rjmp 2b \n" \
|
||||||
" .previous \n" \
|
" .subsection 0 \n" \
|
||||||
" .section __ex_table, \"a\" \n" \
|
" .section __ex_table, \"a\" \n" \
|
||||||
" .long 1b, 3b \n" \
|
" .long 1b, 3b \n" \
|
||||||
" .previous \n" \
|
" .previous \n" \
|
||||||
|
@ -295,10 +295,10 @@ extern int __put_user_bad(void);
|
||||||
asm volatile( \
|
asm volatile( \
|
||||||
"1: st." suffix " %1, %3 \n" \
|
"1: st." suffix " %1, %3 \n" \
|
||||||
"2: \n" \
|
"2: \n" \
|
||||||
" .section .fixup, \"ax\" \n" \
|
" .subsection 1 \n" \
|
||||||
"3: mov %0, %4 \n" \
|
"3: mov %0, %4 \n" \
|
||||||
" rjmp 2b \n" \
|
" rjmp 2b \n" \
|
||||||
" .previous \n" \
|
" .subsection 0 \n" \
|
||||||
" .section __ex_table, \"a\" \n" \
|
" .section __ex_table, \"a\" \n" \
|
||||||
" .long 1b, 3b \n" \
|
" .long 1b, 3b \n" \
|
||||||
" .previous \n" \
|
" .previous \n" \
|
||||||
|
|
|
@ -150,10 +150,10 @@ page_not_present:
|
||||||
tlbmiss_restore
|
tlbmiss_restore
|
||||||
sub sp, 4
|
sub sp, 4
|
||||||
stmts --sp, r0-lr
|
stmts --sp, r0-lr
|
||||||
rcall save_full_context_ex
|
call save_full_context_ex
|
||||||
mfsr r12, SYSREG_ECR
|
mfsr r12, SYSREG_ECR
|
||||||
mov r11, sp
|
mov r11, sp
|
||||||
rcall do_page_fault
|
call do_page_fault
|
||||||
rjmp ret_from_exception
|
rjmp ret_from_exception
|
||||||
|
|
||||||
.align 2
|
.align 2
|
||||||
|
@ -250,7 +250,7 @@ syscall_badsys:
|
||||||
|
|
||||||
.global ret_from_fork
|
.global ret_from_fork
|
||||||
ret_from_fork:
|
ret_from_fork:
|
||||||
rcall schedule_tail
|
call schedule_tail
|
||||||
|
|
||||||
/* check for syscall tracing */
|
/* check for syscall tracing */
|
||||||
get_thread_info r0
|
get_thread_info r0
|
||||||
|
@ -261,7 +261,7 @@ ret_from_fork:
|
||||||
|
|
||||||
syscall_trace_enter:
|
syscall_trace_enter:
|
||||||
pushm r8-r12
|
pushm r8-r12
|
||||||
rcall syscall_trace
|
call syscall_trace
|
||||||
popm r8-r12
|
popm r8-r12
|
||||||
rjmp syscall_trace_cont
|
rjmp syscall_trace_cont
|
||||||
|
|
||||||
|
@ -269,14 +269,14 @@ syscall_exit_work:
|
||||||
bld r1, TIF_SYSCALL_TRACE
|
bld r1, TIF_SYSCALL_TRACE
|
||||||
brcc 1f
|
brcc 1f
|
||||||
unmask_interrupts
|
unmask_interrupts
|
||||||
rcall syscall_trace
|
call syscall_trace
|
||||||
mask_interrupts
|
mask_interrupts
|
||||||
ld.w r1, r0[TI_flags]
|
ld.w r1, r0[TI_flags]
|
||||||
|
|
||||||
1: bld r1, TIF_NEED_RESCHED
|
1: bld r1, TIF_NEED_RESCHED
|
||||||
brcc 2f
|
brcc 2f
|
||||||
unmask_interrupts
|
unmask_interrupts
|
||||||
rcall schedule
|
call schedule
|
||||||
mask_interrupts
|
mask_interrupts
|
||||||
ld.w r1, r0[TI_flags]
|
ld.w r1, r0[TI_flags]
|
||||||
rjmp 1b
|
rjmp 1b
|
||||||
|
@ -287,7 +287,7 @@ syscall_exit_work:
|
||||||
unmask_interrupts
|
unmask_interrupts
|
||||||
mov r12, sp
|
mov r12, sp
|
||||||
mov r11, r0
|
mov r11, r0
|
||||||
rcall do_notify_resume
|
call do_notify_resume
|
||||||
mask_interrupts
|
mask_interrupts
|
||||||
ld.w r1, r0[TI_flags]
|
ld.w r1, r0[TI_flags]
|
||||||
rjmp 1b
|
rjmp 1b
|
||||||
|
@ -394,7 +394,7 @@ handle_critical:
|
||||||
|
|
||||||
mfsr r12, SYSREG_ECR
|
mfsr r12, SYSREG_ECR
|
||||||
mov r11, sp
|
mov r11, sp
|
||||||
rcall do_critical_exception
|
call do_critical_exception
|
||||||
|
|
||||||
/* We should never get here... */
|
/* We should never get here... */
|
||||||
bad_return:
|
bad_return:
|
||||||
|
@ -407,18 +407,18 @@ bad_return:
|
||||||
do_bus_error_write:
|
do_bus_error_write:
|
||||||
sub sp, 4
|
sub sp, 4
|
||||||
stmts --sp, r0-lr
|
stmts --sp, r0-lr
|
||||||
rcall save_full_context_ex
|
call save_full_context_ex
|
||||||
mov r11, 1
|
mov r11, 1
|
||||||
rjmp 1f
|
rjmp 1f
|
||||||
|
|
||||||
do_bus_error_read:
|
do_bus_error_read:
|
||||||
sub sp, 4
|
sub sp, 4
|
||||||
stmts --sp, r0-lr
|
stmts --sp, r0-lr
|
||||||
rcall save_full_context_ex
|
call save_full_context_ex
|
||||||
mov r11, 0
|
mov r11, 0
|
||||||
1: mfsr r12, SYSREG_BEAR
|
1: mfsr r12, SYSREG_BEAR
|
||||||
mov r10, sp
|
mov r10, sp
|
||||||
rcall do_bus_error
|
call do_bus_error
|
||||||
rjmp ret_from_exception
|
rjmp ret_from_exception
|
||||||
|
|
||||||
.align 1
|
.align 1
|
||||||
|
@ -433,7 +433,7 @@ do_nmi_ll:
|
||||||
1: pushm r8, r9 /* PC and SR */
|
1: pushm r8, r9 /* PC and SR */
|
||||||
mfsr r12, SYSREG_ECR
|
mfsr r12, SYSREG_ECR
|
||||||
mov r11, sp
|
mov r11, sp
|
||||||
rcall do_nmi
|
call do_nmi
|
||||||
popm r8-r9
|
popm r8-r9
|
||||||
mtsr SYSREG_RAR_NMI, r8
|
mtsr SYSREG_RAR_NMI, r8
|
||||||
tst r0, r0
|
tst r0, r0
|
||||||
|
@ -457,29 +457,29 @@ do_nmi_ll:
|
||||||
handle_address_fault:
|
handle_address_fault:
|
||||||
sub sp, 4
|
sub sp, 4
|
||||||
stmts --sp, r0-lr
|
stmts --sp, r0-lr
|
||||||
rcall save_full_context_ex
|
call save_full_context_ex
|
||||||
mfsr r12, SYSREG_ECR
|
mfsr r12, SYSREG_ECR
|
||||||
mov r11, sp
|
mov r11, sp
|
||||||
rcall do_address_exception
|
call do_address_exception
|
||||||
rjmp ret_from_exception
|
rjmp ret_from_exception
|
||||||
|
|
||||||
handle_protection_fault:
|
handle_protection_fault:
|
||||||
sub sp, 4
|
sub sp, 4
|
||||||
stmts --sp, r0-lr
|
stmts --sp, r0-lr
|
||||||
rcall save_full_context_ex
|
call save_full_context_ex
|
||||||
mfsr r12, SYSREG_ECR
|
mfsr r12, SYSREG_ECR
|
||||||
mov r11, sp
|
mov r11, sp
|
||||||
rcall do_page_fault
|
call do_page_fault
|
||||||
rjmp ret_from_exception
|
rjmp ret_from_exception
|
||||||
|
|
||||||
.align 1
|
.align 1
|
||||||
do_illegal_opcode_ll:
|
do_illegal_opcode_ll:
|
||||||
sub sp, 4
|
sub sp, 4
|
||||||
stmts --sp, r0-lr
|
stmts --sp, r0-lr
|
||||||
rcall save_full_context_ex
|
call save_full_context_ex
|
||||||
mfsr r12, SYSREG_ECR
|
mfsr r12, SYSREG_ECR
|
||||||
mov r11, sp
|
mov r11, sp
|
||||||
rcall do_illegal_opcode
|
call do_illegal_opcode
|
||||||
rjmp ret_from_exception
|
rjmp ret_from_exception
|
||||||
|
|
||||||
do_dtlb_modified:
|
do_dtlb_modified:
|
||||||
|
@ -513,11 +513,11 @@ do_dtlb_modified:
|
||||||
do_fpe_ll:
|
do_fpe_ll:
|
||||||
sub sp, 4
|
sub sp, 4
|
||||||
stmts --sp, r0-lr
|
stmts --sp, r0-lr
|
||||||
rcall save_full_context_ex
|
call save_full_context_ex
|
||||||
unmask_interrupts
|
unmask_interrupts
|
||||||
mov r12, 26
|
mov r12, 26
|
||||||
mov r11, sp
|
mov r11, sp
|
||||||
rcall do_fpe
|
call do_fpe
|
||||||
rjmp ret_from_exception
|
rjmp ret_from_exception
|
||||||
|
|
||||||
ret_from_exception:
|
ret_from_exception:
|
||||||
|
@ -553,7 +553,7 @@ fault_resume_kernel:
|
||||||
lddsp r4, sp[REG_SR]
|
lddsp r4, sp[REG_SR]
|
||||||
bld r4, SYSREG_GM_OFFSET
|
bld r4, SYSREG_GM_OFFSET
|
||||||
brcs 1f
|
brcs 1f
|
||||||
rcall preempt_schedule_irq
|
call preempt_schedule_irq
|
||||||
1:
|
1:
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -582,7 +582,7 @@ fault_exit_work:
|
||||||
bld r1, TIF_NEED_RESCHED
|
bld r1, TIF_NEED_RESCHED
|
||||||
brcc 1f
|
brcc 1f
|
||||||
unmask_interrupts
|
unmask_interrupts
|
||||||
rcall schedule
|
call schedule
|
||||||
mask_interrupts
|
mask_interrupts
|
||||||
ld.w r1, r0[TI_flags]
|
ld.w r1, r0[TI_flags]
|
||||||
rjmp fault_exit_work
|
rjmp fault_exit_work
|
||||||
|
@ -593,7 +593,7 @@ fault_exit_work:
|
||||||
unmask_interrupts
|
unmask_interrupts
|
||||||
mov r12, sp
|
mov r12, sp
|
||||||
mov r11, r0
|
mov r11, r0
|
||||||
rcall do_notify_resume
|
call do_notify_resume
|
||||||
mask_interrupts
|
mask_interrupts
|
||||||
ld.w r1, r0[TI_flags]
|
ld.w r1, r0[TI_flags]
|
||||||
rjmp fault_exit_work
|
rjmp fault_exit_work
|
||||||
|
@ -616,10 +616,10 @@ handle_debug:
|
||||||
|
|
||||||
.Ldebug_fixup_cont:
|
.Ldebug_fixup_cont:
|
||||||
#ifdef CONFIG_TRACE_IRQFLAGS
|
#ifdef CONFIG_TRACE_IRQFLAGS
|
||||||
rcall trace_hardirqs_off
|
call trace_hardirqs_off
|
||||||
#endif
|
#endif
|
||||||
mov r12, sp
|
mov r12, sp
|
||||||
rcall do_debug
|
call do_debug
|
||||||
mov sp, r12
|
mov sp, r12
|
||||||
|
|
||||||
lddsp r2, sp[REG_SR]
|
lddsp r2, sp[REG_SR]
|
||||||
|
@ -643,7 +643,7 @@ handle_debug:
|
||||||
mtsr SYSREG_RSR_DBG, r11
|
mtsr SYSREG_RSR_DBG, r11
|
||||||
mtsr SYSREG_RAR_DBG, r10
|
mtsr SYSREG_RAR_DBG, r10
|
||||||
#ifdef CONFIG_TRACE_IRQFLAGS
|
#ifdef CONFIG_TRACE_IRQFLAGS
|
||||||
rcall trace_hardirqs_on
|
call trace_hardirqs_on
|
||||||
1:
|
1:
|
||||||
#endif
|
#endif
|
||||||
ldmts sp++, r0-lr
|
ldmts sp++, r0-lr
|
||||||
|
@ -676,7 +676,7 @@ debug_resume_kernel:
|
||||||
#ifdef CONFIG_TRACE_IRQFLAGS
|
#ifdef CONFIG_TRACE_IRQFLAGS
|
||||||
bld r11, SYSREG_GM_OFFSET
|
bld r11, SYSREG_GM_OFFSET
|
||||||
brcc 1f
|
brcc 1f
|
||||||
rcall trace_hardirqs_on
|
call trace_hardirqs_on
|
||||||
1:
|
1:
|
||||||
#endif
|
#endif
|
||||||
mfsr r2, SYSREG_SR
|
mfsr r2, SYSREG_SR
|
||||||
|
@ -747,7 +747,7 @@ irq_level\level:
|
||||||
mov r11, sp
|
mov r11, sp
|
||||||
mov r12, \level
|
mov r12, \level
|
||||||
|
|
||||||
rcall do_IRQ
|
call do_IRQ
|
||||||
|
|
||||||
lddsp r4, sp[REG_SR]
|
lddsp r4, sp[REG_SR]
|
||||||
bfextu r4, r4, SYSREG_M0_OFFSET, 3
|
bfextu r4, r4, SYSREG_M0_OFFSET, 3
|
||||||
|
@ -767,7 +767,7 @@ irq_level\level:
|
||||||
|
|
||||||
1:
|
1:
|
||||||
#ifdef CONFIG_TRACE_IRQFLAGS
|
#ifdef CONFIG_TRACE_IRQFLAGS
|
||||||
rcall trace_hardirqs_on
|
call trace_hardirqs_on
|
||||||
#endif
|
#endif
|
||||||
popm r8-r9
|
popm r8-r9
|
||||||
mtsr rar_int\level, r8
|
mtsr rar_int\level, r8
|
||||||
|
@ -807,7 +807,7 @@ irq_level\level:
|
||||||
lddsp r4, sp[REG_SR]
|
lddsp r4, sp[REG_SR]
|
||||||
bld r4, SYSREG_GM_OFFSET
|
bld r4, SYSREG_GM_OFFSET
|
||||||
brcs 1b
|
brcs 1b
|
||||||
rcall preempt_schedule_irq
|
call preempt_schedule_irq
|
||||||
#endif
|
#endif
|
||||||
rjmp 1b
|
rjmp 1b
|
||||||
.endm
|
.endm
|
||||||
|
|
|
@ -61,7 +61,7 @@ __sys_execve:
|
||||||
__sys_mmap2:
|
__sys_mmap2:
|
||||||
pushm lr
|
pushm lr
|
||||||
st.w --sp, ARG6
|
st.w --sp, ARG6
|
||||||
rcall sys_mmap2
|
call sys_mmap2
|
||||||
sub sp, -4
|
sub sp, -4
|
||||||
popm pc
|
popm pc
|
||||||
|
|
||||||
|
@ -70,7 +70,7 @@ __sys_mmap2:
|
||||||
__sys_sendto:
|
__sys_sendto:
|
||||||
pushm lr
|
pushm lr
|
||||||
st.w --sp, ARG6
|
st.w --sp, ARG6
|
||||||
rcall sys_sendto
|
call sys_sendto
|
||||||
sub sp, -4
|
sub sp, -4
|
||||||
popm pc
|
popm pc
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ __sys_sendto:
|
||||||
__sys_recvfrom:
|
__sys_recvfrom:
|
||||||
pushm lr
|
pushm lr
|
||||||
st.w --sp, ARG6
|
st.w --sp, ARG6
|
||||||
rcall sys_recvfrom
|
call sys_recvfrom
|
||||||
sub sp, -4
|
sub sp, -4
|
||||||
popm pc
|
popm pc
|
||||||
|
|
||||||
|
@ -88,7 +88,7 @@ __sys_recvfrom:
|
||||||
__sys_pselect6:
|
__sys_pselect6:
|
||||||
pushm lr
|
pushm lr
|
||||||
st.w --sp, ARG6
|
st.w --sp, ARG6
|
||||||
rcall sys_pselect6
|
call sys_pselect6
|
||||||
sub sp, -4
|
sub sp, -4
|
||||||
popm pc
|
popm pc
|
||||||
|
|
||||||
|
@ -97,7 +97,7 @@ __sys_pselect6:
|
||||||
__sys_splice:
|
__sys_splice:
|
||||||
pushm lr
|
pushm lr
|
||||||
st.w --sp, ARG6
|
st.w --sp, ARG6
|
||||||
rcall sys_splice
|
call sys_splice
|
||||||
sub sp, -4
|
sub sp, -4
|
||||||
popm pc
|
popm pc
|
||||||
|
|
||||||
|
@ -106,7 +106,7 @@ __sys_splice:
|
||||||
__sys_epoll_pwait:
|
__sys_epoll_pwait:
|
||||||
pushm lr
|
pushm lr
|
||||||
st.w --sp, ARG6
|
st.w --sp, ARG6
|
||||||
rcall sys_epoll_pwait
|
call sys_epoll_pwait
|
||||||
sub sp, -4
|
sub sp, -4
|
||||||
popm pc
|
popm pc
|
||||||
|
|
||||||
|
@ -115,6 +115,6 @@ __sys_epoll_pwait:
|
||||||
__sys_sync_file_range:
|
__sys_sync_file_range:
|
||||||
pushm lr
|
pushm lr
|
||||||
st.w --sp, ARG6
|
st.w --sp, ARG6
|
||||||
rcall sys_sync_file_range
|
call sys_sync_file_range
|
||||||
sub sp, -4
|
sub sp, -4
|
||||||
popm pc
|
popm pc
|
||||||
|
|
|
@ -48,7 +48,7 @@ adjust_length:
|
||||||
lddpc lr, _task_size
|
lddpc lr, _task_size
|
||||||
sub r11, lr, r12
|
sub r11, lr, r12
|
||||||
mov r9, r11
|
mov r9, r11
|
||||||
rcall __strnlen_user
|
call __strnlen_user
|
||||||
cp.w r12, r9
|
cp.w r12, r9
|
||||||
brgt 1f
|
brgt 1f
|
||||||
popm pc
|
popm pc
|
||||||
|
|
|
@ -1129,6 +1129,7 @@ endchoice
|
||||||
|
|
||||||
config PM_WAKEUP_BY_GPIO
|
config PM_WAKEUP_BY_GPIO
|
||||||
bool "Allow Wakeup from Standby by GPIO"
|
bool "Allow Wakeup from Standby by GPIO"
|
||||||
|
depends on PM && !BF54x
|
||||||
|
|
||||||
config PM_WAKEUP_GPIO_NUMBER
|
config PM_WAKEUP_GPIO_NUMBER
|
||||||
int "GPIO number"
|
int "GPIO number"
|
||||||
|
@ -1168,6 +1169,12 @@ config PM_BFIN_WAKE_GP
|
||||||
default n
|
default n
|
||||||
help
|
help
|
||||||
Enable General-Purpose Wake-Up (Voltage Regulator Power-Up)
|
Enable General-Purpose Wake-Up (Voltage Regulator Power-Up)
|
||||||
|
(all processors, except ADSP-BF549). This option sets
|
||||||
|
the general-purpose wake-up enable (GPWE) control bit to enable
|
||||||
|
wake-up upon detection of an active low signal on the /GPW (PH7) pin.
|
||||||
|
On ADSP-BF549 this option enables the the same functionality on the
|
||||||
|
/MRXON pin also PH7.
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
menu "CPU Frequency scaling"
|
menu "CPU Frequency scaling"
|
||||||
|
|
|
@ -21,12 +21,6 @@ config DEBUG_STACK_USAGE
|
||||||
config HAVE_ARCH_KGDB
|
config HAVE_ARCH_KGDB
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
config KGDB_TESTCASE
|
|
||||||
tristate "KGDB: for test case in expect"
|
|
||||||
default n
|
|
||||||
help
|
|
||||||
This is a kgdb test case for automated testing.
|
|
||||||
|
|
||||||
config DEBUG_VERBOSE
|
config DEBUG_VERBOSE
|
||||||
bool "Verbose fault messages"
|
bool "Verbose fault messages"
|
||||||
default y
|
default y
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#
|
#
|
||||||
# Automatically generated make config: don't edit
|
# Automatically generated make config: don't edit
|
||||||
# Linux kernel version: 2.6.28-rc2
|
# Linux kernel version: 2.6.28
|
||||||
# Fri Jan 9 17:58:41 2009
|
# Fri Feb 20 10:01:44 2009
|
||||||
#
|
#
|
||||||
# CONFIG_MMU is not set
|
# CONFIG_MMU is not set
|
||||||
# CONFIG_FPU is not set
|
# CONFIG_FPU is not set
|
||||||
|
@ -133,10 +133,15 @@ CONFIG_BF518=y
|
||||||
# CONFIG_BF538 is not set
|
# CONFIG_BF538 is not set
|
||||||
# CONFIG_BF539 is not set
|
# CONFIG_BF539 is not set
|
||||||
# CONFIG_BF542 is not set
|
# CONFIG_BF542 is not set
|
||||||
|
# CONFIG_BF542M is not set
|
||||||
# CONFIG_BF544 is not set
|
# CONFIG_BF544 is not set
|
||||||
|
# CONFIG_BF544M is not set
|
||||||
# CONFIG_BF547 is not set
|
# CONFIG_BF547 is not set
|
||||||
|
# CONFIG_BF547M is not set
|
||||||
# CONFIG_BF548 is not set
|
# CONFIG_BF548 is not set
|
||||||
|
# CONFIG_BF548M is not set
|
||||||
# CONFIG_BF549 is not set
|
# CONFIG_BF549 is not set
|
||||||
|
# CONFIG_BF549M is not set
|
||||||
# CONFIG_BF561 is not set
|
# CONFIG_BF561 is not set
|
||||||
CONFIG_BF_REV_MIN=0
|
CONFIG_BF_REV_MIN=0
|
||||||
CONFIG_BF_REV_MAX=2
|
CONFIG_BF_REV_MAX=2
|
||||||
|
@ -426,7 +431,17 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
|
||||||
# CONFIG_TIPC is not set
|
# CONFIG_TIPC is not set
|
||||||
# CONFIG_ATM is not set
|
# CONFIG_ATM is not set
|
||||||
# CONFIG_BRIDGE is not set
|
# CONFIG_BRIDGE is not set
|
||||||
# CONFIG_NET_DSA is not set
|
CONFIG_NET_DSA=y
|
||||||
|
# CONFIG_NET_DSA_TAG_DSA is not set
|
||||||
|
# CONFIG_NET_DSA_TAG_EDSA is not set
|
||||||
|
# CONFIG_NET_DSA_TAG_TRAILER is not set
|
||||||
|
CONFIG_NET_DSA_TAG_STPID=y
|
||||||
|
# CONFIG_NET_DSA_MV88E6XXX is not set
|
||||||
|
# CONFIG_NET_DSA_MV88E6060 is not set
|
||||||
|
# CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set
|
||||||
|
# CONFIG_NET_DSA_MV88E6131 is not set
|
||||||
|
# CONFIG_NET_DSA_MV88E6123_61_65 is not set
|
||||||
|
CONFIG_NET_DSA_KSZ8893M=y
|
||||||
# CONFIG_VLAN_8021Q is not set
|
# CONFIG_VLAN_8021Q is not set
|
||||||
# CONFIG_DECNET is not set
|
# CONFIG_DECNET is not set
|
||||||
# CONFIG_LLC2 is not set
|
# CONFIG_LLC2 is not set
|
||||||
|
@ -529,6 +544,8 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
|
||||||
#
|
#
|
||||||
# Self-contained MTD device drivers
|
# Self-contained MTD device drivers
|
||||||
#
|
#
|
||||||
|
# CONFIG_MTD_DATAFLASH is not set
|
||||||
|
# CONFIG_MTD_M25P80 is not set
|
||||||
# CONFIG_MTD_SLRAM is not set
|
# CONFIG_MTD_SLRAM is not set
|
||||||
# CONFIG_MTD_PHRAM is not set
|
# CONFIG_MTD_PHRAM is not set
|
||||||
# CONFIG_MTD_MTDRAM is not set
|
# CONFIG_MTD_MTDRAM is not set
|
||||||
|
@ -561,7 +578,9 @@ CONFIG_BLK_DEV_RAM_SIZE=4096
|
||||||
# CONFIG_BLK_DEV_HD is not set
|
# CONFIG_BLK_DEV_HD is not set
|
||||||
CONFIG_MISC_DEVICES=y
|
CONFIG_MISC_DEVICES=y
|
||||||
# CONFIG_EEPROM_93CX6 is not set
|
# CONFIG_EEPROM_93CX6 is not set
|
||||||
|
# CONFIG_ICS932S401 is not set
|
||||||
# CONFIG_ENCLOSURE_SERVICES is not set
|
# CONFIG_ENCLOSURE_SERVICES is not set
|
||||||
|
# CONFIG_C2PORT is not set
|
||||||
CONFIG_HAVE_IDE=y
|
CONFIG_HAVE_IDE=y
|
||||||
# CONFIG_IDE is not set
|
# CONFIG_IDE is not set
|
||||||
|
|
||||||
|
@ -607,6 +626,7 @@ CONFIG_BFIN_RX_DESC_NUM=20
|
||||||
# CONFIG_SMC91X is not set
|
# CONFIG_SMC91X is not set
|
||||||
# CONFIG_SMSC911X is not set
|
# CONFIG_SMSC911X is not set
|
||||||
# CONFIG_DM9000 is not set
|
# CONFIG_DM9000 is not set
|
||||||
|
# CONFIG_ENC28J60 is not set
|
||||||
# CONFIG_IBM_NEW_EMAC_ZMII is not set
|
# CONFIG_IBM_NEW_EMAC_ZMII is not set
|
||||||
# CONFIG_IBM_NEW_EMAC_RGMII is not set
|
# CONFIG_IBM_NEW_EMAC_RGMII is not set
|
||||||
# CONFIG_IBM_NEW_EMAC_TAH is not set
|
# CONFIG_IBM_NEW_EMAC_TAH is not set
|
||||||
|
@ -764,7 +784,23 @@ CONFIG_I2C_BLACKFIN_TWI_CLK_KHZ=100
|
||||||
# CONFIG_I2C_DEBUG_ALGO is not set
|
# CONFIG_I2C_DEBUG_ALGO is not set
|
||||||
# CONFIG_I2C_DEBUG_BUS is not set
|
# CONFIG_I2C_DEBUG_BUS is not set
|
||||||
# CONFIG_I2C_DEBUG_CHIP is not set
|
# CONFIG_I2C_DEBUG_CHIP is not set
|
||||||
# CONFIG_SPI is not set
|
CONFIG_SPI=y
|
||||||
|
# CONFIG_SPI_DEBUG is not set
|
||||||
|
CONFIG_SPI_MASTER=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# SPI Master Controller Drivers
|
||||||
|
#
|
||||||
|
CONFIG_SPI_BFIN=y
|
||||||
|
# CONFIG_SPI_BFIN_LOCK is not set
|
||||||
|
# CONFIG_SPI_BITBANG is not set
|
||||||
|
|
||||||
|
#
|
||||||
|
# SPI Protocol Masters
|
||||||
|
#
|
||||||
|
# CONFIG_SPI_AT25 is not set
|
||||||
|
# CONFIG_SPI_SPIDEV is not set
|
||||||
|
# CONFIG_SPI_TLE62X0 is not set
|
||||||
CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
|
CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
|
||||||
# CONFIG_GPIOLIB is not set
|
# CONFIG_GPIOLIB is not set
|
||||||
# CONFIG_W1 is not set
|
# CONFIG_W1 is not set
|
||||||
|
@ -788,8 +824,10 @@ CONFIG_BFIN_WDT=y
|
||||||
# CONFIG_MFD_SM501 is not set
|
# CONFIG_MFD_SM501 is not set
|
||||||
# CONFIG_HTC_PASIC3 is not set
|
# CONFIG_HTC_PASIC3 is not set
|
||||||
# CONFIG_MFD_TMIO is not set
|
# CONFIG_MFD_TMIO is not set
|
||||||
|
# CONFIG_PMIC_DA903X is not set
|
||||||
# CONFIG_MFD_WM8400 is not set
|
# CONFIG_MFD_WM8400 is not set
|
||||||
# CONFIG_MFD_WM8350_I2C is not set
|
# CONFIG_MFD_WM8350_I2C is not set
|
||||||
|
# CONFIG_REGULATOR is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Multimedia devices
|
# Multimedia devices
|
||||||
|
@ -861,10 +899,18 @@ CONFIG_RTC_INTF_DEV=y
|
||||||
# CONFIG_RTC_DRV_M41T80 is not set
|
# CONFIG_RTC_DRV_M41T80 is not set
|
||||||
# CONFIG_RTC_DRV_S35390A is not set
|
# CONFIG_RTC_DRV_S35390A is not set
|
||||||
# CONFIG_RTC_DRV_FM3130 is not set
|
# CONFIG_RTC_DRV_FM3130 is not set
|
||||||
|
# CONFIG_RTC_DRV_RX8581 is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# SPI RTC drivers
|
# SPI RTC drivers
|
||||||
#
|
#
|
||||||
|
# CONFIG_RTC_DRV_M41T94 is not set
|
||||||
|
# CONFIG_RTC_DRV_DS1305 is not set
|
||||||
|
# CONFIG_RTC_DRV_DS1390 is not set
|
||||||
|
# CONFIG_RTC_DRV_MAX6902 is not set
|
||||||
|
# CONFIG_RTC_DRV_R9701 is not set
|
||||||
|
# CONFIG_RTC_DRV_RS5C348 is not set
|
||||||
|
# CONFIG_RTC_DRV_DS3234 is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# Platform RTC drivers
|
# Platform RTC drivers
|
||||||
|
@ -1062,12 +1108,20 @@ CONFIG_DEBUG_INFO=y
|
||||||
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
|
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
|
||||||
# CONFIG_FAULT_INJECTION is not set
|
# CONFIG_FAULT_INJECTION is not set
|
||||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# Tracers
|
||||||
|
#
|
||||||
|
# CONFIG_SCHED_TRACER is not set
|
||||||
|
# CONFIG_CONTEXT_SWITCH_TRACER is not set
|
||||||
|
# CONFIG_BOOT_TRACER is not set
|
||||||
# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
|
# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
|
||||||
# CONFIG_SAMPLES is not set
|
# CONFIG_SAMPLES is not set
|
||||||
CONFIG_HAVE_ARCH_KGDB=y
|
CONFIG_HAVE_ARCH_KGDB=y
|
||||||
# CONFIG_KGDB is not set
|
# CONFIG_KGDB is not set
|
||||||
# CONFIG_DEBUG_STACKOVERFLOW is not set
|
# CONFIG_DEBUG_STACKOVERFLOW is not set
|
||||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||||
|
# CONFIG_KGDB_TESTCASE is not set
|
||||||
CONFIG_DEBUG_VERBOSE=y
|
CONFIG_DEBUG_VERBOSE=y
|
||||||
CONFIG_DEBUG_MMRS=y
|
CONFIG_DEBUG_MMRS=y
|
||||||
# CONFIG_DEBUG_HWERR is not set
|
# CONFIG_DEBUG_HWERR is not set
|
||||||
|
@ -1100,6 +1154,7 @@ CONFIG_CRYPTO=y
|
||||||
#
|
#
|
||||||
# CONFIG_CRYPTO_FIPS is not set
|
# CONFIG_CRYPTO_FIPS is not set
|
||||||
# CONFIG_CRYPTO_MANAGER is not set
|
# CONFIG_CRYPTO_MANAGER is not set
|
||||||
|
# CONFIG_CRYPTO_MANAGER2 is not set
|
||||||
# CONFIG_CRYPTO_GF128MUL is not set
|
# CONFIG_CRYPTO_GF128MUL is not set
|
||||||
# CONFIG_CRYPTO_NULL is not set
|
# CONFIG_CRYPTO_NULL is not set
|
||||||
# CONFIG_CRYPTO_CRYPTD is not set
|
# CONFIG_CRYPTO_CRYPTD is not set
|
||||||
|
|
|
@ -327,8 +327,8 @@ CONFIG_BFIN_ICACHE=y
|
||||||
CONFIG_BFIN_DCACHE=y
|
CONFIG_BFIN_DCACHE=y
|
||||||
# CONFIG_BFIN_DCACHE_BANKA is not set
|
# CONFIG_BFIN_DCACHE_BANKA is not set
|
||||||
# CONFIG_BFIN_ICACHE_LOCK is not set
|
# CONFIG_BFIN_ICACHE_LOCK is not set
|
||||||
# CONFIG_BFIN_WB is not set
|
CONFIG_BFIN_WB=y
|
||||||
CONFIG_BFIN_WT=y
|
# CONFIG_BFIN_WT is not set
|
||||||
# CONFIG_MPU is not set
|
# CONFIG_MPU is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
|
@ -290,8 +290,8 @@ CONFIG_BFIN_ICACHE=y
|
||||||
CONFIG_BFIN_DCACHE=y
|
CONFIG_BFIN_DCACHE=y
|
||||||
# CONFIG_BFIN_DCACHE_BANKA is not set
|
# CONFIG_BFIN_DCACHE_BANKA is not set
|
||||||
# CONFIG_BFIN_ICACHE_LOCK is not set
|
# CONFIG_BFIN_ICACHE_LOCK is not set
|
||||||
# CONFIG_BFIN_WB is not set
|
CONFIG_BFIN_WB=y
|
||||||
CONFIG_BFIN_WT=y
|
# CONFIG_BFIN_WT is not set
|
||||||
# CONFIG_MPU is not set
|
# CONFIG_MPU is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
|
@ -290,8 +290,8 @@ CONFIG_BFIN_ICACHE=y
|
||||||
CONFIG_BFIN_DCACHE=y
|
CONFIG_BFIN_DCACHE=y
|
||||||
# CONFIG_BFIN_DCACHE_BANKA is not set
|
# CONFIG_BFIN_DCACHE_BANKA is not set
|
||||||
# CONFIG_BFIN_ICACHE_LOCK is not set
|
# CONFIG_BFIN_ICACHE_LOCK is not set
|
||||||
# CONFIG_BFIN_WB is not set
|
CONFIG_BFIN_WB=y
|
||||||
CONFIG_BFIN_WT=y
|
# CONFIG_BFIN_WT is not set
|
||||||
# CONFIG_MPU is not set
|
# CONFIG_MPU is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
|
@ -298,8 +298,8 @@ CONFIG_BFIN_ICACHE=y
|
||||||
CONFIG_BFIN_DCACHE=y
|
CONFIG_BFIN_DCACHE=y
|
||||||
# CONFIG_BFIN_DCACHE_BANKA is not set
|
# CONFIG_BFIN_DCACHE_BANKA is not set
|
||||||
# CONFIG_BFIN_ICACHE_LOCK is not set
|
# CONFIG_BFIN_ICACHE_LOCK is not set
|
||||||
# CONFIG_BFIN_WB is not set
|
CONFIG_BFIN_WB=y
|
||||||
CONFIG_BFIN_WT=y
|
# CONFIG_BFIN_WT is not set
|
||||||
# CONFIG_MPU is not set
|
# CONFIG_MPU is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -568,15 +568,7 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
|
||||||
# CONFIG_MTD_DOC2000 is not set
|
# CONFIG_MTD_DOC2000 is not set
|
||||||
# CONFIG_MTD_DOC2001 is not set
|
# CONFIG_MTD_DOC2001 is not set
|
||||||
# CONFIG_MTD_DOC2001PLUS is not set
|
# CONFIG_MTD_DOC2001PLUS is not set
|
||||||
CONFIG_MTD_NAND=m
|
# CONFIG_MTD_NAND is not set
|
||||||
# CONFIG_MTD_NAND_VERIFY_WRITE is not set
|
|
||||||
# CONFIG_MTD_NAND_ECC_SMC is not set
|
|
||||||
# CONFIG_MTD_NAND_MUSEUM_IDS is not set
|
|
||||||
# CONFIG_MTD_NAND_BFIN is not set
|
|
||||||
CONFIG_MTD_NAND_IDS=m
|
|
||||||
# CONFIG_MTD_NAND_DISKONCHIP is not set
|
|
||||||
# CONFIG_MTD_NAND_NANDSIM is not set
|
|
||||||
CONFIG_MTD_NAND_PLATFORM=m
|
|
||||||
# CONFIG_MTD_ONENAND is not set
|
# CONFIG_MTD_ONENAND is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
|
@ -306,8 +306,8 @@ CONFIG_BFIN_ICACHE=y
|
||||||
CONFIG_BFIN_DCACHE=y
|
CONFIG_BFIN_DCACHE=y
|
||||||
# CONFIG_BFIN_DCACHE_BANKA is not set
|
# CONFIG_BFIN_DCACHE_BANKA is not set
|
||||||
# CONFIG_BFIN_ICACHE_LOCK is not set
|
# CONFIG_BFIN_ICACHE_LOCK is not set
|
||||||
# CONFIG_BFIN_WB is not set
|
CONFIG_BFIN_WB=y
|
||||||
CONFIG_BFIN_WT=y
|
# CONFIG_BFIN_WT is not set
|
||||||
# CONFIG_MPU is not set
|
# CONFIG_MPU is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
|
@ -361,8 +361,8 @@ CONFIG_BFIN_ICACHE=y
|
||||||
CONFIG_BFIN_DCACHE=y
|
CONFIG_BFIN_DCACHE=y
|
||||||
# CONFIG_BFIN_DCACHE_BANKA is not set
|
# CONFIG_BFIN_DCACHE_BANKA is not set
|
||||||
# CONFIG_BFIN_ICACHE_LOCK is not set
|
# CONFIG_BFIN_ICACHE_LOCK is not set
|
||||||
# CONFIG_BFIN_WB is not set
|
CONFIG_BFIN_WB=y
|
||||||
CONFIG_BFIN_WT=y
|
# CONFIG_BFIN_WT is not set
|
||||||
# CONFIG_BFIN_L2_CACHEABLE is not set
|
# CONFIG_BFIN_L2_CACHEABLE is not set
|
||||||
# CONFIG_MPU is not set
|
# CONFIG_MPU is not set
|
||||||
|
|
||||||
|
@ -680,7 +680,7 @@ CONFIG_SCSI=y
|
||||||
CONFIG_SCSI_DMA=y
|
CONFIG_SCSI_DMA=y
|
||||||
# CONFIG_SCSI_TGT is not set
|
# CONFIG_SCSI_TGT is not set
|
||||||
# CONFIG_SCSI_NETLINK is not set
|
# CONFIG_SCSI_NETLINK is not set
|
||||||
CONFIG_SCSI_PROC_FS=y
|
# CONFIG_SCSI_PROC_FS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# SCSI support type (disk, tape, CD-ROM)
|
# SCSI support type (disk, tape, CD-ROM)
|
||||||
|
|
|
@ -329,8 +329,8 @@ CONFIG_BFIN_ICACHE=y
|
||||||
CONFIG_BFIN_DCACHE=y
|
CONFIG_BFIN_DCACHE=y
|
||||||
# CONFIG_BFIN_DCACHE_BANKA is not set
|
# CONFIG_BFIN_DCACHE_BANKA is not set
|
||||||
# CONFIG_BFIN_ICACHE_LOCK is not set
|
# CONFIG_BFIN_ICACHE_LOCK is not set
|
||||||
# CONFIG_BFIN_WB is not set
|
CONFIG_BFIN_WB=y
|
||||||
CONFIG_BFIN_WT=y
|
# CONFIG_BFIN_WT is not set
|
||||||
# CONFIG_BFIN_L2_CACHEABLE is not set
|
# CONFIG_BFIN_L2_CACHEABLE is not set
|
||||||
# CONFIG_MPU is not set
|
# CONFIG_MPU is not set
|
||||||
|
|
||||||
|
|
|
@ -288,8 +288,8 @@ CONFIG_BFIN_ICACHE=y
|
||||||
CONFIG_BFIN_DCACHE=y
|
CONFIG_BFIN_DCACHE=y
|
||||||
# CONFIG_BFIN_DCACHE_BANKA is not set
|
# CONFIG_BFIN_DCACHE_BANKA is not set
|
||||||
# CONFIG_BFIN_ICACHE_LOCK is not set
|
# CONFIG_BFIN_ICACHE_LOCK is not set
|
||||||
# CONFIG_BFIN_WB is not set
|
CONFIG_BFIN_WB=y
|
||||||
CONFIG_BFIN_WT=y
|
# CONFIG_BFIN_WT is not set
|
||||||
# CONFIG_MPU is not set
|
# CONFIG_MPU is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
|
@ -332,8 +332,8 @@ CONFIG_BFIN_ICACHE=y
|
||||||
CONFIG_BFIN_DCACHE=y
|
CONFIG_BFIN_DCACHE=y
|
||||||
# CONFIG_BFIN_DCACHE_BANKA is not set
|
# CONFIG_BFIN_DCACHE_BANKA is not set
|
||||||
# CONFIG_BFIN_ICACHE_LOCK is not set
|
# CONFIG_BFIN_ICACHE_LOCK is not set
|
||||||
# CONFIG_BFIN_WB is not set
|
CONFIG_BFIN_WB=y
|
||||||
CONFIG_BFIN_WT=y
|
# CONFIG_BFIN_WT is not set
|
||||||
# CONFIG_MPU is not set
|
# CONFIG_MPU is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
|
@ -336,8 +336,8 @@ CONFIG_BFIN_ICACHE=y
|
||||||
CONFIG_BFIN_DCACHE=y
|
CONFIG_BFIN_DCACHE=y
|
||||||
# CONFIG_BFIN_DCACHE_BANKA is not set
|
# CONFIG_BFIN_DCACHE_BANKA is not set
|
||||||
# CONFIG_BFIN_ICACHE_LOCK is not set
|
# CONFIG_BFIN_ICACHE_LOCK is not set
|
||||||
# CONFIG_BFIN_WB is not set
|
CONFIG_BFIN_WB=y
|
||||||
CONFIG_BFIN_WT=y
|
# CONFIG_BFIN_WT is not set
|
||||||
CONFIG_L1_MAX_PIECE=16
|
CONFIG_L1_MAX_PIECE=16
|
||||||
# CONFIG_MPU is not set
|
# CONFIG_MPU is not set
|
||||||
|
|
||||||
|
@ -595,7 +595,7 @@ CONFIG_SCSI=y
|
||||||
CONFIG_SCSI_DMA=y
|
CONFIG_SCSI_DMA=y
|
||||||
# CONFIG_SCSI_TGT is not set
|
# CONFIG_SCSI_TGT is not set
|
||||||
# CONFIG_SCSI_NETLINK is not set
|
# CONFIG_SCSI_NETLINK is not set
|
||||||
CONFIG_SCSI_PROC_FS=y
|
# CONFIG_SCSI_PROC_FS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# SCSI support type (disk, tape, CD-ROM)
|
# SCSI support type (disk, tape, CD-ROM)
|
||||||
|
|
|
@ -612,7 +612,7 @@ CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
|
||||||
CONFIG_SCSI=y
|
CONFIG_SCSI=y
|
||||||
# CONFIG_SCSI_TGT is not set
|
# CONFIG_SCSI_TGT is not set
|
||||||
# CONFIG_SCSI_NETLINK is not set
|
# CONFIG_SCSI_NETLINK is not set
|
||||||
CONFIG_SCSI_PROC_FS=y
|
# CONFIG_SCSI_PROC_FS is not set
|
||||||
|
|
||||||
#
|
#
|
||||||
# SCSI support type (disk, tape, CD-ROM)
|
# SCSI support type (disk, tape, CD-ROM)
|
||||||
|
|
|
@ -282,8 +282,8 @@ CONFIG_BFIN_ICACHE=y
|
||||||
CONFIG_BFIN_DCACHE=y
|
CONFIG_BFIN_DCACHE=y
|
||||||
# CONFIG_BFIN_DCACHE_BANKA is not set
|
# CONFIG_BFIN_DCACHE_BANKA is not set
|
||||||
# CONFIG_BFIN_ICACHE_LOCK is not set
|
# CONFIG_BFIN_ICACHE_LOCK is not set
|
||||||
# CONFIG_BFIN_WB is not set
|
CONFIG_BFIN_WB=y
|
||||||
CONFIG_BFIN_WT=y
|
# CONFIG_BFIN_WT is not set
|
||||||
CONFIG_L1_MAX_PIECE=16
|
CONFIG_L1_MAX_PIECE=16
|
||||||
|
|
||||||
#
|
#
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
include include/asm-generic/Kbuild.asm
|
include include/asm-generic/Kbuild.asm
|
||||||
|
|
||||||
|
unifdef-y += bfin_sport.h
|
||||||
unifdef-y += fixed_code.h
|
unifdef-y += fixed_code.h
|
||||||
|
|
|
@ -1,30 +1,9 @@
|
||||||
/*
|
/*
|
||||||
* File: include/asm-blackfin/bfin_sport.h
|
* bfin_sport.h - userspace header for bfin sport driver
|
||||||
* Based on:
|
|
||||||
* Author: Roy Huang (roy.huang@analog.com)
|
|
||||||
*
|
*
|
||||||
* Created: Thu Aug. 24 2006
|
* Copyright 2004-2008 Analog Devices Inc.
|
||||||
* Description:
|
|
||||||
*
|
*
|
||||||
* Modified:
|
* Licensed under the GPL-2 or later.
|
||||||
* Copyright 2004-2006 Analog Devices Inc.
|
|
||||||
*
|
|
||||||
* Bugs: Enter bugs at http://blackfin.uclinux.org/
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, see the file COPYING, or write
|
|
||||||
* to the Free Software Foundation, Inc.,
|
|
||||||
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __BFIN_SPORT_H__
|
#ifndef __BFIN_SPORT_H__
|
||||||
|
@ -42,11 +21,10 @@
|
||||||
#define NORM_FORMAT 0x0
|
#define NORM_FORMAT 0x0
|
||||||
#define ALAW_FORMAT 0x2
|
#define ALAW_FORMAT 0x2
|
||||||
#define ULAW_FORMAT 0x3
|
#define ULAW_FORMAT 0x3
|
||||||
struct sport_register;
|
|
||||||
|
|
||||||
/* Function driver which use sport must initialize the structure */
|
/* Function driver which use sport must initialize the structure */
|
||||||
struct sport_config {
|
struct sport_config {
|
||||||
/*TDM (multichannels), I2S or other mode */
|
/* TDM (multichannels), I2S or other mode */
|
||||||
unsigned int mode:3;
|
unsigned int mode:3;
|
||||||
|
|
||||||
/* if TDM mode is selected, channels must be set */
|
/* if TDM mode is selected, channels must be set */
|
||||||
|
@ -72,12 +50,18 @@ struct sport_config {
|
||||||
int serial_clk;
|
int serial_clk;
|
||||||
int fsync_clk;
|
int fsync_clk;
|
||||||
|
|
||||||
unsigned int data_format:2; /*Normal, u-law or a-law */
|
unsigned int data_format:2; /* Normal, u-law or a-law */
|
||||||
|
|
||||||
int word_len; /* How length of the word in bits, 3-32 bits */
|
int word_len; /* How length of the word in bits, 3-32 bits */
|
||||||
int dma_enabled;
|
int dma_enabled;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Userspace interface */
|
||||||
|
#define SPORT_IOC_MAGIC 'P'
|
||||||
|
#define SPORT_IOC_CONFIG _IOWR('P', 0x01, struct sport_config)
|
||||||
|
|
||||||
|
#ifdef __KERNEL__
|
||||||
|
|
||||||
struct sport_register {
|
struct sport_register {
|
||||||
unsigned short tcr1;
|
unsigned short tcr1;
|
||||||
unsigned short reserved0;
|
unsigned short reserved0;
|
||||||
|
@ -117,9 +101,6 @@ struct sport_register {
|
||||||
unsigned long mrcs3;
|
unsigned long mrcs3;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define SPORT_IOC_MAGIC 'P'
|
|
||||||
#define SPORT_IOC_CONFIG _IOWR('P', 0x01, struct sport_config)
|
|
||||||
|
|
||||||
struct sport_dev {
|
struct sport_dev {
|
||||||
struct cdev cdev; /* Char device structure */
|
struct cdev cdev; /* Char device structure */
|
||||||
|
|
||||||
|
@ -149,6 +130,8 @@ struct sport_dev {
|
||||||
struct sport_config config;
|
struct sport_config config;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#define SPORT_TCR1 0
|
#define SPORT_TCR1 0
|
||||||
#define SPORT_TCR2 1
|
#define SPORT_TCR2 1
|
||||||
#define SPORT_TCLKDIV 2
|
#define SPORT_TCLKDIV 2
|
||||||
|
@ -169,4 +152,4 @@ struct sport_dev {
|
||||||
#define SPORT_MRCS2 22
|
#define SPORT_MRCS2 22
|
||||||
#define SPORT_MRCS3 23
|
#define SPORT_MRCS3 23
|
||||||
|
|
||||||
#endif /*__BFIN_SPORT_H__*/
|
#endif
|
||||||
|
|
|
@ -35,9 +35,9 @@
|
||||||
#include <asm/atomic.h>
|
#include <asm/atomic.h>
|
||||||
#include <asm/traps.h>
|
#include <asm/traps.h>
|
||||||
|
|
||||||
#define IPIPE_ARCH_STRING "1.8-00"
|
#define IPIPE_ARCH_STRING "1.9-00"
|
||||||
#define IPIPE_MAJOR_NUMBER 1
|
#define IPIPE_MAJOR_NUMBER 1
|
||||||
#define IPIPE_MINOR_NUMBER 8
|
#define IPIPE_MINOR_NUMBER 9
|
||||||
#define IPIPE_PATCH_NUMBER 0
|
#define IPIPE_PATCH_NUMBER 0
|
||||||
|
|
||||||
#ifdef CONFIG_SMP
|
#ifdef CONFIG_SMP
|
||||||
|
@ -83,9 +83,9 @@ struct ipipe_sysinfo {
|
||||||
"%2 = CYCLES2\n" \
|
"%2 = CYCLES2\n" \
|
||||||
"CC = %2 == %0\n" \
|
"CC = %2 == %0\n" \
|
||||||
"if ! CC jump 1b\n" \
|
"if ! CC jump 1b\n" \
|
||||||
: "=r" (((unsigned long *)&t)[1]), \
|
: "=d,a" (((unsigned long *)&t)[1]), \
|
||||||
"=r" (((unsigned long *)&t)[0]), \
|
"=d,a" (((unsigned long *)&t)[0]), \
|
||||||
"=r" (__cy2) \
|
"=d,a" (__cy2) \
|
||||||
: /*no input*/ : "CC"); \
|
: /*no input*/ : "CC"); \
|
||||||
t; \
|
t; \
|
||||||
})
|
})
|
||||||
|
@ -118,35 +118,40 @@ void __ipipe_disable_irqdesc(struct ipipe_domain *ipd,
|
||||||
|
|
||||||
#define __ipipe_disable_irq(irq) (irq_desc[irq].chip->mask(irq))
|
#define __ipipe_disable_irq(irq) (irq_desc[irq].chip->mask(irq))
|
||||||
|
|
||||||
#define __ipipe_lock_root() \
|
static inline int __ipipe_check_tickdev(const char *devname)
|
||||||
set_bit(IPIPE_ROOTLOCK_FLAG, &ipipe_root_domain->flags)
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
#define __ipipe_unlock_root() \
|
static inline void __ipipe_lock_root(void)
|
||||||
clear_bit(IPIPE_ROOTLOCK_FLAG, &ipipe_root_domain->flags)
|
{
|
||||||
|
set_bit(IPIPE_SYNCDEFER_FLAG, &ipipe_root_cpudom_var(status));
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void __ipipe_unlock_root(void)
|
||||||
|
{
|
||||||
|
clear_bit(IPIPE_SYNCDEFER_FLAG, &ipipe_root_cpudom_var(status));
|
||||||
|
}
|
||||||
|
|
||||||
void __ipipe_enable_pipeline(void);
|
void __ipipe_enable_pipeline(void);
|
||||||
|
|
||||||
#define __ipipe_hook_critical_ipi(ipd) do { } while (0)
|
#define __ipipe_hook_critical_ipi(ipd) do { } while (0)
|
||||||
|
|
||||||
#define __ipipe_sync_pipeline(syncmask) \
|
#define __ipipe_sync_pipeline ___ipipe_sync_pipeline
|
||||||
do { \
|
void ___ipipe_sync_pipeline(unsigned long syncmask);
|
||||||
struct ipipe_domain *ipd = ipipe_current_domain; \
|
|
||||||
if (likely(ipd != ipipe_root_domain || !test_bit(IPIPE_ROOTLOCK_FLAG, &ipd->flags))) \
|
|
||||||
__ipipe_sync_stage(syncmask); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
void __ipipe_handle_irq(unsigned irq, struct pt_regs *regs);
|
void __ipipe_handle_irq(unsigned irq, struct pt_regs *regs);
|
||||||
|
|
||||||
int __ipipe_get_irq_priority(unsigned irq);
|
int __ipipe_get_irq_priority(unsigned irq);
|
||||||
|
|
||||||
int __ipipe_get_irqthread_priority(unsigned irq);
|
|
||||||
|
|
||||||
void __ipipe_stall_root_raw(void);
|
void __ipipe_stall_root_raw(void);
|
||||||
|
|
||||||
void __ipipe_unstall_root_raw(void);
|
void __ipipe_unstall_root_raw(void);
|
||||||
|
|
||||||
void __ipipe_serial_debug(const char *fmt, ...);
|
void __ipipe_serial_debug(const char *fmt, ...);
|
||||||
|
|
||||||
|
asmlinkage void __ipipe_call_irqtail(unsigned long addr);
|
||||||
|
|
||||||
DECLARE_PER_CPU(struct pt_regs, __ipipe_tick_regs);
|
DECLARE_PER_CPU(struct pt_regs, __ipipe_tick_regs);
|
||||||
|
|
||||||
extern unsigned long __ipipe_core_clock;
|
extern unsigned long __ipipe_core_clock;
|
||||||
|
@ -162,42 +167,25 @@ static inline unsigned long __ipipe_ffnz(unsigned long ul)
|
||||||
|
|
||||||
#define __ipipe_run_irqtail() /* Must be a macro */ \
|
#define __ipipe_run_irqtail() /* Must be a macro */ \
|
||||||
do { \
|
do { \
|
||||||
asmlinkage void __ipipe_call_irqtail(void); \
|
|
||||||
unsigned long __pending; \
|
unsigned long __pending; \
|
||||||
CSYNC(); \
|
CSYNC(); \
|
||||||
__pending = bfin_read_IPEND(); \
|
__pending = bfin_read_IPEND(); \
|
||||||
if (__pending & 0x8000) { \
|
if (__pending & 0x8000) { \
|
||||||
__pending &= ~0x8010; \
|
__pending &= ~0x8010; \
|
||||||
if (__pending && (__pending & (__pending - 1)) == 0) \
|
if (__pending && (__pending & (__pending - 1)) == 0) \
|
||||||
__ipipe_call_irqtail(); \
|
__ipipe_call_irqtail(__ipipe_irq_tail_hook); \
|
||||||
} \
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define __ipipe_run_isr(ipd, irq) \
|
#define __ipipe_run_isr(ipd, irq) \
|
||||||
do { \
|
do { \
|
||||||
if (ipd == ipipe_root_domain) { \
|
if (ipd == ipipe_root_domain) { \
|
||||||
/* \
|
local_irq_enable_hw(); \
|
||||||
* Note: the I-pipe implements a threaded interrupt model on \
|
if (ipipe_virtual_irq_p(irq)) \
|
||||||
* this arch for Linux external IRQs. The interrupt handler we \
|
|
||||||
* call here only wakes up the associated IRQ thread. \
|
|
||||||
*/ \
|
|
||||||
if (ipipe_virtual_irq_p(irq)) { \
|
|
||||||
/* No irqtail here; virtual interrupts have no effect \
|
|
||||||
on IPEND so there is no need for processing \
|
|
||||||
deferral. */ \
|
|
||||||
local_irq_enable_nohead(ipd); \
|
|
||||||
ipd->irqs[irq].handler(irq, ipd->irqs[irq].cookie); \
|
ipd->irqs[irq].handler(irq, ipd->irqs[irq].cookie); \
|
||||||
local_irq_disable_nohead(ipd); \
|
else \
|
||||||
} else \
|
|
||||||
/* \
|
|
||||||
* No need to run the irqtail here either; \
|
|
||||||
* we can't be preempted by hw IRQs, so \
|
|
||||||
* non-Linux IRQs cannot stack over the short \
|
|
||||||
* thread wakeup code. Which in turn means \
|
|
||||||
* that no irqtail condition could be pending \
|
|
||||||
* for domains above Linux in the pipeline. \
|
|
||||||
*/ \
|
|
||||||
ipd->irqs[irq].handler(irq, &__raw_get_cpu_var(__ipipe_tick_regs)); \
|
ipd->irqs[irq].handler(irq, &__raw_get_cpu_var(__ipipe_tick_regs)); \
|
||||||
|
local_irq_disable_hw(); \
|
||||||
} else { \
|
} else { \
|
||||||
__clear_bit(IPIPE_SYNC_FLAG, &ipipe_cpudom_var(ipd, status)); \
|
__clear_bit(IPIPE_SYNC_FLAG, &ipipe_cpudom_var(ipd, status)); \
|
||||||
local_irq_enable_nohead(ipd); \
|
local_irq_enable_nohead(ipd); \
|
||||||
|
@ -217,42 +205,24 @@ void ipipe_init_irq_threads(void);
|
||||||
|
|
||||||
int ipipe_start_irq_thread(unsigned irq, struct irq_desc *desc);
|
int ipipe_start_irq_thread(unsigned irq, struct irq_desc *desc);
|
||||||
|
|
||||||
#define IS_SYSIRQ(irq) ((irq) > IRQ_CORETMR && (irq) <= SYS_IRQS)
|
#ifdef CONFIG_GENERIC_CLOCKEVENTS
|
||||||
#define IS_GPIOIRQ(irq) ((irq) >= GPIO_IRQ_BASE && (irq) < NR_IRQS)
|
#define IRQ_SYSTMR IRQ_CORETMR
|
||||||
|
#define IRQ_PRIOTMR IRQ_CORETMR
|
||||||
|
#else
|
||||||
#define IRQ_SYSTMR IRQ_TIMER0
|
#define IRQ_SYSTMR IRQ_TIMER0
|
||||||
#define IRQ_PRIOTMR CONFIG_IRQ_TIMER0
|
#define IRQ_PRIOTMR CONFIG_IRQ_TIMER0
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(CONFIG_BF531) || defined(CONFIG_BF532) || defined(CONFIG_BF533)
|
#ifdef CONFIG_BF561
|
||||||
#define PRIO_GPIODEMUX(irq) CONFIG_PFA
|
|
||||||
#elif defined(CONFIG_BF534) || defined(CONFIG_BF536) || defined(CONFIG_BF537)
|
|
||||||
#define PRIO_GPIODEMUX(irq) CONFIG_IRQ_PROG_INTA
|
|
||||||
#elif defined(CONFIG_BF52x)
|
|
||||||
#define PRIO_GPIODEMUX(irq) ((irq) == IRQ_PORTF_INTA ? CONFIG_IRQ_PORTF_INTA : \
|
|
||||||
(irq) == IRQ_PORTG_INTA ? CONFIG_IRQ_PORTG_INTA : \
|
|
||||||
(irq) == IRQ_PORTH_INTA ? CONFIG_IRQ_PORTH_INTA : \
|
|
||||||
-1)
|
|
||||||
#elif defined(CONFIG_BF561)
|
|
||||||
#define PRIO_GPIODEMUX(irq) ((irq) == IRQ_PROG0_INTA ? CONFIG_IRQ_PROG0_INTA : \
|
|
||||||
(irq) == IRQ_PROG1_INTA ? CONFIG_IRQ_PROG1_INTA : \
|
|
||||||
(irq) == IRQ_PROG2_INTA ? CONFIG_IRQ_PROG2_INTA : \
|
|
||||||
-1)
|
|
||||||
#define bfin_write_TIMER_DISABLE(val) bfin_write_TMRS8_DISABLE(val)
|
#define bfin_write_TIMER_DISABLE(val) bfin_write_TMRS8_DISABLE(val)
|
||||||
#define bfin_write_TIMER_ENABLE(val) bfin_write_TMRS8_ENABLE(val)
|
#define bfin_write_TIMER_ENABLE(val) bfin_write_TMRS8_ENABLE(val)
|
||||||
#define bfin_write_TIMER_STATUS(val) bfin_write_TMRS8_STATUS(val)
|
#define bfin_write_TIMER_STATUS(val) bfin_write_TMRS8_STATUS(val)
|
||||||
#define bfin_read_TIMER_STATUS() bfin_read_TMRS8_STATUS()
|
#define bfin_read_TIMER_STATUS() bfin_read_TMRS8_STATUS()
|
||||||
#elif defined(CONFIG_BF54x)
|
#elif defined(CONFIG_BF54x)
|
||||||
#define PRIO_GPIODEMUX(irq) ((irq) == IRQ_PINT0 ? CONFIG_IRQ_PINT0 : \
|
|
||||||
(irq) == IRQ_PINT1 ? CONFIG_IRQ_PINT1 : \
|
|
||||||
(irq) == IRQ_PINT2 ? CONFIG_IRQ_PINT2 : \
|
|
||||||
(irq) == IRQ_PINT3 ? CONFIG_IRQ_PINT3 : \
|
|
||||||
-1)
|
|
||||||
#define bfin_write_TIMER_DISABLE(val) bfin_write_TIMER_DISABLE0(val)
|
#define bfin_write_TIMER_DISABLE(val) bfin_write_TIMER_DISABLE0(val)
|
||||||
#define bfin_write_TIMER_ENABLE(val) bfin_write_TIMER_ENABLE0(val)
|
#define bfin_write_TIMER_ENABLE(val) bfin_write_TIMER_ENABLE0(val)
|
||||||
#define bfin_write_TIMER_STATUS(val) bfin_write_TIMER_STATUS0(val)
|
#define bfin_write_TIMER_STATUS(val) bfin_write_TIMER_STATUS0(val)
|
||||||
#define bfin_read_TIMER_STATUS(val) bfin_read_TIMER_STATUS0(val)
|
#define bfin_read_TIMER_STATUS(val) bfin_read_TIMER_STATUS0(val)
|
||||||
#else
|
|
||||||
# error "no PRIO_GPIODEMUX() for this part"
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define __ipipe_root_tick_p(regs) ((regs->ipend & 0x10) != 0)
|
#define __ipipe_root_tick_p(regs) ((regs->ipend & 0x10) != 0)
|
||||||
|
@ -275,4 +245,6 @@ int ipipe_start_irq_thread(unsigned irq, struct irq_desc *desc);
|
||||||
|
|
||||||
#endif /* !CONFIG_IPIPE */
|
#endif /* !CONFIG_IPIPE */
|
||||||
|
|
||||||
|
#define ipipe_update_tick_evtdev(evtdev) do { } while (0)
|
||||||
|
|
||||||
#endif /* !__ASM_BLACKFIN_IPIPE_H */
|
#endif /* !__ASM_BLACKFIN_IPIPE_H */
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* -*- linux-c -*-
|
/* -*- linux-c -*-
|
||||||
* include/asm-blackfin/_baseipipe.h
|
* include/asm-blackfin/ipipe_base.h
|
||||||
*
|
*
|
||||||
* Copyright (C) 2007 Philippe Gerum.
|
* Copyright (C) 2007 Philippe Gerum.
|
||||||
*
|
*
|
||||||
|
@ -27,8 +27,9 @@
|
||||||
#define IPIPE_NR_XIRQS NR_IRQS
|
#define IPIPE_NR_XIRQS NR_IRQS
|
||||||
#define IPIPE_IRQ_ISHIFT 5 /* 2^5 for 32bits arch. */
|
#define IPIPE_IRQ_ISHIFT 5 /* 2^5 for 32bits arch. */
|
||||||
|
|
||||||
/* Blackfin-specific, global domain flags */
|
/* Blackfin-specific, per-cpu pipeline status */
|
||||||
#define IPIPE_ROOTLOCK_FLAG 1 /* Lock pipeline for root */
|
#define IPIPE_SYNCDEFER_FLAG 15
|
||||||
|
#define IPIPE_SYNCDEFER_MASK (1L << IPIPE_SYNCDEFER_MASK)
|
||||||
|
|
||||||
/* Blackfin traps -- i.e. exception vector numbers */
|
/* Blackfin traps -- i.e. exception vector numbers */
|
||||||
#define IPIPE_NR_FAULTS 52 /* We leave a gap after VEC_ILL_RES. */
|
#define IPIPE_NR_FAULTS 52 /* We leave a gap after VEC_ILL_RES. */
|
||||||
|
@ -48,11 +49,6 @@
|
||||||
|
|
||||||
#ifndef __ASSEMBLY__
|
#ifndef __ASSEMBLY__
|
||||||
|
|
||||||
#include <linux/bitops.h>
|
|
||||||
|
|
||||||
extern int test_bit(int nr, const void *addr);
|
|
||||||
|
|
||||||
|
|
||||||
extern unsigned long __ipipe_root_status; /* Alias to ipipe_root_cpudom_var(status) */
|
extern unsigned long __ipipe_root_status; /* Alias to ipipe_root_cpudom_var(status) */
|
||||||
|
|
||||||
static inline void __ipipe_stall_root(void)
|
static inline void __ipipe_stall_root(void)
|
||||||
|
|
|
@ -65,16 +65,34 @@ void __ipipe_restore_root(unsigned long flags);
|
||||||
do { \
|
do { \
|
||||||
(x) = __ipipe_test_root() ? \
|
(x) = __ipipe_test_root() ? \
|
||||||
__all_masked_irq_flags : bfin_irq_flags; \
|
__all_masked_irq_flags : bfin_irq_flags; \
|
||||||
|
barrier(); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define local_irq_save(x) \
|
#define local_irq_save(x) \
|
||||||
do { \
|
do { \
|
||||||
(x) = __ipipe_test_and_stall_root(); \
|
(x) = __ipipe_test_and_stall_root() ? \
|
||||||
|
__all_masked_irq_flags : bfin_irq_flags; \
|
||||||
|
barrier(); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#define local_irq_restore(x) __ipipe_restore_root(x)
|
static inline void local_irq_restore(unsigned long x)
|
||||||
#define local_irq_disable() __ipipe_stall_root()
|
{
|
||||||
#define local_irq_enable() __ipipe_unstall_root()
|
barrier();
|
||||||
|
__ipipe_restore_root(x == __all_masked_irq_flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define local_irq_disable() \
|
||||||
|
do { \
|
||||||
|
__ipipe_stall_root(); \
|
||||||
|
barrier(); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
|
static inline void local_irq_enable(void)
|
||||||
|
{
|
||||||
|
barrier();
|
||||||
|
__ipipe_unstall_root();
|
||||||
|
}
|
||||||
|
|
||||||
#define irqs_disabled() __ipipe_test_root()
|
#define irqs_disabled() __ipipe_test_root()
|
||||||
|
|
||||||
#define local_save_flags_hw(x) \
|
#define local_save_flags_hw(x) \
|
||||||
|
|
|
@ -122,6 +122,7 @@ static inline struct thread_info *current_thread_info(void)
|
||||||
#define TIF_MEMDIE 4
|
#define TIF_MEMDIE 4
|
||||||
#define TIF_RESTORE_SIGMASK 5 /* restore signal mask in do_signal() */
|
#define TIF_RESTORE_SIGMASK 5 /* restore signal mask in do_signal() */
|
||||||
#define TIF_FREEZE 6 /* is freezing for suspend */
|
#define TIF_FREEZE 6 /* is freezing for suspend */
|
||||||
|
#define TIF_IRQ_SYNC 7 /* sync pipeline stage */
|
||||||
|
|
||||||
/* as above, but as bit values */
|
/* as above, but as bit values */
|
||||||
#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
|
#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
|
||||||
|
@ -130,6 +131,7 @@ static inline struct thread_info *current_thread_info(void)
|
||||||
#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
|
#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
|
||||||
#define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK)
|
#define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK)
|
||||||
#define _TIF_FREEZE (1<<TIF_FREEZE)
|
#define _TIF_FREEZE (1<<TIF_FREEZE)
|
||||||
|
#define _TIF_IRQ_SYNC (1<<TIF_IRQ_SYNC)
|
||||||
|
|
||||||
#define _TIF_WORK_MASK 0x0000FFFE /* work to do on interrupt/exception return */
|
#define _TIF_WORK_MASK 0x0000FFFE /* work to do on interrupt/exception return */
|
||||||
|
|
||||||
|
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче