• R
    bq20z75: Fix issues with present and suspend · a7d9ace4
    Rhyland Klein 提交于
    There are a few issues found around the battery not being present. If the
    battery isn't present, then a few undesirable things happen. The first was
    excessive reporting of failed properties. This was fixed by instead
    returning ENODATA for all properties other than PRESENT if the battery
    isn't present. That way the callers can identify the difference between a
    failure and the battery not being there.
    
    The next issue was in the suspend logic. It was found that if the battery
    wasn't present, then it would return a failure, preventing the system from
    going into suspend. If there is no battery present, the io is expected to
    fail, so in that case, we shouldn't return the failure and just
    acknowledge that it was expected.
    
    I also found that when a gpio was used, i didn't maintain the internal
    is_present state properly. I added a set of that to fix that.
    
    Lastly, the code to see io's fail and figure out that the battery isn't
    present when not using a gpio had a problem. In that code, it looked for
    the read to fail and if it did, then handled it. The problem is that in
    function to get the property, it first writes a value and that write can
    fail, causing the code to never reach the logic after the read. Fix is
    to move the logic till after the write.
    Signed-off-by: NRhyland Klein <rklein@nvidia.com>
    Signed-off-by: NAnton Vorontsov <cbouatmailru@gmail.com>
    a7d9ace4
bq20z75.c 17.8 KB