Commit Graph

333 Commits

Author SHA1 Message Date
Jo-Philipp Wich
e9c4d3d1f2 ramips: add support for the ARC FreeStation5 board, also fix WCR-150GN network setup while we're at it - thanks Pau Escrich <p4u@dabax.net> for the implementation
SVN-Revision: 31144
2012-03-29 16:03:04 +00:00
Gabor Juhos
d495277d9f ramips: rt305x: build image for the DIR-615 rev D boards
Patch from #10105.

SVN-Revision: 31101
2012-03-27 19:29:59 +00:00
Gabor Juhos
e4e24c5512 ramips: rt305x: add add support for the Asus WL-330N board
[juhosg: reorder several lines in order to keep things sorted
alphabetically]

Signed-off-by: Frédéric Leroy <fredo@starox.org>

SVN-Revision: 31100
2012-03-27 19:29:57 +00:00
Gabor Juhos
0f77d0b2ba ramips: add RT3350 detection
SVN-Revision: 30900
2012-03-12 16:12:13 +00:00
Gabor Juhos
05d3f559f5 ramips: rt305x: rewrite SoC detection
SVN-Revision: 30890
2012-03-11 19:05:59 +00:00
Gabor Juhos
8cf8ee8f9d ramips: rt305x: rename SYSTEM_CONFIG_* defines to RT305X_SYSCFG_*
SVN-Revision: 30889
2012-03-11 19:05:57 +00:00
Gabor Juhos
acb4ad86e5 ramips: replace RALINK_SOC_* macros with global variables
SVN-Revision: 30888
2012-03-11 19:05:56 +00:00
Gabor Juhos
8cff770eb3 ramips: introduce ramips_soc_prom_init and move SoC detection into that
SVN-Revision: 30887
2012-03-11 19:05:53 +00:00
Gabor Juhos
4e15457e0e ramips: allow to use DSP ASE on RT3xxx
SVN-Revision: 30879
2012-03-11 16:39:26 +00:00
Gabor Juhos
0e486d2fd2 ramips: add support for unbranded XDX-RN502J board
This patch adds support for routers using a PCB marked XDX-RN502J
V2.0, such as some unbranded routers like this:

http://www.mediafire.com/?8acv87h6snn9fj6
http://www.mediafire.com/?do7xonw7scor4kn
http://www.mediafire.com/?1ad49zvx3e7jyix
http://www.mediafire.com/?i46cqiq66maa197

http://www.aliexpress.com/product-fm/516397994-Free-Shipping-300M-3G-WAN-Wireless-N-WiFi-USB-AP-Router-2-Antennas-wholesalers.html

some reports also state the Aceex 22Y uses the same board.

more information can be found in the following openwrt forum post
https://forum.openwrt.org/viewtopic.php?id=34878

[juhosg: fix checkpatch warnings, use the GENERIC_4M template]

Signed-off-by: bruno schwander <bruno@tinkerbox.org>

SVN-Revision: 30809
2012-03-04 16:09:13 +00:00
Gabor Juhos
44c8b396f9 ramips: board support for Asus RT-N10+
[juhosg: fix indentation in platform scripts, and remove debug
messages from 06_set_iface_mac]

Signed-off-by: Patrick van Staveren <trick@vanstaveren.us>

SVN-Revision: 30808
2012-03-04 16:09:11 +00:00
Gabor Juhos
72599f0c61 ramips: don't read RAMIPS_RX_CALC_IDX0 register in the loop
SVN-Revision: 30733
2012-02-26 10:54:13 +00:00
Gabor Juhos
100f76a010 ramips: raeth: add rx_info structure
This helps to reduce code size on RX path:

add/remove: 0/0 grow/shrink: 3/1 up/down: 68/-56 (12)
function                                     old     new   delta
ramips_eth_open                             1104    1144     +40
ramips_ring_free                             212     232     +20
ramips_eth_stop                              400     408      +8
ramips_eth_rx_hw                             648     592     -56

SVN-Revision: 30732
2012-02-26 10:54:12 +00:00
Gabor Juhos
32e7b1c7d9 ramips: raeth: add tx_info structure
This helps to reduce code size on TX path:

add/remove: 0/0 grow/shrink: 1/4 up/down: 56/-92 (-36)
function                                     old     new   delta
ramips_eth_open                             1048    1104     +56
ramips_eth_tx_housekeeping                   156     148      -8
ramips_ring_free                             224     212     -12
ramips_eth_stop                              420     400     -20
ramips_eth_hard_start_xmit                   480     428     -52

SVN-Revision: 30731
2012-02-26 10:54:10 +00:00
Gabor Juhos
30143b715c ramips: raeth: don't process disabled interrupts
Also rename the 'fe_int' variable.

SVN-Revision: 30713
2012-02-25 11:59:19 +00:00
Gabor Juhos
a18a821733 ramips: raeth: show interrupt statistics in debugfs
SVN-Revision: 30681
2012-02-22 13:06:44 +00:00
Gabor Juhos
214216c04d ramips: raeth: add debugfs support
SVN-Revision: 30680
2012-02-22 13:06:42 +00:00
Gabor Juhos
c1e4d709fa ramips: raeth: rename main source file
SVN-Revision: 30679
2012-02-22 13:06:41 +00:00
Gabor Juhos
5e6bc97d0c ramips: raeth: add missing Kconfig and Makefile
SVN-Revision: 30671
2012-02-21 09:44:30 +00:00
Gabor Juhos
3ba0f4e1ca ramips: move the ethernet driver into a separate directory
Also clean up the Kconfig symbols.

SVN-Revision: 30670
2012-02-21 09:26:43 +00:00
Gabor Juhos
a6d904b1d6 ramips: rename the spi driver
SVN-Revision: 30669
2012-02-21 09:26:41 +00:00
Gabor Juhos
dd001a4b0f ramips: rt3883: make rt3883_nand_data visible
SVN-Revision: 30655
2012-02-19 19:40:37 +00:00
Gabor Juhos
62f213eab9 ramips: merge 3.2 fixes
SVN-Revision: 30652
2012-02-19 17:52:23 +00:00
Gabor Juhos
e2ea72515f ramips: rt305x: nuke built-in MTD partition maps
SVN-Revision: 30650
2012-02-19 17:52:15 +00:00
Gabor Juhos
de6405c898 ramips: rt288x: nuke built-in MTD partition maps
SVN-Revision: 30649
2012-02-19 17:52:11 +00:00
Gabor Juhos
3489515a7e ramips: rt305x: add support for the Skyline SL-R7205 Wireless 3G router
[juhosg:
- don't switch back to 2.6.39
- update config-3.2
- change machine id to SL-R7205
- reorder case entries in platform scripts
- remove button hotplug script]

Signed-off-by: Haipoh Teoh <hpteoh@ceedtec.com>

SVN-Revision: 30645
2012-02-19 16:44:49 +00:00
Gabor Juhos
990ed96a2a ralink: rt3883: disable the 2GHz band on the RT-N56U
SVN-Revision: 30632
2012-02-18 17:36:21 +00:00
Gabor Juhos
5710530c41 ramips: rt3883: make rt3883_wlan_data visible
SVN-Revision: 30631
2012-02-18 17:36:16 +00:00
Gabor Juhos
dabca24361 ramips: rt3883: change eeprom file name
SVN-Revision: 30603
2012-02-16 20:06:21 +00:00
Gabor Juhos
00d963999d ramips: select HW_HAS_PCI on per-board basis
SVN-Revision: 30576
2012-02-16 08:17:54 +00:00
Gabor Juhos
fc967295ec ramips: rt3883: remove a stray character from rt3883.h
SVN-Revision: 30575
2012-02-16 08:17:53 +00:00
Gabor Juhos
b4af07d5c0 ramips: rt288x: don't register the PCI controller on each board
SVN-Revision: 30574
2012-02-16 08:17:52 +00:00
Gabor Juhos
f8a56dc8df ramips: raeth: separate ring allocation and setup
SVN-Revision: 30573
2012-02-16 08:17:50 +00:00
Gabor Juhos
49fc54be3d ramips: rt288x: fix PCI resource conflict
SVN-Revision: 30563
2012-02-15 21:19:02 +00:00
Florian Fainelli
37f8c19028 correct PCI IO/Mem resource swapping
SVN-Revision: 30562
2012-02-15 21:13:21 +00:00
Florian Fainelli
3ceebbba14 add Ralink V11ST-FE board support
This board is equipped with:
- 4MB of NOR Flash
- 32MB of SDRAM
- IC+ IP175C switch
- one Mini-PCI slot

SVN-Revision: 30561
2012-02-15 21:13:11 +00:00
Gabor Juhos
8b8d9a8336 ramips: raeth: add a helper function for skb allocation
SVN-Revision: 30555
2012-02-15 18:33:42 +00:00
Gabor Juhos
e57546de83 ramips: raeth: use netdev_alloc_skb
SVN-Revision: 30554
2012-02-15 18:33:41 +00:00
Gabor Juhos
064855314b ramips: raeth: add '__packed __aligned(4)' annotation to dma descritor structures
This helps GCC to generare more efficient code.

SVN-Revision: 30553
2012-02-15 18:33:40 +00:00
Gabor Juhos
8c95385d78 ramips: raeth: use 're' instead of 'priv' everywhere
SVN-Revision: 30552
2012-02-15 18:33:38 +00:00
Gabor Juhos
b3b79365f3 ramips: raeth: force link down in ramips_phy_stop
SVN-Revision: 30550
2012-02-15 13:47:52 +00:00
Gabor Juhos
3e7b461431 ramips: raeth: serialize ramips_link_adjust calls
SVN-Revision: 30549
2012-02-15 13:47:50 +00:00
Gabor Juhos
dcb13d4098 ramips: raeth: add PHYLIB support
SVN-Revision: 30547
2012-02-15 06:47:12 +00:00
Gabor Juhos
43d1a2c3ab ramips: rt3883: enable PCI on the RT-N56U board
SVN-Revision: 30528
2012-02-14 17:32:44 +00:00
Gabor Juhos
784be92e39 ramips: rt3883: add PCI support
SVN-Revision: 30527
2012-02-14 17:32:42 +00:00
Gabor Juhos
ed79921fe5 ramips: use SoC specific irq.h
SVN-Revision: 30525
2012-02-14 17:32:40 +00:00
Gabor Juhos
99c019fb0d ramips: add preliminary support for the Asus RT-N56U board
SVN-Revision: 30498
2012-02-13 15:18:04 +00:00
Gabor Juhos
97e641a0e6 ramips: raeth: enable MDIO code for RT3883
SVN-Revision: 30497
2012-02-13 15:18:03 +00:00
Gabor Juhos
e532fa5fd4 ramips: add preliminary support for the RT3662/RT3883 SoCs
SVN-Revision: 30495
2012-02-13 15:17:59 +00:00
Gabor Juhos
388013b0ce ramips: include 'linux/module.h' in the ramips_spi driver
SVN-Revision: 30475
2012-02-12 12:52:13 +00:00
Gabor Juhos
faae4235c4 ramips: rt288x: remove per-board physmap_flash_data instances
SVN-Revision: 30474
2012-02-12 12:52:12 +00:00
Gabor Juhos
3502e2b93f ramips: rt305x: remove per-board physmap_flash_data instances
SVN-Revision: 30473
2012-02-12 12:52:10 +00:00
Gabor Juhos
323ece9474 ramips: remove yet another CONFIG_MTD_PARTITION ifdef
SVN-Revision: 30462
2012-02-11 19:37:11 +00:00
Gabor Juhos
32b9e8c750 ramips: use gpio-keys-polled instead of gpio-buttons
SVN-Revision: 30461
2012-02-11 19:37:06 +00:00
Gabor Juhos
80b40497de ramips: add MIPS platform file
SVN-Revision: 30459
2012-02-11 18:16:11 +00:00
Gabor Juhos
4e1b870f3e ramips: add MDIO bus support for RT288X
SVN-Revision: 30455
2012-02-11 16:49:56 +00:00
Gabor Juhos
8916c02b47 ramips: raeth: make debugging messages configurable
SVN-Revision: 30450
2012-02-11 15:12:10 +00:00
Gabor Juhos
aac3ad4c0e ramips: raeth: use device pointer in DMA API calls
SVN-Revision: 30449
2012-02-11 15:12:08 +00:00
Gabor Juhos
1fd8724e94 ramips: raeth: add netdev pointer to private structure
SVN-Revision: 30448
2012-02-11 15:12:06 +00:00
Gabor Juhos
c6fa11d00f ramips: raeth: cleanup DMA API usage in ramips_eth_hard_start_xmit
SVN-Revision: 30447
2012-02-11 15:12:05 +00:00
Gabor Juhos
2d055f130e ramips: raeth: unmap rx DMA address in ramips_cleanup_dma
SVN-Revision: 30446
2012-02-11 15:12:04 +00:00
Gabor Juhos
7bd7ddcf4e ramips: raeth: add rx_dma array to store the DMA address of the rx packets
SVN-Revision: 30445
2012-02-11 15:12:02 +00:00
Gabor Juhos
647af823d9 ramips: raeth: use dma_addr_t for the descriptors
SVN-Revision: 30444
2012-02-11 15:12:01 +00:00
Gabor Juhos
df5892d1f1 ramips: raeth: unmap DMA memory when a packet is received
SVN-Revision: 30443
2012-02-11 15:11:56 +00:00
Gabor Juhos
617954ca5d ramips: raeth: add a temporary pktlen variable
SVN-Revision: 30442
2012-02-11 15:11:55 +00:00
Gabor Juhos
d1d492eaf9 ramips: raeth: protect macro parameters
SVN-Revision: 30441
2012-02-11 15:11:50 +00:00
Gabor Juhos
8250692359 ramips: raeth: indicate dropped packets in stats
SVN-Revision: 30440
2012-02-11 15:11:49 +00:00
Gabor Juhos
c67adbbddb ramips: raeth: use the NUM_TX_DESC for the tx_skb array
SVN-Revision: 30439
2012-02-11 15:11:47 +00:00
Gabor Juhos
a2c8789578 ramips: use uncached address in detect_mem_size
SVN-Revision: 30438
2012-02-11 15:11:45 +00:00
Gabor Juhos
ba4c9b3a8f ramips: rt305x: remove CONFIG_MTD_PARTITION ifdefery from machine files
SVN-Revision: 30437
2012-02-11 15:11:43 +00:00
Gabor Juhos
f2dd67dc09 ramips: rt288x: remove CONFIG_MTD_PARTITION ifdefery from machine files
SVN-Revision: 30436
2012-02-11 15:11:41 +00:00
Gabor Juhos
9cde29f1a7 ramips: rt305x: add support for Accton WR6202 / SMCWBR11S-3GN
This patch adds support for the Accton WR6202 Mini 3G broadband router.
Full details for this device are available at
http://www.awbnetworks.com/products03.php?Fullkey=19.

This device is identical to the SMCWBR11S-3GN:
http://www.smc-asia.com/products03.php?Fullkey=210

It's also worth noting that this board has a GPIO line to control the
power to the USB port.

[juhosg:
 - fix checkpatch warnings,
 - reorder Kconfig entry,
 - merge the sysupgrade patch,
 - add GPL header]

Signed-off-by: Johnathan Boyce <jon.boyce@globalreach.eu.com>

SVN-Revision: 30434
2012-02-11 15:11:36 +00:00
Gabor Juhos
0430194cc3 ramips: fix compiler warning in prom.c
SVN-Revision: 30424
2012-02-10 17:38:46 +00:00
Gabor Juhos
44ed690cb3 ramips: change vlan_config for the ALFA W502U board
This change moves the WAN port into a separate VLAN.

SVN-Revision: 29969
2012-01-31 18:34:10 +00:00
Gabor Juhos
b3fdd931d1 ramips: add support for Sitecom WL-341v3 and other Sercomm IP1006RRv2 boards
This patch adds support for the Sitecom WL-341 v3 and other Sercomm
IP1006RRv2 based boards for sysupgrade support and for the initial
flash through pushbutton initiated recovery mode with the special
partition table and fixes for the quirks and things required by the
modified bootloader.

There is a known bug, Wi-Fi is not working on my board probably
because of the lack of RAM (the board only has 16MiB ram -- half of
the normal amount for non rebadged versions, but there is an empty
slot for another ram chip,) but I don't know for sure. The driver
loads but hostapd fails to load so I think it's not related to the
specific device except for the lack of RAM.

Moreover, only 7 of the 11 onboard leds are confirmed working, it
seems that one of the others is always on and the remaining ones are
connected to the wireless card leds already recognized by OpenWrt

[juhosg: reordered some parts in order to keep things sorted
alphabetically]

Signed-off-by: Marco Antonio Mauro <marcus90@gmail.com>

SVN-Revision: 29910
2012-01-26 10:44:23 +00:00
Gabor Juhos
1932a7205c ramips: add kernel support for ALL0256N
Signed-off-by: Daniel Golle <dgolle@allnet.de>

SVN-Revision: 29882
2012-01-24 11:48:45 +00:00
Gabor Juhos
9cf1d4e06e ramips: scripts updates
In this patch:

* rename Argus leds to avoid underscores
* rename Belkin F5D8235 v1 leds from f5d8234 to f5d8235
* remove Belkin F5D8235 v1 status led defined as storage led (it was
  defined as usb led earlier, just in wrong place) - it should have
  router led as in v2
* add Argus, Sparklan and Belkin F5D8235 v2 status leds
* add Belkin F5D8235 v1 and v2 usb leds
* fix Belkin F5D8235 v2 network config generation and mac address axtraction
* fix Sparklan board identification
* add Sparklan usb led (this board doesn't have usb connector by
  default and the led is hidden also but if you are going to solder
  the connector then you'll see the led too)
* add Sparklan network config generation and mac address extraction
* fix empty string test in network script and...
* ...sort case entries by the first board in the list

Signed-off-by: Roman Yeryomin <roman@advem.lv>

SVN-Revision: 29871
2012-01-23 10:23:32 +00:00
John Crispin
a2708d11e8 ramips: Rework ramips_eth to not require irqsave locking anymore
Previously the tx housekeeping was done in a spin_lock_irqsave critical
section which causes irqs to be disabled during that time. Since the
housekeeping is already prepared to be scheduled as a tasklet process
the housekeeping only in softirq context and revise the locking between
the tx path and the housekeeping tasklet by using a normal spin_lock
which in most situations will be a NOP anyway.

This makes sure that interrupts are only disabled for a short time
since in the worst case the housekeeping might have to free up to 256
skbs.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>

SVN-Revision: 29762
2012-01-17 11:23:11 +00:00
Gabor Juhos
244c322d25 ramips: rt288x: add support for the Belkin F5D8235-4 v1 board
Patch-by: Cezary Jackiewicz <cezary.jackiewicz@gmail.com>

SVN-Revision: 29617
2011-12-28 08:43:43 +00:00
Gabor Juhos
f50b02b559 ramips: rt288x: change base address and window size of flash bank 0
SVN-Revision: 29616
2011-12-28 08:43:36 +00:00
Gabor Juhos
98437278c4 ramips: rt305x: add support for the ALFA Networks W502U (R36) board
SVN-Revision: 29615
2011-12-28 08:43:32 +00:00
Gabor Juhos
723d8dd74f ramips: rt288x: add support for the Buffalo WLI-TX4-AG300N board
SVN-Revision: 29612
2011-12-27 16:56:30 +00:00
Gabor Juhos
7b1e525b56 ramips: initial support for Sitecom WL-351 v1 002
This add support for the Sitecom WL-351 v1 002.
In principle the Engenius ESR9850 should also work with this, but I
don't have the hardware to test it.

Since an external gigabit switch (RTL8366RB) is used,
I had to modify the ramips_esw driver to add a 'bypass' mode, which
just configures it to not filter the vlan tags.
Also two initialization words (FCT2 and FPA2) are set to different
values by u-boot than what the driver is using and it only seems to
work correctly when they not overridden by the driver, so I
added them to the platform specific data as reg_initval_fct2 and
reg_initval_fpa2.

With this wired lan works as expected, however I'm still having some
trouble with the wireless lan:
It only works after I rmmod & re-insmod rt2800pci and then
reconfigure it in the webinterface, but not directly after
rebooting.

The symptom of this is wpad saying:
Dec 20 15:45:09 OpenWrt daemon.info hostapd: wlan1: STA <notebookmac> IEEE 802.11: associated (aid 1)
Dec 20 15:45:09 OpenWrt daemon.info hostapd: wlan1: STA <notebookmac> WPA: pairwise key handshake completed (RSN)
Dec 20 15:45:22 OpenWrt daemon.info hostapd: wlan1: STA <notebookmac> IEEE 802.11: authenticated

But wpa_supplicant on the client saying:
Authentication with <wl351mac> timed out.

Signed-off-by: Tobias Diedrich <ranma+openwrt@tdiedrich.de>

SVN-Revision: 29604
2011-12-23 14:27:16 +00:00
Gabor Juhos
2cb946f5b4 ramips: add support for the Senao/EnGenius ESR-9753 board
Signed-off-by: Artur Wronowski <arteqw@gmail.com>

SVN-Revision: 29603
2011-12-23 14:27:10 +00:00
Gabor Juhos
03bce34384 ramips: define firmware partition for Omnima MiniEMBWiFi
Patch-by: Ivan Ignjatic <ivan@omnima.co.uk>

SVN-Revision: 29602
2011-12-23 14:27:05 +00:00
Gabor Juhos
0c38d36488 ramips: add support for Omnima MiniEMBWiFi board
This patch adds support for the Omnima MiniEMBWiFi
Ralink RT3050F based board.

Based on a patch by Ivan Ignjatic <ivan at omnima.co.uk>

SVN-Revision: 29533
2011-12-14 20:51:26 +00:00
Gabor Juhos
56c9b50006 ramips: fix argus board rootfs size
Signed-off-by: Roman Yeryomin <roman@advem.lv>

SVN-Revision: 29422
2011-12-04 15:24:57 +00:00
Gabor Juhos
62d18e9f9a ramips: fix Asus RT-N15 board support
Fix Asus RT-N15 flash partitions and make an image.

Signed-off-by: Roman Yeryomin <roman@advem.lv>

SVN-Revision: 29381
2011-12-01 22:48:42 +00:00
Gabor Juhos
2dd79d55c7 ramips: Sparklan wcr-150gn board fixes
* Fix partition sizes.
 * Add buttons and leds.
 * Register usb.
 * Remove unnecessary stuff from image Makefile
 * Fix rt2x00 eeprom extract.

Signed-off-by: Roman Yeryomin <roman@advem.lv>

SVN-Revision: 29380
2011-12-01 22:48:41 +00:00
Gabor Juhos
ee8077f0fe ramips: Support for NexAira BC2
The preconfiguration of the USB LED has benn move to the
/etc/uci-defaults/leds script. [juhosg]

Signed-off-by: Adam Porter <porter.adam at gmail.com>

SVN-Revision: 28571
2011-10-24 21:49:36 +00:00
Gabor Juhos
18452a753b ramips: fix switch-port assignment for HW550-3G
WAN is on swtich port 0 for Aztech HW550-3G.

Signed-off-by: Daniel Golle <dgolle@allnet.de>

SVN-Revision: 28570
2011-10-24 21:49:32 +00:00
Gabor Juhos
72e117ec79 ramips: rt305x: add support for the ZyXEL NBG-419N board
SVN-Revision: 28078
2011-08-22 20:41:49 +00:00
Gabor Juhos
4b96d3af2a ramips: rt305x: remove unused defines from mach-nw718.c
SVN-Revision: 28077
2011-08-22 20:41:48 +00:00
Gabor Juhos
462ca22e9c ramips: sort Makefile entries
SVN-Revision: 28076
2011-08-22 20:41:47 +00:00
Gabor Juhos
d50494f3bb ramips: sort RAMIPS_MACH_* defines
SVN-Revision: 28075
2011-08-22 20:41:45 +00:00
Gabor Juhos
f0049824b9 ramips: remove 'default [yn]' keywords from machine Kconfig entries
SVN-Revision: 28054
2011-08-19 15:55:12 +00:00
Gabor Juhos
9085b05d9e ramips: rt305x: support for wr512-3gn-like routers
Signed-off-by: Andrew Andrianov <necromant@necromant.ath.cx>

SVN-Revision: 28052
2011-08-19 15:55:10 +00:00
Gabor Juhos
46b101ad0a ramips: register usb on Belkin F5D8235 v2 and Argus ATP-52-B routers
Signed-off-by: Roman Yeryomin <roman@advem.lv>

SVN-Revision: 28051
2011-08-19 15:55:08 +00:00
Gabor Juhos
35ecf12059 ramips: rt305x: make config and factory partitions read-only on the ATP-52B
SVN-Revision: 28002
2011-08-15 18:55:48 +00:00
Gabor Juhos
169d68c98c ramips: rt305x: add dwc_otg driver
Based on a patch by Layne Edwards <ledwards@astrumtech.net>

SVN-Revision: 27997
2011-08-15 14:11:55 +00:00