It is likely firmware somewhere, but not clear if it is flashable firmware. There is most likely a charging circuit in the device, either discrete or perhaps part of the USB chipset, that handles the negotiation of draw from the USB leads. Since the N900 will charge without being booted up, the logic of charging can't be completely handled by Maemo. However, it is possible that the configuration of the charging circuit can be done through the appropriate bus from Maemo to change the behavior of the charging circuit to one that is more reliable. Edit -- Apparently there has been at least one bug related to failed detection of USB and lack of charging addressed in https://bugs.maemo.org/show_bug.cgi?id=6004This has been fixed in package kernel 2.6.28-20094603+0m5 which is part of the internal build version 2009.46-16 This appears prior to the rumored candidate firmware "PR-11" based on week 51 builds.
This has been fixed in package kernel 2.6.28-20094603+0m5 which is part of the internal build version 2009.46-16