Commit graph

289 commits

Author SHA1 Message Date
Gabor Juhos
bf58ef7c6d ramips: ramips_esw: add helper function to set pvid
SVN-Revision: 24339
2010-12-08 10:15:28 +00:00
Gabor Juhos
692d379b50 ramips: ramips_esw: add helper function to set vlan members
SVN-Revision: 24338
2010-12-08 10:15:25 +00:00
Gabor Juhos
f7c3f91074 ramips: ramips_esw: add helper function to set VLAN id
SVN-Revision: 24337
2010-12-08 10:15:22 +00:00
Gabor Juhos
0d2ad7a816 ramips: ramips_esw: introduce rt305x_esw_rmw{,_raw} function
SVN-Revision: 24336
2010-12-08 10:15:16 +00:00
Gabor Juhos
7b878dde4b ramips: ramips_esw: use rt305x_esw prefix in function names
SVN-Revision: 24335
2010-12-08 10:15:14 +00:00
Gabor Juhos
0fcedc7bda ramips: ramips_esw: coding style cleanup
SVN-Revision: 24334
2010-12-08 10:15:12 +00:00
Gabor Juhos
48e6a31812 ramips: ramips_esw: add defines for switch register offsets
SVN-Revision: 24333
2010-12-08 10:15:07 +00:00
Gabor Juhos
74c13f06df ramips: ramips_esw: don't touch GPIO_PURPOSE register
It must have been set by the board initialization code.

SVN-Revision: 24332
2010-12-08 10:15:04 +00:00
Gabor Juhos
3b9a6adc7d ramips: ramips_esw: convert it to be a platform driver
SVN-Revision: 24331
2010-12-08 10:15:00 +00:00
Gabor Juhos
889729df01 ramips: ramips_esw: move hardware initialization into a separate function
SVN-Revision: 24330
2010-12-08 10:14:58 +00:00
Gabor Juhos
8957f39064 ramips: ramips_esw: use a private structure for the functions
SVN-Revision: 24329
2010-12-08 10:14:54 +00:00
Gabor Juhos
47dd3b9fea ramips: use tabs instead of spaces in mach-f5d8235-v2.c
SVN-Revision: 24268
2010-12-05 20:14:30 +00:00
Gabor Juhos
21c8d63505 ramips: add support for Belkin F5D8235 v2 board
No support for usb for now.

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

SVN-Revision: 24126
2010-11-24 10:01:23 +00:00
Gabor Juhos
64b16b9f34 ramips: Use NET_IP_ALIGN instead of hardcoding 2
Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>

SVN-Revision: 24124
2010-11-24 10:01:18 +00:00
Gabor Juhos
624cfc5c91 ramips: DMA map the correct RX skb size
The skb_reserve call prior to DMA mapping the RX skb reduced the skb
data len by 2. To not allow DMA to write behind the skb we should pass
the correct skb data len to the device.

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

SVN-Revision: 24123
2010-11-24 10:01:16 +00:00
Gabor Juhos
f833e399f2 ramips: Don't trigger BUG_ON due to skb allocation failure
Instead just drop the rx'ed frame silently and reuse the already
available buffer.

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

SVN-Revision: 24122
2010-11-24 10:01:12 +00:00
Gabor Juhos
c6e4124855 ramips: Remove unnecessary skb_put
Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>

SVN-Revision: 24121
2010-11-24 10:01:08 +00:00
Gabor Juhos
69355ee10e ramips: Allow ethernet interface to be taken down and up again
Taking the ramips ethernet interface down and up again resulted in the
driver not receiving any frames anymore. Fix this by correctly disabling
interrupts in the hw on ifdown.

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

SVN-Revision: 23243
2010-10-05 14:10:34 +00:00
Gabor Juhos
e5b081335e ramips: Ralink RT305x, support for Prolink PWH2004 (Abocom5205)
The attached patch adds a preliminary support for Prolink PWH2004 board
(Ralink RT305x based). LAN and flash appear to work. However, the USB
port and WLAN I have not managed to activate properly yet, but that
problem appears to be present with other rt305x targets as well(?).

Signed-off-by: Esa Hyytia <esa at netlab.tkk.fi>

SVN-Revision: 23129
2010-09-27 14:43:34 +00:00
Gabor Juhos
462dabc7f5 ramips: add support for Sparklan WCR-150GN board
This patch adds support for Sparklan WCR-150GN board.
Network configuration should be tweaked to make it work fully. The
reason it's not in this patch is that ramips target should be modified
to support different /etc/config/network files for different boards.

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

SVN-Revision: 22658
2010-08-15 09:43:07 +00:00
Gabor Juhos
2e45ce264d ramips: register ethernet device on the RT-N15
SVN-Revision: 22213
2010-07-15 19:45:46 +00:00
Gabor Juhos
c2ebadc504 ramips: add generic ethernet device for the RT288x
SVN-Revision: 22212
2010-07-15 19:45:43 +00:00
Gabor Juhos
0d8c036e56 ramips: add mdio_cfg configuration for the ethernet driver
SVN-Revision: 22211
2010-07-15 19:45:40 +00:00
Gabor Juhos
d14e9e706e ramips: Fix bridging in ramips ethernet driver
Bridging between the ramips ethernet driver and rt2800pci was somewhat
broken. Frames received by the ethernet driver which were passed to the
wifi driver for transmission were sometimes corrupted or sent out with
huge delays.

The reason for this is the missing assignment of skb->tail in the ramips
ethernet driver's rx path resulting in skb->tail pointing to skb->data.
Since skb->tail is used by mac80211 it writes into skb->data which messes
up the frames content.

Fix this by using skb_put to correctly set skb->len and skb->tail.

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

SVN-Revision: 22172
2010-07-13 16:52:07 +00:00
Gabor Juhos
27375c5139 ramips: protect GPIO register access with a spinlock
SVN-Revision: 22171
2010-07-13 16:52:04 +00:00
John Crispin
971b7ff50e Fix ramips build when CONFIG_RALINK_DEV_GPIO_BUTTONS is not set.
Signed-off-by: Helmut Schaa

SVN-Revision: 21643
2010-05-31 11:57:32 +00:00
Gabor Juhos
c24397b385 ramips: merge slab patch
SVN-Revision: 21607
2010-05-28 19:45:28 +00:00
Gabor Juhos
7ac21ada55 ramips: use COMMAND_LINE_SIZE directly
SVN-Revision: 21606
2010-05-28 19:45:24 +00:00
Gabor Juhos
60cbdbb686 ramips: use KEY_RESTART and KEY_WPS_BUTTON code for the appropriate buttons
SVN-Revision: 21083
2010-04-22 09:25:37 +00:00
Gabor Juhos
a423c3abee ramips: annotate device register function prototypes with __init
SVN-Revision: 20627
2010-03-31 08:40:28 +00:00
Gabor Juhos
a9f313edea ramips: register wifi device for the RT2880 based boards
SVN-Revision: 20625
2010-03-31 08:40:23 +00:00
Gabor Juhos
9f3d673dbc ramips: add wifi device for the RT2880 as well
SVN-Revision: 20624
2010-03-31 08:40:20 +00:00
Gabor Juhos
1c25cfcde0 ramips: register wifi device on the rt305x based boards
SVN-Revision: 20616
2010-03-30 21:24:10 +00:00
John Crispin
6f4052abe0 The ralink rt305x board has a wireless card that can be used with the rt2800pci driver (it does not work yet but basically should). Hence, register the appropriate platform device to allow developing/testing the rt2800pci driver. Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
SVN-Revision: 20599
2010-03-30 12:04:05 +00:00
John Crispin
3ad14f304e Fix the base address of the wireless card. Otherwise it is not possible to register a platform wireless device as it overlaps with something else. Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
SVN-Revision: 20596
2010-03-30 10:06:05 +00:00
Gabor Juhos
4267623e2e ramips_eth: cleanup mac_address changing
SVN-Revision: 19464
2010-01-31 17:56:36 +00:00
Gabor Juhos
b16aaf5fac ramips_eth: update register offsets
SVN-Revision: 19463
2010-01-31 17:56:33 +00:00
Gabor Juhos
72b08b729a ramips_eth: pass sys_clk via platform_data
SVN-Revision: 19462
2010-01-31 17:56:30 +00:00
Gabor Juhos
9ab88ce62d ramips_eth: add helper functions to {ed,dis}able interrupts
SVN-Revision: 19446
2010-01-31 12:48:53 +00:00
Gabor Juhos
224edd2575 ramips_eth: remove unnecessary typecasts
SVN-Revision: 19445
2010-01-31 12:48:51 +00:00
Gabor Juhos
8aceaf96be ramips_eth: simplify tx_next computation
SVN-Revision: 19444
2010-01-31 12:48:48 +00:00
Gabor Juhos
21b06bd2c0 ramips_eth: simplify tx descriptor initialization
SVN-Revision: 19443
2010-01-31 12:48:46 +00:00
Gabor Juhos
d0fb66e3a4 ramips_eth: pass 'raeth_priv' struct directly to dma specific functions
SVN-Revision: 19442
2010-01-31 12:48:43 +00:00
Gabor Juhos
f0be6ab20c ramips_eth: convert to use netdev_ops
SVN-Revision: 19440
2010-01-31 12:48:38 +00:00
Gabor Juhos
d37975f6b2 ramips_eth: fix invalid register writes
SVN-Revision: 19417
2010-01-30 15:26:02 +00:00
Gabor Juhos
43e1dd85c2 ramips_eth: move memset call out from the loop
SVN-Revision: 19416
2010-01-30 15:25:59 +00:00
Gabor Juhos
ea4ce3b6fd ramips_eth: header file cleanup
SVN-Revision: 19415
2010-01-30 15:25:57 +00:00
Gabor Juhos
67cd819da6 ramips_eth: coding style cleanup
SVN-Revision: 19414
2010-01-30 15:25:55 +00:00
Gabor Juhos
a4e85bbceb ramips: register gpio buttons on the Fonera 2.0N board
SVN-Revision: 19413
2010-01-30 15:25:52 +00:00
Gabor Juhos
8823482a02 ramips: register gpio buttons on the WHR-G300N board
SVN-Revision: 19412
2010-01-30 15:25:49 +00:00
Gabor Juhos
35f47a3654 ramips: register gpio buttons on the V22RW-2x2 board
SVN-Revision: 19411
2010-01-30 15:25:47 +00:00
Gabor Juhos
30a397fd5e ramips: register gpio buttons on the DIR-300 revB board
SVN-Revision: 19410
2010-01-30 15:25:44 +00:00
Gabor Juhos
f9b053e87f ramips: fix wrong base addresses for the RT288x
SVN-Revision: 19409
2010-01-30 15:25:41 +00:00
Gabor Juhos
8448caa6ad ramips: include 'linux/leds.h' from 'dev-gpio-leds.h'
SVN-Revision: 19408
2010-01-30 15:25:36 +00:00
Gabor Juhos
94c9590e91 ramips: rename dev_gpio_leds.h to dev-gpio-leds.h
SVN-Revision: 19407
2010-01-30 15:25:33 +00:00
Gabor Juhos
55185915de ramips: cleanup WZR-AGL300NH board support file
SVN-Revision: 19406
2010-01-30 15:25:29 +00:00
Gabor Juhos
0530dd9849 ramips: register gpio-buttons on the RT-N15 board
SVN-Revision: 19405
2010-01-30 15:25:25 +00:00
Gabor Juhos
9327f02b7b ramips: add common gpio-buttons device
SVN-Revision: 19404
2010-01-30 15:25:20 +00:00
Gabor Juhos
4af1f533bb ramips: register rtl8366s device on the RT-N15 board
SVN-Revision: 19403
2010-01-30 15:25:16 +00:00
Gabor Juhos
e2dde81ead ramips: sanitize return value of ramips_gpio_get
SVN-Revision: 19401
2010-01-30 15:25:08 +00:00
Gabor Juhos
af9f40e60d ramips: update mips multi-machine stuff
SVN-Revision: 19400
2010-01-30 15:25:03 +00:00
Jo-Philipp Wich
6351d88e29 add initial support for the WZR-AGL300NH - patch by Joonas Lahtinen <joonas.lahtinen@gmail.com>
SVN-Revision: 19321
2010-01-24 23:31:49 +00:00
Gabor Juhos
b624dec41b ramips: register ethernet device on the WHR-G300N and V22RW-2x2 boards
SVN-Revision: 18229
2009-10-30 15:15:41 +00:00
John Crispin
9364f83dbc missing header file changes, and fix mtu value
SVN-Revision: 18220
2009-10-30 09:18:40 +00:00
John Crispin
ff5deeef08 fixes rx path for eth, spinlock it, increases buffer size, board now survives ping -f
SVN-Revision: 18212
2009-10-29 21:08:11 +00:00
John Crispin
135111a05b hopefully fixes dma issues seen on ethernet driver when under high load
SVN-Revision: 18203
2009-10-29 12:51:45 +00:00
Gabor Juhos
bc59e3da51 ramips: move 'arch/mips/include/asm/mach-ralink/eth.h' to 'drivers/net/ramips_eth.h'
SVN-Revision: 18176
2009-10-26 17:17:51 +00:00
Gabor Juhos
5dd653a6bd ramips: use definitions from rt305x_regs, and nuke the duplicated ones
SVN-Revision: 18175
2009-10-26 17:17:48 +00:00
Gabor Juhos
c170980c4f ramips: move ramips_eth_platform_data into a separate file
SVN-Revision: 18174
2009-10-26 17:17:45 +00:00
Gabor Juhos
b98fa096a6 ramips: request_irq prior to dma allocation, and handle the case if it fails
SVN-Revision: 18173
2009-10-26 17:17:42 +00:00
Gabor Juhos
08f77d2e7e ramips: add error handling to ramips_alloc_dma
SVN-Revision: 18172
2009-10-26 17:17:39 +00:00
Gabor Juhos
941c1dae2c ramips: free allocated skbs in ramips_cleanup_dma
SVN-Revision: 18171
2009-10-26 17:17:37 +00:00
Gabor Juhos
82cc25d5f0 ramips: add ramips_setup_dma helper to the ethernet driver
SVN-Revision: 18170
2009-10-26 17:17:34 +00:00
Gabor Juhos
f69b042df9 ramips: add ramips_cleanup_dma helper
SVN-Revision: 18169
2009-10-26 17:17:29 +00:00
Gabor Juhos
defb7c0059 ramips: remove unnecessary includes in the ethernet driver
SVN-Revision: 18168
2009-10-26 17:17:26 +00:00
Gabor Juhos
36cb733d4f ramips: fix dma api usage in the ethernet driver
SVN-Revision: 18167
2009-10-26 17:17:22 +00:00
Gabor Juhos
69a3298ab5 ramips: use resource to pass irq and base address to the ethernet driver
SVN-Revision: 18166
2009-10-26 17:17:18 +00:00
Gabor Juhos
7c7f004875 ramips: add error-path handling to the ramips_eth_plat_probe
SVN-Revision: 18165
2009-10-26 17:17:13 +00:00
John Crispin
f1ad6d3768 fixes licenses
SVN-Revision: 18152
2009-10-25 17:41:01 +00:00
John Crispin
6f63d7baf2 clean up dma api of ethernet driver
SVN-Revision: 18150
2009-10-25 16:58:00 +00:00
John Crispin
9126be5b6e fixes dma bug in eth driver, that was caused under high net load. the dma ring was not initialized on time
SVN-Revision: 18149
2009-10-25 14:34:55 +00:00
Gabor Juhos
984fe7992a ramips: nuke net_device stats from the private data of the ethernet driver
SVN-Revision: 18147
2009-10-25 09:37:30 +00:00
Gabor Juhos
ec836476b0 ramips: remove unnecessary type-castings in the ethernet driver
SVN-Revision: 18146
2009-10-25 09:37:27 +00:00
Gabor Juhos
ac92dc42d4 ramips: change debug message levels, and add missing LFs
SVN-Revision: 18145
2009-10-25 09:37:24 +00:00
Gabor Juhos
0fe967f6e6 ramips: make ethernet fuctions static
SVN-Revision: 18144
2009-10-25 09:37:21 +00:00
Gabor Juhos
7af7711f9f ramips: register ethernet device on the DIR-300 board
SVN-Revision: 18143
2009-10-25 09:37:17 +00:00
Gabor Juhos
2ad69183a8 ramips: change prom code to accept 'board=FOOBAR' from the command line
SVN-Revision: 18142
2009-10-25 07:10:16 +00:00
Gabor Juhos
d681005ce3 ramips: modify {read,write}_config helpers
SVN-Revision: 18141
2009-10-25 07:10:14 +00:00
Gabor Juhos
ebde2e4c90 ramips: nuke config_access helper
SVN-Revision: 18140
2009-10-25 07:10:11 +00:00
John Crispin
c23f92244c fixes dma hangups in eth
SVN-Revision: 18139
2009-10-25 00:11:08 +00:00
John Crispin
eff75d868b make ethernet a platform device
SVN-Revision: 18135
2009-10-24 20:58:41 +00:00
John Crispin
5c399c6f20 missing define to make mach for fonera20n work
SVN-Revision: 18134
2009-10-24 20:57:59 +00:00
John Crispin
81e5a2d14b make default llll/w vlan setup in esw
SVN-Revision: 18133
2009-10-24 20:56:31 +00:00
John Crispin
e4e4aa90d3 adds mach type for fonera20n
SVN-Revision: 18132
2009-10-24 20:55:36 +00:00
John Crispin
d95163658c adds ethernet driver, esw needs to be moved to swconfig, driver is missing rt288x support, not a platform device yet
SVN-Revision: 18128
2009-10-23 16:51:51 +00:00
Gabor Juhos
279c5dad25 ramips: add preliminary support for the DIR-300 revB board
SVN-Revision: 18058
2009-10-18 08:48:07 +00:00
Gabor Juhos
3b9cb8b673 ramips: fix return value in 'pcibios_map_irq' in the rt288x pci code
SVN-Revision: 17975
2009-10-07 11:37:12 +00:00
Gabor Juhos
13be9155c5 ramips: remove obsolete 'pcibios_fixups' from the rt288x pci code
SVN-Revision: 17974
2009-10-07 11:37:10 +00:00
Gabor Juhos
f2470f7590 ramips: add rt2880_pci_get_cfgaddr helper
SVN-Revision: 17973
2009-10-07 11:37:07 +00:00
Gabor Juhos
fe360a232b ramips: use switch statement instead of multiple if-else-if in the rt288x pci code
SVN-Revision: 17972
2009-10-07 11:37:03 +00:00
Gabor Juhos
37f5a64938 ramips: protect rt288x pci config accesses with a spinlock
SVN-Revision: 17971
2009-10-07 11:37:00 +00:00
Gabor Juhos
84e2f22465 ramips: make rt2880_pci_base static
SVN-Revision: 17970
2009-10-07 11:36:57 +00:00
Gabor Juhos
ca82f13970 ramips: define some magic values in the rt288x pci code
SVN-Revision: 17969
2009-10-07 11:36:53 +00:00
Gabor Juhos
6a54d033fc ramips: add copyright header to the rt288x pci code
SVN-Revision: 17968
2009-10-07 11:36:49 +00:00
Gabor Juhos
7f3d685eec ramips: make {read,write}_config static
SVN-Revision: 17920
2009-10-05 18:44:24 +00:00
Gabor Juhos
2739177201 ramips: convert 'config_access' function to void
SVN-Revision: 17919
2009-10-05 18:44:22 +00:00
Gabor Juhos
5b07caf121 ramips: add register access functions into the rt288x pci code
SVN-Revision: 17918
2009-10-05 18:44:19 +00:00
Gabor Juhos
0f51ed2723 ramips: fix RT2880_PCI_BASE definition
SVN-Revision: 17917
2009-10-05 18:44:16 +00:00
Gabor Juhos
5a37945317 ramips: rt288x pci code cleanup
SVN-Revision: 17916
2009-10-05 18:44:13 +00:00
Gabor Juhos
0e0e945e33 ramips: cleanup coding-style of the rt288x pci code
SVN-Revision: 17915
2009-10-05 18:44:10 +00:00
Gabor Juhos
6ceea98b0a ramips: merge ops-rt288x.c and rt288x_pci.h into pci-rt288x.c
SVN-Revision: 17914
2009-10-05 18:44:06 +00:00
Gabor Juhos
c8489ba3f8 ramips: remove unneccesary ifdefs from the rt288x pci code
SVN-Revision: 17862
2009-10-05 09:06:16 +00:00
Gabor Juhos
e555522b95 ramips: remove unneccesary includes from the rt288x pci code
SVN-Revision: 17861
2009-10-05 09:06:13 +00:00
Gabor Juhos
f992f34277 ramips: add Kbuild patch for the rt288x pci code, and fix invalid header file paths
SVN-Revision: 17860
2009-10-05 09:06:10 +00:00
John Crispin
a70ef0c337 adds pci support for rt288x
SVN-Revision: 17855
2009-10-04 19:53:17 +00:00
Gabor Juhos
28250aaa31 add missing GPIO register offsets
SVN-Revision: 17513
2009-09-04 15:08:29 +00:00
Gabor Juhos
8d8a4e7274 add GPIO configuration feature
SVN-Revision: 17512
2009-09-04 15:08:26 +00:00
Gabor Juhos
b5e6d76dea fix a typo
SVN-Revision: 17474
2009-09-02 15:31:03 +00:00
Gabor Juhos
09677bf748 initial support for the AP-R3052-V22RW-2X2 board
SVN-Revision: 17473
2009-09-02 15:31:00 +00:00
Gabor Juhos
c4385d3282 use common code for early_serial setup
SVN-Revision: 17467
2009-09-02 12:44:17 +00:00
Gabor Juhos
73b20f8194 share prom code
SVN-Revision: 17466
2009-09-02 10:04:12 +00:00
Gabor Juhos
552e298755 initial support for Asus RT-N15
SVN-Revision: 17463
2009-09-01 19:34:27 +00:00
Gabor Juhos
01657335b9 cache_line_size is 16 on rt288x
SVN-Revision: 17462
2009-09-01 19:34:24 +00:00
Gabor Juhos
2dbe6d0e6f remove unused *_MACH_GENERIC config options
SVN-Revision: 17461
2009-09-01 19:34:21 +00:00
Gabor Juhos
298202afb8 share machine registration code
SVN-Revision: 17456
2009-08-31 18:53:34 +00:00
Gabor Juhos
aec7426483 use common get_system_type function
SVN-Revision: 17455
2009-08-31 18:53:31 +00:00
Gabor Juhos
f4afb9a4f9 share memory size detection code
SVN-Revision: 17454
2009-08-31 18:53:26 +00:00
Gabor Juhos
3cc0bc9038 add common setup code
SVN-Revision: 17453
2009-08-31 18:53:22 +00:00
Gabor Juhos
4dd57199a2 rt288x: readd RT2880_INTC_BASE definition
SVN-Revision: 17452
2009-08-31 15:35:54 +00:00
Gabor Juhos
f62337417c rt288x: fix serial console
SVN-Revision: 17450
2009-08-31 09:34:07 +00:00
Gabor Juhos
ff92681121 register GPIO LEDs on the WHR-G300N board
SVN-Revision: 17449
2009-08-31 09:14:18 +00:00
Gabor Juhos
19a462c9e3 add common GPIO LED support
SVN-Revision: 17448
2009-08-31 09:14:14 +00:00
Gabor Juhos
73ef265227 fix GPIOLIB support
SVN-Revision: 17446
2009-08-31 08:29:19 +00:00
Gabor Juhos
15b832c0b7 rt288x: fix build error
SVN-Revision: 17444
2009-08-30 20:13:13 +00:00
Gabor Juhos
9eaea39ae5 platform.h is rt288x specific, move it
SVN-Revision: 17443
2009-08-30 20:13:10 +00:00
Gabor Juhos
8049111b19 rt288x: generic machine code cleanup
SVN-Revision: 17442
2009-08-30 19:55:55 +00:00
Gabor Juhos
d034b4246e header cleanup
SVN-Revision: 17441
2009-08-30 19:55:53 +00:00
Gabor Juhos
6b482c872b share common INTC code
SVN-Revision: 17440
2009-08-30 19:15:58 +00:00
Gabor Juhos
051c44e0c5 initial support for RT288x/RT305x
SVN-Revision: 17439
2009-08-30 19:15:51 +00:00