Merge branch 'master' into upstream-fixes

This commit is contained in:
Jeff Garzik 2007-12-01 16:18:56 -05:00
commit c99da91e7a
570 changed files with 8416 additions and 5358 deletions

View File

@ -262,6 +262,8 @@ mtrr.txt
- how to use PPro Memory Type Range Registers to increase performance. - how to use PPro Memory Type Range Registers to increase performance.
mutex-design.txt mutex-design.txt
- info on the generic mutex subsystem. - info on the generic mutex subsystem.
namespaces/
- directory with various information about namespaces
nbd.txt nbd.txt
- info on a TCP implementation of a network block device. - info on a TCP implementation of a network block device.
netlabel/ netlabel/

View File

@ -11,7 +11,7 @@ DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml videobook.xml \
procfs-guide.xml writing_usb_driver.xml \ procfs-guide.xml writing_usb_driver.xml \
kernel-api.xml filesystems.xml lsm.xml usb.xml \ kernel-api.xml filesystems.xml lsm.xml usb.xml \
gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \ gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \
genericirq.xml s390-drivers.xml genericirq.xml s390-drivers.xml uio-howto.xml
### ###
# The build process is as follows (targets): # The build process is as follows (targets):

View File

@ -29,6 +29,12 @@
</abstract> </abstract>
<revhistory> <revhistory>
<revision>
<revnumber>0.4</revnumber>
<date>2007-11-26</date>
<authorinitials>hjk</authorinitials>
<revremark>Removed section about uio_dummy.</revremark>
</revision>
<revision> <revision>
<revnumber>0.3</revnumber> <revnumber>0.3</revnumber>
<date>2007-04-29</date> <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 user space. This simplifies development and reduces the risk of
serious bugs within a kernel module. serious bugs within a kernel module.
</para> </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>
<sect1 id="thanks"> <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 For cards that don't generate interrupts but need to be
polled, there is the possibility to set up a timer that polled, there is the possibility to set up a timer that
triggers the interrupt handler at configurable time intervals. triggers the interrupt handler at configurable time intervals.
See <filename>drivers/uio/uio_dummy.c</filename> for an This interrupt simulation is done by calling
example of this technique. <function>uio_event_notify()</function>
from the timer's event handler.
</para> </para>
<para> <para>
@ -263,63 +290,11 @@ offset = N * getpagesize();
</sect1> </sect1>
</chapter> </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"> <chapter id="custom_kernel_module" xreflabel="Writing your own kernel module">
<?dbhtml filename="custom_kernel_module.html"?> <?dbhtml filename="custom_kernel_module.html"?>
<title>Writing your own kernel module</title> <title>Writing your own kernel module</title>
<para> <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 example. The following paragraphs explain the different
sections of this file. sections of this file.
</para> </para>
@ -354,9 +329,8 @@ See the description below for details.
interrupt, it's your modules task to determine the irq number during interrupt, it's your modules task to determine the irq number during
initialization. If you don't have a hardware generated interrupt but initialization. If you don't have a hardware generated interrupt but
want to trigger the interrupt handler in some other way, set want to trigger the interrupt handler in some other way, set
<varname>irq</varname> to <varname>UIO_IRQ_CUSTOM</varname>. The <varname>irq</varname> to <varname>UIO_IRQ_CUSTOM</varname>.
uio_dummy module does this as it triggers the event mechanism in a timer If you had no interrupt at all, you could set
routine. If you had no interrupt at all, you could set
<varname>irq</varname> to <varname>UIO_IRQ_NONE</varname>, though this <varname>irq</varname> to <varname>UIO_IRQ_NONE</varname>, though this
rarely makes sense. rarely makes sense.
</para></listitem> </para></listitem>

View File

@ -1040,6 +1040,11 @@ static void add_virtqueue(struct device *dev, unsigned int num_descs,
/ getpagesize(); / getpagesize();
p = get_pages(pages); p = get_pages(pages);
/* Initialize the virtqueue */
vq->next = NULL;
vq->last_avail_idx = 0;
vq->dev = dev;
/* Initialize the configuration. */ /* Initialize the configuration. */
vq->config.num = num_descs; vq->config.num = num_descs;
vq->config.irq = devices.next_irq++; 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); for (i = &dev->vq; *i; i = &(*i)->next);
*i = vq; *i = vq;
/* Link virtqueue back to device. */
vq->dev = dev;
/* Set the routine to call when the Guest does something to this /* Set the routine to call when the Guest does something to this
* virtqueue. */ * virtqueue. */
vq->handle_output = handle_output; 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->desc = new_dev_desc(type);
dev->handle_input = handle_input; dev->handle_input = handle_input;
dev->name = name; dev->name = name;
dev->vq = NULL;
return dev; return dev;
} }

View 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.

View File

@ -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 ('port'). Once you have done that, you will be able to use
parport_claim and parport_release in order to use the port. 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: This function will register three callbacks into your driver:
'preempt', 'wakeup' and 'irq'. Each of these may be NULL in order to 'preempt', 'wakeup' and 'irq'. Each of these may be NULL in order to
indicate that you do not want a callback. indicate that you do not want a callback.

View File

@ -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 MAC addresses passed by the firmware when no information other
than indices is available to associate an address with a device. than indices is available to associate an address with a device.
- phy-connection-type : a string naming the controller/PHY interface type, - phy-connection-type : a string naming the controller/PHY interface type,
i.e., "mii" (default), "rmii", "gmii", "rgmii", "rgmii-id", "tbi", i.e., "mii" (default), "rmii", "gmii", "rgmii", "rgmii-id" (Internal
or "rtbi". Delay), "rgmii-txid" (delay on TX only), "rgmii-rxid" (delay on RX only),
"tbi", or "rtbi".
Example: Example:
ucc@2000 { ucc@2000 {

View File

@ -1,7 +1,7 @@
ThinkPad ACPI Extras Driver ThinkPad ACPI Extras Driver
Version 0.16 Version 0.17
August 2nd, 2007 October 04th, 2007
Borislav Deianov <borislav@users.sf.net> Borislav Deianov <borislav@users.sf.net>
Henrique de Moraes Holschuh <hmh@hmh.eng.br> 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 This feature allows software control of the LCD brightness on ThinkPad
models which don't have a hardware brightness slider. models which don't have a hardware brightness slider.
It has some limitations: the LCD backlight cannot be actually turned on or off It has some limitations: the LCD backlight cannot be actually turned on or
by this interface, and in many ThinkPad models, the "dim while on battery" off by this interface, and in many ThinkPad models, the "dim while on
functionality will be enabled by the BIOS when this interface is used, and battery" functionality will be enabled by the BIOS when this interface is
cannot be controlled. used, and cannot be controlled.
The backlight control has eight levels, ranging from 0 to 7. Some of the On IBM (and some of the earlier Lenovo) ThinkPads, the backlight control
levels may not be distinct. 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. There are two interfaces to the firmware for direct brightness control,
To select which one should be used, use the brightness_mode module parameter: EC and CMOS. To select which one should be used, use the
brightness_mode=1 selects EC mode, brightness_mode=2 selects CMOS mode, brightness_mode module parameter: brightness_mode=1 selects EC mode,
brightness_mode=3 selects both EC and CMOS. The driver tries to autodetect brightness_mode=2 selects CMOS mode, brightness_mode=3 selects both EC
which interface to use. 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: Procfs notes:
@ -947,11 +962,11 @@ Procfs notes:
Sysfs notes: Sysfs notes:
The interface is implemented through the backlight sysfs class, which is poorly The interface is implemented through the backlight sysfs class, which is
documented at this time. poorly documented at this time.
Locate the thinkpad_screen device under /sys/class/backlight, and inside it Locate the thinkpad_screen device under /sys/class/backlight, and inside
there will be the following attributes: it there will be the following attributes:
max_brightness: max_brightness:
Reads the maximum brightness the hardware can be set to. 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. Reads what brightness the screen is set to at this instant.
brightness: brightness:
Writes request the driver to change brightness to the given Writes request the driver to change brightness to the
value. Reads will tell you what brightness the driver is trying given value. Reads will tell you what brightness the
to set the display to when "power" is set to zero and the display driver is trying to set the display to when "power" is set
has not been dimmed by a kernel power management event. to zero and the display has not been dimmed by a kernel
power management event.
power: power:
power management mode, where 0 is "display on", and 1 to 3 will power management mode, where 0 is "display on", and 1 to 3
dim the display backlight to brightness level 0 because will dim the display backlight to brightness level 0
thinkpad-acpi cannot really turn the backlight off. Kernel because thinkpad-acpi cannot really turn the backlight
power management events can temporarily increase the current off. Kernel power management events can temporarily
power management level, i.e. they can dim the display. increase the current power management level, i.e. they can
dim the display.
Volume control -- /proc/acpi/ibm/volume Volume control -- /proc/acpi/ibm/volume

View File

@ -132,6 +132,14 @@ set_termios() Notify the tty driver that the device's termios
tty->termios. Previous settings should be passed in tty->termios. Previous settings should be passed in
the "old" argument. 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 throttle() Notify the tty driver that input buffers for the
line discipline are close to full, and it should line discipline are close to full, and it should
somehow signal that no more characters should be somehow signal that no more characters should be

View File

@ -278,6 +278,14 @@ optional. The methods' jobs are quite simple:
(although the interfaces will be in the same altsettings as (although the interfaces will be in the same altsettings as
before the suspend). 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 The reset_resume method is used by the USB Persist facility (see
Documentation/usb/persist.txt) and it can also be used under certain Documentation/usb/persist.txt) and it can also be used under certain
circumstances when CONFIG_USB_PERSIST is not enabled. Currently, if a circumstances when CONFIG_USB_PERSIST is not enabled. Currently, if a

View 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.

View File

@ -323,8 +323,7 @@ S: Maintained
ALCATEL SPEEDTOUCH USB DRIVER ALCATEL SPEEDTOUCH USB DRIVER
P: Duncan Sands P: Duncan Sands
M: duncan.sands@free.fr M: duncan.sands@free.fr
L: linux-usb-users@lists.sourceforge.net L: linux-usb@vger.kernel.org
L: linux-usb-devel@lists.sourceforge.net
W: http://www.linux-usb.org/SpeedTouch/ W: http://www.linux-usb.org/SpeedTouch/
S: Maintained S: Maintained
@ -440,7 +439,7 @@ S: Maintained
ARM/ATMEL AT91RM9200 ARM ARCHITECTURE ARM/ATMEL AT91RM9200 ARM ARCHITECTURE
P: Andrew Victor P: Andrew Victor
M: andrew@sanpeople.com M: linux@maxim.org.za
L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only)
W: http://maxim.org.za/at91_26.html W: http://maxim.org.za/at91_26.html
S: Maintained S: Maintained
@ -1043,7 +1042,7 @@ S: Maintained
CIRRUS LOGIC EP93XX OHCI USB HOST DRIVER CIRRUS LOGIC EP93XX OHCI USB HOST DRIVER
P: Lennert Buytenhek P: Lennert Buytenhek
M: kernel@wantstofly.org M: kernel@wantstofly.org
L: linux-usb-devel@lists.sourceforge.net L: linux-usb@vger.kernel.org
S: Maintained S: Maintained
CIRRUS LOGIC CS4280/CS461x SOUNDDRIVER CIRRUS LOGIC CS4280/CS461x SOUNDDRIVER
@ -1552,7 +1551,7 @@ S: Maintained
FREESCALE HIGHSPEED USB DEVICE DRIVER FREESCALE HIGHSPEED USB DEVICE DRIVER
P: Li Yang P: Li Yang
M: leoli@freescale.com M: leoli@freescale.com
L: linux-usb-devel@lists.sourceforge.net L: linux-usb@vger.kernel.org
L: linuxppc-dev@ozlabs.org L: linuxppc-dev@ozlabs.org
S: Maintained S: Maintained
@ -1914,10 +1913,8 @@ L: linux1394-devel@lists.sourceforge.net
S: Maintained S: Maintained
IMS TWINTURBO FRAMEBUFFER DRIVER IMS TWINTURBO FRAMEBUFFER DRIVER
P: Paul Mundt
M: lethal@chaoticdreams.org
L: linux-fbdev-devel@lists.sourceforge.net (subscribers-only) L: linux-fbdev-devel@lists.sourceforge.net (subscribers-only)
S: Maintained S: Orphan
INFINIBAND SUBSYSTEM INFINIBAND SUBSYSTEM
P: Roland Dreier P: Roland Dreier
@ -2113,6 +2110,14 @@ L: irda-users@lists.sourceforge.net (subscribers-only)
W: http://irda.sourceforge.net/ W: http://irda.sourceforge.net/
S: Maintained 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 ISAPNP
P: Jaroslav Kysela P: Jaroslav Kysela
M: perex@perex.cz M: perex@perex.cz
@ -2446,7 +2451,7 @@ M68K ON APPLE MACINTOSH
P: Joshua Thompson P: Joshua Thompson
M: funaho@jurai.org M: funaho@jurai.org
W: http://www.mac.linux-m68k.org/ W: http://www.mac.linux-m68k.org/
L: linux-mac68k@mac.linux-m68k.org L: linux-m68k@lists.linux-m68k.org
S: Maintained S: Maintained
M68K ON HP9000/300 M68K ON HP9000/300
@ -3636,18 +3641,12 @@ M: laredo@gnu.org
W: http://www.stradis.com/ W: http://www.stradis.com/
S: Maintained S: Maintained
SUPERH (sh) SUPERH
P: Paul Mundt P: Paul Mundt
M: lethal@linux-sh.org M: lethal@linux-sh.org
L: linuxsh-dev@lists.sourceforge.net (subscribers-only) L: linux-sh@vger.kernel.org
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
W: http://www.linux-sh.org W: http://www.linux-sh.org
T: git kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6.git
S: Maintained S: Maintained
SUN3/3X SUN3/3X
@ -3733,7 +3732,7 @@ S: Maintained
TLAN NETWORK DRIVER TLAN NETWORK DRIVER
P: Samuel Chessman P: Samuel Chessman
M: chessman@tux.org M: chessman@tux.org
L: tlan-devel@lists.sourceforge.net L: tlan-devel@lists.sourceforge.net (subscribers-only)
W: http://sourceforge.net/projects/tlan/ W: http://sourceforge.net/projects/tlan/
S: Maintained S: Maintained
@ -3818,22 +3817,20 @@ S: Maintained
USB ACM DRIVER USB ACM DRIVER
P: Oliver Neukum P: Oliver Neukum
M: oliver@neukum.name M: oliver@neukum.name
L: linux-usb-users@lists.sourceforge.net L: linux-usb@vger.kernel.org
L: linux-usb-devel@lists.sourceforge.net
S: Maintained S: Maintained
USB BLOCK DRIVER (UB ub) USB BLOCK DRIVER (UB ub)
P: Pete Zaitcev P: Pete Zaitcev
M: zaitcev@redhat.com M: zaitcev@redhat.com
L: linux-kernel@vger.kernel.org L: linux-kernel@vger.kernel.org
L: linux-usb-devel@lists.sourceforge.net L: linux-usb@vger.kernel.org
S: Supported S: Supported
USB CDC ETHERNET DRIVER USB CDC ETHERNET DRIVER
P: Greg Kroah-Hartman P: Greg Kroah-Hartman
M: greg@kroah.com M: greg@kroah.com
L: linux-usb-users@lists.sourceforge.net L: linux-usb@vger.kernel.org
L: linux-usb-devel@lists.sourceforge.net
S: Maintained S: Maintained
W: http://www.kroah.com/linux-usb/ W: http://www.kroah.com/linux-usb/
@ -3847,13 +3844,13 @@ S: Maintained
USB EHCI DRIVER USB EHCI DRIVER
P: David Brownell P: David Brownell
M: dbrownell@users.sourceforge.net M: dbrownell@users.sourceforge.net
L: linux-usb-devel@lists.sourceforge.net L: linux-usb@vger.kernel.org
S: Odd Fixes S: Odd Fixes
USB ET61X[12]51 DRIVER USB ET61X[12]51 DRIVER
P: Luca Risolia P: Luca Risolia
M: luca.risolia@studio.unibo.it M: luca.risolia@studio.unibo.it
L: linux-usb-devel@lists.sourceforge.net L: linux-usb@vger.kernel.org
L: video4linux-list@redhat.com L: video4linux-list@redhat.com
W: http://www.linux-projects.org W: http://www.linux-projects.org
S: Maintained S: Maintained
@ -3861,41 +3858,33 @@ S: Maintained
USB GADGET/PERIPHERAL SUBSYSTEM USB GADGET/PERIPHERAL SUBSYSTEM
P: David Brownell P: David Brownell
M: dbrownell@users.sourceforge.net 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 W: http://www.linux-usb.org/gadget
S: Maintained S: Maintained
USB HID/HIDBP DRIVERS (USB KEYBOARDS, MICE, REMOTE CONTROLS, ...) USB HID/HIDBP DRIVERS (USB KEYBOARDS, MICE, REMOTE CONTROLS, ...)
P: Jiri Kosina P: Jiri Kosina
M: jkosina@suse.cz 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 T: git kernel.org:/pub/scm/linux/kernel/git/jikos/hid.git
S: Maintained 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 USB ISP116X DRIVER
P: Olav Kongas P: Olav Kongas
M: ok@artecdesign.ee M: ok@artecdesign.ee
L: linux-usb-devel@lists.sourceforge.net L: linux-usb@vger.kernel.org
S: Maintained S: Maintained
USB KAWASAKI LSI DRIVER USB KAWASAKI LSI DRIVER
P: Oliver Neukum P: Oliver Neukum
M: oliver@neukum.name M: oliver@neukum.name
L: linux-usb-users@lists.sourceforge.net L: linux-usb@vger.kernel.org
L: linux-usb-devel@lists.sourceforge.net
S: Maintained S: Maintained
USB MASS STORAGE DRIVER USB MASS STORAGE DRIVER
P: Matthew Dharm P: Matthew Dharm
M: mdharm-usb@one-eyed-alien.net 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 L: usb-storage@lists.one-eyed-alien.net
S: Maintained S: Maintained
W: http://www.one-eyed-alien.net/~mdharm/linux-usb/ 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 USB OHCI DRIVER
P: David Brownell P: David Brownell
M: dbrownell@users.sourceforge.net M: dbrownell@users.sourceforge.net
L: linux-usb-users@lists.sourceforge.net L: linux-usb@vger.kernel.org
L: linux-usb-devel@lists.sourceforge.net
S: Odd Fixes S: Odd Fixes
USB OPTION-CARD DRIVER USB OPTION-CARD DRIVER
P: Matthias Urlichs P: Matthias Urlichs
M: smurf@smurf.noris.de M: smurf@smurf.noris.de
L: linux-usb-devel@lists.sourceforge.net L: linux-usb@vger.kernel.org
S: Maintained S: Maintained
USB OV511 DRIVER USB OV511 DRIVER
P: Mark McClelland P: Mark McClelland
M: mmcclell@bigfoot.com M: mmcclell@bigfoot.com
L: linux-usb-users@lists.sourceforge.net L: linux-usb@vger.kernel.org
L: linux-usb-devel@lists.sourceforge.net
W: http://alpha.dyndns.org/ov511/ W: http://alpha.dyndns.org/ov511/
S: Maintained S: Maintained
USB PEGASUS DRIVER USB PEGASUS DRIVER
P: Petko Manolov P: Petko Manolov
M: petkan@users.sourceforge.net M: petkan@users.sourceforge.net
L: linux-usb-devel@lists.sourceforge.net L: linux-usb@vger.kernel.org
L: netdev@vger.kernel.org L: netdev@vger.kernel.org
W: http://pegasus2.sourceforge.net/ W: http://pegasus2.sourceforge.net/
S: Maintained S: Maintained
@ -3932,14 +3919,13 @@ S: Maintained
USB PRINTER DRIVER (usblp) USB PRINTER DRIVER (usblp)
P: Pete Zaitcev P: Pete Zaitcev
M: zaitcev@redhat.com M: zaitcev@redhat.com
L: linux-usb-users@lists.sourceforge.net L: linux-usb@vger.kernel.org
L: linux-usb-devel@lists.sourceforge.net
S: Supported S: Supported
USB RTL8150 DRIVER USB RTL8150 DRIVER
P: Petko Manolov P: Petko Manolov
M: petkan@users.sourceforge.net M: petkan@users.sourceforge.net
L: linux-usb-devel@lists.sourceforge.net L: linux-usb@vger.kernel.org
L: netdev@vger.kernel.org L: netdev@vger.kernel.org
W: http://pegasus2.sourceforge.net/ W: http://pegasus2.sourceforge.net/
S: Maintained S: Maintained
@ -3947,8 +3933,7 @@ S: Maintained
USB SE401 DRIVER USB SE401 DRIVER
P: Jeroen Vreeken P: Jeroen Vreeken
M: pe1rxq@amsat.org M: pe1rxq@amsat.org
L: linux-usb-users@lists.sourceforge.net L: linux-usb@vger.kernel.org
L: linux-usb-devel@lists.sourceforge.net
W: http://www.chello.nl/~j.vreeken/se401/ W: http://www.chello.nl/~j.vreeken/se401/
S: Maintained S: Maintained
@ -3962,72 +3947,59 @@ USB SERIAL DIGI ACCELEPORT DRIVER
P: Peter Berger and Al Borchers P: Peter Berger and Al Borchers
M: pberger@brimson.com M: pberger@brimson.com
M: alborchers@steinerpoint.com M: alborchers@steinerpoint.com
L: linux-usb-users@lists.sourceforge.net L: linux-usb@vger.kernel.org
L: linux-usb-devel@lists.sourceforge.net
S: Maintained S: Maintained
USB SERIAL DRIVER USB SERIAL DRIVER
P: Greg Kroah-Hartman P: Greg Kroah-Hartman
M: gregkh@suse.de M: gregkh@suse.de
L: linux-usb-users@lists.sourceforge.net L: linux-usb@vger.kernel.org
L: linux-usb-devel@lists.sourceforge.net
S: Supported S: Supported
USB SERIAL BELKIN F5U103 DRIVER USB SERIAL BELKIN F5U103 DRIVER
P: William Greathouse P: William Greathouse
M: wgreathouse@smva.com M: wgreathouse@smva.com
L: linux-usb-users@lists.sourceforge.net L: linux-usb@vger.kernel.org
L: linux-usb-devel@lists.sourceforge.net
S: Maintained S: Maintained
USB SERIAL CYPRESS M8 DRIVER USB SERIAL CYPRESS M8 DRIVER
P: Lonnie Mendez P: Lonnie Mendez
M: dignome@gmail.com M: dignome@gmail.com
L: linux-usb-users@lists.sourceforge.net L: linux-usb@vger.kernel.org
L: linux-usb-devel@lists.sourceforge.net
S: Maintained S: Maintained
W: http://geocities.com/i0xox0i W: http://geocities.com/i0xox0i
W: http://firstlight.net/cvs 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 USB AUERSWALD DRIVER
P: Wolfgang Muees P: Wolfgang Muees
M: wolfgang@iksw-muees.de M: wolfgang@iksw-muees.de
L: linux-usb-users@lists.sourceforge.net L: linux-usb@vger.kernel.org
L: linux-usb-devel@lists.sourceforge.net
S: Maintained S: Maintained
USB SERIAL EMPEG EMPEG-CAR MARK I/II DRIVER USB SERIAL EMPEG EMPEG-CAR MARK I/II DRIVER
P: Gary Brubaker P: Gary Brubaker
M: xavyer@ix.netcom.com M: xavyer@ix.netcom.com
L: linux-usb-users@lists.sourceforge.net L: linux-usb@vger.kernel.org
L: linux-usb-devel@lists.sourceforge.net
S: Maintained S: Maintained
USB SERIAL KEYSPAN DRIVER USB SERIAL KEYSPAN DRIVER
P: Greg Kroah-Hartman P: Greg Kroah-Hartman
M: greg@kroah.com M: greg@kroah.com
L: linux-usb-users@lists.sourceforge.net L: linux-usb@vger.kernel.org
L: linux-usb-devel@lists.sourceforge.net
W: http://www.kroah.com/linux/ W: http://www.kroah.com/linux/
S: Maintained S: Maintained
USB SERIAL WHITEHEAT DRIVER USB SERIAL WHITEHEAT DRIVER
P: Support Department P: Support Department
M: support@connecttech.com M: support@connecttech.com
L: linux-usb-users@lists.sourceforge.net L: linux-usb@vger.kernel.org
L: linux-usb-devel@lists.sourceforge.net
W: http://www.connecttech.com W: http://www.connecttech.com
S: Supported S: Supported
USB SN9C1xx DRIVER USB SN9C1xx DRIVER
P: Luca Risolia P: Luca Risolia
M: luca.risolia@studio.unibo.it M: luca.risolia@studio.unibo.it
L: linux-usb-devel@lists.sourceforge.net L: linux-usb@vger.kernel.org
L: video4linux-list@redhat.com L: video4linux-list@redhat.com
W: http://www.linux-projects.org W: http://www.linux-projects.org
S: Maintained S: Maintained
@ -4035,8 +4007,7 @@ S: Maintained
USB SUBSYSTEM USB SUBSYSTEM
P: Greg Kroah-Hartman P: Greg Kroah-Hartman
M: gregkh@suse.de M: gregkh@suse.de
L: linux-usb-users@lists.sourceforge.net L: linux-usb@vger.kernel.org
L: linux-usb-devel@lists.sourceforge.net
W: http://www.linux-usb.org W: http://www.linux-usb.org
T: quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/ T: quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/
S: Supported S: Supported
@ -4044,8 +4015,7 @@ S: Supported
USB UHCI DRIVER USB UHCI DRIVER
P: Alan Stern P: Alan Stern
M: stern@rowland.harvard.edu M: stern@rowland.harvard.edu
L: linux-usb-users@lists.sourceforge.net L: linux-usb@vger.kernel.org
L: linux-usb-devel@lists.sourceforge.net
S: Maintained S: Maintained
USB "USBNET" DRIVER FRAMEWORK USB "USBNET" DRIVER FRAMEWORK
@ -4058,7 +4028,7 @@ S: Maintained
USB W996[87]CF DRIVER USB W996[87]CF DRIVER
P: Luca Risolia P: Luca Risolia
M: luca.risolia@studio.unibo.it M: luca.risolia@studio.unibo.it
L: linux-usb-devel@lists.sourceforge.net L: linux-usb@vger.kernel.org
L: video4linux-list@redhat.com L: video4linux-list@redhat.com
W: http://www.linux-projects.org W: http://www.linux-projects.org
S: Maintained S: Maintained
@ -4066,7 +4036,7 @@ S: Maintained
USB ZC0301 DRIVER USB ZC0301 DRIVER
P: Luca Risolia P: Luca Risolia
M: luca.risolia@studio.unibo.it M: luca.risolia@studio.unibo.it
L: linux-usb-devel@lists.sourceforge.net L: linux-usb@vger.kernel.org
L: video4linux-list@redhat.com L: video4linux-list@redhat.com
W: http://www.linux-projects.org W: http://www.linux-projects.org
S: Maintained S: Maintained
@ -4074,15 +4044,14 @@ S: Maintained
USB ZD1201 DRIVER USB ZD1201 DRIVER
P: Jeroen Vreeken P: Jeroen Vreeken
M: pe1rxq@amsat.org M: pe1rxq@amsat.org
L: linux-usb-users@lists.sourceforge.net L: linux-usb@vger.kernel.org
L: linux-usb-devel@lists.sourceforge.net
W: http://linux-lc100020.sourceforge.net W: http://linux-lc100020.sourceforge.net
S: Maintained S: Maintained
USB ZR364XX DRIVER USB ZR364XX DRIVER
P: Antoine Jacquet P: Antoine Jacquet
M: royale@zerezo.com M: royale@zerezo.com
L: linux-usb-devel@lists.sourceforge.net L: linux-usb@vger.kernel.org
L: video4linux-list@redhat.com L: video4linux-list@redhat.com
W: http://royale.zerezo.com/zr364xx/ W: http://royale.zerezo.com/zr364xx/
S: Maintained S: Maintained

View File

@ -12,6 +12,7 @@
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/dma-mapping.h> #include <linux/dma-mapping.h>
#include <linux/scatterlist.h>
#include "proto.h" #include "proto.h"
@ -172,18 +173,19 @@ dma_alloc_coherent(struct device *dev, size_t size,
EXPORT_SYMBOL(dma_alloc_coherent); EXPORT_SYMBOL(dma_alloc_coherent);
int 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) enum dma_data_direction direction)
{ {
int i; int i;
struct scatterlist *sg;
for (i = 0; i < nents; i++ ) { for_each_sg(sgl, sg, nents, i) {
void *va; void *va;
BUG_ON(!sg[i].page); BUG_ON(!sg_page(sg));
va = page_address(sg[i].page) + sg[i].offset; va = sg_virt(sg);
sg_dma_address(sg + i) = (dma_addr_t)virt_to_bus(va); sg_dma_address(sg) = (dma_addr_t)virt_to_bus(va);
sg_dma_len(sg + i) = sg[i].length; sg_dma_len(sg) = sg->length;
} }
return nents; return nents;

View File

@ -374,8 +374,8 @@ static int set_initial_registers(int uengine, struct ixp2000_uengine_code *c)
u8 *ucode; u8 *ucode;
int i; int i;
gpr_a = kmalloc(128 * sizeof(u32), GFP_KERNEL); gpr_a = kzalloc(128 * sizeof(u32), GFP_KERNEL);
gpr_b = kmalloc(128 * sizeof(u32), GFP_KERNEL); gpr_b = kzalloc(128 * sizeof(u32), GFP_KERNEL);
ucode = kmalloc(513 * 5, GFP_KERNEL); ucode = kmalloc(513 * 5, GFP_KERNEL);
if (gpr_a == NULL || gpr_b == NULL || ucode == NULL) { if (gpr_a == NULL || gpr_b == NULL || ucode == NULL) {
kfree(ucode); 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) if (c->uengine_parameters & IXP2000_UENGINE_4_CONTEXTS)
per_ctx_regs = 32; per_ctx_regs = 32;
memset(gpr_a, 0, sizeof(gpr_a));
memset(gpr_b, 0, sizeof(gpr_b));
for (i = 0; i < 256; i++) { for (i = 0; i < 256; i++) {
struct ixp2000_reg_value *r = c->initial_reg_values + i; struct ixp2000_reg_value *r = c->initial_reg_values + i;
u32 *bank; u32 *bank;

View File

@ -339,16 +339,6 @@ __pabt_svc:
str r1, [sp] @ save the "real" r0 copied str r1, [sp] @ save the "real" r0 copied
@ from the exception stack @ 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: @ We are now ready to fill in the remaining blanks on the stack:
@ @
@ -372,9 +362,25 @@ __pabt_svc:
zero_fp zero_fp
.endm .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 .align 5
__dabt_usr: __dabt_usr:
usr_entry usr_entry
kuser_cmpxchg_check
@ @
@ Call the processor-specific abort handler: @ Call the processor-specific abort handler:
@ -404,6 +410,7 @@ __dabt_usr:
.align 5 .align 5
__irq_usr: __irq_usr:
usr_entry usr_entry
kuser_cmpxchg_check
#ifdef CONFIG_TRACE_IRQFLAGS #ifdef CONFIG_TRACE_IRQFLAGS
bl trace_hardirqs_off bl trace_hardirqs_off
@ -446,9 +453,9 @@ __und_usr:
@ @
@ r0 - instruction @ r0 - instruction
@ @
1: ldrt r0, [r4]
adr r9, ret_from_exception adr r9, ret_from_exception
adr lr, __und_usr_unknown adr lr, __und_usr_unknown
1: ldrt r0, [r4]
@ @
@ fallthrough to call_fpe @ fallthrough to call_fpe
@ @
@ -669,7 +676,7 @@ __kuser_helper_start:
* *
* Clobbered: * Clobbered:
* *
* the Z flag might be lost * none
* *
* Definition and user space usage example: * Definition and user space usage example:
* *
@ -730,9 +737,6 @@ __kuser_memory_barrier: @ 0xffff0fa0
* *
* - This routine already includes memory barriers as needed. * - 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: * For example, a user space atomic_add implementation could look like this:
* *
* #define atomic_add(ptr, val) \ * #define atomic_add(ptr, val) \
@ -769,46 +773,62 @@ __kuser_cmpxchg: @ 0xffff0fc0
#elif __LINUX_ARM_ARCH__ < 6 #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 #ifdef CONFIG_MMU
teq ip, ip @ set Z flag
ldr ip, [r2] @ load current val /*
add r3, r2, #1 @ prepare store ptr * The only thing that can break atomicity in this cmpxchg
teqeq ip, r0 @ compare with oldval if still allowed * implementation is either an IRQ or a data abort exception
streq r1, [r3, #-1]! @ store newval if still allowed * causing another process/thread to be scheduled in the middle
subs r0, r2, r3 @ if r2 == r3 the str occured * 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 #else
#warning "NPTL on non MMU needs fixing" #warning "NPTL on non MMU needs fixing"
mov r0, #-1 mov r0, #-1
adds r0, r0, #0 adds r0, r0, #0
#endif
usr_ret lr usr_ret lr
#endif
#else #else
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
mcr p15, 0, r0, c7, c10, 5 @ dmb mcr p15, 0, r0, c7, c10, 5 @ dmb
#endif #endif
ldrex r3, [r2] 1: ldrex r3, [r2]
subs r3, r3, r0 subs r3, r3, r0
strexeq r3, r1, [r2] strexeq r3, r1, [r2]
teqeq r3, #1
beq 1b
rsbs r0, r3, #0 rsbs r0, r3, #0
/* beware -- each __kuser slot must be 8 instructions max */
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
mcr p15, 0, r0, c7, c10, 5 @ dmb b __kuser_memory_barrier
#endif #else
usr_ret lr usr_ret lr
#endif
#endif #endif
@ -829,7 +849,7 @@ __kuser_cmpxchg: @ 0xffff0fc0
* *
* Clobbered: * Clobbered:
* *
* the Z flag might be lost * none
* *
* Definition and user space usage example: * Definition and user space usage example:
* *

View File

@ -327,7 +327,7 @@ asmlinkage void __exception do_undefinstr(struct pt_regs *regs)
if ((instr & hook->instr_mask) == hook->instr_val && if ((instr & hook->instr_mask) == hook->instr_val &&
(regs->ARM_cpsr & hook->cpsr_mask) == hook->cpsr_val) { (regs->ARM_cpsr & hook->cpsr_mask) == hook->cpsr_val) {
if (hook->fn(regs, instr) == 0) { if (hook->fn(regs, instr) == 0) {
spin_unlock_irq(&undef_lock); spin_unlock_irqrestore(&undef_lock, flags);
return; return;
} }
} }
@ -509,7 +509,7 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs)
* existence. Don't ever use this from user code. * existence. Don't ever use this from user code.
*/ */
case 0xfff0: case 0xfff0:
{ for (;;) {
extern void do_DataAbort(unsigned long addr, unsigned int fsr, extern void do_DataAbort(unsigned long addr, unsigned int fsr,
struct pt_regs *regs); struct pt_regs *regs);
unsigned long val; unsigned long val;
@ -545,7 +545,6 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs)
up_read(&mm->mmap_sem); up_read(&mm->mmap_sem);
/* simulate a write access fault */ /* simulate a write access fault */
do_DataAbort(addr, 15 + (1 << 11), regs); do_DataAbort(addr, 15 + (1 << 11), regs);
return -1;
} }
#endif #endif

View File

@ -14,6 +14,7 @@
#include <asm/mach/map.h> #include <asm/mach/map.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/i2c-gpio.h>
#include <asm/arch/board.h> #include <asm/arch/board.h>
#include <asm/arch/gpio.h> #include <asm/arch/gpio.h>
@ -435,7 +436,40 @@ void __init at91_add_device_nand(struct at91_nand_data *data) {}
* TWI (i2c) * 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[] = { static struct resource twi_resources[] = {
[0] = { [0] = {
@ -457,7 +491,7 @@ static struct platform_device at91rm9200_twi_device = {
.num_resources = ARRAY_SIZE(twi_resources), .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 */ /* pins used for TWI interface */
at91_set_A_periph(AT91_PIN_PA25, 0); /* TWD */ 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_A_periph(AT91_PIN_PA26, 0); /* TWCK */
at91_set_multi_drive(AT91_PIN_PA26, 1); at91_set_multi_drive(AT91_PIN_PA26, 1);
i2c_register_board_info(0, devices, nr_devices);
platform_device_register(&at91rm9200_twi_device); platform_device_register(&at91rm9200_twi_device);
} }
#else #else
void __init at91_add_device_i2c(void) {} void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) {}
#endif #endif

View File

@ -13,6 +13,7 @@
#include <asm/mach/map.h> #include <asm/mach/map.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/i2c-gpio.h>
#include <asm/arch/board.h> #include <asm/arch/board.h>
#include <asm/arch/gpio.h> #include <asm/arch/gpio.h>
@ -352,7 +353,41 @@ void __init at91_add_device_nand(struct at91_nand_data *data) {}
* TWI (i2c) * 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[] = { static struct resource twi_resources[] = {
[0] = { [0] = {
@ -374,7 +409,7 @@ static struct platform_device at91sam9260_twi_device = {
.num_resources = ARRAY_SIZE(twi_resources), .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 */ /* pins used for TWI interface */
at91_set_A_periph(AT91_PIN_PA23, 0); /* TWD */ 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_A_periph(AT91_PIN_PA24, 0); /* TWCK */
at91_set_multi_drive(AT91_PIN_PA24, 1); at91_set_multi_drive(AT91_PIN_PA24, 1);
i2c_register_board_info(0, devices, nr_devices);
platform_device_register(&at91sam9260_twi_device); platform_device_register(&at91sam9260_twi_device);
} }
#else #else
void __init at91_add_device_i2c(void) {} void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) {}
#endif #endif

View File

@ -14,7 +14,9 @@
#include <asm/mach/map.h> #include <asm/mach/map.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/i2c-gpio.h>
#include <linux/fb.h>
#include <video/atmel_lcdc.h> #include <video/atmel_lcdc.h>
#include <asm/arch/board.h> #include <asm/arch/board.h>
@ -275,7 +277,40 @@ void __init at91_add_device_nand(struct at91_nand_data *data) {}
* TWI (i2c) * 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[] = { static struct resource twi_resources[] = {
[0] = { [0] = {
@ -297,7 +332,7 @@ static struct platform_device at91sam9261_twi_device = {
.num_resources = ARRAY_SIZE(twi_resources), .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 */ /* pins used for TWI interface */
at91_set_A_periph(AT91_PIN_PA7, 0); /* TWD */ 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_A_periph(AT91_PIN_PA8, 0); /* TWCK */
at91_set_multi_drive(AT91_PIN_PA8, 1); at91_set_multi_drive(AT91_PIN_PA8, 1);
i2c_register_board_info(0, devices, nr_devices);
platform_device_register(&at91sam9261_twi_device); platform_device_register(&at91sam9261_twi_device);
} }
#else #else
void __init at91_add_device_i2c(void) {} void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) {}
#endif #endif

View File

@ -13,7 +13,9 @@
#include <asm/mach/map.h> #include <asm/mach/map.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/i2c-gpio.h>
#include <linux/fb.h>
#include <video/atmel_lcdc.h> #include <video/atmel_lcdc.h>
#include <asm/arch/board.h> #include <asm/arch/board.h>
@ -421,7 +423,40 @@ void __init at91_add_device_nand(struct at91_nand_data *data) {}
* TWI (i2c) * 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[] = { static struct resource twi_resources[] = {
[0] = { [0] = {
@ -443,7 +478,7 @@ static struct platform_device at91sam9263_twi_device = {
.num_resources = ARRAY_SIZE(twi_resources), .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 */ /* pins used for TWI interface */
at91_set_A_periph(AT91_PIN_PB4, 0); /* TWD */ 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_A_periph(AT91_PIN_PB5, 0); /* TWCK */
at91_set_multi_drive(AT91_PIN_PB5, 1); at91_set_multi_drive(AT91_PIN_PB5, 1);
i2c_register_board_info(0, devices, nr_devices);
platform_device_register(&at91sam9263_twi_device); platform_device_register(&at91sam9263_twi_device);
} }
#else #else
void __init at91_add_device_i2c(void) {} void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) {}
#endif #endif

View File

@ -10,8 +10,9 @@
#include <asm/mach/map.h> #include <asm/mach/map.h>
#include <linux/platform_device.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 <video/atmel_lcdc.h>
#include <asm/arch/board.h> #include <asm/arch/board.h>
@ -169,7 +170,40 @@ void __init at91_add_device_nand(struct at91_nand_data *data) {}
* TWI (i2c) * 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[] = { static struct resource twi_resources[] = {
[0] = { [0] = {
@ -191,7 +225,7 @@ static struct platform_device at91sam9rl_twi_device = {
.num_resources = ARRAY_SIZE(twi_resources), .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 */ /* pins used for TWI interface */
at91_set_A_periph(AT91_PIN_PA23, 0); /* TWD */ 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_A_periph(AT91_PIN_PA24, 0); /* TWCK */
at91_set_multi_drive(AT91_PIN_PA24, 1); at91_set_multi_drive(AT91_PIN_PA24, 1);
i2c_register_board_info(0, devices, nr_devices);
platform_device_register(&at91sam9rl_twi_device); platform_device_register(&at91sam9rl_twi_device);
} }
#else #else
void __init at91_add_device_i2c(void) {} void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) {}
#endif #endif

View File

@ -128,7 +128,7 @@ static void __init carmeva_board_init(void)
/* USB Device */ /* USB Device */
at91_add_device_udc(&carmeva_udc_data); at91_add_device_udc(&carmeva_udc_data);
/* I2C */ /* I2C */
at91_add_device_i2c(); at91_add_device_i2c(NULL, 0);
/* SPI */ /* SPI */
at91_add_device_spi(carmeva_spi_devices, ARRAY_SIZE(carmeva_spi_devices)); at91_add_device_spi(carmeva_spi_devices, ARRAY_SIZE(carmeva_spi_devices));
/* Compact Flash */ /* Compact Flash */

View File

@ -23,7 +23,6 @@
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/i2c.h>
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
#include <linux/mtd/physmap.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[] = { static struct i2c_board_info __initdata csb337_i2c_devices[] = {
{ I2C_BOARD_INFO("rtc-ds1307", 0x68), {
I2C_BOARD_INFO("rtc-ds1307", 0x68),
.type = "ds1307", .type = "ds1307",
}, },
}; };
static struct at91_cf_data __initdata csb337_cf_data = { static struct at91_cf_data __initdata csb337_cf_data = {
/* /*
* connector P4 on the CSB 337 mates to * connector P4 on the CSB 337 mates to
@ -168,9 +167,7 @@ static void __init csb337_board_init(void)
/* USB Device */ /* USB Device */
at91_add_device_udc(&csb337_udc_data); at91_add_device_udc(&csb337_udc_data);
/* I2C */ /* I2C */
at91_add_device_i2c(); at91_add_device_i2c(csb337_i2c_devices, ARRAY_SIZE(csb337_i2c_devices));
i2c_register_board_info(0, csb337_i2c_devices,
ARRAY_SIZE(csb337_i2c_devices));
/* Compact Flash */ /* Compact Flash */
at91_set_gpio_input(AT91_PIN_PB22, 1); /* IOIS16 */ at91_set_gpio_input(AT91_PIN_PB22, 1); /* IOIS16 */
at91_add_device_cf(&csb337_cf_data); at91_add_device_cf(&csb337_cf_data);

View File

@ -129,7 +129,7 @@ static void __init csb637_board_init(void)
/* USB Device */ /* USB Device */
at91_add_device_udc(&csb637_udc_data); at91_add_device_udc(&csb637_udc_data);
/* I2C */ /* I2C */
at91_add_device_i2c(); at91_add_device_i2c(NULL, 0);
/* SPI */ /* SPI */
at91_add_device_spi(NULL, 0); at91_add_device_spi(NULL, 0);
/* NOR flash */ /* NOR flash */

View File

@ -124,6 +124,19 @@ static struct spi_board_info dk_spi_devices[] = {
#endif #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[] = { static struct mtd_partition __initdata dk_nand_partition[] = {
{ {
.name = "NAND Partition 1", .name = "NAND Partition 1",
@ -185,7 +198,7 @@ static void __init dk_board_init(void)
/* Compact Flash */ /* Compact Flash */
at91_add_device_cf(&dk_cf_data); at91_add_device_cf(&dk_cf_data);
/* I2C */ /* I2C */
at91_add_device_i2c(); at91_add_device_i2c(dk_i2c_devices, ARRAY_SIZE(dk_i2c_devices));
/* SPI */ /* SPI */
at91_add_device_spi(dk_spi_devices, ARRAY_SIZE(dk_spi_devices)); at91_add_device_spi(dk_spi_devices, ARRAY_SIZE(dk_spi_devices));
#ifdef CONFIG_MTD_AT91_DATAFLASH_CARD #ifdef CONFIG_MTD_AT91_DATAFLASH_CARD

View File

@ -91,6 +91,14 @@ static struct at91_mmc_data __initdata eb9200_mmc_data = {
.wire4 = 1, .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) static void __init eb9200_board_init(void)
{ {
/* Serial */ /* Serial */
@ -102,7 +110,7 @@ static void __init eb9200_board_init(void)
/* USB Device */ /* USB Device */
at91_add_device_udc(&eb9200_udc_data); at91_add_device_udc(&eb9200_udc_data);
/* I2C */ /* I2C */
at91_add_device_i2c(); at91_add_device_i2c(eb9200_i2c_devices, ARRAY_SIZE(eb9200_i2c_devices));
/* Compact Flash */ /* Compact Flash */
at91_add_device_cf(&eb9200_cf_data); at91_add_device_cf(&eb9200_cf_data);
/* SPI */ /* SPI */

View File

@ -145,7 +145,7 @@ static void __init ek_board_init(void)
at91_add_device_udc(&ek_udc_data); at91_add_device_udc(&ek_udc_data);
at91_set_multi_drive(ek_udc_data.pullup_pin, 1); /* pullup_pin is connected to reset */ at91_set_multi_drive(ek_udc_data.pullup_pin, 1); /* pullup_pin is connected to reset */
/* I2C */ /* I2C */
at91_add_device_i2c(); at91_add_device_i2c(ek_i2c_devices, ARRAY_SIZE(ek_i2c_devices));
/* SPI */ /* SPI */
at91_add_device_spi(ek_spi_devices, ARRAY_SIZE(ek_spi_devices)); at91_add_device_spi(ek_spi_devices, ARRAY_SIZE(ek_spi_devices));
#ifdef CONFIG_MTD_AT91_DATAFLASH_CARD #ifdef CONFIG_MTD_AT91_DATAFLASH_CARD

View File

@ -92,7 +92,7 @@ static void __init kafa_board_init(void)
/* USB Device */ /* USB Device */
at91_add_device_udc(&kafa_udc_data); at91_add_device_udc(&kafa_udc_data);
/* I2C */ /* I2C */
at91_add_device_i2c(); at91_add_device_i2c(NULL, 0);
/* SPI */ /* SPI */
at91_add_device_spi(NULL, 0); at91_add_device_spi(NULL, 0);
} }

View File

@ -124,7 +124,7 @@ static void __init kb9202_board_init(void)
/* MMC */ /* MMC */
at91_add_device_mmc(0, &kb9202_mmc_data); at91_add_device_mmc(0, &kb9202_mmc_data);
/* I2C */ /* I2C */
at91_add_device_i2c(); at91_add_device_i2c(NULL, 0);
/* SPI */ /* SPI */
at91_add_device_spi(NULL, 0); at91_add_device_spi(NULL, 0);
/* NAND */ /* NAND */

View File

@ -139,7 +139,7 @@ static void __init picotux200_board_init(void)
// at91_add_device_udc(&picotux200_udc_data); // at91_add_device_udc(&picotux200_udc_data);
// at91_set_multi_drive(picotux200_udc_data.pullup_pin, 1); /* pullup_pin is connected to reset */ // at91_set_multi_drive(picotux200_udc_data.pullup_pin, 1); /* pullup_pin is connected to reset */
/* I2C */ /* I2C */
at91_add_device_i2c(); at91_add_device_i2c(NULL, 0);
/* SPI */ /* SPI */
// at91_add_device_spi(picotux200_spi_devices, ARRAY_SIZE(picotux200_spi_devices)); // at91_add_device_spi(picotux200_spi_devices, ARRAY_SIZE(picotux200_spi_devices));
#ifdef CONFIG_MTD_AT91_DATAFLASH_CARD #ifdef CONFIG_MTD_AT91_DATAFLASH_CARD

View File

@ -189,7 +189,7 @@ static void __init ek_board_init(void)
/* MMC */ /* MMC */
at91_add_device_mmc(0, &ek_mmc_data); at91_add_device_mmc(0, &ek_mmc_data);
/* I2C */ /* I2C */
at91_add_device_i2c(); at91_add_device_i2c(NULL, 0);
} }
MACHINE_START(AT91SAM9260EK, "Atmel AT91SAM9260-EK") MACHINE_START(AT91SAM9260EK, "Atmel AT91SAM9260-EK")

View File

@ -382,14 +382,14 @@ static struct platform_device ek_button_device = {
static void __init ek_add_device_buttons(void) static void __init ek_add_device_buttons(void)
{ {
at91_set_gpio_input(AT91_PIN_PB27, 0); /* btn0 */ at91_set_gpio_input(AT91_PIN_PA27, 0); /* btn0 */
at91_set_deglitch(AT91_PIN_PB27, 1); at91_set_deglitch(AT91_PIN_PA27, 1);
at91_set_gpio_input(AT91_PIN_PB26, 0); /* btn1 */ at91_set_gpio_input(AT91_PIN_PA26, 0); /* btn1 */
at91_set_deglitch(AT91_PIN_PB26, 1); at91_set_deglitch(AT91_PIN_PA26, 1);
at91_set_gpio_input(AT91_PIN_PB25, 0); /* btn2 */ at91_set_gpio_input(AT91_PIN_PA25, 0); /* btn2 */
at91_set_deglitch(AT91_PIN_PB25, 1); at91_set_deglitch(AT91_PIN_PA25, 1);
at91_set_gpio_input(AT91_PIN_PB24, 0); /* btn3 */ at91_set_gpio_input(AT91_PIN_PA24, 0); /* btn3 */
at91_set_deglitch(AT91_PIN_PB24, 1); at91_set_deglitch(AT91_PIN_PA24, 1);
platform_device_register(&ek_button_device); platform_device_register(&ek_button_device);
} }
@ -406,7 +406,7 @@ static void __init ek_board_init(void)
/* USB Device */ /* USB Device */
at91_add_device_udc(&ek_udc_data); at91_add_device_udc(&ek_udc_data);
/* I2C */ /* I2C */
at91_add_device_i2c(); at91_add_device_i2c(NULL, 0);
/* NAND */ /* NAND */
at91_add_device_nand(&ek_nand_data); at91_add_device_nand(&ek_nand_data);
/* DM9000 ethernet */ /* DM9000 ethernet */

View File

@ -291,7 +291,7 @@ static void __init ek_board_init(void)
/* NAND */ /* NAND */
at91_add_device_nand(&ek_nand_data); at91_add_device_nand(&ek_nand_data);
/* I2C */ /* I2C */
at91_add_device_i2c(); at91_add_device_i2c(NULL, 0);
/* LCD Controller */ /* LCD Controller */
at91_add_device_lcdc(&ek_lcdc_data); at91_add_device_lcdc(&ek_lcdc_data);
/* AC97 */ /* AC97 */

View File

@ -181,7 +181,7 @@ static void __init ek_board_init(void)
/* Serial */ /* Serial */
at91_add_device_serial(); at91_add_device_serial();
/* I2C */ /* I2C */
at91_add_device_i2c(); at91_add_device_i2c(NULL, 0);
/* NAND */ /* NAND */
at91_add_device_nand(&ek_nand_data); at91_add_device_nand(&ek_nand_data);
/* SPI */ /* SPI */

View File

@ -351,7 +351,7 @@ static void init_programmable_clock(struct clk *clk)
pckr = at91_sys_read(AT91_PMC_PCKR(clk->id)); pckr = at91_sys_read(AT91_PMC_PCKR(clk->id));
parent = at91_css_to_clk(pckr & AT91_PMC_CSS); parent = at91_css_to_clk(pckr & AT91_PMC_CSS);
clk->parent = parent; 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 */ #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); mckr = at91_sys_read(AT91_PMC_MCKR);
mck.parent = at91_css_to_clk(mckr & AT91_PMC_CSS); mck.parent = at91_css_to_clk(mckr & AT91_PMC_CSS);
freq = mck.parent->rate_hz; freq = mck.parent->rate_hz;
freq /= (1 << ((mckr >> 2) & 3)); /* prescale */ freq /= (1 << ((mckr & AT91_PMC_PRES) >> 2)); /* prescale */
mck.rate_hz = freq / (1 + ((mckr >> 8) & 3)); /* mdiv */ 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 */ /* Register the PMC's standard clocks */
for (i = 0; i < ARRAY_SIZE(standard_pmc_clocks); i++) for (i = 0; i < ARRAY_SIZE(standard_pmc_clocks); i++)

View File

@ -43,12 +43,46 @@
* *
*/ */
#define INTENNUM_OFF 0x8 #define INTCNTL_OFF 0x00
#define INTDISNUM_OFF 0xC #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 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_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 #if 0
#define DEBUG_IRQ(fmt...) printk(fmt) #define DEBUG_IRQ(fmt...) printk(fmt)
@ -222,7 +256,12 @@ imx_init_irq(void)
DEBUG_IRQ("Initializing imx interrupts\n"); 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(0) = 0;
IMR(1) = 0; IMR(1) = 0;
IMR(2) = 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_PORTC, imx_gpioc_demux_handler);
set_irq_chained_handler(GPIO_INT_PORTD, imx_gpiod_demux_handler); set_irq_chained_handler(GPIO_INT_PORTD, imx_gpiod_demux_handler);
/* Disable all interrupts initially. */ /* Release masking of interrupts according to priority */
/* In IMX this is done in the bootloader. */ __raw_writel(-1, IMX_AITC_NIMASK);
} }

View File

@ -146,7 +146,7 @@ static struct clk pxa27x_clks[] = {
INIT_CKEN("MMCCLK", MMC, 19500000, 0, &pxa_device_mci.dev), INIT_CKEN("MMCCLK", MMC, 19500000, 0, &pxa_device_mci.dev),
INIT_CKEN("FICPCLK", FICP, 48000000, 0, &pxa_device_ficp.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("I2CCLK", PWRI2C, 13000000, 0, &pxa27x_device_i2c_power.dev),
INIT_CKEN("KBDCLK", KEYPAD, 32768, 0, NULL), INIT_CKEN("KBDCLK", KEYPAD, 32768, 0, NULL),

View File

@ -23,8 +23,11 @@
static struct pxa3xx_mfp_addr_map pxa320_mfp_addr_map[] __initdata = { static struct pxa3xx_mfp_addr_map pxa320_mfp_addr_map[] __initdata = {
MFP_ADDR_X(GPIO0, GPIO4, 0x0124), MFP_ADDR_X(GPIO0, GPIO4, 0x0124),
MFP_ADDR_X(GPIO5, GPIO26, 0x028C), MFP_ADDR_X(GPIO5, GPIO9, 0x028C),
MFP_ADDR_X(GPIO27, GPIO62, 0x0400), 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(GPIO63, GPIO73, 0x04B4),
MFP_ADDR_X(GPIO74, GPIO98, 0x04F0), MFP_ADDR_X(GPIO74, GPIO98, 0x04F0),
MFP_ADDR_X(GPIO99, GPIO127, 0x0600), MFP_ADDR_X(GPIO99, GPIO127, 0x0600),

View File

@ -309,6 +309,7 @@ void ssp_exit(struct ssp_dev *dev)
if (dev->port > PXA_SSP_PORTS || dev->port == 0) { if (dev->port > PXA_SSP_PORTS || dev->port == 0) {
printk(KERN_WARNING "SSP: tried to close invalid port\n"); printk(KERN_WARNING "SSP: tried to close invalid port\n");
mutex_unlock(&mutex);
return; return;
} }

View File

@ -3,7 +3,7 @@
# see Documentation/kbuild/kconfig-language.txt. # see Documentation/kbuild/kconfig-language.txt.
# #
mainmenu "uClinux/Blackfin (w/o MMU) Kernel Configuration" mainmenu "Blackfin Kernel Configuration"
config MMU config MMU
bool bool
@ -29,10 +29,6 @@ config ZONE_DMA
bool bool
default y default y
config BFIN
bool
default y
config SEMAPHORE_SLEEPERS config SEMAPHORE_SLEEPERS
bool bool
default y default y
@ -69,11 +65,6 @@ config GENERIC_CALIBRATE_DELAY
bool bool
default y default y
config IRQCHIP_DEMUX_GPIO
bool
depends on (BF52x || BF53x || BF561 || BF54x)
default y
source "init/Kconfig" source "init/Kconfig"
source "kernel/Kconfig.preempt" source "kernel/Kconfig.preempt"
@ -140,6 +131,11 @@ config BF544
help help
BF544 Processor Support. BF544 Processor Support.
config BF547
bool "BF547"
help
BF547 Processor Support.
config BF548 config BF548
bool "BF548" bool "BF548"
help help
@ -166,11 +162,11 @@ choice
config BF_REV_0_0 config BF_REV_0_0
bool "0.0" bool "0.0"
depends on (BF549 || BF527) depends on (BF52x || BF54x)
config BF_REV_0_1 config BF_REV_0_1
bool "0.2" bool "0.1"
depends on (BF549 || BF527) depends on (BF52x || BF54x)
config BF_REV_0_2 config BF_REV_0_2
bool "0.2" bool "0.2"
@ -208,7 +204,7 @@ config BF53x
config BF54x config BF54x
bool bool
depends on (BF542 || BF544 || BF548 || BF549) depends on (BF542 || BF544 || BF547 || BF548 || BF549)
default y default y
config BFIN_DUAL_CORE config BFIN_DUAL_CORE
@ -221,95 +217,6 @@ config BFIN_SINGLE_CORE
depends on !BFIN_DUAL_CORE depends on !BFIN_DUAL_CORE
default y 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 config MEM_GENERIC_BOARD
bool bool
depends on GENERIC_BOARD depends on GENERIC_BOARD
@ -468,11 +375,11 @@ config MAX_VCO_HZ
default 500000000 if BF534 default 500000000 if BF534
default 400000000 if BF536 default 400000000 if BF536
default 600000000 if BF537 default 600000000 if BF537
default 533000000 if BF538 default 533333333 if BF538
default 533000000 if BF539 default 533333333 if BF539
default 600000000 if BF542 default 600000000 if BF542
default 533000000 if BF544 default 533333333 if BF544
default 533000000 if BF549 default 533333333 if BF549
default 600000000 if BF561 default 600000000 if BF561
config MIN_VCO_HZ config MIN_VCO_HZ
@ -481,7 +388,7 @@ config MIN_VCO_HZ
config MAX_SCLK_HZ config MAX_SCLK_HZ
int int
default 133000000 default 133333333
config MIN_SCLK_HZ config MIN_SCLK_HZ
int int
@ -959,6 +866,20 @@ config BANK_3
default 0x99B3 default 0x99B3
endmenu 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 endmenu
############################################################################# #############################################################################
@ -1075,174 +996,7 @@ source "fs/Kconfig"
source "kernel/Kconfig.instrumentation" source "kernel/Kconfig.instrumentation"
menu "Kernel hacking" source "arch/blackfin/Kconfig.debug"
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 sequencers 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 "security/Kconfig" source "security/Kconfig"

178
arch/blackfin/Kconfig.debug Normal file
View 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 sequencers 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

View File

@ -31,6 +31,7 @@ machine-$(CONFIG_BF536) := bf537
machine-$(CONFIG_BF537) := bf537 machine-$(CONFIG_BF537) := bf537
machine-$(CONFIG_BF542) := bf548 machine-$(CONFIG_BF542) := bf548
machine-$(CONFIG_BF544) := bf548 machine-$(CONFIG_BF544) := bf548
machine-$(CONFIG_BF547) := bf548
machine-$(CONFIG_BF548) := bf548 machine-$(CONFIG_BF548) := bf548
machine-$(CONFIG_BF549) := bf548 machine-$(CONFIG_BF549) := bf548
machine-$(CONFIG_BF561) := bf561 machine-$(CONFIG_BF561) := bf561
@ -48,6 +49,7 @@ cpu-$(CONFIG_BF536) := bf536
cpu-$(CONFIG_BF537) := bf537 cpu-$(CONFIG_BF537) := bf537
cpu-$(CONFIG_BF542) := bf542 cpu-$(CONFIG_BF542) := bf542
cpu-$(CONFIG_BF544) := bf544 cpu-$(CONFIG_BF544) := bf544
cpu-$(CONFIG_BF547) := bf547
cpu-$(CONFIG_BF548) := bf548 cpu-$(CONFIG_BF548) := bf548
cpu-$(CONFIG_BF549) := bf549 cpu-$(CONFIG_BF549) := bf549
cpu-$(CONFIG_BF561) := bf561 cpu-$(CONFIG_BF561) := bf561

View File

@ -1,6 +1,6 @@
# #
# Automatically generated make config: don't edit # 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_MMU is not set
# CONFIG_FPU 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_RWSEM_XCHGADD_ALGORITHM is not set
CONFIG_BLACKFIN=y CONFIG_BLACKFIN=y
CONFIG_ZONE_DMA=y CONFIG_ZONE_DMA=y
CONFIG_BFIN=y
CONFIG_SEMAPHORE_SLEEPERS=y CONFIG_SEMAPHORE_SLEEPERS=y
CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_FIND_NEXT_BIT=y
CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_HWEIGHT=y
@ -18,7 +17,6 @@ CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_GPIO=y CONFIG_GENERIC_GPIO=y
CONFIG_FORCE_MAX_ZONEORDER=14 CONFIG_FORCE_MAX_ZONEORDER=14
CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_IRQCHIP_DEMUX_GPIO=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
# #
@ -127,6 +125,7 @@ CONFIG_BF527=y
# CONFIG_BF537 is not set # CONFIG_BF537 is not set
# CONFIG_BF542 is not set # CONFIG_BF542 is not set
# CONFIG_BF544 is not set # CONFIG_BF544 is not set
# CONFIG_BF547 is not set
# CONFIG_BF548 is not set # CONFIG_BF548 is not set
# CONFIG_BF549 is not set # CONFIG_BF549 is not set
# CONFIG_BF561 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_BF_REV_NONE is not set
CONFIG_BF52x=y CONFIG_BF52x=y
CONFIG_BFIN_SINGLE_CORE=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_MEM_MT48LC32M16A2TG_75=y
CONFIG_BFIN527_EZKIT=y
# #
# BF527 Specific Configuration # BF527 Specific Configuration
@ -244,7 +232,7 @@ CONFIG_CLKIN_HZ=25000000
# CONFIG_BFIN_KERNEL_CLOCK is not set # CONFIG_BFIN_KERNEL_CLOCK is not set
CONFIG_MAX_VCO_HZ=600000000 CONFIG_MAX_VCO_HZ=600000000
CONFIG_MIN_VCO_HZ=50000000 CONFIG_MIN_VCO_HZ=50000000
CONFIG_MAX_SCLK_HZ=133333333 CONFIG_MAX_SCLK_HZ=133000000
CONFIG_MIN_SCLK_HZ=27000000 CONFIG_MIN_SCLK_HZ=27000000
# #
@ -301,6 +289,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_RESOURCES_64BIT is not set # CONFIG_RESOURCES_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1 CONFIG_ZONE_DMA_FLAG=1
CONFIG_LARGE_ALLOCS=y CONFIG_LARGE_ALLOCS=y
# CONFIG_BFIN_GPTIMERS is not set
CONFIG_BFIN_DMA_5XX=y CONFIG_BFIN_DMA_5XX=y
# CONFIG_DMA_UNCACHED_2M is not set # CONFIG_DMA_UNCACHED_2M is not set
CONFIG_DMA_UNCACHED_1M=y 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_AMCKEN=y
CONFIG_C_CDPRIO=y CONFIG_C_CDPRIO=y
@ -548,6 +537,7 @@ CONFIG_BFIN_NAND_CLE=2
CONFIG_BFIN_NAND_ALE=1 CONFIG_BFIN_NAND_ALE=1
CONFIG_BFIN_NAND_READY=3 CONFIG_BFIN_NAND_READY=3
CONFIG_MTD_NAND_IDS=m CONFIG_MTD_NAND_IDS=m
# CONFIG_MTD_NAND_BF5XX is not set
# CONFIG_MTD_NAND_DISKONCHIP is not set # CONFIG_MTD_NAND_DISKONCHIP is not set
# CONFIG_MTD_NAND_NANDSIM is not set # CONFIG_MTD_NAND_NANDSIM is not set
# CONFIG_MTD_NAND_PLATFORM 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_DM9000 is not set
CONFIG_NETDEV_1000=y CONFIG_NETDEV_1000=y
CONFIG_NETDEV_10000=y CONFIG_NETDEV_10000=y
# CONFIG_AX88180 is not set
# #
# Wireless LAN # Wireless LAN
@ -708,7 +699,7 @@ CONFIG_INPUT_MISC=y
# CONFIG_SPI_ADC_BF533 is not set # CONFIG_SPI_ADC_BF533 is not set
# CONFIG_BF5xx_PFLAGS is not set # CONFIG_BF5xx_PFLAGS is not set
# CONFIG_BF5xx_PPIFCD 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_BF5xx_PPI is not set
# CONFIG_BFIN_SPORT is not set # CONFIG_BFIN_SPORT is not set
# CONFIG_BFIN_TIMER_LATENCY is not set # CONFIG_BFIN_TIMER_LATENCY is not set

View File

@ -1,6 +1,6 @@
# #
# Automatically generated make config: don't edit # 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_MMU is not set
# CONFIG_FPU 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_RWSEM_XCHGADD_ALGORITHM is not set
CONFIG_BLACKFIN=y CONFIG_BLACKFIN=y
CONFIG_ZONE_DMA=y CONFIG_ZONE_DMA=y
CONFIG_BFIN=y
CONFIG_SEMAPHORE_SLEEPERS=y CONFIG_SEMAPHORE_SLEEPERS=y
CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_FIND_NEXT_BIT=y
CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_HWEIGHT=y
@ -18,7 +17,6 @@ CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_GPIO=y CONFIG_GENERIC_GPIO=y
CONFIG_FORCE_MAX_ZONEORDER=14 CONFIG_FORCE_MAX_ZONEORDER=14
CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_IRQCHIP_DEMUX_GPIO=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
# #
@ -64,7 +62,6 @@ CONFIG_FUTEX=y
CONFIG_ANON_INODES=y CONFIG_ANON_INODES=y
CONFIG_EPOLL=y CONFIG_EPOLL=y
CONFIG_SIGNALFD=y CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y CONFIG_EVENTFD=y
CONFIG_VM_EVENT_COUNTERS=y CONFIG_VM_EVENT_COUNTERS=y
CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3
@ -117,6 +114,9 @@ CONFIG_PREEMPT_VOLUNTARY=y
# #
# Processor and Board Settings # 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_BF531 is not set
# CONFIG_BF532 is not set # CONFIG_BF532 is not set
CONFIG_BF533=y CONFIG_BF533=y
@ -125,10 +125,12 @@ CONFIG_BF533=y
# CONFIG_BF537 is not set # CONFIG_BF537 is not set
# CONFIG_BF542 is not set # CONFIG_BF542 is not set
# CONFIG_BF544 is not set # CONFIG_BF544 is not set
# CONFIG_BF547 is not set
# CONFIG_BF548 is not set # CONFIG_BF548 is not set
# CONFIG_BF549 is not set # CONFIG_BF549 is not set
# CONFIG_BF561 is not set # CONFIG_BF561 is not set
# CONFIG_BF_REV_0_0 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_2 is not set
CONFIG_BF_REV_0_3=y CONFIG_BF_REV_0_3=y
# CONFIG_BF_REV_0_4 is not set # 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_BF_REV_NONE is not set
CONFIG_BF53x=y CONFIG_BF53x=y
CONFIG_BFIN_SINGLE_CORE=y CONFIG_BFIN_SINGLE_CORE=y
CONFIG_MEM_MT48LC16M16A2TG_75=y
CONFIG_BFIN533_EZKIT=y CONFIG_BFIN533_EZKIT=y
# CONFIG_BFIN533_STAMP is not set # CONFIG_BFIN533_STAMP is not set
# CONFIG_BFIN537_STAMP is not set
# CONFIG_BFIN533_BLUETECHNIX_CM is not set # CONFIG_BFIN533_BLUETECHNIX_CM is not set
# CONFIG_BFIN537_BLUETECHNIX_CM is not set # CONFIG_H8606_HVSISTEMAS is not set
# CONFIG_BFIN548_EZKIT is not set # CONFIG_GENERIC_BF533_BOARD 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
# #
# BF533/2/1 Specific Configuration # BF533/2/1 Specific Configuration
@ -198,7 +194,7 @@ CONFIG_CLKIN_HZ=27000000
# CONFIG_BFIN_KERNEL_CLOCK is not set # CONFIG_BFIN_KERNEL_CLOCK is not set
CONFIG_MAX_VCO_HZ=750000000 CONFIG_MAX_VCO_HZ=750000000
CONFIG_MIN_VCO_HZ=50000000 CONFIG_MIN_VCO_HZ=50000000
CONFIG_MAX_SCLK_HZ=133333333 CONFIG_MAX_SCLK_HZ=133000000
CONFIG_MIN_SCLK_HZ=27000000 CONFIG_MIN_SCLK_HZ=27000000
# #
@ -255,6 +251,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_RESOURCES_64BIT is not set # CONFIG_RESOURCES_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1 CONFIG_ZONE_DMA_FLAG=1
CONFIG_LARGE_ALLOCS=y CONFIG_LARGE_ALLOCS=y
# CONFIG_BFIN_GPTIMERS is not set
CONFIG_BFIN_DMA_5XX=y CONFIG_BFIN_DMA_5XX=y
# CONFIG_DMA_UNCACHED_2M is not set # CONFIG_DMA_UNCACHED_2M is not set
CONFIG_DMA_UNCACHED_1M=y 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_AMCKEN=y
CONFIG_C_CDPRIO=y CONFIG_C_CDPRIO=y
@ -526,14 +523,6 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
CONFIG_MTD_BF5xx=m CONFIG_MTD_BF5xx=m
CONFIG_BFIN_FLASH_SIZE=0x400000 CONFIG_BFIN_FLASH_SIZE=0x400000
CONFIG_EBIU_FLASH_BASE=0x20000000 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_UCLINUX is not set
# CONFIG_MTD_PLATRAM is not set # CONFIG_MTD_PLATRAM is not set
@ -622,6 +611,7 @@ CONFIG_SMC91X=y
# CONFIG_DM9000 is not set # CONFIG_DM9000 is not set
CONFIG_NETDEV_1000=y CONFIG_NETDEV_1000=y
CONFIG_NETDEV_10000=y CONFIG_NETDEV_10000=y
# CONFIG_AX88180 is not set
# #
# Wireless LAN # Wireless LAN
@ -683,9 +673,9 @@ CONFIG_INPUT_EVDEV=m
# #
# CONFIG_AD9960 is not set # CONFIG_AD9960 is not set
# CONFIG_SPI_ADC_BF533 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_PPIFCD is not set
# CONFIG_BF5xx_TIMERS is not set # CONFIG_BFIN_SIMPLE_TIMER is not set
# CONFIG_BF5xx_PPI is not set # CONFIG_BF5xx_PPI is not set
CONFIG_BFIN_SPORT=y CONFIG_BFIN_SPORT=y
# CONFIG_BFIN_TIMER_LATENCY is not set # 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_PIO is not set
CONFIG_SERIAL_BFIN_UART0=y CONFIG_SERIAL_BFIN_UART0=y
# CONFIG_BFIN_UART0_CTSRTS is not set # CONFIG_BFIN_UART0_CTSRTS is not set
# CONFIG_SERIAL_BFIN_UART1 is not set
CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_BFIN_SPORT is not set # CONFIG_SERIAL_BFIN_SPORT is not set

View File

@ -1,6 +1,6 @@
# #
# Automatically generated make config: don't edit # 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_MMU is not set
# CONFIG_FPU 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_RWSEM_XCHGADD_ALGORITHM is not set
CONFIG_BLACKFIN=y CONFIG_BLACKFIN=y
CONFIG_ZONE_DMA=y CONFIG_ZONE_DMA=y
CONFIG_BFIN=y
CONFIG_SEMAPHORE_SLEEPERS=y CONFIG_SEMAPHORE_SLEEPERS=y
CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_FIND_NEXT_BIT=y
CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_HWEIGHT=y
@ -18,7 +17,6 @@ CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_GPIO=y CONFIG_GENERIC_GPIO=y
CONFIG_FORCE_MAX_ZONEORDER=14 CONFIG_FORCE_MAX_ZONEORDER=14
CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_IRQCHIP_DEMUX_GPIO=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
# #
@ -64,7 +62,6 @@ CONFIG_FUTEX=y
CONFIG_ANON_INODES=y CONFIG_ANON_INODES=y
CONFIG_EPOLL=y CONFIG_EPOLL=y
CONFIG_SIGNALFD=y CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y CONFIG_EVENTFD=y
CONFIG_VM_EVENT_COUNTERS=y CONFIG_VM_EVENT_COUNTERS=y
CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3
@ -117,6 +114,9 @@ CONFIG_PREEMPT_VOLUNTARY=y
# #
# Processor and Board Settings # 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_BF531 is not set
# CONFIG_BF532 is not set # CONFIG_BF532 is not set
CONFIG_BF533=y CONFIG_BF533=y
@ -125,10 +125,12 @@ CONFIG_BF533=y
# CONFIG_BF537 is not set # CONFIG_BF537 is not set
# CONFIG_BF542 is not set # CONFIG_BF542 is not set
# CONFIG_BF544 is not set # CONFIG_BF544 is not set
# CONFIG_BF547 is not set
# CONFIG_BF548 is not set # CONFIG_BF548 is not set
# CONFIG_BF549 is not set # CONFIG_BF549 is not set
# CONFIG_BF561 is not set # CONFIG_BF561 is not set
# CONFIG_BF_REV_0_0 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_2 is not set
CONFIG_BF_REV_0_3=y CONFIG_BF_REV_0_3=y
# CONFIG_BF_REV_0_4 is not set # 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_BF_REV_NONE is not set
CONFIG_BF53x=y CONFIG_BF53x=y
CONFIG_BFIN_SINGLE_CORE=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_MEM_MT48LC64M4A2FB_7E=y
CONFIG_BFIN_SHARED_FLASH_ENET=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 # BF533/2/1 Specific Configuration
@ -199,7 +195,7 @@ CONFIG_CLKIN_HZ=11059200
# CONFIG_BFIN_KERNEL_CLOCK is not set # CONFIG_BFIN_KERNEL_CLOCK is not set
CONFIG_MAX_VCO_HZ=750000000 CONFIG_MAX_VCO_HZ=750000000
CONFIG_MIN_VCO_HZ=50000000 CONFIG_MIN_VCO_HZ=50000000
CONFIG_MAX_SCLK_HZ=133333333 CONFIG_MAX_SCLK_HZ=133000000
CONFIG_MIN_SCLK_HZ=27000000 CONFIG_MIN_SCLK_HZ=27000000
# #
@ -267,6 +263,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_RESOURCES_64BIT is not set # CONFIG_RESOURCES_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1 CONFIG_ZONE_DMA_FLAG=1
CONFIG_LARGE_ALLOCS=y CONFIG_LARGE_ALLOCS=y
# CONFIG_BFIN_GPTIMERS is not set
CONFIG_BFIN_DMA_5XX=y CONFIG_BFIN_DMA_5XX=y
# CONFIG_DMA_UNCACHED_2M is not set # CONFIG_DMA_UNCACHED_2M is not set
CONFIG_DMA_UNCACHED_1M=y 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_AMCKEN=y
CONFIG_C_CDPRIO=y CONFIG_C_CDPRIO=y
@ -634,6 +631,7 @@ CONFIG_SMC91X=y
# CONFIG_DM9000 is not set # CONFIG_DM9000 is not set
CONFIG_NETDEV_1000=y CONFIG_NETDEV_1000=y
CONFIG_NETDEV_10000=y CONFIG_NETDEV_10000=y
# CONFIG_AX88180 is not set
# #
# Wireless LAN # Wireless LAN
@ -704,9 +702,9 @@ CONFIG_BFIN_TWIKEYPAD_IRQ_PFX=39
# #
# CONFIG_AD9960 is not set # CONFIG_AD9960 is not set
# CONFIG_SPI_ADC_BF533 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_PPIFCD is not set
# CONFIG_BF5xx_TIMERS is not set # CONFIG_BFIN_SIMPLE_TIMER is not set
# CONFIG_BF5xx_PPI is not set # CONFIG_BF5xx_PPI is not set
CONFIG_BFIN_SPORT=y CONFIG_BFIN_SPORT=y
# CONFIG_BFIN_TIMER_LATENCY is not set # 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_PIO is not set
CONFIG_SERIAL_BFIN_UART0=y CONFIG_SERIAL_BFIN_UART0=y
# CONFIG_BFIN_UART0_CTSRTS is not set # CONFIG_BFIN_UART0_CTSRTS is not set
# CONFIG_SERIAL_BFIN_UART1 is not set
CONFIG_SERIAL_CORE=y CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_BFIN_SPORT is not set # CONFIG_SERIAL_BFIN_SPORT is not set
@ -925,6 +924,7 @@ CONFIG_NTSC=y
# CONFIG_PAL_YCBCR is not set # CONFIG_PAL_YCBCR is not set
CONFIG_ADV7393_1XMEM=y CONFIG_ADV7393_1XMEM=y
# CONFIG_ADV7393_2XMEM is not set # CONFIG_ADV7393_2XMEM is not set
# CONFIG_FB_BFIN_T350MCQB is not set
# CONFIG_FB_S1D13XXX is not set # CONFIG_FB_S1D13XXX is not set
# CONFIG_FB_VIRTUAL is not set # CONFIG_FB_VIRTUAL is not set
# CONFIG_LOGO is not set # CONFIG_LOGO is not set
@ -978,11 +978,6 @@ CONFIG_SND_BFIN_AD73311_SE=4
# #
# CONFIG_SND_SOC is not set # CONFIG_SND_SOC is not set
#
# SoC Audio for the ADI Blackfin
#
# CONFIG_SND_BF5XX_HAVE_COLD_RESET is not set
# #
# Open Sound System # Open Sound System
# #

View File

@ -1,6 +1,6 @@
# #
# Automatically generated make config: don't edit # 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_MMU is not set
# CONFIG_FPU 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_RWSEM_XCHGADD_ALGORITHM is not set
CONFIG_BLACKFIN=y CONFIG_BLACKFIN=y
CONFIG_ZONE_DMA=y CONFIG_ZONE_DMA=y
CONFIG_BFIN=y
CONFIG_SEMAPHORE_SLEEPERS=y CONFIG_SEMAPHORE_SLEEPERS=y
CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_FIND_NEXT_BIT=y
CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_HWEIGHT=y
@ -18,7 +17,6 @@ CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_GPIO=y CONFIG_GENERIC_GPIO=y
CONFIG_FORCE_MAX_ZONEORDER=14 CONFIG_FORCE_MAX_ZONEORDER=14
CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_IRQCHIP_DEMUX_GPIO=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
# #
@ -64,7 +62,6 @@ CONFIG_FUTEX=y
CONFIG_ANON_INODES=y CONFIG_ANON_INODES=y
CONFIG_EPOLL=y CONFIG_EPOLL=y
CONFIG_SIGNALFD=y CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y CONFIG_EVENTFD=y
CONFIG_VM_EVENT_COUNTERS=y CONFIG_VM_EVENT_COUNTERS=y
CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3
@ -117,6 +114,9 @@ CONFIG_PREEMPT_VOLUNTARY=y
# #
# Processor and Board Settings # 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_BF531 is not set
# CONFIG_BF532 is not set # CONFIG_BF532 is not set
# CONFIG_BF533 is not set # CONFIG_BF533 is not set
@ -125,10 +125,12 @@ CONFIG_PREEMPT_VOLUNTARY=y
CONFIG_BF537=y CONFIG_BF537=y
# CONFIG_BF542 is not set # CONFIG_BF542 is not set
# CONFIG_BF544 is not set # CONFIG_BF544 is not set
# CONFIG_BF547 is not set
# CONFIG_BF548 is not set # CONFIG_BF548 is not set
# CONFIG_BF549 is not set # CONFIG_BF549 is not set
# CONFIG_BF561 is not set # CONFIG_BF561 is not set
# CONFIG_BF_REV_0_0 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_2=y
# CONFIG_BF_REV_0_3 is not set # CONFIG_BF_REV_0_3 is not set
# CONFIG_BF_REV_0_4 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_BF_REV_NONE is not set
CONFIG_BF53x=y CONFIG_BF53x=y
CONFIG_BFIN_SINGLE_CORE=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_MEM_MT48LC32M8A2_75=y
CONFIG_IRQ_PLL_WAKEUP=7 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 # BF537 Specific Configuration
@ -164,35 +185,9 @@ CONFIG_IRQ_PLL_WAKEUP=7
# #
CONFIG_IRQ_DMA_ERROR=7 CONFIG_IRQ_DMA_ERROR=7
CONFIG_IRQ_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_RX=11
CONFIG_IRQ_CAN_TX=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_PROG_INTA=12
CONFIG_IRQ_PORTG_INTB=12
CONFIG_IRQ_MEM_DMA0=13
CONFIG_IRQ_MEM_DMA1=13
CONFIG_IRQ_WATCH=13
# #
# Board customizations # Board customizations
@ -206,7 +201,7 @@ CONFIG_CLKIN_HZ=25000000
# CONFIG_BFIN_KERNEL_CLOCK is not set # CONFIG_BFIN_KERNEL_CLOCK is not set
CONFIG_MAX_VCO_HZ=600000000 CONFIG_MAX_VCO_HZ=600000000
CONFIG_MIN_VCO_HZ=50000000 CONFIG_MIN_VCO_HZ=50000000
CONFIG_MAX_SCLK_HZ=133333333 CONFIG_MAX_SCLK_HZ=133000000
CONFIG_MIN_SCLK_HZ=27000000 CONFIG_MIN_SCLK_HZ=27000000
# #
@ -263,6 +258,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_RESOURCES_64BIT is not set # CONFIG_RESOURCES_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1 CONFIG_ZONE_DMA_FLAG=1
CONFIG_LARGE_ALLOCS=y CONFIG_LARGE_ALLOCS=y
# CONFIG_BFIN_GPTIMERS is not set
CONFIG_BFIN_DMA_5XX=y CONFIG_BFIN_DMA_5XX=y
# CONFIG_DMA_UNCACHED_2M is not set # CONFIG_DMA_UNCACHED_2M is not set
CONFIG_DMA_UNCACHED_1M=y 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_AMCKEN=y
CONFIG_C_CDPRIO=y CONFIG_C_CDPRIO=y
@ -534,14 +530,6 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
CONFIG_MTD_BF5xx=m CONFIG_MTD_BF5xx=m
CONFIG_BFIN_FLASH_SIZE=0x400000 CONFIG_BFIN_FLASH_SIZE=0x400000
CONFIG_EBIU_FLASH_BASE=0x20000000 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_UCLINUX is not set
# CONFIG_MTD_PLATRAM 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_DM9000 is not set
CONFIG_NETDEV_1000=y CONFIG_NETDEV_1000=y
CONFIG_NETDEV_10000=y CONFIG_NETDEV_10000=y
# CONFIG_AX88180 is not set
# #
# Wireless LAN # Wireless LAN
@ -730,9 +719,9 @@ CONFIG_BFIN_TWIKEYPAD_IRQ_PFX=72
# #
# CONFIG_AD9960 is not set # CONFIG_AD9960 is not set
# CONFIG_SPI_ADC_BF533 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_PPIFCD is not set
# CONFIG_BF5xx_TIMERS is not set # CONFIG_BFIN_SIMPLE_TIMER is not set
# CONFIG_BF5xx_PPI is not set # CONFIG_BF5xx_PPI is not set
CONFIG_BFIN_SPORT=y CONFIG_BFIN_SPORT=y
# CONFIG_BFIN_TIMER_LATENCY is not set # CONFIG_BFIN_TIMER_LATENCY is not set
@ -967,6 +956,7 @@ CONFIG_FB_BF537_LQ035=m
CONFIG_LQ035_SLAVE_ADDR=0x58 CONFIG_LQ035_SLAVE_ADDR=0x58
# CONFIG_FB_BFIN_LANDSCAPE is not set # CONFIG_FB_BFIN_LANDSCAPE is not set
# CONFIG_FB_BFIN_BGR 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_S1D13XXX is not set
# CONFIG_FB_VIRTUAL is not set # CONFIG_FB_VIRTUAL is not set
# CONFIG_LOGO is not set # CONFIG_LOGO is not set
@ -1020,11 +1010,6 @@ CONFIG_SND_BFIN_AD73311_SE=4
# #
# CONFIG_SND_SOC is not set # CONFIG_SND_SOC is not set
#
# SoC Audio for the ADI Blackfin
#
# CONFIG_SND_BF5XX_HAVE_COLD_RESET is not set
# #
# Open Sound System # Open Sound System
# #

View File

@ -1,7 +1,6 @@
# #
# Automatically generated make config: don't edit # Automatically generated make config: don't edit
# Linux kernel version: 2.6.22.10 # Linux kernel version: 2.6.22.12
# Sat Oct 27 02:34:07 2007
# #
# CONFIG_MMU is not set # CONFIG_MMU is not set
# CONFIG_FPU 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_RWSEM_XCHGADD_ALGORITHM is not set
CONFIG_BLACKFIN=y CONFIG_BLACKFIN=y
CONFIG_ZONE_DMA=y CONFIG_ZONE_DMA=y
CONFIG_BFIN=y
CONFIG_SEMAPHORE_SLEEPERS=y CONFIG_SEMAPHORE_SLEEPERS=y
CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_FIND_NEXT_BIT=y
CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_HWEIGHT=y
@ -19,7 +17,6 @@ CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_GPIO=y CONFIG_GENERIC_GPIO=y
CONFIG_FORCE_MAX_ZONEORDER=14 CONFIG_FORCE_MAX_ZONEORDER=14
CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_IRQCHIP_DEMUX_GPIO=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
# #
@ -128,6 +125,7 @@ CONFIG_PREEMPT_VOLUNTARY=y
# CONFIG_BF537 is not set # CONFIG_BF537 is not set
# CONFIG_BF542 is not set # CONFIG_BF542 is not set
# CONFIG_BF544 is not set # CONFIG_BF544 is not set
# CONFIG_BF547 is not set
# CONFIG_BF548 is not set # CONFIG_BF548 is not set
CONFIG_BF549=y CONFIG_BF549=y
# CONFIG_BF561 is not set # CONFIG_BF561 is not set
@ -141,19 +139,6 @@ CONFIG_BF_REV_0_0=y
# CONFIG_BF_REV_NONE is not set # CONFIG_BF_REV_NONE is not set
CONFIG_BF54x=y CONFIG_BF54x=y
CONFIG_BFIN_SINGLE_CORE=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_PLL_WAKEUP=7
CONFIG_IRQ_RTC=8 CONFIG_IRQ_RTC=8
CONFIG_IRQ_SPORT0_RX=9 CONFIG_IRQ_SPORT0_RX=9
@ -180,6 +165,7 @@ CONFIG_IRQ_TIMER7=11
CONFIG_IRQ_TIMER8=11 CONFIG_IRQ_TIMER8=11
CONFIG_IRQ_TIMER9=11 CONFIG_IRQ_TIMER9=11
CONFIG_IRQ_TIMER10=11 CONFIG_IRQ_TIMER10=11
CONFIG_BFIN548_EZKIT=y
# #
# BF548 Specific Configuration # BF548 Specific Configuration
@ -279,9 +265,9 @@ CONFIG_PINT3_ASSIGN=0x02020303
# #
CONFIG_CLKIN_HZ=25000000 CONFIG_CLKIN_HZ=25000000
# CONFIG_BFIN_KERNEL_CLOCK is not set # CONFIG_BFIN_KERNEL_CLOCK is not set
CONFIG_MAX_VCO_HZ=533333333 CONFIG_MAX_VCO_HZ=533000000
CONFIG_MIN_VCO_HZ=50000000 CONFIG_MIN_VCO_HZ=50000000
CONFIG_MAX_SCLK_HZ=133333333 CONFIG_MAX_SCLK_HZ=133000000
CONFIG_MIN_SCLK_HZ=27000000 CONFIG_MIN_SCLK_HZ=27000000
# #
@ -376,6 +362,9 @@ CONFIG_BANK_0=0x7BB0
CONFIG_BANK_1=0x5554 CONFIG_BANK_1=0x5554
CONFIG_BANK_2=0x7BB0 CONFIG_BANK_2=0x7BB0
CONFIG_BANK_3=0x99B3 CONFIG_BANK_3=0x99B3
CONFIG_EBUI_MBSCTLVAL=0x0
CONFIG_EBUI_MODEVAL=0x1
CONFIG_EBUI_FCTLVAL=0x6
# #
# Bus options (PCI, PCMCIA, EISA, MCA, ISA) # Bus options (PCI, PCMCIA, EISA, MCA, ISA)
@ -702,6 +691,7 @@ CONFIG_SMSC911X=y
# CONFIG_DM9000 is not set # CONFIG_DM9000 is not set
CONFIG_NETDEV_1000=y CONFIG_NETDEV_1000=y
CONFIG_NETDEV_10000=y CONFIG_NETDEV_10000=y
# CONFIG_AX88180 is not set
# #
# Wireless LAN # Wireless LAN
@ -1058,6 +1048,8 @@ CONFIG_SND_SOC=y
CONFIG_SND_BF5XX_SOC=y CONFIG_SND_BF5XX_SOC=y
CONFIG_SND_BF5XX_SOC_AC97=y CONFIG_SND_BF5XX_SOC_AC97=y
CONFIG_SND_BF5XX_SOC_BF548_EZKIT=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_SPORT_NUM=0
# CONFIG_SND_BF5XX_HAVE_COLD_RESET is not set # CONFIG_SND_BF5XX_HAVE_COLD_RESET is not set
CONFIG_SND_SOC_AD1980=y CONFIG_SND_SOC_AD1980=y

View File

@ -1,6 +1,6 @@
# #
# Automatically generated make config: don't edit # 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_MMU is not set
# CONFIG_FPU 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_RWSEM_XCHGADD_ALGORITHM is not set
CONFIG_BLACKFIN=y CONFIG_BLACKFIN=y
CONFIG_ZONE_DMA=y CONFIG_ZONE_DMA=y
CONFIG_BFIN=y
CONFIG_SEMAPHORE_SLEEPERS=y CONFIG_SEMAPHORE_SLEEPERS=y
CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_FIND_NEXT_BIT=y
CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_HWEIGHT=y
@ -18,7 +17,6 @@ CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_GPIO=y CONFIG_GENERIC_GPIO=y
CONFIG_FORCE_MAX_ZONEORDER=14 CONFIG_FORCE_MAX_ZONEORDER=14
CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_IRQCHIP_DEMUX_GPIO=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
# #
@ -64,7 +62,6 @@ CONFIG_FUTEX=y
CONFIG_ANON_INODES=y CONFIG_ANON_INODES=y
CONFIG_EPOLL=y CONFIG_EPOLL=y
CONFIG_SIGNALFD=y CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y CONFIG_EVENTFD=y
CONFIG_VM_EVENT_COUNTERS=y CONFIG_VM_EVENT_COUNTERS=y
CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3 CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=3
@ -117,6 +114,9 @@ CONFIG_PREEMPT_VOLUNTARY=y
# #
# Processor and Board Settings # 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_BF531 is not set
# CONFIG_BF532 is not set # CONFIG_BF532 is not set
# CONFIG_BF533 is not set # CONFIG_BF533 is not set
@ -125,10 +125,12 @@ CONFIG_PREEMPT_VOLUNTARY=y
# CONFIG_BF537 is not set # CONFIG_BF537 is not set
# CONFIG_BF542 is not set # CONFIG_BF542 is not set
# CONFIG_BF544 is not set # CONFIG_BF544 is not set
# CONFIG_BF547 is not set
# CONFIG_BF548 is not set # CONFIG_BF548 is not set
# CONFIG_BF549 is not set # CONFIG_BF549 is not set
CONFIG_BF561=y CONFIG_BF561=y
# CONFIG_BF_REV_0_0 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_2 is not set
CONFIG_BF_REV_0_3=y CONFIG_BF_REV_0_3=y
# CONFIG_BF_REV_0_4 is not set # 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_ANY is not set
# CONFIG_BF_REV_NONE is not set # CONFIG_BF_REV_NONE is not set
CONFIG_BFIN_DUAL_CORE=y CONFIG_BFIN_DUAL_CORE=y
# CONFIG_BFIN533_EZKIT is not set CONFIG_MEM_MT48LC16M16A2TG_75=y
# CONFIG_BFIN533_STAMP is not set CONFIG_IRQ_PLL_WAKEUP=7
# CONFIG_BFIN537_STAMP is not set CONFIG_IRQ_SPORT0_ERROR=7
# CONFIG_BFIN533_BLUETECHNIX_CM is not set CONFIG_IRQ_SPORT1_ERROR=7
# CONFIG_BFIN537_BLUETECHNIX_CM is not set CONFIG_IRQ_SPI_ERROR=7
# CONFIG_BFIN548_EZKIT is not set
# CONFIG_BFIN561_BLUETECHNIX_CM is not set
CONFIG_BFIN561_EZKIT=y CONFIG_BFIN561_EZKIT=y
# CONFIG_BFIN561_TEPLA is not set # CONFIG_BFIN561_TEPLA is not set
# CONFIG_PNAV10 is not set # CONFIG_BFIN561_BLUETECHNIX_CM is not set
# CONFIG_GENERIC_BOARD is not set # CONFIG_GENERIC_BF561_BOARD is not set
CONFIG_MEM_MT48LC16M16A2TG_75=y
# #
# BF561 Specific Configuration # BF561 Specific Configuration
@ -170,15 +169,11 @@ CONFIG_BF561_COREB_RESET=y
# #
# Priority # Priority
# #
CONFIG_IRQ_PLL_WAKEUP=7
CONFIG_IRQ_DMA1_ERROR=7 CONFIG_IRQ_DMA1_ERROR=7
CONFIG_IRQ_DMA2_ERROR=7 CONFIG_IRQ_DMA2_ERROR=7
CONFIG_IRQ_IMDMA_ERROR=7 CONFIG_IRQ_IMDMA_ERROR=7
CONFIG_IRQ_PPI0_ERROR=7 CONFIG_IRQ_PPI0_ERROR=7
CONFIG_IRQ_PPI1_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_UART_ERROR=7
CONFIG_IRQ_RESERVED_ERROR=7 CONFIG_IRQ_RESERVED_ERROR=7
CONFIG_IRQ_DMA1_0=8 CONFIG_IRQ_DMA1_0=8
@ -243,7 +238,7 @@ CONFIG_CLKIN_HZ=30000000
# CONFIG_BFIN_KERNEL_CLOCK is not set # CONFIG_BFIN_KERNEL_CLOCK is not set
CONFIG_MAX_VCO_HZ=600000000 CONFIG_MAX_VCO_HZ=600000000
CONFIG_MIN_VCO_HZ=50000000 CONFIG_MIN_VCO_HZ=50000000
CONFIG_MAX_SCLK_HZ=133333333 CONFIG_MAX_SCLK_HZ=133000000
CONFIG_MIN_SCLK_HZ=27000000 CONFIG_MIN_SCLK_HZ=27000000
# #
@ -300,6 +295,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_RESOURCES_64BIT is not set # CONFIG_RESOURCES_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1 CONFIG_ZONE_DMA_FLAG=1
CONFIG_LARGE_ALLOCS=y CONFIG_LARGE_ALLOCS=y
# CONFIG_BFIN_GPTIMERS is not set
CONFIG_BFIN_DMA_5XX=y CONFIG_BFIN_DMA_5XX=y
# CONFIG_DMA_UNCACHED_2M is not set # CONFIG_DMA_UNCACHED_2M is not set
CONFIG_DMA_UNCACHED_1M=y 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_AMCKEN=y
CONFIG_C_CDPRIO=y CONFIG_C_CDPRIO=y
@ -564,14 +560,6 @@ CONFIG_MTD_COMPLEX_MAPPINGS=y
CONFIG_MTD_BF5xx=m CONFIG_MTD_BF5xx=m
CONFIG_BFIN_FLASH_SIZE=0x0400000 CONFIG_BFIN_FLASH_SIZE=0x0400000
CONFIG_EBIU_FLASH_BASE=0x20000000 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_UCLINUX is not set
# CONFIG_MTD_PLATRAM is not set # CONFIG_MTD_PLATRAM is not set
@ -660,6 +648,7 @@ CONFIG_SMC91X=y
# CONFIG_DM9000 is not set # CONFIG_DM9000 is not set
CONFIG_NETDEV_1000=y CONFIG_NETDEV_1000=y
CONFIG_NETDEV_10000=y CONFIG_NETDEV_10000=y
# CONFIG_AX88180 is not set
# #
# Wireless LAN # Wireless LAN
@ -721,9 +710,9 @@ CONFIG_INPUT_EVDEV=m
# #
# CONFIG_AD9960 is not set # CONFIG_AD9960 is not set
# CONFIG_SPI_ADC_BF533 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_PPIFCD is not set
# CONFIG_BF5xx_TIMERS is not set # CONFIG_BFIN_SIMPLE_TIMER is not set
# CONFIG_BF5xx_PPI is not set # CONFIG_BF5xx_PPI is not set
# CONFIG_BFIN_SPORT is not set # CONFIG_BFIN_SPORT is not set
# CONFIG_BFIN_TIMER_LATENCY is not set # CONFIG_BFIN_TIMER_LATENCY is not set

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
# #
# Automatically generated make config: don't edit # 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_MMU is not set
# CONFIG_FPU 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_RWSEM_XCHGADD_ALGORITHM is not set
CONFIG_BLACKFIN=y CONFIG_BLACKFIN=y
CONFIG_ZONE_DMA=y CONFIG_ZONE_DMA=y
CONFIG_BFIN=y
CONFIG_SEMAPHORE_SLEEPERS=y CONFIG_SEMAPHORE_SLEEPERS=y
CONFIG_GENERIC_FIND_NEXT_BIT=y CONFIG_GENERIC_FIND_NEXT_BIT=y
CONFIG_GENERIC_HWEIGHT=y CONFIG_GENERIC_HWEIGHT=y
@ -18,7 +17,6 @@ CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_GPIO=y CONFIG_GENERIC_GPIO=y
CONFIG_FORCE_MAX_ZONEORDER=14 CONFIG_FORCE_MAX_ZONEORDER=14
CONFIG_GENERIC_CALIBRATE_DELAY=y CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_IRQCHIP_DEMUX_GPIO=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
# #
@ -62,7 +60,6 @@ CONFIG_FUTEX=y
CONFIG_ANON_INODES=y CONFIG_ANON_INODES=y
CONFIG_EPOLL=y CONFIG_EPOLL=y
CONFIG_SIGNALFD=y CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y CONFIG_EVENTFD=y
CONFIG_VM_EVENT_COUNTERS=y CONFIG_VM_EVENT_COUNTERS=y
CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=9 CONFIG_BIG_ORDER_ALLOC_NOFAIL_MAGIC=9
@ -115,6 +112,9 @@ CONFIG_PREEMPT_VOLUNTARY=y
# #
# Processor and Board Settings # 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_BF531 is not set
# CONFIG_BF532 is not set # CONFIG_BF532 is not set
# CONFIG_BF533 is not set # CONFIG_BF533 is not set
@ -123,10 +123,12 @@ CONFIG_PREEMPT_VOLUNTARY=y
CONFIG_BF537=y CONFIG_BF537=y
# CONFIG_BF542 is not set # CONFIG_BF542 is not set
# CONFIG_BF544 is not set # CONFIG_BF544 is not set
# CONFIG_BF547 is not set
# CONFIG_BF548 is not set # CONFIG_BF548 is not set
# CONFIG_BF549 is not set # CONFIG_BF549 is not set
# CONFIG_BF561 is not set # CONFIG_BF561 is not set
# CONFIG_BF_REV_0_0 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_2=y
# CONFIG_BF_REV_0_3 is not set # CONFIG_BF_REV_0_3 is not set
# CONFIG_BF_REV_0_4 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_BF_REV_NONE is not set
CONFIG_BF53x=y CONFIG_BF53x=y
CONFIG_BFIN_SINGLE_CORE=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_MEM_MT48LC32M8A2_75=y
CONFIG_IRQ_PLL_WAKEUP=7 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 # BF537 Specific Configuration
@ -162,35 +183,9 @@ CONFIG_IRQ_PLL_WAKEUP=7
# #
CONFIG_IRQ_DMA_ERROR=7 CONFIG_IRQ_DMA_ERROR=7
CONFIG_IRQ_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_RX=11
CONFIG_IRQ_CAN_TX=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_PROG_INTA=12
CONFIG_IRQ_PORTG_INTB=12
CONFIG_IRQ_MEM_DMA0=13
CONFIG_IRQ_MEM_DMA1=13
CONFIG_IRQ_WATCH=13
# #
# Board customizations # Board customizations
@ -204,7 +199,7 @@ CONFIG_CLKIN_HZ=24576000
# CONFIG_BFIN_KERNEL_CLOCK is not set # CONFIG_BFIN_KERNEL_CLOCK is not set
CONFIG_MAX_VCO_HZ=600000000 CONFIG_MAX_VCO_HZ=600000000
CONFIG_MIN_VCO_HZ=50000000 CONFIG_MIN_VCO_HZ=50000000
CONFIG_MAX_SCLK_HZ=133333333 CONFIG_MAX_SCLK_HZ=133000000
CONFIG_MIN_SCLK_HZ=27000000 CONFIG_MIN_SCLK_HZ=27000000
# #
@ -261,6 +256,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_RESOURCES_64BIT is not set # CONFIG_RESOURCES_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1 CONFIG_ZONE_DMA_FLAG=1
CONFIG_LARGE_ALLOCS=y CONFIG_LARGE_ALLOCS=y
# CONFIG_BFIN_GPTIMERS is not set
CONFIG_BFIN_DMA_5XX=y CONFIG_BFIN_DMA_5XX=y
# CONFIG_DMA_UNCACHED_2M is not set # CONFIG_DMA_UNCACHED_2M is not set
CONFIG_DMA_UNCACHED_1M=y 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_AMCKEN=y
CONFIG_C_CDPRIO=y CONFIG_C_CDPRIO=y
@ -593,6 +589,7 @@ CONFIG_BFIN_MAC_RMII=y
# CONFIG_DM9000 is not set # CONFIG_DM9000 is not set
CONFIG_NETDEV_1000=y CONFIG_NETDEV_1000=y
CONFIG_NETDEV_10000=y CONFIG_NETDEV_10000=y
# CONFIG_AX88180 is not set
# #
# Wireless LAN # Wireless LAN
@ -675,9 +672,9 @@ CONFIG_INPUT_UINPUT=y
# #
# CONFIG_AD9960 is not set # CONFIG_AD9960 is not set
# CONFIG_SPI_ADC_BF533 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_PPIFCD is not set
# CONFIG_BF5xx_TIMERS is not set # CONFIG_BFIN_SIMPLE_TIMER is not set
# CONFIG_BF5xx_PPI is not set # CONFIG_BF5xx_PPI is not set
CONFIG_BFIN_SPORT=y CONFIG_BFIN_SPORT=y
# CONFIG_BFIN_TIMER_LATENCY is not set # CONFIG_BFIN_TIMER_LATENCY is not set
@ -897,6 +894,7 @@ CONFIG_FB_BF537_LQ035=y
CONFIG_LQ035_SLAVE_ADDR=0x58 CONFIG_LQ035_SLAVE_ADDR=0x58
CONFIG_FB_BFIN_LANDSCAPE=y CONFIG_FB_BFIN_LANDSCAPE=y
# CONFIG_FB_BFIN_BGR 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_S1D13XXX is not set
# CONFIG_FB_VIRTUAL is not set # CONFIG_FB_VIRTUAL is not set
# CONFIG_LOGO is not set # CONFIG_LOGO is not set
@ -938,11 +936,6 @@ CONFIG_SND=m
# #
# CONFIG_SND_SOC is not set # CONFIG_SND_SOC is not set
#
# SoC Audio for the ADI Blackfin
#
# CONFIG_SND_BF5XX_HAVE_COLD_RESET is not set
# #
# Open Sound System # Open Sound System
# #

View File

@ -436,6 +436,7 @@ unsigned long get_dma_curr_desc_ptr(unsigned int channel)
return dma_ch[channel].regs->curr_desc_ptr; return dma_ch[channel].regs->curr_desc_ptr;
} }
EXPORT_SYMBOL(get_dma_curr_desc_ptr);
unsigned long get_dma_curr_addr(unsigned int channel) unsigned long get_dma_curr_addr(unsigned int channel)
{ {

View File

@ -37,9 +37,6 @@
/* platform dependent support */ /* platform dependent support */
EXPORT_SYMBOL(__ioremap); EXPORT_SYMBOL(__ioremap);
EXPORT_SYMBOL(strcmp);
EXPORT_SYMBOL(strncmp);
EXPORT_SYMBOL(dump_thread);
EXPORT_SYMBOL(ip_fast_csum); EXPORT_SYMBOL(ip_fast_csum);
@ -51,6 +48,7 @@ EXPORT_SYMBOL(__down_trylock);
EXPORT_SYMBOL(__down_interruptible); EXPORT_SYMBOL(__down_interruptible);
EXPORT_SYMBOL(is_in_rom); EXPORT_SYMBOL(is_in_rom);
EXPORT_SYMBOL(bfin_return_from_exception);
/* Networking helper routines. */ /* Networking helper routines. */
EXPORT_SYMBOL(csum_partial_copy); 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 * their interface isn't gonna change any time soon now, so
* it's OK to leave it out of version control. * it's OK to leave it out of version control.
*/ */
EXPORT_SYMBOL(strcpy);
EXPORT_SYMBOL(memcpy); EXPORT_SYMBOL(memcpy);
EXPORT_SYMBOL(memset); EXPORT_SYMBOL(memset);
EXPORT_SYMBOL(memcmp); EXPORT_SYMBOL(memcmp);
EXPORT_SYMBOL(memmove); EXPORT_SYMBOL(memmove);
EXPORT_SYMBOL(memchr); EXPORT_SYMBOL(memchr);
EXPORT_SYMBOL(get_wchan);
/* /*
* libgcc functions - functions that are used internally by the * libgcc functions - functions that are used internally by the
@ -102,6 +98,7 @@ EXPORT_SYMBOL(outsw);
EXPORT_SYMBOL(insw); EXPORT_SYMBOL(insw);
EXPORT_SYMBOL(outsl); EXPORT_SYMBOL(outsl);
EXPORT_SYMBOL(insl); EXPORT_SYMBOL(insl);
EXPORT_SYMBOL(insl_16);
EXPORT_SYMBOL(irq_flags); EXPORT_SYMBOL(irq_flags);
EXPORT_SYMBOL(iounmap); EXPORT_SYMBOL(iounmap);
EXPORT_SYMBOL(blackfin_dcache_invalidate_range); EXPORT_SYMBOL(blackfin_dcache_invalidate_range);

View File

@ -26,29 +26,22 @@
#include <asm/cplb.h> #include <asm/cplb.h>
#include <asm/cplbinit.h> #include <asm/cplbinit.h>
u_long icplb_table[MAX_CPLBS+1]; u_long icplb_table[MAX_CPLBS + 1];
u_long dcplb_table[MAX_CPLBS+1]; u_long dcplb_table[MAX_CPLBS + 1];
#ifdef CONFIG_CPLB_SWITCH_TAB_L1 #ifdef CONFIG_CPLB_SWITCH_TAB_L1
u_long ipdt_table[MAX_SWITCH_I_CPLBS+1]__attribute__((l1_data)); # define PDT_ATTR __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 */
#else #else
# define PDT_ATTR
#endif
u_long ipdt_table[MAX_SWITCH_I_CPLBS+1]; u_long ipdt_table[MAX_SWITCH_I_CPLBS + 1] PDT_ATTR;
u_long dpdt_table[MAX_SWITCH_D_CPLBS+1]; u_long dpdt_table[MAX_SWITCH_D_CPLBS + 1] PDT_ATTR;
#ifdef CONFIG_CPLB_INFO #ifdef CONFIG_CPLB_INFO
u_long ipdt_swapcount_table[MAX_SWITCH_I_CPLBS]; u_long ipdt_swapcount_table[MAX_SWITCH_I_CPLBS] PDT_ATTR;
u_long dpdt_swapcount_table[MAX_SWITCH_D_CPLBS]; u_long dpdt_swapcount_table[MAX_SWITCH_D_CPLBS] PDT_ATTR;
#endif /* CONFIG_CPLB_INFO */ #endif
#endif /*CONFIG_CPLB_SWITCH_TAB_L1*/
struct s_cplb { struct s_cplb {
struct cplb_tab init_i; struct cplb_tab init_i;
@ -71,7 +64,7 @@ static struct cplb_desc cplb_data[] = {
#else #else
.valid = 0, .valid = 0,
#endif #endif
.name = "ZERO Pointer Saveguard", .name = "Zero Pointer Guard Page",
}, },
{ {
.start = L1_CODE_START, .start = L1_CODE_START,
@ -105,7 +98,7 @@ static struct cplb_desc cplb_data[] = {
.i_conf = SDRAM_IGENERIC, .i_conf = SDRAM_IGENERIC,
.d_conf = SDRAM_DGENERIC, .d_conf = SDRAM_DGENERIC,
.valid = 1, .valid = 1,
.name = "SDRAM Kernel", .name = "Kernel Memory",
}, },
{ {
.start = 0, /* dynamic */ .start = 0, /* dynamic */
@ -115,7 +108,7 @@ static struct cplb_desc cplb_data[] = {
.i_conf = SDRAM_IGENERIC, .i_conf = SDRAM_IGENERIC,
.d_conf = SDRAM_DNON_CHBL, .d_conf = SDRAM_DNON_CHBL,
.valid = 1, .valid = 1,
.name = "SDRAM RAM MTD", .name = "uClinux MTD Memory",
}, },
{ {
.start = 0, /* dynamic */ .start = 0, /* dynamic */
@ -124,7 +117,7 @@ static struct cplb_desc cplb_data[] = {
.attr = INITIAL_T | SWITCH_T | D_CPLB, .attr = INITIAL_T | SWITCH_T | D_CPLB,
.d_conf = SDRAM_DNON_CHBL, .d_conf = SDRAM_DNON_CHBL,
.valid = 1, .valid = 1,
.name = "SDRAM Uncached DMA ZONE", .name = "Uncached DMA Zone",
}, },
{ {
.start = 0, /* dynamic */ .start = 0, /* dynamic */
@ -134,7 +127,7 @@ static struct cplb_desc cplb_data[] = {
.i_conf = 0, /* dynamic */ .i_conf = 0, /* dynamic */
.d_conf = 0, /* dynamic */ .d_conf = 0, /* dynamic */
.valid = 1, .valid = 1,
.name = "SDRAM Reserved Memory", .name = "Reserved Memory",
}, },
{ {
.start = ASYNC_BANK0_BASE, .start = ASYNC_BANK0_BASE,
@ -143,14 +136,14 @@ static struct cplb_desc cplb_data[] = {
.attr = SWITCH_T | D_CPLB, .attr = SWITCH_T | D_CPLB,
.d_conf = SDRAM_EBIU, .d_conf = SDRAM_EBIU,
.valid = 1, .valid = 1,
.name = "ASYNC Memory", .name = "Asynchronous Memory Banks",
}, },
{ {
#if defined(CONFIG_BF561) #ifdef L2_START
.start = L2_SRAM, .start = L2_START,
.end = L2_SRAM_END, .end = L2_START + L2_LENGTH,
.psize = SIZE_1M, .psize = SIZE_1M,
.attr = SWITCH_T | D_CPLB, .attr = SWITCH_T | I_CPLB | D_CPLB,
.i_conf = L2_MEMORY, .i_conf = L2_MEMORY,
.d_conf = L2_MEMORY, .d_conf = L2_MEMORY,
.valid = 1, .valid = 1,
@ -158,13 +151,23 @@ static struct cplb_desc cplb_data[] = {
.valid = 0, .valid = 0,
#endif #endif
.name = "L2 Memory", .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) static u16 __init lock_kernel_check(u32 start, u32 end)
{ {
if ((start <= (u32) _stext && end >= (u32) _end) if ((end <= (u32) _end && end >= (u32)_stext) ||
|| (start >= (u32) _stext && end <= (u32) _end)) (start <= (u32) _end && start >= (u32)_stext))
return IN_KERNEL; return IN_KERNEL;
return 0; return 0;
} }
@ -350,7 +353,7 @@ void __init generate_cpl_tables(void)
else else
cplb_data[RES_MEM].i_conf = SDRAM_INON_CHBL; 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) if (!cplb_data[i].valid)
continue; continue;

View File

@ -205,7 +205,8 @@ asmlinkage void __init early_trap_c(struct pt_regs *fp, void *retaddr)
if (likely(early_console == NULL)) if (likely(early_console == NULL))
setup_early_printk(DEFAULT_EARLY_PORT); setup_early_printk(DEFAULT_EARLY_PORT);
dump_bfin_regs(fp, retaddr); dump_bfin_mem((void *)fp->retx);
show_regs(fp);
dump_bfin_trace_buffer(); dump_bfin_trace_buffer();
panic("Died early"); panic("Died early");

View File

@ -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. */ /* Fill in the fpu structure for a core dump. */
int dump_fpu(struct pt_regs *regs, elf_fpregset_t * fpregs) 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; 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. * sys_execve() executes a new program.
*/ */

View File

@ -43,6 +43,7 @@
#include <asm/cacheflush.h> #include <asm/cacheflush.h>
#include <asm/blackfin.h> #include <asm/blackfin.h>
#include <asm/cplbinit.h> #include <asm/cplbinit.h>
#include <asm/div64.h>
#include <asm/fixed_code.h> #include <asm/fixed_code.h>
#include <asm/early_printk.h> #include <asm/early_printk.h>
@ -504,13 +505,17 @@ EXPORT_SYMBOL(get_sclk);
unsigned long sclk_to_usecs(unsigned long 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); EXPORT_SYMBOL(sclk_to_usecs);
unsigned long usecs_to_sclk(unsigned long 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); EXPORT_SYMBOL(usecs_to_sclk);

View File

@ -158,7 +158,7 @@ static void decode_address(char *buf, unsigned long address)
} }
/* we were unable to find this address anywhere */ /* we were unable to find this address anywhere */
sprintf(buf, "[<0x%p>]", (void *)address); sprintf(buf, "<0x%p> /* unknown address */", (void *)address);
done: done:
write_unlock_irqrestore(&tasklist_lock, flags); write_unlock_irqrestore(&tasklist_lock, flags);
@ -169,7 +169,9 @@ asmlinkage void double_fault_c(struct pt_regs *fp)
console_verbose(); console_verbose();
oops_in_progress = 1; oops_in_progress = 1;
printk(KERN_EMERG "\n" KERN_EMERG "Double Fault\n"); 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"); panic("Double Fault - unrecoverable event\n");
} }
@ -250,7 +252,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
case VEC_EXCPT03: case VEC_EXCPT03:
info.si_code = SEGV_STACKFLOW; info.si_code = SEGV_STACKFLOW;
sig = SIGSEGV; sig = SIGSEGV;
printk(KERN_NOTICE EXC_0x03); printk(KERN_NOTICE EXC_0x03(KERN_NOTICE));
CHK_DEBUGGER_TRAP(); CHK_DEBUGGER_TRAP();
break; break;
/* 0x04 - User Defined, Caught by default */ /* 0x04 - User Defined, Caught by default */
@ -279,7 +281,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
case VEC_OVFLOW: case VEC_OVFLOW:
info.si_code = TRAP_TRACEFLOW; info.si_code = TRAP_TRACEFLOW;
sig = SIGTRAP; sig = SIGTRAP;
printk(KERN_NOTICE EXC_0x11); printk(KERN_NOTICE EXC_0x11(KERN_NOTICE));
CHK_DEBUGGER_TRAP(); CHK_DEBUGGER_TRAP();
break; break;
/* 0x12 - Reserved, Caught by default */ /* 0x12 - Reserved, Caught by default */
@ -301,36 +303,35 @@ asmlinkage void trap_c(struct pt_regs *fp)
case VEC_UNDEF_I: case VEC_UNDEF_I:
info.si_code = ILL_ILLOPC; info.si_code = ILL_ILLOPC;
sig = SIGILL; sig = SIGILL;
printk(KERN_NOTICE EXC_0x21); printk(KERN_NOTICE EXC_0x21(KERN_NOTICE));
CHK_DEBUGGER_TRAP(); CHK_DEBUGGER_TRAP();
break; break;
/* 0x22 - Illegal Instruction Combination, handled here */ /* 0x22 - Illegal Instruction Combination, handled here */
case VEC_ILGAL_I: case VEC_ILGAL_I:
info.si_code = ILL_ILLPARAOP; info.si_code = ILL_ILLPARAOP;
sig = SIGILL; sig = SIGILL;
printk(KERN_NOTICE EXC_0x22); printk(KERN_NOTICE EXC_0x22(KERN_NOTICE));
CHK_DEBUGGER_TRAP(); CHK_DEBUGGER_TRAP();
break; break;
/* 0x23 - Data CPLB Protection Violation, /* 0x23 - Data CPLB protection violation, handled here */
normal case is handled in _cplb_hdr */
case VEC_CPLB_VL: case VEC_CPLB_VL:
info.si_code = ILL_CPLB_VI; info.si_code = ILL_CPLB_VI;
sig = SIGILL; sig = SIGBUS;
printk(KERN_NOTICE EXC_0x23); printk(KERN_NOTICE EXC_0x23(KERN_NOTICE));
CHK_DEBUGGER_TRAP(); CHK_DEBUGGER_TRAP();
break; break;
/* 0x24 - Data access misaligned, handled here */ /* 0x24 - Data access misaligned, handled here */
case VEC_MISALI_D: case VEC_MISALI_D:
info.si_code = BUS_ADRALN; info.si_code = BUS_ADRALN;
sig = SIGBUS; sig = SIGBUS;
printk(KERN_NOTICE EXC_0x24); printk(KERN_NOTICE EXC_0x24(KERN_NOTICE));
CHK_DEBUGGER_TRAP(); CHK_DEBUGGER_TRAP();
break; break;
/* 0x25 - Unrecoverable Event, handled here */ /* 0x25 - Unrecoverable Event, handled here */
case VEC_UNCOV: case VEC_UNCOV:
info.si_code = ILL_ILLEXCPT; info.si_code = ILL_ILLEXCPT;
sig = SIGILL; sig = SIGILL;
printk(KERN_NOTICE EXC_0x25); printk(KERN_NOTICE EXC_0x25(KERN_NOTICE));
CHK_DEBUGGER_TRAP(); CHK_DEBUGGER_TRAP();
break; break;
/* 0x26 - Data CPLB Miss, normal case is handled in _cplb_hdr, /* 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: case VEC_CPLB_M:
info.si_code = BUS_ADRALN; info.si_code = BUS_ADRALN;
sig = SIGBUS; sig = SIGBUS;
printk(KERN_NOTICE EXC_0x26); printk(KERN_NOTICE EXC_0x26(KERN_NOTICE));
CHK_DEBUGGER_TRAP(); CHK_DEBUGGER_TRAP();
break; break;
/* 0x27 - Data CPLB Multiple Hits - Linux Trap Zero, handled here */ /* 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"); printk(KERN_NOTICE "NULL pointer access (probably)\n");
#else #else
sig = SIGILL; sig = SIGILL;
printk(KERN_NOTICE EXC_0x27); printk(KERN_NOTICE EXC_0x27(KERN_NOTICE));
#endif #endif
CHK_DEBUGGER_TRAP(); CHK_DEBUGGER_TRAP();
break; break;
@ -357,7 +358,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
case VEC_WATCH: case VEC_WATCH:
info.si_code = TRAP_WATCHPT; info.si_code = TRAP_WATCHPT;
sig = SIGTRAP; sig = SIGTRAP;
pr_debug(EXC_0x28); pr_debug(EXC_0x28(KERN_DEBUG));
CHK_DEBUGGER_TRAP_MAYBE(); CHK_DEBUGGER_TRAP_MAYBE();
/* Check if this is a watchpoint in kernel space */ /* Check if this is a watchpoint in kernel space */
if (fp->ipend & 0xffc0) if (fp->ipend & 0xffc0)
@ -379,22 +380,21 @@ asmlinkage void trap_c(struct pt_regs *fp)
case VEC_MISALI_I: case VEC_MISALI_I:
info.si_code = BUS_ADRALN; info.si_code = BUS_ADRALN;
sig = SIGBUS; sig = SIGBUS;
printk(KERN_NOTICE EXC_0x2A); printk(KERN_NOTICE EXC_0x2A(KERN_NOTICE));
CHK_DEBUGGER_TRAP(); CHK_DEBUGGER_TRAP();
break; break;
/* 0x2B - Instruction CPLB protection Violation, /* 0x2B - Instruction CPLB protection violation, handled here */
handled in _cplb_hdr */
case VEC_CPLB_I_VL: case VEC_CPLB_I_VL:
info.si_code = ILL_CPLB_VI; info.si_code = ILL_CPLB_VI;
sig = SIGILL; sig = SIGBUS;
printk(KERN_NOTICE EXC_0x2B); printk(KERN_NOTICE EXC_0x2B(KERN_NOTICE));
CHK_DEBUGGER_TRAP(); CHK_DEBUGGER_TRAP();
break; break;
/* 0x2C - Instruction CPLB miss, handled in _cplb_hdr */ /* 0x2C - Instruction CPLB miss, handled in _cplb_hdr */
case VEC_CPLB_I_M: case VEC_CPLB_I_M:
info.si_code = ILL_CPLB_MISS; info.si_code = ILL_CPLB_MISS;
sig = SIGBUS; sig = SIGBUS;
printk(KERN_NOTICE EXC_0x2C); printk(KERN_NOTICE EXC_0x2C(KERN_NOTICE));
CHK_DEBUGGER_TRAP(); CHK_DEBUGGER_TRAP();
break; break;
/* 0x2D - Instruction CPLB Multiple Hits, handled here */ /* 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"); printk(KERN_NOTICE "Jump to address 0 - 0x0fff\n");
#else #else
sig = SIGILL; sig = SIGILL;
printk(KERN_NOTICE EXC_0x2D); printk(KERN_NOTICE EXC_0x2D(KERN_NOTICE));
#endif #endif
CHK_DEBUGGER_TRAP(); CHK_DEBUGGER_TRAP();
break; break;
@ -413,7 +413,7 @@ asmlinkage void trap_c(struct pt_regs *fp)
case VEC_ILL_RES: case VEC_ILL_RES:
info.si_code = ILL_PRVOPC; info.si_code = ILL_PRVOPC;
sig = SIGILL; sig = SIGILL;
printk(KERN_NOTICE EXC_0x2E); printk(KERN_NOTICE EXC_0x2E(KERN_NOTICE));
CHK_DEBUGGER_TRAP(); CHK_DEBUGGER_TRAP();
break; break;
/* 0x2F - Reserved, Caught by default */ /* 0x2F - Reserved, Caught by default */
@ -446,7 +446,9 @@ asmlinkage void trap_c(struct pt_regs *fp)
if (sig != SIGTRAP) { if (sig != SIGTRAP) {
unsigned long stack; 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 */ /* Print out the trace buffer if it makes sense */
#ifndef CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE #ifndef CONFIG_DEBUG_BFIN_NO_KERN_HWTRACE
@ -460,22 +462,25 @@ asmlinkage void trap_c(struct pt_regs *fp)
show_stack(current, &stack); show_stack(current, &stack);
if (oops_in_progress) { if (oops_in_progress) {
#ifndef CONFIG_ACCESS_CHECK #ifndef CONFIG_ACCESS_CHECK
printk(KERN_EMERG "Hey - dork - please turn on " printk(KERN_EMERG "Please turn on "
"CONFIG_ACCESS_CHECK\n"); "CONFIG_ACCESS_CHECK\n");
#endif #endif
panic("Kernel exception"); 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_signo = sig;
info.si_errno = 0; info.si_errno = 0;
info.si_addr = (void *)fp->pc; info.si_addr = (void *)fp->pc;
force_sig_info(sig, &info, current); 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); trace_buffer_restore(j);
return; return;
} }
@ -600,16 +605,28 @@ void dump_stack(void)
show_stack(current, &stack); show_stack(current, &stack);
trace_buffer_restore(tflags); trace_buffer_restore(tflags);
} }
EXPORT_SYMBOL(dump_stack); 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)
printk(KERN_EMERG "Kernel OOPS in progress\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 (!oops_in_progress) {
if (current->pid && current->mm) { if (current->pid && current->mm) {
printk(KERN_NOTICE "\n" KERN_NOTICE "CURRENT PROCESS:\n"); printk(KERN_NOTICE "CURRENT PROCESS:\n");
printk(KERN_NOTICE "COMM=%s PID=%d\n", printk(KERN_NOTICE "COMM=%s PID=%d\n",
current->comm, current->pid); current->comm, current->pid);
@ -623,14 +640,13 @@ void dump_bfin_regs(struct pt_regs *fp, void *retaddr)
(void *)current->mm->end_data, (void *)current->mm->end_data,
(void *)current->mm->brk, (void *)current->mm->brk,
(void *)current->mm->start_stack); (void *)current->mm->start_stack);
} else { } else
printk (KERN_NOTICE "\n" KERN_NOTICE printk(KERN_NOTICE "\n" KERN_NOTICE
"No Valid pid - Either things are really messed up," "No Valid process in current context\n");
" or you are in the kernel\n"); }
}
} else { void dump_bfin_mem(void *retaddr)
printk(KERN_NOTICE "Kernel or interrupt exception\n"); {
}
if (retaddr >= (void *)FIXED_CODE_START && retaddr < (void *)physical_mem_end if (retaddr >= (void *)FIXED_CODE_START && retaddr < (void *)physical_mem_end
#if L1_CODE_LENGTH != 0 #if L1_CODE_LENGTH != 0
@ -671,8 +687,13 @@ void dump_bfin_regs(struct pt_regs *fp, void *retaddr)
printk("\n"); printk("\n");
} else } else
printk("\n" KERN_NOTICE printk("\n" KERN_NOTICE
"Cannot look at the [PC] for it is" "Cannot look at the [PC] <%p> for it is"
" in unreadable memory - sorry\n"); " 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 "\n" KERN_NOTICE "SEQUENCER STATUS:\n");
printk(KERN_NOTICE " SEQSTAT: %08lx IPEND: %04lx SYSCFG: %04lx\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); printk(KERN_NOTICE " RETX: %s\n", buf);
decode_address(buf, fp->rets); decode_address(buf, fp->rets);
printk(KERN_NOTICE " RETS: %s\n", buf); 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) { if ((long)fp->seqstat & SEQSTAT_EXCAUSE) {
decode_address(buf, bfin_read_DCPLB_FAULT_ADDR()); 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 "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()); 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(); dump_stack();
panic("Unrecoverable event\n"); panic("Unrecoverable event\n");
} }

View File

@ -4,7 +4,7 @@
lib-y := \ lib-y := \
ashldi3.o ashrdi3.o lshrdi3.o \ 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 \ checksum.o memcpy.o memset.o memcmp.o memchr.o memmove.o \
strcmp.o strcpy.o strncmp.o strncpy.o \ strcmp.o strcpy.o strncmp.o strncpy.o \
umulsi3_highpart.o smulsi3_highpart.o \ umulsi3_highpart.o smulsi3_highpart.o \

View File

@ -77,3 +77,22 @@ ENTRY(_insb)
sti R3; sti R3;
RTS; RTS;
ENDPROC(_insb) 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)

View File

@ -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 #define strcmp __inline_strcmp
#include <asm/string.h> #include <asm/string.h>
#undef strcmp #undef strcmp
#include <linux/module.h>
int strcmp(const char *dest, const char *src) int strcmp(const char *dest, const char *src)
{ {
return __inline_strcmp(dest, src); return __inline_strcmp(dest, src);
} }
EXPORT_SYMBOL(strcmp);

View File

@ -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 #define strcpy __inline_strcpy
#include <asm/string.h> #include <asm/string.h>
#undef strcpy #undef strcpy
#include <linux/module.h>
char *strcpy(char *dest, const char *src) char *strcpy(char *dest, const char *src)
{ {
return __inline_strcpy(dest, src); return __inline_strcpy(dest, src);
} }
EXPORT_SYMBOL(strcpy);

View File

@ -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 #define strncmp __inline_strncmp
#include <asm/string.h> #include <asm/string.h>
#undef strncmp #undef strncmp
#include <linux/module.h>
int strncmp(const char *cs, const char *ct, size_t count) int strncmp(const char *cs, const char *ct, size_t count)
{ {
return __inline_strncmp(cs, ct, count); return __inline_strncmp(cs, ct, count);
} }
EXPORT_SYMBOL(strncmp);

View File

@ -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 #define strncpy __inline_strncpy
#include <asm/string.h> #include <asm/string.h>
#undef strncpy #undef strncpy
#include <linux/module.h>
char *strncpy(char *dest, const char *src, size_t n) char *strncpy(char *dest, const char *src, size_t n)
{ {
return __inline_strncpy(dest, src, n); return __inline_strncpy(dest, src, n);
} }
EXPORT_SYMBOL(strncpy);

View File

@ -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)

View File

@ -1,5 +1,7 @@
if (BF52x) if (BF52x)
source "arch/blackfin/mach-bf527/boards/Kconfig"
menu "BF527 Specific Configuration" menu "BF527 Specific Configuration"
comment "Alternative Multiplexing Scheme" comment "Alternative Multiplexing Scheme"

View 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

View File

@ -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

View File

@ -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);

View File

@ -35,17 +35,18 @@
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
#include <linux/spi/flash.h> #include <linux/spi/flash.h>
#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
#include <linux/usb_isp1362.h> #include <linux/usb/isp1362.h>
#endif #endif
#include <linux/pata_platform.h> #include <linux/pata_platform.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/usb_sl811.h> #include <linux/usb/sl811.h>
#include <asm/cplb.h> #include <asm/cplb.h>
#include <asm/dma.h> #include <asm/dma.h>
#include <asm/bfin5xx_spi.h> #include <asm/bfin5xx_spi.h>
#include <asm/reboot.h> #include <asm/reboot.h>
#include <asm/nand.h> #include <asm/nand.h>
#include <asm/portmux.h>
#include <linux/spi/ad7877.h> #include <linux/spi/ad7877.h>
/* /*
@ -450,6 +451,13 @@ static const struct ad7877_platform_data bfin_ad7877_ts_info = {
}; };
#endif #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 = { static struct spi_board_info bfin_spi_board_info[] __initdata = {
#if defined(CONFIG_MTD_M25P80) \ #if defined(CONFIG_MTD_M25P80) \
|| defined(CONFIG_MTD_M25P80_MODULE) || 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, .platform_data = &bfin_ad7877_ts_info,
.irq = IRQ_PF6, .irq = IRQ_PF6,
.max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = 1, .chip_select = 1,
.controller_data = &spi_ad7877_chip_info, .controller_data = &spi_ad7877_chip_info,
}, },
#endif #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 */ /* SPI controller data */
static struct bfin5xx_spi_master bfin_spi0_info = { static struct bfin5xx_spi_master bfin_spi0_info = {
.num_chipselect = 8, .num_chipselect = 8,
.enable_dma = 1, /* master has the ability to do dma transfer */ .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) */ /* SPI (0) */
@ -788,3 +808,14 @@ void native_machine_restart(char *cmd)
if ((bfin_read_SYSCR() & 0x7) == 0x3) if ((bfin_read_SYSCR() & 0x7) == 0x3)
bfin_gpio_reset_spi0_ssel1(); 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);

View File

@ -1,5 +1,7 @@
if (BF533 || BF532 || BF531) if (BF533 || BF532 || BF531)
source "arch/blackfin/mach-bf533/boards/Kconfig"
menu "BF533/2/1 Specific Configuration" menu "BF533/2/1 Specific Configuration"
comment "Interrupt Priority Assignment" comment "Interrupt Priority Assignment"

View File

@ -36,20 +36,21 @@
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
#include <linux/spi/flash.h> #include <linux/spi/flash.h>
#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
#include <linux/usb_isp1362.h> #include <linux/usb/isp1362.h>
#endif #endif
#include <linux/pata_platform.h> #include <linux/pata_platform.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <asm/dma.h> #include <asm/dma.h>
#include <asm/bfin5xx_spi.h> #include <asm/bfin5xx_spi.h>
#include <asm/reboot.h> #include <asm/reboot.h>
#include <asm/portmux.h>
/* /*
* Name the Board for the /proc/cpuinfo * Name the Board for the /proc/cpuinfo
*/ */
const char bfin_board_name[] = "HV Sistemas H8606"; 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 = { static struct platform_device rtc_device = {
.name = "rtc-bfin", .name = "rtc-bfin",
.id = -1, .id = -1,
@ -93,10 +94,6 @@ static struct resource smc91x_resources[] = {
.end = IRQ_PROG_INTB, .end = IRQ_PROG_INTB,
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
}, { }, {
/*
* denotes the flag pin and is used directly if
* CONFIG_IRQCHIP_DEMUX_GPIO is defined.
*/
.start = IRQ_PF7, .start = IRQ_PF7,
.end = IRQ_PF7, .end = IRQ_PF7,
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
@ -269,6 +266,7 @@ static struct resource bfin_spi0_resource[] = {
static struct bfin5xx_spi_master bfin_spi0_info = { static struct bfin5xx_spi_master bfin_spi0_info = {
.num_chipselect = 8, .num_chipselect = 8,
.enable_dma = 1, /* master has the ability to do dma transfer */ .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 = { static struct platform_device bfin_spi0_device = {

View 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

View File

@ -2,7 +2,7 @@
# arch/blackfin/mach-bf533/boards/Makefile # 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_STAMP) += stamp.o
obj-$(CONFIG_BFIN533_EZKIT) += ezkit.o obj-$(CONFIG_BFIN533_EZKIT) += ezkit.o
obj-$(CONFIG_BFIN533_BLUETECHNIX_CM) += cm_bf533.o obj-$(CONFIG_BFIN533_BLUETECHNIX_CM) += cm_bf533.o

View File

@ -33,11 +33,12 @@
#include <linux/mtd/partitions.h> #include <linux/mtd/partitions.h>
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
#include <linux/spi/flash.h> #include <linux/spi/flash.h>
#include <linux/usb_isp1362.h> #include <linux/usb/isp1362.h>
#include <linux/pata_platform.h> #include <linux/pata_platform.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <asm/dma.h> #include <asm/dma.h>
#include <asm/bfin5xx_spi.h> #include <asm/bfin5xx_spi.h>
#include <asm/portmux.h>
/* /*
* Name the Board for the /proc/cpuinfo * 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 = { static struct bfin5xx_spi_master bfin_spi0_info = {
.num_chipselect = 8, .num_chipselect = 8,
.enable_dma = 1, /* master has the ability to do dma transfer */ .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 = { static struct platform_device bfin_spi0_device = {

View File

@ -34,11 +34,12 @@
#include <linux/mtd/partitions.h> #include <linux/mtd/partitions.h>
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
#include <linux/spi/flash.h> #include <linux/spi/flash.h>
#include <linux/usb_isp1362.h> #include <linux/usb/isp1362.h>
#include <linux/pata_platform.h> #include <linux/pata_platform.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <asm/dma.h> #include <asm/dma.h>
#include <asm/bfin5xx_spi.h> #include <asm/bfin5xx_spi.h>
#include <asm/portmux.h>
/* /*
* Name the Board for the /proc/cpuinfo * 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 = { static struct bfin5xx_spi_master bfin_spi0_info = {
.num_chipselect = 8, .num_chipselect = 8,
.enable_dma = 1, /* master has the ability to do dma transfer */ .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 = { static struct platform_device bfin_spi0_device = {

View File

@ -58,10 +58,6 @@ static struct resource smc91x_resources[] = {
.end = IRQ_PROG_INTB, .end = IRQ_PROG_INTB,
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
}, { }, {
/*
* denotes the flag pin and is used directly if
* CONFIG_IRQCHIP_DEMUX_GPIO is defined.
*/
.start = IRQ_PF7, .start = IRQ_PF7,
.end = IRQ_PF7, .end = IRQ_PF7,
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,

View File

@ -35,13 +35,14 @@
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
#include <linux/spi/flash.h> #include <linux/spi/flash.h>
#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
#include <linux/usb_isp1362.h> #include <linux/usb/isp1362.h>
#endif #endif
#include <linux/pata_platform.h> #include <linux/pata_platform.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <asm/dma.h> #include <asm/dma.h>
#include <asm/bfin5xx_spi.h> #include <asm/bfin5xx_spi.h>
#include <asm/reboot.h> #include <asm/reboot.h>
#include <asm/portmux.h>
/* /*
* Name the Board for the /proc/cpuinfo * 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 = { static struct bfin5xx_spi_master bfin_spi0_info = {
.num_chipselect = 8, .num_chipselect = 8,
.enable_dma = 1, /* master has the ability to do dma transfer */ .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 = { static struct platform_device bfin_spi0_device = {

View File

@ -1,5 +1,7 @@
if (BF537 || BF534 || BF536) if (BF537 || BF534 || BF536)
source "arch/blackfin/mach-bf537/boards/Kconfig"
menu "BF537 Specific Configuration" menu "BF537 Specific Configuration"
comment "Interrupt Priority Assignment" comment "Interrupt Priority Assignment"

View 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

View File

@ -2,8 +2,7 @@
# arch/blackfin/mach-bf537/boards/Makefile # arch/blackfin/mach-bf537/boards/Makefile
# #
obj-y += eth_mac.o obj-$(CONFIG_GENERIC_BF537_BOARD) += generic_board.o
obj-$(CONFIG_GENERIC_BOARD) += generic_board.o
obj-$(CONFIG_BFIN537_STAMP) += stamp.o led.o obj-$(CONFIG_BFIN537_STAMP) += stamp.o led.o
obj-$(CONFIG_BFIN537_BLUETECHNIX_CM) += cm_bf537.o obj-$(CONFIG_BFIN537_BLUETECHNIX_CM) += cm_bf537.o
obj-$(CONFIG_PNAV10) += pnav10.o obj-$(CONFIG_PNAV10) += pnav10.o

View File

@ -34,11 +34,12 @@
#include <linux/mtd/partitions.h> #include <linux/mtd/partitions.h>
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
#include <linux/spi/flash.h> #include <linux/spi/flash.h>
#include <linux/usb_isp1362.h> #include <linux/usb/isp1362.h>
#include <linux/pata_platform.h> #include <linux/pata_platform.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <asm/dma.h> #include <asm/dma.h>
#include <asm/bfin5xx_spi.h> #include <asm/bfin5xx_spi.h>
#include <asm/portmux.h>
/* /*
* Name the Board for the /proc/cpuinfo * 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 = { static struct bfin5xx_spi_master bfin_spi0_info = {
.num_chipselect = 8, .num_chipselect = 8,
.enable_dma = 1, /* master has the ability to do dma transfer */ .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 = { static struct platform_device bfin_spi0_device = {
@ -425,3 +427,10 @@ static int __init cm_bf537_init(void)
} }
arch_initcall(cm_bf537_init); 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);

View File

@ -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);

View File

@ -35,7 +35,7 @@
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
#include <linux/spi/flash.h> #include <linux/spi/flash.h>
#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
#include <linux/usb_isp1362.h> #include <linux/usb/isp1362.h>
#endif #endif
#include <linux/pata_platform.h> #include <linux/pata_platform.h>
#include <linux/irq.h> #include <linux/irq.h>
@ -44,6 +44,7 @@
#include <asm/dma.h> #include <asm/dma.h>
#include <asm/bfin5xx_spi.h> #include <asm/bfin5xx_spi.h>
#include <asm/reboot.h> #include <asm/reboot.h>
#include <asm/portmux.h>
#include <linux/spi/ad7877.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, .platform_data = &bfin_ad7877_ts_info,
.irq = IRQ_PF6, .irq = IRQ_PF6,
.max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = 1, .chip_select = 1,
.controller_data = &spi_ad7877_chip_info, .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 = { static struct bfin5xx_spi_master bfin_spi0_info = {
.num_chipselect = 8, .num_chipselect = 8,
.enable_dma = 1, /* master has the ability to do dma transfer */ .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) */ /* SPI (0) */
@ -730,3 +732,10 @@ void native_machine_restart(char *cmd)
if ((bfin_read_SYSCR() & 0x7) == 0x3) if ((bfin_read_SYSCR() & 0x7) == 0x3)
bfin_gpio_reset_spi0_ssel1(); 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);

View File

@ -35,11 +35,12 @@
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
#include <linux/spi/flash.h> #include <linux/spi/flash.h>
#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
#include <linux/usb_isp1362.h> #include <linux/usb/isp1362.h>
#endif #endif
#include <linux/irq.h> #include <linux/irq.h>
#include <asm/dma.h> #include <asm/dma.h>
#include <asm/bfin5xx_spi.h> #include <asm/bfin5xx_spi.h>
#include <asm/portmux.h>
#include <linux/usb/sl811.h> #include <linux/usb/sl811.h>
#include <linux/spi/ad7877.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) #if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
static struct bfin5xx_spi_chip spi_ad7877_chip_info = { static struct bfin5xx_spi_chip spi_ad7877_chip_info = {
.cs_change_per_word = 1, .cs_change_per_word = 0,
.enable_dma = 0, .enable_dma = 0,
.bits_per_word = 16, .bits_per_word = 16,
}; };
@ -387,7 +388,7 @@ static struct spi_board_info bfin_spi_board_info[] __initdata = {
.platform_data = &bfin_ad7877_ts_info, .platform_data = &bfin_ad7877_ts_info,
.irq = IRQ_PF2, .irq = IRQ_PF2,
.max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = 5, .chip_select = 5,
.controller_data = &spi_ad7877_chip_info, .controller_data = &spi_ad7877_chip_info,
}, },
@ -413,6 +414,7 @@ static struct resource bfin_spi0_resource[] = {
static struct bfin5xx_spi_master bfin_spi0_info = { static struct bfin5xx_spi_master bfin_spi0_info = {
.num_chipselect = 8, .num_chipselect = 8,
.enable_dma = 1, /* master has the ability to do dma transfer */ .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 = { static struct platform_device bfin_spi0_device = {
@ -508,3 +510,10 @@ static int __init stamp_init(void)
} }
arch_initcall(stamp_init); 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);

View File

@ -35,7 +35,7 @@
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
#include <linux/spi/flash.h> #include <linux/spi/flash.h>
#if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE) #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
#include <linux/usb_isp1362.h> #include <linux/usb/isp1362.h>
#endif #endif
#include <linux/pata_platform.h> #include <linux/pata_platform.h>
#include <linux/irq.h> #include <linux/irq.h>
@ -44,6 +44,7 @@
#include <asm/dma.h> #include <asm/dma.h>
#include <asm/bfin5xx_spi.h> #include <asm/bfin5xx_spi.h>
#include <asm/reboot.h> #include <asm/reboot.h>
#include <asm/portmux.h>
#include <linux/spi/ad7877.h> #include <linux/spi/ad7877.h>
/* /*
@ -182,6 +183,28 @@ static struct platform_device dm9000_device = {
}; };
#endif #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) #if defined(CONFIG_USB_SL811_HCD) || defined(CONFIG_USB_SL811_HCD_MODULE)
static struct resource sl811_hcd_resources[] = { 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, .platform_data = &bfin_ad7877_ts_info,
.irq = IRQ_PF6, .irq = IRQ_PF6,
.max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */ .max_speed_hz = 12500000, /* max spi clock (SCK) speed in HZ */
.bus_num = 1, .bus_num = 0,
.chip_select = 1, .chip_select = 1,
.controller_data = &spi_ad7877_chip_info, .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 = { static struct bfin5xx_spi_master bfin_spi0_info = {
.num_chipselect = 8, .num_chipselect = 8,
.enable_dma = 1, /* master has the ability to do dma transfer */ .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) */ /* SPI (0) */
@ -554,15 +578,20 @@ static struct platform_device bfin_fb_adv7393_device = {
#if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE) #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
static struct resource bfin_uart_resources[] = { static struct resource bfin_uart_resources[] = {
#ifdef CONFIG_SERIAL_BFIN_UART0
{ {
.start = 0xFFC00400, .start = 0xFFC00400,
.end = 0xFFC004FF, .end = 0xFFC004FF,
.flags = IORESOURCE_MEM, .flags = IORESOURCE_MEM,
}, { },
#endif
#ifdef CONFIG_SERIAL_BFIN_UART1
{
.start = 0xFFC02000, .start = 0xFFC02000,
.end = 0xFFC020FF, .end = 0xFFC020FF,
.flags = IORESOURCE_MEM, .flags = IORESOURCE_MEM,
}, },
#endif
}; };
static struct platform_device bfin_uart_device = { static struct platform_device bfin_uart_device = {
@ -669,6 +698,10 @@ static struct platform_device *stamp_devices[] __initdata = {
&dm9000_device, &dm9000_device,
#endif #endif
#if defined(CONFIG_AX88180) || defined(CONFIG_AX88180_MODULE)
&ax88180_device,
#endif
#if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE) #if defined(CONFIG_BFIN_MAC) || defined(CONFIG_BFIN_MAC_MODULE)
&bfin_mac_device, &bfin_mac_device,
#endif #endif
@ -730,3 +763,14 @@ void native_machine_restart(char *cmd)
if ((bfin_read_SYSCR() & 0x7) == 0x3) if ((bfin_read_SYSCR() & 0x7) == 0x3)
bfin_gpio_reset_spi0_ssel1(); 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);

View File

@ -1,5 +1,7 @@
if (BF54x) if (BF54x)
source "arch/blackfin/mach-bf548/boards/Kconfig"
menu "BF548 Specific Configuration" menu "BF548 Specific Configuration"
config DEB_DMA_URGENT config DEB_DMA_URGENT

View 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

View File

@ -42,6 +42,7 @@
#include <asm/dma.h> #include <asm/dma.h>
#include <asm/gpio.h> #include <asm/gpio.h>
#include <asm/nand.h> #include <asm/nand.h>
#include <asm/portmux.h>
#include <asm/mach/bf54x_keys.h> #include <asm/mach/bf54x_keys.h>
#include <linux/input.h> #include <linux/input.h>
#include <linux/spi/ad7877.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) #if defined(CONFIG_TOUCHSCREEN_AD7877) || defined(CONFIG_TOUCHSCREEN_AD7877_MODULE)
static struct bfin5xx_spi_chip spi_ad7877_chip_info = { static struct bfin5xx_spi_chip spi_ad7877_chip_info = {
.cs_change_per_word = 1, .cs_change_per_word = 0,
.enable_dma = 0, .enable_dma = 0,
.bits_per_word = 16, .bits_per_word = 16,
}; };
@ -453,9 +454,10 @@ static struct resource bfin_spi1_resource[] = {
}; };
/* SPI controller data */ /* SPI controller data */
static struct bfin5xx_spi_master bf54x_spi_master_info = { static struct bfin5xx_spi_master bf54x_spi_master_info0 = {
.num_chipselect = 8, .num_chipselect = 8,
.enable_dma = 1, /* master has the ability to do dma transfer */ .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 = { 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), .num_resources = ARRAY_SIZE(bfin_spi0_resource),
.resource = bfin_spi0_resource, .resource = bfin_spi0_resource,
.dev = { .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 = { static struct platform_device bf54x_spi_master1 = {
.name = "bfin-spi", .name = "bfin-spi",
.id = 1, /* Bus number */ .id = 1, /* Bus number */
.num_resources = ARRAY_SIZE(bfin_spi1_resource), .num_resources = ARRAY_SIZE(bfin_spi1_resource),
.resource = bfin_spi1_resource, .resource = bfin_spi1_resource,
.dev = { .dev = {
.platform_data = &bf54x_spi_master_info, /* Passed to driver */ .platform_data = &bf54x_spi_master_info1, /* Passed to driver */
}, },
}; };
#endif /* spi master and devices */ #endif /* spi master and devices */
@ -500,6 +508,7 @@ static struct platform_device i2c_bfin_twi0_device = {
.resource = bfin_twi0_resource, .resource = bfin_twi0_resource,
}; };
#if !defined(CONFIG_BF542) /* The BF542 only has 1 TWI */
static struct resource bfin_twi1_resource[] = { static struct resource bfin_twi1_resource[] = {
[0] = { [0] = {
.start = TWI1_REGBASE, .start = TWI1_REGBASE,
@ -520,6 +529,7 @@ static struct platform_device i2c_bfin_twi1_device = {
.resource = bfin_twi1_resource, .resource = bfin_twi1_resource,
}; };
#endif #endif
#endif
static struct platform_device *ezkit_devices[] __initdata = { static struct platform_device *ezkit_devices[] __initdata = {
#if defined(CONFIG_RTC_DRV_BFIN) || defined(CONFIG_RTC_DRV_BFIN_MODULE) #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) #if defined(CONFIG_I2C_BLACKFIN_TWI) || defined(CONFIG_I2C_BLACKFIN_TWI_MODULE)
&i2c_bfin_twi0_device, &i2c_bfin_twi0_device,
#if !defined(CONFIG_BF542)
&i2c_bfin_twi1_device, &i2c_bfin_twi1_device,
#endif #endif
#endif
}; };
static int __init stamp_init(void) static int __init stamp_init(void)

View File

@ -158,6 +158,27 @@ ENTRY(__stext)
w[p2] = r0; w[p2] = r0;
ssync; 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 /* This section keeps the processor in supervisor mode
* during kernel boot. Switches to user mode at end of boot. * during kernel boot. Switches to user mode at end of boot.
* See page 3-9 of Hardware Reference manual for documentation. * See page 3-9 of Hardware Reference manual for documentation.

View File

@ -1,4 +1,6 @@
if BF561 if (BF561)
source "arch/blackfin/mach-bf561/boards/Kconfig"
menu "BF561 Specific Configuration" menu "BF561 Specific Configuration"

View 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

View File

@ -2,7 +2,7 @@
# arch/blackfin/mach-bf561/boards/Makefile # 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_BLUETECHNIX_CM) += cm_bf561.o
obj-$(CONFIG_BFIN561_EZKIT) += ezkit.o obj-$(CONFIG_BFIN561_EZKIT) += ezkit.o
obj-$(CONFIG_BFIN561_TEPLA) += tepla.o obj-$(CONFIG_BFIN561_TEPLA) += tepla.o

View File

@ -33,11 +33,12 @@
#include <linux/mtd/partitions.h> #include <linux/mtd/partitions.h>
#include <linux/spi/spi.h> #include <linux/spi/spi.h>
#include <linux/spi/flash.h> #include <linux/spi/flash.h>
#include <linux/usb_isp1362.h> #include <linux/usb/isp1362.h>
#include <linux/pata_platform.h> #include <linux/pata_platform.h>
#include <linux/irq.h> #include <linux/irq.h>
#include <asm/dma.h> #include <asm/dma.h>
#include <asm/bfin5xx_spi.h> #include <asm/bfin5xx_spi.h>
#include <asm/portmux.h>
/* /*
* Name the Board for the /proc/cpuinfo * 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 = { static struct bfin5xx_spi_master bfin_spi0_info = {
.num_chipselect = 8, .num_chipselect = 8,
.enable_dma = 1, /* master has the ability to do dma transfer */ .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 = { static struct platform_device bfin_spi0_device = {

View File

@ -35,6 +35,7 @@
#include <linux/pata_platform.h> #include <linux/pata_platform.h>
#include <asm/dma.h> #include <asm/dma.h>
#include <asm/bfin5xx_spi.h> #include <asm/bfin5xx_spi.h>
#include <asm/portmux.h>
/* /*
* Name the Board for the /proc/cpuinfo * Name the Board for the /proc/cpuinfo
@ -115,6 +116,28 @@ static struct platform_device smc91x_device = {
}; };
#endif #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) #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
static struct resource bfin_uart_resources[] = { static struct resource bfin_uart_resources[] = {
{ {
@ -160,6 +183,7 @@ static struct resource bfin_spi0_resource[] = {
static struct bfin5xx_spi_master bfin_spi0_info = { static struct bfin5xx_spi_master bfin_spi0_info = {
.num_chipselect = 8, .num_chipselect = 8,
.enable_dma = 1, /* master has the ability to do dma transfer */ .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 = { 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) #if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
&smc91x_device, &smc91x_device,
#endif #endif
#if defined(CONFIG_AX88180) || defined(CONFIG_AX88180_MODULE)
&ax88180_device,
#endif
#if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE) #if defined(CONFIG_SPI_BFIN) || defined(CONFIG_SPI_BFIN_MODULE)
&bfin_spi0_device, &bfin_spi0_device,
#endif #endif

View File

@ -48,10 +48,6 @@ static struct resource smc91x_resources[] = {
.end = IRQ_PROG_INTB, .end = IRQ_PROG_INTB,
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
}, { }, {
/*
* denotes the flag pin and is used directly if
* CONFIG_IRQCHIP_DEMUX_GPIO is defined.
*/
.start = IRQ_PF9, .start = IRQ_PF9,
.end = IRQ_PF9, .end = IRQ_PF9,
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL, .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,

View File

@ -31,10 +31,6 @@ static struct resource smc91x_resources[] = {
.end = IRQ_PROG_INTB, .end = IRQ_PROG_INTB,
.flags = IORESOURCE_IRQ|IORESOURCE_IRQ_HIGHLEVEL, .flags = IORESOURCE_IRQ|IORESOURCE_IRQ_HIGHLEVEL,
}, { }, {
/*
* denotes the flag pin and is used directly if
* CONFIG_IRQCHIP_DEMUX_GPIO is defined.
*/
.start = IRQ_PF7, .start = IRQ_PF7,
.end = IRQ_PF7, .end = IRQ_PF7,
.flags = IORESOURCE_IRQ|IORESOURCE_IRQ_HIGHLEVEL, .flags = IORESOURCE_IRQ|IORESOURCE_IRQ_HIGHLEVEL,

View File

@ -91,7 +91,7 @@ static char *cplb_print_entry(char *buf, int type)
} else } else
buf += sprintf(buf, "Data CPLB entry:\n"); 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) { while (*p_addr != 0xffffffff) {
entry = cplb_find_entry(cplb_addr, cplb_data, *p_addr, *p_data); entry = cplb_find_entry(cplb_addr, cplb_data, *p_addr, *p_data);

View File

@ -271,16 +271,27 @@ ENTRY(_cplb_mgr)
/* FAILED CASES*/ /* FAILED CASES*/
.Lno_page_in_table: .Lno_page_in_table:
( R7:4,P5:3 ) = [SP++];
R0 = CPLB_NO_ADDR_MATCH; R0 = CPLB_NO_ADDR_MATCH;
RTS; JUMP .Lfail_ret;
.Lall_locked: .Lall_locked:
( R7:4,P5:3 ) = [SP++];
R0 = CPLB_NO_UNLOCKED; R0 = CPLB_NO_UNLOCKED;
RTS; JUMP .Lfail_ret;
.Lprot_violation: .Lprot_violation:
( R7:4,P5:3 ) = [SP++];
R0 = CPLB_PROT_VIOL; 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; RTS;
.Ldcplb_write: .Ldcplb_write:

View File

@ -33,7 +33,7 @@
* after a timer-interrupt and after each system call. * after a timer-interrupt and after each system call.
*/ */
#include <linux/init.h>
#include <linux/linkage.h> #include <linux/linkage.h>
#include <linux/unistd.h> #include <linux/unistd.h>
#include <asm/blackfin.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 * This one does not lower the level to IRQ5, and thus can be used to
* patch up CPLB misses on the kernel stack. * patch up CPLB misses on the kernel stack.
*/ */
ENTRY(_ex_dcplb)
#if ANOMALY_05000261 #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 * Work around an anomaly: if we see a new DCPLB fault, return
* without doing anything. Then, if we get the same fault again, * without doing anything. Then, if we get the same fault again,
* handle it. * handle it.
*/ */
P4 = R7; /* Store EXCAUSE */
p5.l = _last_cplb_fault_retx; p5.l = _last_cplb_fault_retx;
p5.h = _last_cplb_fault_retx; p5.h = _last_cplb_fault_retx;
r7 = [p5]; r7 = [p5];
r6 = retx; r6 = retx;
[p5] = r6; [p5] = r6;
cc = r6 == r7; cc = r6 == r7;
if !cc jump _return_from_exception; if !cc jump _bfin_return_from_exception;
/* fall through */ /* fall through */
#endif R7 = P4;
ENDPROC(_ex_dcplb) 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++]; (R7:6,P5:4) = [sp++];
ASTAT = [sp++]; ASTAT = [sp++];
SAVE_ALL_SYS SAVE_ALL_SYS
@ -98,7 +117,7 @@ ENTRY(_ex_icplb)
RESTORE_ALL_SYS RESTORE_ALL_SYS
SP = EX_SCRATCH_REG; SP = EX_SCRATCH_REG;
rtx; rtx;
ENDPROC(_ex_icplb) ENDPROC(_ex_icplb_miss)
ENTRY(_ex_syscall) ENTRY(_ex_syscall)
DEBUG_START_HWTRACE(p5, r7) DEBUG_START_HWTRACE(p5, r7)
@ -120,7 +139,7 @@ ENTRY(_ex_single_step)
r7 = retx; r7 = retx;
r6 = reti; r6 = reti;
cc = r7 == r6; cc = r7 == r6;
if cc jump _return_from_exception if cc jump _bfin_return_from_exception
r7 = syscfg; r7 = syscfg;
bitclr (r7, 0); bitclr (r7, 0);
syscfg = R7; syscfg = R7;
@ -137,8 +156,9 @@ ENTRY(_ex_single_step)
r7 = [p4]; r7 = [p4];
cc = r6 == r7; cc = r6 == r7;
if !cc jump _ex_trap_c; if !cc jump _ex_trap_c;
ENDPROC(_ex_single_step)
ENTRY(_return_from_exception) ENTRY(_bfin_return_from_exception)
DEBUG_START_HWTRACE(p5, r7) DEBUG_START_HWTRACE(p5, r7)
#if ANOMALY_05000257 #if ANOMALY_05000257
R7=LC0; R7=LC0;
@ -150,7 +170,7 @@ ENTRY(_return_from_exception)
ASTAT = [sp++]; ASTAT = [sp++];
sp = EX_SCRATCH_REG; sp = EX_SCRATCH_REG;
rtx; rtx;
ENDPROC(_ex_soft_bp) ENDPROC(_bfin_return_from_exception)
ENTRY(_handle_bad_cplb) ENTRY(_handle_bad_cplb)
/* To get here, we just tried and failed to change a CPLB /* To get here, we just tried and failed to change a CPLB
@ -843,7 +863,7 @@ ENTRY(_ex_trace_buff_full)
LC0 = [sp++]; LC0 = [sp++];
P2 = [sp++]; P2 = [sp++];
P3 = [sp++]; P3 = [sp++];
jump _return_from_exception; jump _bfin_return_from_exception;
ENDPROC(_ex_trace_buff_full) ENDPROC(_ex_trace_buff_full)
#if CONFIG_DEBUG_BFIN_HWTRACE_EXPAND_LEN == 4 #if CONFIG_DEBUG_BFIN_HWTRACE_EXPAND_LEN == 4
@ -861,7 +881,7 @@ ENTRY(_software_trace_buff)
#endif /* CONFIG_DEBUG_BFIN_HWTRACE_EXPAND */ #endif /* CONFIG_DEBUG_BFIN_HWTRACE_EXPAND */
#if CONFIG_EARLY_PRINTK #if CONFIG_EARLY_PRINTK
.section .init.text __INIT
ENTRY(_early_trap) ENTRY(_early_trap)
SAVE_ALL_SYS SAVE_ALL_SYS
trace_buffer_stop(p0,r0); trace_buffer_stop(p0,r0);
@ -896,6 +916,7 @@ ENTRY(_early_trap)
call _early_trap_c; call _early_trap_c;
SP += 12; SP += 12;
ENDPROC(_early_trap) ENDPROC(_early_trap)
__FINIT
#endif /* CONFIG_EARLY_PRINTK */ #endif /* CONFIG_EARLY_PRINTK */
/* /*
@ -908,6 +929,7 @@ ENDPROC(_early_trap)
#else #else
.data .data
#endif #endif
ENTRY(_ex_table) ENTRY(_ex_table)
/* entry for each EXCAUSE[5:0] /* entry for each EXCAUSE[5:0]
* This table must be in sync with the table in ./kernel/traps.c * 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 /* 0x20 - Reserved */
.long _ex_trap_c /* 0x21 - Undefined Instruction */ .long _ex_trap_c /* 0x21 - Undefined Instruction */
.long _ex_trap_c /* 0x22 - Illegal Instruction Combination */ .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 /* 0x24 - Data access misaligned */
.long _ex_trap_c /* 0x25 - Unrecoverable Event */ .long _ex_trap_c /* 0x25 - Unrecoverable Event */
.long _ex_dcplb /* 0x26 - Data CPLB Miss */ .long _ex_dmiss /* 0x26 - Data CPLB Miss */
.long _ex_trap_c /* 0x27 - Data CPLB Multiple Hits - Linux Trap Zero */ .long _ex_dmult /* 0x27 - Data CPLB Multiple Hits - Linux Trap Zero */
.long _ex_trap_c /* 0x28 - Emulation Watchpoint */ .long _ex_trap_c /* 0x28 - Emulation Watchpoint */
.long _ex_trap_c /* 0x29 - Instruction fetch access error (535 only) */ .long _ex_trap_c /* 0x29 - Instruction fetch access error (535 only) */
.long _ex_trap_c /* 0x2A - Instruction fetch misaligned */ .long _ex_trap_c /* 0x2A - Instruction fetch misaligned */
.long _ex_icplb /* 0x2B - Instruction CPLB protection Violation */ .long _ex_trap_c /* 0x2B - Instruction CPLB protection Violation */
.long _ex_icplb /* 0x2C - Instruction CPLB miss */ .long _ex_icplb_miss /* 0x2C - Instruction CPLB miss */
.long _ex_trap_c /* 0x2D - Instruction CPLB Multiple Hits */ .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 */
.long _ex_trap_c /* 0x2E - Illegal use of Supervisor Resource */ .long _ex_trap_c /* 0x2E - Illegal use of Supervisor Resource */

View File

@ -30,7 +30,6 @@
#include <asm/blackfin.h> #include <asm/blackfin.h>
#include <asm/mach/irq.h> #include <asm/mach/irq.h>
#include <linux/autoconf.h>
#include <linux/linkage.h> #include <linux/linkage.h>
#include <asm/entry.h> #include <asm/entry.h>
#include <asm/asm-offsets.h> #include <asm/asm-offsets.h>

Some files were not shown because too many files have changed in this diff Show More