The 2.6.21 kernel now includes a module 'berry_charge' that should properly charge your 8700 and older devices at 500mA. The newer SD-card enabled devices (8100/8300/8800/etc.) are not yet supported due to a conflict with USB mass storage - they'll figure something out I'm sure. Linux Headquarters - Kernel v2.6.21 /drivers/usb/misc/berry_charge.c
Notice it takes a param 'debug' in boolean; use:
modprobe berry_charge debug=1
...to load it and get debugging messages on your rig. I do not have an 8700 or older device to test myself, unfortunately.