** Also affects: linux-hwe-5.17 (Ubuntu)
   Importance: Undecided
       Status: New

** Changed in: linux-hwe-5.17 (Ubuntu)
       Status: New => Invalid

** Changed in: linux-hwe-5.17 (Ubuntu Jammy)
       Status: New => In Progress

** Also affects: linux-allwinner-5.17 (Ubuntu)
   Importance: Undecided
       Status: New

** Changed in: linux-allwinner-5.17 (Ubuntu)
       Status: New => Invalid

** Changed in: linux-allwinner-5.17 (Ubuntu Jammy)
       Status: New => In Progress

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux-hwe-5.17 in Ubuntu.
https://bugs.launchpad.net/bugs/1953613

Title:
  GPIO character device v1 API not enabled in kernel

Status in linux package in Ubuntu:
  Fix Committed
Status in linux-allwinner-5.17 package in Ubuntu:
  Invalid
Status in linux-hwe-5.17 package in Ubuntu:
  Invalid
Status in linux source package in Jammy:
  Fix Committed
Status in linux-allwinner-5.17 source package in Jammy:
  In Progress
Status in linux-hwe-5.17 source package in Jammy:
  In Progress

Bug description:
  [Impact]

   * The libgpiod2 library and gpiod tools shipped in Jammy don't work.

   * These tools are meant to replace the old sysfs interface and be
     a better and more efficient way to manipulate GPIOs from userspace.
     Unfortunately the latest release is still using v1 of the character
     device kernel API which is not enabled in Ubuntu kernels.

   * This is Kent Gibsons reply on the linux-gpio mailing list:

  On Tue, Jul 12, 2022 at 09:48:45AM +0200, Alexandre Ghiti wrote:
  > Hi,
  >
  > Ubuntu kernels do not enable GPIO_CDEV_V1 as it is deprecated, but the
  > libgpiod package that we ship is still based on the latest version
  > 1.6.3 which does not implement the API v2. So I'd like to update
  > libgpiod, do you have any recommendations about what branch/sha1 I
  > should use? Do you plan to make a release that implements the API v2?
  >

  Firstly, libgpiod is Bart's library so he is the authority, but this
  is my understanding...

  TLDR: You should keep GPIO_CDEV_V1 enabled.

  v1 is deprecated from a development perspective, so all new feature
  development will occur on v2, and new applications should target v2.
  Existing apps targetting v1, be that directly or via libgpiod v1.6.3,
  will require GPIO_CDEV_V1 until they migrate to v2.
  The mainline kernel will continue to support v1 while userspace
  transitions.

  libgpiod v2 is in active development, and should reach its first release
  shortly.
  Note that it is NOT a plugin replacement for v1. It has a different API,
  for similar reasons to why we had to switch in the kernel, so apps will
  need to be actively migrated.

  I wouldn't suggest making any effort to package libgpiod v2 until Bart
  makes an official release.

  Cheers,
  Kent.

  [Test Plan]

   * Run gpioinfo on a machine with exposed GPIOs and check that it lists
     the GPIOs and doesn't error with

     gpioinfo: error creating line iterator: Invalid argument

  [Where problems could occur]

   * There may be code and scripts that hasn't been tested with a working
     libgpiod2/gpiod tools and uncover latent bugs.

  [Other Info]

  Original bug text:

  The current versions of gpiod, libgpiod-dev and libgpiod2 (1.6.2-1)
  use version 1 of the GPIO character device API. However, they cannot
  work because the interface is disabled in the default kernel (tested
  with 5.13.19). After rebuilding the kernel with the option
  CONFIG_GPIO_CDEV_V1=y, the gpiod tools work as expected.

  Thanks to Marek Szuba, who reported the same bug for Gentoo
  (https://bugs.gentoo.org/807334), pointing me in the right direction.

  What I expect to happen:

  $ gpiodetect
  gpiochip0 [0-003c] (8 lines)
  $ gpioinfo
  gpiochip0 - 8 lines:
   line   0:      unnamed       unused  output  active-high
   line   1:      unnamed       unused  output  active-high
   line   2:      unnamed       unused  output  active-high
   line   3:      unnamed       unused  output  active-high
   line   4:      unnamed       unused  output  active-high
   line   5:      unnamed       unused  output  active-high
   line   6:      unnamed       unused   input  active-high
   line   7:      unnamed       unused   input  active-high
  $ gpioget gpiochip0 0
  1

  What actually happens:

  $ gpiodetect
  gpiochip0 [0-003c] (8 lines)
  $ gpioinfo
  gpioinfo: error creating line iterator: Invalid argument
  $ gpioget gpiochip0 0
  gpioget: error reading GPIO values: Invalid argument

  $ cat /proc/version_signature
  Ubuntu 5.13.0-22.22-lowlatency 5.13.19

  $ apt-cache policy libgpiod2
  libgpiod2:
    Installed: 1.6.2-1
    Candidate: 1.6.2-1
    Version table:
   *** 1.6.2-1 500
          500 http://de.archive.ubuntu.com/ubuntu impish/universe amd64 Packages
          100 /var/lib/dpkg/status

  I am testing with the onboard PCA9554A on a Fujitsu D3641-S
  motherboard.

  $ lspci | grep -i smb
  00:1f.4 SMBus: Intel Corporation Cannon Lake PCH SMBus Controller (rev 10)
  $ lspci -s 1f.4 -vvv
  00:1f.4 SMBus: Intel Corporation Cannon Lake PCH SMBus Controller (rev 10)
   DeviceName: Onboard - Other
   Subsystem: Fujitsu Technology Solutions Cannon Lake PCH SMBus Controller
   Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- 
Stepping- SERR- FastB2B- DisINTx-
   Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- 
<MAbort- >SERR- <PERR- INTx-
   Interrupt: pin A routed to IRQ 16
   Region 0: Memory at 6013106000 (64-bit, non-prefetchable) [size=256]
   Region 4: I/O ports at efa0 [size=32]
   Kernel driver in use: i801_smbus
   Kernel modules: i2c_i801
  ---
  ProblemType: Bug
  ApportVersion: 2.20.11-0ubuntu71
  Architecture: amd64
  AudioDevicesInUse:
   USER        PID ACCESS COMMAND
   /dev/snd/controlC0:  dkfz       4589 F.... pulseaudio
   /dev/snd/controlC1:  dkfz       4589 F.... pulseaudio
  CasperMD5CheckResult: unknown
  CurrentDesktop: ubuntu:GNOME
  DistroRelease: Ubuntu 21.10
  InstallationDate: Installed on 2018-11-12 (1122 days ago)
  InstallationMedia: Ubuntu 18.04.1 LTS "Bionic Beaver" - Release amd64 
(20180725)
  Lsusb:
   Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
   Bus 001 Device 003: ID 7392:a812 Edimax Technology Co., Ltd Edimax AC600 USB
   Bus 001 Device 002: ID 256f:c650 3Dconnexion CadMouse
   Bus 001 Device 004: ID 046d:c336 Logitech, Inc. Gaming Keyboard G213
   Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  NonfreeKernelModules: nvidia_modeset nvidia
  Package: linux (not installed)
  ProcFB: 0 i915drmfb
  ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-5.13.19 
root=UUID=75550043-7044-41bf-a01e-bf41b267f7d0 ro
  ProcVersionSignature: Ubuntu 5.13.0-22.22-lowlatency 5.13.19
  RelatedPackageVersions:
   linux-restricted-modules-5.13.19 N/A
   linux-backports-modules-5.13.19  N/A
   linux-firmware                   1.201.1
  RfKill:
   0: phy0: Wireless LAN
    Soft blocked: no
    Hard blocked: no
  Tags:  impish
  Uname: Linux 5.13.19 x86_64
  UpgradeStatus: Upgraded to impish on 2021-10-19 (49 days ago)
  UserGroups: sudo
  WifiSyslog:

  _MarkForUpload: True
  dmi.bios.date: 02/18/2021
  dmi.bios.release: 1.12
  dmi.bios.vendor: FUJITSU // American Megatrends Inc.
  dmi.bios.version: V5.0.0.13 R1.12.0 for D3641-S1x
  dmi.board.name: D3641-S1
  dmi.board.vendor: FUJITSU
  dmi.board.version: S26361-D3641-S1
  dmi.chassis.type: 3
  dmi.chassis.vendor: FUJITSU
  dmi.modalias: 
dmi:bvnFUJITSU//AmericanMegatrendsInc.:bvrV5.0.0.13R1.12.0forD3641-S1x:bd02/18/2021:br1.12:svnFUJITSU:pn:pvr:rvnFUJITSU:rnD3641-S1:rvrS26361-D3641-S1:cvnFUJITSU:ct3:cvr:sku:
  dmi.product.family: ESPRIMO-FTS
  dmi.sys.vendor: FUJITSU

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1953613/+subscriptions


-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to