mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-14 15:54:15 +08:00
Merge branch 'master' into upstream-fixes
This commit is contained in:
commit
c99da91e7a
@ -262,6 +262,8 @@ mtrr.txt
|
||||
- how to use PPro Memory Type Range Registers to increase performance.
|
||||
mutex-design.txt
|
||||
- info on the generic mutex subsystem.
|
||||
namespaces/
|
||||
- directory with various information about namespaces
|
||||
nbd.txt
|
||||
- info on a TCP implementation of a network block device.
|
||||
netlabel/
|
||||
|
@ -11,7 +11,7 @@ DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml videobook.xml \
|
||||
procfs-guide.xml writing_usb_driver.xml \
|
||||
kernel-api.xml filesystems.xml lsm.xml usb.xml \
|
||||
gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \
|
||||
genericirq.xml s390-drivers.xml
|
||||
genericirq.xml s390-drivers.xml uio-howto.xml
|
||||
|
||||
###
|
||||
# The build process is as follows (targets):
|
||||
|
@ -29,6 +29,12 @@
|
||||
</abstract>
|
||||
|
||||
<revhistory>
|
||||
<revision>
|
||||
<revnumber>0.4</revnumber>
|
||||
<date>2007-11-26</date>
|
||||
<authorinitials>hjk</authorinitials>
|
||||
<revremark>Removed section about uio_dummy.</revremark>
|
||||
</revision>
|
||||
<revision>
|
||||
<revnumber>0.3</revnumber>
|
||||
<date>2007-04-29</date>
|
||||
@ -94,6 +100,26 @@ interested in translating it, please email me
|
||||
user space. This simplifies development and reduces the risk of
|
||||
serious bugs within a kernel module.
|
||||
</para>
|
||||
<para>
|
||||
Please note that UIO is not an universal driver interface. Devices
|
||||
that are already handled well by other kernel subsystems (like
|
||||
networking or serial or USB) are no candidates for an UIO driver.
|
||||
Hardware that is ideally suited for an UIO driver fulfills all of
|
||||
the following:
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>The device has memory that can be mapped. The device can be
|
||||
controlled completely by writing to this memory.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>The device usually generates interrupts.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>The device does not fit into one of the standard kernel
|
||||
subsystems.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="thanks">
|
||||
@ -174,8 +200,9 @@ interested in translating it, please email me
|
||||
For cards that don't generate interrupts but need to be
|
||||
polled, there is the possibility to set up a timer that
|
||||
triggers the interrupt handler at configurable time intervals.
|
||||
See <filename>drivers/uio/uio_dummy.c</filename> for an
|
||||
example of this technique.
|
||||
This interrupt simulation is done by calling
|
||||
<function>uio_event_notify()</function>
|
||||
from the timer's event handler.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
@ -263,63 +290,11 @@ offset = N * getpagesize();
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
<chapter id="using-uio_dummy" xreflabel="Using uio_dummy">
|
||||
<?dbhtml filename="using-uio_dummy.html"?>
|
||||
<title>Using uio_dummy</title>
|
||||
<para>
|
||||
Well, there is no real use for uio_dummy. Its only purpose is
|
||||
to test most parts of the UIO system (everything except
|
||||
hardware interrupts), and to serve as an example for the
|
||||
kernel module that you will have to write yourself.
|
||||
</para>
|
||||
|
||||
<sect1 id="what_uio_dummy_does">
|
||||
<title>What uio_dummy does</title>
|
||||
<para>
|
||||
The kernel module <filename>uio_dummy.ko</filename> creates a
|
||||
device that uses a timer to generate periodic interrupts. The
|
||||
interrupt handler does nothing but increment a counter. The
|
||||
driver adds two custom attributes, <varname>count</varname>
|
||||
and <varname>freq</varname>, that appear under
|
||||
<filename>/sys/devices/platform/uio_dummy/</filename>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The attribute <varname>count</varname> can be read and
|
||||
written. The associated file
|
||||
<filename>/sys/devices/platform/uio_dummy/count</filename>
|
||||
appears as a normal text file and contains the total number of
|
||||
timer interrupts. If you look at it (e.g. using
|
||||
<function>cat</function>), you'll notice it is slowly counting
|
||||
up.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The attribute <varname>freq</varname> can be read and written.
|
||||
The content of
|
||||
<filename>/sys/devices/platform/uio_dummy/freq</filename>
|
||||
represents the number of system timer ticks between two timer
|
||||
interrupts. The default value of <varname>freq</varname> is
|
||||
the value of the kernel variable <varname>HZ</varname>, which
|
||||
gives you an interval of one second. Lower values will
|
||||
increase the frequency. Try the following:
|
||||
</para>
|
||||
<programlisting format="linespecific">
|
||||
cd /sys/devices/platform/uio_dummy/
|
||||
echo 100 > freq
|
||||
</programlisting>
|
||||
<para>
|
||||
Use <function>cat count</function> to see how the interrupt
|
||||
frequency changes.
|
||||
</para>
|
||||
</sect1>
|
||||
</chapter>
|
||||
|
||||
<chapter id="custom_kernel_module" xreflabel="Writing your own kernel module">
|
||||
<?dbhtml filename="custom_kernel_module.html"?>
|
||||
<title>Writing your own kernel module</title>
|
||||
<para>
|
||||
Please have a look at <filename>uio_dummy.c</filename> as an
|
||||
Please have a look at <filename>uio_cif.c</filename> as an
|
||||
example. The following paragraphs explain the different
|
||||
sections of this file.
|
||||
</para>
|
||||
@ -354,9 +329,8 @@ See the description below for details.
|
||||
interrupt, it's your modules task to determine the irq number during
|
||||
initialization. If you don't have a hardware generated interrupt but
|
||||
want to trigger the interrupt handler in some other way, set
|
||||
<varname>irq</varname> to <varname>UIO_IRQ_CUSTOM</varname>. The
|
||||
uio_dummy module does this as it triggers the event mechanism in a timer
|
||||
routine. If you had no interrupt at all, you could set
|
||||
<varname>irq</varname> to <varname>UIO_IRQ_CUSTOM</varname>.
|
||||
If you had no interrupt at all, you could set
|
||||
<varname>irq</varname> to <varname>UIO_IRQ_NONE</varname>, though this
|
||||
rarely makes sense.
|
||||
</para></listitem>
|
||||
|
@ -1040,6 +1040,11 @@ static void add_virtqueue(struct device *dev, unsigned int num_descs,
|
||||
/ getpagesize();
|
||||
p = get_pages(pages);
|
||||
|
||||
/* Initialize the virtqueue */
|
||||
vq->next = NULL;
|
||||
vq->last_avail_idx = 0;
|
||||
vq->dev = dev;
|
||||
|
||||
/* Initialize the configuration. */
|
||||
vq->config.num = num_descs;
|
||||
vq->config.irq = devices.next_irq++;
|
||||
@ -1057,9 +1062,6 @@ static void add_virtqueue(struct device *dev, unsigned int num_descs,
|
||||
for (i = &dev->vq; *i; i = &(*i)->next);
|
||||
*i = vq;
|
||||
|
||||
/* Link virtqueue back to device. */
|
||||
vq->dev = dev;
|
||||
|
||||
/* Set the routine to call when the Guest does something to this
|
||||
* virtqueue. */
|
||||
vq->handle_output = handle_output;
|
||||
@ -1093,6 +1095,7 @@ static struct device *new_device(const char *name, u16 type, int fd,
|
||||
dev->desc = new_dev_desc(type);
|
||||
dev->handle_input = handle_input;
|
||||
dev->name = name;
|
||||
dev->vq = NULL;
|
||||
return dev;
|
||||
}
|
||||
|
||||
|
39
Documentation/namespaces/compatibility-list.txt
Normal file
39
Documentation/namespaces/compatibility-list.txt
Normal file
@ -0,0 +1,39 @@
|
||||
Namespaces compatibility list
|
||||
|
||||
This document contains the information about the problems user
|
||||
may have when creating tasks living in different namespaces.
|
||||
|
||||
Here's the summary. This matrix shows the known problems, that
|
||||
occur when tasks share some namespace (the columns) while living
|
||||
in different other namespaces (the rows):
|
||||
|
||||
UTS IPC VFS PID User Net
|
||||
UTS X
|
||||
IPC X 1
|
||||
VFS X
|
||||
PID 1 1 X
|
||||
User 2 2 X
|
||||
Net X
|
||||
|
||||
1. Both the IPC and the PID namespaces provide IDs to address
|
||||
object inside the kernel. E.g. semaphore with IPCID or
|
||||
process group with pid.
|
||||
|
||||
In both cases, tasks shouldn't try exposing this ID to some
|
||||
other task living in a different namespace via a shared filesystem
|
||||
or IPC shmem/message. The fact is that this ID is only valid
|
||||
within the namespace it was obtained in and may refer to some
|
||||
other object in another namespace.
|
||||
|
||||
2. Intentionally, two equal user IDs in different user namespaces
|
||||
should not be equal from the VFS point of view. In other
|
||||
words, user 10 in one user namespace shouldn't have the same
|
||||
access permissions to files, belonging to user 10 in another
|
||||
namespace.
|
||||
|
||||
The same is true for the IPC namespaces being shared - two users
|
||||
from different user namespaces should not access the same IPC objects
|
||||
even having equal UIDs.
|
||||
|
||||
But currently this is not so.
|
||||
|
@ -339,6 +339,10 @@ Use this function to register your device driver on a parallel port
|
||||
('port'). Once you have done that, you will be able to use
|
||||
parport_claim and parport_release in order to use the port.
|
||||
|
||||
The ('name') argument is the name of the device that appears in /proc
|
||||
filesystem. The string must be valid for the whole lifetime of the
|
||||
device (until parport_unregister_device is called).
|
||||
|
||||
This function will register three callbacks into your driver:
|
||||
'preempt', 'wakeup' and 'irq'. Each of these may be NULL in order to
|
||||
indicate that you do not want a callback.
|
||||
|
@ -1645,8 +1645,9 @@ platforms are moved over to use the flattened-device-tree model.
|
||||
MAC addresses passed by the firmware when no information other
|
||||
than indices is available to associate an address with a device.
|
||||
- phy-connection-type : a string naming the controller/PHY interface type,
|
||||
i.e., "mii" (default), "rmii", "gmii", "rgmii", "rgmii-id", "tbi",
|
||||
or "rtbi".
|
||||
i.e., "mii" (default), "rmii", "gmii", "rgmii", "rgmii-id" (Internal
|
||||
Delay), "rgmii-txid" (delay on TX only), "rgmii-rxid" (delay on RX only),
|
||||
"tbi", or "rtbi".
|
||||
|
||||
Example:
|
||||
ucc@2000 {
|
||||
|
@ -1,7 +1,7 @@
|
||||
ThinkPad ACPI Extras Driver
|
||||
|
||||
Version 0.16
|
||||
August 2nd, 2007
|
||||
Version 0.17
|
||||
October 04th, 2007
|
||||
|
||||
Borislav Deianov <borislav@users.sf.net>
|
||||
Henrique de Moraes Holschuh <hmh@hmh.eng.br>
|
||||
@ -923,19 +923,34 @@ sysfs backlight device "thinkpad_screen"
|
||||
This feature allows software control of the LCD brightness on ThinkPad
|
||||
models which don't have a hardware brightness slider.
|
||||
|
||||
It has some limitations: the LCD backlight cannot be actually turned on or off
|
||||
by this interface, and in many ThinkPad models, the "dim while on battery"
|
||||
functionality will be enabled by the BIOS when this interface is used, and
|
||||
cannot be controlled.
|
||||
It has some limitations: the LCD backlight cannot be actually turned on or
|
||||
off by this interface, and in many ThinkPad models, the "dim while on
|
||||
battery" functionality will be enabled by the BIOS when this interface is
|
||||
used, and cannot be controlled.
|
||||
|
||||
The backlight control has eight levels, ranging from 0 to 7. Some of the
|
||||
levels may not be distinct.
|
||||
On IBM (and some of the earlier Lenovo) ThinkPads, the backlight control
|
||||
has eight brightness levels, ranging from 0 to 7. Some of the levels
|
||||
may not be distinct. Later Lenovo models that implement the ACPI
|
||||
display backlight brightness control methods have 16 levels, ranging
|
||||
from 0 to 15.
|
||||
|
||||
There are two interfaces to the firmware for brightness control, EC and CMOS.
|
||||
To select which one should be used, use the brightness_mode module parameter:
|
||||
brightness_mode=1 selects EC mode, brightness_mode=2 selects CMOS mode,
|
||||
brightness_mode=3 selects both EC and CMOS. The driver tries to autodetect
|
||||
which interface to use.
|
||||
There are two interfaces to the firmware for direct brightness control,
|
||||
EC and CMOS. To select which one should be used, use the
|
||||
brightness_mode module parameter: brightness_mode=1 selects EC mode,
|
||||
brightness_mode=2 selects CMOS mode, brightness_mode=3 selects both EC
|
||||
and CMOS. The driver tries to autodetect which interface to use.
|
||||
|
||||
When display backlight brightness controls are available through the
|
||||
standard ACPI interface, it is best to use it instead of this direct
|
||||
ThinkPad-specific interface. The driver will disable its native
|
||||
backlight brightness control interface if it detects that the standard
|
||||
ACPI interface is available in the ThinkPad.
|
||||
|
||||
The brightness_enable module parameter can be used to control whether
|
||||
the LCD brightness control feature will be enabled when available.
|
||||
brightness_enable=0 forces it to be disabled. brightness_enable=1
|
||||
forces it to be enabled when available, even if the standard ACPI
|
||||
interface is also available.
|
||||
|
||||
Procfs notes:
|
||||
|
||||
@ -947,11 +962,11 @@ Procfs notes:
|
||||
|
||||
Sysfs notes:
|
||||
|
||||
The interface is implemented through the backlight sysfs class, which is poorly
|
||||
documented at this time.
|
||||
The interface is implemented through the backlight sysfs class, which is
|
||||
poorly documented at this time.
|
||||
|
||||
Locate the thinkpad_screen device under /sys/class/backlight, and inside it
|
||||
there will be the following attributes:
|
||||
Locate the thinkpad_screen device under /sys/class/backlight, and inside
|
||||
it there will be the following attributes:
|
||||
|
||||
max_brightness:
|
||||
Reads the maximum brightness the hardware can be set to.
|
||||
@ -961,17 +976,19 @@ there will be the following attributes:
|
||||
Reads what brightness the screen is set to at this instant.
|
||||
|
||||
brightness:
|
||||
Writes request the driver to change brightness to the given
|
||||
value. Reads will tell you what brightness the driver is trying
|
||||
to set the display to when "power" is set to zero and the display
|
||||
has not been dimmed by a kernel power management event.
|
||||
Writes request the driver to change brightness to the
|
||||
given value. Reads will tell you what brightness the
|
||||
driver is trying to set the display to when "power" is set
|
||||
to zero and the display has not been dimmed by a kernel
|
||||
power management event.
|
||||
|
||||
power:
|
||||
power management mode, where 0 is "display on", and 1 to 3 will
|
||||
dim the display backlight to brightness level 0 because
|
||||
thinkpad-acpi cannot really turn the backlight off. Kernel
|
||||
power management events can temporarily increase the current
|
||||
power management level, i.e. they can dim the display.
|
||||
power management mode, where 0 is "display on", and 1 to 3
|
||||
will dim the display backlight to brightness level 0
|
||||
because thinkpad-acpi cannot really turn the backlight
|
||||
off. Kernel power management events can temporarily
|
||||
increase the current power management level, i.e. they can
|
||||
dim the display.
|
||||
|
||||
|
||||
Volume control -- /proc/acpi/ibm/volume
|
||||
|
@ -132,6 +132,14 @@ set_termios() Notify the tty driver that the device's termios
|
||||
tty->termios. Previous settings should be passed in
|
||||
the "old" argument.
|
||||
|
||||
The API is defined such that the driver should return
|
||||
the actual modes selected. This means that the
|
||||
driver function is responsible for modifying any
|
||||
bits in the request it cannot fulfill to indicate
|
||||
the actual modes being used. A device with no
|
||||
hardware capability for change (eg a USB dongle or
|
||||
virtual port) can provide NULL for this method.
|
||||
|
||||
throttle() Notify the tty driver that input buffers for the
|
||||
line discipline are close to full, and it should
|
||||
somehow signal that no more characters should be
|
||||
|
@ -278,6 +278,14 @@ optional. The methods' jobs are quite simple:
|
||||
(although the interfaces will be in the same altsettings as
|
||||
before the suspend).
|
||||
|
||||
If the device is disconnected or powered down while it is suspended,
|
||||
the disconnect method will be called instead of the resume or
|
||||
reset_resume method. This is also quite likely to happen when
|
||||
waking up from hibernation, as many systems do not maintain suspend
|
||||
current to the USB host controllers during hibernation. (It's
|
||||
possible to work around the hibernation-forces-disconnect problem by
|
||||
using the USB Persist facility.)
|
||||
|
||||
The reset_resume method is used by the USB Persist facility (see
|
||||
Documentation/usb/persist.txt) and it can also be used under certain
|
||||
circumstances when CONFIG_USB_PERSIST is not enabled. Currently, if a
|
||||
|
29
Documentation/x86_64/uefi.txt
Normal file
29
Documentation/x86_64/uefi.txt
Normal file
@ -0,0 +1,29 @@
|
||||
General note on [U]EFI x86_64 support
|
||||
-------------------------------------
|
||||
|
||||
The nomenclature EFI and UEFI are used interchangeably in this document.
|
||||
|
||||
Although the tools below are _not_ needed for building the kernel,
|
||||
the needed bootloader support and associated tools for x86_64 platforms
|
||||
with EFI firmware and specifications are listed below.
|
||||
|
||||
1. UEFI specification: http://www.uefi.org
|
||||
|
||||
2. Booting Linux kernel on UEFI x86_64 platform requires bootloader
|
||||
support. Elilo with x86_64 support can be used.
|
||||
|
||||
3. x86_64 platform with EFI/UEFI firmware.
|
||||
|
||||
Mechanics:
|
||||
---------
|
||||
- Build the kernel with the following configuration.
|
||||
CONFIG_FB_EFI=y
|
||||
CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
- Create a VFAT partition on the disk
|
||||
- Copy the following to the VFAT partition:
|
||||
elilo bootloader with x86_64 support, elilo configuration file,
|
||||
kernel image built in first step and corresponding
|
||||
initrd. Instructions on building elilo and its dependencies
|
||||
can be found in the elilo sourceforge project.
|
||||
- Boot to EFI shell and invoke elilo choosing the kernel image built
|
||||
in first step.
|
131
MAINTAINERS
131
MAINTAINERS
@ -323,8 +323,7 @@ S: Maintained
|
||||
ALCATEL SPEEDTOUCH USB DRIVER
|
||||
P: Duncan Sands
|
||||
M: duncan.sands@free.fr
|
||||
L: linux-usb-users@lists.sourceforge.net
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
W: http://www.linux-usb.org/SpeedTouch/
|
||||
S: Maintained
|
||||
|
||||
@ -440,7 +439,7 @@ S: Maintained
|
||||
|
||||
ARM/ATMEL AT91RM9200 ARM ARCHITECTURE
|
||||
P: Andrew Victor
|
||||
M: andrew@sanpeople.com
|
||||
M: linux@maxim.org.za
|
||||
L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
|
||||
W: http://maxim.org.za/at91_26.html
|
||||
S: Maintained
|
||||
@ -1043,7 +1042,7 @@ S: Maintained
|
||||
CIRRUS LOGIC EP93XX OHCI USB HOST DRIVER
|
||||
P: Lennert Buytenhek
|
||||
M: kernel@wantstofly.org
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
CIRRUS LOGIC CS4280/CS461x SOUNDDRIVER
|
||||
@ -1552,7 +1551,7 @@ S: Maintained
|
||||
FREESCALE HIGHSPEED USB DEVICE DRIVER
|
||||
P: Li Yang
|
||||
M: leoli@freescale.com
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
L: linuxppc-dev@ozlabs.org
|
||||
S: Maintained
|
||||
|
||||
@ -1914,10 +1913,8 @@ L: linux1394-devel@lists.sourceforge.net
|
||||
S: Maintained
|
||||
|
||||
IMS TWINTURBO FRAMEBUFFER DRIVER
|
||||
P: Paul Mundt
|
||||
M: lethal@chaoticdreams.org
|
||||
L: linux-fbdev-devel@lists.sourceforge.net (subscribers-only)
|
||||
S: Maintained
|
||||
S: Orphan
|
||||
|
||||
INFINIBAND SUBSYSTEM
|
||||
P: Roland Dreier
|
||||
@ -2113,6 +2110,14 @@ L: irda-users@lists.sourceforge.net (subscribers-only)
|
||||
W: http://irda.sourceforge.net/
|
||||
S: Maintained
|
||||
|
||||
ISCSI
|
||||
P: Mike Christie
|
||||
M: michaelc@cs.wisc.edu
|
||||
L: open-iscsi@googlegroups.com
|
||||
W: www.open-iscsi.org
|
||||
T: git kernel.org:/pub/scm/linux/kernel/mnc/linux-2.6-iscsi.git
|
||||
S: Maintained
|
||||
|
||||
ISAPNP
|
||||
P: Jaroslav Kysela
|
||||
M: perex@perex.cz
|
||||
@ -2446,7 +2451,7 @@ M68K ON APPLE MACINTOSH
|
||||
P: Joshua Thompson
|
||||
M: funaho@jurai.org
|
||||
W: http://www.mac.linux-m68k.org/
|
||||
L: linux-mac68k@mac.linux-m68k.org
|
||||
L: linux-m68k@lists.linux-m68k.org
|
||||
S: Maintained
|
||||
|
||||
M68K ON HP9000/300
|
||||
@ -3636,18 +3641,12 @@ M: laredo@gnu.org
|
||||
W: http://www.stradis.com/
|
||||
S: Maintained
|
||||
|
||||
SUPERH (sh)
|
||||
SUPERH
|
||||
P: Paul Mundt
|
||||
M: lethal@linux-sh.org
|
||||
L: linuxsh-dev@lists.sourceforge.net (subscribers-only)
|
||||
W: http://www.linux-sh.org
|
||||
S: Maintained
|
||||
|
||||
SUPERH64 (sh64)
|
||||
P: Paul Mundt
|
||||
M: lethal@linux-sh.org
|
||||
L: linuxsh-shmedia-dev@lists.sourceforge.net
|
||||
L: linux-sh@vger.kernel.org
|
||||
W: http://www.linux-sh.org
|
||||
T: git kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6.git
|
||||
S: Maintained
|
||||
|
||||
SUN3/3X
|
||||
@ -3733,7 +3732,7 @@ S: Maintained
|
||||
TLAN NETWORK DRIVER
|
||||
P: Samuel Chessman
|
||||
M: chessman@tux.org
|
||||
L: tlan-devel@lists.sourceforge.net
|
||||
L: tlan-devel@lists.sourceforge.net (subscribers-only)
|
||||
W: http://sourceforge.net/projects/tlan/
|
||||
S: Maintained
|
||||
|
||||
@ -3818,22 +3817,20 @@ S: Maintained
|
||||
USB ACM DRIVER
|
||||
P: Oliver Neukum
|
||||
M: oliver@neukum.name
|
||||
L: linux-usb-users@lists.sourceforge.net
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
USB BLOCK DRIVER (UB ub)
|
||||
P: Pete Zaitcev
|
||||
M: zaitcev@redhat.com
|
||||
L: linux-kernel@vger.kernel.org
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
S: Supported
|
||||
|
||||
USB CDC ETHERNET DRIVER
|
||||
P: Greg Kroah-Hartman
|
||||
M: greg@kroah.com
|
||||
L: linux-usb-users@lists.sourceforge.net
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
S: Maintained
|
||||
W: http://www.kroah.com/linux-usb/
|
||||
|
||||
@ -3847,13 +3844,13 @@ S: Maintained
|
||||
USB EHCI DRIVER
|
||||
P: David Brownell
|
||||
M: dbrownell@users.sourceforge.net
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
S: Odd Fixes
|
||||
|
||||
USB ET61X[12]51 DRIVER
|
||||
P: Luca Risolia
|
||||
M: luca.risolia@studio.unibo.it
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
L: video4linux-list@redhat.com
|
||||
W: http://www.linux-projects.org
|
||||
S: Maintained
|
||||
@ -3861,41 +3858,33 @@ S: Maintained
|
||||
USB GADGET/PERIPHERAL SUBSYSTEM
|
||||
P: David Brownell
|
||||
M: dbrownell@users.sourceforge.net
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
W: http://www.linux-usb.org/gadget
|
||||
S: Maintained
|
||||
|
||||
USB HID/HIDBP DRIVERS (USB KEYBOARDS, MICE, REMOTE CONTROLS, ...)
|
||||
P: Jiri Kosina
|
||||
M: jkosina@suse.cz
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
T: git kernel.org:/pub/scm/linux/kernel/git/jikos/hid.git
|
||||
S: Maintained
|
||||
|
||||
USB HUB DRIVER
|
||||
P: Johannes Erdfelt
|
||||
M: johannes@erdfelt.com
|
||||
L: linux-usb-users@lists.sourceforge.net
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
S: Maintained
|
||||
|
||||
USB ISP116X DRIVER
|
||||
P: Olav Kongas
|
||||
M: ok@artecdesign.ee
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
USB KAWASAKI LSI DRIVER
|
||||
P: Oliver Neukum
|
||||
M: oliver@neukum.name
|
||||
L: linux-usb-users@lists.sourceforge.net
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
USB MASS STORAGE DRIVER
|
||||
P: Matthew Dharm
|
||||
M: mdharm-usb@one-eyed-alien.net
|
||||
L: linux-usb-users@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
L: usb-storage@lists.one-eyed-alien.net
|
||||
S: Maintained
|
||||
W: http://www.one-eyed-alien.net/~mdharm/linux-usb/
|
||||
@ -3903,28 +3892,26 @@ W: http://www.one-eyed-alien.net/~mdharm/linux-usb/
|
||||
USB OHCI DRIVER
|
||||
P: David Brownell
|
||||
M: dbrownell@users.sourceforge.net
|
||||
L: linux-usb-users@lists.sourceforge.net
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
S: Odd Fixes
|
||||
|
||||
USB OPTION-CARD DRIVER
|
||||
P: Matthias Urlichs
|
||||
M: smurf@smurf.noris.de
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
USB OV511 DRIVER
|
||||
P: Mark McClelland
|
||||
M: mmcclell@bigfoot.com
|
||||
L: linux-usb-users@lists.sourceforge.net
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
W: http://alpha.dyndns.org/ov511/
|
||||
S: Maintained
|
||||
|
||||
USB PEGASUS DRIVER
|
||||
P: Petko Manolov
|
||||
M: petkan@users.sourceforge.net
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
L: netdev@vger.kernel.org
|
||||
W: http://pegasus2.sourceforge.net/
|
||||
S: Maintained
|
||||
@ -3932,14 +3919,13 @@ S: Maintained
|
||||
USB PRINTER DRIVER (usblp)
|
||||
P: Pete Zaitcev
|
||||
M: zaitcev@redhat.com
|
||||
L: linux-usb-users@lists.sourceforge.net
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
S: Supported
|
||||
|
||||
USB RTL8150 DRIVER
|
||||
P: Petko Manolov
|
||||
M: petkan@users.sourceforge.net
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
L: netdev@vger.kernel.org
|
||||
W: http://pegasus2.sourceforge.net/
|
||||
S: Maintained
|
||||
@ -3947,8 +3933,7 @@ S: Maintained
|
||||
USB SE401 DRIVER
|
||||
P: Jeroen Vreeken
|
||||
M: pe1rxq@amsat.org
|
||||
L: linux-usb-users@lists.sourceforge.net
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
W: http://www.chello.nl/~j.vreeken/se401/
|
||||
S: Maintained
|
||||
|
||||
@ -3962,72 +3947,59 @@ USB SERIAL DIGI ACCELEPORT DRIVER
|
||||
P: Peter Berger and Al Borchers
|
||||
M: pberger@brimson.com
|
||||
M: alborchers@steinerpoint.com
|
||||
L: linux-usb-users@lists.sourceforge.net
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
USB SERIAL DRIVER
|
||||
P: Greg Kroah-Hartman
|
||||
M: gregkh@suse.de
|
||||
L: linux-usb-users@lists.sourceforge.net
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
S: Supported
|
||||
|
||||
USB SERIAL BELKIN F5U103 DRIVER
|
||||
P: William Greathouse
|
||||
M: wgreathouse@smva.com
|
||||
L: linux-usb-users@lists.sourceforge.net
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
USB SERIAL CYPRESS M8 DRIVER
|
||||
P: Lonnie Mendez
|
||||
M: dignome@gmail.com
|
||||
L: linux-usb-users@lists.sourceforge.net
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
S: Maintained
|
||||
W: http://geocities.com/i0xox0i
|
||||
W: http://firstlight.net/cvs
|
||||
|
||||
USB SERIAL CYBERJACK PINPAD/E-COM DRIVER
|
||||
L: linux-usb-users@lists.sourceforge.net
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
S: Maintained
|
||||
|
||||
USB AUERSWALD DRIVER
|
||||
P: Wolfgang Muees
|
||||
M: wolfgang@iksw-muees.de
|
||||
L: linux-usb-users@lists.sourceforge.net
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
USB SERIAL EMPEG EMPEG-CAR MARK I/II DRIVER
|
||||
P: Gary Brubaker
|
||||
M: xavyer@ix.netcom.com
|
||||
L: linux-usb-users@lists.sourceforge.net
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
USB SERIAL KEYSPAN DRIVER
|
||||
P: Greg Kroah-Hartman
|
||||
M: greg@kroah.com
|
||||
L: linux-usb-users@lists.sourceforge.net
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
W: http://www.kroah.com/linux/
|
||||
S: Maintained
|
||||
|
||||
USB SERIAL WHITEHEAT DRIVER
|
||||
P: Support Department
|
||||
M: support@connecttech.com
|
||||
L: linux-usb-users@lists.sourceforge.net
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
W: http://www.connecttech.com
|
||||
S: Supported
|
||||
|
||||
USB SN9C1xx DRIVER
|
||||
P: Luca Risolia
|
||||
M: luca.risolia@studio.unibo.it
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
L: video4linux-list@redhat.com
|
||||
W: http://www.linux-projects.org
|
||||
S: Maintained
|
||||
@ -4035,8 +4007,7 @@ S: Maintained
|
||||
USB SUBSYSTEM
|
||||
P: Greg Kroah-Hartman
|
||||
M: gregkh@suse.de
|
||||
L: linux-usb-users@lists.sourceforge.net
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
W: http://www.linux-usb.org
|
||||
T: quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
|
||||
S: Supported
|
||||
@ -4044,8 +4015,7 @@ S: Supported
|
||||
USB UHCI DRIVER
|
||||
P: Alan Stern
|
||||
M: stern@rowland.harvard.edu
|
||||
L: linux-usb-users@lists.sourceforge.net
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
S: Maintained
|
||||
|
||||
USB "USBNET" DRIVER FRAMEWORK
|
||||
@ -4058,7 +4028,7 @@ S: Maintained
|
||||
USB W996[87]CF DRIVER
|
||||
P: Luca Risolia
|
||||
M: luca.risolia@studio.unibo.it
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
L: video4linux-list@redhat.com
|
||||
W: http://www.linux-projects.org
|
||||
S: Maintained
|
||||
@ -4066,7 +4036,7 @@ S: Maintained
|
||||
USB ZC0301 DRIVER
|
||||
P: Luca Risolia
|
||||
M: luca.risolia@studio.unibo.it
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
L: video4linux-list@redhat.com
|
||||
W: http://www.linux-projects.org
|
||||
S: Maintained
|
||||
@ -4074,15 +4044,14 @@ S: Maintained
|
||||
USB ZD1201 DRIVER
|
||||
P: Jeroen Vreeken
|
||||
M: pe1rxq@amsat.org
|
||||
L: linux-usb-users@lists.sourceforge.net
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
W: http://linux-lc100020.sourceforge.net
|
||||
S: Maintained
|
||||
|
||||
USB ZR364XX DRIVER
|
||||
P: Antoine Jacquet
|
||||
M: royale@zerezo.com
|
||||
L: linux-usb-devel@lists.sourceforge.net
|
||||
L: linux-usb@vger.kernel.org
|
||||
L: video4linux-list@redhat.com
|
||||
W: http://royale.zerezo.com/zr364xx/
|
||||
S: Maintained
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include <linux/errno.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/scatterlist.h>
|
||||
|
||||
#include "proto.h"
|
||||
|
||||
@ -172,18 +173,19 @@ dma_alloc_coherent(struct device *dev, size_t size,
|
||||
EXPORT_SYMBOL(dma_alloc_coherent);
|
||||
|
||||
int
|
||||
dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
|
||||
dma_map_sg(struct device *dev, struct scatterlist *sgl, int nents,
|
||||
enum dma_data_direction direction)
|
||||
{
|
||||
int i;
|
||||
struct scatterlist *sg;
|
||||
|
||||
for (i = 0; i < nents; i++ ) {
|
||||
for_each_sg(sgl, sg, nents, i) {
|
||||
void *va;
|
||||
|
||||
BUG_ON(!sg[i].page);
|
||||
va = page_address(sg[i].page) + sg[i].offset;
|
||||
sg_dma_address(sg + i) = (dma_addr_t)virt_to_bus(va);
|
||||
sg_dma_len(sg + i) = sg[i].length;
|
||||
BUG_ON(!sg_page(sg));
|
||||
va = sg_virt(sg);
|
||||
sg_dma_address(sg) = (dma_addr_t)virt_to_bus(va);
|
||||
sg_dma_len(sg) = sg->length;
|
||||
}
|
||||
|
||||
return nents;
|
||||
|
@ -374,8 +374,8 @@ static int set_initial_registers(int uengine, struct ixp2000_uengine_code *c)
|
||||
u8 *ucode;
|
||||
int i;
|
||||
|
||||
gpr_a = kmalloc(128 * sizeof(u32), GFP_KERNEL);
|
||||
gpr_b = kmalloc(128 * sizeof(u32), GFP_KERNEL);
|
||||
gpr_a = kzalloc(128 * sizeof(u32), GFP_KERNEL);
|
||||
gpr_b = kzalloc(128 * sizeof(u32), GFP_KERNEL);
|
||||
ucode = kmalloc(513 * 5, GFP_KERNEL);
|
||||
if (gpr_a == NULL || gpr_b == NULL || ucode == NULL) {
|
||||
kfree(ucode);
|
||||
@ -388,8 +388,6 @@ static int set_initial_registers(int uengine, struct ixp2000_uengine_code *c)
|
||||
if (c->uengine_parameters & IXP2000_UENGINE_4_CONTEXTS)
|
||||
per_ctx_regs = 32;
|
||||
|
||||
memset(gpr_a, 0, sizeof(gpr_a));
|
||||
memset(gpr_b, 0, sizeof(gpr_b));
|
||||
for (i = 0; i < 256; i++) {
|
||||
struct ixp2000_reg_value *r = c->initial_reg_values + i;
|
||||
u32 *bank;
|
||||
|
@ -339,16 +339,6 @@ __pabt_svc:
|
||||
str r1, [sp] @ save the "real" r0 copied
|
||||
@ from the exception stack
|
||||
|
||||
#if __LINUX_ARM_ARCH__ < 6 && !defined(CONFIG_NEEDS_SYSCALL_FOR_CMPXCHG)
|
||||
#ifndef CONFIG_MMU
|
||||
#warning "NPTL on non MMU needs fixing"
|
||||
#else
|
||||
@ make sure our user space atomic helper is aborted
|
||||
cmp r2, #TASK_SIZE
|
||||
bichs r3, r3, #PSR_Z_BIT
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@
|
||||
@ We are now ready to fill in the remaining blanks on the stack:
|
||||
@
|
||||
@ -372,9 +362,25 @@ __pabt_svc:
|
||||
zero_fp
|
||||
.endm
|
||||
|
||||
.macro kuser_cmpxchg_check
|
||||
#if __LINUX_ARM_ARCH__ < 6 && !defined(CONFIG_NEEDS_SYSCALL_FOR_CMPXCHG)
|
||||
#ifndef CONFIG_MMU
|
||||
#warning "NPTL on non MMU needs fixing"
|
||||
#else
|
||||
@ Make sure our user space atomic helper is restarted
|
||||
@ if it was interrupted in a critical region. Here we
|
||||
@ perform a quick test inline since it should be false
|
||||
@ 99.9999% of the time. The rest is done out of line.
|
||||
cmp r2, #TASK_SIZE
|
||||
blhs kuser_cmpxchg_fixup
|
||||
#endif
|
||||
#endif
|
||||
.endm
|
||||
|
||||
.align 5
|
||||
__dabt_usr:
|
||||
usr_entry
|
||||
kuser_cmpxchg_check
|
||||
|
||||
@
|
||||
@ Call the processor-specific abort handler:
|
||||
@ -404,6 +410,7 @@ __dabt_usr:
|
||||
.align 5
|
||||
__irq_usr:
|
||||
usr_entry
|
||||
kuser_cmpxchg_check
|
||||
|
||||
#ifdef CONFIG_TRACE_IRQFLAGS
|
||||
bl trace_hardirqs_off
|
||||
@ -446,9 +453,9 @@ __und_usr:
|
||||
@
|
||||
@ r0 - instruction
|
||||
@
|
||||
1: ldrt r0, [r4]
|
||||
adr r9, ret_from_exception
|
||||
adr lr, __und_usr_unknown
|
||||
1: ldrt r0, [r4]
|
||||
@
|
||||
@ fallthrough to call_fpe
|
||||
@
|
||||
@ -669,7 +676,7 @@ __kuser_helper_start:
|
||||
*
|
||||
* Clobbered:
|
||||
*
|
||||
* the Z flag might be lost
|
||||
* none
|
||||
*
|
||||
* Definition and user space usage example:
|
||||
*
|
||||
@ -730,9 +737,6 @@ __kuser_memory_barrier: @ 0xffff0fa0
|
||||
*
|
||||
* - This routine already includes memory barriers as needed.
|
||||
*
|
||||
* - A failure might be transient, i.e. it is possible, although unlikely,
|
||||
* that "failure" be returned even if *ptr == oldval.
|
||||
*
|
||||
* For example, a user space atomic_add implementation could look like this:
|
||||
*
|
||||
* #define atomic_add(ptr, val) \
|
||||
@ -769,46 +773,62 @@ __kuser_cmpxchg: @ 0xffff0fc0
|
||||
|
||||
#elif __LINUX_ARM_ARCH__ < 6
|
||||
|
||||
/*
|
||||
* Theory of operation:
|
||||
*
|
||||
* We set the Z flag before loading oldval. If ever an exception
|
||||
* occurs we can not be sure the loaded value will still be the same
|
||||
* when the exception returns, therefore the user exception handler
|
||||
* will clear the Z flag whenever the interrupted user code was
|
||||
* actually from the kernel address space (see the usr_entry macro).
|
||||
*
|
||||
* The post-increment on the str is used to prevent a race with an
|
||||
* exception happening just after the str instruction which would
|
||||
* clear the Z flag although the exchange was done.
|
||||
*/
|
||||
#ifdef CONFIG_MMU
|
||||
teq ip, ip @ set Z flag
|
||||
ldr ip, [r2] @ load current val
|
||||
add r3, r2, #1 @ prepare store ptr
|
||||
teqeq ip, r0 @ compare with oldval if still allowed
|
||||
streq r1, [r3, #-1]! @ store newval if still allowed
|
||||
subs r0, r2, r3 @ if r2 == r3 the str occured
|
||||
|
||||
/*
|
||||
* The only thing that can break atomicity in this cmpxchg
|
||||
* implementation is either an IRQ or a data abort exception
|
||||
* causing another process/thread to be scheduled in the middle
|
||||
* of the critical sequence. To prevent this, code is added to
|
||||
* the IRQ and data abort exception handlers to set the pc back
|
||||
* to the beginning of the critical section if it is found to be
|
||||
* within that critical section (see kuser_cmpxchg_fixup).
|
||||
*/
|
||||
1: ldr r3, [r2] @ load current val
|
||||
subs r3, r3, r0 @ compare with oldval
|
||||
2: streq r1, [r2] @ store newval if eq
|
||||
rsbs r0, r3, #0 @ set return val and C flag
|
||||
usr_ret lr
|
||||
|
||||
.text
|
||||
kuser_cmpxchg_fixup:
|
||||
@ Called from kuser_cmpxchg_check macro.
|
||||
@ r2 = address of interrupted insn (must be preserved).
|
||||
@ sp = saved regs. r7 and r8 are clobbered.
|
||||
@ 1b = first critical insn, 2b = last critical insn.
|
||||
@ If r2 >= 1b and r2 <= 2b then saved pc_usr is set to 1b.
|
||||
mov r7, #0xffff0fff
|
||||
sub r7, r7, #(0xffff0fff - (0xffff0fc0 + (1b - __kuser_cmpxchg)))
|
||||
subs r8, r2, r7
|
||||
rsbcss r8, r8, #(2b - 1b)
|
||||
strcs r7, [sp, #S_PC]
|
||||
mov pc, lr
|
||||
.previous
|
||||
|
||||
#else
|
||||
#warning "NPTL on non MMU needs fixing"
|
||||
mov r0, #-1
|
||||
adds r0, r0, #0
|
||||
#endif
|
||||
usr_ret lr
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
mcr p15, 0, r0, c7, c10, 5 @ dmb
|
||||
#endif
|
||||
ldrex r3, [r2]
|
||||
1: ldrex r3, [r2]
|
||||
subs r3, r3, r0
|
||||
strexeq r3, r1, [r2]
|
||||
teqeq r3, #1
|
||||
beq 1b
|
||||
rsbs r0, r3, #0
|
||||
/* beware -- each __kuser slot must be 8 instructions max */
|
||||
#ifdef CONFIG_SMP
|
||||
mcr p15, 0, r0, c7, c10, 5 @ dmb
|
||||
#endif
|
||||
b __kuser_memory_barrier
|
||||
#else
|
||||
usr_ret lr
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@ -829,7 +849,7 @@ __kuser_cmpxchg: @ 0xffff0fc0
|
||||
*
|
||||
* Clobbered:
|
||||
*
|
||||
* the Z flag might be lost
|
||||
* none
|
||||
*
|
||||
* Definition and user space usage example:
|
||||
*
|
||||
|
@ -327,7 +327,7 @@ asmlinkage void __exception do_undefinstr(struct pt_regs *regs)
|
||||
if ((instr & hook->instr_mask) == hook->instr_val &&
|
||||
(regs->ARM_cpsr & hook->cpsr_mask) == hook->cpsr_val) {
|
||||
if (hook->fn(regs, instr) == 0) {
|
||||
spin_unlock_irq(&undef_lock);
|
||||
spin_unlock_irqrestore(&undef_lock, flags);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -509,7 +509,7 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs)
|
||||
* existence. Don't ever use this from user code.
|
||||
*/
|
||||
case 0xfff0:
|
||||
{
|
||||
for (;;) {
|
||||
extern void do_DataAbort(unsigned long addr, unsigned int fsr,
|
||||
struct pt_regs *regs);
|
||||
unsigned long val;
|
||||
@ -545,7 +545,6 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs)
|
||||
up_read(&mm->mmap_sem);
|
||||
/* simulate a write access fault */
|
||||
do_DataAbort(addr, 15 + (1 << 11), regs);
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -14,6 +14,7 @@
|
||||
#include <asm/mach/map.h>
|
||||
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/i2c-gpio.h>
|
||||
|
||||
#include <asm/arch/board.h>
|
||||
#include <asm/arch/gpio.h>
|
||||
@ -435,7 +436,40 @@ void __init at91_add_device_nand(struct at91_nand_data *data) {}
|
||||
* TWI (i2c)
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#if defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE)
|
||||
/*
|
||||
* Prefer the GPIO code since the TWI controller isn't robust
|
||||
* (gets overruns and underruns under load) and can only issue
|
||||
* repeated STARTs in one scenario (the driver doesn't yet handle them).
|
||||
*/
|
||||
#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE)
|
||||
|
||||
static struct i2c_gpio_platform_data pdata = {
|
||||
.sda_pin = AT91_PIN_PA25,
|
||||
.sda_is_open_drain = 1,
|
||||
.scl_pin = AT91_PIN_PA26,
|
||||
.scl_is_open_drain = 1,
|
||||
.udelay = 2, /* ~100 kHz */
|
||||
};
|
||||
|
||||
static struct platform_device at91rm9200_twi_device = {
|
||||
.name = "i2c-gpio",
|
||||
.id = -1,
|
||||
.dev.platform_data = &pdata,
|
||||
};
|
||||
|
||||
void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices)
|
||||
{
|
||||
at91_set_GPIO_periph(AT91_PIN_PA25, 1); /* TWD (SDA) */
|
||||
at91_set_multi_drive(AT91_PIN_PA25, 1);
|
||||
|
||||
at91_set_GPIO_periph(AT91_PIN_PA26, 1); /* TWCK (SCL) */
|
||||
at91_set_multi_drive(AT91_PIN_PA26, 1);
|
||||
|
||||
i2c_register_board_info(0, devices, nr_devices);
|
||||
platform_device_register(&at91rm9200_twi_device);
|
||||
}
|
||||
|
||||
#elif defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE)
|
||||
|
||||
static struct resource twi_resources[] = {
|
||||
[0] = {
|
||||
@ -457,7 +491,7 @@ static struct platform_device at91rm9200_twi_device = {
|
||||
.num_resources = ARRAY_SIZE(twi_resources),
|
||||
};
|
||||
|
||||
void __init at91_add_device_i2c(void)
|
||||
void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices)
|
||||
{
|
||||
/* pins used for TWI interface */
|
||||
at91_set_A_periph(AT91_PIN_PA25, 0); /* TWD */
|
||||
@ -466,10 +500,11 @@ void __init at91_add_device_i2c(void)
|
||||
at91_set_A_periph(AT91_PIN_PA26, 0); /* TWCK */
|
||||
at91_set_multi_drive(AT91_PIN_PA26, 1);
|
||||
|
||||
i2c_register_board_info(0, devices, nr_devices);
|
||||
platform_device_register(&at91rm9200_twi_device);
|
||||
}
|
||||
#else
|
||||
void __init at91_add_device_i2c(void) {}
|
||||
void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) {}
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -13,6 +13,7 @@
|
||||
#include <asm/mach/map.h>
|
||||
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/i2c-gpio.h>
|
||||
|
||||
#include <asm/arch/board.h>
|
||||
#include <asm/arch/gpio.h>
|
||||
@ -352,7 +353,41 @@ void __init at91_add_device_nand(struct at91_nand_data *data) {}
|
||||
* TWI (i2c)
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#if defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE)
|
||||
/*
|
||||
* Prefer the GPIO code since the TWI controller isn't robust
|
||||
* (gets overruns and underruns under load) and can only issue
|
||||
* repeated STARTs in one scenario (the driver doesn't yet handle them).
|
||||
*/
|
||||
|
||||
#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE)
|
||||
|
||||
static struct i2c_gpio_platform_data pdata = {
|
||||
.sda_pin = AT91_PIN_PA23,
|
||||
.sda_is_open_drain = 1,
|
||||
.scl_pin = AT91_PIN_PA24,
|
||||
.scl_is_open_drain = 1,
|
||||
.udelay = 2, /* ~100 kHz */
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9260_twi_device = {
|
||||
.name = "i2c-gpio",
|
||||
.id = -1,
|
||||
.dev.platform_data = &pdata,
|
||||
};
|
||||
|
||||
void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices)
|
||||
{
|
||||
at91_set_GPIO_periph(AT91_PIN_PA23, 1); /* TWD (SDA) */
|
||||
at91_set_multi_drive(AT91_PIN_PA23, 1);
|
||||
|
||||
at91_set_GPIO_periph(AT91_PIN_PA24, 1); /* TWCK (SCL) */
|
||||
at91_set_multi_drive(AT91_PIN_PA24, 1);
|
||||
|
||||
i2c_register_board_info(0, devices, nr_devices);
|
||||
platform_device_register(&at91sam9260_twi_device);
|
||||
}
|
||||
|
||||
#elif defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE)
|
||||
|
||||
static struct resource twi_resources[] = {
|
||||
[0] = {
|
||||
@ -374,7 +409,7 @@ static struct platform_device at91sam9260_twi_device = {
|
||||
.num_resources = ARRAY_SIZE(twi_resources),
|
||||
};
|
||||
|
||||
void __init at91_add_device_i2c(void)
|
||||
void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices)
|
||||
{
|
||||
/* pins used for TWI interface */
|
||||
at91_set_A_periph(AT91_PIN_PA23, 0); /* TWD */
|
||||
@ -383,10 +418,11 @@ void __init at91_add_device_i2c(void)
|
||||
at91_set_A_periph(AT91_PIN_PA24, 0); /* TWCK */
|
||||
at91_set_multi_drive(AT91_PIN_PA24, 1);
|
||||
|
||||
i2c_register_board_info(0, devices, nr_devices);
|
||||
platform_device_register(&at91sam9260_twi_device);
|
||||
}
|
||||
#else
|
||||
void __init at91_add_device_i2c(void) {}
|
||||
void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) {}
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -14,7 +14,9 @@
|
||||
#include <asm/mach/map.h>
|
||||
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/i2c-gpio.h>
|
||||
|
||||
#include <linux/fb.h>
|
||||
#include <video/atmel_lcdc.h>
|
||||
|
||||
#include <asm/arch/board.h>
|
||||
@ -275,7 +277,40 @@ void __init at91_add_device_nand(struct at91_nand_data *data) {}
|
||||
* TWI (i2c)
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#if defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE)
|
||||
/*
|
||||
* Prefer the GPIO code since the TWI controller isn't robust
|
||||
* (gets overruns and underruns under load) and can only issue
|
||||
* repeated STARTs in one scenario (the driver doesn't yet handle them).
|
||||
*/
|
||||
#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE)
|
||||
|
||||
static struct i2c_gpio_platform_data pdata = {
|
||||
.sda_pin = AT91_PIN_PA7,
|
||||
.sda_is_open_drain = 1,
|
||||
.scl_pin = AT91_PIN_PA8,
|
||||
.scl_is_open_drain = 1,
|
||||
.udelay = 2, /* ~100 kHz */
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9261_twi_device = {
|
||||
.name = "i2c-gpio",
|
||||
.id = -1,
|
||||
.dev.platform_data = &pdata,
|
||||
};
|
||||
|
||||
void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices)
|
||||
{
|
||||
at91_set_GPIO_periph(AT91_PIN_PA7, 1); /* TWD (SDA) */
|
||||
at91_set_multi_drive(AT91_PIN_PA7, 1);
|
||||
|
||||
at91_set_GPIO_periph(AT91_PIN_PA8, 1); /* TWCK (SCL) */
|
||||
at91_set_multi_drive(AT91_PIN_PA8, 1);
|
||||
|
||||
i2c_register_board_info(0, devices, nr_devices);
|
||||
platform_device_register(&at91sam9261_twi_device);
|
||||
}
|
||||
|
||||
#elif defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE)
|
||||
|
||||
static struct resource twi_resources[] = {
|
||||
[0] = {
|
||||
@ -297,7 +332,7 @@ static struct platform_device at91sam9261_twi_device = {
|
||||
.num_resources = ARRAY_SIZE(twi_resources),
|
||||
};
|
||||
|
||||
void __init at91_add_device_i2c(void)
|
||||
void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices)
|
||||
{
|
||||
/* pins used for TWI interface */
|
||||
at91_set_A_periph(AT91_PIN_PA7, 0); /* TWD */
|
||||
@ -306,10 +341,11 @@ void __init at91_add_device_i2c(void)
|
||||
at91_set_A_periph(AT91_PIN_PA8, 0); /* TWCK */
|
||||
at91_set_multi_drive(AT91_PIN_PA8, 1);
|
||||
|
||||
i2c_register_board_info(0, devices, nr_devices);
|
||||
platform_device_register(&at91sam9261_twi_device);
|
||||
}
|
||||
#else
|
||||
void __init at91_add_device_i2c(void) {}
|
||||
void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) {}
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -13,7 +13,9 @@
|
||||
#include <asm/mach/map.h>
|
||||
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/i2c-gpio.h>
|
||||
|
||||
#include <linux/fb.h>
|
||||
#include <video/atmel_lcdc.h>
|
||||
|
||||
#include <asm/arch/board.h>
|
||||
@ -421,7 +423,40 @@ void __init at91_add_device_nand(struct at91_nand_data *data) {}
|
||||
* TWI (i2c)
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#if defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE)
|
||||
/*
|
||||
* Prefer the GPIO code since the TWI controller isn't robust
|
||||
* (gets overruns and underruns under load) and can only issue
|
||||
* repeated STARTs in one scenario (the driver doesn't yet handle them).
|
||||
*/
|
||||
#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE)
|
||||
|
||||
static struct i2c_gpio_platform_data pdata = {
|
||||
.sda_pin = AT91_PIN_PB4,
|
||||
.sda_is_open_drain = 1,
|
||||
.scl_pin = AT91_PIN_PB5,
|
||||
.scl_is_open_drain = 1,
|
||||
.udelay = 2, /* ~100 kHz */
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9263_twi_device = {
|
||||
.name = "i2c-gpio",
|
||||
.id = -1,
|
||||
.dev.platform_data = &pdata,
|
||||
};
|
||||
|
||||
void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices)
|
||||
{
|
||||
at91_set_GPIO_periph(AT91_PIN_PB4, 1); /* TWD (SDA) */
|
||||
at91_set_multi_drive(AT91_PIN_PB4, 1);
|
||||
|
||||
at91_set_GPIO_periph(AT91_PIN_PB5, 1); /* TWCK (SCL) */
|
||||
at91_set_multi_drive(AT91_PIN_PB5, 1);
|
||||
|
||||
i2c_register_board_info(0, devices, nr_devices);
|
||||
platform_device_register(&at91sam9263_twi_device);
|
||||
}
|
||||
|
||||
#elif defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE)
|
||||
|
||||
static struct resource twi_resources[] = {
|
||||
[0] = {
|
||||
@ -443,7 +478,7 @@ static struct platform_device at91sam9263_twi_device = {
|
||||
.num_resources = ARRAY_SIZE(twi_resources),
|
||||
};
|
||||
|
||||
void __init at91_add_device_i2c(void)
|
||||
void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices)
|
||||
{
|
||||
/* pins used for TWI interface */
|
||||
at91_set_A_periph(AT91_PIN_PB4, 0); /* TWD */
|
||||
@ -452,10 +487,11 @@ void __init at91_add_device_i2c(void)
|
||||
at91_set_A_periph(AT91_PIN_PB5, 0); /* TWCK */
|
||||
at91_set_multi_drive(AT91_PIN_PB5, 1);
|
||||
|
||||
i2c_register_board_info(0, devices, nr_devices);
|
||||
platform_device_register(&at91sam9263_twi_device);
|
||||
}
|
||||
#else
|
||||
void __init at91_add_device_i2c(void) {}
|
||||
void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) {}
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -10,8 +10,9 @@
|
||||
#include <asm/mach/map.h>
|
||||
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/fb.h>
|
||||
#include <linux/i2c-gpio.h>
|
||||
|
||||
#include <linux/fb.h>
|
||||
#include <video/atmel_lcdc.h>
|
||||
|
||||
#include <asm/arch/board.h>
|
||||
@ -169,7 +170,40 @@ void __init at91_add_device_nand(struct at91_nand_data *data) {}
|
||||
* TWI (i2c)
|
||||
* -------------------------------------------------------------------- */
|
||||
|
||||
#if defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE)
|
||||
/*
|
||||
* Prefer the GPIO code since the TWI controller isn't robust
|
||||
* (gets overruns and underruns under load) and can only issue
|
||||
* repeated STARTs in one scenario (the driver doesn't yet handle them).
|
||||
*/
|
||||
#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE)
|
||||
|
||||
static struct i2c_gpio_platform_data pdata = {
|
||||
.sda_pin = AT91_PIN_PA23,
|
||||
.sda_is_open_drain = 1,
|
||||
.scl_pin = AT91_PIN_PA24,
|
||||
.scl_is_open_drain = 1,
|
||||
.udelay = 2, /* ~100 kHz */
|
||||
};
|
||||
|
||||
static struct platform_device at91sam9rl_twi_device = {
|
||||
.name = "i2c-gpio",
|
||||
.id = -1,
|
||||
.dev.platform_data = &pdata,
|
||||
};
|
||||
|
||||
void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices)
|
||||
{
|
||||
at91_set_GPIO_periph(AT91_PIN_PA23, 1); /* TWD (SDA) */
|
||||
at91_set_multi_drive(AT91_PIN_PA23, 1);
|
||||
|
||||
at91_set_GPIO_periph(AT91_PIN_PA24, 1); /* TWCK (SCL) */
|
||||
at91_set_multi_drive(AT91_PIN_PA24, 1);
|
||||
|
||||
i2c_register_board_info(0, devices, nr_devices);
|
||||
platform_device_register(&at91sam9rl_twi_device);
|
||||
}
|
||||
|
||||
#elif defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE)
|
||||
|
||||
static struct resource twi_resources[] = {
|
||||
[0] = {
|
||||
@ -191,7 +225,7 @@ static struct platform_device at91sam9rl_twi_device = {
|
||||
.num_resources = ARRAY_SIZE(twi_resources),
|
||||
};
|
||||
|
||||
void __init at91_add_device_i2c(void)
|
||||
void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices)
|
||||
{
|
||||
/* pins used for TWI interface */
|
||||
at91_set_A_periph(AT91_PIN_PA23, 0); /* TWD */
|
||||
@ -200,10 +234,11 @@ void __init at91_add_device_i2c(void)
|
||||
at91_set_A_periph(AT91_PIN_PA24, 0); /* TWCK */
|
||||
at91_set_multi_drive(AT91_PIN_PA24, 1);
|
||||
|
||||
i2c_register_board_info(0, devices, nr_devices);
|
||||
platform_device_register(&at91sam9rl_twi_device);
|
||||
}
|
||||
#else
|
||||
void __init at91_add_device_i2c(void) {}
|
||||
void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) {}
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -128,7 +128,7 @@ static void __init carmeva_board_init(void)
|
||||
/* USB Device */
|
||||
at91_add_device_udc(&carmeva_udc_data);
|
||||
/* I2C */
|
||||
at91_add_device_i2c();
|
||||
at91_add_device_i2c(NULL, 0);
|
||||
/* SPI */
|
||||
at91_add_device_spi(carmeva_spi_devices, ARRAY_SIZE(carmeva_spi_devices));
|
||||
/* Compact Flash */
|
||||
|
@ -23,7 +23,6 @@
|
||||
#include <linux/mm.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/spi/spi.h>
|
||||
#include <linux/mtd/physmap.h>
|
||||
|
||||
@ -85,12 +84,12 @@ static struct at91_udc_data __initdata csb337_udc_data = {
|
||||
};
|
||||
|
||||
static struct i2c_board_info __initdata csb337_i2c_devices[] = {
|
||||
{ I2C_BOARD_INFO("rtc-ds1307", 0x68),
|
||||
.type = "ds1307",
|
||||
{
|
||||
I2C_BOARD_INFO("rtc-ds1307", 0x68),
|
||||
.type = "ds1307",
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
static struct at91_cf_data __initdata csb337_cf_data = {
|
||||
/*
|
||||
* connector P4 on the CSB 337 mates to
|
||||
@ -168,9 +167,7 @@ static void __init csb337_board_init(void)
|
||||
/* USB Device */
|
||||
at91_add_device_udc(&csb337_udc_data);
|
||||
/* I2C */
|
||||
at91_add_device_i2c();
|
||||
i2c_register_board_info(0, csb337_i2c_devices,
|
||||
ARRAY_SIZE(csb337_i2c_devices));
|
||||
at91_add_device_i2c(csb337_i2c_devices, ARRAY_SIZE(csb337_i2c_devices));
|
||||
/* Compact Flash */
|
||||
at91_set_gpio_input(AT91_PIN_PB22, 1); /* IOIS16 */
|
||||
at91_add_device_cf(&csb337_cf_data);
|
||||
|
@ -129,7 +129,7 @@ static void __init csb637_board_init(void)
|
||||
/* USB Device */
|
||||
at91_add_device_udc(&csb637_udc_data);
|
||||
/* I2C */
|
||||
at91_add_device_i2c();
|
||||
at91_add_device_i2c(NULL, 0);
|
||||
/* SPI */
|
||||
at91_add_device_spi(NULL, 0);
|
||||
/* NOR flash */
|
||||
|
@ -124,6 +124,19 @@ static struct spi_board_info dk_spi_devices[] = {
|
||||
#endif
|
||||
};
|
||||
|
||||
static struct i2c_board_info __initdata dk_i2c_devices[] = {
|
||||
{
|
||||
I2C_BOARD_INFO("ics1523", 0x26),
|
||||
},
|
||||
{
|
||||
I2C_BOARD_INFO("x9429", 0x28),
|
||||
},
|
||||
{
|
||||
I2C_BOARD_INFO("at24c", 0x50),
|
||||
.type = "24c1024",
|
||||
}
|
||||
};
|
||||
|
||||
static struct mtd_partition __initdata dk_nand_partition[] = {
|
||||
{
|
||||
.name = "NAND Partition 1",
|
||||
@ -185,7 +198,7 @@ static void __init dk_board_init(void)
|
||||
/* Compact Flash */
|
||||
at91_add_device_cf(&dk_cf_data);
|
||||
/* I2C */
|
||||
at91_add_device_i2c();
|
||||
at91_add_device_i2c(dk_i2c_devices, ARRAY_SIZE(dk_i2c_devices));
|
||||
/* SPI */
|
||||
at91_add_device_spi(dk_spi_devices, ARRAY_SIZE(dk_spi_devices));
|
||||
#ifdef CONFIG_MTD_AT91_DATAFLASH_CARD
|
||||
|
@ -91,6 +91,14 @@ static struct at91_mmc_data __initdata eb9200_mmc_data = {
|
||||
.wire4 = 1,
|
||||
};
|
||||
|
||||
static struct i2c_board_info __initdata eb9200_i2c_devices[] = {
|
||||
{
|
||||
I2C_BOARD_INFO("at24c", 0x50),
|
||||
.type = "24c512",
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
static void __init eb9200_board_init(void)
|
||||
{
|
||||
/* Serial */
|
||||
@ -102,7 +110,7 @@ static void __init eb9200_board_init(void)
|
||||
/* USB Device */
|
||||
at91_add_device_udc(&eb9200_udc_data);
|
||||
/* I2C */
|
||||
at91_add_device_i2c();
|
||||
at91_add_device_i2c(eb9200_i2c_devices, ARRAY_SIZE(eb9200_i2c_devices));
|
||||
/* Compact Flash */
|
||||
at91_add_device_cf(&eb9200_cf_data);
|
||||
/* SPI */
|
||||
|
@ -145,7 +145,7 @@ static void __init ek_board_init(void)
|
||||
at91_add_device_udc(&ek_udc_data);
|
||||
at91_set_multi_drive(ek_udc_data.pullup_pin, 1); /* pullup_pin is connected to reset */
|
||||
/* I2C */
|
||||
at91_add_device_i2c();
|
||||
at91_add_device_i2c(ek_i2c_devices, ARRAY_SIZE(ek_i2c_devices));
|
||||
/* SPI */
|
||||
at91_add_device_spi(ek_spi_devices, ARRAY_SIZE(ek_spi_devices));
|
||||
#ifdef CONFIG_MTD_AT91_DATAFLASH_CARD
|
||||
|
@ -92,7 +92,7 @@ static void __init kafa_board_init(void)
|
||||
/* USB Device */
|
||||
at91_add_device_udc(&kafa_udc_data);
|
||||
/* I2C */
|
||||
at91_add_device_i2c();
|
||||
at91_add_device_i2c(NULL, 0);
|
||||
/* SPI */
|
||||
at91_add_device_spi(NULL, 0);
|
||||
}
|
||||
|
@ -124,7 +124,7 @@ static void __init kb9202_board_init(void)
|
||||
/* MMC */
|
||||
at91_add_device_mmc(0, &kb9202_mmc_data);
|
||||
/* I2C */
|
||||
at91_add_device_i2c();
|
||||
at91_add_device_i2c(NULL, 0);
|
||||
/* SPI */
|
||||
at91_add_device_spi(NULL, 0);
|
||||
/* NAND */
|
||||
|
@ -139,7 +139,7 @@ static void __init picotux200_board_init(void)
|
||||
// at91_add_device_udc(&picotux200_udc_data);
|
||||
// at91_set_multi_drive(picotux200_udc_data.pullup_pin, 1); /* pullup_pin is connected to reset */
|
||||
/* I2C */
|
||||
at91_add_device_i2c();
|
||||
at91_add_device_i2c(NULL, 0);
|
||||
/* SPI */
|
||||
// at91_add_device_spi(picotux200_spi_devices, ARRAY_SIZE(picotux200_spi_devices));
|
||||
#ifdef CONFIG_MTD_AT91_DATAFLASH_CARD
|
||||
|
@ -189,7 +189,7 @@ static void __init ek_board_init(void)
|
||||
/* MMC */
|
||||
at91_add_device_mmc(0, &ek_mmc_data);
|
||||
/* I2C */
|
||||
at91_add_device_i2c();
|
||||
at91_add_device_i2c(NULL, 0);
|
||||
}
|
||||
|
||||
MACHINE_START(AT91SAM9260EK, "Atmel AT91SAM9260-EK")
|
||||
|
@ -382,14 +382,14 @@ static struct platform_device ek_button_device = {
|
||||
|
||||
static void __init ek_add_device_buttons(void)
|
||||
{
|
||||
at91_set_gpio_input(AT91_PIN_PB27, 0); /* btn0 */
|
||||
at91_set_deglitch(AT91_PIN_PB27, 1);
|
||||
at91_set_gpio_input(AT91_PIN_PB26, 0); /* btn1 */
|
||||
at91_set_deglitch(AT91_PIN_PB26, 1);
|
||||
at91_set_gpio_input(AT91_PIN_PB25, 0); /* btn2 */
|
||||
at91_set_deglitch(AT91_PIN_PB25, 1);
|
||||
at91_set_gpio_input(AT91_PIN_PB24, 0); /* btn3 */
|
||||
at91_set_deglitch(AT91_PIN_PB24, 1);
|
||||
at91_set_gpio_input(AT91_PIN_PA27, 0); /* btn0 */
|
||||
at91_set_deglitch(AT91_PIN_PA27, 1);
|
||||
at91_set_gpio_input(AT91_PIN_PA26, 0); /* btn1 */
|
||||
at91_set_deglitch(AT91_PIN_PA26, 1);
|
||||
at91_set_gpio_input(AT91_PIN_PA25, 0); /* btn2 */
|
||||
at91_set_deglitch(AT91_PIN_PA25, 1);
|
||||
at91_set_gpio_input(AT91_PIN_PA24, 0); /* btn3 */
|
||||
at91_set_deglitch(AT91_PIN_PA24, 1);
|
||||
|
||||
platform_device_register(&ek_button_device);
|
||||
}
|
||||
@ -406,7 +406,7 @@ static void __init ek_board_init(void)
|
||||
/* USB Device */
|
||||
at91_add_device_udc(&ek_udc_data);
|
||||
/* I2C */
|
||||
at91_add_device_i2c();
|
||||
at91_add_device_i2c(NULL, 0);
|
||||
/* NAND */
|
||||
at91_add_device_nand(&ek_nand_data);
|
||||
/* DM9000 ethernet */
|
||||
|
@ -291,7 +291,7 @@ static void __init ek_board_init(void)
|
||||
/* NAND */
|
||||
at91_add_device_nand(&ek_nand_data);
|
||||
/* I2C */
|
||||
at91_add_device_i2c();
|
||||
at91_add_device_i2c(NULL, 0);
|
||||
/* LCD Controller */
|
||||
at91_add_device_lcdc(&ek_lcdc_data);
|
||||
/* AC97 */
|
||||
|
@ -181,7 +181,7 @@ static void __init ek_board_init(void)
|
||||
/* Serial */
|
||||
at91_add_device_serial();
|
||||
/* I2C */
|
||||
at91_add_device_i2c();
|
||||
at91_add_device_i2c(NULL, 0);
|
||||
/* NAND */
|
||||
at91_add_device_nand(&ek_nand_data);
|
||||
/* SPI */
|
||||
|
@ -351,7 +351,7 @@ static void init_programmable_clock(struct clk *clk)
|
||||
pckr = at91_sys_read(AT91_PMC_PCKR(clk->id));
|
||||
parent = at91_css_to_clk(pckr & AT91_PMC_CSS);
|
||||
clk->parent = parent;
|
||||
clk->rate_hz = parent->rate_hz / (1 << ((pckr >> 2) & 3));
|
||||
clk->rate_hz = parent->rate_hz / (1 << ((pckr & AT91_PMC_PRES) >> 2));
|
||||
}
|
||||
|
||||
#endif /* CONFIG_AT91_PROGRAMMABLE_CLOCKS */
|
||||
@ -587,8 +587,11 @@ int __init at91_clock_init(unsigned long main_clock)
|
||||
mckr = at91_sys_read(AT91_PMC_MCKR);
|
||||
mck.parent = at91_css_to_clk(mckr & AT91_PMC_CSS);
|
||||
freq = mck.parent->rate_hz;
|
||||
freq /= (1 << ((mckr >> 2) & 3)); /* prescale */
|
||||
mck.rate_hz = freq / (1 + ((mckr >> 8) & 3)); /* mdiv */
|
||||
freq /= (1 << ((mckr & AT91_PMC_PRES) >> 2)); /* prescale */
|
||||
if (cpu_is_at91rm9200())
|
||||
mck.rate_hz = freq / (1 + ((mckr & AT91_PMC_MDIV) >> 8)); /* mdiv */
|
||||
else
|
||||
mck.rate_hz = freq / (1 << ((mckr & AT91_PMC_MDIV) >> 8)); /* mdiv */
|
||||
|
||||
/* Register the PMC's standard clocks */
|
||||
for (i = 0; i < ARRAY_SIZE(standard_pmc_clocks); i++)
|
||||
|
@ -43,12 +43,46 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#define INTENNUM_OFF 0x8
|
||||
#define INTDISNUM_OFF 0xC
|
||||
#define INTCNTL_OFF 0x00
|
||||
#define NIMASK_OFF 0x04
|
||||
#define INTENNUM_OFF 0x08
|
||||
#define INTDISNUM_OFF 0x0C
|
||||
#define INTENABLEH_OFF 0x10
|
||||
#define INTENABLEL_OFF 0x14
|
||||
#define INTTYPEH_OFF 0x18
|
||||
#define INTTYPEL_OFF 0x1C
|
||||
#define NIPRIORITY_OFF(x) (0x20+4*(7-(x)))
|
||||
#define NIVECSR_OFF 0x40
|
||||
#define FIVECSR_OFF 0x44
|
||||
#define INTSRCH_OFF 0x48
|
||||
#define INTSRCL_OFF 0x4C
|
||||
#define INTFRCH_OFF 0x50
|
||||
#define INTFRCL_OFF 0x54
|
||||
#define NIPNDH_OFF 0x58
|
||||
#define NIPNDL_OFF 0x5C
|
||||
#define FIPNDH_OFF 0x60
|
||||
#define FIPNDL_OFF 0x64
|
||||
|
||||
#define VA_AITC_BASE IO_ADDRESS(IMX_AITC_BASE)
|
||||
#define IMX_AITC_INTDISNUM (VA_AITC_BASE + INTDISNUM_OFF)
|
||||
#define IMX_AITC_INTCNTL (VA_AITC_BASE + INTCNTL_OFF)
|
||||
#define IMX_AITC_NIMASK (VA_AITC_BASE + NIMASK_OFF)
|
||||
#define IMX_AITC_INTENNUM (VA_AITC_BASE + INTENNUM_OFF)
|
||||
#define IMX_AITC_INTDISNUM (VA_AITC_BASE + INTDISNUM_OFF)
|
||||
#define IMX_AITC_INTENABLEH (VA_AITC_BASE + INTENABLEH_OFF)
|
||||
#define IMX_AITC_INTENABLEL (VA_AITC_BASE + INTENABLEL_OFF)
|
||||
#define IMX_AITC_INTTYPEH (VA_AITC_BASE + INTTYPEH_OFF)
|
||||
#define IMX_AITC_INTTYPEL (VA_AITC_BASE + INTTYPEL_OFF)
|
||||
#define IMX_AITC_NIPRIORITY(x) (VA_AITC_BASE + NIPRIORITY_OFF(x))
|
||||
#define IMX_AITC_NIVECSR (VA_AITC_BASE + NIVECSR_OFF)
|
||||
#define IMX_AITC_FIVECSR (VA_AITC_BASE + FIVECSR_OFF)
|
||||
#define IMX_AITC_INTSRCH (VA_AITC_BASE + INTSRCH_OFF)
|
||||
#define IMX_AITC_INTSRCL (VA_AITC_BASE + INTSRCL_OFF)
|
||||
#define IMX_AITC_INTFRCH (VA_AITC_BASE + INTFRCH_OFF)
|
||||
#define IMX_AITC_INTFRCL (VA_AITC_BASE + INTFRCL_OFF)
|
||||
#define IMX_AITC_NIPNDH (VA_AITC_BASE + NIPNDH_OFF)
|
||||
#define IMX_AITC_NIPNDL (VA_AITC_BASE + NIPNDL_OFF)
|
||||
#define IMX_AITC_FIPNDH (VA_AITC_BASE + FIPNDH_OFF)
|
||||
#define IMX_AITC_FIPNDL (VA_AITC_BASE + FIPNDL_OFF)
|
||||
|
||||
#if 0
|
||||
#define DEBUG_IRQ(fmt...) printk(fmt)
|
||||
@ -222,7 +256,12 @@ imx_init_irq(void)
|
||||
|
||||
DEBUG_IRQ("Initializing imx interrupts\n");
|
||||
|
||||
/* Mask all interrupts initially */
|
||||
/* Disable all interrupts initially. */
|
||||
/* Do not rely on the bootloader. */
|
||||
__raw_writel(0, IMX_AITC_INTENABLEH);
|
||||
__raw_writel(0, IMX_AITC_INTENABLEL);
|
||||
|
||||
/* Mask all GPIO interrupts as well */
|
||||
IMR(0) = 0;
|
||||
IMR(1) = 0;
|
||||
IMR(2) = 0;
|
||||
@ -245,6 +284,6 @@ imx_init_irq(void)
|
||||
set_irq_chained_handler(GPIO_INT_PORTC, imx_gpioc_demux_handler);
|
||||
set_irq_chained_handler(GPIO_INT_PORTD, imx_gpiod_demux_handler);
|
||||
|
||||
/* Disable all interrupts initially. */
|
||||
/* In IMX this is done in the bootloader. */
|
||||
/* Release masking of interrupts according to priority */
|
||||
__raw_writel(-1, IMX_AITC_NIMASK);
|
||||
}
|
||||
|
@ -146,7 +146,7 @@ static struct clk pxa27x_clks[] = {
|
||||
INIT_CKEN("MMCCLK", MMC, 19500000, 0, &pxa_device_mci.dev),
|
||||
INIT_CKEN("FICPCLK", FICP, 48000000, 0, &pxa_device_ficp.dev),
|
||||
|
||||
INIT_CKEN("USBCLK", USB, 48000000, 0, &pxa27x_device_ohci.dev),
|
||||
INIT_CKEN("USBCLK", USBHOST, 48000000, 0, &pxa27x_device_ohci.dev),
|
||||
INIT_CKEN("I2CCLK", PWRI2C, 13000000, 0, &pxa27x_device_i2c_power.dev),
|
||||
INIT_CKEN("KBDCLK", KEYPAD, 32768, 0, NULL),
|
||||
|
||||
|
@ -23,8 +23,11 @@
|
||||
static struct pxa3xx_mfp_addr_map pxa320_mfp_addr_map[] __initdata = {
|
||||
|
||||
MFP_ADDR_X(GPIO0, GPIO4, 0x0124),
|
||||
MFP_ADDR_X(GPIO5, GPIO26, 0x028C),
|
||||
MFP_ADDR_X(GPIO27, GPIO62, 0x0400),
|
||||
MFP_ADDR_X(GPIO5, GPIO9, 0x028C),
|
||||
MFP_ADDR(GPIO10, 0x0458),
|
||||
MFP_ADDR_X(GPIO11, GPIO26, 0x02A0),
|
||||
MFP_ADDR_X(GPIO27, GPIO48, 0x0400),
|
||||
MFP_ADDR_X(GPIO49, GPIO62, 0x045C),
|
||||
MFP_ADDR_X(GPIO63, GPIO73, 0x04B4),
|
||||
MFP_ADDR_X(GPIO74, GPIO98, 0x04F0),
|
||||
MFP_ADDR_X(GPIO99, GPIO127, 0x0600),
|
||||
|
@ -309,6 +309,7 @@ void ssp_exit(struct ssp_dev *dev)
|
||||
|
||||
if (dev->port > PXA_SSP_PORTS || dev->port == 0) {
|
||||
printk(KERN_WARNING "SSP: tried to close invalid port\n");
|
||||
mutex_unlock(&mutex);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
# see Documentation/kbuild/kconfig-language.txt.
|
||||
#
|
||||
|
||||
mainmenu "uClinux/Blackfin (w/o MMU) Kernel Configuration"
|
||||
mainmenu "Blackfin Kernel Configuration"
|
||||
|
||||
config MMU
|
||||
bool
|
||||
@ -29,10 +29,6 @@ config ZONE_DMA
|
||||
bool
|
||||
default y
|
||||
|
||||
config BFIN
|
||||
bool
|
||||
default y
|
||||
|
||||
config SEMAPHORE_SLEEPERS
|
||||
bool
|
||||
default y
|
||||
@ -50,7 +46,7 @@ config GENERIC_HARDIRQS
|
||||
default y
|
||||
|
||||
config GENERIC_IRQ_PROBE
|
||||
bool
|
||||
bool
|
||||
default y
|
||||
|
||||
config GENERIC_TIME
|
||||
@ -69,11 +65,6 @@ config GENERIC_CALIBRATE_DELAY
|
||||
bool
|
||||
default y
|
||||
|
||||
config IRQCHIP_DEMUX_GPIO
|
||||
bool
|
||||
depends on (BF52x || BF53x || BF561 || BF54x)
|
||||
default y
|
||||
|
||||
source "init/Kconfig"
|
||||
source "kernel/Kconfig.preempt"
|
||||
|
||||
@ -140,6 +131,11 @@ config BF544
|
||||
help
|
||||
BF544 Processor Support.
|
||||
|
||||
config BF547
|
||||
bool "BF547"
|
||||
help
|
||||
BF547 Processor Support.
|
||||
|
||||
config BF548
|
||||
bool "BF548"
|
||||
help
|
||||
@ -166,11 +162,11 @@ choice
|
||||
|
||||
config BF_REV_0_0
|
||||
bool "0.0"
|
||||
depends on (BF549 || BF527)
|
||||
depends on (BF52x || BF54x)
|
||||
|
||||
config BF_REV_0_1
|
||||
bool "0.2"
|
||||
depends on (BF549 || BF527)
|
||||
bool "0.1"
|
||||
depends on (BF52x || BF54x)
|
||||
|
||||
config BF_REV_0_2
|
||||
bool "0.2"
|
||||
@ -208,7 +204,7 @@ config BF53x
|
||||
|
||||
config BF54x
|
||||
bool
|
||||
depends on (BF542 || BF544 || BF548 || BF549)
|
||||
depends on (BF542 || BF544 || BF547 || BF548 || BF549)
|
||||
default y
|
||||
|
||||
config BFIN_DUAL_CORE
|
||||
@ -221,95 +217,6 @@ config BFIN_SINGLE_CORE
|
||||
depends on !BFIN_DUAL_CORE
|
||||
default y
|
||||
|
||||
choice
|
||||
prompt "System type"
|
||||
default BFIN533_STAMP
|
||||
help
|
||||
Do NOT change the board here. Please use the top level
|
||||
configuration to ensure that all the other settings are
|
||||
correct.
|
||||
|
||||
config BFIN527_EZKIT
|
||||
bool "BF527-EZKIT"
|
||||
depends on (BF522 || BF525 || BF527)
|
||||
help
|
||||
BF533-EZKIT-LITE board Support.
|
||||
|
||||
config BFIN533_EZKIT
|
||||
bool "BF533-EZKIT"
|
||||
depends on (BF533 || BF532 || BF531)
|
||||
help
|
||||
BF533-EZKIT-LITE board Support.
|
||||
|
||||
config BFIN533_STAMP
|
||||
bool "BF533-STAMP"
|
||||
depends on (BF533 || BF532 || BF531)
|
||||
help
|
||||
BF533-STAMP board Support.
|
||||
|
||||
config BFIN537_STAMP
|
||||
bool "BF537-STAMP"
|
||||
depends on (BF537 || BF536 || BF534)
|
||||
help
|
||||
BF537-STAMP board Support.
|
||||
|
||||
config BFIN533_BLUETECHNIX_CM
|
||||
bool "Bluetechnix CM-BF533"
|
||||
depends on (BF533)
|
||||
help
|
||||
CM-BF533 support for EVAL- and DEV-Board.
|
||||
|
||||
config BFIN537_BLUETECHNIX_CM
|
||||
bool "Bluetechnix CM-BF537"
|
||||
depends on (BF537)
|
||||
help
|
||||
CM-BF537 support for EVAL- and DEV-Board.
|
||||
|
||||
config BFIN548_EZKIT
|
||||
bool "BF548-EZKIT"
|
||||
depends on (BF548 || BF549)
|
||||
help
|
||||
BFIN548-EZKIT board Support.
|
||||
|
||||
config BFIN561_BLUETECHNIX_CM
|
||||
bool "Bluetechnix CM-BF561"
|
||||
depends on (BF561)
|
||||
help
|
||||
CM-BF561 support for EVAL- and DEV-Board.
|
||||
|
||||
config BFIN561_EZKIT
|
||||
bool "BF561-EZKIT"
|
||||
depends on (BF561)
|
||||
help
|
||||
BF561-EZKIT-LITE board Support.
|
||||
|
||||
config BFIN561_TEPLA
|
||||
bool "BF561-TEPLA"
|
||||
depends on (BF561)
|
||||
help
|
||||
BF561-TEPLA board Support.
|
||||
|
||||
config PNAV10
|
||||
bool "PNAV 1.0 board"
|
||||
depends on (BF537)
|
||||
help
|
||||
PNAV 1.0 board Support.
|
||||
|
||||
config H8606_HVSISTEMAS
|
||||
bool "HV Sistemas H8606"
|
||||
depends on (BF532)
|
||||
help
|
||||
HV Sistemas H8606 board support.
|
||||
|
||||
config GENERIC_BOARD
|
||||
bool "Custom"
|
||||
depends on (BF537 || BF536 \
|
||||
|| BF534 || BF561 || BF535 || BF533 || BF532 || BF531)
|
||||
help
|
||||
GENERIC or Custom board Support.
|
||||
|
||||
endchoice
|
||||
|
||||
config MEM_GENERIC_BOARD
|
||||
bool
|
||||
depends on GENERIC_BOARD
|
||||
@ -389,9 +296,9 @@ config BFIN_KERNEL_CLOCK
|
||||
configuration.
|
||||
|
||||
config PLL_BYPASS
|
||||
bool "Bypass PLL"
|
||||
depends on BFIN_KERNEL_CLOCK
|
||||
default n
|
||||
bool "Bypass PLL"
|
||||
depends on BFIN_KERNEL_CLOCK
|
||||
default n
|
||||
|
||||
config CLKIN_HALF
|
||||
bool "Half Clock In"
|
||||
@ -468,11 +375,11 @@ config MAX_VCO_HZ
|
||||
default 500000000 if BF534
|
||||
default 400000000 if BF536
|
||||
default 600000000 if BF537
|
||||
default 533000000 if BF538
|
||||
default 533000000 if BF539
|
||||
default 533333333 if BF538
|
||||
default 533333333 if BF539
|
||||
default 600000000 if BF542
|
||||
default 533000000 if BF544
|
||||
default 533000000 if BF549
|
||||
default 533333333 if BF544
|
||||
default 533333333 if BF549
|
||||
default 600000000 if BF561
|
||||
|
||||
config MIN_VCO_HZ
|
||||
@ -481,7 +388,7 @@ config MIN_VCO_HZ
|
||||
|
||||
config MAX_SCLK_HZ
|
||||
int
|
||||
default 133000000
|
||||
default 133333333
|
||||
|
||||
config MIN_SCLK_HZ
|
||||
int
|
||||
@ -959,6 +866,20 @@ config BANK_3
|
||||
default 0x99B3
|
||||
endmenu
|
||||
|
||||
config EBIU_MBSCTLVAL
|
||||
hex "EBIU Bank Select Control Register"
|
||||
depends on BF54x
|
||||
default 0
|
||||
|
||||
config EBIU_MODEVAL
|
||||
hex "Flash Memory Mode Control Register"
|
||||
depends on BF54x
|
||||
default 1
|
||||
|
||||
config EBIU_FCTLVAL
|
||||
hex "Flash Memory Bank Control Register"
|
||||
depends on BF54x
|
||||
default 6
|
||||
endmenu
|
||||
|
||||
#############################################################################
|
||||
@ -1075,174 +996,7 @@ source "fs/Kconfig"
|
||||
|
||||
source "kernel/Kconfig.instrumentation"
|
||||
|
||||
menu "Kernel hacking"
|
||||
|
||||
source "lib/Kconfig.debug"
|
||||
|
||||
config DEBUG_HWERR
|
||||
bool "Hardware error interrupt debugging"
|
||||
depends on DEBUG_KERNEL
|
||||
help
|
||||
When enabled, the hardware error interrupt is never disabled, and
|
||||
will happen immediately when an error condition occurs. This comes
|
||||
at a slight cost in code size, but is necessary if you are getting
|
||||
hardware error interrupts and need to know where they are coming
|
||||
from.
|
||||
|
||||
config DEBUG_ICACHE_CHECK
|
||||
bool "Check Instruction cache coherency"
|
||||
depends on DEBUG_KERNEL
|
||||
depends on DEBUG_HWERR
|
||||
help
|
||||
Say Y here if you are getting weird unexplained errors. This will
|
||||
ensure that icache is what SDRAM says it should be by doing a
|
||||
byte wise comparison between SDRAM and instruction cache. This
|
||||
also relocates the irq_panic() function to L1 memory, (which is
|
||||
un-cached).
|
||||
|
||||
config DEBUG_HUNT_FOR_ZERO
|
||||
bool "Catch NULL pointer reads/writes"
|
||||
default y
|
||||
help
|
||||
Say Y here to catch reads/writes to anywhere in the memory range
|
||||
from 0x0000 - 0x0FFF (the first 4k) of memory. This is useful in
|
||||
catching common programming errors such as NULL pointer dereferences.
|
||||
|
||||
Misbehaving applications will be killed (generate a SEGV) while the
|
||||
kernel will trigger a panic.
|
||||
|
||||
Enabling this option will take up an extra entry in CPLB table.
|
||||
Otherwise, there is no extra overhead.
|
||||
|
||||
config DEBUG_BFIN_HWTRACE_ON
|
||||
bool "Turn on Blackfin's Hardware Trace"
|
||||
default y
|
||||
help
|
||||
All Blackfins include a Trace Unit which stores a history of the last
|
||||
16 changes in program flow taken by the program sequencer. The history
|
||||
allows the user to recreate the program sequencer’s recent path. This
|
||||
can be handy when an application dies - we print out the execution
|
||||
path of how it got to the offending instruction.
|
||||
|
||||
By turning this off, you may save a tiny amount of power.
|
||||
|
||||
choice
|
||||
prompt "Omit loop Tracing"
|
||||
default DEBUG_BFIN_HWTRACE_COMPRESSION_OFF
|
||||
depends on DEBUG_BFIN_HWTRACE_ON
|
||||
help
|
||||
The trace buffer can be configured to omit recording of changes in
|
||||
program flow that match either the last entry or one of the last
|
||||
two entries. Omitting one of these entries from the record prevents
|
||||
the trace buffer from overflowing because of any sort of loop (for, do
|
||||
while, etc) in the program.
|
||||
|
||||
Because zero-overhead Hardware loops are not recorded in the trace buffer,
|
||||
this feature can be used to prevent trace overflow from loops that
|
||||
are nested four deep.
|
||||
|
||||
config DEBUG_BFIN_HWTRACE_COMPRESSION_OFF
|
||||
bool "Trace all Loops"
|
||||
help
|
||||
The trace buffer records all changes of flow
|
||||
|
||||
config DEBUG_BFIN_HWTRACE_COMPRESSION_ONE
|
||||
bool "Compress single-level loops"
|
||||
help
|
||||
The trace buffer does not record single loops - helpful if trace
|
||||
is spinning on a while or do loop.
|
||||
|
||||
config DEBUG_BFIN_HWTRACE_COMPRESSION_TWO
|
||||
bool "Compress two-level loops"
|
||||
help
|
||||
The trace buffer does not record loops two levels deep. Helpful if
|
||||
the trace is spinning in a nested loop
|
||||
|
||||
endchoice
|
||||
|
||||
config DEBUG_BFIN_HWTRACE_COMPRESSION
|
||||
int
|
||||
depends on DEBUG_BFIN_HWTRACE_ON
|
||||
default 0 if DEBUG_BFIN_HWTRACE_COMPRESSION_OFF
|
||||
default 1 if DEBUG_BFIN_HWTRACE_COMPRESSION_ONE
|
||||
default 2 if DEBUG_BFIN_HWTRACE_COMPRESSION_TWO
|
||||
|
||||
|
||||
config DEBUG_BFIN_HWTRACE_EXPAND
|
||||
bool "Expand Trace Buffer greater than 16 entries"
|
||||
depends on DEBUG_BFIN_HWTRACE_ON
|
||||
default n
|
||||
help
|
||||
By selecting this option, every time the 16 hardware entries in
|
||||
the Blackfin's HW Trace buffer are full, the kernel will move them
|
||||
into a software buffer, for dumping when there is an issue. This
|
||||
has a great impact on performance, (an interrupt every 16 change of
|
||||
flows) and should normally be turned off, except in those nasty
|
||||
debugging sessions
|
||||
|
||||
config DEBUG_BFIN_HWTRACE_EXPAND_LEN
|
||||
int "Size of Trace buffer (in power of 2k)"
|
||||
range 0 4
|
||||
depends on DEBUG_BFIN_HWTRACE_EXPAND
|
||||
default 1
|
||||
help
|
||||
This sets the size of the software buffer that the trace information
|
||||
is kept in.
|
||||
0 for (2^0) 1k, or 256 entries,
|
||||
1 for (2^1) 2k, or 512 entries,
|
||||
2 for (2^2) 4k, or 1024 entries,
|
||||
3 for (2^3) 8k, or 2048 entries,
|
||||
4 for (2^4) 16k, or 4096 entries
|
||||
|
||||
config DEBUG_BFIN_NO_KERN_HWTRACE
|
||||
bool "Trace user apps (turn off hwtrace in kernel)"
|
||||
depends on DEBUG_BFIN_HWTRACE_ON
|
||||
default n
|
||||
help
|
||||
Some pieces of the kernel contain a lot of flow changes which can
|
||||
quickly fill up the hardware trace buffer. When debugging crashes,
|
||||
the hardware trace may indicate that the problem lies in kernel
|
||||
space when in reality an application is buggy.
|
||||
|
||||
Say Y here to disable hardware tracing in some known "jumpy" pieces
|
||||
of code so that the trace buffer will extend further back.
|
||||
|
||||
config EARLY_PRINTK
|
||||
bool "Early printk"
|
||||
default n
|
||||
help
|
||||
This option enables special console drivers which allow the kernel
|
||||
to print messages very early in the bootup process.
|
||||
|
||||
This is useful for kernel debugging when your machine crashes very
|
||||
early before the console code is initialized. After enabling this
|
||||
feature, you must add "earlyprintk=serial,uart0,57600" to the
|
||||
command line (bootargs). It is safe to say Y here in all cases, as
|
||||
all of this lives in the init section and is thrown away after the
|
||||
kernel boots completely.
|
||||
|
||||
config DUAL_CORE_TEST_MODULE
|
||||
tristate "Dual Core Test Module"
|
||||
depends on (BF561)
|
||||
default n
|
||||
help
|
||||
Say Y here to build-in dual core test module for dual core test.
|
||||
|
||||
config CPLB_INFO
|
||||
bool "Display the CPLB information"
|
||||
help
|
||||
Display the CPLB information.
|
||||
|
||||
config ACCESS_CHECK
|
||||
bool "Check the user pointer address"
|
||||
default y
|
||||
help
|
||||
Usually the pointer transfer from user space is checked to see if its
|
||||
address is in the kernel space.
|
||||
|
||||
Say N here to disable that check to improve the performance.
|
||||
|
||||
endmenu
|
||||
source "arch/blackfin/Kconfig.debug"
|
||||
|
||||
source "security/Kconfig"
|
||||
|
||||
|
178
arch/blackfin/Kconfig.debug
Normal file
178
arch/blackfin/Kconfig.debug
Normal file
@ -0,0 +1,178 @@
|
||||
menu "Kernel hacking"
|
||||
|
||||
source "lib/Kconfig.debug"
|
||||
|
||||
config DEBUG_MMRS
|
||||
bool "Generate Blackfin MMR tree"
|
||||
select DEBUG_FS
|
||||
help
|
||||
Create a tree of Blackfin MMRs via the debugfs tree. If
|
||||
you enable this, you will find all MMRs laid out in the
|
||||
/sys/kernel/debug/blackfin/ directory where you can read/write
|
||||
MMRs directly from userspace. This is obviously just a debug
|
||||
feature.
|
||||
|
||||
config DEBUG_HWERR
|
||||
bool "Hardware error interrupt debugging"
|
||||
depends on DEBUG_KERNEL
|
||||
help
|
||||
When enabled, the hardware error interrupt is never disabled, and
|
||||
will happen immediately when an error condition occurs. This comes
|
||||
at a slight cost in code size, but is necessary if you are getting
|
||||
hardware error interrupts and need to know where they are coming
|
||||
from.
|
||||
|
||||
config DEBUG_ICACHE_CHECK
|
||||
bool "Check Instruction cache coherency"
|
||||
depends on DEBUG_KERNEL
|
||||
depends on DEBUG_HWERR
|
||||
help
|
||||
Say Y here if you are getting weird unexplained errors. This will
|
||||
ensure that icache is what SDRAM says it should be by doing a
|
||||
byte wise comparison between SDRAM and instruction cache. This
|
||||
also relocates the irq_panic() function to L1 memory, (which is
|
||||
un-cached).
|
||||
|
||||
config DEBUG_HUNT_FOR_ZERO
|
||||
bool "Catch NULL pointer reads/writes"
|
||||
default y
|
||||
help
|
||||
Say Y here to catch reads/writes to anywhere in the memory range
|
||||
from 0x0000 - 0x0FFF (the first 4k) of memory. This is useful in
|
||||
catching common programming errors such as NULL pointer dereferences.
|
||||
|
||||
Misbehaving applications will be killed (generate a SEGV) while the
|
||||
kernel will trigger a panic.
|
||||
|
||||
Enabling this option will take up an extra entry in CPLB table.
|
||||
Otherwise, there is no extra overhead.
|
||||
|
||||
config DEBUG_BFIN_HWTRACE_ON
|
||||
bool "Turn on Blackfin's Hardware Trace"
|
||||
default y
|
||||
help
|
||||
All Blackfins include a Trace Unit which stores a history of the last
|
||||
16 changes in program flow taken by the program sequencer. The history
|
||||
allows the user to recreate the program sequencer’s recent path. This
|
||||
can be handy when an application dies - we print out the execution
|
||||
path of how it got to the offending instruction.
|
||||
|
||||
By turning this off, you may save a tiny amount of power.
|
||||
|
||||
choice
|
||||
prompt "Omit loop Tracing"
|
||||
default DEBUG_BFIN_HWTRACE_COMPRESSION_OFF
|
||||
depends on DEBUG_BFIN_HWTRACE_ON
|
||||
help
|
||||
The trace buffer can be configured to omit recording of changes in
|
||||
program flow that match either the last entry or one of the last
|
||||
two entries. Omitting one of these entries from the record prevents
|
||||
the trace buffer from overflowing because of any sort of loop (for, do
|
||||
while, etc) in the program.
|
||||
|
||||
Because zero-overhead Hardware loops are not recorded in the trace buffer,
|
||||
this feature can be used to prevent trace overflow from loops that
|
||||
are nested four deep.
|
||||
|
||||
config DEBUG_BFIN_HWTRACE_COMPRESSION_OFF
|
||||
bool "Trace all Loops"
|
||||
help
|
||||
The trace buffer records all changes of flow
|
||||
|
||||
config DEBUG_BFIN_HWTRACE_COMPRESSION_ONE
|
||||
bool "Compress single-level loops"
|
||||
help
|
||||
The trace buffer does not record single loops - helpful if trace
|
||||
is spinning on a while or do loop.
|
||||
|
||||
config DEBUG_BFIN_HWTRACE_COMPRESSION_TWO
|
||||
bool "Compress two-level loops"
|
||||
help
|
||||
The trace buffer does not record loops two levels deep. Helpful if
|
||||
the trace is spinning in a nested loop
|
||||
|
||||
endchoice
|
||||
|
||||
config DEBUG_BFIN_HWTRACE_COMPRESSION
|
||||
int
|
||||
depends on DEBUG_BFIN_HWTRACE_ON
|
||||
default 0 if DEBUG_BFIN_HWTRACE_COMPRESSION_OFF
|
||||
default 1 if DEBUG_BFIN_HWTRACE_COMPRESSION_ONE
|
||||
default 2 if DEBUG_BFIN_HWTRACE_COMPRESSION_TWO
|
||||
|
||||
|
||||
config DEBUG_BFIN_HWTRACE_EXPAND
|
||||
bool "Expand Trace Buffer greater than 16 entries"
|
||||
depends on DEBUG_BFIN_HWTRACE_ON
|
||||
default n
|
||||
help
|
||||
By selecting this option, every time the 16 hardware entries in
|
||||
the Blackfin's HW Trace buffer are full, the kernel will move them
|
||||
into a software buffer, for dumping when there is an issue. This
|
||||
has a great impact on performance, (an interrupt every 16 change of
|
||||
flows) and should normally be turned off, except in those nasty
|
||||
debugging sessions
|
||||
|
||||
config DEBUG_BFIN_HWTRACE_EXPAND_LEN
|
||||
int "Size of Trace buffer (in power of 2k)"
|
||||
range 0 4
|
||||
depends on DEBUG_BFIN_HWTRACE_EXPAND
|
||||
default 1
|
||||
help
|
||||
This sets the size of the software buffer that the trace information
|
||||
is kept in.
|
||||
0 for (2^0) 1k, or 256 entries,
|
||||
1 for (2^1) 2k, or 512 entries,
|
||||
2 for (2^2) 4k, or 1024 entries,
|
||||
3 for (2^3) 8k, or 2048 entries,
|
||||
4 for (2^4) 16k, or 4096 entries
|
||||
|
||||
config DEBUG_BFIN_NO_KERN_HWTRACE
|
||||
bool "Trace user apps (turn off hwtrace in kernel)"
|
||||
depends on DEBUG_BFIN_HWTRACE_ON
|
||||
default n
|
||||
help
|
||||
Some pieces of the kernel contain a lot of flow changes which can
|
||||
quickly fill up the hardware trace buffer. When debugging crashes,
|
||||
the hardware trace may indicate that the problem lies in kernel
|
||||
space when in reality an application is buggy.
|
||||
|
||||
Say Y here to disable hardware tracing in some known "jumpy" pieces
|
||||
of code so that the trace buffer will extend further back.
|
||||
|
||||
config EARLY_PRINTK
|
||||
bool "Early printk"
|
||||
default n
|
||||
help
|
||||
This option enables special console drivers which allow the kernel
|
||||
to print messages very early in the bootup process.
|
||||
|
||||
This is useful for kernel debugging when your machine crashes very
|
||||
early before the console code is initialized. After enabling this
|
||||
feature, you must add "earlyprintk=serial,uart0,57600" to the
|
||||
command line (bootargs). It is safe to say Y here in all cases, as
|
||||
all of this lives in the init section and is thrown away after the
|
||||
kernel boots completely.
|
||||
|
||||
config DUAL_CORE_TEST_MODULE
|
||||
tristate "Dual Core Test Module"
|
||||
depends on (BF561)
|
||||
default n
|
||||
help
|
||||
Say Y here to build-in dual core test module for dual core test.
|
||||
|
||||
config CPLB_INFO
|
||||
bool "Display the CPLB information"
|
||||
help
|
||||
Display the CPLB information.
|
||||
|
||||
config ACCESS_CHECK
|
||||
bool "Check the user pointer address"
|
||||
default y
|
||||
help
|
||||
Usually the pointer transfer from user space is checked to see if its
|
||||
address is in the kernel space.
|
||||
|
||||
Say N here to disable that check to improve the performance.
|
||||
|
||||
endmenu
|
@ -31,6 +31,7 @@ machine-$(CONFIG_BF536) := bf537
|
||||
machine-$(CONFIG_BF537) := bf537
|
||||
machine-$(CONFIG_BF542) := bf548
|
||||
machine-$(CONFIG_BF544) := bf548
|
||||
machine-$(CONFIG_BF547) := bf548
|
||||
machine-$(CONFIG_BF548) := bf548
|
||||
machine-$(CONFIG_BF549) := bf548
|
||||
machine-$(CONFIG_BF561) := bf561
|
||||
@ -48,6 +49,7 @@ cpu-$(CONFIG_BF536) := bf536
|
||||
cpu-$(CONFIG_BF537) := bf537
|
||||
cpu-$(CONFIG_BF542) := bf542
|
||||
cpu-$(CONFIG_BF544) := bf544
|
||||
cpu-$(CONFIG_BF547) := bf547
|
||||
cpu-$(CONFIG_BF548) := bf548
|
||||
cpu-$(CONFIG_BF549) := bf549
|
||||
cpu-$(CONFIG_BF561) := bf561
|
||||
|
@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.22.9
|
||||
# Linux kernel version: 2.6.22.12
|
||||
#
|
||||
# CONFIG_MMU is not set
|
||||
# CONFIG_FPU is not set
|
||||
@ -8,7 +8,6 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
|
||||
CONFIG_BLACKFIN=y
|
||||
CONFIG_ZONE_DMA=y
|
||||
CONFIG_BFIN=y
|
||||
CONFIG_SEMAPHORE_SLEEPERS=y
|
||||
CONFIG_GENERIC_FIND_NEXT_BIT=y
|
||||
CONFIG_GENERIC_HWEIGHT=y
|
||||
@ -18,7 +17,6 @@ CONFIG_GENERIC_IRQ_PROBE=y
|
||||
CONFIG_GENERIC_GPIO=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=14
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_IRQCHIP_DEMUX_GPIO=y
|
||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||
|
||||
#
|
||||
@ -127,6 +125,7 @@ CONFIG_BF527=y
|
||||
# CONFIG_BF537 is not set
|
||||
# CONFIG_BF542 is not set
|
||||
# CONFIG_BF544 is not set
|
||||
# CONFIG_BF547 is not set
|
||||
# CONFIG_BF548 is not set
|
||||
# CONFIG_BF549 is not set
|
||||
# CONFIG_BF561 is not set
|
||||
@ -140,19 +139,8 @@ CONFIG_BF_REV_0_0=y
|
||||
# CONFIG_BF_REV_NONE is not set
|
||||
CONFIG_BF52x=y
|
||||
CONFIG_BFIN_SINGLE_CORE=y
|
||||
CONFIG_BFIN527_EZKIT=y
|
||||
# CONFIG_BFIN533_EZKIT is not set
|
||||
# CONFIG_BFIN533_STAMP is not set
|
||||
# CONFIG_BFIN537_STAMP is not set
|
||||
# CONFIG_BFIN533_BLUETECHNIX_CM is not set
|
||||
# CONFIG_BFIN537_BLUETECHNIX_CM is not set
|
||||
# CONFIG_BFIN548_EZKIT is not set
|
||||
# CONFIG_BFIN561_BLUETECHNIX_CM is not set
|
||||
# CONFIG_BFIN561_EZKIT is not set
|
||||
# CONFIG_BFIN561_TEPLA is not set
|
||||
# CONFIG_PNAV10 is not set
|
||||
# CONFIG_GENERIC_BOARD is not set
|
||||
CONFIG_MEM_MT48LC32M16A2TG_75=y
|
||||
CONFIG_BFIN527_EZKIT=y
|
||||
|
||||
#
|
||||
# BF527 Specific Configuration
|
||||
@ -244,7 +232,7 @@ CONFIG_CLKIN_HZ=25000000
|
||||
# CONFIG_BFIN_KERNEL_CLOCK is not set
|
||||
CONFIG_MAX_VCO_HZ=600000000
|
||||
CONFIG_MIN_VCO_HZ=50000000
|
||||
CONFIG_MAX_SCLK_HZ=133333333
|
||||
CONFIG_MAX_SCLK_HZ=133000000
|
||||
CONFIG_MIN_SCLK_HZ=27000000
|
||||
|
||||
#
|
||||
@ -301,6 +289,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_RESOURCES_64BIT is not set
|
||||
CONFIG_ZONE_DMA_FLAG=1
|
||||
CONFIG_LARGE_ALLOCS=y
|
||||
# CONFIG_BFIN_GPTIMERS is not set
|
||||
CONFIG_BFIN_DMA_5XX=y
|
||||
# CONFIG_DMA_UNCACHED_2M is not set
|
||||
CONFIG_DMA_UNCACHED_1M=y
|
||||
@ -322,7 +311,7 @@ CONFIG_L1_MAX_PIECE=16
|
||||
#
|
||||
|
||||
#
|
||||
# EBIU_AMBCTL Global Control
|
||||
# EBIU_AMGCTL Global Control
|
||||
#
|
||||
CONFIG_C_AMCKEN=y
|
||||
CONFIG_C_CDPRIO=y
|
||||
@ -548,6 +537,7 @@ CONFIG_BFIN_NAND_CLE=2
|
||||
CONFIG_BFIN_NAND_ALE=1
|
||||
CONFIG_BFIN_NAND_READY=3
|
||||
CONFIG_MTD_NAND_IDS=m
|
||||
# CONFIG_MTD_NAND_BF5XX is not set
|
||||
# CONFIG_MTD_NAND_DISKONCHIP is not set
|
||||
# CONFIG_MTD_NAND_NANDSIM is not set
|
||||
# CONFIG_MTD_NAND_PLATFORM is not set
|
||||
@ -637,6 +627,7 @@ CONFIG_BFIN_MAC_RMII=y
|
||||
# CONFIG_DM9000 is not set
|
||||
CONFIG_NETDEV_1000=y
|
||||
CONFIG_NETDEV_10000=y
|
||||
# CONFIG_AX88180 is not set
|
||||
|
||||
#
|
||||
# Wireless LAN
|
||||
@ -708,7 +699,7 @@ CONFIG_INPUT_MISC=y
|
||||
# CONFIG_SPI_ADC_BF533 is not set
|
||||
# CONFIG_BF5xx_PFLAGS is not set
|
||||
# CONFIG_BF5xx_PPIFCD is not set
|
||||
# CONFIG_BF5xx_TIMERS is not set
|
||||
# CONFIG_BFIN_SIMPLE_TIMER is not set
|
||||
# CONFIG_BF5xx_PPI is not set
|
||||
# CONFIG_BFIN_SPORT is not set
|
||||
# CONFIG_BFIN_TIMER_LATENCY is not set
|
||||
|
@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.22.6
|
||||
# Linux kernel version: 2.6.22.12
|
||||
#
|
||||
# CONFIG_MMU is not set
|
||||
# CONFIG_FPU is not set
|
||||
@ -8,7 +8,6 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
|
||||
CONFIG_BLACKFIN=y
|
||||
CONFIG_ZONE_DMA=y
|
||||
CONFIG_BFIN=y
|
||||
CONFIG_SEMAPHORE_SLEEPERS=y
|
||||
CONFIG_GENERIC_FIND_NEXT_BIT=y
|
||||
CONFIG_GENERIC_HWEIGHT=y
|
||||
@ -18,7 +17,6 @@ CONFIG_GENERIC_IRQ_PROBE=y
|
||||
CONFIG_GENERIC_GPIO=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=14
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_IRQCHIP_DEMUX_GPIO=y
|
||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||
|
||||
#
|
||||
@ -64,7 +62,6 @@ CONFIG_FUTEX=y
|
||||
CONFIG_ANON_INODES=y
|
||||
CONFIG_EPOLL=y
|
||||
CONFIG_SIGNALFD=y
|
||||
CONFIG_TIMERFD=y
|
||||
CONFIG_EVENTFD=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3
|
||||
@ -117,6 +114,9 @@ CONFIG_PREEMPT_VOLUNTARY=y
|
||||
#
|
||||
# Processor and Board Settings
|
||||
#
|
||||
# CONFIG_BF522 is not set
|
||||
# CONFIG_BF525 is not set
|
||||
# CONFIG_BF527 is not set
|
||||
# CONFIG_BF531 is not set
|
||||
# CONFIG_BF532 is not set
|
||||
CONFIG_BF533=y
|
||||
@ -125,10 +125,12 @@ CONFIG_BF533=y
|
||||
# CONFIG_BF537 is not set
|
||||
# CONFIG_BF542 is not set
|
||||
# CONFIG_BF544 is not set
|
||||
# CONFIG_BF547 is not set
|
||||
# CONFIG_BF548 is not set
|
||||
# CONFIG_BF549 is not set
|
||||
# CONFIG_BF561 is not set
|
||||
# CONFIG_BF_REV_0_0 is not set
|
||||
# CONFIG_BF_REV_0_1 is not set
|
||||
# CONFIG_BF_REV_0_2 is not set
|
||||
CONFIG_BF_REV_0_3=y
|
||||
# CONFIG_BF_REV_0_4 is not set
|
||||
@ -137,18 +139,12 @@ CONFIG_BF_REV_0_3=y
|
||||
# CONFIG_BF_REV_NONE is not set
|
||||
CONFIG_BF53x=y
|
||||
CONFIG_BFIN_SINGLE_CORE=y
|
||||
CONFIG_MEM_MT48LC16M16A2TG_75=y
|
||||
CONFIG_BFIN533_EZKIT=y
|
||||
# CONFIG_BFIN533_STAMP is not set
|
||||
# CONFIG_BFIN537_STAMP is not set
|
||||
# CONFIG_BFIN533_BLUETECHNIX_CM is not set
|
||||
# CONFIG_BFIN537_BLUETECHNIX_CM is not set
|
||||
# CONFIG_BFIN548_EZKIT is not set
|
||||
# CONFIG_BFIN561_BLUETECHNIX_CM is not set
|
||||
# CONFIG_BFIN561_EZKIT is not set
|
||||
# CONFIG_BFIN561_TEPLA is not set
|
||||
# CONFIG_PNAV10 is not set
|
||||
# CONFIG_GENERIC_BOARD is not set
|
||||
CONFIG_MEM_MT48LC16M16A2TG_75=y
|
||||
# CONFIG_H8606_HVSISTEMAS is not set
|
||||
# CONFIG_GENERIC_BF533_BOARD is not set
|
||||
|
||||
#
|
||||
# BF533/2/1 Specific Configuration
|
||||
@ -198,7 +194,7 @@ CONFIG_CLKIN_HZ=27000000
|
||||
# CONFIG_BFIN_KERNEL_CLOCK is not set
|
||||
CONFIG_MAX_VCO_HZ=750000000
|
||||
CONFIG_MIN_VCO_HZ=50000000
|
||||
CONFIG_MAX_SCLK_HZ=133333333
|
||||
CONFIG_MAX_SCLK_HZ=133000000
|
||||
CONFIG_MIN_SCLK_HZ=27000000
|
||||
|
||||
#
|
||||
@ -255,6 +251,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_RESOURCES_64BIT is not set
|
||||
CONFIG_ZONE_DMA_FLAG=1
|
||||
CONFIG_LARGE_ALLOCS=y
|
||||
# CONFIG_BFIN_GPTIMERS is not set
|
||||
CONFIG_BFIN_DMA_5XX=y
|
||||
# CONFIG_DMA_UNCACHED_2M is not set
|
||||
CONFIG_DMA_UNCACHED_1M=y
|
||||
@ -276,7 +273,7 @@ CONFIG_L1_MAX_PIECE=16
|
||||
#
|
||||
|
||||
#
|
||||
# EBIU_AMBCTL Global Control
|
||||
# EBIU_AMGCTL Global Control
|
||||
#
|
||||
CONFIG_C_AMCKEN=y
|
||||
CONFIG_C_CDPRIO=y
|
||||
@ -526,14 +523,6 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
|
||||
CONFIG_MTD_BF5xx=m
|
||||
CONFIG_BFIN_FLASH_SIZE=0x400000
|
||||
CONFIG_EBIU_FLASH_BASE=0x20000000
|
||||
|
||||
#
|
||||
# FLASH_EBIU_AMBCTL Control
|
||||
#
|
||||
CONFIG_BFIN_FLASH_BANK_0=0x7BB0
|
||||
CONFIG_BFIN_FLASH_BANK_1=0x7BB0
|
||||
CONFIG_BFIN_FLASH_BANK_2=0x7BB0
|
||||
CONFIG_BFIN_FLASH_BANK_3=0x7BB0
|
||||
# CONFIG_MTD_UCLINUX is not set
|
||||
# CONFIG_MTD_PLATRAM is not set
|
||||
|
||||
@ -622,6 +611,7 @@ CONFIG_SMC91X=y
|
||||
# CONFIG_DM9000 is not set
|
||||
CONFIG_NETDEV_1000=y
|
||||
CONFIG_NETDEV_10000=y
|
||||
# CONFIG_AX88180 is not set
|
||||
|
||||
#
|
||||
# Wireless LAN
|
||||
@ -683,9 +673,9 @@ CONFIG_INPUT_EVDEV=m
|
||||
#
|
||||
# CONFIG_AD9960 is not set
|
||||
# CONFIG_SPI_ADC_BF533 is not set
|
||||
# CONFIG_BFIN_PFLAGS is not set
|
||||
# CONFIG_BF5xx_PFLAGS is not set
|
||||
# CONFIG_BF5xx_PPIFCD is not set
|
||||
# CONFIG_BF5xx_TIMERS is not set
|
||||
# CONFIG_BFIN_SIMPLE_TIMER is not set
|
||||
# CONFIG_BF5xx_PPI is not set
|
||||
CONFIG_BFIN_SPORT=y
|
||||
# CONFIG_BFIN_TIMER_LATENCY is not set
|
||||
@ -708,6 +698,7 @@ CONFIG_SERIAL_BFIN_DMA=y
|
||||
# CONFIG_SERIAL_BFIN_PIO is not set
|
||||
CONFIG_SERIAL_BFIN_UART0=y
|
||||
# CONFIG_BFIN_UART0_CTSRTS is not set
|
||||
# CONFIG_SERIAL_BFIN_UART1 is not set
|
||||
CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
# CONFIG_SERIAL_BFIN_SPORT is not set
|
||||
|
@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.22.6
|
||||
# Linux kernel version: 2.6.22.12
|
||||
#
|
||||
# CONFIG_MMU is not set
|
||||
# CONFIG_FPU is not set
|
||||
@ -8,7 +8,6 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
|
||||
CONFIG_BLACKFIN=y
|
||||
CONFIG_ZONE_DMA=y
|
||||
CONFIG_BFIN=y
|
||||
CONFIG_SEMAPHORE_SLEEPERS=y
|
||||
CONFIG_GENERIC_FIND_NEXT_BIT=y
|
||||
CONFIG_GENERIC_HWEIGHT=y
|
||||
@ -18,7 +17,6 @@ CONFIG_GENERIC_IRQ_PROBE=y
|
||||
CONFIG_GENERIC_GPIO=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=14
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_IRQCHIP_DEMUX_GPIO=y
|
||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||
|
||||
#
|
||||
@ -64,7 +62,6 @@ CONFIG_FUTEX=y
|
||||
CONFIG_ANON_INODES=y
|
||||
CONFIG_EPOLL=y
|
||||
CONFIG_SIGNALFD=y
|
||||
CONFIG_TIMERFD=y
|
||||
CONFIG_EVENTFD=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3
|
||||
@ -117,6 +114,9 @@ CONFIG_PREEMPT_VOLUNTARY=y
|
||||
#
|
||||
# Processor and Board Settings
|
||||
#
|
||||
# CONFIG_BF522 is not set
|
||||
# CONFIG_BF525 is not set
|
||||
# CONFIG_BF527 is not set
|
||||
# CONFIG_BF531 is not set
|
||||
# CONFIG_BF532 is not set
|
||||
CONFIG_BF533=y
|
||||
@ -125,10 +125,12 @@ CONFIG_BF533=y
|
||||
# CONFIG_BF537 is not set
|
||||
# CONFIG_BF542 is not set
|
||||
# CONFIG_BF544 is not set
|
||||
# CONFIG_BF547 is not set
|
||||
# CONFIG_BF548 is not set
|
||||
# CONFIG_BF549 is not set
|
||||
# CONFIG_BF561 is not set
|
||||
# CONFIG_BF_REV_0_0 is not set
|
||||
# CONFIG_BF_REV_0_1 is not set
|
||||
# CONFIG_BF_REV_0_2 is not set
|
||||
CONFIG_BF_REV_0_3=y
|
||||
# CONFIG_BF_REV_0_4 is not set
|
||||
@ -137,19 +139,13 @@ CONFIG_BF_REV_0_3=y
|
||||
# CONFIG_BF_REV_NONE is not set
|
||||
CONFIG_BF53x=y
|
||||
CONFIG_BFIN_SINGLE_CORE=y
|
||||
# CONFIG_BFIN533_EZKIT is not set
|
||||
CONFIG_BFIN533_STAMP=y
|
||||
# CONFIG_BFIN537_STAMP is not set
|
||||
# CONFIG_BFIN533_BLUETECHNIX_CM is not set
|
||||
# CONFIG_BFIN537_BLUETECHNIX_CM is not set
|
||||
# CONFIG_BFIN548_EZKIT is not set
|
||||
# CONFIG_BFIN561_BLUETECHNIX_CM is not set
|
||||
# CONFIG_BFIN561_EZKIT is not set
|
||||
# CONFIG_BFIN561_TEPLA is not set
|
||||
# CONFIG_PNAV10 is not set
|
||||
# CONFIG_GENERIC_BOARD is not set
|
||||
CONFIG_MEM_MT48LC64M4A2FB_7E=y
|
||||
CONFIG_BFIN_SHARED_FLASH_ENET=y
|
||||
# CONFIG_BFIN533_EZKIT is not set
|
||||
CONFIG_BFIN533_STAMP=y
|
||||
# CONFIG_BFIN533_BLUETECHNIX_CM is not set
|
||||
# CONFIG_H8606_HVSISTEMAS is not set
|
||||
# CONFIG_GENERIC_BF533_BOARD is not set
|
||||
|
||||
#
|
||||
# BF533/2/1 Specific Configuration
|
||||
@ -199,7 +195,7 @@ CONFIG_CLKIN_HZ=11059200
|
||||
# CONFIG_BFIN_KERNEL_CLOCK is not set
|
||||
CONFIG_MAX_VCO_HZ=750000000
|
||||
CONFIG_MIN_VCO_HZ=50000000
|
||||
CONFIG_MAX_SCLK_HZ=133333333
|
||||
CONFIG_MAX_SCLK_HZ=133000000
|
||||
CONFIG_MIN_SCLK_HZ=27000000
|
||||
|
||||
#
|
||||
@ -267,6 +263,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_RESOURCES_64BIT is not set
|
||||
CONFIG_ZONE_DMA_FLAG=1
|
||||
CONFIG_LARGE_ALLOCS=y
|
||||
# CONFIG_BFIN_GPTIMERS is not set
|
||||
CONFIG_BFIN_DMA_5XX=y
|
||||
# CONFIG_DMA_UNCACHED_2M is not set
|
||||
CONFIG_DMA_UNCACHED_1M=y
|
||||
@ -288,7 +285,7 @@ CONFIG_L1_MAX_PIECE=16
|
||||
#
|
||||
|
||||
#
|
||||
# EBIU_AMBCTL Global Control
|
||||
# EBIU_AMGCTL Global Control
|
||||
#
|
||||
CONFIG_C_AMCKEN=y
|
||||
CONFIG_C_CDPRIO=y
|
||||
@ -634,6 +631,7 @@ CONFIG_SMC91X=y
|
||||
# CONFIG_DM9000 is not set
|
||||
CONFIG_NETDEV_1000=y
|
||||
CONFIG_NETDEV_10000=y
|
||||
# CONFIG_AX88180 is not set
|
||||
|
||||
#
|
||||
# Wireless LAN
|
||||
@ -704,9 +702,9 @@ CONFIG_BFIN_TWIKEYPAD_IRQ_PFX=39
|
||||
#
|
||||
# CONFIG_AD9960 is not set
|
||||
# CONFIG_SPI_ADC_BF533 is not set
|
||||
# CONFIG_BFIN_PFLAGS is not set
|
||||
# CONFIG_BF5xx_PFLAGS is not set
|
||||
# CONFIG_BF5xx_PPIFCD is not set
|
||||
# CONFIG_BF5xx_TIMERS is not set
|
||||
# CONFIG_BFIN_SIMPLE_TIMER is not set
|
||||
# CONFIG_BF5xx_PPI is not set
|
||||
CONFIG_BFIN_SPORT=y
|
||||
# CONFIG_BFIN_TIMER_LATENCY is not set
|
||||
@ -732,6 +730,7 @@ CONFIG_SERIAL_BFIN_DMA=y
|
||||
# CONFIG_SERIAL_BFIN_PIO is not set
|
||||
CONFIG_SERIAL_BFIN_UART0=y
|
||||
# CONFIG_BFIN_UART0_CTSRTS is not set
|
||||
# CONFIG_SERIAL_BFIN_UART1 is not set
|
||||
CONFIG_SERIAL_CORE=y
|
||||
CONFIG_SERIAL_CORE_CONSOLE=y
|
||||
# CONFIG_SERIAL_BFIN_SPORT is not set
|
||||
@ -925,6 +924,7 @@ CONFIG_NTSC=y
|
||||
# CONFIG_PAL_YCBCR is not set
|
||||
CONFIG_ADV7393_1XMEM=y
|
||||
# CONFIG_ADV7393_2XMEM is not set
|
||||
# CONFIG_FB_BFIN_T350MCQB is not set
|
||||
# CONFIG_FB_S1D13XXX is not set
|
||||
# CONFIG_FB_VIRTUAL is not set
|
||||
# CONFIG_LOGO is not set
|
||||
@ -978,11 +978,6 @@ CONFIG_SND_BFIN_AD73311_SE=4
|
||||
#
|
||||
# CONFIG_SND_SOC is not set
|
||||
|
||||
#
|
||||
# SoC Audio for the ADI Blackfin
|
||||
#
|
||||
# CONFIG_SND_BF5XX_HAVE_COLD_RESET is not set
|
||||
|
||||
#
|
||||
# Open Sound System
|
||||
#
|
||||
|
@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.22.6
|
||||
# Linux kernel version: 2.6.22.12
|
||||
#
|
||||
# CONFIG_MMU is not set
|
||||
# CONFIG_FPU is not set
|
||||
@ -8,7 +8,6 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
|
||||
CONFIG_BLACKFIN=y
|
||||
CONFIG_ZONE_DMA=y
|
||||
CONFIG_BFIN=y
|
||||
CONFIG_SEMAPHORE_SLEEPERS=y
|
||||
CONFIG_GENERIC_FIND_NEXT_BIT=y
|
||||
CONFIG_GENERIC_HWEIGHT=y
|
||||
@ -18,7 +17,6 @@ CONFIG_GENERIC_IRQ_PROBE=y
|
||||
CONFIG_GENERIC_GPIO=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=14
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_IRQCHIP_DEMUX_GPIO=y
|
||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||
|
||||
#
|
||||
@ -64,7 +62,6 @@ CONFIG_FUTEX=y
|
||||
CONFIG_ANON_INODES=y
|
||||
CONFIG_EPOLL=y
|
||||
CONFIG_SIGNALFD=y
|
||||
CONFIG_TIMERFD=y
|
||||
CONFIG_EVENTFD=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3
|
||||
@ -117,6 +114,9 @@ CONFIG_PREEMPT_VOLUNTARY=y
|
||||
#
|
||||
# Processor and Board Settings
|
||||
#
|
||||
# CONFIG_BF522 is not set
|
||||
# CONFIG_BF525 is not set
|
||||
# CONFIG_BF527 is not set
|
||||
# CONFIG_BF531 is not set
|
||||
# CONFIG_BF532 is not set
|
||||
# CONFIG_BF533 is not set
|
||||
@ -125,10 +125,12 @@ CONFIG_PREEMPT_VOLUNTARY=y
|
||||
CONFIG_BF537=y
|
||||
# CONFIG_BF542 is not set
|
||||
# CONFIG_BF544 is not set
|
||||
# CONFIG_BF547 is not set
|
||||
# CONFIG_BF548 is not set
|
||||
# CONFIG_BF549 is not set
|
||||
# CONFIG_BF561 is not set
|
||||
# CONFIG_BF_REV_0_0 is not set
|
||||
# CONFIG_BF_REV_0_1 is not set
|
||||
CONFIG_BF_REV_0_2=y
|
||||
# CONFIG_BF_REV_0_3 is not set
|
||||
# CONFIG_BF_REV_0_4 is not set
|
||||
@ -137,19 +139,38 @@ CONFIG_BF_REV_0_2=y
|
||||
# CONFIG_BF_REV_NONE is not set
|
||||
CONFIG_BF53x=y
|
||||
CONFIG_BFIN_SINGLE_CORE=y
|
||||
# CONFIG_BFIN533_EZKIT is not set
|
||||
# CONFIG_BFIN533_STAMP is not set
|
||||
CONFIG_BFIN537_STAMP=y
|
||||
# CONFIG_BFIN533_BLUETECHNIX_CM is not set
|
||||
# CONFIG_BFIN537_BLUETECHNIX_CM is not set
|
||||
# CONFIG_BFIN548_EZKIT is not set
|
||||
# CONFIG_BFIN561_BLUETECHNIX_CM is not set
|
||||
# CONFIG_BFIN561_EZKIT is not set
|
||||
# CONFIG_BFIN561_TEPLA is not set
|
||||
# CONFIG_PNAV10 is not set
|
||||
# CONFIG_GENERIC_BOARD is not set
|
||||
CONFIG_MEM_MT48LC32M8A2_75=y
|
||||
CONFIG_IRQ_PLL_WAKEUP=7
|
||||
CONFIG_IRQ_RTC=8
|
||||
CONFIG_IRQ_PPI=8
|
||||
CONFIG_IRQ_SPORT0_RX=9
|
||||
CONFIG_IRQ_SPORT0_TX=9
|
||||
CONFIG_IRQ_SPORT1_RX=9
|
||||
CONFIG_IRQ_SPORT1_TX=9
|
||||
CONFIG_IRQ_TWI=10
|
||||
CONFIG_IRQ_SPI=10
|
||||
CONFIG_IRQ_UART0_RX=10
|
||||
CONFIG_IRQ_UART0_TX=10
|
||||
CONFIG_IRQ_UART1_RX=10
|
||||
CONFIG_IRQ_UART1_TX=10
|
||||
CONFIG_IRQ_MAC_RX=11
|
||||
CONFIG_IRQ_MAC_TX=11
|
||||
CONFIG_IRQ_TMR0=12
|
||||
CONFIG_IRQ_TMR1=12
|
||||
CONFIG_IRQ_TMR2=12
|
||||
CONFIG_IRQ_TMR3=12
|
||||
CONFIG_IRQ_TMR4=12
|
||||
CONFIG_IRQ_TMR5=12
|
||||
CONFIG_IRQ_TMR6=12
|
||||
CONFIG_IRQ_TMR7=12
|
||||
CONFIG_IRQ_PORTG_INTB=12
|
||||
CONFIG_IRQ_MEM_DMA0=13
|
||||
CONFIG_IRQ_MEM_DMA1=13
|
||||
CONFIG_IRQ_WATCH=13
|
||||
CONFIG_BFIN537_STAMP=y
|
||||
# CONFIG_BFIN537_BLUETECHNIX_CM is not set
|
||||
# CONFIG_PNAV10 is not set
|
||||
# CONFIG_GENERIC_BF537_BOARD is not set
|
||||
|
||||
#
|
||||
# BF537 Specific Configuration
|
||||
@ -164,35 +185,9 @@ CONFIG_IRQ_PLL_WAKEUP=7
|
||||
#
|
||||
CONFIG_IRQ_DMA_ERROR=7
|
||||
CONFIG_IRQ_ERROR=7
|
||||
CONFIG_IRQ_RTC=8
|
||||
CONFIG_IRQ_PPI=8
|
||||
CONFIG_IRQ_SPORT0_RX=9
|
||||
CONFIG_IRQ_SPORT0_TX=9
|
||||
CONFIG_IRQ_SPORT1_RX=9
|
||||
CONFIG_IRQ_SPORT1_TX=9
|
||||
CONFIG_IRQ_TWI=10
|
||||
CONFIG_IRQ_SPI=10
|
||||
CONFIG_IRQ_UART0_RX=10
|
||||
CONFIG_IRQ_UART0_TX=10
|
||||
CONFIG_IRQ_UART1_RX=10
|
||||
CONFIG_IRQ_UART1_TX=10
|
||||
CONFIG_IRQ_CAN_RX=11
|
||||
CONFIG_IRQ_CAN_TX=11
|
||||
CONFIG_IRQ_MAC_RX=11
|
||||
CONFIG_IRQ_MAC_TX=11
|
||||
CONFIG_IRQ_TMR0=12
|
||||
CONFIG_IRQ_TMR1=12
|
||||
CONFIG_IRQ_TMR2=12
|
||||
CONFIG_IRQ_TMR3=12
|
||||
CONFIG_IRQ_TMR4=12
|
||||
CONFIG_IRQ_TMR5=12
|
||||
CONFIG_IRQ_TMR6=12
|
||||
CONFIG_IRQ_TMR7=12
|
||||
CONFIG_IRQ_PROG_INTA=12
|
||||
CONFIG_IRQ_PORTG_INTB=12
|
||||
CONFIG_IRQ_MEM_DMA0=13
|
||||
CONFIG_IRQ_MEM_DMA1=13
|
||||
CONFIG_IRQ_WATCH=13
|
||||
|
||||
#
|
||||
# Board customizations
|
||||
@ -206,7 +201,7 @@ CONFIG_CLKIN_HZ=25000000
|
||||
# CONFIG_BFIN_KERNEL_CLOCK is not set
|
||||
CONFIG_MAX_VCO_HZ=600000000
|
||||
CONFIG_MIN_VCO_HZ=50000000
|
||||
CONFIG_MAX_SCLK_HZ=133333333
|
||||
CONFIG_MAX_SCLK_HZ=133000000
|
||||
CONFIG_MIN_SCLK_HZ=27000000
|
||||
|
||||
#
|
||||
@ -263,6 +258,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_RESOURCES_64BIT is not set
|
||||
CONFIG_ZONE_DMA_FLAG=1
|
||||
CONFIG_LARGE_ALLOCS=y
|
||||
# CONFIG_BFIN_GPTIMERS is not set
|
||||
CONFIG_BFIN_DMA_5XX=y
|
||||
# CONFIG_DMA_UNCACHED_2M is not set
|
||||
CONFIG_DMA_UNCACHED_1M=y
|
||||
@ -284,7 +280,7 @@ CONFIG_L1_MAX_PIECE=16
|
||||
#
|
||||
|
||||
#
|
||||
# EBIU_AMBCTL Global Control
|
||||
# EBIU_AMGCTL Global Control
|
||||
#
|
||||
CONFIG_C_AMCKEN=y
|
||||
CONFIG_C_CDPRIO=y
|
||||
@ -534,14 +530,6 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
|
||||
CONFIG_MTD_BF5xx=m
|
||||
CONFIG_BFIN_FLASH_SIZE=0x400000
|
||||
CONFIG_EBIU_FLASH_BASE=0x20000000
|
||||
|
||||
#
|
||||
# FLASH_EBIU_AMBCTL Control
|
||||
#
|
||||
CONFIG_BFIN_FLASH_BANK_0=0x7BB0
|
||||
CONFIG_BFIN_FLASH_BANK_1=0x7BB0
|
||||
CONFIG_BFIN_FLASH_BANK_2=0x7BB0
|
||||
CONFIG_BFIN_FLASH_BANK_3=0x7BB0
|
||||
# CONFIG_MTD_UCLINUX is not set
|
||||
# CONFIG_MTD_PLATRAM is not set
|
||||
|
||||
@ -660,6 +648,7 @@ CONFIG_BFIN_RX_DESC_NUM=20
|
||||
# CONFIG_DM9000 is not set
|
||||
CONFIG_NETDEV_1000=y
|
||||
CONFIG_NETDEV_10000=y
|
||||
# CONFIG_AX88180 is not set
|
||||
|
||||
#
|
||||
# Wireless LAN
|
||||
@ -730,9 +719,9 @@ CONFIG_BFIN_TWIKEYPAD_IRQ_PFX=72
|
||||
#
|
||||
# CONFIG_AD9960 is not set
|
||||
# CONFIG_SPI_ADC_BF533 is not set
|
||||
# CONFIG_BFIN_PFLAGS is not set
|
||||
# CONFIG_BF5xx_PFLAGS is not set
|
||||
# CONFIG_BF5xx_PPIFCD is not set
|
||||
# CONFIG_BF5xx_TIMERS is not set
|
||||
# CONFIG_BFIN_SIMPLE_TIMER is not set
|
||||
# CONFIG_BF5xx_PPI is not set
|
||||
CONFIG_BFIN_SPORT=y
|
||||
# CONFIG_BFIN_TIMER_LATENCY is not set
|
||||
@ -967,6 +956,7 @@ CONFIG_FB_BF537_LQ035=m
|
||||
CONFIG_LQ035_SLAVE_ADDR=0x58
|
||||
# CONFIG_FB_BFIN_LANDSCAPE is not set
|
||||
# CONFIG_FB_BFIN_BGR is not set
|
||||
# CONFIG_FB_BFIN_T350MCQB is not set
|
||||
# CONFIG_FB_S1D13XXX is not set
|
||||
# CONFIG_FB_VIRTUAL is not set
|
||||
# CONFIG_LOGO is not set
|
||||
@ -1020,11 +1010,6 @@ CONFIG_SND_BFIN_AD73311_SE=4
|
||||
#
|
||||
# CONFIG_SND_SOC is not set
|
||||
|
||||
#
|
||||
# SoC Audio for the ADI Blackfin
|
||||
#
|
||||
# CONFIG_SND_BF5XX_HAVE_COLD_RESET is not set
|
||||
|
||||
#
|
||||
# Open Sound System
|
||||
#
|
||||
|
@ -1,7 +1,6 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.22.10
|
||||
# Sat Oct 27 02:34:07 2007
|
||||
# Linux kernel version: 2.6.22.12
|
||||
#
|
||||
# CONFIG_MMU is not set
|
||||
# CONFIG_FPU is not set
|
||||
@ -9,7 +8,6 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
|
||||
CONFIG_BLACKFIN=y
|
||||
CONFIG_ZONE_DMA=y
|
||||
CONFIG_BFIN=y
|
||||
CONFIG_SEMAPHORE_SLEEPERS=y
|
||||
CONFIG_GENERIC_FIND_NEXT_BIT=y
|
||||
CONFIG_GENERIC_HWEIGHT=y
|
||||
@ -19,7 +17,6 @@ CONFIG_GENERIC_IRQ_PROBE=y
|
||||
CONFIG_GENERIC_GPIO=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=14
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_IRQCHIP_DEMUX_GPIO=y
|
||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||
|
||||
#
|
||||
@ -128,6 +125,7 @@ CONFIG_PREEMPT_VOLUNTARY=y
|
||||
# CONFIG_BF537 is not set
|
||||
# CONFIG_BF542 is not set
|
||||
# CONFIG_BF544 is not set
|
||||
# CONFIG_BF547 is not set
|
||||
# CONFIG_BF548 is not set
|
||||
CONFIG_BF549=y
|
||||
# CONFIG_BF561 is not set
|
||||
@ -141,19 +139,6 @@ CONFIG_BF_REV_0_0=y
|
||||
# CONFIG_BF_REV_NONE is not set
|
||||
CONFIG_BF54x=y
|
||||
CONFIG_BFIN_SINGLE_CORE=y
|
||||
# CONFIG_BFIN527_EZKIT is not set
|
||||
# CONFIG_BFIN533_EZKIT is not set
|
||||
# CONFIG_BFIN533_STAMP is not set
|
||||
# CONFIG_BFIN537_STAMP is not set
|
||||
# CONFIG_BFIN533_BLUETECHNIX_CM is not set
|
||||
# CONFIG_BFIN537_BLUETECHNIX_CM is not set
|
||||
CONFIG_BFIN548_EZKIT=y
|
||||
# CONFIG_BFIN561_BLUETECHNIX_CM is not set
|
||||
# CONFIG_BFIN561_EZKIT is not set
|
||||
# CONFIG_BFIN561_TEPLA is not set
|
||||
# CONFIG_PNAV10 is not set
|
||||
# CONFIG_H8606_HVSISTEMAS is not set
|
||||
# CONFIG_GENERIC_BOARD is not set
|
||||
CONFIG_IRQ_PLL_WAKEUP=7
|
||||
CONFIG_IRQ_RTC=8
|
||||
CONFIG_IRQ_SPORT0_RX=9
|
||||
@ -180,6 +165,7 @@ CONFIG_IRQ_TIMER7=11
|
||||
CONFIG_IRQ_TIMER8=11
|
||||
CONFIG_IRQ_TIMER9=11
|
||||
CONFIG_IRQ_TIMER10=11
|
||||
CONFIG_BFIN548_EZKIT=y
|
||||
|
||||
#
|
||||
# BF548 Specific Configuration
|
||||
@ -279,9 +265,9 @@ CONFIG_PINT3_ASSIGN=0x02020303
|
||||
#
|
||||
CONFIG_CLKIN_HZ=25000000
|
||||
# CONFIG_BFIN_KERNEL_CLOCK is not set
|
||||
CONFIG_MAX_VCO_HZ=533333333
|
||||
CONFIG_MAX_VCO_HZ=533000000
|
||||
CONFIG_MIN_VCO_HZ=50000000
|
||||
CONFIG_MAX_SCLK_HZ=133333333
|
||||
CONFIG_MAX_SCLK_HZ=133000000
|
||||
CONFIG_MIN_SCLK_HZ=27000000
|
||||
|
||||
#
|
||||
@ -376,6 +362,9 @@ CONFIG_BANK_0=0x7BB0
|
||||
CONFIG_BANK_1=0x5554
|
||||
CONFIG_BANK_2=0x7BB0
|
||||
CONFIG_BANK_3=0x99B3
|
||||
CONFIG_EBUI_MBSCTLVAL=0x0
|
||||
CONFIG_EBUI_MODEVAL=0x1
|
||||
CONFIG_EBUI_FCTLVAL=0x6
|
||||
|
||||
#
|
||||
# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
|
||||
@ -702,6 +691,7 @@ CONFIG_SMSC911X=y
|
||||
# CONFIG_DM9000 is not set
|
||||
CONFIG_NETDEV_1000=y
|
||||
CONFIG_NETDEV_10000=y
|
||||
# CONFIG_AX88180 is not set
|
||||
|
||||
#
|
||||
# Wireless LAN
|
||||
@ -1058,6 +1048,8 @@ CONFIG_SND_SOC=y
|
||||
CONFIG_SND_BF5XX_SOC=y
|
||||
CONFIG_SND_BF5XX_SOC_AC97=y
|
||||
CONFIG_SND_BF5XX_SOC_BF548_EZKIT=y
|
||||
# CONFIG_SND_BF5XX_SOC_WM8750 is not set
|
||||
# CONFIG_SND_BF5XX_SOC_WM8731 is not set
|
||||
CONFIG_SND_BF5XX_SPORT_NUM=0
|
||||
# CONFIG_SND_BF5XX_HAVE_COLD_RESET is not set
|
||||
CONFIG_SND_SOC_AD1980=y
|
||||
|
@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.22.6
|
||||
# Linux kernel version: 2.6.22.12
|
||||
#
|
||||
# CONFIG_MMU is not set
|
||||
# CONFIG_FPU is not set
|
||||
@ -8,7 +8,6 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
|
||||
CONFIG_BLACKFIN=y
|
||||
CONFIG_ZONE_DMA=y
|
||||
CONFIG_BFIN=y
|
||||
CONFIG_SEMAPHORE_SLEEPERS=y
|
||||
CONFIG_GENERIC_FIND_NEXT_BIT=y
|
||||
CONFIG_GENERIC_HWEIGHT=y
|
||||
@ -18,7 +17,6 @@ CONFIG_GENERIC_IRQ_PROBE=y
|
||||
CONFIG_GENERIC_GPIO=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=14
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_IRQCHIP_DEMUX_GPIO=y
|
||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||
|
||||
#
|
||||
@ -64,7 +62,6 @@ CONFIG_FUTEX=y
|
||||
CONFIG_ANON_INODES=y
|
||||
CONFIG_EPOLL=y
|
||||
CONFIG_SIGNALFD=y
|
||||
CONFIG_TIMERFD=y
|
||||
CONFIG_EVENTFD=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3
|
||||
@ -117,6 +114,9 @@ CONFIG_PREEMPT_VOLUNTARY=y
|
||||
#
|
||||
# Processor and Board Settings
|
||||
#
|
||||
# CONFIG_BF522 is not set
|
||||
# CONFIG_BF525 is not set
|
||||
# CONFIG_BF527 is not set
|
||||
# CONFIG_BF531 is not set
|
||||
# CONFIG_BF532 is not set
|
||||
# CONFIG_BF533 is not set
|
||||
@ -125,10 +125,12 @@ CONFIG_PREEMPT_VOLUNTARY=y
|
||||
# CONFIG_BF537 is not set
|
||||
# CONFIG_BF542 is not set
|
||||
# CONFIG_BF544 is not set
|
||||
# CONFIG_BF547 is not set
|
||||
# CONFIG_BF548 is not set
|
||||
# CONFIG_BF549 is not set
|
||||
CONFIG_BF561=y
|
||||
# CONFIG_BF_REV_0_0 is not set
|
||||
# CONFIG_BF_REV_0_1 is not set
|
||||
# CONFIG_BF_REV_0_2 is not set
|
||||
CONFIG_BF_REV_0_3=y
|
||||
# CONFIG_BF_REV_0_4 is not set
|
||||
@ -136,18 +138,15 @@ CONFIG_BF_REV_0_3=y
|
||||
# CONFIG_BF_REV_ANY is not set
|
||||
# CONFIG_BF_REV_NONE is not set
|
||||
CONFIG_BFIN_DUAL_CORE=y
|
||||
# CONFIG_BFIN533_EZKIT is not set
|
||||
# CONFIG_BFIN533_STAMP is not set
|
||||
# CONFIG_BFIN537_STAMP is not set
|
||||
# CONFIG_BFIN533_BLUETECHNIX_CM is not set
|
||||
# CONFIG_BFIN537_BLUETECHNIX_CM is not set
|
||||
# CONFIG_BFIN548_EZKIT is not set
|
||||
# CONFIG_BFIN561_BLUETECHNIX_CM is not set
|
||||
CONFIG_MEM_MT48LC16M16A2TG_75=y
|
||||
CONFIG_IRQ_PLL_WAKEUP=7
|
||||
CONFIG_IRQ_SPORT0_ERROR=7
|
||||
CONFIG_IRQ_SPORT1_ERROR=7
|
||||
CONFIG_IRQ_SPI_ERROR=7
|
||||
CONFIG_BFIN561_EZKIT=y
|
||||
# CONFIG_BFIN561_TEPLA is not set
|
||||
# CONFIG_PNAV10 is not set
|
||||
# CONFIG_GENERIC_BOARD is not set
|
||||
CONFIG_MEM_MT48LC16M16A2TG_75=y
|
||||
# CONFIG_BFIN561_BLUETECHNIX_CM is not set
|
||||
# CONFIG_GENERIC_BF561_BOARD is not set
|
||||
|
||||
#
|
||||
# BF561 Specific Configuration
|
||||
@ -170,15 +169,11 @@ CONFIG_BF561_COREB_RESET=y
|
||||
#
|
||||
# Priority
|
||||
#
|
||||
CONFIG_IRQ_PLL_WAKEUP=7
|
||||
CONFIG_IRQ_DMA1_ERROR=7
|
||||
CONFIG_IRQ_DMA2_ERROR=7
|
||||
CONFIG_IRQ_IMDMA_ERROR=7
|
||||
CONFIG_IRQ_PPI0_ERROR=7
|
||||
CONFIG_IRQ_PPI1_ERROR=7
|
||||
CONFIG_IRQ_SPORT0_ERROR=7
|
||||
CONFIG_IRQ_SPORT1_ERROR=7
|
||||
CONFIG_IRQ_SPI_ERROR=7
|
||||
CONFIG_IRQ_UART_ERROR=7
|
||||
CONFIG_IRQ_RESERVED_ERROR=7
|
||||
CONFIG_IRQ_DMA1_0=8
|
||||
@ -243,7 +238,7 @@ CONFIG_CLKIN_HZ=30000000
|
||||
# CONFIG_BFIN_KERNEL_CLOCK is not set
|
||||
CONFIG_MAX_VCO_HZ=600000000
|
||||
CONFIG_MIN_VCO_HZ=50000000
|
||||
CONFIG_MAX_SCLK_HZ=133333333
|
||||
CONFIG_MAX_SCLK_HZ=133000000
|
||||
CONFIG_MIN_SCLK_HZ=27000000
|
||||
|
||||
#
|
||||
@ -300,6 +295,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_RESOURCES_64BIT is not set
|
||||
CONFIG_ZONE_DMA_FLAG=1
|
||||
CONFIG_LARGE_ALLOCS=y
|
||||
# CONFIG_BFIN_GPTIMERS is not set
|
||||
CONFIG_BFIN_DMA_5XX=y
|
||||
# CONFIG_DMA_UNCACHED_2M is not set
|
||||
CONFIG_DMA_UNCACHED_1M=y
|
||||
@ -321,7 +317,7 @@ CONFIG_L1_MAX_PIECE=16
|
||||
#
|
||||
|
||||
#
|
||||
# EBIU_AMBCTL Global Control
|
||||
# EBIU_AMGCTL Global Control
|
||||
#
|
||||
CONFIG_C_AMCKEN=y
|
||||
CONFIG_C_CDPRIO=y
|
||||
@ -564,14 +560,6 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
|
||||
CONFIG_MTD_BF5xx=m
|
||||
CONFIG_BFIN_FLASH_SIZE=0x0400000
|
||||
CONFIG_EBIU_FLASH_BASE=0x20000000
|
||||
|
||||
#
|
||||
# FLASH_EBIU_AMBCTL Control
|
||||
#
|
||||
CONFIG_BFIN_FLASH_BANK_0=0x7BB0
|
||||
CONFIG_BFIN_FLASH_BANK_1=0x7BB0
|
||||
CONFIG_BFIN_FLASH_BANK_2=0x7BB0
|
||||
CONFIG_BFIN_FLASH_BANK_3=0x7BB0
|
||||
# CONFIG_MTD_UCLINUX is not set
|
||||
# CONFIG_MTD_PLATRAM is not set
|
||||
|
||||
@ -660,6 +648,7 @@ CONFIG_SMC91X=y
|
||||
# CONFIG_DM9000 is not set
|
||||
CONFIG_NETDEV_1000=y
|
||||
CONFIG_NETDEV_10000=y
|
||||
# CONFIG_AX88180 is not set
|
||||
|
||||
#
|
||||
# Wireless LAN
|
||||
@ -721,9 +710,9 @@ CONFIG_INPUT_EVDEV=m
|
||||
#
|
||||
# CONFIG_AD9960 is not set
|
||||
# CONFIG_SPI_ADC_BF533 is not set
|
||||
# CONFIG_BFIN_PFLAGS is not set
|
||||
# CONFIG_BF5xx_PFLAGS is not set
|
||||
# CONFIG_BF5xx_PPIFCD is not set
|
||||
# CONFIG_BF5xx_TIMERS is not set
|
||||
# CONFIG_BFIN_SIMPLE_TIMER is not set
|
||||
# CONFIG_BF5xx_PPI is not set
|
||||
# CONFIG_BFIN_SPORT is not set
|
||||
# CONFIG_BFIN_TIMER_LATENCY is not set
|
||||
|
1160
arch/blackfin/configs/H8606_defconfig
Normal file
1160
arch/blackfin/configs/H8606_defconfig
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
||||
#
|
||||
# Automatically generated make config: don't edit
|
||||
# Linux kernel version: 2.6.22.6
|
||||
# Linux kernel version: 2.6.22.12
|
||||
#
|
||||
# CONFIG_MMU is not set
|
||||
# CONFIG_FPU is not set
|
||||
@ -8,7 +8,6 @@ CONFIG_RWSEM_GENERIC_SPINLOCK=y
|
||||
# CONFIG_RWSEM_XCHGADD_ALGORITHM is not set
|
||||
CONFIG_BLACKFIN=y
|
||||
CONFIG_ZONE_DMA=y
|
||||
CONFIG_BFIN=y
|
||||
CONFIG_SEMAPHORE_SLEEPERS=y
|
||||
CONFIG_GENERIC_FIND_NEXT_BIT=y
|
||||
CONFIG_GENERIC_HWEIGHT=y
|
||||
@ -18,7 +17,6 @@ CONFIG_GENERIC_IRQ_PROBE=y
|
||||
CONFIG_GENERIC_GPIO=y
|
||||
CONFIG_FORCE_MAX_ZONEORDER=14
|
||||
CONFIG_GENERIC_CALIBRATE_DELAY=y
|
||||
CONFIG_IRQCHIP_DEMUX_GPIO=y
|
||||
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
|
||||
|
||||
#
|
||||
@ -62,7 +60,6 @@ CONFIG_FUTEX=y
|
||||
CONFIG_ANON_INODES=y
|
||||
CONFIG_EPOLL=y
|
||||
CONFIG_SIGNALFD=y
|
||||
CONFIG_TIMERFD=y
|
||||
CONFIG_EVENTFD=y
|
||||
CONFIG_VM_EVENT_COUNTERS=y
|
||||
CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=9
|
||||
@ -115,6 +112,9 @@ CONFIG_PREEMPT_VOLUNTARY=y
|
||||
#
|
||||
# Processor and Board Settings
|
||||
#
|
||||
# CONFIG_BF522 is not set
|
||||
# CONFIG_BF525 is not set
|
||||
# CONFIG_BF527 is not set
|
||||
# CONFIG_BF531 is not set
|
||||
# CONFIG_BF532 is not set
|
||||
# CONFIG_BF533 is not set
|
||||
@ -123,10 +123,12 @@ CONFIG_PREEMPT_VOLUNTARY=y
|
||||
CONFIG_BF537=y
|
||||
# CONFIG_BF542 is not set
|
||||
# CONFIG_BF544 is not set
|
||||
# CONFIG_BF547 is not set
|
||||
# CONFIG_BF548 is not set
|
||||
# CONFIG_BF549 is not set
|
||||
# CONFIG_BF561 is not set
|
||||
# CONFIG_BF_REV_0_0 is not set
|
||||
# CONFIG_BF_REV_0_1 is not set
|
||||
CONFIG_BF_REV_0_2=y
|
||||
# CONFIG_BF_REV_0_3 is not set
|
||||
# CONFIG_BF_REV_0_4 is not set
|
||||
@ -135,19 +137,38 @@ CONFIG_BF_REV_0_2=y
|
||||
# CONFIG_BF_REV_NONE is not set
|
||||
CONFIG_BF53x=y
|
||||
CONFIG_BFIN_SINGLE_CORE=y
|
||||
# CONFIG_BFIN533_EZKIT is not set
|
||||
# CONFIG_BFIN533_STAMP is not set
|
||||
# CONFIG_BFIN537_STAMP is not set
|
||||
# CONFIG_BFIN533_BLUETECHNIX_CM is not set
|
||||
# CONFIG_BFIN537_BLUETECHNIX_CM is not set
|
||||
# CONFIG_BFIN548_EZKIT is not set
|
||||
# CONFIG_BFIN561_BLUETECHNIX_CM is not set
|
||||
# CONFIG_BFIN561_EZKIT is not set
|
||||
# CONFIG_BFIN561_TEPLA is not set
|
||||
CONFIG_PNAV10=y
|
||||
# CONFIG_GENERIC_BOARD is not set
|
||||
CONFIG_MEM_MT48LC32M8A2_75=y
|
||||
CONFIG_IRQ_PLL_WAKEUP=7
|
||||
CONFIG_IRQ_RTC=8
|
||||
CONFIG_IRQ_PPI=8
|
||||
CONFIG_IRQ_SPORT0_RX=9
|
||||
CONFIG_IRQ_SPORT0_TX=9
|
||||
CONFIG_IRQ_SPORT1_RX=9
|
||||
CONFIG_IRQ_SPORT1_TX=9
|
||||
CONFIG_IRQ_TWI=10
|
||||
CONFIG_IRQ_SPI=10
|
||||
CONFIG_IRQ_UART0_RX=10
|
||||
CONFIG_IRQ_UART0_TX=10
|
||||
CONFIG_IRQ_UART1_RX=10
|
||||
CONFIG_IRQ_UART1_TX=10
|
||||
CONFIG_IRQ_MAC_RX=11
|
||||
CONFIG_IRQ_MAC_TX=11
|
||||
CONFIG_IRQ_TMR0=12
|
||||
CONFIG_IRQ_TMR1=12
|
||||
CONFIG_IRQ_TMR2=12
|
||||
CONFIG_IRQ_TMR3=12
|
||||
CONFIG_IRQ_TMR4=12
|
||||
CONFIG_IRQ_TMR5=12
|
||||
CONFIG_IRQ_TMR6=12
|
||||
CONFIG_IRQ_TMR7=12
|
||||
CONFIG_IRQ_PORTG_INTB=12
|
||||
CONFIG_IRQ_MEM_DMA0=13
|
||||
CONFIG_IRQ_MEM_DMA1=13
|
||||
CONFIG_IRQ_WATCH=13
|
||||
# CONFIG_BFIN537_STAMP is not set
|
||||
# CONFIG_BFIN537_BLUETECHNIX_CM is not set
|
||||
CONFIG_PNAV10=y
|
||||
# CONFIG_GENERIC_BF537_BOARD is not set
|
||||
|
||||
#
|
||||
# BF537 Specific Configuration
|
||||
@ -162,35 +183,9 @@ CONFIG_IRQ_PLL_WAKEUP=7
|
||||
#
|
||||
CONFIG_IRQ_DMA_ERROR=7
|
||||
CONFIG_IRQ_ERROR=7
|
||||
CONFIG_IRQ_RTC=8
|
||||
CONFIG_IRQ_PPI=8
|
||||
CONFIG_IRQ_SPORT0_RX=9
|
||||
CONFIG_IRQ_SPORT0_TX=9
|
||||
CONFIG_IRQ_SPORT1_RX=9
|
||||
CONFIG_IRQ_SPORT1_TX=9
|
||||
CONFIG_IRQ_TWI=10
|
||||
CONFIG_IRQ_SPI=10
|
||||
CONFIG_IRQ_UART0_RX=10
|
||||
CONFIG_IRQ_UART0_TX=10
|
||||
CONFIG_IRQ_UART1_RX=10
|
||||
CONFIG_IRQ_UART1_TX=10
|
||||
CONFIG_IRQ_CAN_RX=11
|
||||
CONFIG_IRQ_CAN_TX=11
|
||||
CONFIG_IRQ_MAC_RX=11
|
||||
CONFIG_IRQ_MAC_TX=11
|
||||
CONFIG_IRQ_TMR0=12
|
||||
CONFIG_IRQ_TMR1=12
|
||||
CONFIG_IRQ_TMR2=12
|
||||
CONFIG_IRQ_TMR3=12
|
||||
CONFIG_IRQ_TMR4=12
|
||||
CONFIG_IRQ_TMR5=12
|
||||
CONFIG_IRQ_TMR6=12
|
||||
CONFIG_IRQ_TMR7=12
|
||||
CONFIG_IRQ_PROG_INTA=12
|
||||
CONFIG_IRQ_PORTG_INTB=12
|
||||
CONFIG_IRQ_MEM_DMA0=13
|
||||
CONFIG_IRQ_MEM_DMA1=13
|
||||
CONFIG_IRQ_WATCH=13
|
||||
|
||||
#
|
||||
# Board customizations
|
||||
@ -204,7 +199,7 @@ CONFIG_CLKIN_HZ=24576000
|
||||
# CONFIG_BFIN_KERNEL_CLOCK is not set
|
||||
CONFIG_MAX_VCO_HZ=600000000
|
||||
CONFIG_MIN_VCO_HZ=50000000
|
||||
CONFIG_MAX_SCLK_HZ=133333333
|
||||
CONFIG_MAX_SCLK_HZ=133000000
|
||||
CONFIG_MIN_SCLK_HZ=27000000
|
||||
|
||||
#
|
||||
@ -261,6 +256,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
|
||||
# CONFIG_RESOURCES_64BIT is not set
|
||||
CONFIG_ZONE_DMA_FLAG=1
|
||||
CONFIG_LARGE_ALLOCS=y
|
||||
# CONFIG_BFIN_GPTIMERS is not set
|
||||
CONFIG_BFIN_DMA_5XX=y
|
||||
# CONFIG_DMA_UNCACHED_2M is not set
|
||||
CONFIG_DMA_UNCACHED_1M=y
|
||||
@ -282,7 +278,7 @@ CONFIG_L1_MAX_PIECE=16
|
||||
#
|
||||
|
||||
#
|
||||
# EBIU_AMBCTL Global Control
|
||||
# EBIU_AMGCTL Global Control
|
||||
#
|
||||
CONFIG_C_AMCKEN=y
|
||||
CONFIG_C_CDPRIO=y
|
||||
@ -593,6 +589,7 @@ CONFIG_BFIN_MAC_RMII=y
|
||||
# CONFIG_DM9000 is not set
|
||||
CONFIG_NETDEV_1000=y
|
||||
CONFIG_NETDEV_10000=y
|
||||
# CONFIG_AX88180 is not set
|
||||
|
||||
#
|
||||
# Wireless LAN
|
||||
@ -675,9 +672,9 @@ CONFIG_INPUT_UINPUT=y
|
||||
#
|
||||
# CONFIG_AD9960 is not set
|
||||
# CONFIG_SPI_ADC_BF533 is not set
|
||||
# CONFIG_BFIN_PFLAGS is not set
|
||||
# CONFIG_BF5xx_PFLAGS is not set
|
||||
# CONFIG_BF5xx_PPIFCD is not set
|
||||
# CONFIG_BF5xx_TIMERS is not set
|
||||
# CONFIG_BFIN_SIMPLE_TIMER is not set
|
||||
# CONFIG_BF5xx_PPI is not set
|
||||
CONFIG_BFIN_SPORT=y
|
||||
# CONFIG_BFIN_TIMER_LATENCY is not set
|
||||
@ -897,6 +894,7 @@ CONFIG_FB_BF537_LQ035=y
|
||||
CONFIG_LQ035_SLAVE_ADDR=0x58
|
||||
CONFIG_FB_BFIN_LANDSCAPE=y
|
||||
# CONFIG_FB_BFIN_BGR is not set
|
||||
# CONFIG_FB_BFIN_T350MCQB is not set
|
||||
# CONFIG_FB_S1D13XXX is not set
|
||||
# CONFIG_FB_VIRTUAL is not set
|
||||
# CONFIG_LOGO is not set
|
||||
@ -938,11 +936,6 @@ CONFIG_SND=m
|
||||
#
|
||||
# CONFIG_SND_SOC is not set
|
||||
|
||||
#
|
||||
# SoC Audio for the ADI Blackfin
|
||||
#
|
||||
# CONFIG_SND_BF5XX_HAVE_COLD_RESET is not set
|
||||
|
||||
#
|
||||
# Open Sound System
|
||||
#
|
||||
|
@ -436,6 +436,7 @@ unsigned long get_dma_curr_desc_ptr(unsigned int channel)
|
||||
|
||||
return dma_ch[channel].regs->curr_desc_ptr;
|
||||
}
|
||||
EXPORT_SYMBOL(get_dma_curr_desc_ptr);
|
||||
|
||||
unsigned long get_dma_curr_addr(unsigned int channel)
|
||||
{
|
||||
|
@ -37,9 +37,6 @@
|
||||
/* platform dependent support */
|
||||
|
||||
EXPORT_SYMBOL(__ioremap);
|
||||
EXPORT_SYMBOL(strcmp);
|
||||
EXPORT_SYMBOL(strncmp);
|
||||
EXPORT_SYMBOL(dump_thread);
|
||||
|
||||
EXPORT_SYMBOL(ip_fast_csum);
|
||||
|
||||
@ -51,6 +48,7 @@ EXPORT_SYMBOL(__down_trylock);
|
||||
EXPORT_SYMBOL(__down_interruptible);
|
||||
|
||||
EXPORT_SYMBOL(is_in_rom);
|
||||
EXPORT_SYMBOL(bfin_return_from_exception);
|
||||
|
||||
/* Networking helper routines. */
|
||||
EXPORT_SYMBOL(csum_partial_copy);
|
||||
@ -60,13 +58,11 @@ EXPORT_SYMBOL(csum_partial_copy);
|
||||
* their interface isn't gonna change any time soon now, so
|
||||
* it's OK to leave it out of version control.
|
||||
*/
|
||||
EXPORT_SYMBOL(strcpy);
|
||||
EXPORT_SYMBOL(memcpy);
|
||||
EXPORT_SYMBOL(memset);
|
||||
EXPORT_SYMBOL(memcmp);
|
||||
EXPORT_SYMBOL(memmove);
|
||||
EXPORT_SYMBOL(memchr);
|
||||
EXPORT_SYMBOL(get_wchan);
|
||||
|
||||
/*
|
||||
* libgcc functions - functions that are used internally by the
|
||||
@ -102,6 +98,7 @@ EXPORT_SYMBOL(outsw);
|
||||
EXPORT_SYMBOL(insw);
|
||||
EXPORT_SYMBOL(outsl);
|
||||
EXPORT_SYMBOL(insl);
|
||||
EXPORT_SYMBOL(insl_16);
|
||||
EXPORT_SYMBOL(irq_flags);
|
||||
EXPORT_SYMBOL(iounmap);
|
||||
EXPORT_SYMBOL(blackfin_dcache_invalidate_range);
|
||||
|
@ -26,29 +26,22 @@
|
||||
#include <asm/cplb.h>
|
||||
#include <asm/cplbinit.h>
|
||||
|
||||
u_long icplb_table[MAX_CPLBS+1];
|
||||
u_long dcplb_table[MAX_CPLBS+1];
|
||||
u_long icplb_table[MAX_CPLBS + 1];
|
||||
u_long dcplb_table[MAX_CPLBS + 1];
|
||||
|
||||
#ifdef CONFIG_CPLB_SWITCH_TAB_L1
|
||||
u_long ipdt_table[MAX_SWITCH_I_CPLBS+1]__attribute__((l1_data));
|
||||
u_long dpdt_table[MAX_SWITCH_D_CPLBS+1]__attribute__((l1_data));
|
||||
|
||||
#ifdef CONFIG_CPLB_INFO
|
||||
u_long ipdt_swapcount_table[MAX_SWITCH_I_CPLBS]__attribute__((l1_data));
|
||||
u_long dpdt_swapcount_table[MAX_SWITCH_D_CPLBS]__attribute__((l1_data));
|
||||
#endif /* CONFIG_CPLB_INFO */
|
||||
|
||||
# define PDT_ATTR __attribute__((l1_data))
|
||||
#else
|
||||
# define PDT_ATTR
|
||||
#endif
|
||||
|
||||
u_long ipdt_table[MAX_SWITCH_I_CPLBS+1];
|
||||
u_long dpdt_table[MAX_SWITCH_D_CPLBS+1];
|
||||
u_long ipdt_table[MAX_SWITCH_I_CPLBS + 1] PDT_ATTR;
|
||||
u_long dpdt_table[MAX_SWITCH_D_CPLBS + 1] PDT_ATTR;
|
||||
|
||||
#ifdef CONFIG_CPLB_INFO
|
||||
u_long ipdt_swapcount_table[MAX_SWITCH_I_CPLBS];
|
||||
u_long dpdt_swapcount_table[MAX_SWITCH_D_CPLBS];
|
||||
#endif /* CONFIG_CPLB_INFO */
|
||||
|
||||
#endif /*CONFIG_CPLB_SWITCH_TAB_L1*/
|
||||
u_long ipdt_swapcount_table[MAX_SWITCH_I_CPLBS] PDT_ATTR;
|
||||
u_long dpdt_swapcount_table[MAX_SWITCH_D_CPLBS] PDT_ATTR;
|
||||
#endif
|
||||
|
||||
struct s_cplb {
|
||||
struct cplb_tab init_i;
|
||||
@ -71,7 +64,7 @@ static struct cplb_desc cplb_data[] = {
|
||||
#else
|
||||
.valid = 0,
|
||||
#endif
|
||||
.name = "ZERO Pointer Saveguard",
|
||||
.name = "Zero Pointer Guard Page",
|
||||
},
|
||||
{
|
||||
.start = L1_CODE_START,
|
||||
@ -102,20 +95,20 @@ static struct cplb_desc cplb_data[] = {
|
||||
.end = 0, /* dynamic */
|
||||
.psize = 0,
|
||||
.attr = INITIAL_T | SWITCH_T | I_CPLB | D_CPLB,
|
||||
.i_conf = SDRAM_IGENERIC,
|
||||
.d_conf = SDRAM_DGENERIC,
|
||||
.i_conf = SDRAM_IGENERIC,
|
||||
.d_conf = SDRAM_DGENERIC,
|
||||
.valid = 1,
|
||||
.name = "SDRAM Kernel",
|
||||
.name = "Kernel Memory",
|
||||
},
|
||||
{
|
||||
.start = 0, /* dynamic */
|
||||
.end = 0, /* dynamic */
|
||||
.psize = 0,
|
||||
.attr = INITIAL_T | SWITCH_T | D_CPLB,
|
||||
.i_conf = SDRAM_IGENERIC,
|
||||
.d_conf = SDRAM_DNON_CHBL,
|
||||
.i_conf = SDRAM_IGENERIC,
|
||||
.d_conf = SDRAM_DNON_CHBL,
|
||||
.valid = 1,
|
||||
.name = "SDRAM RAM MTD",
|
||||
.name = "uClinux MTD Memory",
|
||||
},
|
||||
{
|
||||
.start = 0, /* dynamic */
|
||||
@ -124,7 +117,7 @@ static struct cplb_desc cplb_data[] = {
|
||||
.attr = INITIAL_T | SWITCH_T | D_CPLB,
|
||||
.d_conf = SDRAM_DNON_CHBL,
|
||||
.valid = 1,
|
||||
.name = "SDRAM Uncached DMA ZONE",
|
||||
.name = "Uncached DMA Zone",
|
||||
},
|
||||
{
|
||||
.start = 0, /* dynamic */
|
||||
@ -134,7 +127,7 @@ static struct cplb_desc cplb_data[] = {
|
||||
.i_conf = 0, /* dynamic */
|
||||
.d_conf = 0, /* dynamic */
|
||||
.valid = 1,
|
||||
.name = "SDRAM Reserved Memory",
|
||||
.name = "Reserved Memory",
|
||||
},
|
||||
{
|
||||
.start = ASYNC_BANK0_BASE,
|
||||
@ -143,14 +136,14 @@ static struct cplb_desc cplb_data[] = {
|
||||
.attr = SWITCH_T | D_CPLB,
|
||||
.d_conf = SDRAM_EBIU,
|
||||
.valid = 1,
|
||||
.name = "ASYNC Memory",
|
||||
.name = "Asynchronous Memory Banks",
|
||||
},
|
||||
{
|
||||
#if defined(CONFIG_BF561)
|
||||
.start = L2_SRAM,
|
||||
.end = L2_SRAM_END,
|
||||
#ifdef L2_START
|
||||
.start = L2_START,
|
||||
.end = L2_START + L2_LENGTH,
|
||||
.psize = SIZE_1M,
|
||||
.attr = SWITCH_T | D_CPLB,
|
||||
.attr = SWITCH_T | I_CPLB | D_CPLB,
|
||||
.i_conf = L2_MEMORY,
|
||||
.d_conf = L2_MEMORY,
|
||||
.valid = 1,
|
||||
@ -158,13 +151,23 @@ static struct cplb_desc cplb_data[] = {
|
||||
.valid = 0,
|
||||
#endif
|
||||
.name = "L2 Memory",
|
||||
}
|
||||
},
|
||||
{
|
||||
.start = BOOT_ROM_START,
|
||||
.end = BOOT_ROM_START + BOOT_ROM_LENGTH,
|
||||
.psize = SIZE_1M,
|
||||
.attr = SWITCH_T | I_CPLB | D_CPLB,
|
||||
.i_conf = SDRAM_IGENERIC,
|
||||
.d_conf = SDRAM_DGENERIC,
|
||||
.valid = 1,
|
||||
.name = "On-Chip BootROM",
|
||||
},
|
||||
};
|
||||
|
||||
static u16 __init lock_kernel_check(u32 start, u32 end)
|
||||
{
|
||||
if ((start <= (u32) _stext && end >= (u32) _end)
|
||||
|| (start >= (u32) _stext && end <= (u32) _end))
|
||||
if ((end <= (u32) _end && end >= (u32)_stext) ||
|
||||
(start <= (u32) _end && start >= (u32)_stext))
|
||||
return IN_KERNEL;
|
||||
return 0;
|
||||
}
|
||||
@ -350,7 +353,7 @@ void __init generate_cpl_tables(void)
|
||||
else
|
||||
cplb_data[RES_MEM].i_conf = SDRAM_INON_CHBL;
|
||||
|
||||
for (i = ZERO_P; i <= L2_MEM; i++) {
|
||||
for (i = ZERO_P; i < ARRAY_SIZE(cplb_data); ++i) {
|
||||
if (!cplb_data[i].valid)
|
||||
continue;
|
||||
|
||||
|
@ -205,7 +205,8 @@ asmlinkage void __init early_trap_c(struct pt_regs *fp, void *retaddr)
|
||||
if (likely(early_console == NULL))
|
||||
setup_early_printk(DEFAULT_EARLY_PORT);
|
||||
|
||||
dump_bfin_regs(fp, retaddr);
|
||||
dump_bfin_mem((void *)fp->retx);
|
||||
show_regs(fp);
|
||||
dump_bfin_trace_buffer();
|
||||
|
||||
panic("Died early");
|
||||
|
@ -134,27 +134,6 @@ void cpu_idle(void)
|
||||
}
|
||||
}
|
||||
|
||||
void show_regs(struct pt_regs *regs)
|
||||
{
|
||||
printk(KERN_NOTICE "\n");
|
||||
printk(KERN_NOTICE
|
||||
"PC: %08lu Status: %04lu SysStatus: %04lu RETS: %08lu\n",
|
||||
regs->pc, regs->astat, regs->seqstat, regs->rets);
|
||||
printk(KERN_NOTICE
|
||||
"A0.x: %08lx A0.w: %08lx A1.x: %08lx A1.w: %08lx\n",
|
||||
regs->a0x, regs->a0w, regs->a1x, regs->a1w);
|
||||
printk(KERN_NOTICE "P0: %08lx P1: %08lx P2: %08lx P3: %08lx\n",
|
||||
regs->p0, regs->p1, regs->p2, regs->p3);
|
||||
printk(KERN_NOTICE "P4: %08lx P5: %08lx\n", regs->p4, regs->p5);
|
||||
printk(KERN_NOTICE "R0: %08lx R1: %08lx R2: %08lx R3: %08lx\n",
|
||||
regs->r0, regs->r1, regs->r2, regs->r3);
|
||||
printk(KERN_NOTICE "R4: %08lx R5: %08lx R6: %08lx R7: %08lx\n",
|
||||
regs->r4, regs->r5, regs->r6, regs->r7);
|
||||
|
||||
if (!regs->ipend)
|
||||
printk(KERN_NOTICE "USP: %08lx\n", rdusp());
|
||||
}
|
||||
|
||||
/* Fill in the fpu structure for a core dump. */
|
||||
|
||||
int dump_fpu(struct pt_regs *regs, elf_fpregset_t * fpregs)
|
||||
@ -238,51 +217,6 @@ copy_thread(int nr, unsigned long clone_flags,
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* fill in the user structure for a core dump..
|
||||
*/
|
||||
void dump_thread(struct pt_regs *regs, struct user *dump)
|
||||
{
|
||||
dump->magic = CMAGIC;
|
||||
dump->start_code = 0;
|
||||
dump->start_stack = rdusp() & ~(PAGE_SIZE - 1);
|
||||
dump->u_tsize = ((unsigned long)current->mm->end_code) >> PAGE_SHIFT;
|
||||
dump->u_dsize = ((unsigned long)(current->mm->brk +
|
||||
(PAGE_SIZE - 1))) >> PAGE_SHIFT;
|
||||
dump->u_dsize -= dump->u_tsize;
|
||||
dump->u_ssize = 0;
|
||||
|
||||
if (dump->start_stack < TASK_SIZE)
|
||||
dump->u_ssize =
|
||||
((unsigned long)(TASK_SIZE -
|
||||
dump->start_stack)) >> PAGE_SHIFT;
|
||||
|
||||
dump->u_ar0 = (struct user_regs_struct *)((int)&dump->regs - (int)dump);
|
||||
|
||||
dump->regs.r0 = regs->r0;
|
||||
dump->regs.r1 = regs->r1;
|
||||
dump->regs.r2 = regs->r2;
|
||||
dump->regs.r3 = regs->r3;
|
||||
dump->regs.r4 = regs->r4;
|
||||
dump->regs.r5 = regs->r5;
|
||||
dump->regs.r6 = regs->r6;
|
||||
dump->regs.r7 = regs->r7;
|
||||
dump->regs.p0 = regs->p0;
|
||||
dump->regs.p1 = regs->p1;
|
||||
dump->regs.p2 = regs->p2;
|
||||
dump->regs.p3 = regs->p3;
|
||||
dump->regs.p4 = regs->p4;
|
||||
dump->regs.p5 = regs->p5;
|
||||
dump->regs.orig_p0 = regs->orig_p0;
|
||||
dump->regs.a0w = regs->a0w;
|
||||
dump->regs.a1w = regs->a1w;
|
||||
dump->regs.a0x = regs->a0x;
|
||||
dump->regs.a1x = regs->a1x;
|
||||
dump->regs.rets = regs->rets;
|
||||
dump->regs.astat = regs->astat;
|
||||
dump->regs.pc = regs->pc;
|
||||
}
|
||||
|
||||
/*
|
||||
* sys_execve() executes a new program.
|
||||
*/
|
||||
|
@ -43,6 +43,7 @@
|
||||
#include <asm/cacheflush.h>
|
||||
#include <asm/blackfin.h>
|
||||
#include <asm/cplbinit.h>
|
||||
#include <asm/div64.h>
|
||||
#include <asm/fixed_code.h>
|
||||
#include <asm/early_printk.h>
|
||||
|
||||
@ -504,13 +505,17 @@ EXPORT_SYMBOL(get_sclk);
|
||||
|
||||
unsigned long sclk_to_usecs(unsigned long sclk)
|
||||
{
|
||||
return (USEC_PER_SEC * (u64)sclk) / get_sclk();
|
||||
u64 tmp = USEC_PER_SEC * (u64)sclk;
|
||||
do_div(tmp, get_sclk());
|
||||
return tmp;
|
||||
}
|
||||
EXPORT_SYMBOL(sclk_to_usecs);
|
||||
|
||||
unsigned long usecs_to_sclk(unsigned long usecs)
|
||||
{
|
||||
return (get_sclk() * (u64)usecs) / USEC_PER_SEC;
|
||||
u64 tmp = get_sclk() * (u64)usecs;
|
||||
do_div(tmp, USEC_PER_SEC);
|
||||
return tmp;
|
||||
}
|
||||
EXPORT_SYMBOL(usecs_to_sclk);
|
||||
|
||||
|
@ -158,7 +158,7 @@ static void decode_address(char *buf, unsigned long address)
|
||||
}
|
||||
|
||||
/* we were unable to find this address anywhere */
|
||||
sprintf(buf, "[<0x%p>]", (void *)address);
|
||||
sprintf(buf, "<0x%p> /* unknown address */", (void *)address);
|
||||
|
||||
done:
|
||||
write_unlock_irqrestore(&tasklist_lock, flags);
|
||||
@ -169,7 +169,9 @@ asmlinkage void double_fault_c(struct pt_regs *fp)
|
||||
console_verbose();
|
||||
oops_in_progress = 1;
|
||||
printk(KERN_EMERG "\n" KERN_EMERG "Double Fault\n");
|
||||
dump_bfin_regs(fp, (void *)fp->retx);
|
||||
dump_bfin_process(fp);
|
||||
dump_bfin_mem((void *)fp->retx);
|
||||
show_regs(fp);
|
||||
panic("Double Fault - unrecoverable event\n");
|
||||
|
||||
}
|
||||
@ -250,7 +252,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
|
||||
case VEC_EXCPT03:
|
||||
info.si_code = SEGV_STACKFLOW;
|
||||
sig = SIGSEGV;
|
||||
printk(KERN_NOTICE EXC_0x03);
|
||||
printk(KERN_NOTICE EXC_0x03(KERN_NOTICE));
|
||||
CHK_DEBUGGER_TRAP();
|
||||
break;
|
||||
/* 0x04 - User Defined, Caught by default */
|
||||
@ -279,7 +281,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
|
||||
case VEC_OVFLOW:
|
||||
info.si_code = TRAP_TRACEFLOW;
|
||||
sig = SIGTRAP;
|
||||
printk(KERN_NOTICE EXC_0x11);
|
||||
printk(KERN_NOTICE EXC_0x11(KERN_NOTICE));
|
||||
CHK_DEBUGGER_TRAP();
|
||||
break;
|
||||
/* 0x12 - Reserved, Caught by default */
|
||||
@ -301,36 +303,35 @@ asmlinkage void trap_c(struct pt_regs *fp)
|
||||
case VEC_UNDEF_I:
|
||||
info.si_code = ILL_ILLOPC;
|
||||
sig = SIGILL;
|
||||
printk(KERN_NOTICE EXC_0x21);
|
||||
printk(KERN_NOTICE EXC_0x21(KERN_NOTICE));
|
||||
CHK_DEBUGGER_TRAP();
|
||||
break;
|
||||
/* 0x22 - Illegal Instruction Combination, handled here */
|
||||
case VEC_ILGAL_I:
|
||||
info.si_code = ILL_ILLPARAOP;
|
||||
sig = SIGILL;
|
||||
printk(KERN_NOTICE EXC_0x22);
|
||||
printk(KERN_NOTICE EXC_0x22(KERN_NOTICE));
|
||||
CHK_DEBUGGER_TRAP();
|
||||
break;
|
||||
/* 0x23 - Data CPLB Protection Violation,
|
||||
normal case is handled in _cplb_hdr */
|
||||
/* 0x23 - Data CPLB protection violation, handled here */
|
||||
case VEC_CPLB_VL:
|
||||
info.si_code = ILL_CPLB_VI;
|
||||
sig = SIGILL;
|
||||
printk(KERN_NOTICE EXC_0x23);
|
||||
sig = SIGBUS;
|
||||
printk(KERN_NOTICE EXC_0x23(KERN_NOTICE));
|
||||
CHK_DEBUGGER_TRAP();
|
||||
break;
|
||||
/* 0x24 - Data access misaligned, handled here */
|
||||
case VEC_MISALI_D:
|
||||
info.si_code = BUS_ADRALN;
|
||||
sig = SIGBUS;
|
||||
printk(KERN_NOTICE EXC_0x24);
|
||||
printk(KERN_NOTICE EXC_0x24(KERN_NOTICE));
|
||||
CHK_DEBUGGER_TRAP();
|
||||
break;
|
||||
/* 0x25 - Unrecoverable Event, handled here */
|
||||
case VEC_UNCOV:
|
||||
info.si_code = ILL_ILLEXCPT;
|
||||
sig = SIGILL;
|
||||
printk(KERN_NOTICE EXC_0x25);
|
||||
printk(KERN_NOTICE EXC_0x25(KERN_NOTICE));
|
||||
CHK_DEBUGGER_TRAP();
|
||||
break;
|
||||
/* 0x26 - Data CPLB Miss, normal case is handled in _cplb_hdr,
|
||||
@ -338,7 +339,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
|
||||
case VEC_CPLB_M:
|
||||
info.si_code = BUS_ADRALN;
|
||||
sig = SIGBUS;
|
||||
printk(KERN_NOTICE EXC_0x26);
|
||||
printk(KERN_NOTICE EXC_0x26(KERN_NOTICE));
|
||||
CHK_DEBUGGER_TRAP();
|
||||
break;
|
||||
/* 0x27 - Data CPLB Multiple Hits - Linux Trap Zero, handled here */
|
||||
@ -349,7 +350,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
|
||||
printk(KERN_NOTICE "NULL pointer access (probably)\n");
|
||||
#else
|
||||
sig = SIGILL;
|
||||
printk(KERN_NOTICE EXC_0x27);
|
||||
printk(KERN_NOTICE EXC_0x27(KERN_NOTICE));
|
||||
#endif
|
||||
CHK_DEBUGGER_TRAP();
|
||||
break;
|
||||
@ -357,7 +358,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
|
||||
case VEC_WATCH:
|
||||
info.si_code = TRAP_WATCHPT;
|
||||
sig = SIGTRAP;
|
||||
pr_debug(EXC_0x28);
|
||||
pr_debug(EXC_0x28(KERN_DEBUG));
|
||||
CHK_DEBUGGER_TRAP_MAYBE();
|
||||
/* Check if this is a watchpoint in kernel space */
|
||||
if (fp->ipend & 0xffc0)
|
||||
@ -379,22 +380,21 @@ asmlinkage void trap_c(struct pt_regs *fp)
|
||||
case VEC_MISALI_I:
|
||||
info.si_code = BUS_ADRALN;
|
||||
sig = SIGBUS;
|
||||
printk(KERN_NOTICE EXC_0x2A);
|
||||
printk(KERN_NOTICE EXC_0x2A(KERN_NOTICE));
|
||||
CHK_DEBUGGER_TRAP();
|
||||
break;
|
||||
/* 0x2B - Instruction CPLB protection Violation,
|
||||
handled in _cplb_hdr */
|
||||
/* 0x2B - Instruction CPLB protection violation, handled here */
|
||||
case VEC_CPLB_I_VL:
|
||||
info.si_code = ILL_CPLB_VI;
|
||||
sig = SIGILL;
|
||||
printk(KERN_NOTICE EXC_0x2B);
|
||||
sig = SIGBUS;
|
||||
printk(KERN_NOTICE EXC_0x2B(KERN_NOTICE));
|
||||
CHK_DEBUGGER_TRAP();
|
||||
break;
|
||||
/* 0x2C - Instruction CPLB miss, handled in _cplb_hdr */
|
||||
case VEC_CPLB_I_M:
|
||||
info.si_code = ILL_CPLB_MISS;
|
||||
sig = SIGBUS;
|
||||
printk(KERN_NOTICE EXC_0x2C);
|
||||
printk(KERN_NOTICE EXC_0x2C(KERN_NOTICE));
|
||||
CHK_DEBUGGER_TRAP();
|
||||
break;
|
||||
/* 0x2D - Instruction CPLB Multiple Hits, handled here */
|
||||
@ -405,7 +405,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
|
||||
printk(KERN_NOTICE "Jump to address 0 - 0x0fff\n");
|
||||
#else
|
||||
sig = SIGILL;
|
||||
printk(KERN_NOTICE EXC_0x2D);
|
||||
printk(KERN_NOTICE EXC_0x2D(KERN_NOTICE));
|
||||
#endif
|
||||
CHK_DEBUGGER_TRAP();
|
||||
break;
|
||||
@ -413,7 +413,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
|
||||
case VEC_ILL_RES:
|
||||
info.si_code = ILL_PRVOPC;
|
||||
sig = SIGILL;
|
||||
printk(KERN_NOTICE EXC_0x2E);
|
||||
printk(KERN_NOTICE EXC_0x2E(KERN_NOTICE));
|
||||
CHK_DEBUGGER_TRAP();
|
||||
break;
|
||||
/* 0x2F - Reserved, Caught by default */
|
||||
@ -446,7 +446,9 @@ asmlinkage void trap_c(struct pt_regs *fp)
|
||||
|
||||
if (sig != SIGTRAP) {
|
||||
unsigned long stack;
|
||||
dump_bfin_regs(fp, (void *)fp->retx);
|
||||
dump_bfin_process(fp);
|
||||
dump_bfin_mem((void *)fp->retx);
|
||||
show_regs(fp);
|
||||
|
||||
/* Print out the trace buffer if it makes sense */
|
||||
#ifndef CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE
|
||||
@ -460,22 +462,25 @@ asmlinkage void trap_c(struct pt_regs *fp)
|
||||
show_stack(current, &stack);
|
||||
if (oops_in_progress) {
|
||||
#ifndef CONFIG_ACCESS_CHECK
|
||||
printk(KERN_EMERG "Hey - dork - please turn on "
|
||||
"CONFIG_ACCESS_CHECK\n");
|
||||
printk(KERN_EMERG "Please turn on "
|
||||
"CONFIG_ACCESS_CHECK\n");
|
||||
#endif
|
||||
panic("Kernel exception");
|
||||
}
|
||||
|
||||
/* Ensure that bad return addresses don't end up in an infinite
|
||||
* loop, due to speculative loads/reads
|
||||
*/
|
||||
fp->pc = SAFE_USER_INSTRUCTION;
|
||||
}
|
||||
|
||||
info.si_signo = sig;
|
||||
info.si_errno = 0;
|
||||
info.si_addr = (void *)fp->pc;
|
||||
force_sig_info(sig, &info, current);
|
||||
|
||||
/* Ensure that bad return addresses don't end up in an infinite
|
||||
* loop, due to speculative loads/reads. This needs to be done after
|
||||
* the signal has been sent.
|
||||
*/
|
||||
if (trapnr == VEC_CPLB_I_M && sig != SIGTRAP)
|
||||
fp->pc = SAFE_USER_INSTRUCTION;
|
||||
|
||||
trace_buffer_restore(j);
|
||||
return;
|
||||
}
|
||||
@ -600,37 +605,48 @@ void dump_stack(void)
|
||||
show_stack(current, &stack);
|
||||
trace_buffer_restore(tflags);
|
||||
}
|
||||
|
||||
EXPORT_SYMBOL(dump_stack);
|
||||
|
||||
void dump_bfin_regs(struct pt_regs *fp, void *retaddr)
|
||||
void dump_bfin_process(struct pt_regs *fp)
|
||||
{
|
||||
char buf [150];
|
||||
/* We should be able to look at fp->ipend, but we don't push it on the
|
||||
* stack all the time, so do this until we fix that */
|
||||
unsigned int context = bfin_read_IPEND();
|
||||
|
||||
if (!oops_in_progress) {
|
||||
if (current->pid && current->mm) {
|
||||
printk(KERN_NOTICE "\n" KERN_NOTICE "CURRENT PROCESS:\n");
|
||||
printk(KERN_NOTICE "COMM=%s PID=%d\n",
|
||||
current->comm, current->pid);
|
||||
if (oops_in_progress)
|
||||
printk(KERN_EMERG "Kernel OOPS in progress\n");
|
||||
|
||||
printk(KERN_NOTICE "TEXT = 0x%p-0x%p DATA = 0x%p-0x%p\n"
|
||||
KERN_NOTICE "BSS = 0x%p-0x%p USER-STACK = 0x%p\n"
|
||||
KERN_NOTICE "\n",
|
||||
(void *)current->mm->start_code,
|
||||
(void *)current->mm->end_code,
|
||||
(void *)current->mm->start_data,
|
||||
(void *)current->mm->end_data,
|
||||
(void *)current->mm->end_data,
|
||||
(void *)current->mm->brk,
|
||||
(void *)current->mm->start_stack);
|
||||
} else {
|
||||
printk (KERN_NOTICE "\n" KERN_NOTICE
|
||||
"No Valid pid - Either things are really messed up,"
|
||||
" or you are in the kernel\n");
|
||||
}
|
||||
} else {
|
||||
printk(KERN_NOTICE "Kernel or interrupt exception\n");
|
||||
}
|
||||
if (context & 0x0020)
|
||||
printk(KERN_NOTICE "Deferred excecption or HW Error context\n");
|
||||
else if (context & 0x3FC0)
|
||||
printk(KERN_NOTICE "Interrupt context\n");
|
||||
else if (context & 0x4000)
|
||||
printk(KERN_NOTICE "Deferred Interrupt context\n");
|
||||
else if (context & 0x8000)
|
||||
printk(KERN_NOTICE "Kernel process context\n");
|
||||
|
||||
if (current->pid && current->mm) {
|
||||
printk(KERN_NOTICE "CURRENT PROCESS:\n");
|
||||
printk(KERN_NOTICE "COMM=%s PID=%d\n",
|
||||
current->comm, current->pid);
|
||||
|
||||
printk(KERN_NOTICE "TEXT = 0x%p-0x%p DATA = 0x%p-0x%p\n"
|
||||
KERN_NOTICE "BSS = 0x%p-0x%p USER-STACK = 0x%p\n"
|
||||
KERN_NOTICE "\n",
|
||||
(void *)current->mm->start_code,
|
||||
(void *)current->mm->end_code,
|
||||
(void *)current->mm->start_data,
|
||||
(void *)current->mm->end_data,
|
||||
(void *)current->mm->end_data,
|
||||
(void *)current->mm->brk,
|
||||
(void *)current->mm->start_stack);
|
||||
} else
|
||||
printk(KERN_NOTICE "\n" KERN_NOTICE
|
||||
"No Valid process in current context\n");
|
||||
}
|
||||
|
||||
void dump_bfin_mem(void *retaddr)
|
||||
{
|
||||
|
||||
if (retaddr >= (void *)FIXED_CODE_START && retaddr < (void *)physical_mem_end
|
||||
#if L1_CODE_LENGTH != 0
|
||||
@ -671,8 +687,13 @@ void dump_bfin_regs(struct pt_regs *fp, void *retaddr)
|
||||
printk("\n");
|
||||
} else
|
||||
printk("\n" KERN_NOTICE
|
||||
"Cannot look at the [PC] for it is"
|
||||
" in unreadable memory - sorry\n");
|
||||
"Cannot look at the [PC] <%p> for it is"
|
||||
" in unreadable memory - sorry\n", retaddr);
|
||||
}
|
||||
|
||||
void show_regs(struct pt_regs *fp)
|
||||
{
|
||||
char buf [150];
|
||||
|
||||
printk(KERN_NOTICE "\n" KERN_NOTICE "SEQUENCER STATUS:\n");
|
||||
printk(KERN_NOTICE " SEQSTAT: %08lx IPEND: %04lx SYSCFG: %04lx\n",
|
||||
@ -686,6 +707,8 @@ void dump_bfin_regs(struct pt_regs *fp, void *retaddr)
|
||||
printk(KERN_NOTICE " RETX: %s\n", buf);
|
||||
decode_address(buf, fp->rets);
|
||||
printk(KERN_NOTICE " RETS: %s\n", buf);
|
||||
decode_address(buf, fp->pc);
|
||||
printk(KERN_NOTICE " PC: %s\n", buf);
|
||||
|
||||
if ((long)fp->seqstat & SEQSTAT_EXCAUSE) {
|
||||
decode_address(buf, bfin_read_DCPLB_FAULT_ADDR());
|
||||
@ -800,7 +823,9 @@ void panic_cplb_error(int cplb_panic, struct pt_regs *fp)
|
||||
|
||||
printk(KERN_EMERG "DCPLB_FAULT_ADDR=%p\n", (void *)bfin_read_DCPLB_FAULT_ADDR());
|
||||
printk(KERN_EMERG "ICPLB_FAULT_ADDR=%p\n", (void *)bfin_read_ICPLB_FAULT_ADDR());
|
||||
dump_bfin_regs(fp, (void *)fp->retx);
|
||||
dump_bfin_process(fp);
|
||||
dump_bfin_mem((void *)fp->retx);
|
||||
show_regs(fp);
|
||||
dump_stack();
|
||||
panic("Unrecoverable event\n");
|
||||
}
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
lib-y := \
|
||||
ashldi3.o ashrdi3.o lshrdi3.o \
|
||||
muldi3.o divsi3.o udivsi3.o udivdi3.o modsi3.o umodsi3.o \
|
||||
muldi3.o divsi3.o udivsi3.o modsi3.o umodsi3.o \
|
||||
checksum.o memcpy.o memset.o memcmp.o memchr.o memmove.o \
|
||||
strcmp.o strcpy.o strncmp.o strncpy.o \
|
||||
umulsi3_highpart.o smulsi3_highpart.o \
|
||||
|
@ -77,3 +77,22 @@ ENTRY(_insb)
|
||||
sti R3;
|
||||
RTS;
|
||||
ENDPROC(_insb)
|
||||
|
||||
|
||||
|
||||
ENTRY(_insl_16)
|
||||
P0 = R0; /* P0 = port */
|
||||
cli R3;
|
||||
P1 = R1; /* P1 = address */
|
||||
P2 = R2; /* P2 = count */
|
||||
SSYNC;
|
||||
LSETUP( .Llong16_loop_s, .Llong16_loop_e) LC0 = P2;
|
||||
.Llong16_loop_s: R0 = [P0];
|
||||
W[P1++] = R0;
|
||||
R0 = R0 >> 16;
|
||||
W[P1++] = R0;
|
||||
NOP;
|
||||
.Llong16_loop_e: NOP;
|
||||
sti R3;
|
||||
RTS;
|
||||
ENDPROC(_insl_16)
|
||||
|
@ -1,10 +1,19 @@
|
||||
#include <linux/types.h>
|
||||
/*
|
||||
* Provide symbol in case str func is not inlined.
|
||||
*
|
||||
* Copyright (c) 2006-2007 Analog Devices Inc.
|
||||
*
|
||||
* Licensed under the GPL-2 or later.
|
||||
*/
|
||||
|
||||
#define strcmp __inline_strcmp
|
||||
#include <asm/string.h>
|
||||
#undef strcmp
|
||||
|
||||
#include <linux/module.h>
|
||||
|
||||
int strcmp(const char *dest, const char *src)
|
||||
{
|
||||
return __inline_strcmp(dest, src);
|
||||
}
|
||||
EXPORT_SYMBOL(strcmp);
|
||||
|
@ -1,10 +1,19 @@
|
||||
#include <linux/types.h>
|
||||
/*
|
||||
* Provide symbol in case str func is not inlined.
|
||||
*
|
||||
* Copyright (c) 2006-2007 Analog Devices Inc.
|
||||
*
|
||||
* Licensed under the GPL-2 or later.
|
||||
*/
|
||||
|
||||
#define strcpy __inline_strcpy
|
||||
#include <asm/string.h>
|
||||
#undef strcpy
|
||||
|
||||
#include <linux/module.h>
|
||||
|
||||
char *strcpy(char *dest, const char *src)
|
||||
{
|
||||
return __inline_strcpy(dest, src);
|
||||
}
|
||||
EXPORT_SYMBOL(strcpy);
|
||||
|
@ -1,10 +1,19 @@
|
||||
#include <linux/types.h>
|
||||
/*
|
||||
* Provide symbol in case str func is not inlined.
|
||||
*
|
||||
* Copyright (c) 2006-2007 Analog Devices Inc.
|
||||
*
|
||||
* Licensed under the GPL-2 or later.
|
||||
*/
|
||||
|
||||
#define strncmp __inline_strncmp
|
||||
#include <asm/string.h>
|
||||
#undef strncmp
|
||||
|
||||
#include <linux/module.h>
|
||||
|
||||
int strncmp(const char *cs, const char *ct, size_t count)
|
||||
{
|
||||
return __inline_strncmp(cs, ct, count);
|
||||
}
|
||||
EXPORT_SYMBOL(strncmp);
|
||||
|
@ -1,10 +1,19 @@
|
||||
#include <linux/types.h>
|
||||
/*
|
||||
* Provide symbol in case str func is not inlined.
|
||||
*
|
||||
* Copyright (c) 2006-2007 Analog Devices Inc.
|
||||
*
|
||||
* Licensed under the GPL-2 or later.
|
||||
*/
|
||||
|
||||
#define strncpy __inline_strncpy
|
||||
#include <asm/string.h>
|
||||
#undef strncpy
|
||||
|
||||
#include <linux/module.h>
|
||||
|
||||
char *strncpy(char *dest, const char *src, size_t n)
|
||||
{
|
||||
return __inline_strncpy(dest, src, n);
|
||||
}
|
||||
EXPORT_SYMBOL(strncpy);
|
||||
|
@ -1,375 +0,0 @@
|
||||
/*
|
||||
* udivdi3.S - unsigned long long division
|
||||
*
|
||||
* Copyright 2003-2007 Analog Devices Inc.
|
||||
* Enter bugs at http://blackfin.uclinux.org/
|
||||
*
|
||||
* Licensed under the GPLv2 or later.
|
||||
*/
|
||||
|
||||
#include <linux/linkage.h>
|
||||
|
||||
#define CARRY AC0
|
||||
|
||||
#ifdef CONFIG_ARITHMETIC_OPS_L1
|
||||
.section .l1.text
|
||||
#else
|
||||
.text
|
||||
#endif
|
||||
|
||||
|
||||
ENTRY(___udivdi3)
|
||||
R3 = [SP + 12];
|
||||
[--SP] = (R7:4, P5:3);
|
||||
|
||||
/* Attempt to use divide primitive first; these will handle
|
||||
** most cases, and they're quick - avoids stalls incurred by
|
||||
** testing for identities.
|
||||
*/
|
||||
|
||||
R4 = R2 | R3;
|
||||
CC = R4 == 0;
|
||||
IF CC JUMP .LDIV_BY_ZERO;
|
||||
|
||||
R4.H = 0x8000;
|
||||
R4 >>>= 16; // R4 now 0xFFFF8000
|
||||
R5 = R0 | R2; // If either dividend or
|
||||
R4 = R5 & R4; // divisor have bits in
|
||||
CC = R4; // top half or low half's sign
|
||||
IF CC JUMP .LIDENTS; // bit, skip builtins.
|
||||
R4 = R1 | R3; // Also check top halves
|
||||
CC = R4;
|
||||
IF CC JUMP .LIDENTS;
|
||||
|
||||
/* Can use the builtins. */
|
||||
|
||||
AQ = CC; // Clear AQ (CC==0)
|
||||
DIVQ(R0, R2);
|
||||
DIVQ(R0, R2);
|
||||
DIVQ(R0, R2);
|
||||
DIVQ(R0, R2);
|
||||
DIVQ(R0, R2);
|
||||
DIVQ(R0, R2);
|
||||
DIVQ(R0, R2);
|
||||
DIVQ(R0, R2);
|
||||
DIVQ(R0, R2);
|
||||
DIVQ(R0, R2);
|
||||
DIVQ(R0, R2);
|
||||
DIVQ(R0, R2);
|
||||
DIVQ(R0, R2);
|
||||
DIVQ(R0, R2);
|
||||
DIVQ(R0, R2);
|
||||
DIVQ(R0, R2);
|
||||
DIVQ(R0, R2);
|
||||
R0 = R0.L (Z);
|
||||
R1 = 0;
|
||||
(R7:4, P5:3) = [SP++];
|
||||
RTS;
|
||||
|
||||
.LIDENTS:
|
||||
/* Test for common identities. Value to be returned is
|
||||
** placed in R6,R7.
|
||||
*/
|
||||
// Check for 0/y, return 0
|
||||
R4 = R0 | R1;
|
||||
CC = R4 == 0;
|
||||
IF CC JUMP .LRETURN_R0;
|
||||
|
||||
// Check for x/x, return 1
|
||||
R6 = R0 - R2; // If x == y, then both R6 and R7 will be zero
|
||||
R7 = R1 - R3;
|
||||
R4 = R6 | R7; // making R4 zero.
|
||||
R6 += 1; // which would now make R6:R7==1.
|
||||
CC = R4 == 0;
|
||||
IF CC JUMP .LRETURN_IDENT;
|
||||
|
||||
// Check for x/1, return x
|
||||
R6 = R0;
|
||||
R7 = R1;
|
||||
CC = R3 == 0;
|
||||
IF !CC JUMP .Lnexttest;
|
||||
CC = R2 == 1;
|
||||
IF CC JUMP .LRETURN_IDENT;
|
||||
|
||||
.Lnexttest:
|
||||
R4.L = ONES R2; // check for div by power of two which
|
||||
R5.L = ONES R3; // can be done using a shift
|
||||
R6 = PACK (R5.L, R4.L);
|
||||
CC = R6 == 1;
|
||||
IF CC JUMP .Lpower_of_two_upper_zero;
|
||||
R6 = PACK (R4.L, R5.L);
|
||||
CC = R6 == 1;
|
||||
IF CC JUMP .Lpower_of_two_lower_zero;
|
||||
|
||||
// Check for x < y, return 0
|
||||
R6 = 0;
|
||||
R7 = R6;
|
||||
CC = R1 < R3 (IU);
|
||||
IF CC JUMP .LRETURN_IDENT;
|
||||
CC = R1 == R3;
|
||||
IF !CC JUMP .Lno_idents;
|
||||
CC = R0 < R2 (IU);
|
||||
IF CC JUMP .LRETURN_IDENT;
|
||||
|
||||
.Lno_idents: // Idents don't match. Go for the full operation
|
||||
|
||||
|
||||
// If X, or X and Y have high bit set, it'll affect the
|
||||
// results, so shift right one to stop this. Note: we've already
|
||||
// checked that X >= Y, so Y's msb won't be set unless X's
|
||||
// is.
|
||||
|
||||
R4 = 0;
|
||||
CC = R1 < 0;
|
||||
IF !CC JUMP .Lx_msb_clear;
|
||||
CC = !CC; // 1 -> 0;
|
||||
R1 = ROT R1 BY -1; // Shift X >> 1
|
||||
R0 = ROT R0 BY -1; // lsb -> CC
|
||||
BITSET(R4,31); // to record only x msb was set
|
||||
CC = R3 < 0;
|
||||
IF !CC JUMP .Ly_msb_clear;
|
||||
CC = !CC;
|
||||
R3 = ROT R3 BY -1; // Shift Y >> 1
|
||||
R2 = ROT R2 BY -1;
|
||||
BITCLR(R4,31); // clear bit to record only x msb was set
|
||||
|
||||
.Ly_msb_clear:
|
||||
.Lx_msb_clear:
|
||||
// Bit 31 in R4 indicates X msb set, but Y msb wasn't, and no bits
|
||||
// were lost, so we should shift result left by one.
|
||||
|
||||
[--SP] = R4; // save for later
|
||||
|
||||
// In the loop that follows, each iteration we add
|
||||
// either Y' or -Y' to the Remainder. We compute the
|
||||
// negated Y', and store, for convenience. Y' goes
|
||||
// into P0:P1, while -Y' goes into P2:P3.
|
||||
|
||||
P0 = R2;
|
||||
P1 = R3;
|
||||
R2 = -R2;
|
||||
CC = CARRY;
|
||||
CC = !CC;
|
||||
R4 = CC;
|
||||
R3 = -R3;
|
||||
R3 = R3 - R4;
|
||||
|
||||
R6 = 0; // remainder = 0
|
||||
R7 = R6;
|
||||
|
||||
[--SP] = R2; P2 = SP;
|
||||
[--SP] = R3; P3 = SP;
|
||||
[--SP] = R6; P5 = SP; // AQ = 0
|
||||
[--SP] = P1;
|
||||
|
||||
/* In the loop that follows, we use the following
|
||||
** register assignments:
|
||||
** R0,R1 X, workspace
|
||||
** R2,R3 Y, workspace
|
||||
** R4,R5 partial Div
|
||||
** R6,R7 partial remainder
|
||||
** P5 AQ
|
||||
** The remainder and div form a 128-bit number, with
|
||||
** the remainder in the high 64-bits.
|
||||
*/
|
||||
R4 = R0; // Div = X'
|
||||
R5 = R1;
|
||||
R3 = 0;
|
||||
|
||||
P4 = 64; // Iterate once per bit
|
||||
LSETUP(.LULST,.LULEND) LC0 = P4;
|
||||
.LULST:
|
||||
/* Shift Div and remainder up by one. The bit shifted
|
||||
** out of the top of the quotient is shifted into the bottom
|
||||
** of the remainder.
|
||||
*/
|
||||
CC = R3;
|
||||
R4 = ROT R4 BY 1;
|
||||
R5 = ROT R5 BY 1 || // low q to high q
|
||||
R2 = [P5]; // load saved AQ
|
||||
R6 = ROT R6 BY 1 || // high q to low r
|
||||
R0 = [P2]; // load -Y'
|
||||
R7 = ROT R7 BY 1 || // low r to high r
|
||||
R1 = [P3];
|
||||
|
||||
// Assume add -Y'
|
||||
CC = R2 < 0; // But if AQ is set...
|
||||
IF CC R0 = P0; // then add Y' instead
|
||||
IF CC R1 = P1;
|
||||
|
||||
R6 = R6 + R0; // Rem += (Y' or -Y')
|
||||
CC = CARRY;
|
||||
R0 = CC;
|
||||
R7 = R7 + R1;
|
||||
R7 = R7 + R0 (NS) ||
|
||||
R1 = [SP];
|
||||
// Set the next AQ bit
|
||||
R1 = R7 ^ R1; // from Remainder and Y'
|
||||
R1 = R1 >> 31 || // Negate AQ's value, and
|
||||
[P5] = R1; // save next AQ
|
||||
BITTGL(R1, 0); // add neg AQ to the Div
|
||||
.LULEND: R4 = R4 + R1;
|
||||
|
||||
R6 = [SP + 16];
|
||||
|
||||
R0 = R4;
|
||||
R1 = R5;
|
||||
CC = BITTST(R6,30); // Just set CC=0
|
||||
R4 = ROT R0 BY 1; // but if we had to shift X,
|
||||
R5 = ROT R1 BY 1; // and didn't shift any bits out,
|
||||
CC = BITTST(R6,31); // then the result will be half as
|
||||
IF CC R0 = R4; // much as required, so shift left
|
||||
IF CC R1 = R5; // one space.
|
||||
|
||||
SP += 20;
|
||||
(R7:4, P5:3) = [SP++];
|
||||
RTS;
|
||||
|
||||
.Lpower_of_two:
|
||||
/* Y has a single bit set, which means it's a power of two.
|
||||
** That means we can perform the division just by shifting
|
||||
** X to the right the appropriate number of bits
|
||||
*/
|
||||
|
||||
/* signbits returns the number of sign bits, minus one.
|
||||
** 1=>30, 2=>29, ..., 0x40000000=>0. Which means we need
|
||||
** to shift right n-signbits spaces. It also means 0x80000000
|
||||
** is a special case, because that *also* gives a signbits of 0
|
||||
*/
|
||||
.Lpower_of_two_lower_zero:
|
||||
R7 = 0;
|
||||
R6 = R1 >> 31;
|
||||
CC = R3 < 0;
|
||||
IF CC JUMP .LRETURN_IDENT;
|
||||
|
||||
R2.L = SIGNBITS R3;
|
||||
R2 = R2.L (Z);
|
||||
R2 += -62;
|
||||
(R7:4, P5:3) = [SP++];
|
||||
JUMP ___lshftli;
|
||||
|
||||
.Lpower_of_two_upper_zero:
|
||||
CC = R2 < 0;
|
||||
IF CC JUMP .Lmaxint_shift;
|
||||
|
||||
R2.L = SIGNBITS R2;
|
||||
R2 = R2.L (Z);
|
||||
R2 += -30;
|
||||
(R7:4, P5:3) = [SP++];
|
||||
JUMP ___lshftli;
|
||||
|
||||
.Lmaxint_shift:
|
||||
R2 = -31;
|
||||
(R7:4, P5:3) = [SP++];
|
||||
JUMP ___lshftli;
|
||||
|
||||
.LRETURN_IDENT:
|
||||
R0 = R6;
|
||||
R1 = R7;
|
||||
.LRETURN_R0:
|
||||
(R7:4, P5:3) = [SP++];
|
||||
RTS;
|
||||
.LDIV_BY_ZERO:
|
||||
R0 = ~R2;
|
||||
R1 = R0;
|
||||
(R7:4, P5:3) = [SP++];
|
||||
RTS;
|
||||
|
||||
ENDPROC(___udivdi3)
|
||||
|
||||
|
||||
ENTRY(___lshftli)
|
||||
CC = R2 == 0;
|
||||
IF CC JUMP .Lfinished; // nothing to do
|
||||
CC = R2 < 0;
|
||||
IF CC JUMP .Lrshift;
|
||||
R3 = 64;
|
||||
CC = R2 < R3;
|
||||
IF !CC JUMP .Lretzero;
|
||||
|
||||
// We're shifting left, and it's less than 64 bits, so
|
||||
// a valid result will be returned.
|
||||
|
||||
R3 >>= 1; // R3 now 32
|
||||
CC = R2 < R3;
|
||||
|
||||
IF !CC JUMP .Lzerohalf;
|
||||
|
||||
// We're shifting left, between 1 and 31 bits, which means
|
||||
// some of the low half will be shifted into the high half.
|
||||
// Work out how much.
|
||||
|
||||
R3 = R3 - R2;
|
||||
|
||||
// Save that much data from the bottom half.
|
||||
|
||||
P1 = R7;
|
||||
R7 = R0;
|
||||
R7 >>= R3;
|
||||
|
||||
// Adjust both parts of the parameter.
|
||||
|
||||
R0 <<= R2;
|
||||
R1 <<= R2;
|
||||
|
||||
// And include the bits moved across.
|
||||
|
||||
R1 = R1 | R7;
|
||||
R7 = P1;
|
||||
RTS;
|
||||
|
||||
.Lzerohalf:
|
||||
// We're shifting left, between 32 and 63 bits, so the
|
||||
// bottom half will become zero, and the top half will
|
||||
// lose some bits. How many?
|
||||
|
||||
R2 = R2 - R3; // N - 32
|
||||
R1 = LSHIFT R0 BY R2.L;
|
||||
R0 = R0 - R0;
|
||||
RTS;
|
||||
|
||||
.Lretzero:
|
||||
R0 = R0 - R0;
|
||||
R1 = R0;
|
||||
.Lfinished:
|
||||
RTS;
|
||||
|
||||
.Lrshift:
|
||||
// We're shifting right, but by how much?
|
||||
R2 = -R2;
|
||||
R3 = 64;
|
||||
CC = R2 < R3;
|
||||
IF !CC JUMP .Lretzero;
|
||||
|
||||
// Shifting right less than 64 bits, so some result bits will
|
||||
// be retained.
|
||||
|
||||
R3 >>= 1; // R3 now 32
|
||||
CC = R2 < R3;
|
||||
IF !CC JUMP .Lsignhalf;
|
||||
|
||||
// Shifting right between 1 and 31 bits, so need to copy
|
||||
// data across words.
|
||||
|
||||
P1 = R7;
|
||||
R3 = R3 - R2;
|
||||
R7 = R1;
|
||||
R7 <<= R3;
|
||||
R1 >>= R2;
|
||||
R0 >>= R2;
|
||||
R0 = R7 | R0;
|
||||
R7 = P1;
|
||||
RTS;
|
||||
|
||||
.Lsignhalf:
|
||||
// Shifting right between 32 and 63 bits, so the top half
|
||||
// will become all zero-bits, and the bottom half is some
|
||||
// of the top half. But how much?
|
||||
|
||||
R2 = R2 - R3;
|
||||
R0 = R1;
|
||||
R0 >>= R2;
|
||||
R1 = 0;
|
||||
RTS;
|
||||
|
||||
ENDPROC(___lshftli)
|
@ -1,5 +1,7 @@
|
||||
if (BF52x)
|
||||
|
||||
source "arch/blackfin/mach-bf527/boards/Kconfig"
|
||||
|
||||
menu "BF527 Specific Configuration"
|
||||
|
||||
comment "Alternative Multiplexing Scheme"
|
||||
|
12
arch/blackfin/mach-bf527/boards/Kconfig
Normal file
12
arch/blackfin/mach-bf527/boards/Kconfig
Normal file
@ -0,0 +1,12 @@
|
||||
choice
|
||||
prompt "System type"
|
||||
default BFIN527_EZKIT
|
||||
help
|
||||
Select your board!
|
||||
|
||||
config BFIN527_EZKIT
|
||||
bool "BF527-EZKIT"
|
||||
help
|
||||
BF527-EZKIT-LITE board support.
|
||||
|
||||
endchoice
|
@ -1,7 +1,5 @@
|
||||
#
|
||||
# arch/blackfin/mach-bf532/boards/Makefile
|
||||
# arch/blackfin/mach-bf527/boards/Makefile
|
||||
#
|
||||
|
||||
obj-y += eth_mac.o
|
||||
obj-$(CONFIG_BFIN527_EZKIT) += ezkit.o
|
||||
|
||||
obj-$(CONFIG_BFIN527_EZKIT) += ezkit.o
|
||||
|
@ -1,50 +0,0 @@
|
||||
/*
|
||||
* arch/blackfin/mach-bf537/board/eth_mac.c
|
||||
*
|
||||
* Copyright (C) 2007 Analog Devices, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
#include <linux/module.h>
|
||||
#include <asm/blackfin.h>
|
||||
|
||||
#if defined(CONFIG_GENERIC_BOARD) || defined(CONFIG_BFIN537_STAMP)
|
||||
|
||||
/*
|
||||
* Currently the MAC address is saved in Flash by U-Boot
|
||||
*/
|
||||
#define FLASH_MAC 0x203f0000
|
||||
|
||||
void get_bf537_ether_addr(char *addr)
|
||||
{
|
||||
unsigned int flash_mac = (unsigned int) FLASH_MAC;
|
||||
*(u32 *)(&(addr[0])) = bfin_read32(flash_mac);
|
||||
flash_mac += 4;
|
||||
*(u16 *)(&(addr[4])) = bfin_read16(flash_mac);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
/*
|
||||
* Provide MAC address function for other specific board setting
|
||||
*/
|
||||
void get_bf537_ether_addr(char *addr)
|
||||
{
|
||||
printk(KERN_WARNING "%s: No valid Ethernet MAC address found\n", __FILE__);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
EXPORT_SYMBOL(get_bf537_ether_addr);
|
@ -35,17 +35,18 @@
|
||||
#include <linux/spi/spi.h>
|
||||
#include <linux/spi/flash.h>
|
||||
#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
|
||||
#include <linux/usb_isp1362.h>
|
||||
#include <linux/usb/isp1362.h>
|
||||
#endif
|
||||
#include <linux/pata_platform.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/usb_sl811.h>
|
||||
#include <linux/usb/sl811.h>
|
||||
#include <asm/cplb.h>
|
||||
#include <asm/dma.h>
|
||||
#include <asm/bfin5xx_spi.h>
|
||||
#include <asm/reboot.h>
|
||||
#include <asm/nand.h>
|
||||
#include <asm/portmux.h>
|
||||
#include <linux/spi/ad7877.h>
|
||||
|
||||
/*
|
||||
@ -450,6 +451,13 @@ static const struct ad7877_platform_data bfin_ad7877_ts_info = {
|
||||
};
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_SND_SOC_WM8731) || defined(CONFIG_SND_SOC_WM8731_MODULE) \
|
||||
&& defined(CONFIG_SND_SOC_WM8731_SPI)
|
||||
static struct bfin5xx_spi_chip spi_wm8731_chip_info = {
|
||||
.enable_dma = 0,
|
||||
.bits_per_word = 16,
|
||||
};
|
||||
#endif
|
||||
static struct spi_board_info bfin_spi_board_info[] __initdata = {
|
||||
#if defined(CONFIG_MTD_M25P80) \
|
||||
|| defined(CONFIG_MTD_M25P80_MODULE)
|
||||
@ -551,17 +559,29 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
|
||||
.platform_data = &bfin_ad7877_ts_info,
|
||||
.irq = IRQ_PF6,
|
||||
.max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */
|
||||
.bus_num = 1,
|
||||
.bus_num = 0,
|
||||
.chip_select = 1,
|
||||
.controller_data = &spi_ad7877_chip_info,
|
||||
},
|
||||
#endif
|
||||
#if defined(CONFIG_SND_SOC_WM8731) || defined(CONFIG_SND_SOC_WM8731_MODULE) \
|
||||
&& defined(CONFIG_SND_SOC_WM8731_SPI)
|
||||
{
|
||||
.modalias = "wm8731",
|
||||
.max_speed_hz = 3125000, /* max spi clock (SCK) speed in HZ */
|
||||
.bus_num = 0,
|
||||
.chip_select = 5,
|
||||
.controller_data = &spi_wm8731_chip_info,
|
||||
.mode = SPI_MODE_0,
|
||||
},
|
||||
#endif
|
||||
};
|
||||
|
||||
/* SPI controller data */
|
||||
static struct bfin5xx_spi_master bfin_spi0_info = {
|
||||
.num_chipselect = 8,
|
||||
.enable_dma = 1, /* master has the ability to do dma transfer */
|
||||
.pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0},
|
||||
};
|
||||
|
||||
/* SPI (0) */
|
||||
@ -788,3 +808,14 @@ void native_machine_restart(char *cmd)
|
||||
if ((bfin_read_SYSCR() & 0x7) == 0x3)
|
||||
bfin_gpio_reset_spi0_ssel1();
|
||||
}
|
||||
|
||||
/*
|
||||
* Currently the MAC address is saved in Flash by U-Boot
|
||||
*/
|
||||
#define FLASH_MAC 0x203f0000
|
||||
void bfin_get_ether_addr(char *addr)
|
||||
{
|
||||
*(u32 *)(&(addr[0])) = bfin_read32(FLASH_MAC);
|
||||
*(u16 *)(&(addr[4])) = bfin_read16(FLASH_MAC + 4);
|
||||
}
|
||||
EXPORT_SYMBOL(bfin_get_ether_addr);
|
||||
|
@ -1,5 +1,7 @@
|
||||
if (BF533 || BF532 || BF531)
|
||||
|
||||
source "arch/blackfin/mach-bf533/boards/Kconfig"
|
||||
|
||||
menu "BF533/2/1 Specific Configuration"
|
||||
|
||||
comment "Interrupt Priority Assignment"
|
||||
|
@ -36,20 +36,21 @@
|
||||
#include <linux/spi/spi.h>
|
||||
#include <linux/spi/flash.h>
|
||||
#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
|
||||
#include <linux/usb_isp1362.h>
|
||||
#include <linux/usb/isp1362.h>
|
||||
#endif
|
||||
#include <linux/pata_platform.h>
|
||||
#include <linux/irq.h>
|
||||
#include <asm/dma.h>
|
||||
#include <asm/bfin5xx_spi.h>
|
||||
#include <asm/reboot.h>
|
||||
#include <asm/portmux.h>
|
||||
|
||||
/*
|
||||
* Name the Board for the /proc/cpuinfo
|
||||
*/
|
||||
const char bfin_board_name[] = "HV Sistemas H8606";
|
||||
|
||||
#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_BFIN_MODULE)
|
||||
#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
|
||||
static struct platform_device rtc_device = {
|
||||
.name = "rtc-bfin",
|
||||
.id = -1,
|
||||
@ -93,10 +94,6 @@ static struct resource smc91x_resources[] = {
|
||||
.end = IRQ_PROG_INTB,
|
||||
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
|
||||
}, {
|
||||
/*
|
||||
* denotes the flag pin and is used directly if
|
||||
* CONFIG_IRQCHIP_DEMUX_GPIO is defined.
|
||||
*/
|
||||
.start = IRQ_PF7,
|
||||
.end = IRQ_PF7,
|
||||
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
|
||||
@ -269,6 +266,7 @@ static struct resource bfin_spi0_resource[] = {
|
||||
static struct bfin5xx_spi_master bfin_spi0_info = {
|
||||
.num_chipselect = 8,
|
||||
.enable_dma = 1, /* master has the ability to do dma transfer */
|
||||
.pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0},
|
||||
};
|
||||
|
||||
static struct platform_device bfin_spi0_device = {
|
||||
@ -342,4 +340,4 @@ static int __init H8606_init(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
arch_initcall(H8606_init);
|
||||
arch_initcall(H8606_init);
|
||||
|
34
arch/blackfin/mach-bf533/boards/Kconfig
Normal file
34
arch/blackfin/mach-bf533/boards/Kconfig
Normal file
@ -0,0 +1,34 @@
|
||||
choice
|
||||
prompt "System type"
|
||||
default BFIN533_STAMP
|
||||
help
|
||||
Select your board!
|
||||
|
||||
config BFIN533_EZKIT
|
||||
bool "BF533-EZKIT"
|
||||
help
|
||||
BF533-EZKIT-LITE board support.
|
||||
|
||||
config BFIN533_STAMP
|
||||
bool "BF533-STAMP"
|
||||
help
|
||||
BF533-STAMP board support.
|
||||
|
||||
config BFIN533_BLUETECHNIX_CM
|
||||
bool "Bluetechnix CM-BF533"
|
||||
depends on (BF533)
|
||||
help
|
||||
CM-BF533 support for EVAL- and DEV-Board.
|
||||
|
||||
config H8606_HVSISTEMAS
|
||||
bool "HV Sistemas H8606"
|
||||
depends on (BF532)
|
||||
help
|
||||
HV Sistemas H8606 board support.
|
||||
|
||||
config GENERIC_BF533_BOARD
|
||||
bool "Generic"
|
||||
help
|
||||
Generic or Custom board support.
|
||||
|
||||
endchoice
|
@ -2,7 +2,7 @@
|
||||
# arch/blackfin/mach-bf533/boards/Makefile
|
||||
#
|
||||
|
||||
obj-$(CONFIG_GENERIC_BOARD) += generic_board.o
|
||||
obj-$(CONFIG_GENERIC_BF533_BOARD) += generic_board.o
|
||||
obj-$(CONFIG_BFIN533_STAMP) += stamp.o
|
||||
obj-$(CONFIG_BFIN533_EZKIT) += ezkit.o
|
||||
obj-$(CONFIG_BFIN533_BLUETECHNIX_CM) += cm_bf533.o
|
||||
|
@ -33,11 +33,12 @@
|
||||
#include <linux/mtd/partitions.h>
|
||||
#include <linux/spi/spi.h>
|
||||
#include <linux/spi/flash.h>
|
||||
#include <linux/usb_isp1362.h>
|
||||
#include <linux/usb/isp1362.h>
|
||||
#include <linux/pata_platform.h>
|
||||
#include <linux/irq.h>
|
||||
#include <asm/dma.h>
|
||||
#include <asm/bfin5xx_spi.h>
|
||||
#include <asm/portmux.h>
|
||||
|
||||
/*
|
||||
* Name the Board for the /proc/cpuinfo
|
||||
@ -175,6 +176,7 @@ static struct resource bfin_spi0_resource[] = {
|
||||
static struct bfin5xx_spi_master bfin_spi0_info = {
|
||||
.num_chipselect = 8,
|
||||
.enable_dma = 1, /* master has the ability to do dma transfer */
|
||||
.pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0},
|
||||
};
|
||||
|
||||
static struct platform_device bfin_spi0_device = {
|
||||
|
@ -34,11 +34,12 @@
|
||||
#include <linux/mtd/partitions.h>
|
||||
#include <linux/spi/spi.h>
|
||||
#include <linux/spi/flash.h>
|
||||
#include <linux/usb_isp1362.h>
|
||||
#include <linux/usb/isp1362.h>
|
||||
#include <linux/pata_platform.h>
|
||||
#include <linux/irq.h>
|
||||
#include <asm/dma.h>
|
||||
#include <asm/bfin5xx_spi.h>
|
||||
#include <asm/portmux.h>
|
||||
|
||||
/*
|
||||
* Name the Board for the /proc/cpuinfo
|
||||
@ -187,6 +188,7 @@ static struct resource bfin_spi0_resource[] = {
|
||||
static struct bfin5xx_spi_master bfin_spi0_info = {
|
||||
.num_chipselect = 8,
|
||||
.enable_dma = 1, /* master has the ability to do dma transfer */
|
||||
.pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0},
|
||||
};
|
||||
|
||||
static struct platform_device bfin_spi0_device = {
|
||||
|
@ -58,10 +58,6 @@ static struct resource smc91x_resources[] = {
|
||||
.end = IRQ_PROG_INTB,
|
||||
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
|
||||
}, {
|
||||
/*
|
||||
* denotes the flag pin and is used directly if
|
||||
* CONFIG_IRQCHIP_DEMUX_GPIO is defined.
|
||||
*/
|
||||
.start = IRQ_PF7,
|
||||
.end = IRQ_PF7,
|
||||
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
|
||||
|
@ -35,13 +35,14 @@
|
||||
#include <linux/spi/spi.h>
|
||||
#include <linux/spi/flash.h>
|
||||
#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
|
||||
#include <linux/usb_isp1362.h>
|
||||
#include <linux/usb/isp1362.h>
|
||||
#endif
|
||||
#include <linux/pata_platform.h>
|
||||
#include <linux/irq.h>
|
||||
#include <asm/dma.h>
|
||||
#include <asm/bfin5xx_spi.h>
|
||||
#include <asm/reboot.h>
|
||||
#include <asm/portmux.h>
|
||||
|
||||
/*
|
||||
* Name the Board for the /proc/cpuinfo
|
||||
@ -286,6 +287,7 @@ static struct resource bfin_spi0_resource[] = {
|
||||
static struct bfin5xx_spi_master bfin_spi0_info = {
|
||||
.num_chipselect = 8,
|
||||
.enable_dma = 1, /* master has the ability to do dma transfer */
|
||||
.pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0},
|
||||
};
|
||||
|
||||
static struct platform_device bfin_spi0_device = {
|
||||
|
@ -1,5 +1,7 @@
|
||||
if (BF537 || BF534 || BF536)
|
||||
|
||||
source "arch/blackfin/mach-bf537/boards/Kconfig"
|
||||
|
||||
menu "BF537 Specific Configuration"
|
||||
|
||||
comment "Interrupt Priority Assignment"
|
||||
|
29
arch/blackfin/mach-bf537/boards/Kconfig
Normal file
29
arch/blackfin/mach-bf537/boards/Kconfig
Normal file
@ -0,0 +1,29 @@
|
||||
choice
|
||||
prompt "System type"
|
||||
default BFIN537_STAMP
|
||||
help
|
||||
Select your board!
|
||||
|
||||
config BFIN537_STAMP
|
||||
bool "BF537-STAMP"
|
||||
help
|
||||
BF537-STAMP board support.
|
||||
|
||||
config BFIN537_BLUETECHNIX_CM
|
||||
bool "Bluetechnix CM-BF537"
|
||||
depends on (BF537)
|
||||
help
|
||||
CM-BF537 support for EVAL- and DEV-Board.
|
||||
|
||||
config PNAV10
|
||||
bool "PNAV board"
|
||||
depends on (BF537)
|
||||
help
|
||||
PNAV board support.
|
||||
|
||||
config GENERIC_BF537_BOARD
|
||||
bool "Generic"
|
||||
help
|
||||
Generic or Custom board support.
|
||||
|
||||
endchoice
|
@ -2,8 +2,7 @@
|
||||
# arch/blackfin/mach-bf537/boards/Makefile
|
||||
#
|
||||
|
||||
obj-y += eth_mac.o
|
||||
obj-$(CONFIG_GENERIC_BOARD) += generic_board.o
|
||||
obj-$(CONFIG_BFIN537_STAMP) += stamp.o led.o
|
||||
obj-$(CONFIG_BFIN537_BLUETECHNIX_CM) += cm_bf537.o
|
||||
obj-$(CONFIG_PNAV10) += pnav10.o
|
||||
obj-$(CONFIG_GENERIC_BF537_BOARD) += generic_board.o
|
||||
obj-$(CONFIG_BFIN537_STAMP) += stamp.o led.o
|
||||
obj-$(CONFIG_BFIN537_BLUETECHNIX_CM) += cm_bf537.o
|
||||
obj-$(CONFIG_PNAV10) += pnav10.o
|
||||
|
@ -34,11 +34,12 @@
|
||||
#include <linux/mtd/partitions.h>
|
||||
#include <linux/spi/spi.h>
|
||||
#include <linux/spi/flash.h>
|
||||
#include <linux/usb_isp1362.h>
|
||||
#include <linux/usb/isp1362.h>
|
||||
#include <linux/pata_platform.h>
|
||||
#include <linux/irq.h>
|
||||
#include <asm/dma.h>
|
||||
#include <asm/bfin5xx_spi.h>
|
||||
#include <asm/portmux.h>
|
||||
|
||||
/*
|
||||
* Name the Board for the /proc/cpuinfo
|
||||
@ -194,6 +195,7 @@ static struct resource bfin_spi0_resource[] = {
|
||||
static struct bfin5xx_spi_master bfin_spi0_info = {
|
||||
.num_chipselect = 8,
|
||||
.enable_dma = 1, /* master has the ability to do dma transfer */
|
||||
.pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0},
|
||||
};
|
||||
|
||||
static struct platform_device bfin_spi0_device = {
|
||||
@ -425,3 +427,10 @@ static int __init cm_bf537_init(void)
|
||||
}
|
||||
|
||||
arch_initcall(cm_bf537_init);
|
||||
|
||||
void bfin_get_ether_addr(char *addr)
|
||||
{
|
||||
random_ether_addr(addr);
|
||||
printk(KERN_WARNING "%s:%s: Setting Ethernet MAC to a random one\n", __FILE__, __func__);
|
||||
}
|
||||
EXPORT_SYMBOL(bfin_get_ether_addr);
|
||||
|
@ -1,50 +0,0 @@
|
||||
/*
|
||||
* arch/blackfin/mach-bf537/board/eth_mac.c
|
||||
*
|
||||
* Copyright (C) 2007 Analog Devices, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
#include <linux/module.h>
|
||||
#include <asm/blackfin.h>
|
||||
|
||||
#if defined(CONFIG_GENERIC_BOARD) || defined(CONFIG_BFIN537_STAMP)
|
||||
|
||||
/*
|
||||
* Currently the MAC address is saved in Flash by U-Boot
|
||||
*/
|
||||
#define FLASH_MAC 0x203f0000
|
||||
|
||||
void get_bf537_ether_addr(char *addr)
|
||||
{
|
||||
unsigned int flash_mac = (unsigned int) FLASH_MAC;
|
||||
*(u32 *)(&(addr[0])) = bfin_read32(flash_mac);
|
||||
flash_mac += 4;
|
||||
*(u16 *)(&(addr[4])) = bfin_read16(flash_mac);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
/*
|
||||
* Provide MAC address function for other specific board setting
|
||||
*/
|
||||
void get_bf537_ether_addr(char *addr)
|
||||
{
|
||||
printk(KERN_WARNING "%s: No valid Ethernet MAC address found\n", __FILE__);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
EXPORT_SYMBOL(get_bf537_ether_addr);
|
@ -35,7 +35,7 @@
|
||||
#include <linux/spi/spi.h>
|
||||
#include <linux/spi/flash.h>
|
||||
#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
|
||||
#include <linux/usb_isp1362.h>
|
||||
#include <linux/usb/isp1362.h>
|
||||
#endif
|
||||
#include <linux/pata_platform.h>
|
||||
#include <linux/irq.h>
|
||||
@ -44,6 +44,7 @@
|
||||
#include <asm/dma.h>
|
||||
#include <asm/bfin5xx_spi.h>
|
||||
#include <asm/reboot.h>
|
||||
#include <asm/portmux.h>
|
||||
#include <linux/spi/ad7877.h>
|
||||
|
||||
/*
|
||||
@ -502,7 +503,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
|
||||
.platform_data = &bfin_ad7877_ts_info,
|
||||
.irq = IRQ_PF6,
|
||||
.max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */
|
||||
.bus_num = 1,
|
||||
.bus_num = 0,
|
||||
.chip_select = 1,
|
||||
.controller_data = &spi_ad7877_chip_info,
|
||||
},
|
||||
@ -513,6 +514,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
|
||||
static struct bfin5xx_spi_master bfin_spi0_info = {
|
||||
.num_chipselect = 8,
|
||||
.enable_dma = 1, /* master has the ability to do dma transfer */
|
||||
.pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0},
|
||||
};
|
||||
|
||||
/* SPI (0) */
|
||||
@ -730,3 +732,10 @@ void native_machine_restart(char *cmd)
|
||||
if ((bfin_read_SYSCR() & 0x7) == 0x3)
|
||||
bfin_gpio_reset_spi0_ssel1();
|
||||
}
|
||||
|
||||
void bfin_get_ether_addr(char *addr)
|
||||
{
|
||||
random_ether_addr(addr);
|
||||
printk(KERN_WARNING "%s:%s: Setting Ethernet MAC to a random one\n", __FILE__, __func__);
|
||||
}
|
||||
EXPORT_SYMBOL(bfin_get_ether_addr);
|
||||
|
@ -35,11 +35,12 @@
|
||||
#include <linux/spi/spi.h>
|
||||
#include <linux/spi/flash.h>
|
||||
#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
|
||||
#include <linux/usb_isp1362.h>
|
||||
#include <linux/usb/isp1362.h>
|
||||
#endif
|
||||
#include <linux/irq.h>
|
||||
#include <asm/dma.h>
|
||||
#include <asm/bfin5xx_spi.h>
|
||||
#include <asm/portmux.h>
|
||||
#include <linux/usb/sl811.h>
|
||||
|
||||
#include <linux/spi/ad7877.h>
|
||||
@ -295,7 +296,7 @@ static struct bfin5xx_spi_chip spi_mmc_chip_info = {
|
||||
|
||||
#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
|
||||
static struct bfin5xx_spi_chip spi_ad7877_chip_info = {
|
||||
.cs_change_per_word = 1,
|
||||
.cs_change_per_word = 0,
|
||||
.enable_dma = 0,
|
||||
.bits_per_word = 16,
|
||||
};
|
||||
@ -387,7 +388,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
|
||||
.platform_data = &bfin_ad7877_ts_info,
|
||||
.irq = IRQ_PF2,
|
||||
.max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */
|
||||
.bus_num = 1,
|
||||
.bus_num = 0,
|
||||
.chip_select = 5,
|
||||
.controller_data = &spi_ad7877_chip_info,
|
||||
},
|
||||
@ -413,6 +414,7 @@ static struct resource bfin_spi0_resource[] = {
|
||||
static struct bfin5xx_spi_master bfin_spi0_info = {
|
||||
.num_chipselect = 8,
|
||||
.enable_dma = 1, /* master has the ability to do dma transfer */
|
||||
.pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0},
|
||||
};
|
||||
|
||||
static struct platform_device bfin_spi0_device = {
|
||||
@ -508,3 +510,10 @@ static int __init stamp_init(void)
|
||||
}
|
||||
|
||||
arch_initcall(stamp_init);
|
||||
|
||||
void bfin_get_ether_addr(char *addr)
|
||||
{
|
||||
random_ether_addr(addr);
|
||||
printk(KERN_WARNING "%s:%s: Setting Ethernet MAC to a random one\n", __FILE__, __func__);
|
||||
}
|
||||
EXPORT_SYMBOL(bfin_get_ether_addr);
|
||||
|
@ -35,7 +35,7 @@
|
||||
#include <linux/spi/spi.h>
|
||||
#include <linux/spi/flash.h>
|
||||
#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
|
||||
#include <linux/usb_isp1362.h>
|
||||
#include <linux/usb/isp1362.h>
|
||||
#endif
|
||||
#include <linux/pata_platform.h>
|
||||
#include <linux/irq.h>
|
||||
@ -44,6 +44,7 @@
|
||||
#include <asm/dma.h>
|
||||
#include <asm/bfin5xx_spi.h>
|
||||
#include <asm/reboot.h>
|
||||
#include <asm/portmux.h>
|
||||
#include <linux/spi/ad7877.h>
|
||||
|
||||
/*
|
||||
@ -182,6 +183,28 @@ static struct platform_device dm9000_device = {
|
||||
};
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_AX88180) || defined(CONFIG_AX88180_MODULE)
|
||||
static struct resource ax88180_resources[] = {
|
||||
[0] = {
|
||||
.start = 0x20300000,
|
||||
.end = 0x20300000 + 0x8000,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = IRQ_PF7,
|
||||
.end = IRQ_PF7,
|
||||
.flags = (IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL),
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device ax88180_device = {
|
||||
.name = "ax88180",
|
||||
.id = -1,
|
||||
.num_resources = ARRAY_SIZE(ax88180_resources),
|
||||
.resource = ax88180_resources,
|
||||
};
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE)
|
||||
static struct resource sl811_hcd_resources[] = {
|
||||
{
|
||||
@ -502,7 +525,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
|
||||
.platform_data = &bfin_ad7877_ts_info,
|
||||
.irq = IRQ_PF6,
|
||||
.max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */
|
||||
.bus_num = 1,
|
||||
.bus_num = 0,
|
||||
.chip_select = 1,
|
||||
.controller_data = &spi_ad7877_chip_info,
|
||||
},
|
||||
@ -513,6 +536,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
|
||||
static struct bfin5xx_spi_master bfin_spi0_info = {
|
||||
.num_chipselect = 8,
|
||||
.enable_dma = 1, /* master has the ability to do dma transfer */
|
||||
.pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0},
|
||||
};
|
||||
|
||||
/* SPI (0) */
|
||||
@ -554,15 +578,20 @@ static struct platform_device bfin_fb_adv7393_device = {
|
||||
|
||||
#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
|
||||
static struct resource bfin_uart_resources[] = {
|
||||
#ifdef CONFIG_SERIAL_BFIN_UART0
|
||||
{
|
||||
.start = 0xFFC00400,
|
||||
.end = 0xFFC004FF,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
},
|
||||
#endif
|
||||
#ifdef CONFIG_SERIAL_BFIN_UART1
|
||||
{
|
||||
.start = 0xFFC02000,
|
||||
.end = 0xFFC020FF,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
#endif
|
||||
};
|
||||
|
||||
static struct platform_device bfin_uart_device = {
|
||||
@ -669,6 +698,10 @@ static struct platform_device *stamp_devices[] __initdata = {
|
||||
&dm9000_device,
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_AX88180) || defined(CONFIG_AX88180_MODULE)
|
||||
&ax88180_device,
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
|
||||
&bfin_mac_device,
|
||||
#endif
|
||||
@ -730,3 +763,14 @@ void native_machine_restart(char *cmd)
|
||||
if ((bfin_read_SYSCR() & 0x7) == 0x3)
|
||||
bfin_gpio_reset_spi0_ssel1();
|
||||
}
|
||||
|
||||
/*
|
||||
* Currently the MAC address is saved in Flash by U-Boot
|
||||
*/
|
||||
#define FLASH_MAC 0x203f0000
|
||||
void bfin_get_ether_addr(char *addr)
|
||||
{
|
||||
*(u32 *)(&(addr[0])) = bfin_read32(FLASH_MAC);
|
||||
*(u16 *)(&(addr[4])) = bfin_read16(FLASH_MAC + 4);
|
||||
}
|
||||
EXPORT_SYMBOL(bfin_get_ether_addr);
|
||||
|
@ -1,5 +1,7 @@
|
||||
if (BF54x)
|
||||
|
||||
source "arch/blackfin/mach-bf548/boards/Kconfig"
|
||||
|
||||
menu "BF548 Specific Configuration"
|
||||
|
||||
config DEB_DMA_URGENT
|
||||
|
12
arch/blackfin/mach-bf548/boards/Kconfig
Normal file
12
arch/blackfin/mach-bf548/boards/Kconfig
Normal file
@ -0,0 +1,12 @@
|
||||
choice
|
||||
prompt "System type"
|
||||
default BFIN548_EZKIT
|
||||
help
|
||||
Select your board!
|
||||
|
||||
config BFIN548_EZKIT
|
||||
bool "BF548-EZKIT"
|
||||
help
|
||||
BFIN548-EZKIT board support.
|
||||
|
||||
endchoice
|
@ -2,4 +2,4 @@
|
||||
# arch/blackfin/mach-bf548/boards/Makefile
|
||||
#
|
||||
|
||||
obj-$(CONFIG_BFIN548_EZKIT) += ezkit.o led.o
|
||||
obj-$(CONFIG_BFIN548_EZKIT) += ezkit.o led.o
|
||||
|
@ -42,6 +42,7 @@
|
||||
#include <asm/dma.h>
|
||||
#include <asm/gpio.h>
|
||||
#include <asm/nand.h>
|
||||
#include <asm/portmux.h>
|
||||
#include <asm/mach/bf54x_keys.h>
|
||||
#include <linux/input.h>
|
||||
#include <linux/spi/ad7877.h>
|
||||
@ -377,7 +378,7 @@ static struct bfin5xx_spi_chip spi_flash_chip_info = {
|
||||
|
||||
#if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
|
||||
static struct bfin5xx_spi_chip spi_ad7877_chip_info = {
|
||||
.cs_change_per_word = 1,
|
||||
.cs_change_per_word = 0,
|
||||
.enable_dma = 0,
|
||||
.bits_per_word = 16,
|
||||
};
|
||||
@ -453,9 +454,10 @@ static struct resource bfin_spi1_resource[] = {
|
||||
};
|
||||
|
||||
/* SPI controller data */
|
||||
static struct bfin5xx_spi_master bf54x_spi_master_info = {
|
||||
static struct bfin5xx_spi_master bf54x_spi_master_info0 = {
|
||||
.num_chipselect = 8,
|
||||
.enable_dma = 1, /* master has the ability to do dma transfer */
|
||||
.pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0},
|
||||
};
|
||||
|
||||
static struct platform_device bf54x_spi_master0 = {
|
||||
@ -464,17 +466,23 @@ static struct platform_device bf54x_spi_master0 = {
|
||||
.num_resources = ARRAY_SIZE(bfin_spi0_resource),
|
||||
.resource = bfin_spi0_resource,
|
||||
.dev = {
|
||||
.platform_data = &bf54x_spi_master_info, /* Passed to driver */
|
||||
.platform_data = &bf54x_spi_master_info0, /* Passed to driver */
|
||||
},
|
||||
};
|
||||
|
||||
static struct bfin5xx_spi_master bf54x_spi_master_info1 = {
|
||||
.num_chipselect = 8,
|
||||
.enable_dma = 1, /* master has the ability to do dma transfer */
|
||||
.pin_req = {P_SPI1_SCK, P_SPI1_MISO, P_SPI1_MOSI, 0},
|
||||
};
|
||||
|
||||
static struct platform_device bf54x_spi_master1 = {
|
||||
.name = "bfin-spi",
|
||||
.id = 1, /* Bus number */
|
||||
.num_resources = ARRAY_SIZE(bfin_spi1_resource),
|
||||
.resource = bfin_spi1_resource,
|
||||
.dev = {
|
||||
.platform_data = &bf54x_spi_master_info, /* Passed to driver */
|
||||
.platform_data = &bf54x_spi_master_info1, /* Passed to driver */
|
||||
},
|
||||
};
|
||||
#endif /* spi master and devices */
|
||||
@ -500,6 +508,7 @@ static struct platform_device i2c_bfin_twi0_device = {
|
||||
.resource = bfin_twi0_resource,
|
||||
};
|
||||
|
||||
#if !defined(CONFIG_BF542) /* The BF542 only has 1 TWI */
|
||||
static struct resource bfin_twi1_resource[] = {
|
||||
[0] = {
|
||||
.start = TWI1_REGBASE,
|
||||
@ -520,6 +529,7 @@ static struct platform_device i2c_bfin_twi1_device = {
|
||||
.resource = bfin_twi1_resource,
|
||||
};
|
||||
#endif
|
||||
#endif
|
||||
|
||||
static struct platform_device *ezkit_devices[] __initdata = {
|
||||
#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE)
|
||||
@ -569,8 +579,10 @@ static struct platform_device *ezkit_devices[] __initdata = {
|
||||
|
||||
#if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
|
||||
&i2c_bfin_twi0_device,
|
||||
#if !defined(CONFIG_BF542)
|
||||
&i2c_bfin_twi1_device,
|
||||
#endif
|
||||
#endif
|
||||
};
|
||||
|
||||
static int __init stamp_init(void)
|
||||
|
@ -158,6 +158,27 @@ ENTRY(__stext)
|
||||
w[p2] = r0;
|
||||
ssync;
|
||||
|
||||
p2.h = hi(EBIU_MBSCTL);
|
||||
p2.l = lo(EBIU_MBSCTL);
|
||||
r0.h = hi(CONFIG_EBIU_MBSCTLVAL);
|
||||
r0.l = lo(CONFIG_EBIU_MBSCTLVAL);
|
||||
[p2] = r0;
|
||||
ssync;
|
||||
|
||||
p2.h = hi(EBIU_MODE);
|
||||
p2.l = lo(EBIU_MODE);
|
||||
r0.h = hi(CONFIG_EBIU_MODEVAL);
|
||||
r0.l = lo(CONFIG_EBIU_MODEVAL);
|
||||
[p2] = r0;
|
||||
ssync;
|
||||
|
||||
p2.h = hi(EBIU_FCTL);
|
||||
p2.l = lo(EBIU_FCTL);
|
||||
r0.h = hi(CONFIG_EBIU_FCTLVAL);
|
||||
r0.l = lo(CONFIG_EBIU_FCTLVAL);
|
||||
[p2] = r0;
|
||||
ssync;
|
||||
|
||||
/* This section keeps the processor in supervisor mode
|
||||
* during kernel boot. Switches to user mode at end of boot.
|
||||
* See page 3-9 of Hardware Reference manual for documentation.
|
||||
|
@ -1,4 +1,6 @@
|
||||
if BF561
|
||||
if (BF561)
|
||||
|
||||
source "arch/blackfin/mach-bf561/boards/Kconfig"
|
||||
|
||||
menu "BF561 Specific Configuration"
|
||||
|
||||
|
27
arch/blackfin/mach-bf561/boards/Kconfig
Normal file
27
arch/blackfin/mach-bf561/boards/Kconfig
Normal file
@ -0,0 +1,27 @@
|
||||
choice
|
||||
prompt "System type"
|
||||
default BFIN561_EZKIT
|
||||
help
|
||||
Select your board!
|
||||
|
||||
config BFIN561_EZKIT
|
||||
bool "BF561-EZKIT"
|
||||
help
|
||||
BF561-EZKIT-LITE board support.
|
||||
|
||||
config BFIN561_TEPLA
|
||||
bool "BF561-TEPLA"
|
||||
help
|
||||
BF561-TEPLA board support.
|
||||
|
||||
config BFIN561_BLUETECHNIX_CM
|
||||
bool "Bluetechnix CM-BF561"
|
||||
help
|
||||
CM-BF561 support for EVAL- and DEV-Board.
|
||||
|
||||
config GENERIC_BF561_BOARD
|
||||
bool "Generic"
|
||||
help
|
||||
Generic or Custom board support.
|
||||
|
||||
endchoice
|
@ -2,7 +2,7 @@
|
||||
# arch/blackfin/mach-bf561/boards/Makefile
|
||||
#
|
||||
|
||||
obj-$(CONFIG_GENERIC_BOARD) += generic_board.o
|
||||
obj-$(CONFIG_GENERIC_BF561_BOARD) += generic_board.o
|
||||
obj-$(CONFIG_BFIN561_BLUETECHNIX_CM) += cm_bf561.o
|
||||
obj-$(CONFIG_BFIN561_EZKIT) += ezkit.o
|
||||
obj-$(CONFIG_BFIN561_TEPLA) += tepla.o
|
||||
|
@ -33,11 +33,12 @@
|
||||
#include <linux/mtd/partitions.h>
|
||||
#include <linux/spi/spi.h>
|
||||
#include <linux/spi/flash.h>
|
||||
#include <linux/usb_isp1362.h>
|
||||
#include <linux/usb/isp1362.h>
|
||||
#include <linux/pata_platform.h>
|
||||
#include <linux/irq.h>
|
||||
#include <asm/dma.h>
|
||||
#include <asm/bfin5xx_spi.h>
|
||||
#include <asm/portmux.h>
|
||||
|
||||
/*
|
||||
* Name the Board for the /proc/cpuinfo
|
||||
@ -182,6 +183,7 @@ static struct resource bfin_spi0_resource[] = {
|
||||
static struct bfin5xx_spi_master bfin_spi0_info = {
|
||||
.num_chipselect = 8,
|
||||
.enable_dma = 1, /* master has the ability to do dma transfer */
|
||||
.pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0},
|
||||
};
|
||||
|
||||
static struct platform_device bfin_spi0_device = {
|
||||
|
@ -35,6 +35,7 @@
|
||||
#include <linux/pata_platform.h>
|
||||
#include <asm/dma.h>
|
||||
#include <asm/bfin5xx_spi.h>
|
||||
#include <asm/portmux.h>
|
||||
|
||||
/*
|
||||
* Name the Board for the /proc/cpuinfo
|
||||
@ -115,6 +116,28 @@ static struct platform_device smc91x_device = {
|
||||
};
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_AX88180) || defined(CONFIG_AX88180_MODULE)
|
||||
static struct resource ax88180_resources[] = {
|
||||
[0] = {
|
||||
.start = 0x2c000000,
|
||||
.end = 0x2c000000 + 0x8000,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
[1] = {
|
||||
.start = IRQ_PF10,
|
||||
.end = IRQ_PF10,
|
||||
.flags = (IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL),
|
||||
},
|
||||
};
|
||||
|
||||
static struct platform_device ax88180_device = {
|
||||
.name = "ax88180",
|
||||
.id = -1,
|
||||
.num_resources = ARRAY_SIZE(ax88180_resources),
|
||||
.resource = ax88180_resources,
|
||||
};
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
|
||||
static struct resource bfin_uart_resources[] = {
|
||||
{
|
||||
@ -160,6 +183,7 @@ static struct resource bfin_spi0_resource[] = {
|
||||
static struct bfin5xx_spi_master bfin_spi0_info = {
|
||||
.num_chipselect = 8,
|
||||
.enable_dma = 1, /* master has the ability to do dma transfer */
|
||||
.pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0},
|
||||
};
|
||||
|
||||
static struct platform_device bfin_spi0_device = {
|
||||
@ -226,6 +250,11 @@ static struct platform_device *ezkit_devices[] __initdata = {
|
||||
#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
|
||||
&smc91x_device,
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_AX88180) || defined(CONFIG_AX88180_MODULE)
|
||||
&ax88180_device,
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
|
||||
&bfin_spi0_device,
|
||||
#endif
|
||||
|
@ -48,10 +48,6 @@ static struct resource smc91x_resources[] = {
|
||||
.end = IRQ_PROG_INTB,
|
||||
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
|
||||
}, {
|
||||
/*
|
||||
* denotes the flag pin and is used directly if
|
||||
* CONFIG_IRQCHIP_DEMUX_GPIO is defined.
|
||||
*/
|
||||
.start = IRQ_PF9,
|
||||
.end = IRQ_PF9,
|
||||
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
|
||||
|
@ -31,10 +31,6 @@ static struct resource smc91x_resources[] = {
|
||||
.end = IRQ_PROG_INTB,
|
||||
.flags = IORESOURCE_IRQ|IORESOURCE_IRQ_HIGHLEVEL,
|
||||
}, {
|
||||
/*
|
||||
* denotes the flag pin and is used directly if
|
||||
* CONFIG_IRQCHIP_DEMUX_GPIO is defined.
|
||||
*/
|
||||
.start = IRQ_PF7,
|
||||
.end = IRQ_PF7,
|
||||
.flags = IORESOURCE_IRQ|IORESOURCE_IRQ_HIGHLEVEL,
|
||||
|
@ -91,7 +91,7 @@ static char *cplb_print_entry(char *buf, int type)
|
||||
} else
|
||||
buf += sprintf(buf, "Data CPLB entry:\n");
|
||||
|
||||
buf += sprintf(buf, "Address\t\tData\tSize\tValid\tLocked\tSwapin\n\tiCount\toCount\n");
|
||||
buf += sprintf(buf, "Address\t\tData\tSize\tValid\tLocked\tSwapin\tiCount\toCount\n");
|
||||
|
||||
while (*p_addr != 0xffffffff) {
|
||||
entry = cplb_find_entry(cplb_addr, cplb_data, *p_addr, *p_data);
|
||||
|
@ -73,7 +73,7 @@ ENTRY(_cplb_mgr)
|
||||
/* ICPLB Miss Exception. We need to choose one of the
|
||||
* currently-installed CPLBs, and replace it with one
|
||||
* from the configuration table.
|
||||
*/
|
||||
*/
|
||||
|
||||
P4.L = LO(ICPLB_FAULT_ADDR);
|
||||
P4.H = HI(ICPLB_FAULT_ADDR);
|
||||
@ -222,7 +222,7 @@ ENTRY(_cplb_mgr)
|
||||
|
||||
/* See if failed address > start address */
|
||||
CC = R4 <= R0(IU);
|
||||
IF !CC JUMP .Linext;
|
||||
IF !CC JUMP .Linext;
|
||||
|
||||
/* extract page size (17:16)*/
|
||||
R3 = EXTRACT(R2, R1.L) (Z);
|
||||
@ -271,16 +271,27 @@ ENTRY(_cplb_mgr)
|
||||
|
||||
/* FAILED CASES*/
|
||||
.Lno_page_in_table:
|
||||
( R7:4,P5:3 ) = [SP++];
|
||||
R0 = CPLB_NO_ADDR_MATCH;
|
||||
RTS;
|
||||
JUMP .Lfail_ret;
|
||||
|
||||
.Lall_locked:
|
||||
( R7:4,P5:3 ) = [SP++];
|
||||
R0 = CPLB_NO_UNLOCKED;
|
||||
RTS;
|
||||
JUMP .Lfail_ret;
|
||||
|
||||
.Lprot_violation:
|
||||
( R7:4,P5:3 ) = [SP++];
|
||||
R0 = CPLB_PROT_VIOL;
|
||||
|
||||
.Lfail_ret:
|
||||
/* Make sure we turn protection/cache back on, even in the failing case */
|
||||
BITSET(R5,ENICPLB_P);
|
||||
CLI R2;
|
||||
SSYNC; /* SSYNC required before writing to IMEM_CONTROL. */
|
||||
.align 8;
|
||||
[P4] = R5;
|
||||
SSYNC;
|
||||
STI R2;
|
||||
|
||||
( R7:4,P5:3 ) = [SP++];
|
||||
RTS;
|
||||
|
||||
.Ldcplb_write:
|
||||
|
@ -33,7 +33,7 @@
|
||||
* after a timer-interrupt and after each system call.
|
||||
*/
|
||||
|
||||
|
||||
#include <linux/init.h>
|
||||
#include <linux/linkage.h>
|
||||
#include <linux/unistd.h>
|
||||
#include <asm/blackfin.h>
|
||||
@ -71,25 +71,44 @@ ENDPROC(_safe_speculative_execution)
|
||||
* This one does not lower the level to IRQ5, and thus can be used to
|
||||
* patch up CPLB misses on the kernel stack.
|
||||
*/
|
||||
ENTRY(_ex_dcplb)
|
||||
#if ANOMALY_05000261
|
||||
#define _ex_dviol _ex_workaround_261
|
||||
#define _ex_dmiss _ex_workaround_261
|
||||
#define _ex_dmult _ex_workaround_261
|
||||
|
||||
ENTRY(_ex_workaround_261)
|
||||
/*
|
||||
* Work around an anomaly: if we see a new DCPLB fault, return
|
||||
* without doing anything. Then, if we get the same fault again,
|
||||
* handle it.
|
||||
*/
|
||||
P4 = R7; /* Store EXCAUSE */
|
||||
p5.l = _last_cplb_fault_retx;
|
||||
p5.h = _last_cplb_fault_retx;
|
||||
r7 = [p5];
|
||||
r6 = retx;
|
||||
[p5] = r6;
|
||||
cc = r6 == r7;
|
||||
if !cc jump _return_from_exception;
|
||||
if !cc jump _bfin_return_from_exception;
|
||||
/* fall through */
|
||||
#endif
|
||||
ENDPROC(_ex_dcplb)
|
||||
R7 = P4;
|
||||
R6 = 0x26; /* Data CPLB Miss */
|
||||
cc = R6 == R7;
|
||||
if cc jump _ex_dcplb_miss (BP);
|
||||
/* Handle 0x23 Data CPLB Protection Violation
|
||||
* and Data CPLB Multiple Hits - Linux Trap Zero
|
||||
*/
|
||||
jump _ex_trap_c;
|
||||
ENDPROC(_ex_workaround_261)
|
||||
|
||||
ENTRY(_ex_icplb)
|
||||
#else
|
||||
#define _ex_dviol _ex_trap_c
|
||||
#define _ex_dmiss _ex_dcplb_miss
|
||||
#define _ex_dmult _ex_trap_c
|
||||
#endif
|
||||
|
||||
ENTRY(_ex_dcplb_miss)
|
||||
ENTRY(_ex_icplb_miss)
|
||||
(R7:6,P5:4) = [sp++];
|
||||
ASTAT = [sp++];
|
||||
SAVE_ALL_SYS
|
||||
@ -98,7 +117,7 @@ ENTRY(_ex_icplb)
|
||||
RESTORE_ALL_SYS
|
||||
SP = EX_SCRATCH_REG;
|
||||
rtx;
|
||||
ENDPROC(_ex_icplb)
|
||||
ENDPROC(_ex_icplb_miss)
|
||||
|
||||
ENTRY(_ex_syscall)
|
||||
DEBUG_START_HWTRACE(p5, r7)
|
||||
@ -120,7 +139,7 @@ ENTRY(_ex_single_step)
|
||||
r7 = retx;
|
||||
r6 = reti;
|
||||
cc = r7 == r6;
|
||||
if cc jump _return_from_exception
|
||||
if cc jump _bfin_return_from_exception
|
||||
r7 = syscfg;
|
||||
bitclr (r7, 0);
|
||||
syscfg = R7;
|
||||
@ -137,8 +156,9 @@ ENTRY(_ex_single_step)
|
||||
r7 = [p4];
|
||||
cc = r6 == r7;
|
||||
if !cc jump _ex_trap_c;
|
||||
ENDPROC(_ex_single_step)
|
||||
|
||||
ENTRY(_return_from_exception)
|
||||
ENTRY(_bfin_return_from_exception)
|
||||
DEBUG_START_HWTRACE(p5, r7)
|
||||
#if ANOMALY_05000257
|
||||
R7=LC0;
|
||||
@ -150,7 +170,7 @@ ENTRY(_return_from_exception)
|
||||
ASTAT = [sp++];
|
||||
sp = EX_SCRATCH_REG;
|
||||
rtx;
|
||||
ENDPROC(_ex_soft_bp)
|
||||
ENDPROC(_bfin_return_from_exception)
|
||||
|
||||
ENTRY(_handle_bad_cplb)
|
||||
/* To get here, we just tried and failed to change a CPLB
|
||||
@ -843,7 +863,7 @@ ENTRY(_ex_trace_buff_full)
|
||||
LC0 = [sp++];
|
||||
P2 = [sp++];
|
||||
P3 = [sp++];
|
||||
jump _return_from_exception;
|
||||
jump _bfin_return_from_exception;
|
||||
ENDPROC(_ex_trace_buff_full)
|
||||
|
||||
#if CONFIG_DEBUG_BFIN_HWTRACE_EXPAND_LEN == 4
|
||||
@ -861,7 +881,7 @@ ENTRY(_software_trace_buff)
|
||||
#endif /* CONFIG_DEBUG_BFIN_HWTRACE_EXPAND */
|
||||
|
||||
#if CONFIG_EARLY_PRINTK
|
||||
.section .init.text
|
||||
__INIT
|
||||
ENTRY(_early_trap)
|
||||
SAVE_ALL_SYS
|
||||
trace_buffer_stop(p0,r0);
|
||||
@ -896,6 +916,7 @@ ENTRY(_early_trap)
|
||||
call _early_trap_c;
|
||||
SP += 12;
|
||||
ENDPROC(_early_trap)
|
||||
__FINIT
|
||||
#endif /* CONFIG_EARLY_PRINTK */
|
||||
|
||||
/*
|
||||
@ -908,6 +929,7 @@ ENDPROC(_early_trap)
|
||||
#else
|
||||
.data
|
||||
#endif
|
||||
|
||||
ENTRY(_ex_table)
|
||||
/* entry for each EXCAUSE[5:0]
|
||||
* This table must be in sync with the table in ./kernel/traps.c
|
||||
@ -952,16 +974,16 @@ ENTRY(_ex_table)
|
||||
.long _ex_trap_c /* 0x20 - Reserved */
|
||||
.long _ex_trap_c /* 0x21 - Undefined Instruction */
|
||||
.long _ex_trap_c /* 0x22 - Illegal Instruction Combination */
|
||||
.long _ex_dcplb /* 0x23 - Data CPLB Protection Violation */
|
||||
.long _ex_dviol /* 0x23 - Data CPLB Protection Violation */
|
||||
.long _ex_trap_c /* 0x24 - Data access misaligned */
|
||||
.long _ex_trap_c /* 0x25 - Unrecoverable Event */
|
||||
.long _ex_dcplb /* 0x26 - Data CPLB Miss */
|
||||
.long _ex_trap_c /* 0x27 - Data CPLB Multiple Hits - Linux Trap Zero */
|
||||
.long _ex_dmiss /* 0x26 - Data CPLB Miss */
|
||||
.long _ex_dmult /* 0x27 - Data CPLB Multiple Hits - Linux Trap Zero */
|
||||
.long _ex_trap_c /* 0x28 - Emulation Watchpoint */
|
||||
.long _ex_trap_c /* 0x29 - Instruction fetch access error (535 only) */
|
||||
.long _ex_trap_c /* 0x2A - Instruction fetch misaligned */
|
||||
.long _ex_icplb /* 0x2B - Instruction CPLB protection Violation */
|
||||
.long _ex_icplb /* 0x2C - Instruction CPLB miss */
|
||||
.long _ex_trap_c /* 0x2B - Instruction CPLB protection Violation */
|
||||
.long _ex_icplb_miss /* 0x2C - Instruction CPLB miss */
|
||||
.long _ex_trap_c /* 0x2D - Instruction CPLB Multiple Hits */
|
||||
.long _ex_trap_c /* 0x2E - Illegal use of Supervisor Resource */
|
||||
.long _ex_trap_c /* 0x2E - Illegal use of Supervisor Resource */
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user