distribution icon indicating copy to clipboard operation
distribution copied to clipboard

[kernel] gpio_crystalcove fails to initialize

Open jokubasver opened this issue 1 year ago • 0 comments

On Baytrail based tablets, there is an issue with the init order of GPIO/PWM drivers for the Crystal Cove PMIC chip. Crystal Cove has to be initialized before i915 in order for the Crystal Cove to work, which controls the brightness and power of the LCD display.

The error is as follows:

i915 0000:00:02.0: cannot find GPIO chip gpio_crystalcove, deferring
i915 0000:00:02.0: [drm] *ERROR* Failed to own gpio for panel control
i915 0000:00:02.0: [drm] *ERROR* [CONNECTOR:86:DSI-1] Failed to get the PMIC PWM chip

Because of this issue, LCD brightness cannot be changed, and the display does not turn off when in sleep (backlight keeps running).

Check the following bug reports here, here and here.

Since the init order can't be easily changed at the moment, the fix is to make sure that the Crystal Cove GPIO/PWM drivers are built-in, and i915 is built as a module, so that PMIC initializes before i915.

On Clear Linux kernel, Crystal Cove GPIO is built as a module, Crystal Cove PWM is built in, and i915 is built as a module. This causes a bad init sequence of the drivers.

Please consider changing CONFIG_GPIO_CRYSTAL_COVE from =m to =y, and CONFIG_DRM_I915 from =y to =m in order to fix this issue.

jokubasver avatar Dec 01 '24 10:12 jokubasver