Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in / Register
  • L linux
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 129
    • Issues 129
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 23
    • Merge requests 23
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Container Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Librem5
  • linux
  • Issues
  • #369

Closed
Open
Created Nov 13, 2021 by Sebastian Krzyszkowiak@sebastian.krzyszkowiakMaintainer

bq25890: Interrupt storms when overheated

When the phone gets hot with USB unplugged, bq25895 starts to signal NTC fault "TS Hot". It does it fast and often, making the red LED rapidly blink. The read NTC_FAULT value keeps oscillating between 2 (TS Hot) and 0 (Normal). It gets better after connecting a charger - irq storm calms down.

While looking at it, I've noticed that while overheated, bq25895 appears to send an interrupt each time ADC conversion is triggered, which is something the driver does rather often (as mentioned in #368 (closed)). There's also a kind of a feedback loop, since interrupt handler ends up calling power_supply_changed if the state has changed, which triggers further ADC conversions.

The driver explicitly disables CONV_RATE when unplugged, relying on manually triggered conversions, but enabling it manually makes the storm mostly calm down (the interrupt gets asserted only once per second) as the controller ignores writes to CONV_START in this mode and does the conversion automatically at 1Hz.

Edited Nov 13, 2021 by Sebastian Krzyszkowiak
Assignee
Assign to
Time tracking