Config and device tree updates for the Librem 5 devkit
Subsystems (2)
v2 cover Config and device tree updates for the Librem 5 devkit
This enables more components to get a working display, panel, audio and sensors. It also updates some device tree bits to make mainline boot.
I've skipped wifi (which needs some more driver work) and devfreq (since Martin is working on that).
The config changes don't depend on the DT parts so could be applied independently. The series was tested against next-20201214 and i made sure the defconfig changes also apply on top of shawnguo/imx/defconfig.
changes from v1:
- as per review comments by Krzysztof Kozlowski <[email protected]>
https://lore.kernel.org/linux-arm-kernel/20201215091729.GC29321@kozik-lap/
- describe hardware parts not config options
- rework commit messages to give more details
- don't keep buck3 always on but rather make sure the board doesn't hang when resuming the gpu power domain. There's a generic fix pending for that helps all boards
https://lore.kernel.org/lkml/[email protected]/
To: Rob Herring <[email protected]>,Shawn Guo <[email protected]>,Sascha Hauer <[email protected]>,Pengutronix Kernel Team <[email protected]>,Fabio Estevam <[email protected]>,NXP Linux Team <[email protected]>,Catalin Marinas <[email protected]>,Will Deacon <[email protected]>,Martin Kepplinger <[email protected]>,Angus Ainslie <[email protected]>,Krzysztof Kozlowski <[email protected]>,Bjorn Andersson <[email protected]>,Li Yang <[email protected]>,Geert Uytterhoeven <[email protected]>,Vinod Koul <[email protected]>,Anson Huang <[email protected]>,Michael Walle <[email protected]>,[email protected],[email protected],[email protected],[email protected]
Guido Günther (4):
arm64: defconfig: Enable Librem 5 devkit components
arm64: dts: imx8mq-librem5-devkit: Tweak pmic regulators
arm64: dts: imx8mq-librem5-devkit: Disable snvs_rtc
arm64: dts: imx8mq-librem5-devkit: Drop custom clock settings
.../dts/freescale/imx8mq-librem5-devkit.dts | 20 ++++++++++++++----- arch/arm64/configs/defconfig | 8 ++++++++ 2 files changed, 23 insertions(+), 5 deletions(-)
Signature · 1 line
2.29.2
PATCH v2 1/4 arm64: defconfig: Enable Librem 5 devkit components
The Librem 5 devkit is based on NXP's i.MX8MQ. Schematics are at
https://source.puri.sm/Librem5/dvk-mx8m-bsb.
This enables drivers for the following hardware components that aren't yet enabled in defconfig:
- Goodix GT5688 touchscreen
- iMX8MQ's PWM for the LCD backlight
- TI BQ25896 charge controller
- NXP SGTL5000 audio codec
- Microcrystal RV-4162-C7 RTC
- magnetometer: CONFIG_IIO_ST_MAGN_3AXIS
- the SIMCom SIM7100E/A modem
--- arch/arm64/configs/defconfig | 8 ++++++++ 1 file changed, 8 insertions(+)
arch/arm64/configs/defconfig +8 -0
@@ -417,6 +417,7 @@ CONFIG_KEYBOARD_IMX_SC_KEY=m CONFIG_KEYBOARD_CROS_EC=y CONFIG_INPUT_TOUCHSCREEN=y CONFIG_TOUCHSCREEN_ATMEL_MXT=m +CONFIG_TOUCHSCREEN_GOODIX=m CONFIG_TOUCHSCREEN_EDT_FT5X06=m CONFIG_INPUT_MISC=y CONFIG_INPUT_PM8941_PWRKEY=y
@@ -566,6 +567,7 @@ CONFIG_BATTERY_SBS=m CONFIG_BATTERY_BQ27XXX=y CONFIG_SENSORS_ARM_SCMI=y CONFIG_BATTERY_MAX17042=m +CONFIG_CHARGER_BQ25890=m CONFIG_CHARGER_BQ25980=m CONFIG_SENSORS_ARM_SCPI=y CONFIG_SENSORS_LM90=m
@@ -747,6 +749,7 @@ CONFIG_SND_SOC_FSL_ASRC=m CONFIG_SND_SOC_FSL_MICFIL=m CONFIG_SND_SOC_FSL_EASRC=m CONFIG_SND_IMX_SOC=m +CONFIG_SND_SOC_IMX_SGTL5000=m CONFIG_SND_SOC_IMX_SPDIF=m CONFIG_SND_SOC_IMX_AUDMIX=m CONFIG_SND_MESON_AXG_SOUND_CARD=m
@@ -772,6 +775,7 @@ CONFIG_SND_SOC_TEGRA210_ADMAIF=m CONFIG_SND_SOC_AK4613=m CONFIG_SND_SOC_ES7134=m CONFIG_SND_SOC_ES7241=m +CONFIG_SND_SOC_GTM601=m CONFIG_SND_SOC_PCM3168A_I2C=m CONFIG_SND_SOC_SIMPLE_AMPLIFIER=m CONFIG_SND_SOC_TAS571X=m
@@ -807,6 +811,7 @@ CONFIG_USB_ISP1760=y CONFIG_USB_SERIAL=m CONFIG_USB_SERIAL_CP210X=m CONFIG_USB_SERIAL_FTDI_SIO=m +CONFIG_USB_SERIAL_OPTION=m CONFIG_USB_HSIC_USB3503=y CONFIG_NOP_USB_XCEIV=y CONFIG_USB_GADGET=y
@@ -876,6 +881,7 @@ CONFIG_RTC_DRV_HYM8563=m CONFIG_RTC_DRV_MAX77686=y CONFIG_RTC_DRV_RK808=m CONFIG_RTC_DRV_PCF85363=m +CONFIG_RTC_DRV_M41T80=m CONFIG_RTC_DRV_RX8581=m CONFIG_RTC_DRV_RV8803=m CONFIG_RTC_DRV_S5M=y
@@ -1040,11 +1046,13 @@ CONFIG_IIO_ST_LSM6DSX=m CONFIG_IIO_CROS_EC_LIGHT_PROX=m CONFIG_SENSORS_ISL29018=m CONFIG_VCNL4000=m +CONFIG_IIO_ST_MAGN_3AXIS=m CONFIG_IIO_CROS_EC_BARO=m CONFIG_MPL3115=m CONFIG_PWM=y CONFIG_PWM_BCM2835=m CONFIG_PWM_CROS_EC=m +CONFIG_PWM_IMX27=m CONFIG_PWM_MESON=m CONFIG_PWM_RCAR=m CONFIG_PWM_ROCKCHIP=y
Signature · 1 line
2.29.2
Re: [PATCH v2 1/4] arm64: defconfig: Enable Librem 5 devkit components
Quoted 14 lines · Guido Günther
The Librem 5 devkit is based on NXP's i.MX8MQ. Schematics are at
https://source.puri.sm/Librem5/dvk-mx8m-bsb.This enables drivers for the following hardware components that aren't yet enabled in defconfig:
- Goodix GT5688 touchscreen
- iMX8MQ's PWM for the LCD backlight
- TI BQ25896 charge controller
- NXP SGTL5000 audio codec
- Microcrystal RV-4162-C7 RTC
- magnetometer:CONFIG_IIO_ST_MAGN_3AXIS
- the SIMCom SIM7100E/A modem
Quoted 4 lines
Signed-off-by Guido Günther <[email protected]>--- arch/arm64/configs/defconfig | 8 ++++++++ 1 file changed, 8 insertions(+)
Best regards,
Krzysztof
PATCH v2 2/4 arm64: dts: imx8mq-librem5-devkit: Tweak pmic regulators
In reply to Guido GüntherBUCK3 needs a regulator-enable-ramp-delay since otherwise the board freezes on etnaviv probe. With this pgc_gpu suspends and resumes as expected. This must have been always broken since gpcv2 support was enabled.
We also enable all the regulators needed for Deep Sleep Mode (DSM) as always-on:
- VDD_SOC supplied by BUCK1
- VDDA_1P8 supplied by BUCK7
- VDDA_0P9 supplied by LDO4
- VDDA_DRAM supplied by LDO3
- NVCC_DRAM supplied by BUCK8
- VDD_DRAM supplied by BUCK5
Finally LDO5 and LDO6 provide VDD_PHY_1V8 and VDD_PHY_0V9 used by the SOCs MIPI, HDMI and USB IP cores. While we would in theory be able to turn these off (and I've tested that or LDO6 and mipi with USB disabled) it is of little practical use atm since USB doesn't runtime suspend so let's revisit this at a later point.
--- .../boot/dts/freescale/imx8mq-librem5-devkit.dts | 11 +++++++++++ 1 file changed, 11 insertions(+)
arch/arm64/boot/dts/freescale/imx8mq-librem5-devkit.dts +11 -0
@@ -298,6 +298,7 @@ buck1_reg: BUCK1 { regulator-min-microvolt = <700000>; regulator-max-microvolt = <1300000>; regulator-boot-on; + regulator-always-on; regulator-ramp-delay = <1250>; rohm,dvs-run-voltage = <900000>; rohm,dvs-idle-voltage = <850000>;
@@ -319,6 +320,7 @@ buck3_reg: BUCK3 { regulator-min-microvolt = <700000>; regulator-max-microvolt = <1300000>; regulator-boot-on; + regulator-enable-ramp-delay = <200>; rohm,dvs-run-voltage = <900000>; };
@@ -334,6 +336,7 @@ buck5_reg: BUCK5 { regulator-min-microvolt = <700000>; regulator-max-microvolt = <1350000>; regulator-boot-on; + regulator-always-on; }; buck6_reg: BUCK6 {
@@ -341,6 +344,7 @@ buck6_reg: BUCK6 { regulator-min-microvolt = <3000000>; regulator-max-microvolt = <3300000>; regulator-boot-on; + regulator-always-on; }; buck7_reg: BUCK7 {
@@ -348,6 +352,7 @@ buck7_reg: BUCK7 { regulator-min-microvolt = <1605000>; regulator-max-microvolt = <1995000>; regulator-boot-on; + regulator-always-on; }; buck8_reg: BUCK8 {
@@ -355,6 +360,7 @@ buck8_reg: BUCK8 { regulator-min-microvolt = <800000>; regulator-max-microvolt = <1400000>; regulator-boot-on; + regulator-always-on; }; ldo1_reg: LDO1 {
@@ -380,6 +386,7 @@ ldo3_reg: LDO3 { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <3300000>; regulator-boot-on; + regulator-always-on; }; ldo4_reg: LDO4 {
@@ -387,12 +394,14 @@ ldo4_reg: LDO4 { regulator-min-microvolt = <900000>; regulator-max-microvolt = <1800000>; regulator-boot-on; + regulator-always-on; }; ldo5_reg: LDO5 { regulator-name = "ldo5"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <3300000>; + regulator-always-on; }; ldo6_reg: LDO6 {
@@ -400,6 +409,7 @@ ldo6_reg: LDO6 { regulator-min-microvolt = <900000>; regulator-max-microvolt = <1800000>; regulator-boot-on; + regulator-always-on; }; ldo7_reg: LDO7 {
@@ -407,6 +417,7 @@ ldo7_reg: LDO7 { regulator-min-microvolt = <1800000>; regulator-max-microvolt = <3300000>; regulator-boot-on; + regulator-always-on; }; }; };
Signature · 1 line
2.29.2
Re: [PATCH v2 2/4] arm64: dts: imx8mq-librem5-devkit: Tweak pmic regulators
Quoted 21 lines · Guido Günther
BUCK3 needs a regulator-enable-ramp-delay since otherwise the board freezes on etnaviv probe. With this
pgc_gpususpends and resumes as expected. This must have been always broken since gpcv2 support was enabled.We also enable all the regulators needed for Deep Sleep Mode (DSM) as always-on:
-
VDD_SOCsupplied by BUCK1
-VDDA_1P8supplied by BUCK7
-VDDA_0P9supplied by LDO4
-VDDA_DRAMsupplied by LDO3
-NVCC_DRAMsupplied by BUCK8
-VDD_DRAMsupplied by BUCK5Finally LDO5 and LDO6 provide
VDD_PHY_1V8andVDD_PHY_0V9used by the SOCs MIPI, HDMI and USB IP cores. While we would in theory be able to turn these off (and I've tested that or LDO6 and mipi with USB disabled) it is of little practical use atm since USB doesn't runtime suspend so let's revisit this at a later point.
Quoted 5 lines
Signed-off-by Guido Günther <[email protected]>--- .../boot/dts/freescale/imx8mq-librem5-devkit.dts | 11 +++++++++++ 1 file changed, 11 insertions(+)
Best regards,
Krzysztof
Shawn Guo
AppliedRe: [PATCH v2 2/4] arm64: dts: imx8mq-librem5-devkit: Tweak pmic regulators
In reply to Guido GüntherQuoted 15 lines · Guido Günther
BUCK3 needs a regulator-enable-ramp-delay since otherwise the board freezes on etnaviv probe. With this
pgc_gpususpends and resumes as expected. This must have been always broken since gpcv2 support was enabled.We also enable all the regulators needed for Deep Sleep Mode (DSM) as always-on:
-
VDD_SOCsupplied by BUCK1
-VDDA_1P8supplied by BUCK7
-VDDA_0P9supplied by LDO4
-VDDA_DRAMsupplied by LDO3
-NVCC_DRAMsupplied by BUCK8
-VDD_DRAMsupplied by BUCK5
Quoted 7 lines
Finally LDO5 and LDO6 provide
VDD_PHY_1V8andVDD_PHY_0V9used by the SOCs MIPI, HDMI and USB IP cores. While we would in theory be able to turn these off (and I've tested that or LDO6 and mipi with USB disabled) it is of little practical use atm since USB doesn't runtime suspend so let's revisit this at a later point.Signed-off-by Guido Günther <[email protected]>
Applied, thanks.
PATCH v2 3/4 arm64: dts: imx8mq-librem5-devkit: Disable snvs_rtc
In reply to Guido GüntherThe board has it's own RTC chip which is backed by the (optional) battery and hence preserves data/time on poweroff when that is inserted.
--- arch/arm64/boot/dts/freescale/imx8mq-librem5-devkit.dts | 4 ++++ 1 file changed, 4 insertions(+)
arch/arm64/boot/dts/freescale/imx8mq-librem5-devkit.dts +4 -0
@@ -897,6 +897,10 @@ &snvs_pwrkey { status = "okay"; }; +&snvs_rtc { + status = "disabled"; +}; + &sai2 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_sai2>;
Signature · 1 line
2.29.2
Re: [PATCH v2 3/4] arm64: dts: imx8mq-librem5-devkit: Disable snvs_rtc
Quoted 8 lines · Guido Günther
The board has it's own RTC chip which is backed by the (optional) battery and hence preserves data/time on poweroff when that is inserted.
Signed-off-by Guido Günther <[email protected]>--- arch/arm64/boot/dts/freescale/imx8mq-librem5-devkit.dts | 4 ++++ 1 file changed, 4 insertions(+)
Best regards,
Krzysztof
Shawn Guo
AppliedRe: [PATCH v2 3/4] arm64: dts: imx8mq-librem5-devkit: Disable snvs_rtc
In reply to Guido GüntherQuoted 4 lines · Guido Günther
The board has it's own RTC chip which is backed by the (optional) battery and hence preserves data/time on poweroff when that is inserted.
Signed-off-by Guido Günther <[email protected]>
Applied, thanks.
PATCH v2 4/4 arm64: dts: imx8mq-librem5-devkit: Drop custom clock settings
In reply to Guido GüntherOtherwise the boot hangs early on and the resulting clock tree without this already closely matches the selected rates (722534400 and 786432000).
audio_pll2 0 0 0 722534397 0 0 50000
audio_pll2_bypass 0 0 0 722534397 0 0 50000
audio_pll2_out 0 0 0 722534397 0 0 50000
audio_pll1 1 1 0 786431998 0 0 50000
audio_pll1_bypass 1 1 0 786431998 0 0 50000
audio_pll1_out 1 1 0 786431998 0 0 50000
sai2 1 1 0 24576000 0 0 50000
sai2_root_clk 1 1 0 24576000 0 0 50000
sai6 0 0 0 24576000 0 0 50000
sai6_root_clk 0 0 0 24576000 0 0 50000--- arch/arm64/boot/dts/freescale/imx8mq-librem5-devkit.dts | 5 ----- 1 file changed, 5 deletions(-)
arch/arm64/boot/dts/freescale/imx8mq-librem5-devkit.dts +0 -5
@@ -244,11 +244,6 @@ &A53_3 { cpu-supply = <&buck2_reg>; }; -&clk { - assigned-clocks = <&clk IMX8MQ_AUDIO_PLL1>, <&clk IMX8MQ_AUDIO_PLL2>; - assigned-clock-rates = <786432000>, <722534400>; -}; - &dphy { status = "okay"; };
Signature · 1 line
2.29.2
Re: [PATCH v2 4/4] arm64: dts: imx8mq-librem5-devkit: Drop custom clock settings
Quoted 15 lines · Guido Günther
Otherwise the boot hangs early on and the resulting clock tree without this already closely matches the selected rates (722534400 and 786432000).
audio_pll2 0 0 0 722534397 0 0 50000 audio_pll2_bypass 0 0 0 722534397 0 0 50000 audio_pll2_out 0 0 0 722534397 0 0 50000 audio_pll1 1 1 0 786431998 0 0 50000 audio_pll1_bypass 1 1 0 786431998 0 0 50000 audio_pll1_out 1 1 0 786431998 0 0 50000 sai2 1 1 0 24576000 0 0 50000 sai2_root_clk 1 1 0 24576000 0 0 50000 sai6 0 0 0 24576000 0 0 50000 sai6_root_clk 0 0 0 24576000 0 0 50000
Quoted 5 lines
Signed-off-by Guido Günther <[email protected]>--- arch/arm64/boot/dts/freescale/imx8mq-librem5-devkit.dts | 5 ----- 1 file changed, 5 deletions(-)
Best regards,
Krzysztof
Shawn Guo
AppliedRe: [PATCH v2 4/4] arm64: dts: imx8mq-librem5-devkit: Drop custom clock settings
In reply to Guido GüntherQuoted 15 lines · Guido Günther
Otherwise the boot hangs early on and the resulting clock tree without this already closely matches the selected rates (722534400 and 786432000).
audio_pll2 0 0 0 722534397 0 0 50000 audio_pll2_bypass 0 0 0 722534397 0 0 50000 audio_pll2_out 0 0 0 722534397 0 0 50000 audio_pll1 1 1 0 786431998 0 0 50000 audio_pll1_bypass 1 1 0 786431998 0 0 50000 audio_pll1_out 1 1 0 786431998 0 0 50000 sai2 1 1 0 24576000 0 0 50000 sai2_root_clk 1 1 0 24576000 0 0 50000 sai6 0 0 0 24576000 0 0 50000 sai6_root_clk 0 0 0 24576000 0 0 50000
Quoted 1 line
Signed-off-by Guido Günther <[email protected]>
Applied, thanks.
Quoted 9 lines · Guido Günther
This enables more components to get a working display, panel, audio and sensors. It also updates some device tree bits to make mainline boot.
I've skipped wifi (which needs some more driver work) and devfreq (since Martin is working on that).
The config changes don't depend on the DT parts so could be applied independently. The series was tested against next-20201214 and i made sure the defconfig changes also apply on top of shawnguo/imx/defconfig.
Sorry. It doesn't apply any more.
Shawn
Hi Shawn,
Quoted 4 lines · Shawn Guo
Quoted 3 lines · Guido Günther
This enables more components to get a working display, panel, audio and sensors. It also updates some device tree bits to make mainline boot.
Quoted 8 lines
Quoted 6 lines
I've skipped wifi (which needs some more driver work) and devfreq (since Martin is working on that).
The config changes don't depend on the DT parts so could be applied independently. The series was tested against next-20201214 and i made sure the defconfig changes also apply on top of shawnguo/imx/defconfig.
Sorry. It doesn't apply any more.
v3 of this patch
https://lore.kernel.org/linux-arm-kernel/5636a3d6e3217475e2a479248250d5c0e0a50e26.1610110514.git.agx@sigxcpu.org/)
applies for me on top of
https://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git/log/?h=imx/defconfig
(which is at 773fcbcdf9d66b4aec964238b613e93804cba24c) - am i looking at the wrong tree?
Cheers and sorry for any inconvenience,
-- Guido
Quoted 3 lines
Shawn