Bug 38058 - Поддержка Intel Atom Z3xxx/Z8xxx
Summary: Поддержка Intel Atom Z3xxx/Z8xxx
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: kernel-image-un-def (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Vitaly Chikunov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-02-08 11:08 MSK by Сергей Трусов
Modified: 2020-05-22 22:22 MSK (History)
2 users (show)

See Also:


Attachments
Intel Atom Z3xxx/Z8xxx support for Linux 5.5 (9.18 KB, patch)
2020-03-02 12:23 MSK, Сергей Трусов
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Сергей Трусов 2020-02-08 11:08:55 MSK
В текущей конфигурации kernel-image-un-def (проверено на версии 5.4.17) на устройстве с процессором Atom Z3735F отсутствует индикация уровня заряда АКБ (контроллер AXP288), не работает Bluetooth (Realtek 8723BS).

Поддержка упомянутого железа реализована в ядре достаточно давно (навскидку, в районе 4.15) но отключена в конфигурации (не только в ALT, но и в разной мере других дистрибутивах).
Добавил нижеприведённые опции (в config-x86_64), с ними работает.
Взяты из https://github.com/jwrdegoede/linux-sunxi/blob/v5.4-footrail/.config
Часть опций предназначена для других устройств подобного класса.


CONFIG_CRC_PMIC_OPREGION=y
CONFIG_XPOWER_PMIC_OPREGION=y
CONFIG_BXT_WC_PMIC_OPREGION=y
CONFIG_CHT_WC_PMIC_OPREGION=y
CONFIG_CHT_DC_TI_PMIC_OPREGION=y
CONFIG_BT_HCIUART_BCM=y
CONFIG_REGMAP_I2C=y
CONFIG_INPUT_AXP20X_PEK=m
CONFIG_SERIAL_DEV_BUS=y
CONFIG_SERIAL_DEV_CTRL_TTYPORT=y
CONFIG_I2C=y
CONFIG_ACPI_I2C_OPREGION=y
CONFIG_I2C_CHT_WC=m
CONFIG_I2C_DESIGNWARE_CORE=y
CONFIG_I2C_DESIGNWARE_PLATFORM=y
# CONFIG_PINCTRL_SX150X is not set
CONFIG_GPIO_CRYSTAL_COVE=y
CONFIG_GPIO_WHISKEY_COVE=y
# CONFIG_AXP20X_POWER is not set
CONFIG_AXP288_CHARGER=m
CONFIG_AXP288_FUEL_GAUGE=m
# CONFIG_MFD_AS3711 is not set
# CONFIG_PMIC_ADP5520 is not set
# CONFIG_MFD_AAT2870_CORE is not set
CONFIG_MFD_AXP20X=y
CONFIG_MFD_AXP20X_I2C=y
# CONFIG_PMIC_DA903X is not set
# CONFIG_MFD_DA9052_I2C is not set
# CONFIG_MFD_DA9055 is not set
# CONFIG_HTC_I2CPLD is not set
CONFIG_INTEL_SOC_PMIC=y
CONFIG_INTEL_SOC_PMIC_BXTWC=y
CONFIG_INTEL_SOC_PMIC_CHTWC=y
# CONFIG_MFD_88PM860X is not set
# CONFIG_MFD_MAX77843 is not set
# CONFIG_MFD_MAX8925 is not set
# CONFIG_MFD_MAX8997 is not set
# CONFIG_MFD_MAX8998 is not set
# CONFIG_MFD_RC5T583 is not set
# CONFIG_MFD_SEC_CORE is not set
# CONFIG_MFD_SMSC is not set
# CONFIG_MFD_LP8788 is not set
# CONFIG_MFD_PALMAS is not set
# CONFIG_MFD_TPS65090 is not set
# CONFIG_MFD_TPS68470 is not set
# CONFIG_MFD_TPS6586X is not set
# CONFIG_MFD_TPS65910 is not set
# CONFIG_MFD_TPS80031 is not set
# CONFIG_TWL4030_CORE is not set
# CONFIG_TWL6040_CORE is not set
# CONFIG_MFD_WM8400 is not set
# CONFIG_MFD_WM831X_I2C is not set
# CONFIG_MFD_WM8350_I2C is not set
# CONFIG_REGULATOR_AXP20X is not set
CONFIG_TYPEC_WCOVE=m
CONFIG_RTC_I2C_AND_SPI=y
CONFIG_INTEL_PMC_IPC=y
CONFIG_TOUCHSCREEN_DMI=y
CONFIG_I2C_MULTI_INSTANTIATE=m
CONFIG_INTEL_ATOMISP2_PM=m
CONFIG_EXTCON_AXP288=m
CONFIG_EXTCON_INTEL_INT3496=m
CONFIG_EXTCON_INTEL_CHT_WC=m
# CONFIG_AXP20X_ADC is not set
CONFIG_AXP288_ADC=m
CONFIG_PWM_CRC=y

Насколько вероятно изменение конфигурации kernel-image-un-def? С одной стороны, 32-х разрядный UEFI-загрузчик в установленных образах предназначен как раз для данных устройств. С другой стороны, работа по улучшению поддержки оборудования со стороны ядра не окончена, для некоторых дистрибутивов собирают отдельные ядра на базе репозитория Ганса (ссылка выше).
Comment 1 Anton V. Boyarshinov 2020-02-10 14:04:31 MSK
Будет в следующей сборке ядер un-def для сизифа и p9
Comment 2 Сергей Трусов 2020-02-23 08:48:51 MSK
Обновил ядро до 5.5.5-un-def-alt1 
Действительно, изменения включены, как и обещано. Благодарю!

К сожалению, я упустил, что при переходе с ветки 5.4 на 5.5 
опция CRC_PMIC_OPREGION изменена на BYTCRC_PMIC_OPREGION
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=ed852cde25a12ea3b6fcc3afc746f773154d0bc5
и добавлена CHTCRC_PMIC_OPREGION
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=cefe6aac29ff608a244f8cc9ba6bcfe12ee9c1f3
в связи с чем они сейчас 
# CONFIG_BYTCRC_PMIC_OPREGION is not set
# CONFIG_CHTCRC_PMIC_OPREGION is not set
Comment 3 Michael Shigorin 2020-02-23 17:45:16 MSK
Сергей, раз у Вас это железо под рукой -- предлагаю также поглядывать, что там нынче с состоянием по https://bugzilla.kernel.org/show_bug.cgi?id=109051 (комментариев там за четыре года набежало больше тыщи, стоит обратить внимание на таковые jbMacAZ).  Также у меня в процессе работ по планшету на, кажется, Z3735 образовалось некоторое количество заметок -- пишите почтой, если могут пригодиться.

Ну и "добавил в конфиг" -- стоило сразу и config.diff на всякий привесить, если бага попалась на глаза майнтейнеру оперативно, то приложить его меньше труда будет, чем включать по списку.

В целом у меня тогда было своё ядро, но основную часть изменений удалось провести в un-def (особенно по мере вхождения патчей из различных *-next в mainline).
Comment 4 Сергей Трусов 2020-02-25 09:55:56 MSK
Признаться, даже не рассчитывал, что изменения окажутся приняты. Думал, придётся самому собирать какую-нибудь версию un-byt, как делал в другом месте. Но с инструментарием пока как следует не разобрался, просто подредактировал spec -- потому и создал отдельный конфиг, который scripts/kconfig/merge_config.sh сольёт с основными (к тому же, тут есть config-aarch64 и config-ppc64le, а опции для Baytrail/Сherrytrail вроде как x86-специфичны).

По поводу бага #109051 были раньше жалобы в теме про соответствующее железо http://4pda.ru/forum/index.php?showtopic=650808
но достаточно давно не наблюдаю, пришёл к выводу, что исправили.
(в комментарии 1026 jbMacAZ пишет про что-то вроде https://gitlab.freedesktop.org/drm/intel/issues/673 - когда система остаётся живой).

Основная проблема сейчас с контроллерами сенсорного экрана Silead, для которых требуется генерировать прошивку и добавлять её в drivers/platform/x86/touchscreen_dmi.c
Comment 5 Сергей Трусов 2020-03-02 12:23:17 MSK
Created attachment 8645 [details]
Intel Atom Z3xxx/Z8xxx support for Linux 5.5
Comment 6 Сергей Трусов 2020-03-02 12:29:19 MSK
Исправлена опечатка в CONFIG_BYTCRC_PMIC_OPREGION.
Опции расположены не в конце конфига, а в естественном порядке (поскольку порядок определяет приоритет).
Comment 7 Сергей Трусов 2020-03-22 08:47:03 MSK
Опции из моего первого комментария были добавлены в конец файла конфигурации и в правильном порядке. В результате в ядро 5.4 попали все без исключения.

Далее, в 5.5 одна из опций была разбита на две и переименована (CRC_PMIC_OPREGION изменена на BYTCRC_PMIC_OPREGION). Очередные изменения, вероятно, были применены через make menuconfig. В результате порядок опций нарушился и часть из них исключена из результирующего конфига из-за нарушения приоритета:

# diff -u config-5.5.5-un-def-alt1 config-5.5.10-un-def-alt1 
--- config-5.5.5-un-def-alt1    2020-02-21 09:48:20.000000000 +1000
+++ config-5.5.10-un-def-alt1   2020-03-18 21:30:46.000000000 +1000
...
 #
@@ -561,13 +561,7 @@
 CONFIG_DPTF_POWER=m
 # CONFIG_ACPI_EXTLOG is not set
 CONFIG_ACPI_ADXL=y
-CONFIG_PMIC_OPREGION=y
-# CONFIG_BYTCRC_PMIC_OPREGION is not set
-# CONFIG_CHTCRC_PMIC_OPREGION is not set
-CONFIG_XPOWER_PMIC_OPREGION=y
-CONFIG_BXT_WC_PMIC_OPREGION=y
-CONFIG_CHT_WC_PMIC_OPREGION=y
-CONFIG_CHT_DC_TI_PMIC_OPREGION=y
+# CONFIG_PMIC_OPREGION is not set
 CONFIG_ACPI_CONFIGFS=m
 CONFIG_X86_PM_TIMER=y
 # CONFIG_SFI is not set
...

То есть, на данный момент драйвера для ряда PMIC_OPREGION отключены. Поэтому в #c5 прикрепил patch, где указанная проблема устранена.
Comment 8 Michael Shigorin 2020-03-22 16:50:40 MSK
(Ответ для Сергей Трусов на комментарий #7)
> То есть, на данный момент драйвера для ряда PMIC_OPREGION отключены.
> Поэтому в #c5 прикрепил patch, где указанная проблема устранена.
Да, CONFIG_PMIC_OPREGION для новых атомов надо было включать и это было важно.
Comment 9 Сергей Трусов 2020-05-22 17:01:31 MSK
Прошу прощения за запоздалый ответ.
В ветке 5.6.*-un-def вышеупомянутые опции включены.

+CONFIG_PMIC_OPREGION=y
+CONFIG_BYTCRC_PMIC_OPREGION=y
+CONFIG_CHTCRC_PMIC_OPREGION=y
+CONFIG_XPOWER_PMIC_OPREGION=y
+CONFIG_BXT_WC_PMIC_OPREGION=y
+CONFIG_CHT_WC_PMIC_OPREGION=y
+CONFIG_CHT_DC_TI_PMIC_OPREGION=y

Насколько понимаю, вопрос можно считать решенным.
Comment 10 Michael Shigorin 2020-05-22 22:22:38 MSK
(Ответ для Michael Shigorin на комментарий #3)
> https://bugzilla.kernel.org/show_bug.cgi?id=109051
На всякий: там недавно опять шевеление было, вроде как в 5.6 наконец дошло:

--- Comment #1050 from jbMacAZ (jbmacbrodie@yahoo.com) ---
I haven't had any more freezes in kernels 5.6.6+ or 5.7-rc4.  This is without
my "patch" or kernel arguments "idle=nomwait" or "intel_idle.max_cstate=1".
Thanks to whoever found the real problem(s).  [Asus T100CHI with Z3775D]
--- http://bugzilla.kernel.org/show_bug.cgi?id=109051#c1050