From 97841c03b88b2791348707f3da0ae1cfefb65f2a Mon Sep 17 00:00:00 2001 From: Melissa LeBlanc-Williams Date: Sat, 16 Aug 2025 10:29:51 -0700 Subject: [PATCH] Rollback breaking libgpiod changes from #1001 --- .../libgpiod/libgpiod_pin_2_x.py | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/adafruit_blinka/microcontroller/generic_linux/libgpiod/libgpiod_pin_2_x.py b/src/adafruit_blinka/microcontroller/generic_linux/libgpiod/libgpiod_pin_2_x.py index aa1ee18..9f12d9d 100644 --- a/src/adafruit_blinka/microcontroller/generic_linux/libgpiod/libgpiod_pin_2_x.py +++ b/src/adafruit_blinka/microcontroller/generic_linux/libgpiod/libgpiod_pin_2_x.py @@ -48,8 +48,14 @@ class Pin: """Initialize the Pin""" # Input, if not self._line_request: - line_config = gpiod.LineSettings() + self._line_request = self._chip.request_lines( + config={int(self._num): None}, + consumer=self._CONSUMER, + ) + # print("init line: ", self.id, self._line) + if mode is not None: + line_config = gpiod.LineSettings() if mode == self.IN: line_config.direction = gpiod.line.Direction.INPUT if pull is not None: @@ -62,18 +68,24 @@ class Pin: else: raise RuntimeError(f"Invalid pull for pin: {self.id}") + self._mode = self.IN + self._line_request.reconfigure_lines( + { + int(self._num): line_config, + } + ) elif mode == self.OUT: if pull is not None: raise RuntimeError("Cannot set pull resistor on output") + self._mode = self.OUT line_config.direction = gpiod.line.Direction.OUTPUT - + self._line_request.reconfigure_lines( + { + int(self._num): line_config, + } + ) else: - raise RuntimeError(f"Invalid mode for pin: {self.id}") - - self._line_request = self._chip.request_lines( - {int(self._num): line_config}, - consumer=self._CONSUMER, - ) + raise RuntimeError("Invalid mode for pin: %s" % self.id) def value(self, val=None): """Set or return the Pin Value""" -- 2.49.0