)]}'
{
  "commit": "e79dba2aa758baa53b12756b0b13f73d74277963",
  "tree": "01bf751b044b0a28c520988ad5c5a6eb8de3c75c",
  "parents": [
    "af8d1d9119784308d9bbbde21a36849a0fc48372"
  ],
  "author": {
    "name": "Eli Lipsitz",
    "email": "elipsitz@pigweed.infra.roller.google.com",
    "time": "Fri Jan 24 08:50:15 2025 -0800"
  },
  "committer": {
    "name": "CQ Bot Account",
    "email": "pigweed-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Fri Jan 24 08:50:15 2025 -0800"
  },
  "message": "roll: third_party/pigweed pw_digital_io_mcuxpresso: Use hardware level interrupts instead of edge\n\nThis commit updates the internal implementation of\nMcuxpressoDigitalInOutInterrupt to use hardware level-sensitive\ninterrupts to implement all edge-sensitive interrupts. Previously, only\n\"kBothEdges\" interrupts were implemented with level-sensitive\ninterrupts.\n\nThe reason for this change is to work around a hardware bug around\ndeep sleep and GPIO edge interrupts on the RT500 MCU.\n\nIf, for example, a falling-edge interrupt is set, and the chip enters\ndeep-sleep while the line is low, the chip will wake up immediately (the\nwakeup signal from the GPIO block always acts as level-sensitive in\ndeep sleep). However, the edge detector in the block won\u0027t register an\nedge (as none occurred), so no interrupt will be pended in the NVIC. The\nchip will exit deep sleep, but there\u0027s nothing to do and no interrupts\npending, so the chip enters deep sleep again. All of this happens\nwithout the CPU ever actually exiting WFI and executing instructions. If\nthe line is still low when the chip enters deep sleep again, it\u0027ll\nrepeat this over and over again.\n\nThis \"edge-sensitive emulation\" works, at the cost of 2x the interrupts\n(handled internally in this class), because the system will wake up for\nthe opposing edge (for internal polarity swapping and bookkeeping), in\naddition to the one it actually cares about.\n\nOriginal-Bug: b/370770558\nTested: Tried both falling and rising interrupts, confirmed they fired\nTested: when expected.\nTested: Also enabled deep sleep and set up an falling-edge interrupt\nTested: attached to a button. Watched the PMIC_SEL0 pin in a logic\nTested: analyzer. Confirmed that before this change, pressing the\nTested: button causes rapid oscillations on PMIC_SEL0 (~5 us period).\nTested: After this change, each time the button is pressed or released\nTested: the system briefly wakes from deep sleep to service the\nTested: interrupt, but then goes back to sleep.\nOriginal-Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/261612\nPresubmit-Verified: CQ Bot Account \u003cpigweed-scoped@luci-project-accounts.iam.gserviceaccount.com\u003e\nOriginal-Revision: b2441ff1e55ad1fbd055099a1ff210f7f7e7c589\n\nRolled-Repo: https://pigweed.googlesource.com/pigweed/pigweed\nRolled-Commits: 3d1d7aec46d512..b2441ff1e55ad1\nRoll-Count: 1\nRoller-URL: https://cr-buildbucket.appspot.com/build/8724844446055083985\nGitWatcher: ignore\nCQ-Do-Not-Cancel-Tryjobs: true\nChange-Id: I0e12cb0c5574f199b54fb6ec4c6755536faf3b4a\nReviewed-on: https://pigweed-review.googlesource.com/c/pigweed/kudzu/+/262679\nCommit-Queue: Pigweed Roller \u003cpigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com\u003e\nLint: Lint 🤖 \u003candroid-build-ayeaye@system.gserviceaccount.com\u003e\nBot-Commit: Pigweed Roller \u003cpigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3d1d7aec46d5129b8c1c0ed36e8435d78109b95a",
      "old_mode": 57344,
      "old_path": "third_party/pigweed",
      "new_id": "b2441ff1e55ad1fbd055099a1ff210f7f7e7c589",
      "new_mode": 57344,
      "new_path": "third_party/pigweed"
    }
  ]
}
