Convert MSM8916 boards to use labels, reduce duplication
cover Convert MSM8916 boards to use labels, reduce duplication
Board device trees for newer SoCs reference labels to override properties for components of the SoC. This patch series converts all MSM8916 boards to use the same style.
Additionally, in the second part of the series I attempt to reduce duplication within the MSM8916 board device trees a bit. If we keep copying a large number of properties to each and every board of a SoC then (in my opinion) it makes sense to consider if those can be shared in some include.
This will make it easier to add new boards in the future.
Stephan Gerhold (10):
arm64: dts: qcom: apq8016-sbc: Remove properties that are already
default
arm64: dts: qcom: msm8916: Declare sound node in msm8916.dtsi
arm64: dts: qcom: apq8016-sbc: Define leds outside of soc node
arm64: dts: qcom: msm8916: Add more labels
arm64: dts: qcom: msm8916: Use labels in board device trees
arm64: dts: qcom: pm8916: Add resin node
arm64: dts: qcom: msm8916: Move PM8916-specific parts to
msm8916-pm8916.dtsi
arm64: dts: qcom: msm8916: Move more supplies to msm8916-pm8916.dtsi
arm64: dts: qcom: msm8916: Set default pinctrl for blsp1_uart1/2
arm64: dts: qcom: msm8916: Move common USB properties to msm8916.dtsi
arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi | 900 ++++++++---------- .../boot/dts/qcom/msm8916-longcheer-l8150.dts | 108 +-- arch/arm64/boot/dts/qcom/msm8916-mtp.dtsi | 14 +- arch/arm64/boot/dts/qcom/msm8916-pm8916.dtsi | 79 ++ .../qcom/msm8916-samsung-a2015-common.dtsi | 130 +-- arch/arm64/boot/dts/qcom/msm8916.dtsi | 99 +- arch/arm64/boot/dts/qcom/pm8916.dtsi | 8 + 7 files changed, 625 insertions(+), 713 deletions(-) create mode 100644 arch/arm64/boot/dts/qcom/msm8916-pm8916.dtsi
--
2.27.0
PATCH 1/10 arm64: dts: qcom: apq8016-sbc: Remove properties that are already default
apq8016-sbc.dtsi overrides several properties that are already the default in msm8916.dtsi. Remove these to simplify the device tree a bit.
--- arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi | 18 ------------------ 1 file changed, 18 deletions(-)
arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi +0 -18
@@ -387,7 +387,6 @@ usb@78d9000 { adp-disable; hnp-disable; srp-disable; - dr_mode = "otg"; pinctrl-names = "default", "device"; pinctrl-0 = <&usb_sw_sel_pm &usb_hub_reset_pm>; pinctrl-1 = <&usb_sw_sel_pm_device &usb_hub_reset_pm_device>;
@@ -405,15 +404,7 @@ lpass@7708000 { }; mdss@1a00000 { - status = "okay"; - - mdp@1a01000 { - status = "okay"; - }; - dsi@1a98000 { - status = "okay"; - vdda-supply = <&pm8916_l2>; vddio-supply = <&pm8916_l6>;
@@ -428,16 +419,10 @@ endpoint { }; dsi-phy@1a98300 { - status = "okay"; - vddio-supply = <&pm8916_l6>; }; }; - lpass_codec: codec{ - status = "okay"; - }; - /* Internal Codec playback - Primary MI2S
@@ -587,8 +572,6 @@ button@0 { &camss { status = "ok"; ports { - #address-cells = <1>; - #size-cells = <0>; port@0 { reg = <0>; csiphy0_ep: endpoint {
@@ -651,7 +634,6 @@ resin { }; &wcd_codec { - status = "okay"; clocks = <&gcc GCC_CODEC_DIGCODEC_CLK>; clock-names = "mclk"; qcom,mbhc-vthreshold-low = <75 150 237 450 500>;
Signature · 1 line
2.27.0
PATCH 2/10 arm64: dts: qcom: msm8916: Declare sound node in msm8916.dtsi
In reply to Stephan GerholdThe "sound" node in apq8016-sbc.dtsi references memory regions provided by the SoC and should be therefore declared in msm8916.dtsi.
Additionally, the machine driver used for the "qcom,apq8016-sbc-sndcard" compatible also works on other MSM8916 devices (provided that audio routing is set up properly). It is not really specific to apq8016-sbc.
Simplify setting up sound on other boards by moving the common part to msm8916.dtsi. This also allows referencing the node by the label, so that we can eventually drop the "soc" node entirely from the board-specific device tree part and use labels exclusively.
--- arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi | 6 +----- arch/arm64/boot/dts/qcom/msm8916.dtsi | 7 +++++++ 2 files changed, 8 insertions(+), 5 deletions(-)
arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi +1 -5
@@ -438,11 +438,7 @@ capture - Quat MI2S */ - sound: sound { - compatible = "qcom,apq8016-sbc-sndcard"; - reg = <0x07702000 0x4>, <0x07702004 0x4>; - reg-names = "mic-iomux", "spkr-iomux"; - + sound: sound@7702000 { status = "okay"; pinctrl-0 = <&cdc_pdm_lines_act &ext_sec_tlmm_lines_act &ext_mclk_tlmm_lines_act>; pinctrl-1 = <&cdc_pdm_lines_sus &ext_sec_tlmm_lines_sus &ext_mclk_tlmm_lines_sus>;
arch/arm64/boot/dts/qcom/msm8916.dtsi +7 -0
@@ -704,6 +704,13 @@ blsp_i2c6: i2c@78ba000 { status = "disabled"; }; + sound: sound@7702000 { + status = "disabled"; + compatible = "qcom,apq8016-sbc-sndcard"; + reg = <0x07702000 0x4>, <0x07702004 0x4>; + reg-names = "mic-iomux", "spkr-iomux"; + }; + lpass: lpass@7708000 { status = "disabled"; compatible = "qcom,lpass-cpu-apq8016";
Signature · 1 line
2.27.0
PATCH 3/10 arm64: dts: qcom: apq8016-sbc: Define leds outside of soc node
In reply to Stephan GerholdThe leds node does not use any memory regions of the SoC and should therefore be declared outside the "soc" node.
--- arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi | 104 +++++++++++----------- 1 file changed, 52 insertions(+), 52 deletions(-)
arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi +52 -52
@@ -307,58 +307,6 @@ spi@78b9000 { status = "okay"; }; - leds { - pinctrl-names = "default"; - pinctrl-0 = <&msmgpio_leds>, - <&pm8916_gpios_leds>, - <&pm8916_mpps_leds>; - - compatible = "gpio-leds"; - - led@1 { - label = "apq8016-sbc:green:user1"; - gpios = <&msmgpio 21 GPIO_ACTIVE_HIGH>; - linux,default-trigger = "heartbeat"; - default-state = "off"; - }; - - led@2 { - label = "apq8016-sbc:green:user2"; - gpios = <&msmgpio 120 GPIO_ACTIVE_HIGH>; - linux,default-trigger = "mmc0"; - default-state = "off"; - }; - - led@3 { - label = "apq8016-sbc:green:user3"; - gpios = <&pm8916_gpios 1 GPIO_ACTIVE_HIGH>; - linux,default-trigger = "mmc1"; - default-state = "off"; - }; - - led@4 { - label = "apq8016-sbc:green:user4"; - gpios = <&pm8916_gpios 2 GPIO_ACTIVE_HIGH>; - linux,default-trigger = "none"; - panic-indicator; - default-state = "off"; - }; - - led@5 { - label = "apq8016-sbc:yellow:wlan"; - gpios = <&pm8916_mpps 2 GPIO_ACTIVE_HIGH>; - linux,default-trigger = "phy0tx"; - default-state = "off"; - }; - - led@6 { - label = "apq8016-sbc:blue:bt"; - gpios = <&pm8916_mpps 3 GPIO_ACTIVE_HIGH>; - linux,default-trigger = "bluetooth-power"; - default-state = "off"; - }; - }; - sdhci@7824000 { vmmc-supply = <&pm8916_l8>; vqmmc-supply = <&pm8916_l5>;
@@ -563,6 +511,58 @@ button@0 { gpios = <&msmgpio 107 GPIO_ACTIVE_LOW>; }; }; + + leds { + pinctrl-names = "default"; + pinctrl-0 = <&msmgpio_leds>, + <&pm8916_gpios_leds>, + <&pm8916_mpps_leds>; + + compatible = "gpio-leds"; + + led@1 { + label = "apq8016-sbc:green:user1"; + gpios = <&msmgpio 21 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "heartbeat"; + default-state = "off"; + }; + + led@2 { + label = "apq8016-sbc:green:user2"; + gpios = <&msmgpio 120 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "mmc0"; + default-state = "off"; + }; + + led@3 { + label = "apq8016-sbc:green:user3"; + gpios = <&pm8916_gpios 1 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "mmc1"; + default-state = "off"; + }; + + led@4 { + label = "apq8016-sbc:green:user4"; + gpios = <&pm8916_gpios 2 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "none"; + panic-indicator; + default-state = "off"; + }; + + led@5 { + label = "apq8016-sbc:yellow:wlan"; + gpios = <&pm8916_mpps 2 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "phy0tx"; + default-state = "off"; + }; + + led@6 { + label = "apq8016-sbc:blue:bt"; + gpios = <&pm8916_mpps 3 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "bluetooth-power"; + default-state = "off"; + }; + }; }; &camss {
Signature · 1 line
2.27.0
PATCH 4/10 arm64: dts: qcom: msm8916: Add more labels
In reply to Stephan GerholdAdd a few more labels to device nodes declared in msm8916.dtsi so that we can set all needed properties using labels in the board-specific device tree part.
Also rename the "otg" label to "usb" to allow grouping it with the USB PHY (usb_hs_phy) node when ordering referenced labels alphabetically.
--- arch/arm64/boot/dts/qcom/msm8916.dtsi | 40 +++++++++++++-------------- 1 file changed, 20 insertions(+), 20 deletions(-)
arch/arm64/boot/dts/qcom/msm8916.dtsi +20 -20
@@ -781,7 +781,7 @@ sdhc_2: sdhci@7864000 { status = "disabled"; }; - otg: usb@78d9000 { + usb: usb@78d9000 { compatible = "qcom,ci-hdrc"; reg = <0x78d9000 0x200>, <0x78d9200 0x200>;
@@ -809,7 +809,7 @@ usb_hs_phy: phy { #phy-cells = <0>; clocks = <&xo_board>, <&gcc GCC_USB2A_PHY_SLEEP_CLK>; clock-names = "ref", "sleep"; - resets = <&gcc GCC_USB2A_PHY_BCR>, <&otg 0>; + resets = <&gcc GCC_USB2A_PHY_BCR>, <&usb 0>; reset-names = "phy", "por"; qcom,init-seq = /bits/ 8 <0x0 0x44 0x1 0x6b 0x2 0x24 0x3 0x13>;
@@ -1151,7 +1151,7 @@ dsi_phy0: dsi-phy@1a98300 { }; - hexagon@4080000 { + mpss: hexagon@4080000 { compatible = "qcom,q6v5-pil"; reg = <0x04080000 0x100>, <0x04020000 0x040>;
@@ -1289,7 +1289,7 @@ wifi { }; }; - tpiu@820000 { + tpiu: tpiu@820000 { compatible = "arm,coresight-tpiu", "arm,primecell"; reg = <0x820000 0x1000>;
@@ -1307,7 +1307,7 @@ tpiu_in: endpoint { }; }; - funnel@821000 { + funnel0: funnel@821000 { compatible = "arm,coresight-dynamic-funnel", "arm,primecell"; reg = <0x821000 0x1000>;
@@ -1348,7 +1348,7 @@ funnel0_out: endpoint { }; }; - replicator@824000 { + replicator: replicator@824000 { compatible = "arm,coresight-dynamic-replicator", "arm,primecell"; reg = <0x824000 0x1000>;
@@ -1384,7 +1384,7 @@ replicator_in: endpoint { }; }; - etf@825000 { + etf: etf@825000 { compatible = "arm,coresight-tmc", "arm,primecell"; reg = <0x825000 0x1000>;
@@ -1410,7 +1410,7 @@ etf_out: endpoint { }; }; - etr@826000 { + etr: etr@826000 { compatible = "arm,coresight-tmc", "arm,primecell"; reg = <0x826000 0x1000>;
@@ -1428,7 +1428,7 @@ etr_in: endpoint { }; }; - funnel@841000 { /* APSS funnel only 4 inputs are used */ + funnel1: funnel@841000 { /* APSS funnel only 4 inputs are used */ compatible = "arm,coresight-dynamic-funnel", "arm,primecell"; reg = <0x841000 0x1000>;
@@ -1476,7 +1476,7 @@ funnel1_out: endpoint { }; }; - debug@850000 { + debug0: debug@850000 { compatible = "arm,coresight-cpu-debug","arm,primecell"; reg = <0x850000 0x1000>; clocks = <&rpmcc RPM_QDSS_CLK>;
@@ -1485,7 +1485,7 @@ debug@850000 { status = "disabled"; }; - debug@852000 { + debug1: debug@852000 { compatible = "arm,coresight-cpu-debug","arm,primecell"; reg = <0x852000 0x1000>; clocks = <&rpmcc RPM_QDSS_CLK>;
@@ -1494,7 +1494,7 @@ debug@852000 { status = "disabled"; }; - debug@854000 { + debug2: debug@854000 { compatible = "arm,coresight-cpu-debug","arm,primecell"; reg = <0x854000 0x1000>; clocks = <&rpmcc RPM_QDSS_CLK>;
@@ -1503,7 +1503,7 @@ debug@854000 { status = "disabled"; }; - debug@856000 { + debug3: debug@856000 { compatible = "arm,coresight-cpu-debug","arm,primecell"; reg = <0x856000 0x1000>; clocks = <&rpmcc RPM_QDSS_CLK>;
@@ -1598,7 +1598,7 @@ etm3_out: endpoint { /* System CTIs */ /* CTI 0 - TMC connections */ - cti@810000 { + cti0: cti@810000 { compatible = "arm,coresight-cti", "arm,primecell"; reg = <0x810000 0x1000>;
@@ -1609,7 +1609,7 @@ cti@810000 { }; /* CTI 1 - TPIU connections */ - cti@811000 { + cti1: cti@811000 { compatible = "arm,coresight-cti", "arm,primecell"; reg = <0x811000 0x1000>;
@@ -1623,7 +1623,7 @@ cti@811000 { /* Core CTIs; CTIs 12-15 */ /* CTI - CPU-0 */ - cti@858000 { + cti12: cti@858000 { compatible = "arm,coresight-cti-v8-arch", "arm,coresight-cti", "arm,primecell"; reg = <0x858000 0x1000>;
@@ -1638,7 +1638,7 @@ cti@858000 { }; /* CTI - CPU-1 */ - cti@859000 { + cti13: cti@859000 { compatible = "arm,coresight-cti-v8-arch", "arm,coresight-cti", "arm,primecell"; reg = <0x859000 0x1000>;
@@ -1653,7 +1653,7 @@ cti@859000 { }; /* CTI - CPU-2 */ - cti@85a000 { + cti14: cti@85a000 { compatible = "arm,coresight-cti-v8-arch", "arm,coresight-cti", "arm,primecell"; reg = <0x85a000 0x1000>;
@@ -1668,7 +1668,7 @@ cti@85a000 { }; /* CTI - CPU-3 */ - cti@85b000 { + cti15: cti@85b000 { compatible = "arm,coresight-cti-v8-arch", "arm,coresight-cti", "arm,primecell"; reg = <0x85b000 0x1000>;
@@ -1821,7 +1821,7 @@ rpm { qcom,ipc = <&apcs 8 0>; qcom,smd-edge = <15>; - rpm-requests { + rpm_requests: rpm-requests { compatible = "qcom,rpm-msm8916"; qcom,smd-channels = "rpm_requests";
Signature · 1 line
2.27.0
PATCH 5/10 arm64: dts: qcom: msm8916: Use labels in board device trees
In reply to Stephan GerholdDevice trees for newer SoCs avoid replicating the entire device hierarchy in the board-specific device tree part. Instead, they set additional properties only by referencing labels, sorted alphabetically.
Now that we have labels for all relevant nodes, convert the MSM8916 board device trees to use the same style and remove the "soc" node entirely.
Note: There is a large block of coresight nodes in apq8016-sbc.dtsi, which are enabled by setting status = "okay". I kept them grouped together (not alphabetically sorted with everything else), since that would be just unnecessarily verbose and hard to see.
This commit only moves all existing properties to nodes that reference the respective label. The resulting binary DTBs are exactly the same.
---
Sorry for the large diff! I hope the fact that the resulting binary DTBs are exactly the same (same checksum) simplifies review a bit. Would just need to check that the resulting style looks good. :)
--- arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi | 800 +++++++++--------- .../boot/dts/qcom/msm8916-longcheer-l8150.dts | 107 ++- arch/arm64/boot/dts/qcom/msm8916-mtp.dtsi | 14 +- .../qcom/msm8916-samsung-a2015-common.dtsi | 139 ++- 4 files changed, 514 insertions(+), 546 deletions(-)
arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi +389 -411
@@ -11,30 +11,6 @@ #include <dt-bindings/pinctrl/qcom,pmic-mpp.h> #include <dt-bindings/sound/apq8016-lpass.h> -/* - * GPIO name legend: proper name = the GPIO line is used as GPIO - * NC = not connected (pin out but not routed from the chip to - * anything the board) - * "[PER]" = pin is muxed for [peripheral] (not GPIO) - * LSEC = Low Speed External Connector - * HSEC = High Speed External Connector - * - * Line names are taken from the schematic "DragonBoard410c" - * dated monday, august 31, 2015. Page 5 in particular. - * - * For the lines routed to the external connectors the - * lines are named after the 96Boards CE Specification 1.0, - * Appendix "Expansion Connector Signal Description". - * - * When the 96Board naming of a line and the schematic name of - * the same line are in conflict, the 96Board specification - * takes precedence, which means that the external UART on the - * LSEC is named UART0 while the schematic and SoC names this - * UART3. This is only for the informational lines i.e. "[FOO]", - * the GPIO named lines "GPIO-A" thru "GPIO-L" are the only - * ones actually used for GPIO. - */ - / { aliases { serial0 = &blsp1_uart2;
@@ -76,7 +52,7 @@ camera_vddd_1v5: camera-vddd-1v5 { }; reserved-memory { - ramoops@bff00000{ + ramoops@bff00000 { compatible = "ramoops"; reg = <0x0 0xbff00000 0x0 0x100000>;
@@ -86,392 +62,6 @@ ramoops@bff00000{ }; }; - soc { - pinctrl@1000000 { - gpio-line-names = - "[UART0_TX]", /* GPIO_0, LSEC pin 5 */ - "[UART0_RX]", /* GPIO_1, LSEC pin 7 */ - "[UART0_CTS_N]", /* GPIO_2, LSEC pin 3 */ - "[UART0_RTS_N]", /* GPIO_3, LSEC pin 9 */ - "[UART1_TX]", /* GPIO_4, LSEC pin 11 */ - "[UART1_RX]", /* GPIO_5, LSEC pin 13 */ - "[I2C0_SDA]", /* GPIO_8, LSEC pin 17 */ - "[I2C0_SCL]", /* GPIO_7, LSEC pin 15 */ - "[SPI1_DOUT]", /* SPI1_MOSI, HSEC pin 1 */ - "[SPI1_DIN]", /* SPI1_MISO, HSEC pin 11 */ - "[SPI1_CS]", /* SPI1_CS_N, HSEC pin 7 */ - "[SPI1_SCLK]", /* SPI1_CLK, HSEC pin 9 */ - "GPIO-B", /* LS_EXP_GPIO_B, LSEC pin 24 */ - "GPIO-C", /* LS_EXP_GPIO_C, LSEC pin 25 */ - "[I2C3_SDA]", /* HSEC pin 38 */ - "[I2C3_SCL]", /* HSEC pin 36 */ - "[SPI0_MOSI]", /* LSEC pin 14 */ - "[SPI0_MISO]", /* LSEC pin 10 */ - "[SPI0_CS_N]", /* LSEC pin 12 */ - "[SPI0_CLK]", /* LSEC pin 8 */ - "HDMI_HPD_N", /* GPIO 20 */ - "USR_LED_1_CTRL", - "[I2C1_SDA]", /* GPIO_22, LSEC pin 21 */ - "[I2C1_SCL]", /* GPIO_23, LSEC pin 19 */ - "GPIO-G", /* LS_EXP_GPIO_G, LSEC pin 29 */ - "GPIO-H", /* LS_EXP_GPIO_H, LSEC pin 30 */ - "[CSI0_MCLK]", /* HSEC pin 15 */ - "[CSI1_MCLK]", /* HSEC pin 17 */ - "GPIO-K", /* LS_EXP_GPIO_K, LSEC pin 33 */ - "[I2C2_SDA]", /* HSEC pin 34 */ - "[I2C2_SCL]", /* HSEC pin 32 */ - "DSI2HDMI_INT_N", - "DSI_SW_SEL_APQ", - "GPIO-L", /* LS_EXP_GPIO_L, LSEC pin 34 */ - "GPIO-J", /* LS_EXP_GPIO_J, LSEC pin 32 */ - "GPIO-I", /* LS_EXP_GPIO_I, LSEC pin 31 */ - "GPIO-A", /* LS_EXP_GPIO_A, LSEC pin 23 */ - "FORCED_USB_BOOT", - "SD_CARD_DET_N", - "[WCSS_BT_SSBI]", - "[WCSS_WLAN_DATA_2]", /* GPIO 40 */ - "[WCSS_WLAN_DATA_1]", - "[WCSS_WLAN_DATA_0]", - "[WCSS_WLAN_SET]", - "[WCSS_WLAN_CLK]", - "[WCSS_FM_SSBI]", - "[WCSS_FM_SDI]", - "[WCSS_BT_DAT_CTL]", - "[WCSS_BT_DAT_STB]", - "NC", - "NC", /* GPIO 50 */ - "NC", - "NC", - "NC", - "NC", - "NC", - "NC", - "NC", - "NC", - "NC", - "NC", /* GPIO 60 */ - "NC", - "NC", - "[CDC_PDM0_CLK]", - "[CDC_PDM0_SYNC]", - "[CDC_PDM0_TX0]", - "[CDC_PDM0_RX0]", - "[CDC_PDM0_RX1]", - "[CDC_PDM0_RX2]", - "GPIO-D", /* LS_EXP_GPIO_D, LSEC pin 26 */ - "NC", /* GPIO 70 */ - "NC", - "NC", - "NC", - "NC", /* GPIO 74 */ - "NC", - "NC", - "NC", - "NC", - "NC", - "BOOT_CONFIG_0", /* GPIO 80 */ - "BOOT_CONFIG_1", - "BOOT_CONFIG_2", - "BOOT_CONFIG_3", - "NC", - "NC", - "BOOT_CONFIG_5", - "NC", - "NC", - "NC", - "NC", /* GPIO 90 */ - "NC", - "NC", - "NC", - "NC", - "NC", - "NC", - "NC", - "NC", - "NC", - "NC", /* GPIO 100 */ - "NC", - "NC", - "NC", - "SSBI_GPS", - "NC", - "NC", - "KEY_VOLP_N", - "NC", - "NC", - "[LS_EXP_MI2S_WS]", /* GPIO 110 */ - "NC", - "NC", - "[LS_EXP_MI2S_SCK]", - "[LS_EXP_MI2S_DATA0]", - "GPIO-E", /* LS_EXP_GPIO_E, LSEC pin 27 */ - "NC", - "[DSI2HDMI_MI2S_WS]", - "[DSI2HDMI_MI2S_SCK]", - "[DSI2HDMI_MI2S_DATA0]", - "USR_LED_2_CTRL", /* GPIO 120 */ - "SB_HS_ID"; - }; - - dma@7884000 { - status = "okay"; - }; - - serial@78af000 { - label = "LS-UART0"; - status = "okay"; - pinctrl-names = "default", "sleep"; - pinctrl-0 = <&blsp1_uart1_default>; - pinctrl-1 = <&blsp1_uart1_sleep>; - }; - - serial@78b0000 { - label = "LS-UART1"; - status = "okay"; - pinctrl-names = "default", "sleep"; - pinctrl-0 = <&blsp1_uart2_default>; - pinctrl-1 = <&blsp1_uart2_sleep>; - }; - - i2c@78b6000 { - /* On Low speed expansion */ - label = "LS-I2C0"; - status = "okay"; - }; - - i2c@78b8000 { - /* On High speed expansion */ - label = "HS-I2C2"; - status = "okay"; - - adv_bridge: bridge@39 { - status = "okay"; - - compatible = "adi,adv7533"; - reg = <0x39>; - - interrupt-parent = <&msmgpio>; - interrupts = <31 2>; - - adi,dsi-lanes = <4>; - clocks = <&rpmcc RPM_SMD_BB_CLK2>; - clock-names = "cec"; - - pd-gpios = <&msmgpio 32 0>; - - avdd-supply = <&pm8916_l6>; - v1p2-supply = <&pm8916_l6>; - v3p3-supply = <&pm8916_l17>; - - pinctrl-names = "default","sleep"; - pinctrl-0 = <&adv7533_int_active &adv7533_switch_active>; - pinctrl-1 = <&adv7533_int_suspend &adv7533_switch_suspend>; - #sound-dai-cells = <1>; - - ports { - #address-cells = <1>; - #size-cells = <0>; - - port@0 { - reg = <0>; - adv7533_in: endpoint { - remote-endpoint = <&dsi0_out>; - }; - }; - - port@1 { - reg = <1>; - adv7533_out: endpoint { - remote-endpoint = <&hdmi_con>; - }; - }; - }; - }; - }; - - i2c@78ba000 { - /* On Low speed expansion */ - label = "LS-I2C1"; - status = "okay"; - }; - - spi@78b7000 { - /* On High speed expansion */ - label = "HS-SPI1"; - status = "okay"; - }; - - spi@78b9000 { - /* On Low speed expansion */ - label = "LS-SPI0"; - status = "okay"; - }; - - sdhci@7824000 { - vmmc-supply = <&pm8916_l8>; - vqmmc-supply = <&pm8916_l5>; - - pinctrl-names = "default", "sleep"; - pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>; - pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>; - status = "okay"; - }; - - sdhci@7864000 { - vmmc-supply = <&pm8916_l11>; - vqmmc-supply = <&pm8916_l12>; - - pinctrl-names = "default", "sleep"; - pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>; - pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>; - - cd-gpios = <&msmgpio 38 0x1>; - status = "okay"; - }; - - usb@78d9000 { - extcon = <&usb_id>, <&usb_id>; - status = "okay"; - adp-disable; - hnp-disable; - srp-disable; - pinctrl-names = "default", "device"; - pinctrl-0 = <&usb_sw_sel_pm &usb_hub_reset_pm>; - pinctrl-1 = <&usb_sw_sel_pm_device &usb_hub_reset_pm_device>; - ulpi { - phy { - v1p8-supply = <&pm8916_l7>; - v3p3-supply = <&pm8916_l13>; - extcon = <&usb_id>; - }; - }; - }; - - lpass@7708000 { - status = "okay"; - }; - - mdss@1a00000 { - dsi@1a98000 { - vdda-supply = <&pm8916_l2>; - vddio-supply = <&pm8916_l6>; - - ports { - port@1 { - endpoint { - remote-endpoint = <&adv7533_in>; - data-lanes = <0 1 2 3>; - }; - }; - }; - }; - - dsi-phy@1a98300 { - vddio-supply = <&pm8916_l6>; - }; - }; - - /* - Internal Codec - playback - Primary MI2S - capture - Ter MI2S - - External Primary: - playback - secondary MI2S - capture - Quat MI2S - - External Secondary: - playback - Quat MI2S - capture - Quat MI2S - - */ - - sound: sound@7702000 { - status = "okay"; - pinctrl-0 = <&cdc_pdm_lines_act &ext_sec_tlmm_lines_act &ext_mclk_tlmm_lines_act>; - pinctrl-1 = <&cdc_pdm_lines_sus &ext_sec_tlmm_lines_sus &ext_mclk_tlmm_lines_sus>; - pinctrl-names = "default", "sleep"; - qcom,model = "DB410c"; - qcom,audio-routing = - "AMIC2", "MIC BIAS Internal2", - "AMIC3", "MIC BIAS External1"; - - external-dai-link@0 { - link-name = "ADV7533"; - cpu { - sound-dai = <&lpass MI2S_QUATERNARY>; - }; - codec { - sound-dai = <&adv_bridge 0>; - }; - }; - - internal-codec-playback-dai-link@0 { - link-name = "WCD"; - cpu { - sound-dai = <&lpass MI2S_PRIMARY>; - }; - codec { - sound-dai = <&lpass_codec 0>, <&wcd_codec 0>; - }; - }; - - internal-codec-capture-dai-link@0 { - link-name = "WCD-Capture"; - cpu { - sound-dai = <&lpass MI2S_TERTIARY>; - }; - codec { - sound-dai = <&lpass_codec 1>, <&wcd_codec 1>; - }; - }; - }; - - spmi@200f000 { - pm8916@0 { - gpios@c000 { - gpio-line-names = - "USR_LED_3_CTRL", - "USR_LED_4_CTRL", - "USB_HUB_RESET_N_PM", - "USB_SW_SEL_PM"; - }; - mpps@a000 { - gpio-line-names = - "VDD_PX_BIAS", - "WLAN_LED_CTRL", - "BT_LED_CTRL", - "GPIO-F"; /* LS_EXP_GPIO_F, LSEC pin 28 */ - }; - }; - }; - - wcnss@a21b000 { - status = "okay"; - }; - - tpiu@820000 { status = "okay"; }; - funnel@821000 { status = "okay"; }; - replicator@824000 { status = "okay"; }; - etf@825000 { status = "okay"; }; - etr@826000 { status = "okay"; }; - funnel@841000 { status = "okay"; }; - debug@850000 { status = "okay"; }; - debug@852000 { status = "okay"; }; - debug@854000 { status = "okay"; }; - debug@856000 { status = "okay"; }; - etm@85c000 { status = "okay"; }; - etm@85d000 { status = "okay"; }; - etm@85e000 { status = "okay"; }; - etm@85f000 { status = "okay"; }; - cti@810000 { status = "okay"; }; - cti@811000 { status = "okay"; }; - cti@858000 { status = "okay"; }; - cti@859000 { status = "okay"; }; - cti@85a000 { status = "okay"; }; - cti@85b000 { status = "okay"; }; - }; - usb2513 { compatible = "smsc,usb3503"; reset-gpios = <&pm8916_gpios 3 GPIO_ACTIVE_LOW>;
@@ -565,6 +155,102 @@ led@6 { }; }; +&blsp_dma { + status = "okay"; +}; + +&blsp_i2c2 { + /* On Low speed expansion */ + status = "okay"; + label = "LS-I2C0"; +}; + +&blsp_i2c4 { + /* On High speed expansion */ + status = "okay"; + label = "HS-I2C2"; + + adv_bridge: bridge@39 { + status = "okay"; + + compatible = "adi,adv7533"; + reg = <0x39>; + + interrupt-parent = <&msmgpio>; + interrupts = <31 IRQ_TYPE_EDGE_FALLING>; + + adi,dsi-lanes = <4>; + clocks = <&rpmcc RPM_SMD_BB_CLK2>; + clock-names = "cec"; + + pd-gpios = <&msmgpio 32 GPIO_ACTIVE_HIGH>; + + avdd-supply = <&pm8916_l6>; + v1p2-supply = <&pm8916_l6>; + v3p3-supply = <&pm8916_l17>; + + pinctrl-names = "default","sleep"; + pinctrl-0 = <&adv7533_int_active &adv7533_switch_active>; + pinctrl-1 = <&adv7533_int_suspend &adv7533_switch_suspend>; + #sound-dai-cells = <1>; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + adv7533_in: endpoint { + remote-endpoint = <&dsi0_out>; + }; + }; + + port@1 { + reg = <1>; + adv7533_out: endpoint { + remote-endpoint = <&hdmi_con>; + }; + }; + }; + }; +}; + +&blsp_i2c6 { + /* On Low speed expansion */ + status = "okay"; + label = "LS-I2C1"; +}; + +&blsp_spi3 { + /* On High speed expansion */ + status = "okay"; + label = "HS-SPI1"; +}; + +&blsp_spi5 { + /* On Low speed expansion */ + status = "okay"; + label = "LS-SPI0"; +}; + +&blsp1_uart1 { + status = "okay"; + label = "LS-UART0"; + + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&blsp1_uart1_default>; + pinctrl-1 = <&blsp1_uart1_sleep>; +}; + +&blsp1_uart2 { + status = "okay"; + label = "LS-UART1"; + + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&blsp1_uart2_default>; + pinctrl-1 = <&blsp1_uart2_sleep>; +}; + &camss { status = "ok"; ports {
@@ -615,6 +301,98 @@ ov5640_ep: endpoint { }; }; +&dsi0 { + vdda-supply = <&pm8916_l2>; + vddio-supply = <&pm8916_l6>; + + ports { + port@1 { + endpoint { + remote-endpoint = <&adv7533_in>; + data-lanes = <0 1 2 3>; + }; + }; + }; +}; + +&dsi_phy0 { + vddio-supply = <&pm8916_l6>; +}; + +&lpass { + status = "okay"; +}; + +&pronto { + status = "okay"; +}; + +&sdhc_1 { + status = "okay"; + + vmmc-supply = <&pm8916_l8>; + vqmmc-supply = <&pm8916_l5>; + + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>; + pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>; +}; + +&sdhc_2 { + status = "okay"; + + vmmc-supply = <&pm8916_l11>; + vqmmc-supply = <&pm8916_l12>; + + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>; + pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>; + + cd-gpios = <&msmgpio 38 GPIO_ACTIVE_LOW>; +}; + +&sound { + status = "okay"; + + pinctrl-0 = <&cdc_pdm_lines_act &ext_sec_tlmm_lines_act &ext_mclk_tlmm_lines_act>; + pinctrl-1 = <&cdc_pdm_lines_sus &ext_sec_tlmm_lines_sus &ext_mclk_tlmm_lines_sus>; + pinctrl-names = "default", "sleep"; + qcom,model = "DB410c"; + qcom,audio-routing = + "AMIC2", "MIC BIAS Internal2", + "AMIC3", "MIC BIAS External1"; + + external-dai-link@0 { + link-name = "ADV7533"; + cpu { + sound-dai = <&lpass MI2S_QUATERNARY>; + }; + codec { + sound-dai = <&adv_bridge 0>; + }; + }; + + internal-codec-playback-dai-link@0 { + link-name = "WCD"; + cpu { + sound-dai = <&lpass MI2S_PRIMARY>; + }; + codec { + sound-dai = <&lpass_codec 0>, <&wcd_codec 0>; + }; + }; + + internal-codec-capture-dai-link@0 { + link-name = "WCD-Capture"; + cpu { + sound-dai = <&lpass MI2S_TERTIARY>; + }; + codec { + sound-dai = <&lpass_codec 1>, <&wcd_codec 1>; + }; + }; +}; + &spmi_bus { pm8916_0: pm8916@0 { pon@800 {
@@ -629,6 +407,24 @@ resin { }; }; +&usb { + status = "okay"; + extcon = <&usb_id>, <&usb_id>; + adp-disable; + hnp-disable; + srp-disable; + + pinctrl-names = "default", "device"; + pinctrl-0 = <&usb_sw_sel_pm &usb_hub_reset_pm>; + pinctrl-1 = <&usb_sw_sel_pm_device &usb_hub_reset_pm_device>; +}; + +&usb_hs_phy { + v1p8-supply = <&pm8916_l7>; + v3p3-supply = <&pm8916_l13>; + extcon = <&usb_id>; +}; + &wcd_codec { clocks = <&gcc GCC_CODEC_DIGCODEC_CLK>; clock-names = "mclk";
@@ -636,6 +432,28 @@ &wcd_codec { qcom,mbhc-vthreshold-high = <75 150 237 450 500>; }; +/* Enable CoreSight */ +&cti0 { status = "okay"; }; +&cti1 { status = "okay"; }; +&cti12 { status = "okay"; }; +&cti13 { status = "okay"; }; +&cti14 { status = "okay"; }; +&cti15 { status = "okay"; }; +&debug0 { status = "okay"; }; +&debug1 { status = "okay"; }; +&debug2 { status = "okay"; }; +&debug3 { status = "okay"; }; +&etf { status = "okay"; }; +&etm0 { status = "okay"; }; +&etm1 { status = "okay"; }; +&etm2 { status = "okay"; }; +&etm3 { status = "okay"; }; +&etr { status = "okay"; }; +&funnel0 { status = "okay"; }; +&funnel1 { status = "okay"; }; +&replicator { status = "okay"; }; +&tpiu { status = "okay"; }; + &smd_rpm_regulators { vdd_l1_l2_l3-supply = <&pm8916_s3>; vdd_l4_l5_l6-supply = <&pm8916_s4>;
@@ -773,7 +591,155 @@ &i2c6_default { drive-strength = <16>; }; +/* + * GPIO name legend: proper name = the GPIO line is used as GPIO + * NC = not connected (pin out but not routed from the chip to + * anything the board) + * "[PER]" = pin is muxed for [peripheral] (not GPIO) + * LSEC = Low Speed External Connector + * HSEC = High Speed External Connector + * + * Line names are taken from the schematic "DragonBoard410c" + * dated monday, august 31, 2015. Page 5 in particular. + * + * For the lines routed to the external connectors the + * lines are named after the 96Boards CE Specification 1.0, + * Appendix "Expansion Connector Signal Description". + * + * When the 96Board naming of a line and the schematic name of + * the same line are in conflict, the 96Board specification + * takes precedence, which means that the external UART on the + * LSEC is named UART0 while the schematic and SoC names this + * UART3. This is only for the informational lines i.e. "[FOO]", + * the GPIO named lines "GPIO-A" thru "GPIO-L" are the only + * ones actually used for GPIO. + */ + &msmgpio { + gpio-line-names = + "[UART0_TX]", /* GPIO_0, LSEC pin 5 */ + "[UART0_RX]", /* GPIO_1, LSEC pin 7 */ + "[UART0_CTS_N]", /* GPIO_2, LSEC pin 3 */ + "[UART0_RTS_N]", /* GPIO_3, LSEC pin 9 */ + "[UART1_TX]", /* GPIO_4, LSEC pin 11 */ + "[UART1_RX]", /* GPIO_5, LSEC pin 13 */ + "[I2C0_SDA]", /* GPIO_8, LSEC pin 17 */ + "[I2C0_SCL]", /* GPIO_7, LSEC pin 15 */ + "[SPI1_DOUT]", /* SPI1_MOSI, HSEC pin 1 */ + "[SPI1_DIN]", /* SPI1_MISO, HSEC pin 11 */ + "[SPI1_CS]", /* SPI1_CS_N, HSEC pin 7 */ + "[SPI1_SCLK]", /* SPI1_CLK, HSEC pin 9 */ + "GPIO-B", /* LS_EXP_GPIO_B, LSEC pin 24 */ + "GPIO-C", /* LS_EXP_GPIO_C, LSEC pin 25 */ + "[I2C3_SDA]", /* HSEC pin 38 */ + "[I2C3_SCL]", /* HSEC pin 36 */ + "[SPI0_MOSI]", /* LSEC pin 14 */ + "[SPI0_MISO]", /* LSEC pin 10 */ + "[SPI0_CS_N]", /* LSEC pin 12 */ + "[SPI0_CLK]", /* LSEC pin 8 */ + "HDMI_HPD_N", /* GPIO 20 */ + "USR_LED_1_CTRL", + "[I2C1_SDA]", /* GPIO_22, LSEC pin 21 */ + "[I2C1_SCL]", /* GPIO_23, LSEC pin 19 */ + "GPIO-G", /* LS_EXP_GPIO_G, LSEC pin 29 */ + "GPIO-H", /* LS_EXP_GPIO_H, LSEC pin 30 */ + "[CSI0_MCLK]", /* HSEC pin 15 */ + "[CSI1_MCLK]", /* HSEC pin 17 */ + "GPIO-K", /* LS_EXP_GPIO_K, LSEC pin 33 */ + "[I2C2_SDA]", /* HSEC pin 34 */ + "[I2C2_SCL]", /* HSEC pin 32 */ + "DSI2HDMI_INT_N", + "DSI_SW_SEL_APQ", + "GPIO-L", /* LS_EXP_GPIO_L, LSEC pin 34 */ + "GPIO-J", /* LS_EXP_GPIO_J, LSEC pin 32 */ + "GPIO-I", /* LS_EXP_GPIO_I, LSEC pin 31 */ + "GPIO-A", /* LS_EXP_GPIO_A, LSEC pin 23 */ + "FORCED_USB_BOOT", + "SD_CARD_DET_N", + "[WCSS_BT_SSBI]", + "[WCSS_WLAN_DATA_2]", /* GPIO 40 */ + "[WCSS_WLAN_DATA_1]", + "[WCSS_WLAN_DATA_0]", + "[WCSS_WLAN_SET]", + "[WCSS_WLAN_CLK]", + "[WCSS_FM_SSBI]", + "[WCSS_FM_SDI]", + "[WCSS_BT_DAT_CTL]", + "[WCSS_BT_DAT_STB]", + "NC", + "NC", /* GPIO 50 */ + "NC", + "NC", + "NC", + "NC", + "NC", + "NC", + "NC", + "NC", + "NC", + "NC", /* GPIO 60 */ + "NC", + "NC", + "[CDC_PDM0_CLK]", + "[CDC_PDM0_SYNC]", + "[CDC_PDM0_TX0]", + "[CDC_PDM0_RX0]", + "[CDC_PDM0_RX1]", + "[CDC_PDM0_RX2]", + "GPIO-D", /* LS_EXP_GPIO_D, LSEC pin 26 */ + "NC", /* GPIO 70 */ + "NC", + "NC", + "NC", + "NC", /* GPIO 74 */ + "NC", + "NC", + "NC", + "NC", + "NC", + "BOOT_CONFIG_0", /* GPIO 80 */ + "BOOT_CONFIG_1", + "BOOT_CONFIG_2", + "BOOT_CONFIG_3", + "NC", + "NC", + "BOOT_CONFIG_5", + "NC", + "NC", + "NC", + "NC", /* GPIO 90 */ + "NC", + "NC", + "NC", + "NC", + "NC", + "NC", + "NC", + "NC", + "NC", + "NC", /* GPIO 100 */ + "NC", + "NC", + "NC", + "SSBI_GPS", + "NC", + "NC", + "KEY_VOLP_N", + "NC", + "NC", + "[LS_EXP_MI2S_WS]", /* GPIO 110 */ + "NC", + "NC", + "[LS_EXP_MI2S_SCK]", + "[LS_EXP_MI2S_DATA0]", + "GPIO-E", /* LS_EXP_GPIO_E, LSEC pin 27 */ + "NC", + "[DSI2HDMI_MI2S_WS]", + "[DSI2HDMI_MI2S_SCK]", + "[DSI2HDMI_MI2S_DATA0]", + "USR_LED_2_CTRL", /* GPIO 120 */ + "SB_HS_ID"; + msmgpio_leds: msmgpio-leds { pins = "gpio21", "gpio120"; function = "gpio";
@@ -833,6 +799,12 @@ msm_key_volp_n_default: msm-key-volp-n-default { }; &pm8916_gpios { + gpio-line-names = + "USR_LED_3_CTRL", + "USR_LED_4_CTRL", + "USB_HUB_RESET_N_PM", + "USB_SW_SEL_PM"; + usb_hub_reset_pm: usb-hub-reset-pm { pins = "gpio3"; function = PMIC_GPIO_FUNC_NORMAL;
@@ -875,6 +847,12 @@ pm8916_gpios_leds: pm8916-gpios-leds { }; &pm8916_mpps { + gpio-line-names = + "VDD_PX_BIAS", + "WLAN_LED_CTRL", + "BT_LED_CTRL", + "GPIO-F"; /* LS_EXP_GPIO_F, LSEC pin 28 */ + pinctrl-names = "default"; pinctrl-0 = <&ls_exp_gpio_f>;
arch/arm64/boot/dts/qcom/msm8916-longcheer-l8150.dts +52 -55
125 lines not on this page · raw message
arch/arm64/boot/dts/qcom/msm8916-mtp.dtsi +6 -8
@@ -15,13 +15,11 @@ aliases { chosen { stdout-path = "serial0"; }; +}; - soc { - serial@78b0000 { - status = "okay"; - pinctrl-names = "default", "sleep"; - pinctrl-0 = <&blsp1_uart2_default>; - pinctrl-1 = <&blsp1_uart2_sleep>; - }; - }; +&blsp1_uart2 { + status = "okay"; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&blsp1_uart2_default>; + pinctrl-1 = <&blsp1_uart2_sleep>; };
arch/arm64/boot/dts/qcom/msm8916-samsung-a2015-common.dtsi +67 -72
157 lines not on this page · raw message
Signature · 1 line
2.27.0
PATCH 6/10 arm64: dts: qcom: pm8916: Add resin node
In reply to Stephan GerholdRight now we define the entire pm8916 resin node separately in the board-specific device tree part, including the interrupt that belongs to PM8916.
As a feature of the PMIC it should be declared in pm8916.dtsi, disabled by default. Like all other optional components it can then by enabled and configured in the board-specific device tree part.
--- arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi | 19 +++++-------------- .../boot/dts/qcom/msm8916-longcheer-l8150.dts | 18 +++++------------- .../qcom/msm8916-samsung-a2015-common.dtsi | 18 +++++------------- arch/arm64/boot/dts/qcom/pm8916.dtsi | 8 ++++++++ 4 files changed, 23 insertions(+), 40 deletions(-)
arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi +5 -14
@@ -323,6 +323,11 @@ &lpass { status = "okay"; }; +&pm8916_resin { + status = "okay"; + linux,code = <KEY_VOLUMEDOWN>; +}; + &pronto { status = "okay"; };
@@ -393,20 +398,6 @@ codec { }; }; -&spmi_bus { - pm8916_0: pm8916@0 { - pon@800 { - resin { - compatible = "qcom,pm8941-resin"; - interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>; - debounce = <15625>; - bias-pull-up; - linux,code = <KEY_VOLUMEDOWN>; - }; - }; - }; -}; - &usb { status = "okay"; extcon = <&usb_id>, <&usb_id>;
arch/arm64/boot/dts/qcom/msm8916-longcheer-l8150.dts +5 -13
@@ -61,6 +61,11 @@ &blsp1_uart2 { pinctrl-1 = <&blsp1_uart2_sleep>; }; +&pm8916_resin { + status = "okay"; + linux,code = <KEY_VOLUMEDOWN>; +}; + &pronto { status = "okay"; };
@@ -89,19 +94,6 @@ &sdhc_2 { non-removable; }; -&spmi_bus { - pm8916@0 { - pon@800 { - volume-down { - compatible = "qcom,pm8941-resin"; - interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>; - bias-pull-up; - linux,code = <KEY_VOLUMEDOWN>; - }; - }; - }; -}; - &usb { status = "okay"; dr_mode = "peripheral";
arch/arm64/boot/dts/qcom/msm8916-samsung-a2015-common.dtsi +5 -13
@@ -138,6 +138,11 @@ &dsi_phy0 { vddio-supply = <&pm8916_l6>; }; +&pm8916_resin { + status = "okay"; + linux,code = <KEY_VOLUMEDOWN>; +}; + &pronto { status = "okay"; };
@@ -166,19 +171,6 @@ &sdhc_2 { cd-gpios = <&msmgpio 38 GPIO_ACTIVE_LOW>; }; -&spmi_bus { - pm8916@0 { - pon@800 { - volume-down { - compatible = "qcom,pm8941-resin"; - interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>; - bias-pull-up; - linux,code = <KEY_VOLUMEDOWN>; - }; - }; - }; -}; - &usb { status = "okay"; extcon = <&muic>, <&muic>;
arch/arm64/boot/dts/qcom/pm8916.dtsi +8 -0
@@ -33,6 +33,14 @@ pwrkey { linux,code = <KEY_POWER>; }; + pm8916_resin: resin { + compatible = "qcom,pm8941-resin"; + interrupts = <0x0 0x8 1 IRQ_TYPE_EDGE_BOTH>; + debounce = <15625>; + bias-pull-up; + status = "disabled"; + }; + watchdog { compatible = "qcom,pm8916-wdt"; interrupts = <0x0 0x8 6 IRQ_TYPE_EDGE_RISING>;
Signature · 1 line
2.27.0
PATCH 7/10 arm64: dts: qcom: msm8916: Move PM8916-specific parts to msm8916-pm8916.dtsi
In reply to Stephan GerholdDevice trees for newer SoCs avoid defining the regulator nodes directly in the SoC device tree (here: msm8916.dtsi). The reason for this is that theoretically it is possible to combine the SoC with a different PMIC, or to use all the regulators in a board-specific way.
Therefore let's remove those from the SoC include (msm8916.dtsi).
In practice, pretty much all MSM8916 boards were combined with PM8916, and use the regulators in similar ways. After looking at many different MSM8916 boards (mostly smartphones and tablets), I haven't seen a single device that isn't using the same regulators for components integrated into the SoC.
If all boards end up defining all regulators and supplies in the same way then it is useful to have an include for that, so we can avoid duplicating it everywhere. If there is really a super special board that does it differently it could just override some properties or avoid using the include altogether.
This patch moves the regulator and common supply definitions to a new include called "msm8916-pm8916.dtsi".
This is also going to be useful when introducing CPR (Core Power Reduction) later because we can configure the CPU regulator (pm8916_spmi_s2) for all devices in this common include.
--- arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi | 3 +- .../boot/dts/qcom/msm8916-longcheer-l8150.dts | 3 +- arch/arm64/boot/dts/qcom/msm8916-mtp.dtsi | 3 +- arch/arm64/boot/dts/qcom/msm8916-pm8916.dtsi | 55 +++++++++++++++++++ .../qcom/msm8916-samsung-a2015-common.dtsi | 3 +- arch/arm64/boot/dts/qcom/msm8916.dtsi | 40 -------------- 6 files changed, 59 insertions(+), 48 deletions(-) create mode 100644 arch/arm64/boot/dts/qcom/msm8916-pm8916.dtsi
arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi +1 -2
@@ -3,8 +3,7 @@ * Copyright (c) 2015, The Linux Foundation. All rights reserved. */ -#include "msm8916.dtsi" -#include "pm8916.dtsi" +#include "msm8916-pm8916.dtsi" #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/input/input.h> #include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
arch/arm64/boot/dts/qcom/msm8916-longcheer-l8150.dts +1 -2
@@ -2,8 +2,7 @@ /dts-v1/; -#include "msm8916.dtsi" -#include "pm8916.dtsi" +#include "msm8916-pm8916.dtsi" #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/input/input.h>
arch/arm64/boot/dts/qcom/msm8916-mtp.dtsi +1 -2
@@ -3,8 +3,7 @@ * Copyright (c) 2014-2015, The Linux Foundation. All rights reserved. */ -#include "msm8916.dtsi" -#include "pm8916.dtsi" +#include "msm8916-pm8916.dtsi" / { aliases {
arch/arm64/boot/dts/qcom/msm8916-pm8916.dtsi new file +55 -0
55 lines not on this page · raw message
arch/arm64/boot/dts/qcom/msm8916-samsung-a2015-common.dtsi +1 -2
@@ -1,7 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-only -#include "msm8916.dtsi" -#include "pm8916.dtsi" +#include "msm8916-pm8916.dtsi" #include <dt-bindings/gpio/gpio.h> #include <dt-bindings/input/input.h> #include <dt-bindings/interrupt-controller/irq.h>
arch/arm64/boot/dts/qcom/msm8916.dtsi +0 -40
@@ -1178,10 +1178,6 @@ mpss: hexagon@4080000 { resets = <&scm 0>; reset-names = "mss_restart"; - cx-supply = <&pm8916_s1>; - mx-supply = <&pm8916_l3>; - pll-supply = <&pm8916_l7>; - qcom,halt-regs = <&tcsr 0x18000 0x19000 0x1a000>; status = "disabled";
@@ -1233,9 +1229,6 @@ pronto: wcnss@a21b000 { <&wcnss_smp2p_in 3 IRQ_TYPE_EDGE_RISING>; interrupt-names = "wdog", "fatal", "ready", "handover", "stop-ack"; - vddmx-supply = <&pm8916_l3>; - vddpx-supply = <&pm8916_l7>; - qcom,state = <&wcnss_smp2p_out 0>; qcom,state-names = "stop";
@@ -1249,11 +1242,6 @@ iris { clocks = <&rpmcc RPM_SMD_RF_CLK2>; clock-names = "xo"; - - vddxo-supply = <&pm8916_l7>; - vddrfa-supply = <&pm8916_s3>; - vddpa-supply = <&pm8916_l9>; - vdddig-supply = <&pm8916_l5>; }; smd-edge {
@@ -1776,7 +1764,6 @@ camss: camss@1b00000 { "csi_vfe0", "vfe_ahb", "vfe_axi"; - vdda-supply = <&pm8916_l2>; iommus = <&apps_iommu 3>; status = "disabled"; ports {
@@ -1829,33 +1816,6 @@ rpmcc: qcom,rpmcc { compatible = "qcom,rpmcc-msm8916"; #clock-cells = <1>; }; - - smd_rpm_regulators: pm8916-regulators { - compatible = "qcom,rpm-pm8916-regulators"; - - pm8916_s1: s1 {}; - pm8916_s3: s3 {}; - pm8916_s4: s4 {}; - - pm8916_l1: l1 {}; - pm8916_l2: l2 {}; - pm8916_l3: l3 {}; - pm8916_l4: l4 {}; - pm8916_l5: l5 {}; - pm8916_l6: l6 {}; - pm8916_l7: l7 {}; - pm8916_l8: l8 {}; - pm8916_l9: l9 {}; - pm8916_l10: l10 {}; - pm8916_l11: l11 {}; - pm8916_l12: l12 {}; - pm8916_l13: l13 {}; - pm8916_l14: l14 {}; - pm8916_l15: l15 {}; - pm8916_l16: l16 {}; - pm8916_l17: l17 {}; - pm8916_l18: l18 {}; - }; }; }; };
Signature · 1 line
2.27.0
PATCH 8/10 arm64: dts: qcom: msm8916: Move more supplies to msm8916-pm8916.dtsi
In reply to Stephan GerholdSo far we had some supplies defined for all boards in msm8916.dtsi, while others were duplicated into every board-specific device tree.
Now that we have msm8916-pm8916.dtsi as a common include for all standard MSM8916 devices using PM8916, move the remaining common supplies to msm8916-pm8916.dtsi to reduce duplication a bit.
--- arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi | 15 ------------ .../boot/dts/qcom/msm8916-longcheer-l8150.dts | 8 ------- arch/arm64/boot/dts/qcom/msm8916-pm8916.dtsi | 24 +++++++++++++++++++ .../qcom/msm8916-samsung-a2015-common.dtsi | 15 ------------ 4 files changed, 24 insertions(+), 38 deletions(-)
arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi +0 -15
@@ -301,9 +301,6 @@ ov5640_ep: endpoint { }; &dsi0 { - vdda-supply = <&pm8916_l2>; - vddio-supply = <&pm8916_l6>; - ports { port@1 { endpoint {
@@ -314,10 +311,6 @@ endpoint { }; }; -&dsi_phy0 { - vddio-supply = <&pm8916_l6>; -}; - &lpass { status = "okay"; };
@@ -334,9 +327,6 @@ &pronto { &sdhc_1 { status = "okay"; - vmmc-supply = <&pm8916_l8>; - vqmmc-supply = <&pm8916_l5>; - pinctrl-names = "default", "sleep"; pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>; pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;
@@ -345,9 +335,6 @@ &sdhc_1 { &sdhc_2 { status = "okay"; - vmmc-supply = <&pm8916_l11>; - vqmmc-supply = <&pm8916_l12>; - pinctrl-names = "default", "sleep"; pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>; pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;
@@ -410,8 +397,6 @@ &usb { }; &usb_hs_phy { - v1p8-supply = <&pm8916_l7>; - v3p3-supply = <&pm8916_l13>; extcon = <&usb_id>; };
arch/arm64/boot/dts/qcom/msm8916-longcheer-l8150.dts +0 -8
@@ -72,9 +72,6 @@ &pronto { &sdhc_1 { status = "okay"; - vmmc-supply = <&pm8916_l8>; - vqmmc-supply = <&pm8916_l5>; - pinctrl-names = "default", "sleep"; pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>; pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;
@@ -83,9 +80,6 @@ &sdhc_1 { &sdhc_2 { status = "okay"; - vmmc-supply = <&pm8916_l11>; - vqmmc-supply = <&pm8916_l12>; - pinctrl-names = "default", "sleep"; pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on>; pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off>;
@@ -105,8 +99,6 @@ &usb { &usb_hs_phy { extcon = <&usb_vbus>; - v1p8-supply = <&pm8916_l7>; - v3p3-supply = <&pm8916_l13>; }; &smd_rpm_regulators {
arch/arm64/boot/dts/qcom/msm8916-pm8916.dtsi +24 -0
@@ -7,6 +7,15 @@ &camss { vdda-supply = <&pm8916_l2>; }; +&dsi0 { + vdda-supply = <&pm8916_l2>; + vddio-supply = <&pm8916_l6>; +}; + +&dsi_phy0 { + vddio-supply = <&pm8916_l6>; +}; + &mpss { cx-supply = <&pm8916_s1>; mx-supply = <&pm8916_l3>;
@@ -25,6 +34,21 @@ iris { }; }; +&sdhc_1 { + vmmc-supply = <&pm8916_l8>; + vqmmc-supply = <&pm8916_l5>; +}; + +&sdhc_2 { + vmmc-supply = <&pm8916_l11>; + vqmmc-supply = <&pm8916_l12>; +}; + +&usb_hs_phy { + v1p8-supply = <&pm8916_l7>; + v3p3-supply = <&pm8916_l13>; +}; + &rpm_requests { smd_rpm_regulators: pm8916-regulators { compatible = "qcom,rpm-pm8916-regulators";
arch/arm64/boot/dts/qcom/msm8916-samsung-a2015-common.dtsi +0 -15
@@ -125,18 +125,11 @@ &dsi0 { #address-cells = <1>; #size-cells = <0>; - vdda-supply = <&pm8916_l2>; - vddio-supply = <&pm8916_l6>; - pinctrl-names = "default", "sleep"; pinctrl-0 = <&mdss_default>; pinctrl-1 = <&mdss_sleep>; }; -&dsi_phy0 { - vddio-supply = <&pm8916_l6>; -}; - &pm8916_resin { status = "okay"; linux,code = <KEY_VOLUMEDOWN>;
@@ -149,9 +142,6 @@ &pronto { &sdhc_1 { status = "okay"; - vmmc-supply = <&pm8916_l8>; - vqmmc-supply = <&pm8916_l5>; - pinctrl-names = "default", "sleep"; pinctrl-0 = <&sdc1_clk_on &sdc1_cmd_on &sdc1_data_on>; pinctrl-1 = <&sdc1_clk_off &sdc1_cmd_off &sdc1_data_off>;
@@ -160,9 +150,6 @@ &sdhc_1 { &sdhc_2 { status = "okay"; - vmmc-supply = <&pm8916_l11>; - vqmmc-supply = <&pm8916_l12>; - pinctrl-names = "default", "sleep"; pinctrl-0 = <&sdc2_clk_on &sdc2_cmd_on &sdc2_data_on &sdc2_cd_on>; pinctrl-1 = <&sdc2_clk_off &sdc2_cmd_off &sdc2_data_off &sdc2_cd_off>;
@@ -181,8 +168,6 @@ &usb { &usb_hs_phy { extcon = <&muic>; - v1p8-supply = <&pm8916_l7>; - v3p3-supply = <&pm8916_l13>; }; &smd_rpm_regulators {
Signature · 1 line
2.27.0
PATCH 9/10 arm64: dts: qcom: msm8916: Set default pinctrl for blsp1_uart1/2
In reply to Stephan GerholdRight now some device nodes set default pinctrl within msm8916.dtsi (e.g. I2C, SPI), but for others it needs to be explicitly set in the board-specific device tree (e.g. UART).
While it is theoretically possible that some super special board needs different pinctrl for these, in practice pretty much every board ends up using the common pinctrl definitions.
Make this consistent by also defining the common pinctrl properties for blsp1_uart1 and blsp1_uart2 so we don't need to copy this for every board. If there is really such a super special board it could just override these properties with custom pinctrl or make minor modifications to the common pinctrl configurations provided by msm8916-pins.dtsi.
Also move #address-cells/#size-cells for &dsi0 to msm8916.dtsi since this is specific to the DSI node, not the board.
--- arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi | 8 -------- arch/arm64/boot/dts/qcom/msm8916-longcheer-l8150.dts | 4 ---- arch/arm64/boot/dts/qcom/msm8916-mtp.dtsi | 3 --- .../boot/dts/qcom/msm8916-samsung-a2015-common.dtsi | 7 ------- arch/arm64/boot/dts/qcom/msm8916.dtsi | 9 +++++++++ 5 files changed, 9 insertions(+), 22 deletions(-)
arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi +0 -8
@@ -235,19 +235,11 @@ &blsp_spi5 { &blsp1_uart1 { status = "okay"; label = "LS-UART0"; - - pinctrl-names = "default", "sleep"; - pinctrl-0 = <&blsp1_uart1_default>; - pinctrl-1 = <&blsp1_uart1_sleep>; }; &blsp1_uart2 { status = "okay"; label = "LS-UART1"; - - pinctrl-names = "default", "sleep"; - pinctrl-0 = <&blsp1_uart2_default>; - pinctrl-1 = <&blsp1_uart2_sleep>; }; &camss {
arch/arm64/boot/dts/qcom/msm8916-longcheer-l8150.dts +0 -4
@@ -54,10 +54,6 @@ volume-up { &blsp1_uart2 { status = "okay"; - - pinctrl-names = "default", "sleep"; - pinctrl-0 = <&blsp1_uart2_default>; - pinctrl-1 = <&blsp1_uart2_sleep>; }; &pm8916_resin {
arch/arm64/boot/dts/qcom/msm8916-mtp.dtsi +0 -3
@@ -18,7 +18,4 @@ chosen { &blsp1_uart2 { status = "okay"; - pinctrl-names = "default", "sleep"; - pinctrl-0 = <&blsp1_uart2_default>; - pinctrl-1 = <&blsp1_uart2_sleep>; };
arch/arm64/boot/dts/qcom/msm8916-samsung-a2015-common.dtsi +0 -7
@@ -115,16 +115,9 @@ magnetometer@12 { &blsp1_uart2 { status = "okay"; - - pinctrl-names = "default", "sleep"; - pinctrl-0 = <&blsp1_uart2_default>; - pinctrl-1 = <&blsp1_uart2_sleep>; }; &dsi0 { - #address-cells = <1>; - #size-cells = <0>; - pinctrl-names = "default", "sleep"; pinctrl-0 = <&mdss_default>; pinctrl-1 = <&mdss_sleep>;
arch/arm64/boot/dts/qcom/msm8916.dtsi +9 -0
@@ -487,6 +487,9 @@ blsp1_uart1: serial@78af000 { clock-names = "core", "iface"; dmas = <&blsp_dma 1>, <&blsp_dma 0>; dma-names = "rx", "tx"; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&blsp1_uart1_default>; + pinctrl-1 = <&blsp1_uart1_sleep>; status = "disabled"; };
@@ -513,6 +516,9 @@ blsp1_uart2: serial@78b0000 { clock-names = "core", "iface"; dmas = <&blsp_dma 3>, <&blsp_dma 2>; dma-names = "rx", "tx"; + pinctrl-names = "default", "sleep"; + pinctrl-0 = <&blsp1_uart2_default>; + pinctrl-1 = <&blsp1_uart2_sleep>; status = "disabled"; };
@@ -1113,6 +1119,9 @@ dsi0: dsi@1a98000 { phys = <&dsi_phy0>; phy-names = "dsi-phy"; + #address-cells = <1>; + #size-cells = <0>; + ports { #address-cells = <1>; #size-cells = <0>;
Signature · 1 line
2.27.0
PATCH 10/10 arm64: dts: qcom: msm8916: Move common USB properties to msm8916.dtsi
In reply to Stephan GerholdRight now we define "hnp-disable", "srp-disable", "adp-disable" separately for every MSM8916 board that has USB working.
They are needed for USB to work properly if CONFIG_USB_OTG_FSM is enabled. This is because the chipidea OTG FSM code waits for interrupts regarding the VBUS state (AVVIS). Those never happen on MSM8916 because VBUS is always connected to the PMIC instead of the USB controller.
There was a patch [1] to work around this but ultimately it was decided that it's easier to disable the OTG FSM altogether using these properties. This works fine for most use cases, because the OTG FSM isn't needed for simple dual role host/gadget operation.
Given that these properties are needed for every MSM8916 device, move them to msm8916.dtsi so we can avoid some more duplication.
[1]: https://lore.kernel.org/lkml/[email protected]/
--- arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi | 3 --- arch/arm64/boot/dts/qcom/msm8916-longcheer-l8150.dts | 4 ---- arch/arm64/boot/dts/qcom/msm8916-samsung-a2015-common.dtsi | 4 ---- arch/arm64/boot/dts/qcom/msm8916.dtsi | 3 +++ 4 files changed, 3 insertions(+), 11 deletions(-)
arch/arm64/boot/dts/qcom/apq8016-sbc.dtsi +0 -3
@@ -379,9 +379,6 @@ codec { &usb { status = "okay"; extcon = <&usb_id>, <&usb_id>; - adp-disable; - hnp-disable; - srp-disable; pinctrl-names = "default", "device"; pinctrl-0 = <&usb_sw_sel_pm &usb_hub_reset_pm>;
arch/arm64/boot/dts/qcom/msm8916-longcheer-l8150.dts +0 -4
@@ -87,10 +87,6 @@ &usb { status = "okay"; dr_mode = "peripheral"; extcon = <&usb_vbus>; - - hnp-disable; - srp-disable; - adp-disable; }; &usb_hs_phy {
arch/arm64/boot/dts/qcom/msm8916-samsung-a2015-common.dtsi +0 -4
@@ -153,10 +153,6 @@ &sdhc_2 { &usb { status = "okay"; extcon = <&muic>, <&muic>; - - hnp-disable; - srp-disable; - adp-disable; }; &usb_hs_phy {
arch/arm64/boot/dts/qcom/msm8916.dtsi +3 -0
@@ -802,6 +802,9 @@ usb: usb@78d9000 { reset-names = "core"; phy_type = "ulpi"; dr_mode = "otg"; + hnp-disable; + srp-disable; + adp-disable; ahb-burst-config = <0>; phy-names = "usb-phy"; phys = <&usb_hs_phy>;
Signature · 1 line
2.27.0
Hi Bjorn,
Quoted 20 lines · Stephan Gerhold
Board device trees for newer SoCs reference labels to override properties for components of the SoC. This patch series converts all MSM8916 boards to use the same style.
Additionally, in the second part of the series I attempt to reduce duplication within the MSM8916 board device trees a bit. If we keep copying a large number of properties to each and every board of a SoC then (in my opinion) it makes sense to consider if those can be shared in some include.
This will make it easier to add new boards in the future.
Stephan Gerhold (10):
arm64: dts: qcom: apq8016-sbc: Remove properties that are already
default
arm64: dts: qcom: msm8916: Declare sound node inmsm8916.dtsi
arm64: dts: qcom: apq8016-sbc: Define leds outside of soc node
arm64: dts: qcom: msm8916: Add more labels
arm64: dts: qcom: msm8916: Use labels in board device trees
arm64: dts: qcom: pm8916: Add resin node
arm64: dts: qcom: msm8916: Move PM8916-specific parts to
Quoted 5 lines
msm8916-pm8916.dtsiarm64: dts: qcom: msm8916: Move more supplies to
msm8916-pm8916.dtsi
arm64: dts: qcom: msm8916: Set default pinctrl for blsp1_uart1/2
arm64: dts: qcom: msm8916: Move common USB properties tomsm8916.dtsi
It's been two months since I sent this series - are there any changes I should make? Maybe you just overlooked it :)
Would be great to make some progress since I have a few more patch series ready to send out that build on top of this one (some more cleanup for MSM8916, converting MSM8916 to use rpmpd power domains, ...)
Thanks!
Stephan
Quoted 29 lines · Stephan Gerhold
Hi Bjorn,
Quoted 20 lines · Stephan Gerhold
Board device trees for newer SoCs reference labels to override properties for components of the SoC. This patch series converts all MSM8916 boards to use the same style.
Additionally, in the second part of the series I attempt to reduce duplication within the MSM8916 board device trees a bit. If we keep copying a large number of properties to each and every board of a SoC then (in my opinion) it makes sense to consider if those can be shared in some include.
This will make it easier to add new boards in the future.
Stephan Gerhold (10):
arm64: dts: qcom: apq8016-sbc: Remove properties that are already
default
arm64: dts: qcom: msm8916: Declare sound node inmsm8916.dtsi
arm64: dts: qcom: apq8016-sbc: Define leds outside of soc node
arm64: dts: qcom: msm8916: Add more labels
arm64: dts: qcom: msm8916: Use labels in board device trees
arm64: dts: qcom: pm8916: Add resin node
arm64: dts: qcom: msm8916: Move PM8916-specific parts toQuoted 5 lines
msm8916-pm8916.dtsiarm64: dts: qcom: msm8916: Move more supplies to
msm8916-pm8916.dtsi
arm64: dts: qcom: msm8916: Set default pinctrl for blsp1_uart1/2
arm64: dts: qcom: msm8916: Move common USB properties tomsm8916.dtsi
Quoted 3 lines
It's been two months since I sent this series - are there any changes I should make? Maybe you just overlooked it :)
It seems to have been overlooked as we approached the v5.9 merge window. I don't have any complaints and have merge the series now.
Thanks,
Bjorn
Quoted 6 lines
Would be great to make some progress since I have a few more patch series ready to send out that build on top of this one (some more cleanup for MSM8916, converting MSM8916 to use rpmpd power domains, ...)
Thanks!
Stephan
Quoted 9 lines · Bjorn Andersson
Quoted 4 lines · Stephan Gerhold
It's been two months since I sent this series - are there any changes I should make? Maybe you just overlooked it :)
It seems to have been overlooked as we approached the v5.9 merge window. I don't have any complaints and have merge the series now.
Great, I used the chance and sent out the next series :)
Thank you!
Stephan