That's not an easy assessment to make (unless someone has dealt with specifically this situation before) -- but more often than not, I've found such cases to be software-related. To get more detailed information on the battery, charge level, etc. you can always run "lshal | grep batt" from the command line. Look at the battery.reporting.current line, plug the phone in for 30 minutes (using a known, working, dumb charger -- i.e. don't rely on USB, etc.), then run the command again and see if it has changed. If it shows a value up to the maximum (shown on battery.reporting.design line) and it changes in that 30 minute interval, chances are, it's software-related. Note, to enable command line input, the easiest way is to enable developer mode.
I will vote AMD for president next time if I'm having any shares during next meeting.