Comment 0 for bug 1953613

Revision history for this message
Arthur Magill (arthurmagill) wrote : GPIO character device API not enabled in kernel

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.

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