mirror of
https://github.com/torvalds/linux.git
synced 2026-06-03 20:14:06 +02:00
Merge branch 'master' into next
This commit is contained in:
commit
1987f17d22
|
|
@ -12,7 +12,8 @@ DOCBOOKS := z8530book.xml mcabook.xml device-drivers.xml \
|
|||
kernel-api.xml filesystems.xml lsm.xml usb.xml kgdb.xml \
|
||||
gadget.xml libata.xml mtdnand.xml librs.xml rapidio.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):
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
|
||||
|
||||
<book>
|
||||
<?dbhtml filename="index.html">
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
|
||||
|
||||
<!-- ****************************************************** -->
|
||||
<!-- Header -->
|
||||
<!-- ****************************************************** -->
|
||||
<book id="ALSA-Driver-API">
|
||||
<bookinfo>
|
||||
<title>The ALSA Driver API</title>
|
||||
|
||||
|
|
@ -35,6 +35,8 @@
|
|||
|
||||
</bookinfo>
|
||||
|
||||
<toc></toc>
|
||||
|
||||
<chapter><title>Management of Cards and Devices</title>
|
||||
<sect1><title>Card Management</title>
|
||||
!Esound/core/init.c
|
||||
|
|
@ -71,6 +73,10 @@
|
|||
!Esound/pci/ac97/ac97_codec.c
|
||||
!Esound/pci/ac97/ac97_pcm.c
|
||||
</sect1>
|
||||
<sect1><title>Virtual Master Control API</title>
|
||||
!Esound/core/vmaster.c
|
||||
!Iinclude/sound/control.h
|
||||
</sect1>
|
||||
</chapter>
|
||||
<chapter><title>MIDI API</title>
|
||||
<sect1><title>Raw MIDI API</title>
|
||||
|
|
@ -88,6 +94,9 @@
|
|||
<chapter><title>Miscellaneous Functions</title>
|
||||
<sect1><title>Hardware-Dependent Devices API</title>
|
||||
!Esound/core/hwdep.c
|
||||
</sect1>
|
||||
<sect1><title>Jack Abstraction Layer API</title>
|
||||
!Esound/core/jack.c
|
||||
</sect1>
|
||||
<sect1><title>ISA DMA Helpers</title>
|
||||
!Esound/core/isadma.c
|
||||
|
|
@ -41,6 +41,13 @@ GPL version 2.
|
|||
</abstract>
|
||||
|
||||
<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>
|
||||
<revnumber>0.7</revnumber>
|
||||
<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.
|
||||
</para>
|
||||
<para>
|
||||
Each <filename>mapX/</filename> directory contains two read-only files
|
||||
that show start address and size of the memory:
|
||||
Each <filename>mapX/</filename> directory contains four read-only files
|
||||
that show attributes of the memory:
|
||||
</para>
|
||||
<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>
|
||||
<para>
|
||||
<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>.
|
||||
</para>
|
||||
<para>
|
||||
Each <filename>portX/</filename> directory contains three read-only
|
||||
files that show start, size, and type of the port region:
|
||||
Each <filename>portX/</filename> directory contains four read-only
|
||||
files that show name, start, size, and type of the port region:
|
||||
</para>
|
||||
<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>
|
||||
<para>
|
||||
<filename>start</filename>: The first port of this region.
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
|
||||
|
||||
<book>
|
||||
<?dbhtml filename="index.html">
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
|
||||
|
||||
<!-- ****************************************************** -->
|
||||
<!-- Header -->
|
||||
<!-- ****************************************************** -->
|
||||
<book id="Writing-an-ALSA-Driver">
|
||||
<bookinfo>
|
||||
<title>Writing an ALSA Driver</title>
|
||||
<author>
|
||||
|
|
@ -492,9 +492,9 @@
|
|||
}
|
||||
|
||||
/* (2) */
|
||||
card = snd_card_new(index[dev], id[dev], THIS_MODULE, 0);
|
||||
if (card == NULL)
|
||||
return -ENOMEM;
|
||||
err = snd_card_create(index[dev], id[dev], THIS_MODULE, 0, &card);
|
||||
if (err < 0)
|
||||
return err;
|
||||
|
||||
/* (3) */
|
||||
err = snd_mychip_create(card, pci, &chip);
|
||||
|
|
@ -590,8 +590,9 @@
|
|||
<programlisting>
|
||||
<![CDATA[
|
||||
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>
|
||||
</informalexample>
|
||||
|
|
@ -809,26 +810,28 @@
|
|||
|
||||
<para>
|
||||
As mentioned above, to create a card instance, call
|
||||
<function>snd_card_new()</function>.
|
||||
<function>snd_card_create()</function>.
|
||||
|
||||
<informalexample>
|
||||
<programlisting>
|
||||
<![CDATA[
|
||||
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>
|
||||
</informalexample>
|
||||
</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
|
||||
<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
|
||||
chip-specific data. Note that these data
|
||||
are allocated by <function>snd_card_new()</function>.
|
||||
are allocated by <function>snd_card_create()</function>.
|
||||
</para>
|
||||
</section>
|
||||
|
||||
|
|
@ -915,15 +918,16 @@
|
|||
</para>
|
||||
|
||||
<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>
|
||||
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>
|
||||
<programlisting>
|
||||
<![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>
|
||||
</informalexample>
|
||||
|
|
@ -952,8 +956,8 @@
|
|||
|
||||
<para>
|
||||
After allocating a card instance via
|
||||
<function>snd_card_new()</function> (with
|
||||
<constant>NULL</constant> on the 4th arg), call
|
||||
<function>snd_card_create()</function> (with
|
||||
<constant>0</constant> on the 4th arg), call
|
||||
<function>kzalloc()</function>.
|
||||
|
||||
<informalexample>
|
||||
|
|
@ -961,7 +965,7 @@
|
|||
<![CDATA[
|
||||
struct snd_card *card;
|
||||
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);
|
||||
]]>
|
||||
|
|
@ -5750,8 +5754,9 @@ struct _snd_pcm_runtime {
|
|||
....
|
||||
struct snd_card *card;
|
||||
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);
|
||||
....
|
||||
|
|
@ -5763,7 +5768,7 @@ struct _snd_pcm_runtime {
|
|||
</informalexample>
|
||||
|
||||
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.
|
||||
|
||||
<informalexample>
|
||||
|
|
@ -5775,9 +5780,10 @@ struct _snd_pcm_runtime {
|
|||
....
|
||||
struct snd_card *card;
|
||||
struct mychip *chip;
|
||||
int err;
|
||||
....
|
||||
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);
|
||||
....
|
||||
chip = card->private_data;
|
||||
....
|
||||
|
|
@ -117,10 +117,28 @@ accessible parameters:
|
|||
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
|
||||
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
|
||||
available that you may set 'sampling_rate' to.
|
||||
show_sampling_rate_(min|max): THIS INTERFACE IS DEPRECATED, DON'T USE IT.
|
||||
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
|
||||
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)
|
||||
cpuinfo_max_freq : this file shows the maximum operating
|
||||
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
|
||||
used to set the frequency on this CPU
|
||||
|
||||
|
|
|
|||
240
Documentation/dynamic-debug-howto.txt
Normal file
240
Documentation/dynamic-debug-howto.txt
Normal file
|
|
@ -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
|
||||
|
|
@ -1826,11 +1826,6 @@ and is between 256 and 4096 characters. It is defined in the file
|
|||
autoconfiguration.
|
||||
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=
|
||||
[KNL] debug: print fatal signals
|
||||
print-fatal-signals=1: print segfault info to
|
||||
|
|
|
|||
|
|
@ -346,6 +346,9 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
|||
sbirq - IRQ # for CMI8330 chip (SB16)
|
||||
sbdma8 - 8bit 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.
|
||||
|
||||
|
|
@ -388,34 +391,11 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
|
|||
|
||||
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 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.
|
||||
|
||||
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.
|
||||
|
||||
This module is aliased as snd-cs4232 since it provides the old
|
||||
snd-cs4232 functionality, too.
|
||||
|
||||
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.
|
||||
|
||||
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)
|
||||
irq - IRQ # for ES-1688 chip (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
|
||||
position_fix - Fix DMA pointer (0 = auto, 1 = use LPIB, 2 = POSBUF)
|
||||
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);
|
||||
Useful to check the initial codec status for debugging
|
||||
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.
|
||||
|
||||
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
|
||||
----------------
|
||||
|
||||
|
|
@ -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,
|
||||
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.
|
||||
|
||||
|
|
|
|||
|
|
@ -56,6 +56,7 @@ ALC262
|
|||
sony-assamd Sony ASSAMD
|
||||
toshiba-s06 Toshiba S06
|
||||
toshiba-rx1 Toshiba RX1
|
||||
tyan Tyan Thunder n6650W (S2915-E)
|
||||
ultra Samsung Q1 Ultra Vista model
|
||||
lenovo-3000 Lenovo 3000 y410
|
||||
nec NEC Versa S9100
|
||||
|
|
@ -261,6 +262,8 @@ Conexant 5051
|
|||
=============
|
||||
laptop Basic Laptop config (default)
|
||||
hp HP Spartan laptop
|
||||
hp-dv6736 HP dv6736
|
||||
lenovo-x200 Lenovo X200 laptop
|
||||
|
||||
STAC9200
|
||||
========
|
||||
|
|
@ -278,6 +281,7 @@ STAC9200
|
|||
gateway-m4 Gateway laptops with EAPD control
|
||||
gateway-m4-2 Gateway laptops with EAPD control
|
||||
panasonic Panasonic CF-74
|
||||
auto BIOS setup (default)
|
||||
|
||||
STAC9205/9254
|
||||
=============
|
||||
|
|
@ -285,6 +289,8 @@ STAC9205/9254
|
|||
dell-m42 Dell (unknown)
|
||||
dell-m43 Dell Precision
|
||||
dell-m44 Dell Inspiron
|
||||
eapd Keep EAPD on (e.g. Gateway T1616)
|
||||
auto BIOS setup (default)
|
||||
|
||||
STAC9220/9221
|
||||
=============
|
||||
|
|
@ -308,6 +314,7 @@ STAC9220/9221
|
|||
dell-d82 Dell (unknown)
|
||||
dell-m81 Dell (unknown)
|
||||
dell-m82 Dell XPS M1210
|
||||
auto BIOS setup (default)
|
||||
|
||||
STAC9202/9250/9251
|
||||
==================
|
||||
|
|
@ -319,6 +326,7 @@ STAC9202/9250/9251
|
|||
m3 Some Gateway MX series laptops
|
||||
m5 Some Gateway MX series laptops (MP6954)
|
||||
m6 Some Gateway NX series laptops
|
||||
auto BIOS setup (default)
|
||||
|
||||
STAC9227/9228/9229/927x
|
||||
=======================
|
||||
|
|
@ -328,6 +336,7 @@ STAC9227/9228/9229/927x
|
|||
5stack D965 5stack + SPDIF
|
||||
dell-3stack Dell Dimension E520
|
||||
dell-bios Fixes with Dell BIOS setup
|
||||
auto BIOS setup (default)
|
||||
|
||||
STAC92HD71B*
|
||||
============
|
||||
|
|
@ -335,7 +344,10 @@ STAC92HD71B*
|
|||
dell-m4-1 Dell desktops
|
||||
dell-m4-2 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*
|
||||
===========
|
||||
|
|
@ -345,13 +357,16 @@ STAC92HD73*
|
|||
dell-m6-dmic Dell desktops/laptops with digital mics
|
||||
dell-m6 Dell desktops/laptops with both type of mics
|
||||
dell-eq Dell desktops/laptops
|
||||
auto BIOS setup (default)
|
||||
|
||||
STAC92HD83*
|
||||
===========
|
||||
ref Reference board
|
||||
mic-ref Reference board with power managment for ports
|
||||
dell-s14 Dell laptop
|
||||
auto BIOS setup (default)
|
||||
|
||||
STAC9872
|
||||
========
|
||||
vaio Setup for VAIO FE550G/SZ110
|
||||
vaio-ar Setup for VAIO AR
|
||||
vaio VAIO laptop without SPDIF
|
||||
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
|
||||
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
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
|
|
@ -358,10 +365,26 @@ modelname::
|
|||
to this file.
|
||||
init_verbs::
|
||||
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::
|
||||
Shows hint strings for codec parsers for any use. Right now it's
|
||||
not used.
|
||||
Shows / stores hint strings for codec parsers for any use.
|
||||
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::
|
||||
Triggers the codec re-configuration. When any value is written to
|
||||
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
|
||||
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
|
||||
~~~~~~~~~~~~
|
||||
|
|
@ -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
|
||||
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
|
||||
~~~~~~~~
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
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
|
||||
-----------------------------------
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
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
|
||||
by other operating systems.
|
||||
|
||||
|
|
|
|||
|
|
@ -229,16 +229,26 @@ struct usbmon_packet {
|
|||
int status; /* 28: */
|
||||
unsigned int length; /* 32: Length of data (submitted or actual) */
|
||||
unsigned int len_cap; /* 36: Delivered length */
|
||||
unsigned char setup[8]; /* 40: Only for Control 'S' */
|
||||
}; /* 48 bytes total */
|
||||
union { /* 40: */
|
||||
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),
|
||||
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
|
||||
number. Number zero (/dev/usbmon0) is special and means "all buses".
|
||||
However, this feature is not implemented yet. Note that specific naming
|
||||
policy is set by your Linux distribution.
|
||||
Note that specific naming policy is set by your Linux distribution.
|
||||
|
||||
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
|
||||
|
|
@ -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.
|
||||
|
||||
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,
|
||||
then returns the first event. Its argument is a pointer to the following
|
||||
These calls wait for events to arrive if none were in the kernel buffer,
|
||||
then return the first event. The argument is a pointer to the following
|
||||
structure:
|
||||
|
||||
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
|
||||
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)
|
||||
|
||||
This ioctl is primarily used when the application accesses the buffer
|
||||
|
|
|
|||
|
|
@ -1269,6 +1269,12 @@ L: linux-crypto@vger.kernel.org
|
|||
T: git kernel.org:/pub/scm/linux/kernel/git/herbert/crypto-2.6.git
|
||||
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
|
||||
P: Jaya Kumar
|
||||
M: jayakumar.alsa@gmail.com
|
||||
|
|
|
|||
|
|
@ -135,6 +135,11 @@ static unsigned long e740_pin_config[] __initdata = {
|
|||
/* IrDA */
|
||||
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 */
|
||||
GPIO8_GPIO, /* CD0 */
|
||||
GPIO44_GPIO, /* CD1 */
|
||||
|
|
|
|||
|
|
@ -133,6 +133,11 @@ static unsigned long e750_pin_config[] __initdata = {
|
|||
/* IrDA */
|
||||
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 */
|
||||
GPIO8_GPIO, /* CD0 */
|
||||
GPIO44_GPIO, /* CD1 */
|
||||
|
|
|
|||
|
|
@ -153,6 +153,13 @@ static unsigned long h5000_pin_config[] __initdata = {
|
|||
GPIO23_SSP1_SCLK,
|
||||
GPIO25_SSP1_TXD,
|
||||
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 */
|
||||
#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 */
|
||||
#define GPIO_ESERIES_TMIO_IRQ 5
|
||||
#define GPIO_ESERIES_TMIO_PCLR 19
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@
|
|||
#define SSCR0_TUM (1 << 23) /* Transmit FIFO underrun interrupt 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_ADC (1 << 30) /* Audio clock select */
|
||||
#define SSCR0_ACS (1 << 30) /* Audio clock select */
|
||||
#define SSCR0_MOD (1 << 31) /* Mode (normal or network) */
|
||||
#endif
|
||||
|
||||
|
|
@ -109,6 +109,11 @@
|
|||
#define SSSR_TINT (1 << 19) /* Receiver Time-out 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_DMYSTOP(x) ((x) << 23) /* Dummy Stop */
|
||||
#define SSPSP_SFRMWDTH(x) ((x) << 16) /* Serial Frame Width */
|
||||
|
|
|
|||
|
|
@ -105,6 +105,12 @@ static unsigned long spitz_pin_config[] __initdata = {
|
|||
GPIO57_nIOIS16,
|
||||
GPIO104_PSKTSEL,
|
||||
|
||||
/* I2S */
|
||||
GPIO28_I2S_BITCLK_OUT,
|
||||
GPIO29_I2S_SDATA_IN,
|
||||
GPIO30_I2S_SDATA_OUT,
|
||||
GPIO31_I2S_SYNC,
|
||||
|
||||
/* MMC */
|
||||
GPIO32_MMC_CLK,
|
||||
GPIO112_MMC_CMD,
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
#include <mach/regs-mem.h>
|
||||
#include <mach/regs-lcd.h>
|
||||
#include <mach/regs-sdi.h>
|
||||
#include <asm/plat-s3c24xx/regs-iis.h>
|
||||
#include <plat/regs-iis.h>
|
||||
#include <plat/regs-spi.h>
|
||||
|
||||
static struct s3c24xx_dma_map __initdata s3c2410_dma_mappings[] = {
|
||||
|
|
|
|||
|
|
@ -29,13 +29,14 @@
|
|||
|
||||
#include <mach/bast-map.h>
|
||||
#include <mach/bast-irq.h>
|
||||
#include <mach/usb-control.h>
|
||||
#include <mach/regs-gpio.h>
|
||||
|
||||
#include <mach/hardware.h>
|
||||
#include <asm/irq.h>
|
||||
|
||||
#include <plat/usb-control.h>
|
||||
#include <plat/devs.h>
|
||||
|
||||
#include "usb-simtec.h"
|
||||
|
||||
/* control power and monitor over-current events on various Simtec
|
||||
|
|
|
|||
|
|
@ -29,8 +29,8 @@
|
|||
#include <mach/regs-mem.h>
|
||||
#include <mach/regs-lcd.h>
|
||||
#include <mach/regs-sdi.h>
|
||||
#include <asm/plat-s3c24xx/regs-s3c2412-iis.h>
|
||||
#include <asm/plat-s3c24xx/regs-iis.h>
|
||||
#include <plat/regs-s3c2412-iis.h>
|
||||
#include <plat/regs-iis.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 }
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
#include <mach/regs-mem.h>
|
||||
#include <mach/regs-lcd.h>
|
||||
#include <mach/regs-sdi.h>
|
||||
#include <asm/plat-s3c24xx/regs-iis.h>
|
||||
#include <plat/regs-iis.h>
|
||||
#include <plat/regs-spi.h>
|
||||
|
||||
static struct s3c24xx_dma_map __initdata s3c2440_dma_mappings[] = {
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
#include <mach/regs-mem.h>
|
||||
#include <mach/regs-lcd.h>
|
||||
#include <mach/regs-sdi.h>
|
||||
#include <asm/plat-s3c24xx/regs-iis.h>
|
||||
#include <plat/regs-iis.h>
|
||||
#include <plat/regs-spi.h>
|
||||
|
||||
#define MAP(x) { \
|
||||
|
|
|
|||
|
|
@ -33,6 +33,9 @@
|
|||
#define S3C2412_IISCON_RXDMA_ACTIVE (1 << 1)
|
||||
#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_EXTERNAL (1 << 10)
|
||||
#define S3C2412_IISMOD_SLAVE (2 << 10)
|
||||
|
|
@ -44,8 +47,8 @@
|
|||
#define S3C2412_IISMOD_LR_LLOW (0 << 7)
|
||||
#define S3C2412_IISMOD_LR_RLOW (1 << 7)
|
||||
#define S3C2412_IISMOD_SDF_IIS (0 << 5)
|
||||
#define S3C2412_IISMOD_SDF_MSB (0 << 5)
|
||||
#define S3C2412_IISMOD_SDF_LSB (0 << 5)
|
||||
#define S3C2412_IISMOD_SDF_MSB (1 << 5)
|
||||
#define S3C2412_IISMOD_SDF_LSB (2 << 5)
|
||||
#define S3C2412_IISMOD_SDF_MASK (3 << 5)
|
||||
#define S3C2412_IISMOD_RCLK_256FS (0 << 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
|
||||
* 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
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
|
|
@ -11,7 +11,7 @@
|
|||
*/
|
||||
|
||||
#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)
|
||||
|
||||
|
|
@ -15,7 +15,6 @@
|
|||
#include <linux/mtd/physmap.h>
|
||||
#include <linux/usb/isp116x.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/delay.h>
|
||||
|
||||
#include <mach/portmux.h>
|
||||
|
|
|
|||
|
|
@ -230,10 +230,10 @@ extern int __put_user_bad(void);
|
|||
asm volatile( \
|
||||
"1: ld." suffix " %1, %3 \n" \
|
||||
"2: \n" \
|
||||
" .section .fixup, \"ax\" \n" \
|
||||
" .subsection 1 \n" \
|
||||
"3: mov %0, %4 \n" \
|
||||
" rjmp 2b \n" \
|
||||
" .previous \n" \
|
||||
" .subsection 0 \n" \
|
||||
" .section __ex_table, \"a\" \n" \
|
||||
" .long 1b, 3b \n" \
|
||||
" .previous \n" \
|
||||
|
|
@ -295,10 +295,10 @@ extern int __put_user_bad(void);
|
|||
asm volatile( \
|
||||
"1: st." suffix " %1, %3 \n" \
|
||||
"2: \n" \
|
||||
" .section .fixup, \"ax\" \n" \
|
||||
" .subsection 1 \n" \
|
||||
"3: mov %0, %4 \n" \
|
||||
" rjmp 2b \n" \
|
||||
" .previous \n" \
|
||||
" .subsection 0 \n" \
|
||||
" .section __ex_table, \"a\" \n" \
|
||||
" .long 1b, 3b \n" \
|
||||
" .previous \n" \
|
||||
|
|
|
|||
|
|
@ -150,10 +150,10 @@ page_not_present:
|
|||
tlbmiss_restore
|
||||
sub sp, 4
|
||||
stmts --sp, r0-lr
|
||||
rcall save_full_context_ex
|
||||
call save_full_context_ex
|
||||
mfsr r12, SYSREG_ECR
|
||||
mov r11, sp
|
||||
rcall do_page_fault
|
||||
call do_page_fault
|
||||
rjmp ret_from_exception
|
||||
|
||||
.align 2
|
||||
|
|
@ -250,7 +250,7 @@ syscall_badsys:
|
|||
|
||||
.global ret_from_fork
|
||||
ret_from_fork:
|
||||
rcall schedule_tail
|
||||
call schedule_tail
|
||||
|
||||
/* check for syscall tracing */
|
||||
get_thread_info r0
|
||||
|
|
@ -261,7 +261,7 @@ ret_from_fork:
|
|||
|
||||
syscall_trace_enter:
|
||||
pushm r8-r12
|
||||
rcall syscall_trace
|
||||
call syscall_trace
|
||||
popm r8-r12
|
||||
rjmp syscall_trace_cont
|
||||
|
||||
|
|
@ -269,14 +269,14 @@ syscall_exit_work:
|
|||
bld r1, TIF_SYSCALL_TRACE
|
||||
brcc 1f
|
||||
unmask_interrupts
|
||||
rcall syscall_trace
|
||||
call syscall_trace
|
||||
mask_interrupts
|
||||
ld.w r1, r0[TI_flags]
|
||||
|
||||
1: bld r1, TIF_NEED_RESCHED
|
||||
brcc 2f
|
||||
unmask_interrupts
|
||||
rcall schedule
|
||||
call schedule
|
||||
mask_interrupts
|
||||
ld.w r1, r0[TI_flags]
|
||||
rjmp 1b
|
||||
|
|
@ -287,7 +287,7 @@ syscall_exit_work:
|
|||
unmask_interrupts
|
||||
mov r12, sp
|
||||
mov r11, r0
|
||||
rcall do_notify_resume
|
||||
call do_notify_resume
|
||||
mask_interrupts
|
||||
ld.w r1, r0[TI_flags]
|
||||
rjmp 1b
|
||||
|
|
@ -394,7 +394,7 @@ handle_critical:
|
|||
|
||||
mfsr r12, SYSREG_ECR
|
||||
mov r11, sp
|
||||
rcall do_critical_exception
|
||||
call do_critical_exception
|
||||
|
||||
/* We should never get here... */
|
||||
bad_return:
|
||||
|
|
@ -407,18 +407,18 @@ bad_return:
|
|||
do_bus_error_write:
|
||||
sub sp, 4
|
||||
stmts --sp, r0-lr
|
||||
rcall save_full_context_ex
|
||||
call save_full_context_ex
|
||||
mov r11, 1
|
||||
rjmp 1f
|
||||
|
||||
do_bus_error_read:
|
||||
sub sp, 4
|
||||
stmts --sp, r0-lr
|
||||
rcall save_full_context_ex
|
||||
call save_full_context_ex
|
||||
mov r11, 0
|
||||
1: mfsr r12, SYSREG_BEAR
|
||||
mov r10, sp
|
||||
rcall do_bus_error
|
||||
call do_bus_error
|
||||
rjmp ret_from_exception
|
||||
|
||||
.align 1
|
||||
|
|
@ -433,7 +433,7 @@ do_nmi_ll:
|
|||
1: pushm r8, r9 /* PC and SR */
|
||||
mfsr r12, SYSREG_ECR
|
||||
mov r11, sp
|
||||
rcall do_nmi
|
||||
call do_nmi
|
||||
popm r8-r9
|
||||
mtsr SYSREG_RAR_NMI, r8
|
||||
tst r0, r0
|
||||
|
|
@ -457,29 +457,29 @@ do_nmi_ll:
|
|||
handle_address_fault:
|
||||
sub sp, 4
|
||||
stmts --sp, r0-lr
|
||||
rcall save_full_context_ex
|
||||
call save_full_context_ex
|
||||
mfsr r12, SYSREG_ECR
|
||||
mov r11, sp
|
||||
rcall do_address_exception
|
||||
call do_address_exception
|
||||
rjmp ret_from_exception
|
||||
|
||||
handle_protection_fault:
|
||||
sub sp, 4
|
||||
stmts --sp, r0-lr
|
||||
rcall save_full_context_ex
|
||||
call save_full_context_ex
|
||||
mfsr r12, SYSREG_ECR
|
||||
mov r11, sp
|
||||
rcall do_page_fault
|
||||
call do_page_fault
|
||||
rjmp ret_from_exception
|
||||
|
||||
.align 1
|
||||
do_illegal_opcode_ll:
|
||||
sub sp, 4
|
||||
stmts --sp, r0-lr
|
||||
rcall save_full_context_ex
|
||||
call save_full_context_ex
|
||||
mfsr r12, SYSREG_ECR
|
||||
mov r11, sp
|
||||
rcall do_illegal_opcode
|
||||
call do_illegal_opcode
|
||||
rjmp ret_from_exception
|
||||
|
||||
do_dtlb_modified:
|
||||
|
|
@ -513,11 +513,11 @@ do_dtlb_modified:
|
|||
do_fpe_ll:
|
||||
sub sp, 4
|
||||
stmts --sp, r0-lr
|
||||
rcall save_full_context_ex
|
||||
call save_full_context_ex
|
||||
unmask_interrupts
|
||||
mov r12, 26
|
||||
mov r11, sp
|
||||
rcall do_fpe
|
||||
call do_fpe
|
||||
rjmp ret_from_exception
|
||||
|
||||
ret_from_exception:
|
||||
|
|
@ -553,7 +553,7 @@ fault_resume_kernel:
|
|||
lddsp r4, sp[REG_SR]
|
||||
bld r4, SYSREG_GM_OFFSET
|
||||
brcs 1f
|
||||
rcall preempt_schedule_irq
|
||||
call preempt_schedule_irq
|
||||
1:
|
||||
#endif
|
||||
|
||||
|
|
@ -582,7 +582,7 @@ fault_exit_work:
|
|||
bld r1, TIF_NEED_RESCHED
|
||||
brcc 1f
|
||||
unmask_interrupts
|
||||
rcall schedule
|
||||
call schedule
|
||||
mask_interrupts
|
||||
ld.w r1, r0[TI_flags]
|
||||
rjmp fault_exit_work
|
||||
|
|
@ -593,7 +593,7 @@ fault_exit_work:
|
|||
unmask_interrupts
|
||||
mov r12, sp
|
||||
mov r11, r0
|
||||
rcall do_notify_resume
|
||||
call do_notify_resume
|
||||
mask_interrupts
|
||||
ld.w r1, r0[TI_flags]
|
||||
rjmp fault_exit_work
|
||||
|
|
@ -616,10 +616,10 @@ handle_debug:
|
|||
|
||||
.Ldebug_fixup_cont:
|
||||
#ifdef CONFIG_TRACE_IRQFLAGS
|
||||
rcall trace_hardirqs_off
|
||||
call trace_hardirqs_off
|
||||
#endif
|
||||
mov r12, sp
|
||||
rcall do_debug
|
||||
call do_debug
|
||||
mov sp, r12
|
||||
|
||||
lddsp r2, sp[REG_SR]
|
||||
|
|
@ -643,7 +643,7 @@ handle_debug:
|
|||
mtsr SYSREG_RSR_DBG, r11
|
||||
mtsr SYSREG_RAR_DBG, r10
|
||||
#ifdef CONFIG_TRACE_IRQFLAGS
|
||||
rcall trace_hardirqs_on
|
||||
call trace_hardirqs_on
|
||||
1:
|
||||
#endif
|
||||
ldmts sp++, r0-lr
|
||||
|
|
@ -676,7 +676,7 @@ debug_resume_kernel:
|
|||
#ifdef CONFIG_TRACE_IRQFLAGS
|
||||
bld r11, SYSREG_GM_OFFSET
|
||||
brcc 1f
|
||||
rcall trace_hardirqs_on
|
||||
call trace_hardirqs_on
|
||||
1:
|
||||
#endif
|
||||
mfsr r2, SYSREG_SR
|
||||
|
|
@ -747,7 +747,7 @@ irq_level\level:
|
|||
mov r11, sp
|
||||
mov r12, \level
|
||||
|
||||
rcall do_IRQ
|
||||
call do_IRQ
|
||||
|
||||
lddsp r4, sp[REG_SR]
|
||||
bfextu r4, r4, SYSREG_M0_OFFSET, 3
|
||||
|
|
@ -767,7 +767,7 @@ irq_level\level:
|
|||
|
||||
1:
|
||||
#ifdef CONFIG_TRACE_IRQFLAGS
|
||||
rcall trace_hardirqs_on
|
||||
call trace_hardirqs_on
|
||||
#endif
|
||||
popm r8-r9
|
||||
mtsr rar_int\level, r8
|
||||
|
|
@ -807,7 +807,7 @@ irq_level\level:
|
|||
lddsp r4, sp[REG_SR]
|
||||
bld r4, SYSREG_GM_OFFSET
|
||||
brcs 1b
|
||||
rcall preempt_schedule_irq
|
||||
call preempt_schedule_irq
|
||||
#endif
|
||||
rjmp 1b
|
||||
.endm
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ __sys_execve:
|
|||
__sys_mmap2:
|
||||
pushm lr
|
||||
st.w --sp, ARG6
|
||||
rcall sys_mmap2
|
||||
call sys_mmap2
|
||||
sub sp, -4
|
||||
popm pc
|
||||
|
||||
|
|
@ -70,7 +70,7 @@ __sys_mmap2:
|
|||
__sys_sendto:
|
||||
pushm lr
|
||||
st.w --sp, ARG6
|
||||
rcall sys_sendto
|
||||
call sys_sendto
|
||||
sub sp, -4
|
||||
popm pc
|
||||
|
||||
|
|
@ -79,7 +79,7 @@ __sys_sendto:
|
|||
__sys_recvfrom:
|
||||
pushm lr
|
||||
st.w --sp, ARG6
|
||||
rcall sys_recvfrom
|
||||
call sys_recvfrom
|
||||
sub sp, -4
|
||||
popm pc
|
||||
|
||||
|
|
@ -88,7 +88,7 @@ __sys_recvfrom:
|
|||
__sys_pselect6:
|
||||
pushm lr
|
||||
st.w --sp, ARG6
|
||||
rcall sys_pselect6
|
||||
call sys_pselect6
|
||||
sub sp, -4
|
||||
popm pc
|
||||
|
||||
|
|
@ -97,7 +97,7 @@ __sys_pselect6:
|
|||
__sys_splice:
|
||||
pushm lr
|
||||
st.w --sp, ARG6
|
||||
rcall sys_splice
|
||||
call sys_splice
|
||||
sub sp, -4
|
||||
popm pc
|
||||
|
||||
|
|
@ -106,7 +106,7 @@ __sys_splice:
|
|||
__sys_epoll_pwait:
|
||||
pushm lr
|
||||
st.w --sp, ARG6
|
||||
rcall sys_epoll_pwait
|
||||
call sys_epoll_pwait
|
||||
sub sp, -4
|
||||
popm pc
|
||||
|
||||
|
|
@ -115,6 +115,6 @@ __sys_epoll_pwait:
|
|||
__sys_sync_file_range:
|
||||
pushm lr
|
||||
st.w --sp, ARG6
|
||||
rcall sys_sync_file_range
|
||||
call sys_sync_file_range
|
||||
sub sp, -4
|
||||
popm pc
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ adjust_length:
|
|||
lddpc lr, _task_size
|
||||
sub r11, lr, r12
|
||||
mov r9, r11
|
||||
rcall __strnlen_user
|
||||
call __strnlen_user
|
||||
cp.w r12, r9
|
||||
brgt 1f
|
||||
popm pc
|
||||
|
|
|
|||
|
|
@ -33,8 +33,8 @@
|
|||
|
||||
|
||||
static const struct resource *iodev_get_resource(struct platform_device *, const char *, unsigned int);
|
||||
static int __init iodev_probe(struct device *);
|
||||
static int __exit iodev_remove(struct device *);
|
||||
static int __init iodev_probe(struct platform_device *);
|
||||
static int __exit iodev_remove(struct platform_device *);
|
||||
static int iodev_open(struct inode *, struct file *);
|
||||
static int iodev_release(struct inode *, struct file *);
|
||||
static ssize_t iodev_read(struct file *, char __user *, size_t s, loff_t *);
|
||||
|
|
@ -65,13 +65,13 @@ static struct miscdevice miscdev =
|
|||
.fops = &fops
|
||||
};
|
||||
|
||||
static struct device_driver iodev_driver =
|
||||
{
|
||||
.name = (char *) iodev_name,
|
||||
.bus = &platform_bus_type,
|
||||
.owner = THIS_MODULE,
|
||||
static struct platform_driver iodev_driver = {
|
||||
.driver = {
|
||||
.name = iodev_name,
|
||||
.owner = THIS_MODULE,
|
||||
},
|
||||
.probe = iodev_probe,
|
||||
.remove = __exit_p(iodev_remove)
|
||||
.remove = __devexit_p(iodev_remove),
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -89,11 +89,10 @@ iodev_get_resource(struct platform_device *pdv, const char *name,
|
|||
|
||||
|
||||
/* No hotplugging on the platform bus - use __init */
|
||||
static int __init iodev_probe(struct device *dev)
|
||||
static int __init iodev_probe(struct platform_device *dev)
|
||||
{
|
||||
struct platform_device * const pdv = to_platform_device(dev);
|
||||
const struct resource * const ri =
|
||||
iodev_get_resource(pdv, IODEV_RESOURCE_IRQ, IORESOURCE_IRQ);
|
||||
iodev_get_resource(dev, IODEV_RESOURCE_IRQ, IORESOURCE_IRQ);
|
||||
|
||||
if (unlikely(!ri))
|
||||
return -ENXIO;
|
||||
|
|
@ -104,7 +103,7 @@ static int __init iodev_probe(struct device *dev)
|
|||
|
||||
|
||||
|
||||
static int __exit iodev_remove(struct device *dev)
|
||||
static int __exit iodev_remove(struct platform_device *dev)
|
||||
{
|
||||
return misc_deregister(&miscdev);
|
||||
}
|
||||
|
|
@ -160,14 +159,14 @@ static irqreturn_t iodev_irqhdl(int irq, void *ctxt)
|
|||
|
||||
static int __init iodev_init_module(void)
|
||||
{
|
||||
return driver_register(&iodev_driver);
|
||||
return platform_driver_register(&iodev_driver);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void __exit iodev_cleanup_module(void)
|
||||
{
|
||||
driver_unregister(&iodev_driver);
|
||||
platform_driver_unregister(&iodev_driver);
|
||||
}
|
||||
|
||||
module_init(iodev_init_module);
|
||||
|
|
|
|||
|
|
@ -1391,11 +1391,11 @@ static inline void tlb_write_random(void)
|
|||
static inline unsigned int \
|
||||
set_c0_##name(unsigned int set) \
|
||||
{ \
|
||||
unsigned int res; \
|
||||
unsigned int res, new; \
|
||||
\
|
||||
res = read_c0_##name(); \
|
||||
res |= set; \
|
||||
write_c0_##name(res); \
|
||||
new = res | set; \
|
||||
write_c0_##name(new); \
|
||||
\
|
||||
return res; \
|
||||
} \
|
||||
|
|
@ -1403,24 +1403,24 @@ set_c0_##name(unsigned int set) \
|
|||
static inline unsigned int \
|
||||
clear_c0_##name(unsigned int clear) \
|
||||
{ \
|
||||
unsigned int res; \
|
||||
unsigned int res, new; \
|
||||
\
|
||||
res = read_c0_##name(); \
|
||||
res &= ~clear; \
|
||||
write_c0_##name(res); \
|
||||
new = res & ~clear; \
|
||||
write_c0_##name(new); \
|
||||
\
|
||||
return res; \
|
||||
} \
|
||||
\
|
||||
static inline unsigned int \
|
||||
change_c0_##name(unsigned int change, unsigned int new) \
|
||||
change_c0_##name(unsigned int change, unsigned int val) \
|
||||
{ \
|
||||
unsigned int res; \
|
||||
unsigned int res, new; \
|
||||
\
|
||||
res = read_c0_##name(); \
|
||||
res &= ~change; \
|
||||
res |= (new & change); \
|
||||
write_c0_##name(res); \
|
||||
new = res & ~change; \
|
||||
new |= (val & change); \
|
||||
write_c0_##name(new); \
|
||||
\
|
||||
return res; \
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,7 +32,6 @@
|
|||
#include <linux/module.h>
|
||||
#include <linux/binfmts.h>
|
||||
#include <linux/security.h>
|
||||
#include <linux/syscalls.h>
|
||||
#include <linux/compat.h>
|
||||
#include <linux/vfs.h>
|
||||
#include <linux/ipc.h>
|
||||
|
|
|
|||
|
|
@ -1520,7 +1520,9 @@ void __cpuinit per_cpu_trap_init(void)
|
|||
#endif /* CONFIG_MIPS_MT_SMTC */
|
||||
|
||||
if (cpu_has_veic || cpu_has_vint) {
|
||||
unsigned long sr = set_c0_status(ST0_BEV);
|
||||
write_c0_ebase(ebase);
|
||||
write_c0_status(sr);
|
||||
/* Setting vector spacing enables EI/VI mode */
|
||||
change_c0_intctl(0x3e0, VECTORSPACING);
|
||||
}
|
||||
|
|
@ -1602,8 +1604,6 @@ void __cpuinit set_uncached_handler(unsigned long offset, void *addr,
|
|||
#ifdef CONFIG_64BIT
|
||||
unsigned long uncached_ebase = TO_UNCAC(ebase);
|
||||
#endif
|
||||
if (cpu_has_mips_r2)
|
||||
uncached_ebase += (read_c0_ebase() & 0x3ffff000);
|
||||
|
||||
if (!addr)
|
||||
panic(panic_null_cerr);
|
||||
|
|
@ -1635,9 +1635,11 @@ void __init trap_init(void)
|
|||
return; /* Already done */
|
||||
#endif
|
||||
|
||||
if (cpu_has_veic || cpu_has_vint)
|
||||
ebase = (unsigned long) alloc_bootmem_low_pages(0x200 + VECTORSPACING*64);
|
||||
else {
|
||||
if (cpu_has_veic || cpu_has_vint) {
|
||||
unsigned long size = 0x200 + VECTORSPACING*64;
|
||||
ebase = (unsigned long)
|
||||
__alloc_bootmem(size, 1 << fls(size), 0);
|
||||
} else {
|
||||
ebase = CAC_BASE;
|
||||
if (cpu_has_mips_r2)
|
||||
ebase += (read_c0_ebase() & 0x3ffff000);
|
||||
|
|
|
|||
|
|
@ -780,7 +780,7 @@ static void __cpuinit probe_pcache(void)
|
|||
c->dcache.ways = 2;
|
||||
c->dcache.waybit = 0;
|
||||
|
||||
c->options |= MIPS_CPU_CACHE_CDEX_P;
|
||||
c->options |= MIPS_CPU_CACHE_CDEX_P | MIPS_CPU_PREFETCH;
|
||||
break;
|
||||
|
||||
case CPU_TX49XX:
|
||||
|
|
|
|||
|
|
@ -225,7 +225,7 @@ void dma_unmap_page(struct device *dev, dma_addr_t dma_address, size_t size,
|
|||
if (!plat_device_is_coherent(dev) && direction != DMA_TO_DEVICE) {
|
||||
unsigned long addr;
|
||||
|
||||
addr = plat_dma_addr_to_phys(dma_address);
|
||||
addr = dma_addr_to_virt(dma_address);
|
||||
dma_cache_wback_inv(addr, size);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -127,6 +127,13 @@ SDRAM0: sdram {
|
|||
dcr-reg = <0x010 0x002>;
|
||||
};
|
||||
|
||||
CRYPTO: crypto@180000 {
|
||||
compatible = "amcc,ppc460ex-crypto", "amcc,ppc4xx-crypto";
|
||||
reg = <4 0x00180000 0x80400>;
|
||||
interrupt-parent = <&UIC0>;
|
||||
interrupts = <0x1d 0x4>;
|
||||
};
|
||||
|
||||
MAL0: mcmal {
|
||||
compatible = "ibm,mcmal-460ex", "ibm,mcmal2";
|
||||
dcr-reg = <0x180 0x062>;
|
||||
|
|
|
|||
|
|
@ -97,6 +97,13 @@ SDRAM0: memory-controller {
|
|||
0x6 0x4>; /* ECC SEC Error */
|
||||
};
|
||||
|
||||
CRYPTO: crypto@ef700000 {
|
||||
compatible = "amcc,ppc405ex-crypto", "amcc,ppc4xx-crypto";
|
||||
reg = <0xef700000 0x80400>;
|
||||
interrupt-parent = <&UIC0>;
|
||||
interrupts = <0x17 0x2>;
|
||||
};
|
||||
|
||||
MAL0: mcmal {
|
||||
compatible = "ibm,mcmal-405ex", "ibm,mcmal2";
|
||||
dcr-reg = <0x180 0x062>;
|
||||
|
|
|
|||
|
|
@ -376,7 +376,7 @@ static int ps3_system_bus_probe(struct device *_dev)
|
|||
struct ps3_system_bus_driver *drv;
|
||||
|
||||
BUG_ON(!dev);
|
||||
pr_debug(" -> %s:%d: %s\n", __func__, __LINE__, _dev->bus_id);
|
||||
dev_dbg(_dev, "%s:%d\n", __func__, __LINE__);
|
||||
|
||||
drv = ps3_system_bus_dev_to_system_bus_drv(dev);
|
||||
BUG_ON(!drv);
|
||||
|
|
@ -398,7 +398,7 @@ static int ps3_system_bus_remove(struct device *_dev)
|
|||
struct ps3_system_bus_driver *drv;
|
||||
|
||||
BUG_ON(!dev);
|
||||
pr_debug(" -> %s:%d: %s\n", __func__, __LINE__, _dev->bus_id);
|
||||
dev_dbg(_dev, "%s:%d\n", __func__, __LINE__);
|
||||
|
||||
drv = ps3_system_bus_dev_to_system_bus_drv(dev);
|
||||
BUG_ON(!drv);
|
||||
|
|
|
|||
|
|
@ -29,7 +29,9 @@ struct s390_sha_ctx {
|
|||
int func; /* KIMD function to use */
|
||||
};
|
||||
|
||||
void s390_sha_update(struct crypto_tfm *tfm, const u8 *data, unsigned int len);
|
||||
void s390_sha_final(struct crypto_tfm *tfm, u8 *out);
|
||||
struct shash_desc;
|
||||
|
||||
int s390_sha_update(struct shash_desc *desc, const u8 *data, unsigned int len);
|
||||
int s390_sha_final(struct shash_desc *desc, u8 *out);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -23,17 +23,17 @@
|
|||
* any later version.
|
||||
*
|
||||
*/
|
||||
#include <crypto/internal/hash.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/crypto.h>
|
||||
#include <crypto/sha.h>
|
||||
|
||||
#include "crypt_s390.h"
|
||||
#include "sha.h"
|
||||
|
||||
static void sha1_init(struct crypto_tfm *tfm)
|
||||
static int sha1_init(struct shash_desc *desc)
|
||||
{
|
||||
struct s390_sha_ctx *sctx = crypto_tfm_ctx(tfm);
|
||||
struct s390_sha_ctx *sctx = shash_desc_ctx(desc);
|
||||
|
||||
sctx->state[0] = SHA1_H0;
|
||||
sctx->state[1] = SHA1_H1;
|
||||
|
|
@ -42,34 +42,36 @@ static void sha1_init(struct crypto_tfm *tfm)
|
|||
sctx->state[4] = SHA1_H4;
|
||||
sctx->count = 0;
|
||||
sctx->func = KIMD_SHA_1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct crypto_alg alg = {
|
||||
.cra_name = "sha1",
|
||||
.cra_driver_name= "sha1-s390",
|
||||
.cra_priority = CRYPT_S390_PRIORITY,
|
||||
.cra_flags = CRYPTO_ALG_TYPE_DIGEST,
|
||||
.cra_blocksize = SHA1_BLOCK_SIZE,
|
||||
.cra_ctxsize = sizeof(struct s390_sha_ctx),
|
||||
.cra_module = THIS_MODULE,
|
||||
.cra_list = LIST_HEAD_INIT(alg.cra_list),
|
||||
.cra_u = { .digest = {
|
||||
.dia_digestsize = SHA1_DIGEST_SIZE,
|
||||
.dia_init = sha1_init,
|
||||
.dia_update = s390_sha_update,
|
||||
.dia_final = s390_sha_final } }
|
||||
static struct shash_alg alg = {
|
||||
.digestsize = SHA1_DIGEST_SIZE,
|
||||
.init = sha1_init,
|
||||
.update = s390_sha_update,
|
||||
.final = s390_sha_final,
|
||||
.descsize = sizeof(struct s390_sha_ctx),
|
||||
.base = {
|
||||
.cra_name = "sha1",
|
||||
.cra_driver_name= "sha1-s390",
|
||||
.cra_priority = CRYPT_S390_PRIORITY,
|
||||
.cra_flags = CRYPTO_ALG_TYPE_SHASH,
|
||||
.cra_blocksize = SHA1_BLOCK_SIZE,
|
||||
.cra_module = THIS_MODULE,
|
||||
}
|
||||
};
|
||||
|
||||
static int __init sha1_s390_init(void)
|
||||
{
|
||||
if (!crypt_s390_func_available(KIMD_SHA_1))
|
||||
return -EOPNOTSUPP;
|
||||
return crypto_register_alg(&alg);
|
||||
return crypto_register_shash(&alg);
|
||||
}
|
||||
|
||||
static void __exit sha1_s390_fini(void)
|
||||
{
|
||||
crypto_unregister_alg(&alg);
|
||||
crypto_unregister_shash(&alg);
|
||||
}
|
||||
|
||||
module_init(sha1_s390_init);
|
||||
|
|
|
|||
|
|
@ -16,17 +16,17 @@
|
|||
* any later version.
|
||||
*
|
||||
*/
|
||||
#include <crypto/internal/hash.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/crypto.h>
|
||||
#include <crypto/sha.h>
|
||||
|
||||
#include "crypt_s390.h"
|
||||
#include "sha.h"
|
||||
|
||||
static void sha256_init(struct crypto_tfm *tfm)
|
||||
static int sha256_init(struct shash_desc *desc)
|
||||
{
|
||||
struct s390_sha_ctx *sctx = crypto_tfm_ctx(tfm);
|
||||
struct s390_sha_ctx *sctx = shash_desc_ctx(desc);
|
||||
|
||||
sctx->state[0] = SHA256_H0;
|
||||
sctx->state[1] = SHA256_H1;
|
||||
|
|
@ -38,22 +38,24 @@ static void sha256_init(struct crypto_tfm *tfm)
|
|||
sctx->state[7] = SHA256_H7;
|
||||
sctx->count = 0;
|
||||
sctx->func = KIMD_SHA_256;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct crypto_alg alg = {
|
||||
.cra_name = "sha256",
|
||||
.cra_driver_name = "sha256-s390",
|
||||
.cra_priority = CRYPT_S390_PRIORITY,
|
||||
.cra_flags = CRYPTO_ALG_TYPE_DIGEST,
|
||||
.cra_blocksize = SHA256_BLOCK_SIZE,
|
||||
.cra_ctxsize = sizeof(struct s390_sha_ctx),
|
||||
.cra_module = THIS_MODULE,
|
||||
.cra_list = LIST_HEAD_INIT(alg.cra_list),
|
||||
.cra_u = { .digest = {
|
||||
.dia_digestsize = SHA256_DIGEST_SIZE,
|
||||
.dia_init = sha256_init,
|
||||
.dia_update = s390_sha_update,
|
||||
.dia_final = s390_sha_final } }
|
||||
static struct shash_alg alg = {
|
||||
.digestsize = SHA256_DIGEST_SIZE,
|
||||
.init = sha256_init,
|
||||
.update = s390_sha_update,
|
||||
.final = s390_sha_final,
|
||||
.descsize = sizeof(struct s390_sha_ctx),
|
||||
.base = {
|
||||
.cra_name = "sha256",
|
||||
.cra_driver_name= "sha256-s390",
|
||||
.cra_priority = CRYPT_S390_PRIORITY,
|
||||
.cra_flags = CRYPTO_ALG_TYPE_SHASH,
|
||||
.cra_blocksize = SHA256_BLOCK_SIZE,
|
||||
.cra_module = THIS_MODULE,
|
||||
}
|
||||
};
|
||||
|
||||
static int sha256_s390_init(void)
|
||||
|
|
@ -61,12 +63,12 @@ static int sha256_s390_init(void)
|
|||
if (!crypt_s390_func_available(KIMD_SHA_256))
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
return crypto_register_alg(&alg);
|
||||
return crypto_register_shash(&alg);
|
||||
}
|
||||
|
||||
static void __exit sha256_s390_fini(void)
|
||||
{
|
||||
crypto_unregister_alg(&alg);
|
||||
crypto_unregister_shash(&alg);
|
||||
}
|
||||
|
||||
module_init(sha256_s390_init);
|
||||
|
|
|
|||
|
|
@ -12,16 +12,16 @@
|
|||
* any later version.
|
||||
*
|
||||
*/
|
||||
#include <crypto/internal/hash.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/crypto.h>
|
||||
|
||||
#include "sha.h"
|
||||
#include "crypt_s390.h"
|
||||
|
||||
static void sha512_init(struct crypto_tfm *tfm)
|
||||
static int sha512_init(struct shash_desc *desc)
|
||||
{
|
||||
struct s390_sha_ctx *ctx = crypto_tfm_ctx(tfm);
|
||||
struct s390_sha_ctx *ctx = shash_desc_ctx(desc);
|
||||
|
||||
*(__u64 *)&ctx->state[0] = 0x6a09e667f3bcc908ULL;
|
||||
*(__u64 *)&ctx->state[2] = 0xbb67ae8584caa73bULL;
|
||||
|
|
@ -33,29 +33,31 @@ static void sha512_init(struct crypto_tfm *tfm)
|
|||
*(__u64 *)&ctx->state[14] = 0x5be0cd19137e2179ULL;
|
||||
ctx->count = 0;
|
||||
ctx->func = KIMD_SHA_512;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct crypto_alg sha512_alg = {
|
||||
.cra_name = "sha512",
|
||||
.cra_driver_name = "sha512-s390",
|
||||
.cra_priority = CRYPT_S390_PRIORITY,
|
||||
.cra_flags = CRYPTO_ALG_TYPE_DIGEST,
|
||||
.cra_blocksize = SHA512_BLOCK_SIZE,
|
||||
.cra_ctxsize = sizeof(struct s390_sha_ctx),
|
||||
.cra_module = THIS_MODULE,
|
||||
.cra_list = LIST_HEAD_INIT(sha512_alg.cra_list),
|
||||
.cra_u = { .digest = {
|
||||
.dia_digestsize = SHA512_DIGEST_SIZE,
|
||||
.dia_init = sha512_init,
|
||||
.dia_update = s390_sha_update,
|
||||
.dia_final = s390_sha_final } }
|
||||
static struct shash_alg sha512_alg = {
|
||||
.digestsize = SHA512_DIGEST_SIZE,
|
||||
.init = sha512_init,
|
||||
.update = s390_sha_update,
|
||||
.final = s390_sha_final,
|
||||
.descsize = sizeof(struct s390_sha_ctx),
|
||||
.base = {
|
||||
.cra_name = "sha512",
|
||||
.cra_driver_name= "sha512-s390",
|
||||
.cra_priority = CRYPT_S390_PRIORITY,
|
||||
.cra_flags = CRYPTO_ALG_TYPE_SHASH,
|
||||
.cra_blocksize = SHA512_BLOCK_SIZE,
|
||||
.cra_module = THIS_MODULE,
|
||||
}
|
||||
};
|
||||
|
||||
MODULE_ALIAS("sha512");
|
||||
|
||||
static void sha384_init(struct crypto_tfm *tfm)
|
||||
static int sha384_init(struct shash_desc *desc)
|
||||
{
|
||||
struct s390_sha_ctx *ctx = crypto_tfm_ctx(tfm);
|
||||
struct s390_sha_ctx *ctx = shash_desc_ctx(desc);
|
||||
|
||||
*(__u64 *)&ctx->state[0] = 0xcbbb9d5dc1059ed8ULL;
|
||||
*(__u64 *)&ctx->state[2] = 0x629a292a367cd507ULL;
|
||||
|
|
@ -67,22 +69,25 @@ static void sha384_init(struct crypto_tfm *tfm)
|
|||
*(__u64 *)&ctx->state[14] = 0x47b5481dbefa4fa4ULL;
|
||||
ctx->count = 0;
|
||||
ctx->func = KIMD_SHA_512;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct crypto_alg sha384_alg = {
|
||||
.cra_name = "sha384",
|
||||
.cra_driver_name = "sha384-s390",
|
||||
.cra_priority = CRYPT_S390_PRIORITY,
|
||||
.cra_flags = CRYPTO_ALG_TYPE_DIGEST,
|
||||
.cra_blocksize = SHA384_BLOCK_SIZE,
|
||||
.cra_ctxsize = sizeof(struct s390_sha_ctx),
|
||||
.cra_module = THIS_MODULE,
|
||||
.cra_list = LIST_HEAD_INIT(sha384_alg.cra_list),
|
||||
.cra_u = { .digest = {
|
||||
.dia_digestsize = SHA384_DIGEST_SIZE,
|
||||
.dia_init = sha384_init,
|
||||
.dia_update = s390_sha_update,
|
||||
.dia_final = s390_sha_final } }
|
||||
static struct shash_alg sha384_alg = {
|
||||
.digestsize = SHA384_DIGEST_SIZE,
|
||||
.init = sha384_init,
|
||||
.update = s390_sha_update,
|
||||
.final = s390_sha_final,
|
||||
.descsize = sizeof(struct s390_sha_ctx),
|
||||
.base = {
|
||||
.cra_name = "sha384",
|
||||
.cra_driver_name= "sha384-s390",
|
||||
.cra_priority = CRYPT_S390_PRIORITY,
|
||||
.cra_flags = CRYPTO_ALG_TYPE_SHASH,
|
||||
.cra_blocksize = SHA384_BLOCK_SIZE,
|
||||
.cra_ctxsize = sizeof(struct s390_sha_ctx),
|
||||
.cra_module = THIS_MODULE,
|
||||
}
|
||||
};
|
||||
|
||||
MODULE_ALIAS("sha384");
|
||||
|
|
@ -93,18 +98,18 @@ static int __init init(void)
|
|||
|
||||
if (!crypt_s390_func_available(KIMD_SHA_512))
|
||||
return -EOPNOTSUPP;
|
||||
if ((ret = crypto_register_alg(&sha512_alg)) < 0)
|
||||
if ((ret = crypto_register_shash(&sha512_alg)) < 0)
|
||||
goto out;
|
||||
if ((ret = crypto_register_alg(&sha384_alg)) < 0)
|
||||
crypto_unregister_alg(&sha512_alg);
|
||||
if ((ret = crypto_register_shash(&sha384_alg)) < 0)
|
||||
crypto_unregister_shash(&sha512_alg);
|
||||
out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void __exit fini(void)
|
||||
{
|
||||
crypto_unregister_alg(&sha512_alg);
|
||||
crypto_unregister_alg(&sha384_alg);
|
||||
crypto_unregister_shash(&sha512_alg);
|
||||
crypto_unregister_shash(&sha384_alg);
|
||||
}
|
||||
|
||||
module_init(init);
|
||||
|
|
|
|||
|
|
@ -13,14 +13,14 @@
|
|||
*
|
||||
*/
|
||||
|
||||
#include <linux/crypto.h>
|
||||
#include <crypto/internal/hash.h>
|
||||
#include "sha.h"
|
||||
#include "crypt_s390.h"
|
||||
|
||||
void s390_sha_update(struct crypto_tfm *tfm, const u8 *data, unsigned int len)
|
||||
int s390_sha_update(struct shash_desc *desc, const u8 *data, unsigned int len)
|
||||
{
|
||||
struct s390_sha_ctx *ctx = crypto_tfm_ctx(tfm);
|
||||
unsigned int bsize = crypto_tfm_alg_blocksize(tfm);
|
||||
struct s390_sha_ctx *ctx = shash_desc_ctx(desc);
|
||||
unsigned int bsize = crypto_shash_blocksize(desc->tfm);
|
||||
unsigned int index;
|
||||
int ret;
|
||||
|
||||
|
|
@ -51,13 +51,15 @@ void s390_sha_update(struct crypto_tfm *tfm, const u8 *data, unsigned int len)
|
|||
store:
|
||||
if (len)
|
||||
memcpy(ctx->buf + index , data, len);
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(s390_sha_update);
|
||||
|
||||
void s390_sha_final(struct crypto_tfm *tfm, u8 *out)
|
||||
int s390_sha_final(struct shash_desc *desc, u8 *out)
|
||||
{
|
||||
struct s390_sha_ctx *ctx = crypto_tfm_ctx(tfm);
|
||||
unsigned int bsize = crypto_tfm_alg_blocksize(tfm);
|
||||
struct s390_sha_ctx *ctx = shash_desc_ctx(desc);
|
||||
unsigned int bsize = crypto_shash_blocksize(desc->tfm);
|
||||
u64 bits;
|
||||
unsigned int index, end, plen;
|
||||
int ret;
|
||||
|
|
@ -87,9 +89,11 @@ void s390_sha_final(struct crypto_tfm *tfm, u8 *out)
|
|||
BUG_ON(ret != end);
|
||||
|
||||
/* copy digest to out */
|
||||
memcpy(out, ctx->state, crypto_hash_digestsize(crypto_hash_cast(tfm)));
|
||||
memcpy(out, ctx->state, crypto_shash_digestsize(desc->tfm));
|
||||
/* wipe context */
|
||||
memset(ctx, 0, sizeof *ctx);
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(s390_sha_final);
|
||||
|
||||
|
|
|
|||
|
|
@ -107,6 +107,9 @@ config SYS_SUPPORTS_NUMA
|
|||
config SYS_SUPPORTS_PCI
|
||||
bool
|
||||
|
||||
config SYS_SUPPORTS_CMT
|
||||
bool
|
||||
|
||||
config STACKTRACE_SUPPORT
|
||||
def_bool y
|
||||
|
||||
|
|
@ -176,6 +179,10 @@ config CPU_SHX2
|
|||
config CPU_SHX3
|
||||
bool
|
||||
|
||||
config ARCH_SHMOBILE
|
||||
bool
|
||||
select ARCH_SUSPEND_POSSIBLE
|
||||
|
||||
choice
|
||||
prompt "Processor sub-type selection"
|
||||
|
||||
|
|
@ -188,6 +195,7 @@ choice
|
|||
config CPU_SUBTYPE_SH7619
|
||||
bool "Support SH7619 processor"
|
||||
select CPU_SH2
|
||||
select SYS_SUPPORTS_CMT
|
||||
|
||||
# SH-2A Processor Support
|
||||
|
||||
|
|
@ -200,15 +208,18 @@ config CPU_SUBTYPE_SH7203
|
|||
bool "Support SH7203 processor"
|
||||
select CPU_SH2A
|
||||
select CPU_HAS_FPU
|
||||
select SYS_SUPPORTS_CMT
|
||||
|
||||
config CPU_SUBTYPE_SH7206
|
||||
bool "Support SH7206 processor"
|
||||
select CPU_SH2A
|
||||
select SYS_SUPPORTS_CMT
|
||||
|
||||
config CPU_SUBTYPE_SH7263
|
||||
bool "Support SH7263 processor"
|
||||
select CPU_SH2A
|
||||
select CPU_HAS_FPU
|
||||
select SYS_SUPPORTS_CMT
|
||||
|
||||
config CPU_SUBTYPE_MXG
|
||||
bool "Support MX-G processor"
|
||||
|
|
@ -323,7 +334,9 @@ config CPU_SUBTYPE_SH7723
|
|||
bool "Support SH7723 processor"
|
||||
select CPU_SH4A
|
||||
select CPU_SHX2
|
||||
select ARCH_SHMOBILE
|
||||
select ARCH_SPARSEMEM_ENABLE
|
||||
select SYS_SUPPORTS_CMT
|
||||
help
|
||||
Select SH7723 if you have an SH-MobileR2 CPU.
|
||||
|
||||
|
|
@ -348,6 +361,14 @@ config CPU_SUBTYPE_SH7785
|
|||
select ARCH_SPARSEMEM_ENABLE
|
||||
select SYS_SUPPORTS_NUMA
|
||||
|
||||
config CPU_SUBTYPE_SH7786
|
||||
bool "Support SH7786 processor"
|
||||
select CPU_SH4A
|
||||
select CPU_SHX3
|
||||
select CPU_HAS_PTEAEX
|
||||
select ARCH_SPARSEMEM_ENABLE
|
||||
select SYS_SUPPORTS_NUMA
|
||||
|
||||
config CPU_SUBTYPE_SHX3
|
||||
bool "Support SH-X3 processor"
|
||||
select CPU_SH4A
|
||||
|
|
@ -362,20 +383,26 @@ config CPU_SUBTYPE_SHX3
|
|||
config CPU_SUBTYPE_SH7343
|
||||
bool "Support SH7343 processor"
|
||||
select CPU_SH4AL_DSP
|
||||
select ARCH_SHMOBILE
|
||||
select SYS_SUPPORTS_CMT
|
||||
|
||||
config CPU_SUBTYPE_SH7722
|
||||
bool "Support SH7722 processor"
|
||||
select CPU_SH4AL_DSP
|
||||
select CPU_SHX2
|
||||
select ARCH_SHMOBILE
|
||||
select ARCH_SPARSEMEM_ENABLE
|
||||
select SYS_SUPPORTS_NUMA
|
||||
select SYS_SUPPORTS_CMT
|
||||
|
||||
config CPU_SUBTYPE_SH7366
|
||||
bool "Support SH7366 processor"
|
||||
select CPU_SH4AL_DSP
|
||||
select CPU_SHX2
|
||||
select ARCH_SHMOBILE
|
||||
select ARCH_SPARSEMEM_ENABLE
|
||||
select SYS_SUPPORTS_NUMA
|
||||
select SYS_SUPPORTS_CMT
|
||||
|
||||
# SH-5 Processor Support
|
||||
|
||||
|
|
@ -398,25 +425,34 @@ source "arch/sh/boards/Kconfig"
|
|||
menu "Timer and clock configuration"
|
||||
|
||||
config SH_TMU
|
||||
def_bool y
|
||||
prompt "TMU timer support"
|
||||
bool "TMU timer support"
|
||||
depends on CPU_SH3 || CPU_SH4
|
||||
default y
|
||||
select GENERIC_TIME
|
||||
select GENERIC_CLOCKEVENTS
|
||||
help
|
||||
This enables the use of the TMU as the system timer.
|
||||
|
||||
config SH_CMT
|
||||
def_bool y
|
||||
prompt "CMT timer support"
|
||||
depends on CPU_SH2 && !CPU_SUBTYPE_MXG
|
||||
bool "CMT timer support"
|
||||
depends on SYS_SUPPORTS_CMT && CPU_SH2
|
||||
default y
|
||||
help
|
||||
This enables the use of the CMT as the system timer.
|
||||
|
||||
#
|
||||
# Support for the new-style CMT driver. This will replace SH_CMT
|
||||
# once its other dependencies are merged.
|
||||
#
|
||||
config SH_TIMER_CMT
|
||||
bool "CMT clockevents driver"
|
||||
depends on SYS_SUPPORTS_CMT && !SH_CMT
|
||||
select GENERIC_CLOCKEVENTS
|
||||
|
||||
config SH_MTU2
|
||||
def_bool n
|
||||
prompt "MTU2 timer support"
|
||||
bool "MTU2 timer support"
|
||||
depends on CPU_SH2A
|
||||
default y
|
||||
help
|
||||
This enables the use of the MTU2 as the system timer.
|
||||
|
||||
|
|
@ -426,7 +462,8 @@ config SH_TIMER_IRQ
|
|||
CPU_SUBTYPE_SH7763
|
||||
default "86" if CPU_SUBTYPE_SH7619
|
||||
default "140" if CPU_SUBTYPE_SH7206
|
||||
default "142" if CPU_SUBTYPE_SH7203
|
||||
default "142" if CPU_SUBTYPE_SH7203 && SH_CMT
|
||||
default "153" if CPU_SUBTYPE_SH7203 && SH_MTU2
|
||||
default "238" if CPU_SUBTYPE_MXG
|
||||
default "16"
|
||||
|
||||
|
|
@ -438,7 +475,8 @@ config SH_PCLK_FREQ
|
|||
default "33333333" if CPU_SUBTYPE_SH7770 || CPU_SUBTYPE_SH7723 || \
|
||||
CPU_SUBTYPE_SH7760 || CPU_SUBTYPE_SH7705 || \
|
||||
CPU_SUBTYPE_SH7203 || CPU_SUBTYPE_SH7206 || \
|
||||
CPU_SUBTYPE_SH7263 || CPU_SUBTYPE_MXG
|
||||
CPU_SUBTYPE_SH7263 || CPU_SUBTYPE_MXG || \
|
||||
CPU_SUBTYPE_SH7786
|
||||
default "60000000" if CPU_SUBTYPE_SH7751 || CPU_SUBTYPE_SH7751R
|
||||
default "66000000" if CPU_SUBTYPE_SH4_202
|
||||
default "50000000"
|
||||
|
|
@ -521,6 +559,13 @@ config CRASH_DUMP
|
|||
|
||||
For more details see Documentation/kdump/kdump.txt
|
||||
|
||||
config KEXEC_JUMP
|
||||
bool "kexec jump (EXPERIMENTAL)"
|
||||
depends on SUPERH32 && KEXEC && HIBERNATION && EXPERIMENTAL
|
||||
help
|
||||
Jump between original kernel and kexeced kernel and invoke
|
||||
code via KEXEC
|
||||
|
||||
config SECCOMP
|
||||
bool "Enable seccomp to safely compute untrusted bytecode"
|
||||
depends on PROC_FS
|
||||
|
|
|
|||
|
|
@ -104,6 +104,9 @@ config CPU_HAS_SR_RB
|
|||
config CPU_HAS_PTEA
|
||||
bool
|
||||
|
||||
config CPU_HAS_PTEAEX
|
||||
bool
|
||||
|
||||
config CPU_HAS_DSP
|
||||
bool
|
||||
|
||||
|
|
|
|||
|
|
@ -80,6 +80,7 @@ OBJCOPYFLAGS := -O binary -R .note -R .note.gnu.build-id -R .comment \
|
|||
defaultimage-$(CONFIG_SUPERH32) := zImage
|
||||
defaultimage-$(CONFIG_SH_SH7785LCR) := uImage
|
||||
defaultimage-$(CONFIG_SH_RSK) := uImage
|
||||
defaultimage-$(CONFIG_SH_URQUELL) := uImage
|
||||
defaultimage-$(CONFIG_SH_7206_SOLUTION_ENGINE) := vmlinux
|
||||
defaultimage-$(CONFIG_SH_7619_SOLUTION_ENGINE) := vmlinux
|
||||
|
||||
|
|
|
|||
|
|
@ -155,17 +155,22 @@ config SH_SH7785LCR
|
|||
|
||||
config SH_SH7785LCR_29BIT_PHYSMAPS
|
||||
bool "SH7785LCR 29bit physmaps"
|
||||
depends on SH_SH7785LCR
|
||||
depends on SH_SH7785LCR && 29BIT
|
||||
default y
|
||||
help
|
||||
This board has 2 physical memory maps. It can be changed with
|
||||
DIP switch(S2-5). If you set the DIP switch for S2-5 = ON,
|
||||
you can access all on-board device in 29bit address mode.
|
||||
|
||||
config SH_URQUELL
|
||||
bool "Urquell"
|
||||
depends on CPU_SUBTYPE_SH7786
|
||||
select ARCH_REQUIRE_GPIOLIB
|
||||
|
||||
config SH_MIGOR
|
||||
bool "Migo-R"
|
||||
depends on CPU_SUBTYPE_SH7722
|
||||
select GENERIC_GPIO
|
||||
select ARCH_REQUIRE_GPIOLIB
|
||||
help
|
||||
Select Migo-R if configuring for the SH7722 Migo-R platform
|
||||
by Renesas System Solutions Asia Pte. Ltd.
|
||||
|
|
@ -173,7 +178,7 @@ config SH_MIGOR
|
|||
config SH_AP325RXA
|
||||
bool "AP-325RXA"
|
||||
depends on CPU_SUBTYPE_SH7723
|
||||
select GENERIC_GPIO
|
||||
select ARCH_REQUIRE_GPIOLIB
|
||||
help
|
||||
Renesas "AP-325RXA" support.
|
||||
Compatible with ALGO SYSTEM CO.,LTD. "AP-320A"
|
||||
|
|
@ -185,6 +190,13 @@ config SH_SH7763RDP
|
|||
Select SH7763RDP if configuring for a Renesas SH7763
|
||||
evaluation board.
|
||||
|
||||
config SH_ESPT
|
||||
bool "ESPT"
|
||||
depends on CPU_SUBTYPE_SH7763
|
||||
help
|
||||
Select ESPT if configuring for a Renesas SH7763
|
||||
with gigabit ether evaluation board.
|
||||
|
||||
config SH_EDOSK7705
|
||||
bool "EDOSK7705"
|
||||
depends on CPU_SUBTYPE_SH7705
|
||||
|
|
@ -240,7 +252,7 @@ config SH_X3PROTO
|
|||
config SH_MAGIC_PANEL_R2
|
||||
bool "Magic Panel R2"
|
||||
depends on CPU_SUBTYPE_SH7720
|
||||
select GENERIC_GPIO
|
||||
select ARCH_REQUIRE_GPIOLIB
|
||||
help
|
||||
Select Magic Panel R2 if configuring for Magic Panel R2.
|
||||
|
||||
|
|
@ -249,6 +261,13 @@ config SH_CAYMAN
|
|||
depends on CPU_SUBTYPE_SH5_101 || CPU_SUBTYPE_SH5_103
|
||||
select SYS_SUPPORTS_PCI
|
||||
|
||||
config SH_POLARIS
|
||||
bool "SMSC Polaris"
|
||||
select CPU_HAS_IPR_IRQ
|
||||
depends on CPU_SUBTYPE_SH7709
|
||||
help
|
||||
Select if configuring for an SMSC Polaris development board
|
||||
|
||||
endmenu
|
||||
|
||||
source "arch/sh/boards/mach-r2d/Kconfig"
|
||||
|
|
|
|||
|
|
@ -4,5 +4,8 @@
|
|||
obj-$(CONFIG_SH_AP325RXA) += board-ap325rxa.o
|
||||
obj-$(CONFIG_SH_MAGIC_PANEL_R2) += board-magicpanelr2.o
|
||||
obj-$(CONFIG_SH_SH7785LCR) += board-sh7785lcr.o
|
||||
obj-$(CONFIG_SH_URQUELL) += board-urquell.o
|
||||
obj-$(CONFIG_SH_SHMIN) += board-shmin.o
|
||||
obj-$(CONFIG_SH_EDOSK7760) += board-edosk7760.o
|
||||
obj-$(CONFIG_SH_ESPT) += board-espt.o
|
||||
obj-$(CONFIG_SH_POLARIS) += board-polaris.o
|
||||
|
|
|
|||
|
|
@ -166,6 +166,16 @@ static void ap320_wvga_power_on(void *board_data)
|
|||
ctrl_outw(0x100, FPGA_BKLREG);
|
||||
}
|
||||
|
||||
static void ap320_wvga_power_off(void *board_data)
|
||||
{
|
||||
/* backlight */
|
||||
ctrl_outw(0, FPGA_BKLREG);
|
||||
gpio_set_value(GPIO_PTS3, 1);
|
||||
|
||||
/* ASD AP-320/325 LCD OFF */
|
||||
ctrl_outw(0, FPGA_LCDREG);
|
||||
}
|
||||
|
||||
static struct sh_mobile_lcdc_info lcdc_info = {
|
||||
.clock_source = LCDC_CLK_EXTERNAL,
|
||||
.ch[0] = {
|
||||
|
|
@ -191,6 +201,7 @@ static struct sh_mobile_lcdc_info lcdc_info = {
|
|||
},
|
||||
.board_cfg = {
|
||||
.display_on = ap320_wvga_power_on,
|
||||
.display_off = ap320_wvga_power_off,
|
||||
},
|
||||
}
|
||||
};
|
||||
|
|
|
|||
102
arch/sh/boards/board-espt.c
Normal file
102
arch/sh/boards/board-espt.c
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
/*
|
||||
* Data Technology Inc. ESPT-GIGA board suport
|
||||
*
|
||||
* Copyright (C) 2008, 2009 Renesas Solutions Corp.
|
||||
* Copyright (C) 2008, 2009 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*/
|
||||
#include <linux/init.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/mtd/physmap.h>
|
||||
#include <linux/io.h>
|
||||
#include <asm/machvec.h>
|
||||
#include <asm/sizes.h>
|
||||
#include <asm/sh_eth.h>
|
||||
|
||||
/* NOR Flash */
|
||||
static struct mtd_partition espt_nor_flash_partitions[] = {
|
||||
{
|
||||
.name = "U-Boot",
|
||||
.offset = 0,
|
||||
.size = (2 * SZ_128K),
|
||||
.mask_flags = MTD_WRITEABLE, /* Read-only */
|
||||
}, {
|
||||
.name = "Linux-Kernel",
|
||||
.offset = MTDPART_OFS_APPEND,
|
||||
.size = (20 * SZ_128K),
|
||||
}, {
|
||||
.name = "Root Filesystem",
|
||||
.offset = MTDPART_OFS_APPEND,
|
||||
.size = MTDPART_SIZ_FULL,
|
||||
},
|
||||
};
|
||||
|
||||
static struct physmap_flash_data espt_nor_flash_data = {
|
||||
.width = 2,
|
||||
.parts = espt_nor_flash_partitions,
|
||||
.nr_parts = ARRAY_SIZE(espt_nor_flash_partitions),
|
||||
};
|
||||
|
||||
static struct resource espt_nor_flash_resources[] = {
|
||||
[0] = {
|
||||
.name = "NOR Flash",
|
||||
.start = 0,
|
||||
.end = SZ_8M - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device espt_nor_flash_device = {
|
||||
.name = "physmap-flash",
|
||||
.resource = espt_nor_flash_resources,
|
||||
.num_resources = ARRAY_SIZE(espt_nor_flash_resources),
|
||||
.dev = {
|
||||
.platform_data = &espt_nor_flash_data,
|
||||
},
|
||||
};
|
||||
|
||||
/* SH-Ether */
|
||||
static struct resource sh_eth_resources[] = {
|
||||
{
|
||||
.start = 0xFEE00800, /* use eth1 */
|
||||
.end = 0xFEE00F7C - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = 57, /* irq number */
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct sh_eth_plat_data sh7763_eth_pdata = {
|
||||
.phy = 0,
|
||||
.edmac_endian = EDMAC_LITTLE_ENDIAN,
|
||||
};
|
||||
|
||||
static struct platform_device espt_eth_device = {
|
||||
.name = "sh-eth",
|
||||
.resource = sh_eth_resources,
|
||||
.num_resources = ARRAY_SIZE(sh_eth_resources),
|
||||
.dev = {
|
||||
.platform_data = &sh7763_eth_pdata,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device *espt_devices[] __initdata = {
|
||||
&espt_nor_flash_device,
|
||||
&espt_eth_device,
|
||||
};
|
||||
|
||||
static int __init espt_devices_setup(void)
|
||||
{
|
||||
return platform_add_devices(espt_devices,
|
||||
ARRAY_SIZE(espt_devices));
|
||||
}
|
||||
device_initcall(espt_devices_setup);
|
||||
|
||||
static struct sh_machine_vector mv_espt __initmv = {
|
||||
.mv_name = "ESPT-GIGA",
|
||||
};
|
||||
149
arch/sh/boards/board-polaris.c
Normal file
149
arch/sh/boards/board-polaris.c
Normal file
|
|
@ -0,0 +1,149 @@
|
|||
/*
|
||||
* June 2006 steve.glendinning@smsc.com
|
||||
*
|
||||
* Polaris-specific resource declaration
|
||||
*
|
||||
*/
|
||||
|
||||
#include <linux/init.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/smsc911x.h>
|
||||
#include <linux/io.h>
|
||||
#include <asm/irq.h>
|
||||
#include <asm/machvec.h>
|
||||
#include <asm/heartbeat.h>
|
||||
#include <cpu/gpio.h>
|
||||
#include <mach-se/mach/se.h>
|
||||
|
||||
#define BCR2 (0xFFFFFF62)
|
||||
#define WCR2 (0xFFFFFF66)
|
||||
#define AREA5_WAIT_CTRL (0x1C00)
|
||||
#define WAIT_STATES_10 (0x7)
|
||||
|
||||
static struct resource smsc911x_resources[] = {
|
||||
[0] = {
|
||||
.name = "smsc911x-memory",
|
||||
.start = PA_EXT5,
|
||||
.end = PA_EXT5 + 0x1fff,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.name = "smsc911x-irq",
|
||||
.start = IRQ0_IRQ,
|
||||
.end = IRQ0_IRQ,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct smsc911x_platform_config smsc911x_config = {
|
||||
.irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
|
||||
.irq_type = SMSC911X_IRQ_TYPE_OPEN_DRAIN,
|
||||
.flags = SMSC911X_USE_32BIT,
|
||||
.phy_interface = PHY_INTERFACE_MODE_MII,
|
||||
};
|
||||
|
||||
static struct platform_device smsc911x_device = {
|
||||
.name = "smsc911x",
|
||||
.id = 0,
|
||||
.num_resources = ARRAY_SIZE(smsc911x_resources),
|
||||
.resource = smsc911x_resources,
|
||||
.dev = {
|
||||
.platform_data = &smsc911x_config,
|
||||
},
|
||||
};
|
||||
|
||||
static unsigned char heartbeat_bit_pos[] = { 0, 1, 2, 3 };
|
||||
|
||||
static struct heartbeat_data heartbeat_data = {
|
||||
.bit_pos = heartbeat_bit_pos,
|
||||
.nr_bits = ARRAY_SIZE(heartbeat_bit_pos),
|
||||
.regsize = 8,
|
||||
};
|
||||
|
||||
static struct resource heartbeat_resources[] = {
|
||||
[0] = {
|
||||
.start = PORT_PCDR,
|
||||
.end = PORT_PCDR,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device heartbeat_device = {
|
||||
.name = "heartbeat",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = &heartbeat_data,
|
||||
},
|
||||
.num_resources = ARRAY_SIZE(heartbeat_resources),
|
||||
.resource = heartbeat_resources,
|
||||
};
|
||||
|
||||
static struct platform_device *polaris_devices[] __initdata = {
|
||||
&smsc911x_device,
|
||||
&heartbeat_device,
|
||||
};
|
||||
|
||||
static int __init polaris_initialise(void)
|
||||
{
|
||||
u16 wcr, bcr_mask;
|
||||
|
||||
printk(KERN_INFO "Configuring Polaris external bus\n");
|
||||
|
||||
/* Configure area 5 with 2 wait states */
|
||||
wcr = ctrl_inw(WCR2);
|
||||
wcr &= (~AREA5_WAIT_CTRL);
|
||||
wcr |= (WAIT_STATES_10 << 10);
|
||||
ctrl_outw(wcr, WCR2);
|
||||
|
||||
/* Configure area 5 for 32-bit access */
|
||||
bcr_mask = ctrl_inw(BCR2);
|
||||
bcr_mask |= 1 << 10;
|
||||
ctrl_outw(bcr_mask, BCR2);
|
||||
|
||||
return platform_add_devices(polaris_devices,
|
||||
ARRAY_SIZE(polaris_devices));
|
||||
}
|
||||
arch_initcall(polaris_initialise);
|
||||
|
||||
static struct ipr_data ipr_irq_table[] = {
|
||||
/* External IRQs */
|
||||
{ IRQ0_IRQ, 0, 0, 1, }, /* IRQ0 */
|
||||
{ IRQ1_IRQ, 0, 4, 1, }, /* IRQ1 */
|
||||
};
|
||||
|
||||
static unsigned long ipr_offsets[] = {
|
||||
INTC_IPRC
|
||||
};
|
||||
|
||||
static struct ipr_desc ipr_irq_desc = {
|
||||
.ipr_offsets = ipr_offsets,
|
||||
.nr_offsets = ARRAY_SIZE(ipr_offsets),
|
||||
|
||||
.ipr_data = ipr_irq_table,
|
||||
.nr_irqs = ARRAY_SIZE(ipr_irq_table),
|
||||
.chip = {
|
||||
.name = "sh7709-ext",
|
||||
},
|
||||
};
|
||||
|
||||
static void __init init_polaris_irq(void)
|
||||
{
|
||||
/* Disable all interrupts */
|
||||
ctrl_outw(0, BCR_ILCRA);
|
||||
ctrl_outw(0, BCR_ILCRB);
|
||||
ctrl_outw(0, BCR_ILCRC);
|
||||
ctrl_outw(0, BCR_ILCRD);
|
||||
ctrl_outw(0, BCR_ILCRE);
|
||||
ctrl_outw(0, BCR_ILCRF);
|
||||
ctrl_outw(0, BCR_ILCRG);
|
||||
|
||||
register_ipr_controller(&ipr_irq_desc);
|
||||
}
|
||||
|
||||
static struct sh_machine_vector mv_polaris __initmv = {
|
||||
.mv_name = "Polaris",
|
||||
.mv_nr_irqs = 61,
|
||||
.mv_init_irq = init_polaris_irq,
|
||||
};
|
||||
|
|
@ -275,7 +275,18 @@ void __init init_sh7785lcr_IRQ(void)
|
|||
|
||||
static void sh7785lcr_power_off(void)
|
||||
{
|
||||
ctrl_outb(0x01, P2SEGADDR(PLD_POFCR));
|
||||
unsigned char *p;
|
||||
|
||||
p = ioremap(PLD_POFCR, PLD_POFCR + 1);
|
||||
if (!p) {
|
||||
printk(KERN_ERR "%s: ioremap error.\n", __func__);
|
||||
return;
|
||||
}
|
||||
*p = 0x01;
|
||||
iounmap(p);
|
||||
set_bl_bit();
|
||||
while (1)
|
||||
cpu_relax();
|
||||
}
|
||||
|
||||
/* Initialize the board */
|
||||
|
|
|
|||
162
arch/sh/boards/board-urquell.c
Normal file
162
arch/sh/boards/board-urquell.c
Normal file
|
|
@ -0,0 +1,162 @@
|
|||
/*
|
||||
* Renesas Technology Corp. SH7786 Urquell Support.
|
||||
*
|
||||
* Copyright (C) 2008 Kuninori Morimoto <morimoto.kuninori@renesas.com>
|
||||
* Copyright (C) 2008 Yoshihiro Shimoda
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*/
|
||||
#include <linux/init.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/fb.h>
|
||||
#include <linux/smc91x.h>
|
||||
#include <linux/mtd/physmap.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/irq.h>
|
||||
#include <mach/urquell.h>
|
||||
#include <cpu/sh7786.h>
|
||||
#include <asm/heartbeat.h>
|
||||
#include <asm/sizes.h>
|
||||
|
||||
static struct resource heartbeat_resources[] = {
|
||||
[0] = {
|
||||
.start = BOARDREG(SLEDR),
|
||||
.end = BOARDREG(SLEDR),
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
};
|
||||
|
||||
static struct heartbeat_data heartbeat_data = {
|
||||
.regsize = 16,
|
||||
};
|
||||
|
||||
static struct platform_device heartbeat_device = {
|
||||
.name = "heartbeat",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = &heartbeat_data,
|
||||
},
|
||||
.num_resources = ARRAY_SIZE(heartbeat_resources),
|
||||
.resource = heartbeat_resources,
|
||||
};
|
||||
|
||||
static struct smc91x_platdata smc91x_info = {
|
||||
.flags = SMC91X_USE_16BIT | SMC91X_NOWAIT,
|
||||
};
|
||||
|
||||
static struct resource smc91x_eth_resources[] = {
|
||||
[0] = {
|
||||
.name = "SMC91C111" ,
|
||||
.start = 0x05800300,
|
||||
.end = 0x0580030f,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = 11,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device smc91x_eth_device = {
|
||||
.name = "smc91x",
|
||||
.num_resources = ARRAY_SIZE(smc91x_eth_resources),
|
||||
.resource = smc91x_eth_resources,
|
||||
.dev = {
|
||||
.platform_data = &smc91x_info,
|
||||
},
|
||||
};
|
||||
|
||||
static struct mtd_partition nor_flash_partitions[] = {
|
||||
{
|
||||
.name = "loader",
|
||||
.offset = 0x00000000,
|
||||
.size = SZ_512K,
|
||||
.mask_flags = MTD_WRITEABLE, /* Read-only */
|
||||
},
|
||||
{
|
||||
.name = "bootenv",
|
||||
.offset = MTDPART_OFS_APPEND,
|
||||
.size = SZ_512K,
|
||||
.mask_flags = MTD_WRITEABLE, /* Read-only */
|
||||
},
|
||||
{
|
||||
.name = "kernel",
|
||||
.offset = MTDPART_OFS_APPEND,
|
||||
.size = SZ_4M,
|
||||
},
|
||||
{
|
||||
.name = "data",
|
||||
.offset = MTDPART_OFS_APPEND,
|
||||
.size = MTDPART_SIZ_FULL,
|
||||
},
|
||||
};
|
||||
|
||||
static struct physmap_flash_data nor_flash_data = {
|
||||
.width = 2,
|
||||
.parts = nor_flash_partitions,
|
||||
.nr_parts = ARRAY_SIZE(nor_flash_partitions),
|
||||
};
|
||||
|
||||
static struct resource nor_flash_resources[] = {
|
||||
[0] = {
|
||||
.start = NOR_FLASH_ADDR,
|
||||
.end = NOR_FLASH_ADDR + NOR_FLASH_SIZE - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}
|
||||
};
|
||||
|
||||
static struct platform_device nor_flash_device = {
|
||||
.name = "physmap-flash",
|
||||
.dev = {
|
||||
.platform_data = &nor_flash_data,
|
||||
},
|
||||
.num_resources = ARRAY_SIZE(nor_flash_resources),
|
||||
.resource = nor_flash_resources,
|
||||
};
|
||||
|
||||
static struct platform_device *urquell_devices[] __initdata = {
|
||||
&heartbeat_device,
|
||||
&smc91x_eth_device,
|
||||
&nor_flash_device,
|
||||
};
|
||||
|
||||
static int __init urquell_devices_setup(void)
|
||||
{
|
||||
/* USB */
|
||||
gpio_request(GPIO_FN_USB_OVC0, NULL);
|
||||
gpio_request(GPIO_FN_USB_PENC0, NULL);
|
||||
|
||||
return platform_add_devices(urquell_devices,
|
||||
ARRAY_SIZE(urquell_devices));
|
||||
}
|
||||
device_initcall(urquell_devices_setup);
|
||||
|
||||
static void urquell_power_off(void)
|
||||
{
|
||||
__raw_writew(0xa5a5, UBOARDREG(SRSTR));
|
||||
}
|
||||
|
||||
static void __init urquell_init_irq(void)
|
||||
{
|
||||
plat_irq_setup_pins(IRQ_MODE_IRL3210_MASK);
|
||||
}
|
||||
|
||||
/* Initialize the board */
|
||||
static void __init urquell_setup(char **cmdline_p)
|
||||
{
|
||||
printk(KERN_INFO "Renesas Technology Corp. Urquell support.\n");
|
||||
|
||||
pm_power_off = urquell_power_off;
|
||||
}
|
||||
|
||||
/*
|
||||
* The Machine Vector
|
||||
*/
|
||||
static struct sh_machine_vector mv_urquell __initmv = {
|
||||
.mv_name = "Urquell",
|
||||
.mv_setup = urquell_setup,
|
||||
.mv_init_irq = urquell_init_irq,
|
||||
};
|
||||
|
|
@ -18,7 +18,7 @@ config SH_R7780MP
|
|||
config SH_R7785RP
|
||||
bool "R7785RP board support"
|
||||
depends on CPU_SUBTYPE_SH7785
|
||||
select GENERIC_GPIO
|
||||
select ARCH_REQUIRE_GPIOLIB
|
||||
|
||||
endchoice
|
||||
|
||||
|
|
|
|||
|
|
@ -10,47 +10,32 @@
|
|||
#include <linux/linkage.h>
|
||||
#include <cpu/mmu_context.h>
|
||||
|
||||
#define k0 r0
|
||||
#define k1 r1
|
||||
#define k2 r2
|
||||
#define k3 r3
|
||||
#define k4 r4
|
||||
|
||||
/*
|
||||
* Kernel mode register usage:
|
||||
* k0 scratch
|
||||
* k1 scratch
|
||||
* k2 scratch (Exception code)
|
||||
* k3 scratch (Return address)
|
||||
* k4 scratch
|
||||
* k5 reserved
|
||||
* k6 Global Interrupt Mask (0--15 << 4)
|
||||
* k7 CURRENT_THREAD_INFO (pointer to current thread info)
|
||||
* For more details, please have a look at entry.S
|
||||
*/
|
||||
|
||||
#define k0 r0
|
||||
#define k1 r1
|
||||
|
||||
ENTRY(wakeup_start)
|
||||
! clear STBY bit
|
||||
mov #-126, k2
|
||||
mov #-126, k1
|
||||
and #127, k0
|
||||
mov.b k0, @k2
|
||||
mov.b k0, @k1
|
||||
! enable refresh
|
||||
mov.l 5f, k1
|
||||
mov.w 6f, k0
|
||||
mov.w k0, @k1
|
||||
! jump to handler
|
||||
mov.l 2f, k2
|
||||
mov.l 3f, k3
|
||||
mov.l @k2, k2
|
||||
|
||||
mov.l 4f, k1
|
||||
jmp @k1
|
||||
nop
|
||||
nop
|
||||
|
||||
.align 2
|
||||
1: .long EXPEVT
|
||||
2: .long INTEVT
|
||||
3: .long ret_from_irq
|
||||
4: .long handle_exception
|
||||
4: .long handle_interrupt
|
||||
5: .long 0xffffff68
|
||||
6: .word 0x0524
|
||||
|
||||
|
|
|
|||
|
|
@ -115,7 +115,6 @@ static struct sh_machine_vector mv_hp6xx __initmv = {
|
|||
.mv_setup = hp6xx_setup,
|
||||
/* IRQ's : CPU(64) + CCHIP(16) + FREE_TO_USE(6) */
|
||||
.mv_nr_irqs = HD64461_IRQBASE + HD64461_IRQ_NUM + 6,
|
||||
.mv_irq_demux = hd64461_irq_demux,
|
||||
/* Enable IRQ0 -> IRQ3 in IRQ_MODE */
|
||||
.mv_init_irq = hp6xx_init_irq,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -450,6 +450,14 @@ static struct spi_board_info migor_spi_devices[] = {
|
|||
|
||||
static int __init migor_devices_setup(void)
|
||||
{
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
/* Let D11 LED show STATUS0 */
|
||||
gpio_request(GPIO_FN_STATUS0, NULL);
|
||||
|
||||
/* Lit D12 LED show PDSTATUS */
|
||||
gpio_request(GPIO_FN_PDSTATUS, NULL);
|
||||
#else
|
||||
/* Lit D11 LED */
|
||||
gpio_request(GPIO_PTJ7, NULL);
|
||||
gpio_direction_output(GPIO_PTJ7, 1);
|
||||
|
|
@ -459,6 +467,7 @@ static int __init migor_devices_setup(void)
|
|||
gpio_request(GPIO_PTJ5, NULL);
|
||||
gpio_direction_output(GPIO_PTJ5, 1);
|
||||
gpio_export(GPIO_PTJ5, 0);
|
||||
#endif
|
||||
|
||||
/* SMC91C111 - Enable IRQ0, Setup CS4 for 16-bit fast access */
|
||||
gpio_request(GPIO_FN_IRQ0, NULL);
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ config SH_RSK7201
|
|||
|
||||
config SH_RSK7203
|
||||
bool "RSK7203"
|
||||
select GENERIC_GPIO
|
||||
select ARCH_REQUIRE_GPIOLIB
|
||||
depends on CPU_SUBTYPE_SH7203
|
||||
|
||||
endchoice
|
||||
|
|
|
|||
|
|
@ -63,15 +63,19 @@ static struct platform_device sh7763rdp_nor_flash_device = {
|
|||
},
|
||||
};
|
||||
|
||||
/* SH-Ether */
|
||||
/*
|
||||
* SH-Ether
|
||||
*
|
||||
* SH Ether of SH7763 has multi IRQ handling.
|
||||
* (57,58,59 -> 57)
|
||||
*/
|
||||
static struct resource sh_eth_resources[] = {
|
||||
{
|
||||
.start = 0xFEE00800, /* use eth1 */
|
||||
.end = 0xFEE00F7C - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = 58, /* irq number */
|
||||
.end = 58,
|
||||
.start = 57, /* irq number */
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -33,20 +33,24 @@ $(obj)/zImage: $(obj)/compressed/vmlinux FORCE
|
|||
$(obj)/compressed/vmlinux: FORCE
|
||||
$(Q)$(MAKE) $(build)=$(obj)/compressed $@
|
||||
|
||||
ifeq ($(CONFIG_32BIT),y)
|
||||
KERNEL_LOAD := $(shell /bin/bash -c 'printf "0x%08x" \
|
||||
$$[$(CONFIG_PAGE_OFFSET) + \
|
||||
$(CONFIG_ZERO_PAGE_OFFSET)]')
|
||||
else
|
||||
KERNEL_LOAD := $(shell /bin/bash -c 'printf "0x%08x" \
|
||||
$$[$(CONFIG_PAGE_OFFSET) + \
|
||||
$(CONFIG_MEMORY_START) + \
|
||||
$(CONFIG_ZERO_PAGE_OFFSET)]')
|
||||
KERNEL_MEMORY := 0x00000000
|
||||
ifeq ($(CONFIG_PMB_FIXED),y)
|
||||
KERNEL_MEMORY := $(shell /bin/bash -c 'printf "0x%08x" \
|
||||
$$[$(CONFIG_MEMORY_START) & 0x1fffffff]')
|
||||
endif
|
||||
ifeq ($(CONFIG_29BIT),y)
|
||||
KERNEL_MEMORY := $(shell /bin/bash -c 'printf "0x%08x" \
|
||||
$$[$(CONFIG_MEMORY_START)]')
|
||||
endif
|
||||
|
||||
KERNEL_LOAD := $(shell /bin/bash -c 'printf "0x%08x" \
|
||||
$$[$(CONFIG_PAGE_OFFSET) + \
|
||||
$(KERNEL_MEMORY) + \
|
||||
$(CONFIG_ZERO_PAGE_OFFSET)]')
|
||||
|
||||
KERNEL_ENTRY := $(shell /bin/bash -c 'printf "0x%08x" \
|
||||
$$[$(CONFIG_PAGE_OFFSET) + \
|
||||
$(CONFIG_MEMORY_START) + \
|
||||
$(KERNEL_MEMORY) + \
|
||||
$(CONFIG_ZERO_PAGE_OFFSET) + $(CONFIG_ENTRY_OFFSET)]')
|
||||
|
||||
quiet_cmd_uimage = UIMAGE $@
|
||||
|
|
|
|||
|
|
@ -53,21 +53,22 @@ static struct irq_chip hd64461_irq_chip = {
|
|||
.unmask = hd64461_unmask_irq,
|
||||
};
|
||||
|
||||
int hd64461_irq_demux(int irq)
|
||||
static void hd64461_irq_demux(unsigned int irq, struct irq_desc *desc)
|
||||
{
|
||||
if (irq == CONFIG_HD64461_IRQ) {
|
||||
unsigned short bit;
|
||||
unsigned short nirr = inw(HD64461_NIRR);
|
||||
unsigned short nimr = inw(HD64461_NIMR);
|
||||
int i;
|
||||
unsigned short intv = ctrl_inw(HD64461_NIRR);
|
||||
struct irq_desc *ext_desc;
|
||||
unsigned int ext_irq = HD64461_IRQBASE;
|
||||
|
||||
nirr &= ~nimr;
|
||||
for (bit = 1, i = 0; i < 16; bit <<= 1, i++)
|
||||
if (nirr & bit)
|
||||
break;
|
||||
irq = HD64461_IRQBASE + i;
|
||||
intv &= (1 << HD64461_IRQ_NUM) - 1;
|
||||
|
||||
while (intv) {
|
||||
if (intv & 1) {
|
||||
ext_desc = irq_desc + ext_irq;
|
||||
handle_level_irq(ext_irq, ext_desc);
|
||||
}
|
||||
intv >>= 1;
|
||||
ext_irq++;
|
||||
}
|
||||
return irq;
|
||||
}
|
||||
|
||||
int __init setup_hd64461(void)
|
||||
|
|
@ -93,6 +94,9 @@ int __init setup_hd64461(void)
|
|||
set_irq_chip_and_handler(i, &hd64461_irq_chip,
|
||||
handle_level_irq);
|
||||
|
||||
set_irq_chained_handler(CONFIG_HD64461_IRQ, hd64461_irq_demux);
|
||||
set_irq_type(CONFIG_HD64461_IRQ, IRQ_TYPE_LEVEL_LOW);
|
||||
|
||||
#ifdef CONFIG_HD64461_ENABLER
|
||||
printk(KERN_INFO "HD64461: enabling PCMCIA devices\n");
|
||||
__raw_writeb(0x4c, HD64461_PCC1CSCIER);
|
||||
|
|
|
|||
1190
arch/sh/configs/espt_defconfig
Normal file
1190
arch/sh/configs/espt_defconfig
Normal file
File diff suppressed because it is too large
Load Diff
969
arch/sh/configs/polaris_defconfig
Normal file
969
arch/sh/configs/polaris_defconfig
Normal file
|
|
@ -0,0 +1,969 @@
|
|||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.29-rc4
|
||||
# Wed Feb 11 18:41:59 2009
|
||||
#
|
||||
CONFIG_SUPERH=y
|
||||
CONFIG_SUPERH32=y
|
||||
CONFIG_ARCH_DEFCONFIG="arch/sh/configs/shx3_defconfig"
|
||||
CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
CONFIG_GENERIC_BUG=y
|
||||
CONFIG_GENERIC_FIND_NEXT_BIT=y
|
||||
CONFIG_GENERIC_HWEIGHT=y
|
||||
CONFIG_GENERIC_HARDIRQS=y
|
||||
CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
|
||||
CONFIG_GENERIC_IRQ_PROBE=y
|
||||
# CONFIG_GENERIC_GPIO is not set
|
||||
CONFIG_GENERIC_TIME=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS=y
|
||||
# CONFIG_ARCH_SUSPEND_POSSIBLE is not set
|
||||
# CONFIG_ARCH_HIBERNATION_POSSIBLE is not set
|
||||
CONFIG_STACKTRACE_SUPPORT=y
|
||||
CONFIG_LOCKDEP_SUPPORT=y
|
||||
CONFIG_HAVE_LATENCYTOP_SUPPORT=y
|
||||
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
|
||||
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
|
||||
CONFIG_ARCH_NO_VIRT_TO_BUS=y
|
||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||
|
||||
#
|
||||
# General setup
|
||||
#
|
||||
CONFIG_EXPERIMENTAL=y
|
||||
CONFIG_BROKEN_ON_SMP=y
|
||||
CONFIG_LOCK_KERNEL=y
|
||||
CONFIG_INIT_ENV_ARG_LIMIT=32
|
||||
CONFIG_LOCALVERSION=""
|
||||
# CONFIG_LOCALVERSION_AUTO is not set
|
||||
# CONFIG_SWAP is not set
|
||||
CONFIG_SYSVIPC=y
|
||||
CONFIG_SYSVIPC_SYSCTL=y
|
||||
CONFIG_POSIX_MQUEUE=y
|
||||
CONFIG_BSD_PROCESS_ACCT=y
|
||||
CONFIG_BSD_PROCESS_ACCT_V3=y
|
||||
# CONFIG_TASKSTATS is not set
|
||||
CONFIG_AUDIT=y
|
||||
# CONFIG_AUDITSYSCALL is not set
|
||||
|
||||
#
|
||||
# RCU Subsystem
|
||||
#
|
||||
CONFIG_CLASSIC_RCU=y
|
||||
# CONFIG_TREE_RCU is not set
|
||||
# CONFIG_PREEMPT_RCU is not set
|
||||
# CONFIG_TREE_RCU_TRACE is not set
|
||||
# CONFIG_PREEMPT_RCU_TRACE is not set
|
||||
# CONFIG_IKCONFIG is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
CONFIG_GROUP_SCHED=y
|
||||
CONFIG_FAIR_GROUP_SCHED=y
|
||||
# CONFIG_RT_GROUP_SCHED is not set
|
||||
CONFIG_USER_SCHED=y
|
||||
# CONFIG_CGROUP_SCHED is not set
|
||||
# CONFIG_CGROUPS is not set
|
||||
CONFIG_SYSFS_DEPRECATED=y
|
||||
CONFIG_SYSFS_DEPRECATED_V2=y
|
||||
# CONFIG_RELAY is not set
|
||||
# CONFIG_NAMESPACES is not set
|
||||
# CONFIG_BLK_DEV_INITRD is not set
|
||||
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
|
||||
CONFIG_SYSCTL=y
|
||||
CONFIG_EMBEDDED=y
|
||||
CONFIG_UID16=y
|
||||
CONFIG_SYSCTL_SYSCALL=y
|
||||
CONFIG_KALLSYMS=y
|
||||
CONFIG_KALLSYMS_ALL=y
|
||||
# CONFIG_KALLSYMS_EXTRA_PASS is not set
|
||||
CONFIG_HOTPLUG=y
|
||||
CONFIG_PRINTK=y
|
||||
CONFIG_BUG=y
|
||||
CONFIG_ELF_CORE=y
|
||||
CONFIG_COMPAT_BRK=y
|
||||
CONFIG_BASE_FULL=y
|
||||
CONFIG_FUTEX=y
|
||||
CONFIG_ANON_INODES=y
|
||||
CONFIG_EPOLL=y
|
||||
CONFIG_SIGNALFD=y
|
||||
CONFIG_TIMERFD=y
|
||||
CONFIG_EVENTFD=y
|
||||
CONFIG_SHMEM=y
|
||||
CONFIG_AIO=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_SLAB=y
|
||||
# CONFIG_SLUB is not set
|
||||
# CONFIG_SLOB is not set
|
||||
# CONFIG_PROFILING is not set
|
||||
CONFIG_HAVE_OPROFILE=y
|
||||
# CONFIG_KPROBES is not set
|
||||
CONFIG_HAVE_IOREMAP_PROT=y
|
||||
CONFIG_HAVE_KPROBES=y
|
||||
CONFIG_HAVE_KRETPROBES=y
|
||||
CONFIG_HAVE_ARCH_TRACEHOOK=y
|
||||
CONFIG_HAVE_CLK=y
|
||||
CONFIG_HAVE_GENERIC_DMA_COHERENT=y
|
||||
CONFIG_SLABINFO=y
|
||||
CONFIG_RT_MUTEXES=y
|
||||
CONFIG_BASE_SMALL=0
|
||||
CONFIG_MODULES=y
|
||||
# CONFIG_MODULE_FORCE_LOAD is not set
|
||||
CONFIG_MODULE_UNLOAD=y
|
||||
# CONFIG_MODULE_FORCE_UNLOAD is not set
|
||||
CONFIG_MODVERSIONS=y
|
||||
# CONFIG_MODULE_SRCVERSION_ALL is not set
|
||||
CONFIG_BLOCK=y
|
||||
# CONFIG_LBD is not set
|
||||
# CONFIG_BLK_DEV_IO_TRACE is not set
|
||||
# CONFIG_BLK_DEV_BSG is not set
|
||||
# CONFIG_BLK_DEV_INTEGRITY is not set
|
||||
|
||||
#
|
||||
# IO Schedulers
|
||||
#
|
||||
CONFIG_IOSCHED_NOOP=y
|
||||
# CONFIG_IOSCHED_AS is not set
|
||||
# CONFIG_IOSCHED_DEADLINE is not set
|
||||
CONFIG_IOSCHED_CFQ=y
|
||||
# CONFIG_DEFAULT_AS is not set
|
||||
# CONFIG_DEFAULT_DEADLINE is not set
|
||||
CONFIG_DEFAULT_CFQ=y
|
||||
# CONFIG_DEFAULT_NOOP is not set
|
||||
CONFIG_DEFAULT_IOSCHED="cfq"
|
||||
# CONFIG_FREEZER is not set
|
||||
|
||||
#
|
||||
# System type
|
||||
#
|
||||
CONFIG_CPU_SH3=y
|
||||
# CONFIG_CPU_SUBTYPE_SH7619 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7201 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7203 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7206 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7263 is not set
|
||||
# CONFIG_CPU_SUBTYPE_MXG is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7705 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7706 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7707 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7708 is not set
|
||||
CONFIG_CPU_SUBTYPE_SH7709=y
|
||||
# CONFIG_CPU_SUBTYPE_SH7710 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7712 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7720 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7721 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7750 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7091 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7750R is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7750S is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7751 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7751R is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7760 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH4_202 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7723 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7763 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7770 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7780 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7785 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SHX3 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7343 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7722 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7366 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH5_101 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH5_103 is not set
|
||||
|
||||
#
|
||||
# Memory management options
|
||||
#
|
||||
CONFIG_QUICKLIST=y
|
||||
CONFIG_MMU=y
|
||||
CONFIG_PAGE_OFFSET=0x80000000
|
||||
CONFIG_MEMORY_START=0x0C000000
|
||||
CONFIG_MEMORY_SIZE=0x04000000
|
||||
CONFIG_29BIT=y
|
||||
CONFIG_VSYSCALL=y
|
||||
CONFIG_ARCH_FLATMEM_ENABLE=y
|
||||
CONFIG_ARCH_SPARSEMEM_ENABLE=y
|
||||
CONFIG_ARCH_SPARSEMEM_DEFAULT=y
|
||||
CONFIG_MAX_ACTIVE_REGIONS=1
|
||||
CONFIG_ARCH_POPULATES_NODE_MAP=y
|
||||
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_PAGE_SIZE_4KB=y
|
||||
# CONFIG_PAGE_SIZE_8KB is not set
|
||||
# CONFIG_PAGE_SIZE_16KB is not set
|
||||
# CONFIG_PAGE_SIZE_64KB is not set
|
||||
CONFIG_ENTRY_OFFSET=0x00001000
|
||||
CONFIG_SELECT_MEMORY_MODEL=y
|
||||
CONFIG_FLATMEM_MANUAL=y
|
||||
# CONFIG_DISCONTIGMEM_MANUAL is not set
|
||||
# CONFIG_SPARSEMEM_MANUAL is not set
|
||||
CONFIG_FLATMEM=y
|
||||
CONFIG_FLAT_NODE_MEM_MAP=y
|
||||
CONFIG_SPARSEMEM_STATIC=y
|
||||
CONFIG_PAGEFLAGS_EXTENDED=y
|
||||
CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_PHYS_ADDR_T_64BIT is not set
|
||||
CONFIG_ZONE_DMA_FLAG=0
|
||||
CONFIG_NR_QUICK=2
|
||||
CONFIG_UNEVICTABLE_LRU=y
|
||||
|
||||
#
|
||||
# Cache configuration
|
||||
#
|
||||
# CONFIG_SH_DIRECT_MAPPED is not set
|
||||
CONFIG_CACHE_WRITEBACK=y
|
||||
# CONFIG_CACHE_WRITETHROUGH is not set
|
||||
# CONFIG_CACHE_OFF is not set
|
||||
|
||||
#
|
||||
# Processor features
|
||||
#
|
||||
CONFIG_CPU_LITTLE_ENDIAN=y
|
||||
# CONFIG_CPU_BIG_ENDIAN is not set
|
||||
CONFIG_SH_FPU_EMU=y
|
||||
CONFIG_SH_ADC=y
|
||||
CONFIG_CPU_HAS_INTEVT=y
|
||||
CONFIG_CPU_HAS_IPR_IRQ=y
|
||||
CONFIG_CPU_HAS_SR_RB=y
|
||||
|
||||
#
|
||||
# Board support
|
||||
#
|
||||
# CONFIG_SH_SOLUTION_ENGINE is not set
|
||||
# CONFIG_SH_HP6XX is not set
|
||||
CONFIG_SH_POLARIS=y
|
||||
|
||||
#
|
||||
# Timer and clock configuration
|
||||
#
|
||||
CONFIG_SH_TMU=y
|
||||
CONFIG_SH_TIMER_IRQ=16
|
||||
CONFIG_SH_PCLK_FREQ=33000000
|
||||
CONFIG_TICK_ONESHOT=y
|
||||
CONFIG_NO_HZ=y
|
||||
CONFIG_HIGH_RES_TIMERS=y
|
||||
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
|
||||
|
||||
#
|
||||
# CPU Frequency scaling
|
||||
#
|
||||
# CONFIG_CPU_FREQ is not set
|
||||
|
||||
#
|
||||
# DMA support
|
||||
#
|
||||
CONFIG_SH_DMA_API=y
|
||||
CONFIG_SH_DMA=y
|
||||
CONFIG_NR_ONCHIP_DMA_CHANNELS=4
|
||||
# CONFIG_NR_DMA_CHANNELS_BOOL is not set
|
||||
|
||||
#
|
||||
# Companion Chips
|
||||
#
|
||||
|
||||
#
|
||||
# Additional SuperH Device Drivers
|
||||
#
|
||||
CONFIG_HEARTBEAT=y
|
||||
# CONFIG_PUSH_SWITCH is not set
|
||||
|
||||
#
|
||||
# Kernel features
|
||||
#
|
||||
CONFIG_HZ_100=y
|
||||
# CONFIG_HZ_250 is not set
|
||||
# CONFIG_HZ_300 is not set
|
||||
# CONFIG_HZ_1000 is not set
|
||||
CONFIG_HZ=100
|
||||
CONFIG_SCHED_HRTICK=y
|
||||
# CONFIG_KEXEC is not set
|
||||
# CONFIG_CRASH_DUMP is not set
|
||||
# CONFIG_SECCOMP is not set
|
||||
# CONFIG_PREEMPT_NONE is not set
|
||||
# CONFIG_PREEMPT_VOLUNTARY is not set
|
||||
CONFIG_PREEMPT=y
|
||||
CONFIG_GUSA=y
|
||||
# CONFIG_GUSA_RB is not set
|
||||
|
||||
#
|
||||
# Boot options
|
||||
#
|
||||
CONFIG_ZERO_PAGE_OFFSET=0x00001000
|
||||
CONFIG_BOOT_LINK_OFFSET=0x00800000
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE="console=ttySC1,115200 root=/dev/mtdblock2 rootfstype=jffs2 mem=63M mtdparts=physmap-flash.0:0x00100000(bootloader)ro,0x00500000(Kernel)ro,0x00A00000(Filesystem)"
|
||||
|
||||
#
|
||||
# Bus options
|
||||
#
|
||||
# CONFIG_ARCH_SUPPORTS_MSI is not set
|
||||
# CONFIG_PCCARD is not set
|
||||
|
||||
#
|
||||
# Executable file formats
|
||||
#
|
||||
CONFIG_BINFMT_ELF=y
|
||||
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
|
||||
# CONFIG_HAVE_AOUT is not set
|
||||
# CONFIG_BINFMT_MISC is not set
|
||||
|
||||
#
|
||||
# Power management options (EXPERIMENTAL)
|
||||
#
|
||||
# CONFIG_PM is not set
|
||||
# CONFIG_CPU_IDLE is not set
|
||||
CONFIG_NET=y
|
||||
|
||||
#
|
||||
# Networking options
|
||||
#
|
||||
CONFIG_COMPAT_NET_DEV_OPS=y
|
||||
CONFIG_PACKET=y
|
||||
CONFIG_PACKET_MMAP=y
|
||||
CONFIG_UNIX=y
|
||||
# CONFIG_NET_KEY is not set
|
||||
CONFIG_INET=y
|
||||
CONFIG_IP_MULTICAST=y
|
||||
# CONFIG_IP_ADVANCED_ROUTER is not set
|
||||
CONFIG_IP_FIB_HASH=y
|
||||
# CONFIG_IP_PNP is not set
|
||||
# CONFIG_NET_IPIP is not set
|
||||
# CONFIG_NET_IPGRE is not set
|
||||
# CONFIG_IP_MROUTE is not set
|
||||
# CONFIG_ARPD is not set
|
||||
# CONFIG_SYN_COOKIES is not set
|
||||
# CONFIG_INET_AH is not set
|
||||
# CONFIG_INET_ESP is not set
|
||||
# CONFIG_INET_IPCOMP is not set
|
||||
# CONFIG_INET_XFRM_TUNNEL is not set
|
||||
# CONFIG_INET_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
|
||||
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
|
||||
# CONFIG_INET_XFRM_MODE_BEET is not set
|
||||
# CONFIG_INET_LRO is not set
|
||||
CONFIG_INET_DIAG=y
|
||||
CONFIG_INET_TCP_DIAG=y
|
||||
# CONFIG_TCP_CONG_ADVANCED is not set
|
||||
CONFIG_TCP_CONG_CUBIC=y
|
||||
CONFIG_DEFAULT_TCP_CONG="cubic"
|
||||
# CONFIG_TCP_MD5SIG is not set
|
||||
# CONFIG_IPV6 is not set
|
||||
# CONFIG_NETWORK_SECMARK is not set
|
||||
# CONFIG_NETFILTER is not set
|
||||
# CONFIG_IP_DCCP is not set
|
||||
# CONFIG_IP_SCTP is not set
|
||||
# CONFIG_TIPC is not set
|
||||
# CONFIG_ATM is not set
|
||||
# CONFIG_BRIDGE is not set
|
||||
# CONFIG_NET_DSA is not set
|
||||
# CONFIG_VLAN_8021Q is not set
|
||||
# CONFIG_DECNET is not set
|
||||
# CONFIG_LLC2 is not set
|
||||
# CONFIG_IPX is not set
|
||||
# CONFIG_ATALK is not set
|
||||
# CONFIG_X25 is not set
|
||||
# CONFIG_LAPB is not set
|
||||
# CONFIG_ECONET is not set
|
||||
# CONFIG_WAN_ROUTER is not set
|
||||
# CONFIG_NET_SCHED is not set
|
||||
# CONFIG_DCB is not set
|
||||
|
||||
#
|
||||
# Network testing
|
||||
#
|
||||
# CONFIG_NET_PKTGEN is not set
|
||||
# CONFIG_HAMRADIO is not set
|
||||
# CONFIG_CAN is not set
|
||||
# CONFIG_IRDA is not set
|
||||
# CONFIG_BT is not set
|
||||
# CONFIG_AF_RXRPC is not set
|
||||
# CONFIG_PHONET is not set
|
||||
# CONFIG_WIRELESS is not set
|
||||
# CONFIG_WIMAX is not set
|
||||
# CONFIG_RFKILL is not set
|
||||
# CONFIG_NET_9P is not set
|
||||
|
||||
#
|
||||
# Device Drivers
|
||||
#
|
||||
|
||||
#
|
||||
# Generic Driver Options
|
||||
#
|
||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||
CONFIG_STANDALONE=y
|
||||
CONFIG_PREVENT_FIRMWARE_BUILD=y
|
||||
CONFIG_FW_LOADER=y
|
||||
# CONFIG_FIRMWARE_IN_KERNEL is not set
|
||||
CONFIG_EXTRA_FIRMWARE=""
|
||||
# CONFIG_DEBUG_DRIVER is not set
|
||||
# CONFIG_DEBUG_DEVRES is not set
|
||||
# CONFIG_SYS_HYPERVISOR is not set
|
||||
# CONFIG_CONNECTOR is not set
|
||||
CONFIG_MTD=y
|
||||
# CONFIG_MTD_DEBUG is not set
|
||||
# CONFIG_MTD_CONCAT is not set
|
||||
CONFIG_MTD_PARTITIONS=y
|
||||
# CONFIG_MTD_TESTS is not set
|
||||
# CONFIG_MTD_REDBOOT_PARTS is not set
|
||||
CONFIG_MTD_CMDLINE_PARTS=y
|
||||
# CONFIG_MTD_AR7_PARTS is not set
|
||||
|
||||
#
|
||||
# User Modules And Translation Layers
|
||||
#
|
||||
CONFIG_MTD_CHAR=y
|
||||
CONFIG_MTD_BLKDEVS=y
|
||||
CONFIG_MTD_BLOCK=y
|
||||
# CONFIG_FTL is not set
|
||||
# CONFIG_NFTL is not set
|
||||
# CONFIG_INFTL is not set
|
||||
# CONFIG_RFD_FTL is not set
|
||||
# CONFIG_SSFDC is not set
|
||||
# CONFIG_MTD_OOPS is not set
|
||||
|
||||
#
|
||||
# RAM/ROM/Flash chip drivers
|
||||
#
|
||||
CONFIG_MTD_CFI=y
|
||||
# CONFIG_MTD_JEDECPROBE is not set
|
||||
CONFIG_MTD_GEN_PROBE=y
|
||||
CONFIG_MTD_CFI_ADV_OPTIONS=y
|
||||
CONFIG_MTD_CFI_NOSWAP=y
|
||||
# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
|
||||
# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
|
||||
# CONFIG_MTD_CFI_GEOMETRY is not set
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_1=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_2=y
|
||||
CONFIG_MTD_MAP_BANK_WIDTH_4=y
|
||||
# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
|
||||
# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
|
||||
# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
|
||||
CONFIG_MTD_CFI_I1=y
|
||||
CONFIG_MTD_CFI_I2=y
|
||||
# CONFIG_MTD_CFI_I4 is not set
|
||||
# CONFIG_MTD_CFI_I8 is not set
|
||||
# CONFIG_MTD_OTP is not set
|
||||
CONFIG_MTD_CFI_INTELEXT=y
|
||||
# CONFIG_MTD_CFI_AMDSTD is not set
|
||||
# CONFIG_MTD_CFI_STAA is not set
|
||||
CONFIG_MTD_CFI_UTIL=y
|
||||
# CONFIG_MTD_RAM is not set
|
||||
# CONFIG_MTD_ROM is not set
|
||||
# CONFIG_MTD_ABSENT is not set
|
||||
|
||||
#
|
||||
# Mapping drivers for chip access
|
||||
#
|
||||
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
|
||||
CONFIG_MTD_PHYSMAP=y
|
||||
CONFIG_MTD_PHYSMAP_COMPAT=y
|
||||
CONFIG_MTD_PHYSMAP_START=0x00000000
|
||||
CONFIG_MTD_PHYSMAP_LEN=0x01000000
|
||||
CONFIG_MTD_PHYSMAP_BANKWIDTH=2
|
||||
# CONFIG_MTD_PLATRAM is not set
|
||||
|
||||
#
|
||||
# Self-contained MTD device drivers
|
||||
#
|
||||
# CONFIG_MTD_SLRAM is not set
|
||||
# CONFIG_MTD_PHRAM is not set
|
||||
# CONFIG_MTD_MTDRAM is not set
|
||||
# CONFIG_MTD_BLOCK2MTD is not set
|
||||
|
||||
#
|
||||
# Disk-On-Chip Device Drivers
|
||||
#
|
||||
# CONFIG_MTD_DOC2000 is not set
|
||||
# CONFIG_MTD_DOC2001 is not set
|
||||
# CONFIG_MTD_DOC2001PLUS is not set
|
||||
# CONFIG_MTD_NAND is not set
|
||||
# CONFIG_MTD_ONENAND is not set
|
||||
|
||||
#
|
||||
# LPDDR flash memory drivers
|
||||
#
|
||||
# CONFIG_MTD_LPDDR is not set
|
||||
# CONFIG_MTD_QINFO_PROBE is not set
|
||||
|
||||
#
|
||||
# UBI - Unsorted block images
|
||||
#
|
||||
# CONFIG_MTD_UBI is not set
|
||||
# CONFIG_PARPORT is not set
|
||||
CONFIG_BLK_DEV=y
|
||||
# CONFIG_BLK_DEV_COW_COMMON is not set
|
||||
# CONFIG_BLK_DEV_LOOP is not set
|
||||
# CONFIG_BLK_DEV_NBD is not set
|
||||
# CONFIG_BLK_DEV_RAM is not set
|
||||
# CONFIG_CDROM_PKTCDVD is not set
|
||||
# CONFIG_ATA_OVER_ETH is not set
|
||||
# CONFIG_BLK_DEV_HD is not set
|
||||
CONFIG_MISC_DEVICES=y
|
||||
# CONFIG_ENCLOSURE_SERVICES is not set
|
||||
# CONFIG_C2PORT is not set
|
||||
|
||||
#
|
||||
# EEPROM support
|
||||
#
|
||||
# CONFIG_EEPROM_93CX6 is not set
|
||||
CONFIG_HAVE_IDE=y
|
||||
# CONFIG_IDE is not set
|
||||
|
||||
#
|
||||
# SCSI device support
|
||||
#
|
||||
# CONFIG_RAID_ATTRS is not set
|
||||
# CONFIG_SCSI is not set
|
||||
# CONFIG_SCSI_DMA is not set
|
||||
# CONFIG_SCSI_NETLINK is not set
|
||||
# CONFIG_ATA is not set
|
||||
# CONFIG_MD is not set
|
||||
CONFIG_NETDEVICES=y
|
||||
# CONFIG_DUMMY is not set
|
||||
# CONFIG_BONDING is not set
|
||||
# CONFIG_MACVLAN is not set
|
||||
# CONFIG_EQUALIZER is not set
|
||||
# CONFIG_TUN is not set
|
||||
# CONFIG_VETH is not set
|
||||
CONFIG_PHYLIB=y
|
||||
|
||||
#
|
||||
# MII PHY device drivers
|
||||
#
|
||||
# CONFIG_MARVELL_PHY is not set
|
||||
# CONFIG_DAVICOM_PHY is not set
|
||||
# CONFIG_QSEMI_PHY is not set
|
||||
# CONFIG_LXT_PHY is not set
|
||||
# CONFIG_CICADA_PHY is not set
|
||||
# CONFIG_VITESSE_PHY is not set
|
||||
CONFIG_SMSC_PHY=y
|
||||
# CONFIG_BROADCOM_PHY is not set
|
||||
# CONFIG_ICPLUS_PHY is not set
|
||||
# CONFIG_REALTEK_PHY is not set
|
||||
# CONFIG_NATIONAL_PHY is not set
|
||||
# CONFIG_STE10XP is not set
|
||||
# CONFIG_LSI_ET1011C_PHY is not set
|
||||
# CONFIG_FIXED_PHY is not set
|
||||
# CONFIG_MDIO_BITBANG is not set
|
||||
CONFIG_NET_ETHERNET=y
|
||||
CONFIG_MII=y
|
||||
# CONFIG_AX88796 is not set
|
||||
# CONFIG_STNIC is not set
|
||||
# CONFIG_SMC91X is not set
|
||||
# CONFIG_SMC911X is not set
|
||||
CONFIG_SMSC911X=y
|
||||
# CONFIG_IBM_NEW_EMAC_ZMII is not set
|
||||
# CONFIG_IBM_NEW_EMAC_RGMII is not set
|
||||
# CONFIG_IBM_NEW_EMAC_TAH is not set
|
||||
# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
|
||||
# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
|
||||
# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
|
||||
# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
|
||||
# CONFIG_B44 is not set
|
||||
# CONFIG_NETDEV_1000 is not set
|
||||
# CONFIG_NETDEV_10000 is not set
|
||||
|
||||
#
|
||||
# Wireless LAN
|
||||
#
|
||||
# CONFIG_WLAN_PRE80211 is not set
|
||||
# CONFIG_WLAN_80211 is not set
|
||||
# CONFIG_IWLWIFI_LEDS is not set
|
||||
|
||||
#
|
||||
# Enable WiMAX (Networking options) to see the WiMAX drivers
|
||||
#
|
||||
# CONFIG_WAN is not set
|
||||
# CONFIG_PPP is not set
|
||||
# CONFIG_SLIP is not set
|
||||
# CONFIG_NETCONSOLE is not set
|
||||
# CONFIG_NETPOLL is not set
|
||||
# CONFIG_NET_POLL_CONTROLLER is not set
|
||||
# CONFIG_ISDN is not set
|
||||
# CONFIG_PHONE is not set
|
||||
|
||||
#
|
||||
# Input device support
|
||||
#
|
||||
CONFIG_INPUT=y
|
||||
# CONFIG_INPUT_FF_MEMLESS is not set
|
||||
# CONFIG_INPUT_POLLDEV is not set
|
||||
|
||||
#
|
||||
# Userland interfaces
|
||||
#
|
||||
# CONFIG_INPUT_MOUSEDEV is not set
|
||||
# CONFIG_INPUT_JOYDEV is not set
|
||||
# CONFIG_INPUT_EVDEV is not set
|
||||
# CONFIG_INPUT_EVBUG is not set
|
||||
|
||||
#
|
||||
# Input Device Drivers
|
||||
#
|
||||
# CONFIG_INPUT_KEYBOARD is not set
|
||||
# CONFIG_INPUT_MOUSE is not set
|
||||
# CONFIG_INPUT_JOYSTICK is not set
|
||||
# CONFIG_INPUT_TABLET is not set
|
||||
# CONFIG_INPUT_TOUCHSCREEN is not set
|
||||
# CONFIG_INPUT_MISC is not set
|
||||
|
||||
#
|
||||
# Hardware I/O ports
|
||||
#
|
||||
# CONFIG_SERIO is not set
|
||||
# CONFIG_GAMEPORT is not set
|
||||
|
||||
#
|
||||
# Character devices
|
||||
#
|
||||
CONFIG_VT=y
|
||||
CONFIG_CONSOLE_TRANSLATIONS=y
|
||||
CONFIG_VT_CONSOLE=y
|
||||
CONFIG_HW_CONSOLE=y
|
||||
CONFIG_VT_HW_CONSOLE_BINDING=y
|
||||
CONFIG_DEVKMEM=y
|
||||
CONFIG_SERIAL_NONSTANDARD=y
|
||||
# CONFIG_N_HDLC is not set
|
||||
# CONFIG_RISCOM8 is not set
|
||||
# CONFIG_SPECIALIX is not set
|
||||
# CONFIG_RIO is not set
|
||||
# CONFIG_STALDRV is not set
|
||||
|
||||
#
|
||||
# Serial drivers
|
||||
#
|
||||
# CONFIG_SERIAL_8250 is not set
|
||||
|
||||
#
|
||||
# Non-8250 serial port support
|
||||
#
|
||||
CONFIG_SERIAL_SH_SCI=y
|
||||
CONFIG_SERIAL_SH_SCI_NR_UARTS=3
|
||||
CONFIG_SERIAL_SH_SCI_CONSOLE=y
|
||||
CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
CONFIG_UNIX98_PTYS=y
|
||||
# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
|
||||
# CONFIG_LEGACY_PTYS is not set
|
||||
# CONFIG_IPMI_HANDLER is not set
|
||||
# CONFIG_HW_RANDOM is not set
|
||||
# CONFIG_R3964 is not set
|
||||
# CONFIG_RAW_DRIVER is not set
|
||||
# CONFIG_TCG_TPM is not set
|
||||
# CONFIG_I2C is not set
|
||||
# CONFIG_SPI is not set
|
||||
# CONFIG_W1 is not set
|
||||
# CONFIG_POWER_SUPPLY is not set
|
||||
# CONFIG_HWMON is not set
|
||||
# CONFIG_THERMAL is not set
|
||||
# CONFIG_THERMAL_HWMON is not set
|
||||
# CONFIG_WATCHDOG is not set
|
||||
CONFIG_SSB_POSSIBLE=y
|
||||
|
||||
#
|
||||
# Sonics Silicon Backplane
|
||||
#
|
||||
# CONFIG_SSB is not set
|
||||
|
||||
#
|
||||
# Multifunction device drivers
|
||||
#
|
||||
# CONFIG_MFD_CORE is not set
|
||||
# CONFIG_MFD_SM501 is not set
|
||||
# CONFIG_HTC_PASIC3 is not set
|
||||
# CONFIG_MFD_TMIO is not set
|
||||
# CONFIG_REGULATOR is not set
|
||||
|
||||
#
|
||||
# Multimedia devices
|
||||
#
|
||||
|
||||
#
|
||||
# Multimedia core support
|
||||
#
|
||||
# CONFIG_VIDEO_DEV is not set
|
||||
# CONFIG_DVB_CORE is not set
|
||||
# CONFIG_VIDEO_MEDIA is not set
|
||||
|
||||
#
|
||||
# Multimedia drivers
|
||||
#
|
||||
# CONFIG_DAB is not set
|
||||
|
||||
#
|
||||
# Graphics support
|
||||
#
|
||||
# CONFIG_VGASTATE is not set
|
||||
# CONFIG_VIDEO_OUTPUT_CONTROL is not set
|
||||
# CONFIG_FB is not set
|
||||
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
|
||||
|
||||
#
|
||||
# Display device support
|
||||
#
|
||||
# CONFIG_DISPLAY_SUPPORT is not set
|
||||
|
||||
#
|
||||
# Console display driver support
|
||||
#
|
||||
CONFIG_DUMMY_CONSOLE=y
|
||||
# CONFIG_SOUND is not set
|
||||
# CONFIG_HID_SUPPORT is not set
|
||||
# CONFIG_USB_SUPPORT is not set
|
||||
# CONFIG_MMC is not set
|
||||
# CONFIG_MEMSTICK is not set
|
||||
# CONFIG_NEW_LEDS is not set
|
||||
# CONFIG_ACCESSIBILITY is not set
|
||||
CONFIG_RTC_LIB=y
|
||||
CONFIG_RTC_CLASS=y
|
||||
CONFIG_RTC_HCTOSYS=y
|
||||
CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
|
||||
# CONFIG_RTC_DEBUG is not set
|
||||
|
||||
#
|
||||
# RTC interfaces
|
||||
#
|
||||
CONFIG_RTC_INTF_SYSFS=y
|
||||
CONFIG_RTC_INTF_PROC=y
|
||||
CONFIG_RTC_INTF_DEV=y
|
||||
# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
|
||||
# CONFIG_RTC_DRV_TEST is not set
|
||||
|
||||
#
|
||||
# SPI RTC drivers
|
||||
#
|
||||
|
||||
#
|
||||
# Platform RTC drivers
|
||||
#
|
||||
# CONFIG_RTC_DRV_DS1286 is not set
|
||||
# CONFIG_RTC_DRV_DS1511 is not set
|
||||
# CONFIG_RTC_DRV_DS1553 is not set
|
||||
# CONFIG_RTC_DRV_DS1742 is not set
|
||||
# CONFIG_RTC_DRV_STK17TA8 is not set
|
||||
# CONFIG_RTC_DRV_M48T86 is not set
|
||||
# CONFIG_RTC_DRV_M48T35 is not set
|
||||
# CONFIG_RTC_DRV_M48T59 is not set
|
||||
# CONFIG_RTC_DRV_BQ4802 is not set
|
||||
# CONFIG_RTC_DRV_V3020 is not set
|
||||
|
||||
#
|
||||
# on-CPU RTC drivers
|
||||
#
|
||||
CONFIG_RTC_DRV_SH=y
|
||||
# CONFIG_DMADEVICES is not set
|
||||
# CONFIG_UIO is not set
|
||||
# CONFIG_STAGING is not set
|
||||
|
||||
#
|
||||
# File systems
|
||||
#
|
||||
# CONFIG_EXT2_FS is not set
|
||||
# CONFIG_EXT3_FS is not set
|
||||
# CONFIG_EXT4_FS is not set
|
||||
# CONFIG_REISERFS_FS is not set
|
||||
# CONFIG_JFS_FS is not set
|
||||
# CONFIG_FS_POSIX_ACL is not set
|
||||
CONFIG_FILE_LOCKING=y
|
||||
# CONFIG_XFS_FS is not set
|
||||
# CONFIG_OCFS2_FS is not set
|
||||
# CONFIG_BTRFS_FS is not set
|
||||
# CONFIG_DNOTIFY is not set
|
||||
# CONFIG_INOTIFY is not set
|
||||
# CONFIG_QUOTA is not set
|
||||
# CONFIG_AUTOFS_FS is not set
|
||||
# CONFIG_AUTOFS4_FS is not set
|
||||
# CONFIG_FUSE_FS is not set
|
||||
|
||||
#
|
||||
# CD-ROM/DVD Filesystems
|
||||
#
|
||||
# CONFIG_ISO9660_FS is not set
|
||||
# CONFIG_UDF_FS is not set
|
||||
|
||||
#
|
||||
# DOS/FAT/NT Filesystems
|
||||
#
|
||||
# CONFIG_MSDOS_FS is not set
|
||||
# CONFIG_VFAT_FS is not set
|
||||
# CONFIG_NTFS_FS is not set
|
||||
|
||||
#
|
||||
# Pseudo filesystems
|
||||
#
|
||||
CONFIG_PROC_FS=y
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_PROC_SYSCTL=y
|
||||
CONFIG_PROC_PAGE_MONITOR=y
|
||||
CONFIG_SYSFS=y
|
||||
CONFIG_TMPFS=y
|
||||
# CONFIG_TMPFS_POSIX_ACL is not set
|
||||
# CONFIG_HUGETLBFS is not set
|
||||
# CONFIG_HUGETLB_PAGE is not set
|
||||
# CONFIG_CONFIGFS_FS is not set
|
||||
CONFIG_MISC_FILESYSTEMS=y
|
||||
# CONFIG_ADFS_FS is not set
|
||||
# CONFIG_AFFS_FS is not set
|
||||
# CONFIG_HFS_FS is not set
|
||||
# CONFIG_HFSPLUS_FS is not set
|
||||
# CONFIG_BEFS_FS is not set
|
||||
# CONFIG_BFS_FS is not set
|
||||
# CONFIG_EFS_FS is not set
|
||||
CONFIG_JFFS2_FS=y
|
||||
CONFIG_JFFS2_FS_DEBUG=0
|
||||
# CONFIG_JFFS2_FS_WRITEBUFFER is not set
|
||||
# CONFIG_JFFS2_SUMMARY is not set
|
||||
# CONFIG_JFFS2_FS_XATTR is not set
|
||||
# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
|
||||
CONFIG_JFFS2_ZLIB=y
|
||||
# CONFIG_JFFS2_LZO is not set
|
||||
CONFIG_JFFS2_RTIME=y
|
||||
# CONFIG_JFFS2_RUBIN is not set
|
||||
# CONFIG_CRAMFS is not set
|
||||
# CONFIG_SQUASHFS is not set
|
||||
# CONFIG_VXFS_FS is not set
|
||||
# CONFIG_MINIX_FS is not set
|
||||
# CONFIG_OMFS_FS is not set
|
||||
# CONFIG_HPFS_FS is not set
|
||||
# CONFIG_QNX4FS_FS is not set
|
||||
# CONFIG_ROMFS_FS is not set
|
||||
# CONFIG_SYSV_FS is not set
|
||||
# CONFIG_UFS_FS is not set
|
||||
CONFIG_NETWORK_FILESYSTEMS=y
|
||||
CONFIG_NFS_FS=y
|
||||
CONFIG_NFS_V3=y
|
||||
# CONFIG_NFS_V3_ACL is not set
|
||||
# CONFIG_NFS_V4 is not set
|
||||
# CONFIG_NFSD is not set
|
||||
CONFIG_LOCKD=y
|
||||
CONFIG_LOCKD_V4=y
|
||||
CONFIG_NFS_COMMON=y
|
||||
CONFIG_SUNRPC=y
|
||||
# CONFIG_SUNRPC_REGISTER_V4 is not set
|
||||
# CONFIG_RPCSEC_GSS_KRB5 is not set
|
||||
# CONFIG_RPCSEC_GSS_SPKM3 is not set
|
||||
# CONFIG_SMB_FS is not set
|
||||
# CONFIG_CIFS is not set
|
||||
# CONFIG_NCP_FS is not set
|
||||
# CONFIG_CODA_FS is not set
|
||||
# CONFIG_AFS_FS is not set
|
||||
|
||||
#
|
||||
# Partition Types
|
||||
#
|
||||
# CONFIG_PARTITION_ADVANCED is not set
|
||||
CONFIG_MSDOS_PARTITION=y
|
||||
# CONFIG_NLS is not set
|
||||
# CONFIG_DLM is not set
|
||||
|
||||
#
|
||||
# Kernel hacking
|
||||
#
|
||||
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
|
||||
# CONFIG_PRINTK_TIME is not set
|
||||
CONFIG_ENABLE_WARN_DEPRECATED=y
|
||||
CONFIG_ENABLE_MUST_CHECK=y
|
||||
CONFIG_FRAME_WARN=1024
|
||||
# CONFIG_MAGIC_SYSRQ is not set
|
||||
# CONFIG_UNUSED_SYMBOLS is not set
|
||||
# CONFIG_DEBUG_FS is not set
|
||||
# CONFIG_HEADERS_CHECK is not set
|
||||
CONFIG_DEBUG_KERNEL=y
|
||||
CONFIG_DEBUG_SHIRQ=y
|
||||
CONFIG_DETECT_SOFTLOCKUP=y
|
||||
# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
|
||||
CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
|
||||
# CONFIG_SCHED_DEBUG is not set
|
||||
# CONFIG_SCHEDSTATS is not set
|
||||
# CONFIG_TIMER_STATS is not set
|
||||
# CONFIG_DEBUG_OBJECTS is not set
|
||||
# CONFIG_DEBUG_SLAB is not set
|
||||
CONFIG_DEBUG_PREEMPT=y
|
||||
CONFIG_DEBUG_RT_MUTEXES=y
|
||||
CONFIG_DEBUG_PI_LIST=y
|
||||
# CONFIG_RT_MUTEX_TESTER is not set
|
||||
CONFIG_DEBUG_SPINLOCK=y
|
||||
CONFIG_DEBUG_MUTEXES=y
|
||||
CONFIG_DEBUG_LOCK_ALLOC=y
|
||||
# CONFIG_PROVE_LOCKING is not set
|
||||
CONFIG_LOCKDEP=y
|
||||
# CONFIG_LOCK_STAT is not set
|
||||
# CONFIG_DEBUG_LOCKDEP is not set
|
||||
CONFIG_DEBUG_SPINLOCK_SLEEP=y
|
||||
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
|
||||
CONFIG_STACKTRACE=y
|
||||
# CONFIG_DEBUG_KOBJECT is not set
|
||||
CONFIG_DEBUG_BUGVERBOSE=y
|
||||
CONFIG_DEBUG_INFO=y
|
||||
# CONFIG_DEBUG_VM is not set
|
||||
# CONFIG_DEBUG_WRITECOUNT is not set
|
||||
# CONFIG_DEBUG_MEMORY_INIT is not set
|
||||
# CONFIG_DEBUG_LIST is not set
|
||||
CONFIG_DEBUG_SG=y
|
||||
# CONFIG_DEBUG_NOTIFIERS is not set
|
||||
CONFIG_FRAME_POINTER=y
|
||||
# CONFIG_RCU_TORTURE_TEST is not set
|
||||
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
|
||||
# CONFIG_BACKTRACE_SELF_TEST is not set
|
||||
# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
|
||||
# CONFIG_FAULT_INJECTION is not set
|
||||
# CONFIG_LATENCYTOP is not set
|
||||
CONFIG_SYSCTL_SYSCALL_CHECK=y
|
||||
CONFIG_HAVE_FUNCTION_TRACER=y
|
||||
CONFIG_HAVE_DYNAMIC_FTRACE=y
|
||||
CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
|
||||
|
||||
#
|
||||
# Tracers
|
||||
#
|
||||
# CONFIG_FUNCTION_TRACER is not set
|
||||
# CONFIG_IRQSOFF_TRACER is not set
|
||||
# CONFIG_PREEMPT_TRACER is not set
|
||||
# CONFIG_SCHED_TRACER is not set
|
||||
# CONFIG_CONTEXT_SWITCH_TRACER is not set
|
||||
# CONFIG_BOOT_TRACER is not set
|
||||
# CONFIG_TRACE_BRANCH_PROFILING is not set
|
||||
# CONFIG_STACK_TRACER is not set
|
||||
# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
|
||||
# CONFIG_SAMPLES is not set
|
||||
CONFIG_HAVE_ARCH_KGDB=y
|
||||
# CONFIG_KGDB is not set
|
||||
# CONFIG_SH_STANDARD_BIOS is not set
|
||||
CONFIG_EARLY_SCIF_CONSOLE=y
|
||||
CONFIG_EARLY_SCIF_CONSOLE_PORT=0x00000000
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
# CONFIG_DEBUG_BOOTMEM is not set
|
||||
# CONFIG_DEBUG_STACKOVERFLOW is not set
|
||||
# CONFIG_DEBUG_STACK_USAGE is not set
|
||||
# CONFIG_4KSTACKS is not set
|
||||
# CONFIG_IRQSTACKS is not set
|
||||
CONFIG_DUMP_CODE=y
|
||||
# CONFIG_SH_NO_BSS_INIT is not set
|
||||
# CONFIG_MORE_COMPILE_OPTIONS is not set
|
||||
|
||||
#
|
||||
# Security options
|
||||
#
|
||||
# CONFIG_KEYS is not set
|
||||
# CONFIG_SECURITY is not set
|
||||
# CONFIG_SECURITYFS is not set
|
||||
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
|
||||
# CONFIG_CRYPTO is not set
|
||||
|
||||
#
|
||||
# Library routines
|
||||
#
|
||||
CONFIG_BITREVERSE=y
|
||||
CONFIG_GENERIC_FIND_LAST_BIT=y
|
||||
# CONFIG_CRC_CCITT is not set
|
||||
# CONFIG_CRC16 is not set
|
||||
# CONFIG_CRC_T10DIF is not set
|
||||
# CONFIG_CRC_ITU_T is not set
|
||||
CONFIG_CRC32=y
|
||||
# CONFIG_CRC7 is not set
|
||||
# CONFIG_LIBCRC32C is not set
|
||||
CONFIG_AUDIT_GENERIC=y
|
||||
CONFIG_ZLIB_INFLATE=y
|
||||
CONFIG_ZLIB_DEFLATE=y
|
||||
CONFIG_PLIST=y
|
||||
CONFIG_HAS_IOMEM=y
|
||||
CONFIG_HAS_IOPORT=y
|
||||
CONFIG_HAS_DMA=y
|
||||
1553
arch/sh/configs/sh7785lcr_32bit_defconfig
Normal file
1553
arch/sh/configs/sh7785lcr_32bit_defconfig
Normal file
File diff suppressed because it is too large
Load Diff
1332
arch/sh/configs/urquell_defconfig
Normal file
1332
arch/sh/configs/urquell_defconfig
Normal file
File diff suppressed because it is too large
Load Diff
|
|
@ -9,13 +9,21 @@ config SH_DMA
|
|||
select SH_DMA_API
|
||||
default n
|
||||
|
||||
config SH_DMA_IRQ_MULTI
|
||||
bool
|
||||
depends on SH_DMA
|
||||
default y if CPU_SUBTYPE_SH7750 || CPU_SUBTYPE_SH7751 || \
|
||||
CPU_SUBTYPE_SH7750S || CPU_SUBTYPE_SH7750R || CPU_SUBTYPE_SH7751R || \
|
||||
CPU_SUBTYPE_SH7091 || CPU_SUBTYPE_SH7763 || CPU_SUBTYPE_SH7764 || \
|
||||
CPU_SUBTYPE_SH7780 || CPU_SUBTYPE_SH7785
|
||||
|
||||
config NR_ONCHIP_DMA_CHANNELS
|
||||
int
|
||||
depends on SH_DMA
|
||||
default "6" if CPU_SUBTYPE_SH7720 || CPU_SUBTYPE_SH7721
|
||||
default "8" if CPU_SUBTYPE_SH7750R || CPU_SUBTYPE_SH7751R
|
||||
default "12" if CPU_SUBTYPE_SH7780
|
||||
default "4"
|
||||
default "4" if CPU_SUBTYPE_SH7750 || CPU_SUBTYPE_SH7751 || CPU_SUBTYPE_SH7750S
|
||||
default "8" if CPU_SUBTYPE_SH7750R || CPU_SUBTYPE_SH7751R || CPU_SUBTYPE_SH7760
|
||||
default "12" if CPU_SUBTYPE_SH7723 || CPU_SUBTYPE_SH7780 || CPU_SUBTYPE_SH7785
|
||||
default "6"
|
||||
help
|
||||
This allows you to specify the number of channels that the on-chip
|
||||
DMAC supports. This will be 4 for SH7750/SH7751 and 8 for the
|
||||
|
|
@ -46,4 +54,28 @@ config SH_DMABRG
|
|||
of the SH7760.
|
||||
Say Y if you want to use Audio/USB DMA on your SH7760 board.
|
||||
|
||||
config PVR2_DMA
|
||||
tristate "PowerVR 2 DMAC support"
|
||||
depends on SH_DREAMCAST && SH_DMA
|
||||
help
|
||||
Selecting this will enable support for the PVR2 DMA controller.
|
||||
As this chains off of the on-chip DMAC, that must also be
|
||||
enabled by default.
|
||||
|
||||
This is primarily used by the pvr2fb framebuffer driver for
|
||||
certain optimizations, but is not necessary for functionality.
|
||||
|
||||
If in doubt, say N.
|
||||
|
||||
config G2_DMA
|
||||
tristate "G2 Bus DMA support"
|
||||
depends on SH_DREAMCAST
|
||||
select SH_DMA_API
|
||||
help
|
||||
This enables support for the DMA controller for the Dreamcast's
|
||||
G2 bus. Drivers that want this will generally enable this on
|
||||
their own.
|
||||
|
||||
If in doubt, say N.
|
||||
|
||||
endmenu
|
||||
|
|
|
|||
|
|
@ -4,5 +4,6 @@
|
|||
|
||||
obj-$(CONFIG_SH_DMA_API) += dma-api.o dma-sysfs.o
|
||||
obj-$(CONFIG_SH_DMA) += dma-sh.o
|
||||
obj-$(CONFIG_SH_DREAMCAST) += dma-pvr2.o dma-g2.o
|
||||
obj-$(CONFIG_PVR2_DMA) += dma-pvr2.o
|
||||
obj-$(CONFIG_G2_DMA) += dma-g2.o
|
||||
obj-$(CONFIG_SH_DMABRG) += dmabrg.o
|
||||
|
|
|
|||
|
|
@ -17,28 +17,16 @@
|
|||
#include <mach-dreamcast/mach/dma.h>
|
||||
#include <asm/dma.h>
|
||||
#include <asm/io.h>
|
||||
#include "dma-sh.h"
|
||||
#include <asm/dma-sh.h>
|
||||
|
||||
static int dmte_irq_map[] = {
|
||||
DMTE0_IRQ,
|
||||
DMTE1_IRQ,
|
||||
DMTE2_IRQ,
|
||||
DMTE3_IRQ,
|
||||
#if defined(CONFIG_CPU_SUBTYPE_SH7720) || \
|
||||
defined(CONFIG_CPU_SUBTYPE_SH7721) || \
|
||||
defined(CONFIG_CPU_SUBTYPE_SH7751R) || \
|
||||
defined(CONFIG_CPU_SUBTYPE_SH7760) || \
|
||||
defined(CONFIG_CPU_SUBTYPE_SH7709) || \
|
||||
defined(CONFIG_CPU_SUBTYPE_SH7780)
|
||||
DMTE4_IRQ,
|
||||
DMTE5_IRQ,
|
||||
#endif
|
||||
#if defined(CONFIG_CPU_SUBTYPE_SH7751R) || \
|
||||
defined(CONFIG_CPU_SUBTYPE_SH7760) || \
|
||||
defined(CONFIG_CPU_SUBTYPE_SH7780)
|
||||
DMTE6_IRQ,
|
||||
DMTE7_IRQ,
|
||||
#if defined(DMAE1_IRQ)
|
||||
#define NR_DMAE 2
|
||||
#else
|
||||
#define NR_DMAE 1
|
||||
#endif
|
||||
|
||||
static const char *dmae_name[] = {
|
||||
"DMAC Address Error0", "DMAC Address Error1"
|
||||
};
|
||||
|
||||
static inline unsigned int get_dmte_irq(unsigned int chan)
|
||||
|
|
@ -46,7 +34,14 @@ static inline unsigned int get_dmte_irq(unsigned int chan)
|
|||
unsigned int irq = 0;
|
||||
if (chan < ARRAY_SIZE(dmte_irq_map))
|
||||
irq = dmte_irq_map[chan];
|
||||
|
||||
#if defined(CONFIG_SH_DMA_IRQ_MULTI)
|
||||
if (irq > DMTE6_IRQ)
|
||||
return DMTE6_IRQ;
|
||||
return DMTE0_IRQ;
|
||||
#else
|
||||
return irq;
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -59,7 +54,7 @@ static inline unsigned int get_dmte_irq(unsigned int chan)
|
|||
*/
|
||||
static inline unsigned int calc_xmit_shift(struct dma_channel *chan)
|
||||
{
|
||||
u32 chcr = ctrl_inl(CHCR[chan->chan]);
|
||||
u32 chcr = ctrl_inl(dma_base_addr[chan->chan] + CHCR);
|
||||
|
||||
return ts_shift[(chcr & CHCR_TS_MASK)>>CHCR_TS_SHIFT];
|
||||
}
|
||||
|
|
@ -75,13 +70,13 @@ static irqreturn_t dma_tei(int irq, void *dev_id)
|
|||
struct dma_channel *chan = dev_id;
|
||||
u32 chcr;
|
||||
|
||||
chcr = ctrl_inl(CHCR[chan->chan]);
|
||||
chcr = ctrl_inl(dma_base_addr[chan->chan] + CHCR);
|
||||
|
||||
if (!(chcr & CHCR_TE))
|
||||
return IRQ_NONE;
|
||||
|
||||
chcr &= ~(CHCR_IE | CHCR_DE);
|
||||
ctrl_outl(chcr, CHCR[chan->chan]);
|
||||
ctrl_outl(chcr, (dma_base_addr[chan->chan] + CHCR));
|
||||
|
||||
wake_up(&chan->wait_queue);
|
||||
|
||||
|
|
@ -94,7 +89,12 @@ static int sh_dmac_request_dma(struct dma_channel *chan)
|
|||
return 0;
|
||||
|
||||
return request_irq(get_dmte_irq(chan->chan), dma_tei,
|
||||
IRQF_DISABLED, chan->dev_id, chan);
|
||||
#if defined(CONFIG_SH_DMA_IRQ_MULTI)
|
||||
IRQF_SHARED,
|
||||
#else
|
||||
IRQF_DISABLED,
|
||||
#endif
|
||||
chan->dev_id, chan);
|
||||
}
|
||||
|
||||
static void sh_dmac_free_dma(struct dma_channel *chan)
|
||||
|
|
@ -115,7 +115,7 @@ sh_dmac_configure_channel(struct dma_channel *chan, unsigned long chcr)
|
|||
chan->flags &= ~DMA_TEI_CAPABLE;
|
||||
}
|
||||
|
||||
ctrl_outl(chcr, CHCR[chan->chan]);
|
||||
ctrl_outl(chcr, (dma_base_addr[chan->chan] + CHCR));
|
||||
|
||||
chan->flags |= DMA_CONFIGURED;
|
||||
return 0;
|
||||
|
|
@ -126,13 +126,13 @@ static void sh_dmac_enable_dma(struct dma_channel *chan)
|
|||
int irq;
|
||||
u32 chcr;
|
||||
|
||||
chcr = ctrl_inl(CHCR[chan->chan]);
|
||||
chcr = ctrl_inl(dma_base_addr[chan->chan] + CHCR);
|
||||
chcr |= CHCR_DE;
|
||||
|
||||
if (chan->flags & DMA_TEI_CAPABLE)
|
||||
chcr |= CHCR_IE;
|
||||
|
||||
ctrl_outl(chcr, CHCR[chan->chan]);
|
||||
ctrl_outl(chcr, (dma_base_addr[chan->chan] + CHCR));
|
||||
|
||||
if (chan->flags & DMA_TEI_CAPABLE) {
|
||||
irq = get_dmte_irq(chan->chan);
|
||||
|
|
@ -150,9 +150,9 @@ static void sh_dmac_disable_dma(struct dma_channel *chan)
|
|||
disable_irq(irq);
|
||||
}
|
||||
|
||||
chcr = ctrl_inl(CHCR[chan->chan]);
|
||||
chcr = ctrl_inl(dma_base_addr[chan->chan] + CHCR);
|
||||
chcr &= ~(CHCR_DE | CHCR_TE | CHCR_IE);
|
||||
ctrl_outl(chcr, CHCR[chan->chan]);
|
||||
ctrl_outl(chcr, (dma_base_addr[chan->chan] + CHCR));
|
||||
}
|
||||
|
||||
static int sh_dmac_xfer_dma(struct dma_channel *chan)
|
||||
|
|
@ -183,12 +183,13 @@ static int sh_dmac_xfer_dma(struct dma_channel *chan)
|
|||
*/
|
||||
if (chan->sar || (mach_is_dreamcast() &&
|
||||
chan->chan == PVR2_CASCADE_CHAN))
|
||||
ctrl_outl(chan->sar, SAR[chan->chan]);
|
||||
ctrl_outl(chan->sar, (dma_base_addr[chan->chan]+SAR));
|
||||
if (chan->dar || (mach_is_dreamcast() &&
|
||||
chan->chan == PVR2_CASCADE_CHAN))
|
||||
ctrl_outl(chan->dar, DAR[chan->chan]);
|
||||
ctrl_outl(chan->dar, (dma_base_addr[chan->chan] + DAR));
|
||||
|
||||
ctrl_outl(chan->count >> calc_xmit_shift(chan), DMATCR[chan->chan]);
|
||||
ctrl_outl(chan->count >> calc_xmit_shift(chan),
|
||||
(dma_base_addr[chan->chan] + TCR));
|
||||
|
||||
sh_dmac_enable_dma(chan);
|
||||
|
||||
|
|
@ -197,36 +198,26 @@ static int sh_dmac_xfer_dma(struct dma_channel *chan)
|
|||
|
||||
static int sh_dmac_get_dma_residue(struct dma_channel *chan)
|
||||
{
|
||||
if (!(ctrl_inl(CHCR[chan->chan]) & CHCR_DE))
|
||||
if (!(ctrl_inl(dma_base_addr[chan->chan] + CHCR) & CHCR_DE))
|
||||
return 0;
|
||||
|
||||
return ctrl_inl(DMATCR[chan->chan]) << calc_xmit_shift(chan);
|
||||
return ctrl_inl(dma_base_addr[chan->chan] + TCR)
|
||||
<< calc_xmit_shift(chan);
|
||||
}
|
||||
|
||||
#if defined(CONFIG_CPU_SUBTYPE_SH7720) || \
|
||||
defined(CONFIG_CPU_SUBTYPE_SH7721) || \
|
||||
defined(CONFIG_CPU_SUBTYPE_SH7780) || \
|
||||
defined(CONFIG_CPU_SUBTYPE_SH7709)
|
||||
#define dmaor_read_reg() ctrl_inw(DMAOR)
|
||||
#define dmaor_write_reg(data) ctrl_outw(data, DMAOR)
|
||||
#else
|
||||
#define dmaor_read_reg() ctrl_inl(DMAOR)
|
||||
#define dmaor_write_reg(data) ctrl_outl(data, DMAOR)
|
||||
#endif
|
||||
|
||||
static inline int dmaor_reset(void)
|
||||
static inline int dmaor_reset(int no)
|
||||
{
|
||||
unsigned long dmaor = dmaor_read_reg();
|
||||
unsigned long dmaor = dmaor_read_reg(no);
|
||||
|
||||
/* Try to clear the error flags first, incase they are set */
|
||||
dmaor &= ~(DMAOR_NMIF | DMAOR_AE);
|
||||
dmaor_write_reg(dmaor);
|
||||
dmaor_write_reg(no, dmaor);
|
||||
|
||||
dmaor |= DMAOR_INIT;
|
||||
dmaor_write_reg(dmaor);
|
||||
dmaor_write_reg(no, dmaor);
|
||||
|
||||
/* See if we got an error again */
|
||||
if ((dmaor_read_reg() & (DMAOR_AE | DMAOR_NMIF))) {
|
||||
if ((dmaor_read_reg(no) & (DMAOR_AE | DMAOR_NMIF))) {
|
||||
printk(KERN_ERR "dma-sh: Can't initialize DMAOR.\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
|
@ -237,10 +228,33 @@ static inline int dmaor_reset(void)
|
|||
#if defined(CONFIG_CPU_SH4)
|
||||
static irqreturn_t dma_err(int irq, void *dummy)
|
||||
{
|
||||
dmaor_reset();
|
||||
#if defined(CONFIG_SH_DMA_IRQ_MULTI)
|
||||
int cnt = 0;
|
||||
switch (irq) {
|
||||
#if defined(DMTE6_IRQ) && defined(DMAE1_IRQ)
|
||||
case DMTE6_IRQ:
|
||||
cnt++;
|
||||
#endif
|
||||
case DMTE0_IRQ:
|
||||
if (dmaor_read_reg(cnt) & (DMAOR_NMIF | DMAOR_AE)) {
|
||||
disable_irq(irq);
|
||||
/* DMA multi and error IRQ */
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
default:
|
||||
return IRQ_NONE;
|
||||
}
|
||||
#else
|
||||
dmaor_reset(0);
|
||||
#if defined(CONFIG_CPU_SUBTYPE_SH7723) || \
|
||||
defined(CONFIG_CPU_SUBTYPE_SH7780) || \
|
||||
defined(CONFIG_CPU_SUBTYPE_SH7785)
|
||||
dmaor_reset(1);
|
||||
#endif
|
||||
disable_irq(irq);
|
||||
|
||||
return IRQ_HANDLED;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -259,24 +273,59 @@ static struct dma_info sh_dmac_info = {
|
|||
.flags = DMAC_CHANNELS_TEI_CAPABLE,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_CPU_SH4
|
||||
static unsigned int get_dma_error_irq(int n)
|
||||
{
|
||||
#if defined(CONFIG_SH_DMA_IRQ_MULTI)
|
||||
return (n == 0) ? get_dmte_irq(0) : get_dmte_irq(6);
|
||||
#else
|
||||
return (n == 0) ? DMAE0_IRQ :
|
||||
#if defined(DMAE1_IRQ)
|
||||
DMAE1_IRQ;
|
||||
#else
|
||||
-1;
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
static int __init sh_dmac_init(void)
|
||||
{
|
||||
struct dma_info *info = &sh_dmac_info;
|
||||
int i;
|
||||
|
||||
#ifdef CONFIG_CPU_SH4
|
||||
i = request_irq(DMAE_IRQ, dma_err, IRQF_DISABLED, "DMAC Address Error", 0);
|
||||
if (unlikely(i < 0))
|
||||
return i;
|
||||
int n;
|
||||
|
||||
for (n = 0; n < NR_DMAE; n++) {
|
||||
i = request_irq(get_dma_error_irq(n), dma_err,
|
||||
#if defined(CONFIG_SH_DMA_IRQ_MULTI)
|
||||
IRQF_SHARED,
|
||||
#else
|
||||
IRQF_DISABLED,
|
||||
#endif
|
||||
dmae_name[n], (void *)dmae_name[n]);
|
||||
if (unlikely(i < 0)) {
|
||||
printk(KERN_ERR "%s request_irq fail\n", dmae_name[n]);
|
||||
return i;
|
||||
}
|
||||
}
|
||||
#endif /* CONFIG_CPU_SH4 */
|
||||
|
||||
/*
|
||||
* Initialize DMAOR, and clean up any error flags that may have
|
||||
* been set.
|
||||
*/
|
||||
i = dmaor_reset();
|
||||
i = dmaor_reset(0);
|
||||
if (unlikely(i != 0))
|
||||
return i;
|
||||
#if defined(CONFIG_CPU_SUBTYPE_SH7723) || \
|
||||
defined(CONFIG_CPU_SUBTYPE_SH7780) || \
|
||||
defined(CONFIG_CPU_SUBTYPE_SH7785)
|
||||
i = dmaor_reset(1);
|
||||
if (unlikely(i != 0))
|
||||
return i;
|
||||
#endif
|
||||
|
||||
return register_dmac(info);
|
||||
}
|
||||
|
|
@ -284,8 +333,12 @@ static int __init sh_dmac_init(void)
|
|||
static void __exit sh_dmac_exit(void)
|
||||
{
|
||||
#ifdef CONFIG_CPU_SH4
|
||||
free_irq(DMAE_IRQ, 0);
|
||||
#endif
|
||||
int n;
|
||||
|
||||
for (n = 0; n < NR_DMAE; n++) {
|
||||
free_irq(get_dma_error_irq(n), (void *)dmae_name[n]);
|
||||
}
|
||||
#endif /* CONFIG_CPU_SH4 */
|
||||
unregister_dmac(&sh_dmac_info);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,75 +0,0 @@
|
|||
/*
|
||||
* arch/sh/drivers/dma/dma-sh.h
|
||||
*
|
||||
* Copyright (C) 2000 Takashi YOSHII
|
||||
* Copyright (C) 2003 Paul Mundt
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*/
|
||||
#ifndef __DMA_SH_H
|
||||
#define __DMA_SH_H
|
||||
|
||||
#include <cpu/dma.h>
|
||||
|
||||
/* Definitions for the SuperH DMAC */
|
||||
#define REQ_L 0x00000000
|
||||
#define REQ_E 0x00080000
|
||||
#define RACK_H 0x00000000
|
||||
#define RACK_L 0x00040000
|
||||
#define ACK_R 0x00000000
|
||||
#define ACK_W 0x00020000
|
||||
#define ACK_H 0x00000000
|
||||
#define ACK_L 0x00010000
|
||||
#define DM_INC 0x00004000
|
||||
#define DM_DEC 0x00008000
|
||||
#define SM_INC 0x00001000
|
||||
#define SM_DEC 0x00002000
|
||||
#define RS_IN 0x00000200
|
||||
#define RS_OUT 0x00000300
|
||||
#define TS_BLK 0x00000040
|
||||
#define TM_BUR 0x00000020
|
||||
#define CHCR_DE 0x00000001
|
||||
#define CHCR_TE 0x00000002
|
||||
#define CHCR_IE 0x00000004
|
||||
|
||||
/* DMAOR definitions */
|
||||
#define DMAOR_AE 0x00000004
|
||||
#define DMAOR_NMIF 0x00000002
|
||||
#define DMAOR_DME 0x00000001
|
||||
|
||||
/*
|
||||
* Define the default configuration for dual address memory-memory transfer.
|
||||
* The 0x400 value represents auto-request, external->external.
|
||||
*/
|
||||
#define RS_DUAL (DM_INC | SM_INC | 0x400 | TS_32)
|
||||
|
||||
#define MAX_DMAC_CHANNELS (CONFIG_NR_ONCHIP_DMA_CHANNELS)
|
||||
|
||||
/*
|
||||
* Subtypes that have fewer channels than this simply need to change
|
||||
* CONFIG_NR_ONCHIP_DMA_CHANNELS. Likewise, subtypes with a larger number
|
||||
* of channels should expand on this.
|
||||
*
|
||||
* For most subtypes we can easily figure these values out with some
|
||||
* basic calculation, unfortunately on other subtypes these are more
|
||||
* scattered, so we just leave it unrolled for simplicity.
|
||||
*/
|
||||
#define SAR ((unsigned long[]){SH_DMAC_BASE + 0x00, SH_DMAC_BASE + 0x10, \
|
||||
SH_DMAC_BASE + 0x20, SH_DMAC_BASE + 0x30, \
|
||||
SH_DMAC_BASE + 0x50, SH_DMAC_BASE + 0x60})
|
||||
#define DAR ((unsigned long[]){SH_DMAC_BASE + 0x04, SH_DMAC_BASE + 0x14, \
|
||||
SH_DMAC_BASE + 0x24, SH_DMAC_BASE + 0x34, \
|
||||
SH_DMAC_BASE + 0x54, SH_DMAC_BASE + 0x64})
|
||||
#define DMATCR ((unsigned long[]){SH_DMAC_BASE + 0x08, SH_DMAC_BASE + 0x18, \
|
||||
SH_DMAC_BASE + 0x28, SH_DMAC_BASE + 0x38, \
|
||||
SH_DMAC_BASE + 0x58, SH_DMAC_BASE + 0x68})
|
||||
#define CHCR ((unsigned long[]){SH_DMAC_BASE + 0x0c, SH_DMAC_BASE + 0x1c, \
|
||||
SH_DMAC_BASE + 0x2c, SH_DMAC_BASE + 0x3c, \
|
||||
SH_DMAC_BASE + 0x5c, SH_DMAC_BASE + 0x6c})
|
||||
|
||||
#define DMAOR (SH_DMAC_BASE + 0x40)
|
||||
|
||||
#endif /* __DMA_SH_H */
|
||||
|
||||
|
|
@ -127,8 +127,8 @@ int __init sh7780_pcic_init(struct sh4_pci_address_map *map)
|
|||
pci_write_reg(word, SH4_PCILSR0);
|
||||
pci_write_reg(0x00000001, SH4_PCILSR1);
|
||||
/* Set the values on window 0 PCI config registers */
|
||||
word = (CONFIG_MEMORY_SIZE > 0x08000000) ? 0x10000000 : 0x08000000;
|
||||
pci_write_reg(word | 0xa0000000, SH4_PCILAR0);
|
||||
word = CONFIG_MEMORY_START | (CONFIG_MEMORY_SIZE - 0x01000000);
|
||||
pci_write_reg(word, SH4_PCILAR0);
|
||||
pci_write_reg(word, SH7780_PCIMBAR0);
|
||||
/* Set the values on window 1 PCI config registers */
|
||||
pci_write_reg(0x00000000, SH4_PCILAR1);
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@
|
|||
/* Returns the physical address of a PnSEG (n=1,2) address */
|
||||
#define PHYSADDR(a) (((unsigned long)(a)) & 0x1fffffff)
|
||||
|
||||
#ifdef CONFIG_29BIT
|
||||
#if defined(CONFIG_29BIT) || defined(CONFIG_PMB_FIXED)
|
||||
/*
|
||||
* Map an address to a certain privileged segment
|
||||
*/
|
||||
|
|
@ -43,7 +43,7 @@
|
|||
((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | P3SEG))
|
||||
#define P4SEGADDR(a) \
|
||||
((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | P4SEG))
|
||||
#endif /* 29BIT */
|
||||
#endif /* 29BIT || PMB_FIXED */
|
||||
#endif /* P1SEG */
|
||||
|
||||
/* Check if an address can be reached in 29 bits */
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ static inline void atomic_add(int i, atomic_t *v)
|
|||
unsigned long flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
*(long *)v += i;
|
||||
v->counter += i;
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
|
|
@ -20,7 +20,7 @@ static inline void atomic_sub(int i, atomic_t *v)
|
|||
unsigned long flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
*(long *)v -= i;
|
||||
v->counter -= i;
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
|
|
@ -29,9 +29,9 @@ static inline int atomic_add_return(int i, atomic_t *v)
|
|||
unsigned long temp, flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
temp = *(long *)v;
|
||||
temp = v->counter;
|
||||
temp += i;
|
||||
*(long *)v = temp;
|
||||
v->counter = temp;
|
||||
local_irq_restore(flags);
|
||||
|
||||
return temp;
|
||||
|
|
@ -42,9 +42,9 @@ static inline int atomic_sub_return(int i, atomic_t *v)
|
|||
unsigned long temp, flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
temp = *(long *)v;
|
||||
temp = v->counter;
|
||||
temp -= i;
|
||||
*(long *)v = temp;
|
||||
v->counter = temp;
|
||||
local_irq_restore(flags);
|
||||
|
||||
return temp;
|
||||
|
|
@ -55,7 +55,7 @@ static inline void atomic_clear_mask(unsigned int mask, atomic_t *v)
|
|||
unsigned long flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
*(long *)v &= ~mask;
|
||||
v->counter &= ~mask;
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
|
|
@ -64,7 +64,7 @@ static inline void atomic_set_mask(unsigned int mask, atomic_t *v)
|
|||
unsigned long flags;
|
||||
|
||||
local_irq_save(flags);
|
||||
*(long *)v |= mask;
|
||||
v->counter |= mask;
|
||||
local_irq_restore(flags);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#ifndef __ASM_SH_BITOPS_LLSC_H
|
||||
#define __ASM_SH_BITOPS_LLSC_H
|
||||
|
||||
static inline void set_bit(int nr, volatile void * addr)
|
||||
static inline void set_bit(int nr, volatile void *addr)
|
||||
{
|
||||
int mask;
|
||||
volatile unsigned int *a = addr;
|
||||
|
|
@ -13,16 +13,16 @@ static inline void set_bit(int nr, volatile void * addr)
|
|||
__asm__ __volatile__ (
|
||||
"1: \n\t"
|
||||
"movli.l @%1, %0 ! set_bit \n\t"
|
||||
"or %3, %0 \n\t"
|
||||
"or %2, %0 \n\t"
|
||||
"movco.l %0, @%1 \n\t"
|
||||
"bf 1b \n\t"
|
||||
: "=&z" (tmp), "=r" (a)
|
||||
: "1" (a), "r" (mask)
|
||||
: "=&z" (tmp)
|
||||
: "r" (a), "r" (mask)
|
||||
: "t", "memory"
|
||||
);
|
||||
}
|
||||
|
||||
static inline void clear_bit(int nr, volatile void * addr)
|
||||
static inline void clear_bit(int nr, volatile void *addr)
|
||||
{
|
||||
int mask;
|
||||
volatile unsigned int *a = addr;
|
||||
|
|
@ -34,16 +34,16 @@ static inline void clear_bit(int nr, volatile void * addr)
|
|||
__asm__ __volatile__ (
|
||||
"1: \n\t"
|
||||
"movli.l @%1, %0 ! clear_bit \n\t"
|
||||
"and %3, %0 \n\t"
|
||||
"and %2, %0 \n\t"
|
||||
"movco.l %0, @%1 \n\t"
|
||||
"bf 1b \n\t"
|
||||
: "=&z" (tmp), "=r" (a)
|
||||
: "1" (a), "r" (~mask)
|
||||
: "=&z" (tmp)
|
||||
: "r" (a), "r" (~mask)
|
||||
: "t", "memory"
|
||||
);
|
||||
}
|
||||
|
||||
static inline void change_bit(int nr, volatile void * addr)
|
||||
static inline void change_bit(int nr, volatile void *addr)
|
||||
{
|
||||
int mask;
|
||||
volatile unsigned int *a = addr;
|
||||
|
|
@ -55,86 +55,86 @@ static inline void change_bit(int nr, volatile void * addr)
|
|||
__asm__ __volatile__ (
|
||||
"1: \n\t"
|
||||
"movli.l @%1, %0 ! change_bit \n\t"
|
||||
"xor %2, %0 \n\t"
|
||||
"movco.l %0, @%1 \n\t"
|
||||
"bf 1b \n\t"
|
||||
: "=&z" (tmp)
|
||||
: "r" (a), "r" (mask)
|
||||
: "t", "memory"
|
||||
);
|
||||
}
|
||||
|
||||
static inline int test_and_set_bit(int nr, volatile void *addr)
|
||||
{
|
||||
int mask, retval;
|
||||
volatile unsigned int *a = addr;
|
||||
unsigned long tmp;
|
||||
|
||||
a += nr >> 5;
|
||||
mask = 1 << (nr & 0x1f);
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"1: \n\t"
|
||||
"movli.l @%2, %0 ! test_and_set_bit \n\t"
|
||||
"mov %0, %1 \n\t"
|
||||
"or %3, %0 \n\t"
|
||||
"movco.l %0, @%2 \n\t"
|
||||
"bf 1b \n\t"
|
||||
"and %3, %1 \n\t"
|
||||
: "=&z" (tmp), "=&r" (retval)
|
||||
: "r" (a), "r" (mask)
|
||||
: "t", "memory"
|
||||
);
|
||||
|
||||
return retval != 0;
|
||||
}
|
||||
|
||||
static inline int test_and_clear_bit(int nr, volatile void *addr)
|
||||
{
|
||||
int mask, retval;
|
||||
volatile unsigned int *a = addr;
|
||||
unsigned long tmp;
|
||||
|
||||
a += nr >> 5;
|
||||
mask = 1 << (nr & 0x1f);
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"1: \n\t"
|
||||
"movli.l @%2, %0 ! test_and_clear_bit \n\t"
|
||||
"mov %0, %1 \n\t"
|
||||
"and %4, %0 \n\t"
|
||||
"movco.l %0, @%2 \n\t"
|
||||
"bf 1b \n\t"
|
||||
"and %3, %1 \n\t"
|
||||
"synco \n\t"
|
||||
: "=&z" (tmp), "=&r" (retval)
|
||||
: "r" (a), "r" (mask), "r" (~mask)
|
||||
: "t", "memory"
|
||||
);
|
||||
|
||||
return retval != 0;
|
||||
}
|
||||
|
||||
static inline int test_and_change_bit(int nr, volatile void *addr)
|
||||
{
|
||||
int mask, retval;
|
||||
volatile unsigned int *a = addr;
|
||||
unsigned long tmp;
|
||||
|
||||
a += nr >> 5;
|
||||
mask = 1 << (nr & 0x1f);
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"1: \n\t"
|
||||
"movli.l @%2, %0 ! test_and_change_bit \n\t"
|
||||
"mov %0, %1 \n\t"
|
||||
"xor %3, %0 \n\t"
|
||||
"movco.l %0, @%1 \n\t"
|
||||
"movco.l %0, @%2 \n\t"
|
||||
"bf 1b \n\t"
|
||||
: "=&z" (tmp), "=r" (a)
|
||||
: "1" (a), "r" (mask)
|
||||
: "t", "memory"
|
||||
);
|
||||
}
|
||||
|
||||
static inline int test_and_set_bit(int nr, volatile void * addr)
|
||||
{
|
||||
int mask, retval;
|
||||
volatile unsigned int *a = addr;
|
||||
unsigned long tmp;
|
||||
|
||||
a += nr >> 5;
|
||||
mask = 1 << (nr & 0x1f);
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"1: \n\t"
|
||||
"movli.l @%1, %0 ! test_and_set_bit \n\t"
|
||||
"mov %0, %2 \n\t"
|
||||
"or %4, %0 \n\t"
|
||||
"movco.l %0, @%1 \n\t"
|
||||
"bf 1b \n\t"
|
||||
"and %4, %2 \n\t"
|
||||
: "=&z" (tmp), "=r" (a), "=&r" (retval)
|
||||
: "1" (a), "r" (mask)
|
||||
: "t", "memory"
|
||||
);
|
||||
|
||||
return retval != 0;
|
||||
}
|
||||
|
||||
static inline int test_and_clear_bit(int nr, volatile void * addr)
|
||||
{
|
||||
int mask, retval;
|
||||
volatile unsigned int *a = addr;
|
||||
unsigned long tmp;
|
||||
|
||||
a += nr >> 5;
|
||||
mask = 1 << (nr & 0x1f);
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"1: \n\t"
|
||||
"movli.l @%1, %0 ! test_and_clear_bit \n\t"
|
||||
"mov %0, %2 \n\t"
|
||||
"and %5, %0 \n\t"
|
||||
"movco.l %0, @%1 \n\t"
|
||||
"bf 1b \n\t"
|
||||
"and %4, %2 \n\t"
|
||||
"and %3, %1 \n\t"
|
||||
"synco \n\t"
|
||||
: "=&z" (tmp), "=r" (a), "=&r" (retval)
|
||||
: "1" (a), "r" (mask), "r" (~mask)
|
||||
: "t", "memory"
|
||||
);
|
||||
|
||||
return retval != 0;
|
||||
}
|
||||
|
||||
static inline int test_and_change_bit(int nr, volatile void * addr)
|
||||
{
|
||||
int mask, retval;
|
||||
volatile unsigned int *a = addr;
|
||||
unsigned long tmp;
|
||||
|
||||
a += nr >> 5;
|
||||
mask = 1 << (nr & 0x1f);
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"1: \n\t"
|
||||
"movli.l @%1, %0 ! test_and_change_bit \n\t"
|
||||
"mov %0, %2 \n\t"
|
||||
"xor %4, %0 \n\t"
|
||||
"movco.l %0, @%1 \n\t"
|
||||
"bf 1b \n\t"
|
||||
"and %4, %2 \n\t"
|
||||
"synco \n\t"
|
||||
: "=&z" (tmp), "=r" (a), "=&r" (retval)
|
||||
: "1" (a), "r" (mask)
|
||||
: "=&z" (tmp), "=&r" (retval)
|
||||
: "r" (a), "r" (mask)
|
||||
: "t", "memory"
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ struct clk_ops {
|
|||
void (*disable)(struct clk *clk);
|
||||
void (*recalc)(struct clk *clk);
|
||||
int (*set_rate)(struct clk *clk, unsigned long rate, int algo_id);
|
||||
int (*set_parent)(struct clk *clk, struct clk *parent);
|
||||
long (*round_rate)(struct clk *clk, unsigned long rate);
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -8,14 +8,14 @@ static inline unsigned long xchg_u32(volatile u32 *m, unsigned long val)
|
|||
|
||||
__asm__ __volatile__ (
|
||||
"1: \n\t"
|
||||
"movli.l @%1, %0 ! xchg_u32 \n\t"
|
||||
"mov %0, %2 \n\t"
|
||||
"mov %4, %0 \n\t"
|
||||
"movco.l %0, @%1 \n\t"
|
||||
"movli.l @%2, %0 ! xchg_u32 \n\t"
|
||||
"mov %0, %1 \n\t"
|
||||
"mov %3, %0 \n\t"
|
||||
"movco.l %0, @%2 \n\t"
|
||||
"bf 1b \n\t"
|
||||
"synco \n\t"
|
||||
: "=&z"(tmp), "=r" (m), "=&r" (retval)
|
||||
: "1" (m), "r" (val)
|
||||
: "=&z"(tmp), "=&r" (retval)
|
||||
: "r" (m), "r" (val)
|
||||
: "t", "memory"
|
||||
);
|
||||
|
||||
|
|
@ -29,14 +29,14 @@ static inline unsigned long xchg_u8(volatile u8 *m, unsigned long val)
|
|||
|
||||
__asm__ __volatile__ (
|
||||
"1: \n\t"
|
||||
"movli.l @%1, %0 ! xchg_u8 \n\t"
|
||||
"mov %0, %2 \n\t"
|
||||
"mov %4, %0 \n\t"
|
||||
"movco.l %0, @%1 \n\t"
|
||||
"movli.l @%2, %0 ! xchg_u8 \n\t"
|
||||
"mov %0, %1 \n\t"
|
||||
"mov %3, %0 \n\t"
|
||||
"movco.l %0, @%2 \n\t"
|
||||
"bf 1b \n\t"
|
||||
"synco \n\t"
|
||||
: "=&z"(tmp), "=r" (m), "=&r" (retval)
|
||||
: "1" (m), "r" (val & 0xff)
|
||||
: "=&z"(tmp), "=&r" (retval)
|
||||
: "r" (m), "r" (val & 0xff)
|
||||
: "t", "memory"
|
||||
);
|
||||
|
||||
|
|
@ -51,17 +51,17 @@ __cmpxchg_u32(volatile int *m, unsigned long old, unsigned long new)
|
|||
|
||||
__asm__ __volatile__ (
|
||||
"1: \n\t"
|
||||
"movli.l @%1, %0 ! __cmpxchg_u32 \n\t"
|
||||
"mov %0, %2 \n\t"
|
||||
"cmp/eq %2, %4 \n\t"
|
||||
"movli.l @%2, %0 ! __cmpxchg_u32 \n\t"
|
||||
"mov %0, %1 \n\t"
|
||||
"cmp/eq %1, %3 \n\t"
|
||||
"bf 2f \n\t"
|
||||
"mov %5, %0 \n\t"
|
||||
"mov %3, %0 \n\t"
|
||||
"2: \n\t"
|
||||
"movco.l %0, @%1 \n\t"
|
||||
"movco.l %0, @%2 \n\t"
|
||||
"bf 1b \n\t"
|
||||
"synco \n\t"
|
||||
: "=&z" (tmp), "=r" (m), "=&r" (retval)
|
||||
: "1" (m), "r" (old), "r" (new)
|
||||
: "=&z" (tmp), "=&r" (retval)
|
||||
: "r" (m), "r" (old), "r" (new)
|
||||
: "t", "memory"
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -21,5 +21,6 @@
|
|||
#define CPU_HAS_LLSC 0x0040 /* movli.l/movco.l */
|
||||
#define CPU_HAS_L2_CACHE 0x0080 /* Secondary cache / URAM */
|
||||
#define CPU_HAS_OP32 0x0100 /* 32-bit instruction support */
|
||||
#define CPU_HAS_PTEAEX 0x0200 /* PTE ASID Extension support */
|
||||
|
||||
#endif /* __ASM_SH_CPU_FEATURES_H */
|
||||
|
|
|
|||
118
arch/sh/include/asm/dma-sh.h
Normal file
118
arch/sh/include/asm/dma-sh.h
Normal file
|
|
@ -0,0 +1,118 @@
|
|||
/*
|
||||
* arch/sh/include/asm/dma-sh.h
|
||||
*
|
||||
* Copyright (C) 2000 Takashi YOSHII
|
||||
* Copyright (C) 2003 Paul Mundt
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General Public
|
||||
* License. See the file "COPYING" in the main directory of this archive
|
||||
* for more details.
|
||||
*/
|
||||
#ifndef __DMA_SH_H
|
||||
#define __DMA_SH_H
|
||||
|
||||
#include <asm/dma.h>
|
||||
#include <cpu/dma.h>
|
||||
|
||||
/* DMAOR contorl: The DMAOR access size is different by CPU.*/
|
||||
#if defined(CONFIG_CPU_SUBTYPE_SH7723) || \
|
||||
defined(CONFIG_CPU_SUBTYPE_SH7780) || \
|
||||
defined(CONFIG_CPU_SUBTYPE_SH7785)
|
||||
#define dmaor_read_reg(n) \
|
||||
(n ? ctrl_inw(SH_DMAC_BASE1 + DMAOR) \
|
||||
: ctrl_inw(SH_DMAC_BASE0 + DMAOR))
|
||||
#define dmaor_write_reg(n, data) \
|
||||
(n ? ctrl_outw(data, SH_DMAC_BASE1 + DMAOR) \
|
||||
: ctrl_outw(data, SH_DMAC_BASE0 + DMAOR))
|
||||
#else /* Other CPU */
|
||||
#define dmaor_read_reg(n) ctrl_inw(SH_DMAC_BASE0 + DMAOR)
|
||||
#define dmaor_write_reg(n, data) ctrl_outw(data, SH_DMAC_BASE0 + DMAOR)
|
||||
#endif
|
||||
|
||||
static int dmte_irq_map[] __maybe_unused = {
|
||||
#if (MAX_DMA_CHANNELS >= 4)
|
||||
DMTE0_IRQ,
|
||||
DMTE0_IRQ + 1,
|
||||
DMTE0_IRQ + 2,
|
||||
DMTE0_IRQ + 3,
|
||||
#endif
|
||||
#if (MAX_DMA_CHANNELS >= 6)
|
||||
DMTE4_IRQ,
|
||||
DMTE4_IRQ + 1,
|
||||
#endif
|
||||
#if (MAX_DMA_CHANNELS >= 8)
|
||||
DMTE6_IRQ,
|
||||
DMTE6_IRQ + 1,
|
||||
#endif
|
||||
#if (MAX_DMA_CHANNELS >= 12)
|
||||
DMTE8_IRQ,
|
||||
DMTE9_IRQ,
|
||||
DMTE10_IRQ,
|
||||
DMTE11_IRQ,
|
||||
#endif
|
||||
};
|
||||
|
||||
/* Definitions for the SuperH DMAC */
|
||||
#define REQ_L 0x00000000
|
||||
#define REQ_E 0x00080000
|
||||
#define RACK_H 0x00000000
|
||||
#define RACK_L 0x00040000
|
||||
#define ACK_R 0x00000000
|
||||
#define ACK_W 0x00020000
|
||||
#define ACK_H 0x00000000
|
||||
#define ACK_L 0x00010000
|
||||
#define DM_INC 0x00004000
|
||||
#define DM_DEC 0x00008000
|
||||
#define SM_INC 0x00001000
|
||||
#define SM_DEC 0x00002000
|
||||
#define RS_IN 0x00000200
|
||||
#define RS_OUT 0x00000300
|
||||
#define TS_BLK 0x00000040
|
||||
#define TM_BUR 0x00000020
|
||||
#define CHCR_DE 0x00000001
|
||||
#define CHCR_TE 0x00000002
|
||||
#define CHCR_IE 0x00000004
|
||||
|
||||
/* DMAOR definitions */
|
||||
#define DMAOR_AE 0x00000004
|
||||
#define DMAOR_NMIF 0x00000002
|
||||
#define DMAOR_DME 0x00000001
|
||||
|
||||
/*
|
||||
* Define the default configuration for dual address memory-memory transfer.
|
||||
* The 0x400 value represents auto-request, external->external.
|
||||
*/
|
||||
#define RS_DUAL (DM_INC | SM_INC | 0x400 | TS_32)
|
||||
|
||||
/* DMA base address */
|
||||
static u32 dma_base_addr[] __maybe_unused = {
|
||||
#if (MAX_DMA_CHANNELS >= 4)
|
||||
SH_DMAC_BASE0 + 0x00, /* channel 0 */
|
||||
SH_DMAC_BASE0 + 0x10,
|
||||
SH_DMAC_BASE0 + 0x20,
|
||||
SH_DMAC_BASE0 + 0x30,
|
||||
#endif
|
||||
#if (MAX_DMA_CHANNELS >= 6)
|
||||
SH_DMAC_BASE0 + 0x50,
|
||||
SH_DMAC_BASE0 + 0x60,
|
||||
#endif
|
||||
#if (MAX_DMA_CHANNELS >= 8)
|
||||
SH_DMAC_BASE1 + 0x00,
|
||||
SH_DMAC_BASE1 + 0x10,
|
||||
#endif
|
||||
#if (MAX_DMA_CHANNELS >= 12)
|
||||
SH_DMAC_BASE1 + 0x20,
|
||||
SH_DMAC_BASE1 + 0x30,
|
||||
SH_DMAC_BASE1 + 0x50,
|
||||
SH_DMAC_BASE1 + 0x60, /* channel 11 */
|
||||
#endif
|
||||
};
|
||||
|
||||
/* DMA register */
|
||||
#define SAR 0x00
|
||||
#define DAR 0x04
|
||||
#define TCR 0x08
|
||||
#define CHCR 0x0C
|
||||
#define DMAOR 0x40
|
||||
|
||||
#endif /* __DMA_SH_H */
|
||||
|
|
@ -25,9 +25,9 @@
|
|||
#define MAX_DMA_ADDRESS (PAGE_OFFSET+0x10000000)
|
||||
|
||||
#ifdef CONFIG_NR_DMA_CHANNELS
|
||||
# define MAX_DMA_CHANNELS (CONFIG_NR_DMA_CHANNELS)
|
||||
# define MAX_DMA_CHANNELS (CONFIG_NR_DMA_CHANNELS)
|
||||
#else
|
||||
# define MAX_DMA_CHANNELS (CONFIG_NR_ONCHIP_DMA_CHANNELS)
|
||||
# define MAX_DMA_CHANNELS (CONFIG_NR_ONCHIP_DMA_CHANNELS)
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -31,3 +31,8 @@
|
|||
#endif
|
||||
.endm
|
||||
|
||||
#if defined(CONFIG_CPU_SH2A) || defined(CONFIG_CPU_SH4)
|
||||
# define PREF(x) pref @x
|
||||
#else
|
||||
# define PREF(x) nop
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -19,8 +19,42 @@
|
|||
#include <cpu/gpio.h>
|
||||
#endif
|
||||
|
||||
#define ARCH_NR_GPIOS 512
|
||||
#include <asm-generic/gpio.h>
|
||||
|
||||
#ifdef CONFIG_GPIOLIB
|
||||
|
||||
static inline int gpio_get_value(unsigned gpio)
|
||||
{
|
||||
return __gpio_get_value(gpio);
|
||||
}
|
||||
|
||||
static inline void gpio_set_value(unsigned gpio, int value)
|
||||
{
|
||||
__gpio_set_value(gpio, value);
|
||||
}
|
||||
|
||||
static inline int gpio_cansleep(unsigned gpio)
|
||||
{
|
||||
return __gpio_cansleep(gpio);
|
||||
}
|
||||
|
||||
static inline int gpio_to_irq(unsigned gpio)
|
||||
{
|
||||
WARN_ON(1);
|
||||
return -ENOSYS;
|
||||
}
|
||||
|
||||
static inline int irq_to_gpio(unsigned int irq)
|
||||
{
|
||||
WARN_ON(1);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_GPIOLIB */
|
||||
|
||||
typedef unsigned short pinmux_enum_t;
|
||||
typedef unsigned char pinmux_flag_t;
|
||||
typedef unsigned short pinmux_flag_t;
|
||||
|
||||
#define PINMUX_TYPE_NONE 0
|
||||
#define PINMUX_TYPE_FUNCTION 1
|
||||
|
|
@ -34,6 +68,11 @@ typedef unsigned char pinmux_flag_t;
|
|||
#define PINMUX_FLAG_WANT_PULLUP (1 << 3)
|
||||
#define PINMUX_FLAG_WANT_PULLDOWN (1 << 4)
|
||||
|
||||
#define PINMUX_FLAG_DBIT_SHIFT 5
|
||||
#define PINMUX_FLAG_DBIT (0x1f << PINMUX_FLAG_DBIT_SHIFT)
|
||||
#define PINMUX_FLAG_DREG_SHIFT 10
|
||||
#define PINMUX_FLAG_DREG (0x3f << PINMUX_FLAG_DREG_SHIFT)
|
||||
|
||||
struct pinmux_gpio {
|
||||
pinmux_enum_t enum_id;
|
||||
pinmux_flag_t flags;
|
||||
|
|
@ -54,7 +93,7 @@ struct pinmux_cfg_reg {
|
|||
.enum_ids = (pinmux_enum_t [(r_width / f_width) * (1 << f_width)]) \
|
||||
|
||||
struct pinmux_data_reg {
|
||||
unsigned long reg, reg_width;
|
||||
unsigned long reg, reg_width, reg_shadow;
|
||||
pinmux_enum_t *enum_ids;
|
||||
};
|
||||
|
||||
|
|
@ -89,34 +128,9 @@ struct pinmux_info {
|
|||
unsigned int gpio_data_size;
|
||||
|
||||
unsigned long *gpio_in_use;
|
||||
struct gpio_chip chip;
|
||||
};
|
||||
|
||||
int register_pinmux(struct pinmux_info *pip);
|
||||
|
||||
int __gpio_request(unsigned gpio);
|
||||
static inline int gpio_request(unsigned gpio, const char *label)
|
||||
{
|
||||
return __gpio_request(gpio);
|
||||
}
|
||||
void gpio_free(unsigned gpio);
|
||||
int gpio_direction_input(unsigned gpio);
|
||||
int gpio_direction_output(unsigned gpio, int value);
|
||||
int gpio_get_value(unsigned gpio);
|
||||
void gpio_set_value(unsigned gpio, int value);
|
||||
|
||||
/* IRQ modes are unspported */
|
||||
static inline int gpio_to_irq(unsigned gpio)
|
||||
{
|
||||
WARN_ON(1);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline int irq_to_gpio(unsigned irq)
|
||||
{
|
||||
WARN_ON(1);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
#include <asm-generic/gpio.h>
|
||||
|
||||
#endif /* __ASM_SH_GPIO_H */
|
||||
|
|
|
|||
|
|
@ -242,7 +242,6 @@
|
|||
#include <asm/io_generic.h>
|
||||
|
||||
/* arch/sh/cchips/hd6446x/hd64461/setup.c */
|
||||
int hd64461_irq_demux(int irq);
|
||||
void hd64461_register_irq_demux(int irq,
|
||||
int (*demux) (int irq, void *dev), void *dev);
|
||||
void hd64461_unregister_irq_demux(int irq);
|
||||
|
|
|
|||
|
|
@ -238,7 +238,7 @@ extern void onchip_unmap(unsigned long vaddr);
|
|||
static inline void __iomem *
|
||||
__ioremap_mode(unsigned long offset, unsigned long size, unsigned long flags)
|
||||
{
|
||||
#ifdef CONFIG_SUPERH32
|
||||
#if defined(CONFIG_SUPERH32) && !defined(CONFIG_PMB_FIXED)
|
||||
unsigned long last_addr = offset + size - 1;
|
||||
#endif
|
||||
void __iomem *ret;
|
||||
|
|
@ -247,7 +247,7 @@ __ioremap_mode(unsigned long offset, unsigned long size, unsigned long flags)
|
|||
if (ret)
|
||||
return ret;
|
||||
|
||||
#ifdef CONFIG_SUPERH32
|
||||
#if defined(CONFIG_SUPERH32) && !defined(CONFIG_PMB_FIXED)
|
||||
/*
|
||||
* For P1 and P2 space this is trivial, as everything is already
|
||||
* mapped. Uncached access for P1 addresses are done through P2.
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ typedef u16 kprobe_opcode_t;
|
|||
? (MAX_STACK_SIZE) \
|
||||
: (((unsigned long)current_thread_info()) + THREAD_SIZE - (ADDR)))
|
||||
|
||||
#define regs_return_value(regs) ((regs)->regs[0])
|
||||
#define regs_return_value(_regs) ((_regs)->regs[0])
|
||||
#define flush_insn_slot(p) do { } while (0)
|
||||
#define kretprobe_blacklist_size 0
|
||||
|
||||
|
|
|
|||
|
|
@ -19,13 +19,18 @@
|
|||
* (a) TLB cache version (or round, cycle whatever expression you like)
|
||||
* (b) ASID (Address Space IDentifier)
|
||||
*/
|
||||
#ifdef CONFIG_CPU_HAS_PTEAEX
|
||||
#define MMU_CONTEXT_ASID_MASK 0x0000ffff
|
||||
#else
|
||||
#define MMU_CONTEXT_ASID_MASK 0x000000ff
|
||||
#define MMU_CONTEXT_VERSION_MASK 0xffffff00
|
||||
#define MMU_CONTEXT_FIRST_VERSION 0x00000100
|
||||
#define NO_CONTEXT 0UL
|
||||
#endif
|
||||
|
||||
/* ASID is 8-bit value, so it can't be 0x100 */
|
||||
#define MMU_NO_ASID 0x100
|
||||
#define MMU_CONTEXT_VERSION_MASK (~0UL & ~MMU_CONTEXT_ASID_MASK)
|
||||
#define MMU_CONTEXT_FIRST_VERSION (MMU_CONTEXT_ASID_MASK + 1)
|
||||
|
||||
/* Impossible ASID value, to differentiate from NO_CONTEXT. */
|
||||
#define MMU_NO_ASID MMU_CONTEXT_FIRST_VERSION
|
||||
#define NO_CONTEXT 0UL
|
||||
|
||||
#define asid_cache(cpu) (cpu_data[cpu].asid_cache)
|
||||
|
||||
|
|
|
|||
|
|
@ -10,6 +10,17 @@ static inline void destroy_context(struct mm_struct *mm)
|
|||
/* Do nothing */
|
||||
}
|
||||
|
||||
#ifdef CONFIG_CPU_HAS_PTEAEX
|
||||
static inline void set_asid(unsigned long asid)
|
||||
{
|
||||
__raw_writel(asid, MMU_PTEAEX);
|
||||
}
|
||||
|
||||
static inline unsigned long get_asid(void)
|
||||
{
|
||||
return __raw_readl(MMU_PTEAEX) & MMU_CONTEXT_ASID_MASK;
|
||||
}
|
||||
#else
|
||||
static inline void set_asid(unsigned long asid)
|
||||
{
|
||||
unsigned long __dummy;
|
||||
|
|
@ -33,6 +44,7 @@ static inline unsigned long get_asid(void)
|
|||
asid &= MMU_CONTEXT_ASID_MASK;
|
||||
return asid;
|
||||
}
|
||||
#endif /* CONFIG_CPU_HAS_PTEAEX */
|
||||
|
||||
/* MMU_TTB is used for optimizing the fault handling. */
|
||||
static inline void set_TTB(pgd_t *pgd)
|
||||
|
|
|
|||
|
|
@ -129,7 +129,12 @@ typedef struct page *pgtable_t;
|
|||
* is not visible (it is part of the PMB mapping) and so needs to be
|
||||
* added or subtracted as required.
|
||||
*/
|
||||
#ifdef CONFIG_32BIT
|
||||
#if defined(CONFIG_PMB_FIXED)
|
||||
/* phys = virt - PAGE_OFFSET - (__MEMORY_START & 0xe0000000) */
|
||||
#define PMB_OFFSET (PAGE_OFFSET - PXSEG(__MEMORY_START))
|
||||
#define __pa(x) ((unsigned long)(x) - PMB_OFFSET)
|
||||
#define __va(x) ((void *)((unsigned long)(x) + PMB_OFFSET))
|
||||
#elif defined(CONFIG_32BIT)
|
||||
#define __pa(x) ((unsigned long)(x)-PAGE_OFFSET+__MEMORY_START)
|
||||
#define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET-__MEMORY_START))
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ enum cpu_type {
|
|||
CPU_SH7760, CPU_SH4_202, CPU_SH4_501,
|
||||
|
||||
/* SH-4A types */
|
||||
CPU_SH7763, CPU_SH7770, CPU_SH7780, CPU_SH7781, CPU_SH7785,
|
||||
CPU_SH7763, CPU_SH7770, CPU_SH7780, CPU_SH7781, CPU_SH7785, CPU_SH7786,
|
||||
CPU_SH7723, CPU_SHX3,
|
||||
|
||||
/* SH4AL-DSP types */
|
||||
|
|
|
|||
|
|
@ -108,12 +108,12 @@ extern int ubc_usercnt;
|
|||
/*
|
||||
* Do necessary setup to start up a newly executed thread.
|
||||
*/
|
||||
#define start_thread(regs, new_pc, new_sp) \
|
||||
#define start_thread(_regs, new_pc, new_sp) \
|
||||
set_fs(USER_DS); \
|
||||
regs->pr = 0; \
|
||||
regs->sr = SR_FD; /* User mode. */ \
|
||||
regs->pc = new_pc; \
|
||||
regs->regs[15] = new_sp
|
||||
_regs->pr = 0; \
|
||||
_regs->sr = SR_FD; /* User mode. */ \
|
||||
_regs->pc = new_pc; \
|
||||
_regs->regs[15] = new_sp
|
||||
|
||||
/* Forward declaration, a strange C thing */
|
||||
struct task_struct;
|
||||
|
|
@ -189,10 +189,9 @@ extern unsigned long get_wchan(struct task_struct *p);
|
|||
#define KSTK_EIP(tsk) (task_pt_regs(tsk)->pc)
|
||||
#define KSTK_ESP(tsk) (task_pt_regs(tsk)->regs[15])
|
||||
|
||||
#define user_stack_pointer(regs) ((regs)->regs[15])
|
||||
#define user_stack_pointer(_regs) ((_regs)->regs[15])
|
||||
|
||||
#if defined(CONFIG_CPU_SH2A) || defined(CONFIG_CPU_SH3) || \
|
||||
defined(CONFIG_CPU_SH4)
|
||||
#if defined(CONFIG_CPU_SH2A) || defined(CONFIG_CPU_SH4)
|
||||
#define PREFETCH_STRIDE L1_CACHE_BYTES
|
||||
#define ARCH_HAS_PREFETCH
|
||||
#define ARCH_HAS_PREFETCHW
|
||||
|
|
|
|||
|
|
@ -145,13 +145,13 @@ struct thread_struct {
|
|||
*/
|
||||
#define SR_USER (SR_MMU | SR_FD)
|
||||
|
||||
#define start_thread(regs, new_pc, new_sp) \
|
||||
#define start_thread(_regs, new_pc, new_sp) \
|
||||
set_fs(USER_DS); \
|
||||
regs->sr = SR_USER; /* User mode. */ \
|
||||
regs->pc = new_pc - 4; /* Compensate syscall exit */ \
|
||||
regs->pc |= 1; /* Set SHmedia ! */ \
|
||||
regs->regs[18] = 0; \
|
||||
regs->regs[15] = new_sp
|
||||
_regs->sr = SR_USER; /* User mode. */ \
|
||||
_regs->pc = new_pc - 4; /* Compensate syscall exit */ \
|
||||
_regs->pc |= 1; /* Set SHmedia ! */ \
|
||||
_regs->regs[18] = 0; \
|
||||
_regs->regs[15] = new_sp
|
||||
|
||||
/* Forward declaration, a strange C thing */
|
||||
struct task_struct;
|
||||
|
|
@ -226,7 +226,7 @@ extern unsigned long get_wchan(struct task_struct *p);
|
|||
#define KSTK_EIP(tsk) ((tsk)->thread.pc)
|
||||
#define KSTK_ESP(tsk) ((tsk)->thread.sp)
|
||||
|
||||
#define user_stack_pointer(regs) ((regs)->regs[15])
|
||||
#define user_stack_pointer(_regs) ((_regs)->regs[15])
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif /* __ASM_SH_PROCESSOR_64_H */
|
||||
|
|
|
|||
|
|
@ -122,14 +122,12 @@ extern void user_disable_single_step(struct task_struct *);
|
|||
#ifdef CONFIG_SH_DSP
|
||||
#define task_pt_regs(task) \
|
||||
((struct pt_regs *) (task_stack_page(task) + THREAD_SIZE \
|
||||
- sizeof(struct pt_dspregs) - sizeof(unsigned long)) - 1)
|
||||
- sizeof(struct pt_dspregs)) - 1)
|
||||
#define task_pt_dspregs(task) \
|
||||
((struct pt_dspregs *) (task_stack_page(task) + THREAD_SIZE \
|
||||
- sizeof(unsigned long)) - 1)
|
||||
((struct pt_dspregs *) (task_stack_page(task) + THREAD_SIZE) - 1)
|
||||
#else
|
||||
#define task_pt_regs(task) \
|
||||
((struct pt_regs *) (task_stack_page(task) + THREAD_SIZE \
|
||||
- sizeof(unsigned long)) - 1)
|
||||
((struct pt_regs *) (task_stack_page(task) + THREAD_SIZE) - 1)
|
||||
#endif
|
||||
|
||||
static inline unsigned long profile_pc(struct pt_regs *regs)
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
#include <asm-generic/sections.h>
|
||||
|
||||
extern void __nosave_begin, __nosave_end;
|
||||
extern long __machvec_start, __machvec_end;
|
||||
extern char __uncached_start, __uncached_end;
|
||||
extern char _ebss[];
|
||||
|
|
|
|||
22
arch/sh/include/asm/suspend.h
Normal file
22
arch/sh/include/asm/suspend.h
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
#ifndef _ASM_SH_SUSPEND_H
|
||||
#define _ASM_SH_SUSPEND_H
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
static inline int arch_prepare_suspend(void) { return 0; }
|
||||
|
||||
#include <asm/ptrace.h>
|
||||
|
||||
struct swsusp_arch_regs {
|
||||
struct pt_regs user_regs;
|
||||
unsigned long bank1_regs[8];
|
||||
};
|
||||
#endif
|
||||
|
||||
/* flags passed to assembly suspend code */
|
||||
#define SUSP_SH_SLEEP (1 << 0) /* Regular sleep mode */
|
||||
#define SUSP_SH_STANDBY (1 << 1) /* SH-Mobile Software standby mode */
|
||||
#define SUSP_SH_RSTANDBY (1 << 2) /* SH-Mobile R-standby mode */
|
||||
#define SUSP_SH_USTANDBY (1 << 3) /* SH-Mobile U-standby mode */
|
||||
#define SUSP_SH_SF (1 << 4) /* Enable self-refresh */
|
||||
|
||||
#endif /* _ASM_SH_SUSPEND_H */
|
||||
|
|
@ -9,7 +9,6 @@ struct sys_timer_ops {
|
|||
int (*init)(void);
|
||||
int (*start)(void);
|
||||
int (*stop)(void);
|
||||
cycle_t (*read)(void);
|
||||
#ifndef CONFIG_GENERIC_TIME
|
||||
unsigned long (*get_offset)(void);
|
||||
#endif
|
||||
|
|
@ -39,6 +38,7 @@ struct sys_timer *get_sys_timer(void);
|
|||
|
||||
/* arch/sh/kernel/time.c */
|
||||
void handle_timer_tick(void);
|
||||
extern unsigned long sh_hpt_frequency;
|
||||
|
||||
extern struct clocksource clocksource_sh;
|
||||
|
||||
#endif /* __ASM_SH_TIMER_H */
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user