docs: def read32(self, offset):
          """Read 32-bits from the specified `offset` in bytes, relative to the
          base physical address of the MMIO region.
  
          Args:
              offset (int, long): offset from base physical address, in bytes.
  
          Returns:
              int: 32-bit value read.
  
          Raises:
              TypeError: if `offset` type is invalid.
              ValueError: if `offset` is out of bounds.
  
          """
          if not isinstance(offset, (int, long)):
              raise TypeError("Invalid offset type, should be integer.")
  
          offset = self._adjust_offset(offset)
          self._validate_offset(offset, 4)
          return struct.unpack("=L", self.mapping[offset:offset + 4])[0]