All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [RESEND PATCH 1/2] dm: Tidy up dump output when there are many devices
@ 2019-08-02 12:47 Patrick Delaunay
  2019-08-02 12:48 ` [U-Boot] [RESEND PATCH 2/2] dm: pinctrl: introduce PINCONF_RECURSIVE option Patrick Delaunay
  2019-09-27  1:48 ` [U-Boot] [RESEND PATCH 1/2] dm: Tidy up dump output when there are many devices Simon Glass
  0 siblings, 2 replies; 6+ messages in thread
From: Patrick Delaunay @ 2019-08-02 12:47 UTC (permalink / raw)
  To: u-boot

At present the 'Index' column of 'dm tree' assumes there is
two digits, this patch increase it to 3 digits.

It also aligns output of 'dm uclass', assuming the same 3 digits index.

The boards with CONFIG_PINCTRL_FULL activated have one pinconfig
by pin configuration, so they can have more than 100 devices
pinconfig (for example with stm32mp157c-ev1 board we have
106 pinconfig node).

Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
---

stm32mp157c-ev1 trace before the patch

STM32MP> dm tree
 Class     Index  Probed  Driver                Name
-----------------------------------------------------------
 root         0  [ + ]   root_driver           root_driver
 sysreset     0  [   ]   syscon_reboot         |-- reboot
....
 pinctrl      0  [ + ]   pinctrl_stm32         |   |-- pin-controller at 50002000
 gpio         0  [ + ]   gpio_stm32            |   |   |-- gpio at 50002000
 gpio         1  [ + ]   gpio_stm32            |   |   |-- gpio at 50003000
...
 gpio         9  [   ]   gpio_stm32            |   |   |-- gpio at 5000b000
 gpio        10  [   ]   gpio_stm32            |   |   |-- gpio at 5000c000
 pinconfig    0  [   ]   pinconfig             |   |   |-- adc12-usb-pwr-pins-0
 pinconfig   95  [   ]   pinconfig             |   |   |-- uart7-0
...
 pinconfig   99  [   ]   pinconfig             |   |       `-- pins
....
 pinctrl      1  [ + ]   pinctrl_stm32         |   |-- pin-controller-z at 54004000
 gpio        11  [ + ]   gpio_stm32            |   |   |-- gpio at 54004000
 pinconfig   100  [ + ]   pinconfig             |   |   |-- i2c4-0
 pinconfig   101  [   ]   pinconfig             |   |   |   `-- pins
....

STM32MP> dm uclass
.....
uclass 60: pinconfig
0   adc12-usb-pwr-pins-0 @ fdf56140
1   pins @ fdf56198
...
8   cec-sleep-1 @ fdf56400
9   pins @ fdf56458
10 * rgmii-0 @ fdf564b0, seq 5, (req -1)
11   pins1 @ fdf56508
...
98   usbotg_hs-0 @ fdf582f0
99   pins @ fdf58348
100 * i2c4-0 @ fdf58450, seq 0, (req -1)
101   pins @ fdf584a8
....

Full trace with the patch

STM32MP> dm tree
 Class     Index  Probed  Driver                Name
-----------------------------------------------------------
 root          0  [ + ]   root_driver           root_driver
 sysreset      0  [   ]   syscon_reboot         |-- reboot
 simple_bus    0  [ + ]   generic_simple_bus    |-- soc
 serial        0  [ + ]   serial_stm32          |   |-- serial at 40010000
 i2c           0  [   ]   stm32f7-i2c           |   |-- i2c at 40013000
 i2c_generi    0  [   ]   stmfx                 |   |   `-- stmfx at 42
 i2c           1  [   ]   stm32f7-i2c           |   |-- i2c at 40015000
 usb           0  [   ]   dwc2-udc-otg          |   |-- usb-otg at 49000000
 hwspinlock    0  [ + ]   hwspinlock_stm32mp1   |   |-- hwspinlock at 4c000000
 mailbox       0  [   ]   stm32_ipcc            |   |-- mailbox at 4c001000
 misc          0  [ + ]   stm32-rcc             |   |-- rcc at 50000000
 clk           0  [ + ]   stm32mp1_clk          |   |   |-- stm32mp1_clk
 reset         0  [ + ]   stm32_rcc_reset       |   |   `-- stm32_rcc_reset
 syscon        0  [ + ]   stmp32mp_syscon       |   |-- pwr at 50001000
 pmic          0  [ + ]   stm32mp_pwr_pmic      |   |   `-- pwr-regulators
 regulator     0  [ + ]   stm32mp_pwr_regulato  |   |       |-- reg11
 regulator     1  [ + ]   stm32mp_pwr_regulato  |   |       |-- reg18
 regulator     2  [ + ]   stm32mp_pwr_regulato  |   |       `-- usb33
 syscon        1  [   ]   syscon                |   |-- interrupt-controller at 5000d000
 syscon        2  [ + ]   stmp32mp_syscon       |   |-- syscon at 50020000
 mtd           0  [ + ]   stm32_fmc2_nand       |   |-- nand-controller at 58002000
 spi           0  [   ]   stm32_qspi            |   |-- spi at 58003000
 spi_flash     0  [   ]   spi_flash_std         |   |   |-- mx66l51235l at 0
 spi_flash     1  [   ]   spi_flash_std         |   |   `-- mx66l51235l at 1
 mmc           0  [ + ]   stm32_sdmmc2          |   |-- sdmmc at 58005000
 blk           0  [ + ]   mmc_blk               |   |   `-- sdmmc at 58005000.blk
 mmc           1  [ + ]   stm32_sdmmc2          |   |-- sdmmc at 58007000
 blk           1  [   ]   mmc_blk               |   |   `-- sdmmc at 58007000.blk
 eth           0  [ + ]   eth_eqos              |   |-- ethernet at 5800a000
 usb           0  [   ]   ehci_generic          |   |-- usbh-ehci at 5800d000
 phy           0  [   ]   stm32-usbphyc         |   |-- usbphyc at 5a006000
 i2c           2  [ + ]   stm32f7-i2c           |   |-- i2c at 5c002000
 pmic          1  [ + ]   stpmic1_pmic          |   |   `-- stpmic at 33
 regulator     3  [ + ]   stpmic1_buck          |   |       |-- buck1
 regulator     4  [ + ]   stpmic1_buck          |   |       |-- buck2
 regulator     5  [ + ]   stpmic1_buck          |   |       |-- buck3
 regulator     6  [ + ]   stpmic1_buck          |   |       |-- buck4
 regulator     7  [ + ]   stpmic1_ldo           |   |       |-- ldo1
 regulator     8  [ + ]   stpmic1_ldo           |   |       |-- ldo2
 regulator     9  [ + ]   stpmic1_ldo           |   |       |-- ldo3
 regulator    10  [ + ]   stpmic1_ldo           |   |       |-- ldo4
 regulator    11  [ + ]   stpmic1_ldo           |   |       |-- ldo5
 regulator    12  [ + ]   stpmic1_ldo           |   |       |-- ldo6
 regulator    13  [ + ]   stpmic1_vref_ddr      |   |       |-- vref_ddr
 regulator    14  [ + ]   stpmic1_boost         |   |       |-- boost
 regulator    15  [ + ]   stpmic1_pwr_sw        |   |       |-- pwr_sw1
 regulator    16  [ + ]   stpmic1_pwr_sw        |   |       |-- pwr_sw2
 sysreset      1  [   ]   stpmic1-sysreset      |   |       `-- stpmic1-sysreset
 rtc           0  [   ]   rtc-stm32             |   |-- rtc at 5c004000
 misc          1  [ + ]   stm32mp_bsec          |   |-- nvmem at 5c005000
 pinctrl       0  [ + ]   pinctrl_stm32         |   |-- pin-controller at 50002000
 gpio          0  [ + ]   gpio_stm32            |   |   |-- gpio at 50002000
 gpio          1  [ + ]   gpio_stm32            |   |   |-- gpio at 50003000
 gpio          2  [ + ]   gpio_stm32            |   |   |-- gpio at 50004000
 gpio          3  [ + ]   gpio_stm32            |   |   |-- gpio at 50005000
 gpio          4  [ + ]   gpio_stm32            |   |   |-- gpio at 50006000
 gpio          5  [ + ]   gpio_stm32            |   |   |-- gpio at 50007000
 gpio          6  [ + ]   gpio_stm32            |   |   |-- gpio at 50008000
 gpio          7  [ + ]   gpio_stm32            |   |   |-- gpio at 50009000
 gpio          8  [   ]   gpio_stm32            |   |   |-- gpio at 5000a000
 gpio          9  [   ]   gpio_stm32            |   |   |-- gpio at 5000b000
 gpio         10  [   ]   gpio_stm32            |   |   |-- gpio at 5000c000
 pinconfig     0  [   ]   pinconfig             |   |   |-- adc12-usb-pwr-pins-0
 pinconfig     1  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig     2  [   ]   pinconfig             |   |   |-- cec-0
 pinconfig     3  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig     4  [   ]   pinconfig             |   |   |-- cec-sleep-0
 pinconfig     5  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig     6  [   ]   pinconfig             |   |   |-- cec-1
 pinconfig     7  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig     8  [   ]   pinconfig             |   |   |-- cec-sleep-1
 pinconfig     9  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig    10  [ + ]   pinconfig             |   |   |-- rgmii-0
 pinconfig    11  [   ]   pinconfig             |   |   |   |-- pins1
 pinconfig    12  [   ]   pinconfig             |   |   |   |-- pins2
 pinconfig    13  [   ]   pinconfig             |   |   |   `-- pins3
 pinconfig    14  [   ]   pinconfig             |   |   |-- rgmii-sleep-0
 pinconfig    15  [   ]   pinconfig             |   |   |   `-- pins1
 pinconfig    16  [ + ]   pinconfig             |   |   |-- fmc-0
 pinconfig    17  [   ]   pinconfig             |   |   |   |-- pins1
 pinconfig    18  [   ]   pinconfig             |   |   |   `-- pins2
 pinconfig    19  [   ]   pinconfig             |   |   |-- fmc-sleep-0
 pinconfig    20  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig    21  [   ]   pinconfig             |   |   |-- i2c1-0
 pinconfig    22  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig    23  [   ]   pinconfig             |   |   |-- i2c1-1
 pinconfig    24  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig    25  [   ]   pinconfig             |   |   |-- i2c1-2
 pinconfig    26  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig    27  [   ]   pinconfig             |   |   |-- i2c2-0
 pinconfig    28  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig    29  [   ]   pinconfig             |   |   |-- i2c2-1
 pinconfig    30  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig    31  [   ]   pinconfig             |   |   |-- i2c2-2
 pinconfig    32  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig    33  [   ]   pinconfig             |   |   |-- i2c5-0
 pinconfig    34  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig    35  [   ]   pinconfig             |   |   |-- i2c5-1
 pinconfig    36  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig    37  [   ]   pinconfig             |   |   |-- ltdc-a-0
 pinconfig    38  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig    39  [   ]   pinconfig             |   |   |-- ltdc-a-1
 pinconfig    40  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig    41  [   ]   pinconfig             |   |   |-- ltdc-b-0
 pinconfig    42  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig    43  [   ]   pinconfig             |   |   |-- ltdc-b-1
 pinconfig    44  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig    45  [   ]   pinconfig             |   |   |-- m-can1-0
 pinconfig    46  [   ]   pinconfig             |   |   |   |-- pins1
 pinconfig    47  [   ]   pinconfig             |   |   |   `-- pins2
 pinconfig    48  [   ]   pinconfig             |   |   |-- m_can1-sleep at 0
 pinconfig    49  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig    50  [   ]   pinconfig             |   |   |-- pwm2-0
 pinconfig    51  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig    52  [   ]   pinconfig             |   |   |-- pwm8-0
 pinconfig    53  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig    54  [   ]   pinconfig             |   |   |-- pwm12-0
 pinconfig    55  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig    56  [   ]   pinconfig             |   |   |-- qspi-clk-0
 pinconfig    57  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig    58  [   ]   pinconfig             |   |   |-- qspi-bk1-0
 pinconfig    59  [   ]   pinconfig             |   |   |   |-- pins1
 pinconfig    60  [   ]   pinconfig             |   |   |   `-- pins2
 pinconfig    61  [   ]   pinconfig             |   |   |-- qspi-bk2-0
 pinconfig    62  [   ]   pinconfig             |   |   |   |-- pins1
 pinconfig    63  [   ]   pinconfig             |   |   |   `-- pins2
 pinconfig    64  [ + ]   pinconfig             |   |   |-- sdmmc1-b4-0
 pinconfig    65  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig    66  [   ]   pinconfig             |   |   |-- sdmmc1-b4-od-0
 pinconfig    67  [   ]   pinconfig             |   |   |   |-- pins1
 pinconfig    68  [   ]   pinconfig             |   |   |   `-- pins2
 pinconfig    69  [   ]   pinconfig             |   |   |-- sdmmc1-b4-sleep-0
 pinconfig    70  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig    71  [ + ]   pinconfig             |   |   |-- sdmmc1-dir-0
 pinconfig    72  [   ]   pinconfig             |   |   |   |-- pins1
 pinconfig    73  [   ]   pinconfig             |   |   |   `-- pins2
 pinconfig    74  [   ]   pinconfig             |   |   |-- sdmmc1-dir-sleep-0
 pinconfig    75  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig    76  [   ]   pinconfig             |   |   |-- sdmmc2-b4-0
 pinconfig    77  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig    78  [   ]   pinconfig             |   |   |-- sdmmc2-d47-0
 pinconfig    79  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig    80  [   ]   pinconfig             |   |   |-- spdifrx-0
 pinconfig    81  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig    82  [   ]   pinconfig             |   |   |-- spdifrx-1
 pinconfig    83  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig    84  [   ]   pinconfig             |   |   |-- spi2-0
 pinconfig    85  [   ]   pinconfig             |   |   |   |-- pins1
 pinconfig    86  [   ]   pinconfig             |   |   |   `-- pins2
 pinconfig    87  [   ]   pinconfig             |   |   |-- stusb1600-0
 pinconfig    88  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig    89  [ + ]   pinconfig             |   |   |-- uart4-0
 pinconfig    90  [   ]   pinconfig             |   |   |   |-- pins1
 pinconfig    91  [   ]   pinconfig             |   |   |   `-- pins2
 pinconfig    92  [   ]   pinconfig             |   |   |-- uart4-1
 pinconfig    93  [   ]   pinconfig             |   |   |   |-- pins1
 pinconfig    94  [   ]   pinconfig             |   |   |   `-- pins2
 pinconfig    95  [   ]   pinconfig             |   |   |-- uart7-0
 pinconfig    96  [   ]   pinconfig             |   |   |   |-- pins1
 pinconfig    97  [   ]   pinconfig             |   |   |   `-- pins2
 pinconfig    98  [   ]   pinconfig             |   |   `-- usbotg_hs-0
 pinconfig    99  [   ]   pinconfig             |   |       `-- pins
 pinctrl       1  [ + ]   pinctrl_stm32         |   |-- pin-controller-z at 54004000
 gpio         11  [ + ]   gpio_stm32            |   |   |-- gpio at 54004000
 pinconfig   100  [ + ]   pinconfig             |   |   |-- i2c4-0
 pinconfig   101  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig   102  [   ]   pinconfig             |   |   |-- i2c4-1
 pinconfig   103  [   ]   pinconfig             |   |   |   `-- pins
 pinconfig   104  [   ]   pinconfig             |   |   `-- spi1-0
 pinconfig   105  [   ]   pinconfig             |   |       |-- pins1
 pinconfig   106  [   ]   pinconfig             |   |       `-- pins2
 ram           0  [   ]   stm32mp1_ddr          |   `-- ddr at 5A003000
 regulator    17  [ + ]   gpio regulator        |-- regulator-sd_switch
 led           0  [ + ]   gpio_led              |-- led
 led           1  [ + ]   gpio_led              |   |-- red
 led           2  [ + ]   gpio_led              |   |-- green
 led           3  [ + ]   gpio_led              |   |-- orange
 led           4  [   ]   gpio_led              |   `-- blue
 clk           1  [ + ]   fixed_rate_clock      |-- clk-hse
 clk           2  [ + ]   fixed_rate_clock      |-- clk-hsi
 clk           3  [ + ]   fixed_rate_clock      |-- clk-lse
 clk           4  [ + ]   fixed_rate_clock      |-- clk-lsi
 clk           5  [ + ]   fixed_rate_clock      `-- clk-csi

STM32MP> dm uclass
uclass 0: root
0   * root_driver @ fdf4b0a8, seq 0, (req -1)

uclass 13: adc
uclass 17: blk
0   * sdmmc at 58005000.blk @ fdf4be70, seq 0, (req -1)
1     sdmmc at 58007000.blk @ fdf4c0f8

uclass 21: clk
0   * stm32mp1_clk @ fdf4b668, seq 0, (req -1)
1   * clk-hse @ fdf4fab8, seq 2, (req -1)
2   * clk-hsi @ fdf4fb40, seq 1, (req -1)
3   * clk-lse @ fdf4fbc8, seq 5, (req -1)
4   * clk-lsi @ fdf4fc50, seq 4, (req -1)
5   * clk-csi @ fdf4fcd8, seq 3, (req -1)

EFI: Initializing UCLASS_EFI
uclass 26: efi
uclass 27: eth
0   * ethernet at 5800a000 @ fdf4c208, seq 0, (req 0)

uclass 30: gpio
0   * gpio at 50002000 @ fdf4cdf0, seq 0, (req 0)
1   * gpio at 50003000 @ fdf4ce48, seq 1, (req 1)
2   * gpio at 50004000 @ fdf4cea0, seq 2, (req 2)
3   * gpio at 50005000 @ fdf4cef8, seq 3, (req 3)
4   * gpio at 50006000 @ fdf4cf50, seq 4, (req 4)
5   * gpio at 50007000 @ fdf4cfa8, seq 5, (req 5)
6   * gpio at 50008000 @ fdf4d000, seq 6, (req 6)
7   * gpio at 50009000 @ fdf4d058, seq 7, (req 7)
8     gpio at 5000a000 @ fdf4d0b0, seq -1, (req 8)
9     gpio at 5000b000 @ fdf4d108, seq -1, (req 9)
10    gpio at 5000c000 @ fdf4d160, seq -1, (req 10)
11  * gpio at 54004000 @ fdf4f490, seq 25, (req 25)

uclass 31: hwspinlock
0   * hwspinlock at 4c000000 @ fdf4b500, seq 0, (req -1)

uclass 32: i2c
0     i2c at 40013000 @ fdf4b2b8, seq -1, (req 1)
1     i2c at 40015000 @ fdf4b398, seq -1, (req 4)
2   * i2c at 5c002000 @ fdf4c380, seq 3, (req 3)

uclass 34: i2c_generic
0     stmfx at 42 @ fdf4b330

uclass 40: led
0   * led @ fdf4f8b0, seq 0, (req -1)
1   * red @ fdf4f918, seq 1, (req -1)
2   * green @ fdf4f980, seq 2, (req -1)
3   * orange @ fdf4f9e8, seq 3, (req -1)
4     blue @ fdf4fa50

uclass 42: mailbox
0     mailbox at 4c001000 @ fdf4b578

uclass 43: usb_mass_storage
uclass 46: misc
0   * rcc at 50000000 @ fdf4b5f0, seq 0, (req -1)
1   * nvmem at 5c005000 @ fdf4ccf0, seq 1, (req -1)

uclass 47: mmc
0   * sdmmc at 58005000 @ fdf4bca8, seq 0, (req 0)
1   * sdmmc at 58007000 @ fdf4bf50, seq 1, (req 1)

uclass 49: mtd
0   * nand-controller at 58002000 @ fdf4bac8, seq 0, (req -1)

uclass 50: nop
uclass 59: phy
0     usbphyc at 5a006000 @ fdf4c328

uclass 60: pinconfig
0     adc12-usb-pwr-pins-0 @ fdf4d1d8
1     pins @ fdf4d230
2     cec-0 @ fdf4d288
3     pins @ fdf4d2e0
4     cec-sleep-0 @ fdf4d338
5     pins @ fdf4d390
6     cec-1 @ fdf4d3e8
7     pins @ fdf4d440
8     cec-sleep-1 @ fdf4d498
9     pins @ fdf4d4f0
10  * rgmii-0 @ fdf4d548, seq 5, (req -1)
11    pins1 @ fdf4d5a0
12    pins2 @ fdf4d5f8
13    pins3 @ fdf4d650
14    rgmii-sleep-0 @ fdf4d6a8
15    pins1 @ fdf4d700
16  * fmc-0 @ fdf4d758, seq 2, (req -1)
17    pins1 @ fdf4d7b0
18    pins2 @ fdf4d808
19    fmc-sleep-0 @ fdf4d860
20    pins @ fdf4d8b8
21    i2c1-0 @ fdf4d910
22    pins @ fdf4d968
23    i2c1-1 @ fdf4d9c0
24    pins @ fdf4da18
25    i2c1-2 @ fdf4da70
26    pins @ fdf4dac8
27    i2c2-0 @ fdf4db20
28    pins @ fdf4db78
29    i2c2-1 @ fdf4dbd0
30    pins @ fdf4dc28
31    i2c2-2 @ fdf4dc80
32    pins @ fdf4dcd8
33    i2c5-0 @ fdf4dd30
34    pins @ fdf4dd88
35    i2c5-1 @ fdf4dde0
36    pins @ fdf4de38
37    ltdc-a-0 @ fdf4de90
38    pins @ fdf4dee8
39    ltdc-a-1 @ fdf4df40
40    pins @ fdf4df98
41    ltdc-b-0 @ fdf4dff0
42    pins @ fdf4e048
43    ltdc-b-1 @ fdf4e0a0
44    pins @ fdf4e0f8
45    m-can1-0 @ fdf4e150
46    pins1 @ fdf4e1a8
47    pins2 @ fdf4e200
48    m_can1-sleep at 0 @ fdf4e258
49    pins @ fdf4e2b0
50    pwm2-0 @ fdf4e308
51    pins @ fdf4e360
52    pwm8-0 @ fdf4e3b8
53    pins @ fdf4e410
54    pwm12-0 @ fdf4e468
55    pins @ fdf4e4c0
56    qspi-clk-0 @ fdf4e518
57    pins @ fdf4e570
58    qspi-bk1-0 @ fdf4e5c8
59    pins1 @ fdf4e620
60    pins2 @ fdf4e678
61    qspi-bk2-0 @ fdf4e6d0
62    pins1 @ fdf4e728
63    pins2 @ fdf4e780
64  * sdmmc1-b4-0 @ fdf4e7d8, seq 3, (req -1)
65    pins @ fdf4e830
66    sdmmc1-b4-od-0 @ fdf4e888
67    pins1 @ fdf4e8e0
68    pins2 @ fdf4e938
69    sdmmc1-b4-sleep-0 @ fdf4e990
70    pins @ fdf4e9e8
71  * sdmmc1-dir-0 @ fdf4ea40, seq 4, (req -1)
72    pins1 @ fdf4ea98
73    pins2 @ fdf4eaf0
74    sdmmc1-dir-sleep-0 @ fdf4eb48
75    pins @ fdf4eba0
76    sdmmc2-b4-0 @ fdf4ebf8
77    pins @ fdf4ec50
78    sdmmc2-d47-0 @ fdf4eca8
79    pins @ fdf4ed00
80    spdifrx-0 @ fdf4ed58
81    pins @ fdf4edb0
82    spdifrx-1 @ fdf4ee08
83    pins @ fdf4ee60
84    spi2-0 @ fdf4eeb8
85    pins1 @ fdf4ef10
86    pins2 @ fdf4ef68
87    stusb1600-0 @ fdf4efc0
88    pins @ fdf4f018
89  * uart4-0 @ fdf4f070, seq 1, (req -1)
90    pins1 @ fdf4f0c8
91    pins2 @ fdf4f120
92    uart4-1 @ fdf4f178
93    pins1 @ fdf4f1d0
94    pins2 @ fdf4f228
95    uart7-0 @ fdf4f280
96    pins1 @ fdf4f2d8
97    pins2 @ fdf4f330
98    usbotg_hs-0 @ fdf4f388
99    pins @ fdf4f3e0
100 * i2c4-0 @ fdf4f4e8, seq 0, (req -1)
101   pins @ fdf4f540
102   i2c4-1 @ fdf4f598
103   pins @ fdf4f5f0
104   spi1-0 @ fdf4f648
105   pins1 @ fdf4f6a0
106   pins2 @ fdf4f6f8

uclass 61: pinctrl
0   * pin-controller at 50002000 @ fdf4cd78, seq 0, (req 0)
1   * pin-controller-z at 54004000 @ fdf4f438, seq 1, (req 1)

uclass 62: pmic
0   * pwr-regulators @ fdf4b7d0, seq 0, (req -1)
1   * stpmic at 33 @ fdf4c3d8, seq 1, (req -1)

uclass 66: ram
0     ddr at 5A003000 @ fdf4f770

uclass 67: regulator
0   * reg11 @ fdf4b848, seq 0, (req -1)
1   * reg18 @ fdf4b8d8, seq 1, (req -1)
2   * usb33 @ fdf4b968, seq 2, (req -1)
3   * buck1 @ fdf4c440, seq 3, (req -1)
4   * buck2 @ fdf4c4d0, seq 4, (req -1)
5   * buck3 @ fdf4c560, seq 5, (req -1)
6   * buck4 @ fdf4c5f0, seq 6, (req -1)
7   * ldo1 @ fdf4c680, seq 7, (req -1)
8   * ldo2 @ fdf4c710, seq 8, (req -1)
9   * ldo3 @ fdf4c7a0, seq 9, (req -1)
10  * ldo4 @ fdf4c830, seq 10, (req -1)
11  * ldo5 @ fdf4c8c0, seq 11, (req -1)
12  * ldo6 @ fdf4c950, seq 12, (req -1)
13  * vref_ddr @ fdf4c9e0, seq 13, (req -1)
14  * boost @ fdf4ca70, seq 14, (req -1)
15  * pwr_sw1 @ fdf4cb00, seq 15, (req -1)
16  * pwr_sw2 @ fdf4cb90, seq 16, (req -1)
17  * regulator-sd_switch @ fdf4f7c8, seq 17, (req -1)

uclass 68: remoteproc
uclass 69: reset
0   * stm32_rcc_reset @ fdf4b6e0, seq 0, (req -1)

uclass 70: rtc
0     rtc at 5c004000 @ fdf4cc98

uclass 72: serial
0   * serial at 40010000 @ fdf4b220, seq 0, (req 0)

uclass 73: simple_bus
0   * soc @ fdf4b198, seq 0, (req -1)

uclass 76: spi
0     spi at 58003000 @ fdf4bb40, seq -1, (req 0)

uclass 77: spi_flash
0     mx66l51235l at 0 @ fdf4bbb8
1     mx66l51235l at 1 @ fdf4bc20

uclass 78: spi_generic
uclass 80: syscon
0   * pwr at 50001000 @ fdf4b758, seq 0, (req -1)
1     interrupt-controller at 5000d000 @ fdf4b9f8
2   * syscon at 50020000 @ fdf4ba50, seq 1, (req -1)

uclass 81: sysreset
0     reboot @ fdf4b120
1     stpmic1-sysreset @ fdf4cc20

uclass 86: usb
0     usbh-ehci at 5800d000 @ fdf4c2b0

uclass 87: usb_dev_generic
uclass 88: usb_hub
uclass 89: usb
0     usb-otg at 49000000 @ fdf4b410, seq -1, (req 0)


 drivers/core/dump.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/core/dump.c b/drivers/core/dump.c
index 8fbfd93..4704049 100644
--- a/drivers/core/dump.c
+++ b/drivers/core/dump.c
@@ -16,7 +16,7 @@ static void show_devices(struct udevice *dev, int depth, int last_flag)
 	struct udevice *child;
 
 	/* print the first 20 characters to not break the tree-format. */
-	printf(" %-10.10s  %2d  [ %c ]   %-20.20s  ", dev->uclass->uc_drv->name,
+	printf(" %-10.10s  %3d  [ %c ]   %-20.20s  ", dev->uclass->uc_drv->name,
 	       dev_get_uclass_index(dev, NULL),
 	       dev->flags & DM_FLAG_ACTIVATED ? '+' : ' ', dev->driver->name);
 
@@ -64,7 +64,7 @@ void dm_dump_all(void)
  */
 static void dm_display_line(struct udevice *dev, int index)
 {
-	printf("%i %c %s @ %08lx", index,
+	printf("%-3i %c %s @ %08lx", index,
 	       dev->flags & DM_FLAG_ACTIVATED ? '*' : ' ',
 	       dev->name, (ulong)map_to_sysmem(dev));
 	if (dev->seq != -1 || dev->req_seq != -1)
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [U-Boot] [RESEND PATCH 2/2] dm: pinctrl: introduce PINCONF_RECURSIVE option
  2019-08-02 12:47 [U-Boot] [RESEND PATCH 1/2] dm: Tidy up dump output when there are many devices Patrick Delaunay
@ 2019-08-02 12:48 ` Patrick Delaunay
  2019-08-13  9:34   ` Simon Glass
  2019-09-27  1:48 ` [U-Boot] [RESEND PATCH 1/2] dm: Tidy up dump output when there are many devices Simon Glass
  1 sibling, 1 reply; 6+ messages in thread
From: Patrick Delaunay @ 2019-08-02 12:48 UTC (permalink / raw)
  To: u-boot

In the Linux pinctrl binding, the pin configuration nodes don't need to
be direct children of the pin controller device (may be grandchildren for
example). This behavior is managed with the pinconfig u-class which
recursively bind all the sub-node of the pin controller.

But for some binding (when pin configuration is only children of pin
controller) that is not necessary. U-Boot can save memory and reduce
the number of pinconf instance when this feature is deactivated
(for arch stm32mp for example for SPL).

This patch allows to control this feature with a new option
CONFIG_PINCONF_RECURSIVE when it is possible for each individual
pin controller device.

Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
---

Hi,

Found her a proposal to have a more clear output of "dm tree" command
and to reduce the memory footprint of PINCTRL_FULL for the arch stm32mp1
(bdinfo "Early malloc usage" is reduced from 2588 to 2144).

On stm32mp157c-ev1, each pin configuration have one other
several sub node "pins"

pinctrl: pin-controller at 50002000 {
...
adc12_usb_pwr_pins_a: adc12-usb-pwr-pins-0 {
	pins {
		pinmux = <STM32_PINMUX('A', 4, ANALOG)>, /* ADC12 in18 */
			 <STM32_PINMUX('A', 5, ANALOG)>; /* ADC12 in19 */
	};
};

cec_pins_a: cec-0 {
	pins {
		pinmux = <STM32_PINMUX('A', 15, AF4)>;
		bias-disable;
		drive-open-drain;
		slew-rate = <0>;
	};
};

cec_pins_sleep_a: cec-sleep-0 {
	pins {
		pinmux = <STM32_PINMUX('A', 15, ANALOG)>; /* HDMI_CEC */
	};
};
...
ethernet0_rgmii_pins_a: rgmii-0 {
	pins1 {
		pinmux = <STM32_PINMUX('G', 5, AF11)>, /* ETH_RGMII_CLK125 */
			 <STM32_PINMUX('G', 4, AF11)>, /* ETH_RGMII_GTX_CLK */
			 <STM32_PINMUX('G', 13, AF11)>, /* ETH_RGMII_TXD0 */
			 <STM32_PINMUX('G', 14, AF11)>, /* ETH_RGMII_TXD1 */
			 <STM32_PINMUX('C', 2, AF11)>, /* ETH_RGMII_TXD2 */
			 <STM32_PINMUX('E', 2, AF11)>, /* ETH_RGMII_TXD3 */
			 <STM32_PINMUX('B', 11, AF11)>, /* ETH_RGMII_TX_CTL */
			 <STM32_PINMUX('C', 1, AF11)>; /* ETH_MDC */
		bias-disable;
		drive-push-pull;
		slew-rate = <2>;
	};
	pins2 {
		pinmux = <STM32_PINMUX('A', 2, AF11)>; /* ETH_MDIO */
		bias-disable;
		drive-push-pull;
		slew-rate = <0>;
	};
	pins3 {
		pinmux = <STM32_PINMUX('C', 4, AF11)>, /* ETH_RGMII_RXD0 */
			 <STM32_PINMUX('C', 5, AF11)>, /* ETH_RGMII_RXD1 */
			 <STM32_PINMUX('B', 0, AF11)>, /* ETH_RGMII_RXD2 */
			 <STM32_PINMUX('B', 1, AF11)>, /* ETH_RGMII_RXD3 */
			 <STM32_PINMUX('A', 1, AF11)>, /* ETH_RGMII_RX_CLK */
			 <STM32_PINMUX('A', 7, AF11)>; /* ETH_RGMII_RX_CTL */
		bias-disable;
		};
	};
...

before the patch all "pins" subnode are bounded but are unused.

    STM32MP> dm tree
     Class     Index  Probed  Driver                Name
    -----------------------------------------------------------
     root          0  [ + ]   root_driver           root_driver
     sysreset      0  [   ]   syscon_reboot         |-- reboot
     simple_bus    0  [ + ]   generic_simple_bus    |-- soc
     serial        0  [ + ]   serial_stm32          |   |-- serial at 40010000
     i2c           0  [   ]   stm32f7-i2c           |   |-- i2c at 40013000
     i2c_generi    0  [   ]   stmfx                 |   |   `-- stmfx at 42
     i2c           1  [   ]   stm32f7-i2c           |   |-- i2c at 40015000
     usb           0  [   ]   dwc2-udc-otg          |   |-- usb-otg at 49000000
     hwspinlock    0  [ + ]   hwspinlock_stm32mp1   |   |-- hwspinlock at 4c000000
     mailbox       0  [   ]   stm32_ipcc            |   |-- mailbox at 4c001000
     misc          0  [ + ]   stm32-rcc             |   |-- rcc at 50000000
     clk           0  [ + ]   stm32mp1_clk          |   |   |-- stm32mp1_clk
     reset         0  [ + ]   stm32_rcc_reset       |   |   `-- stm32_rcc_reset
     syscon        0  [ + ]   stmp32mp_syscon       |   |-- pwr at 50001000
     pmic          0  [ + ]   stm32mp_pwr_pmic      |   |   `-- pwr-regulators
     regulator     0  [ + ]   stm32mp_pwr_regulato  |   |       |-- reg11
     regulator     1  [ + ]   stm32mp_pwr_regulato  |   |       |-- reg18
     regulator     2  [ + ]   stm32mp_pwr_regulato  |   |       `-- usb33
     syscon        1  [   ]   syscon                |   |-- interrupt-controller at 5000d000
     syscon        2  [ + ]   stmp32mp_syscon       |   |-- syscon at 50020000
     mtd           0  [ + ]   stm32_fmc2_nand       |   |-- nand-controller at 58002000
     spi           0  [   ]   stm32_qspi            |   |-- spi at 58003000
     spi_flash     0  [   ]   spi_flash_std         |   |   |-- mx66l51235l at 0
     spi_flash     1  [   ]   spi_flash_std         |   |   `-- mx66l51235l at 1
     mmc           0  [ + ]   stm32_sdmmc2          |   |-- sdmmc at 58005000
     blk           0  [ + ]   mmc_blk               |   |   `-- sdmmc at 58005000.blk
     mmc           1  [ + ]   stm32_sdmmc2          |   |-- sdmmc at 58007000
     blk           1  [   ]   mmc_blk               |   |   `-- sdmmc at 58007000.blk
     eth           0  [ + ]   eth_eqos              |   |-- ethernet at 5800a000
     usb           0  [   ]   ehci_generic          |   |-- usbh-ehci at 5800d000
     phy           0  [   ]   stm32-usbphyc         |   |-- usbphyc at 5a006000
     i2c           2  [ + ]   stm32f7-i2c           |   |-- i2c at 5c002000
     pmic          1  [ + ]   stpmic1_pmic          |   |   `-- stpmic at 33
     regulator     3  [ + ]   stpmic1_buck          |   |       |-- buck1
     regulator     4  [ + ]   stpmic1_buck          |   |       |-- buck2
     regulator     5  [ + ]   stpmic1_buck          |   |       |-- buck3
     regulator     6  [ + ]   stpmic1_buck          |   |       |-- buck4
     regulator     7  [ + ]   stpmic1_ldo           |   |       |-- ldo1
     regulator     8  [ + ]   stpmic1_ldo           |   |       |-- ldo2
     regulator     9  [ + ]   stpmic1_ldo           |   |       |-- ldo3
     regulator    10  [ + ]   stpmic1_ldo           |   |       |-- ldo4
     regulator    11  [ + ]   stpmic1_ldo           |   |       |-- ldo5
     regulator    12  [ + ]   stpmic1_ldo           |   |       |-- ldo6
     regulator    13  [ + ]   stpmic1_vref_ddr      |   |       |-- vref_ddr
     regulator    14  [ + ]   stpmic1_boost         |   |       |-- boost
     regulator    15  [ + ]   stpmic1_pwr_sw        |   |       |-- pwr_sw1
     regulator    16  [ + ]   stpmic1_pwr_sw        |   |       |-- pwr_sw2
     sysreset      1  [   ]   stpmic1-sysreset      |   |       `-- stpmic1-sysreset
     rtc           0  [   ]   rtc-stm32             |   |-- rtc at 5c004000
     misc          1  [ + ]   stm32mp_bsec          |   |-- nvmem at 5c005000
     pinctrl       0  [ + ]   pinctrl_stm32         |   |-- pin-controller at 50002000
     gpio          0  [ + ]   gpio_stm32            |   |   |-- gpio at 50002000
     gpio          1  [ + ]   gpio_stm32            |   |   |-- gpio at 50003000
     gpio          2  [ + ]   gpio_stm32            |   |   |-- gpio at 50004000
     gpio          3  [ + ]   gpio_stm32            |   |   |-- gpio at 50005000
     gpio          4  [ + ]   gpio_stm32            |   |   |-- gpio at 50006000
     gpio          5  [ + ]   gpio_stm32            |   |   |-- gpio at 50007000
     gpio          6  [ + ]   gpio_stm32            |   |   |-- gpio at 50008000
     gpio          7  [ + ]   gpio_stm32            |   |   |-- gpio at 50009000
     gpio          8  [   ]   gpio_stm32            |   |   |-- gpio at 5000a000
     gpio          9  [   ]   gpio_stm32            |   |   |-- gpio at 5000b000
     gpio         10  [   ]   gpio_stm32            |   |   |-- gpio at 5000c000
     pinconfig     0  [   ]   pinconfig             |   |   |-- adc12-usb-pwr-pins-0
     pinconfig     1  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig     2  [   ]   pinconfig             |   |   |-- cec-0
     pinconfig     3  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig     4  [   ]   pinconfig             |   |   |-- cec-sleep-0
     pinconfig     5  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig     6  [   ]   pinconfig             |   |   |-- cec-1
     pinconfig     7  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig     8  [   ]   pinconfig             |   |   |-- cec-sleep-1
     pinconfig     9  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig    10  [ + ]   pinconfig             |   |   |-- rgmii-0
     pinconfig    11  [   ]   pinconfig             |   |   |   |-- pins1
     pinconfig    12  [   ]   pinconfig             |   |   |   |-- pins2
     pinconfig    13  [   ]   pinconfig             |   |   |   `-- pins3
     pinconfig    14  [   ]   pinconfig             |   |   |-- rgmii-sleep-0
     pinconfig    15  [   ]   pinconfig             |   |   |   `-- pins1
     pinconfig    16  [ + ]   pinconfig             |   |   |-- fmc-0
     pinconfig    17  [   ]   pinconfig             |   |   |   |-- pins1
     pinconfig    18  [   ]   pinconfig             |   |   |   `-- pins2
     pinconfig    19  [   ]   pinconfig             |   |   |-- fmc-sleep-0
     pinconfig    20  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig    21  [   ]   pinconfig             |   |   |-- i2c1-0
     pinconfig    22  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig    23  [   ]   pinconfig             |   |   |-- i2c1-1
     pinconfig    24  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig    25  [   ]   pinconfig             |   |   |-- i2c1-2
     pinconfig    26  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig    27  [   ]   pinconfig             |   |   |-- i2c2-0
     pinconfig    28  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig    29  [   ]   pinconfig             |   |   |-- i2c2-1
     pinconfig    30  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig    31  [   ]   pinconfig             |   |   |-- i2c2-2
     pinconfig    32  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig    33  [   ]   pinconfig             |   |   |-- i2c5-0
     pinconfig    34  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig    35  [   ]   pinconfig             |   |   |-- i2c5-1
     pinconfig    36  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig    37  [   ]   pinconfig             |   |   |-- ltdc-a-0
     pinconfig    38  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig    39  [   ]   pinconfig             |   |   |-- ltdc-a-1
     pinconfig    40  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig    41  [   ]   pinconfig             |   |   |-- ltdc-b-0
     pinconfig    42  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig    43  [   ]   pinconfig             |   |   |-- ltdc-b-1
     pinconfig    44  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig    45  [   ]   pinconfig             |   |   |-- m-can1-0
     pinconfig    46  [   ]   pinconfig             |   |   |   |-- pins1
     pinconfig    47  [   ]   pinconfig             |   |   |   `-- pins2
     pinconfig    48  [   ]   pinconfig             |   |   |-- m_can1-sleep at 0
     pinconfig    49  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig    50  [   ]   pinconfig             |   |   |-- pwm2-0
     pinconfig    51  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig    52  [   ]   pinconfig             |   |   |-- pwm8-0
     pinconfig    53  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig    54  [   ]   pinconfig             |   |   |-- pwm12-0
     pinconfig    55  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig    56  [   ]   pinconfig             |   |   |-- qspi-clk-0
     pinconfig    57  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig    58  [   ]   pinconfig             |   |   |-- qspi-bk1-0
     pinconfig    59  [   ]   pinconfig             |   |   |   |-- pins1
     pinconfig    60  [   ]   pinconfig             |   |   |   `-- pins2
     pinconfig    61  [   ]   pinconfig             |   |   |-- qspi-bk2-0
     pinconfig    62  [   ]   pinconfig             |   |   |   |-- pins1
     pinconfig    63  [   ]   pinconfig             |   |   |   `-- pins2
     pinconfig    64  [ + ]   pinconfig             |   |   |-- sdmmc1-b4-0
     pinconfig    65  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig    66  [   ]   pinconfig             |   |   |-- sdmmc1-b4-od-0
     pinconfig    67  [   ]   pinconfig             |   |   |   |-- pins1
     pinconfig    68  [   ]   pinconfig             |   |   |   `-- pins2
     pinconfig    69  [   ]   pinconfig             |   |   |-- sdmmc1-b4-sleep-0
     pinconfig    70  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig    71  [ + ]   pinconfig             |   |   |-- sdmmc1-dir-0
     pinconfig    72  [   ]   pinconfig             |   |   |   |-- pins1
     pinconfig    73  [   ]   pinconfig             |   |   |   `-- pins2
     pinconfig    74  [   ]   pinconfig             |   |   |-- sdmmc1-dir-sleep-0
     pinconfig    75  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig    76  [   ]   pinconfig             |   |   |-- sdmmc2-b4-0
     pinconfig    77  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig    78  [   ]   pinconfig             |   |   |-- sdmmc2-d47-0
     pinconfig    79  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig    80  [   ]   pinconfig             |   |   |-- spdifrx-0
     pinconfig    81  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig    82  [   ]   pinconfig             |   |   |-- spdifrx-1
     pinconfig    83  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig    84  [   ]   pinconfig             |   |   |-- spi2-0
     pinconfig    85  [   ]   pinconfig             |   |   |   |-- pins1
     pinconfig    86  [   ]   pinconfig             |   |   |   `-- pins2
     pinconfig    87  [   ]   pinconfig             |   |   |-- stusb1600-0
     pinconfig    88  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig    89  [ + ]   pinconfig             |   |   |-- uart4-0
     pinconfig    90  [   ]   pinconfig             |   |   |   |-- pins1
     pinconfig    91  [   ]   pinconfig             |   |   |   `-- pins2
     pinconfig    92  [   ]   pinconfig             |   |   |-- uart4-1
     pinconfig    93  [   ]   pinconfig             |   |   |   |-- pins1
     pinconfig    94  [   ]   pinconfig             |   |   |   `-- pins2
     pinconfig    95  [   ]   pinconfig             |   |   |-- uart7-0
     pinconfig    96  [   ]   pinconfig             |   |   |   |-- pins1
     pinconfig    97  [   ]   pinconfig             |   |   |   `-- pins2
     pinconfig    98  [   ]   pinconfig             |   |   `-- usbotg_hs-0
     pinconfig    99  [   ]   pinconfig             |   |       `-- pins
     pinctrl       1  [ + ]   pinctrl_stm32         |   |-- pin-controller-z at 54004000
     gpio         11  [ + ]   gpio_stm32            |   |   |-- gpio at 54004000
     pinconfig   100  [ + ]   pinconfig             |   |   |-- i2c4-0
     pinconfig   101  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig   102  [   ]   pinconfig             |   |   |-- i2c4-1
     pinconfig   103  [   ]   pinconfig             |   |   |   `-- pins
     pinconfig   104  [   ]   pinconfig             |   |   `-- spi1-0
     pinconfig   105  [   ]   pinconfig             |   |       |-- pins1
     pinconfig   106  [   ]   pinconfig             |   |       `-- pins2
     ram           0  [   ]   stm32mp1_ddr          |   `-- ddr at 5A003000
     regulator    17  [ + ]   gpio regulator        |-- regulator-sd_switch
     led           0  [ + ]   gpio_led              |-- led
     led           1  [ + ]   gpio_led              |   |-- red
     led           2  [ + ]   gpio_led              |   |-- green
     led           3  [ + ]   gpio_led              |   |-- orange
     led           4  [   ]   gpio_led              |   `-- blue
     clk           1  [ + ]   fixed_rate_clock      |-- clk-hse
     clk           2  [ + ]   fixed_rate_clock      |-- clk-hsi
     clk           3  [ + ]   fixed_rate_clock      |-- clk-lse
     clk           4  [ + ]   fixed_rate_clock      |-- clk-lsi
     clk           5  [ + ]   fixed_rate_clock      `-- clk-csi

With the patch only the needed "pinconfig" instances are kept:

STM32MP> dm tree
 Class     Index  Probed  Driver                Name
-----------------------------------------------------------
 root          0  [ + ]   root_driver           root_driver
 sysreset      0  [   ]   syscon_reboot         |-- reboot
 simple_bus    0  [ + ]   generic_simple_bus    |-- soc
 serial        0  [ + ]   serial_stm32          |   |-- serial at 40010000
 i2c           0  [   ]   stm32f7-i2c           |   |-- i2c at 40013000
 i2c_generi    0  [   ]   stmfx                 |   |   `-- stmfx at 42
 i2c           1  [   ]   stm32f7-i2c           |   |-- i2c at 40015000
 usb           0  [   ]   dwc2-udc-otg          |   |-- usb-otg at 49000000
 hwspinlock    0  [ + ]   hwspinlock_stm32mp1   |   |-- hwspinlock at 4c000000
 mailbox       0  [   ]   stm32_ipcc            |   |-- mailbox at 4c001000
 misc          0  [ + ]   stm32-rcc             |   |-- rcc at 50000000
 clk           0  [ + ]   stm32mp1_clk          |   |   |-- stm32mp1_clk
 reset         0  [ + ]   stm32_rcc_reset       |   |   `-- stm32_rcc_reset
 syscon        0  [ + ]   stmp32mp_syscon       |   |-- pwr at 50001000
 pmic          0  [ + ]   stm32mp_pwr_pmic      |   |   `-- pwr-regulators
 regulator     0  [ + ]   stm32mp_pwr_regulato  |   |       |-- reg11
 regulator     1  [ + ]   stm32mp_pwr_regulato  |   |       |-- reg18
 regulator     2  [ + ]   stm32mp_pwr_regulato  |   |       `-- usb33
 syscon        1  [   ]   syscon                |   |-- interrupt-controller at 5000d000
 syscon        2  [ + ]   stmp32mp_syscon       |   |-- syscon at 50020000
 mtd           0  [ + ]   stm32_fmc2_nand       |   |-- nand-controller at 58002000
 spi           0  [   ]   stm32_qspi            |   |-- spi at 58003000
 spi_flash     0  [   ]   spi_flash_std         |   |   |-- mx66l51235l at 0
 spi_flash     1  [   ]   spi_flash_std         |   |   `-- mx66l51235l at 1
 mmc           0  [ + ]   stm32_sdmmc2          |   |-- sdmmc at 58005000
 blk           0  [ + ]   mmc_blk               |   |   `-- sdmmc at 58005000.blk
 mmc           1  [ + ]   stm32_sdmmc2          |   |-- sdmmc at 58007000
 blk           1  [   ]   mmc_blk               |   |   `-- sdmmc at 58007000.blk
 eth           0  [ + ]   eth_eqos              |   |-- ethernet at 5800a000
 usb           0  [   ]   ehci_generic          |   |-- usbh-ehci at 5800d000
 phy           0  [   ]   stm32-usbphyc         |   |-- usbphyc at 5a006000
 i2c           2  [ + ]   stm32f7-i2c           |   |-- i2c at 5c002000
 pmic          1  [ + ]   stpmic1_pmic          |   |   `-- stpmic at 33
 regulator     3  [ + ]   stpmic1_buck          |   |       |-- buck1
 regulator     4  [ + ]   stpmic1_buck          |   |       |-- buck2
 regulator     5  [ + ]   stpmic1_buck          |   |       |-- buck3
 regulator     6  [ + ]   stpmic1_buck          |   |       |-- buck4
 regulator     7  [ + ]   stpmic1_ldo           |   |       |-- ldo1
 regulator     8  [ + ]   stpmic1_ldo           |   |       |-- ldo2
 regulator     9  [ + ]   stpmic1_ldo           |   |       |-- ldo3
 regulator    10  [ + ]   stpmic1_ldo           |   |       |-- ldo4
 regulator    11  [ + ]   stpmic1_ldo           |   |       |-- ldo5
 regulator    12  [ + ]   stpmic1_ldo           |   |       |-- ldo6
 regulator    13  [ + ]   stpmic1_vref_ddr      |   |       |-- vref_ddr
 regulator    14  [ + ]   stpmic1_boost         |   |       |-- boost
 regulator    15  [ + ]   stpmic1_pwr_sw        |   |       |-- pwr_sw1
 regulator    16  [ + ]   stpmic1_pwr_sw        |   |       |-- pwr_sw2
 sysreset      1  [   ]   stpmic1-sysreset      |   |       `-- stpmic1-sysreset
 rtc           0  [   ]   rtc-stm32             |   |-- rtc at 5c004000
 misc          1  [ + ]   stm32mp_bsec          |   |-- nvmem at 5c005000
 pinctrl       0  [ + ]   pinctrl_stm32         |   |-- pin-controller at 50002000
 gpio          0  [ + ]   gpio_stm32            |   |   |-- gpio at 50002000
 gpio          1  [ + ]   gpio_stm32            |   |   |-- gpio at 50003000
 gpio          2  [ + ]   gpio_stm32            |   |   |-- gpio at 50004000
 gpio          3  [ + ]   gpio_stm32            |   |   |-- gpio at 50005000
 gpio          4  [ + ]   gpio_stm32            |   |   |-- gpio at 50006000
 gpio          5  [ + ]   gpio_stm32            |   |   |-- gpio at 50007000
 gpio          6  [ + ]   gpio_stm32            |   |   |-- gpio at 50008000
 gpio          7  [ + ]   gpio_stm32            |   |   |-- gpio at 50009000
 gpio          8  [   ]   gpio_stm32            |   |   |-- gpio at 5000a000
 gpio          9  [   ]   gpio_stm32            |   |   |-- gpio at 5000b000
 gpio         10  [   ]   gpio_stm32            |   |   |-- gpio at 5000c000
 pinconfig     0  [   ]   pinconfig             |   |   |-- adc12-usb-pwr-pins-0
 pinconfig     1  [   ]   pinconfig             |   |   |-- cec-0
 pinconfig     2  [   ]   pinconfig             |   |   |-- cec-sleep-0
 pinconfig     3  [   ]   pinconfig             |   |   |-- cec-1
 pinconfig     4  [   ]   pinconfig             |   |   |-- cec-sleep-1
 pinconfig     5  [ + ]   pinconfig             |   |   |-- rgmii-0
 pinconfig     6  [   ]   pinconfig             |   |   |-- rgmii-sleep-0
 pinconfig     7  [ + ]   pinconfig             |   |   |-- fmc-0
 pinconfig     8  [   ]   pinconfig             |   |   |-- fmc-sleep-0
 pinconfig     9  [   ]   pinconfig             |   |   |-- i2c1-0
 pinconfig    10  [   ]   pinconfig             |   |   |-- i2c1-1
 pinconfig    11  [   ]   pinconfig             |   |   |-- i2c1-2
 pinconfig    12  [   ]   pinconfig             |   |   |-- i2c2-0
 pinconfig    13  [   ]   pinconfig             |   |   |-- i2c2-1
 pinconfig    14  [   ]   pinconfig             |   |   |-- i2c2-2
 pinconfig    15  [   ]   pinconfig             |   |   |-- i2c5-0
 pinconfig    16  [   ]   pinconfig             |   |   |-- i2c5-1
 pinconfig    17  [   ]   pinconfig             |   |   |-- ltdc-a-0
 pinconfig    18  [   ]   pinconfig             |   |   |-- ltdc-a-1
 pinconfig    19  [   ]   pinconfig             |   |   |-- ltdc-b-0
 pinconfig    20  [   ]   pinconfig             |   |   |-- ltdc-b-1
 pinconfig    21  [   ]   pinconfig             |   |   |-- m-can1-0
 pinconfig    22  [   ]   pinconfig             |   |   |-- m_can1-sleep at 0
 pinconfig    23  [   ]   pinconfig             |   |   |-- pwm2-0
 pinconfig    24  [   ]   pinconfig             |   |   |-- pwm8-0
 pinconfig    25  [   ]   pinconfig             |   |   |-- pwm12-0
 pinconfig    26  [   ]   pinconfig             |   |   |-- qspi-clk-0
 pinconfig    27  [   ]   pinconfig             |   |   |-- qspi-bk1-0
 pinconfig    28  [   ]   pinconfig             |   |   |-- qspi-bk2-0
 pinconfig    29  [ + ]   pinconfig             |   |   |-- sdmmc1-b4-0
 pinconfig    30  [   ]   pinconfig             |   |   |-- sdmmc1-b4-od-0
 pinconfig    31  [   ]   pinconfig             |   |   |-- sdmmc1-b4-sleep-0
 pinconfig    32  [ + ]   pinconfig             |   |   |-- sdmmc1-dir-0
 pinconfig    33  [   ]   pinconfig             |   |   |-- sdmmc1-dir-sleep-0
 pinconfig    34  [   ]   pinconfig             |   |   |-- sdmmc2-b4-0
 pinconfig    35  [   ]   pinconfig             |   |   |-- sdmmc2-d47-0
 pinconfig    36  [   ]   pinconfig             |   |   |-- spdifrx-0
 pinconfig    37  [   ]   pinconfig             |   |   |-- spdifrx-1
 pinconfig    38  [   ]   pinconfig             |   |   |-- spi2-0
 pinconfig    39  [   ]   pinconfig             |   |   |-- stusb1600-0
 pinconfig    40  [ + ]   pinconfig             |   |   |-- uart4-0
 pinconfig    41  [   ]   pinconfig             |   |   |-- uart4-1
 pinconfig    42  [   ]   pinconfig             |   |   |-- uart7-0
 pinconfig    43  [   ]   pinconfig             |   |   `-- usbotg_hs-0
 pinctrl       1  [ + ]   pinctrl_stm32         |   |-- pin-controller-z at 54004000
 gpio         11  [ + ]   gpio_stm32            |   |   |-- gpio at 54004000
 pinconfig    44  [ + ]   pinconfig             |   |   |-- i2c4-0
 pinconfig    45  [   ]   pinconfig             |   |   |-- i2c4-1
 pinconfig    46  [   ]   pinconfig             |   |   `-- spi1-0
 ram           0  [   ]   stm32mp1_ddr          |   `-- ddr at 5A003000
 regulator    17  [ + ]   gpio regulator        |-- regulator-sd_switch
 led           0  [ + ]   gpio_led              |-- led
 led           1  [ + ]   gpio_led              |   |-- red
 led           2  [ + ]   gpio_led              |   |-- green
 led           3  [ + ]   gpio_led              |   |-- orange
 led           4  [   ]   gpio_led              |   `-- blue
 clk           1  [ + ]   fixed_rate_clock      |-- clk-hse
 clk           2  [ + ]   fixed_rate_clock      |-- clk-hsi
 clk           3  [ + ]   fixed_rate_clock      |-- clk-lse
 clk           4  [ + ]   fixed_rate_clock      |-- clk-lsi
 clk           5  [ + ]   fixed_rate_clock      `-- clk-csi


 drivers/pinctrl/Kconfig          | 25 +++++++++++++++++++++++++
 drivers/pinctrl/pinctrl-uclass.c |  2 ++
 2 files changed, 27 insertions(+)

diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig
index a0ac167..deee924 100644
--- a/drivers/pinctrl/Kconfig
+++ b/drivers/pinctrl/Kconfig
@@ -59,6 +59,22 @@ config PINCONF
 	  This option enables pin configuration through the generic pinctrl
 	  framework.
 
+config PINCONF_RECURSIVE
+	bool "Support recursive binding for pin configuration nodes"
+	depends on PINCTRL_FULL
+	default n if ARCH_STM32MP
+	default y
+	help
+	  In the Linux pinctrl binding, the pin configuration nodes need not be
+	  direct children of the pin controller device (may be grandchildren for
+	  example). It is define is each individual pin controller device.
+	  Say Y here if you want to keep this behavior with the pinconfig
+	  u-class: all sub are recursivelly bounded.
+	  If the option is disabled, this behavior is deactivated and only
+	  the direct children of pin controller will be assumed as pin
+	  configuration; you can save memory footprint when this feature is
+	  no needed.
+
 config SPL_PINCTRL
 	bool "Support pin controllers in SPL"
 	depends on SPL && SPL_DM
@@ -104,6 +120,15 @@ config SPL_PINCONF
 	  This option is an SPL-variant of the PINCONF option.
 	  See the help of PINCONF for details.
 
+config SPL_PINCONF_RECURSIVE
+	bool "Support recursive binding for pin configuration nodes in SPL"
+	depends on SPL_PINCTRL_FULL
+	default n if ARCH_STM32MP
+	default y
+	help
+	  This option is an SPL-variant of the PINCONF_RECURSIVE option.
+	  See the help of PINCONF_RECURSIVE for details.
+
 if PINCTRL || SPL_PINCTRL
 
 config PINCTRL_AR933X
diff --git a/drivers/pinctrl/pinctrl-uclass.c b/drivers/pinctrl/pinctrl-uclass.c
index 5b1cd29..bf799a7 100644
--- a/drivers/pinctrl/pinctrl-uclass.c
+++ b/drivers/pinctrl/pinctrl-uclass.c
@@ -151,7 +151,9 @@ static int pinconfig_post_bind(struct udevice *dev)
 
 UCLASS_DRIVER(pinconfig) = {
 	.id = UCLASS_PINCONFIG,
+#if CONFIG_IS_ENABLED(PINCONFIG_RECURSIVE)
 	.post_bind = pinconfig_post_bind,
+#endif
 	.name = "pinconfig",
 };
 
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [U-Boot] [RESEND PATCH 2/2] dm: pinctrl: introduce PINCONF_RECURSIVE option
  2019-08-02 12:48 ` [U-Boot] [RESEND PATCH 2/2] dm: pinctrl: introduce PINCONF_RECURSIVE option Patrick Delaunay
@ 2019-08-13  9:34   ` Simon Glass
  2019-10-12  2:55     ` Simon Glass
  0 siblings, 1 reply; 6+ messages in thread
From: Simon Glass @ 2019-08-13  9:34 UTC (permalink / raw)
  To: u-boot

On Fri, 2 Aug 2019 at 06:48, Patrick Delaunay <patrick.delaunay@st.com> wrote:
>
> In the Linux pinctrl binding, the pin configuration nodes don't need to
> be direct children of the pin controller device (may be grandchildren for
> example). This behavior is managed with the pinconfig u-class which
> recursively bind all the sub-node of the pin controller.
>
> But for some binding (when pin configuration is only children of pin
> controller) that is not necessary. U-Boot can save memory and reduce
> the number of pinconf instance when this feature is deactivated
> (for arch stm32mp for example for SPL).
>
> This patch allows to control this feature with a new option
> CONFIG_PINCONF_RECURSIVE when it is possible for each individual
> pin controller device.
>
> Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
> ---
>

Reviewed-by: Simon Glass <sjg@chromium.org>
> Hi,
>
> Found her a proposal to have a more clear output of "dm tree" command
> and to reduce the memory footprint of PINCTRL_FULL for the arch stm32mp1
> (bdinfo "Early malloc usage" is reduced from 2588 to 2144).

Gosh that is still a lot! But a nice improvement.

Regards,
Simon

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [RESEND PATCH 1/2] dm: Tidy up dump output when there are many devices
  2019-08-02 12:47 [U-Boot] [RESEND PATCH 1/2] dm: Tidy up dump output when there are many devices Patrick Delaunay
  2019-08-02 12:48 ` [U-Boot] [RESEND PATCH 2/2] dm: pinctrl: introduce PINCONF_RECURSIVE option Patrick Delaunay
@ 2019-09-27  1:48 ` Simon Glass
  2019-09-30  8:12   ` [U-Boot] [Uboot-stm32] " Patrick DELAUNAY
  1 sibling, 1 reply; 6+ messages in thread
From: Simon Glass @ 2019-09-27  1:48 UTC (permalink / raw)
  To: u-boot

Hi Patrick,

On Fri, 2 Aug 2019 at 05:48, Patrick Delaunay <patrick.delaunay@st.com> wrote:
>
> At present the 'Index' column of 'dm tree' assumes there is
> two digits, this patch increase it to 3 digits.
>
> It also aligns output of 'dm uclass', assuming the same 3 digits index.
>
> The boards with CONFIG_PINCTRL_FULL activated have one pinconfig
> by pin configuration, so they can have more than 100 devices
> pinconfig (for example with stm32mp157c-ev1 board we have
> 106 pinconfig node).
>
> Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
> ---
>
> stm32mp157c-ev1 trace before the patch
>

This seems fine but it breaks the tests (make qcheck). Can you please fix that?

Regards,
Simon

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [Uboot-stm32] [RESEND PATCH 1/2] dm: Tidy up dump output when there are many devices
  2019-09-27  1:48 ` [U-Boot] [RESEND PATCH 1/2] dm: Tidy up dump output when there are many devices Simon Glass
@ 2019-09-30  8:12   ` Patrick DELAUNAY
  0 siblings, 0 replies; 6+ messages in thread
From: Patrick DELAUNAY @ 2019-09-30  8:12 UTC (permalink / raw)
  To: u-boot

Hi Simon,

> To: Patrick DELAUNAY <patrick.delaunay@st.com>
> Cc: U-Boot STM32 <uboot-stm32@st-md-mailman.stormreply.com>; U-Boot
> 
> Hi Patrick,
> 
> On Fri, 2 Aug 2019 at 05:48, Patrick Delaunay <patrick.delaunay@st.com> wrote:
> >
> > At present the 'Index' column of 'dm tree' assumes there is two
> > digits, this patch increase it to 3 digits.
> >
> > It also aligns output of 'dm uclass', assuming the same 3 digits index.
> >
> > The boards with CONFIG_PINCTRL_FULL activated have one pinconfig by
> > pin configuration, so they can have more than 100 devices pinconfig
> > (for example with stm32mp157c-ev1 board we have
> > 106 pinconfig node).
> >
> > Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
> > ---
> >
> > stm32mp157c-ev1 trace before the patch
> >
> 
> This seems fine but it breaks the tests (make qcheck). Can you please fix that?

Sure, I will sent a v2 today

 
> Regards,
> Simon
> _______________________________________________
> Uboot-stm32 mailing list
> Uboot-stm32 at st-md-mailman.stormreply.com
> https://st-md-mailman.stormreply.com/mailman/listinfo/uboot-stm32

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [U-Boot] [RESEND PATCH 2/2] dm: pinctrl: introduce PINCONF_RECURSIVE option
  2019-08-13  9:34   ` Simon Glass
@ 2019-10-12  2:55     ` Simon Glass
  0 siblings, 0 replies; 6+ messages in thread
From: Simon Glass @ 2019-10-12  2:55 UTC (permalink / raw)
  To: u-boot

On Tue, 13 Aug 2019 at 03:34, Simon Glass <sjg@chromium.org> wrote:
>
> On Fri, 2 Aug 2019 at 06:48, Patrick Delaunay <patrick.delaunay@st.com> wrote:
> >
> > In the Linux pinctrl binding, the pin configuration nodes don't need to
> > be direct children of the pin controller device (may be grandchildren for
> > example). This behavior is managed with the pinconfig u-class which
> > recursively bind all the sub-node of the pin controller.
> >
> > But for some binding (when pin configuration is only children of pin
> > controller) that is not necessary. U-Boot can save memory and reduce
> > the number of pinconf instance when this feature is deactivated
> > (for arch stm32mp for example for SPL).
> >
> > This patch allows to control this feature with a new option
> > CONFIG_PINCONF_RECURSIVE when it is possible for each individual
> > pin controller device.
> >
> > Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
> > ---
> >
>
> Reviewed-by: Simon Glass <sjg@chromium.org>
> > Hi,
> >
> > Found her a proposal to have a more clear output of "dm tree" command
> > and to reduce the memory footprint of PINCTRL_FULL for the arch stm32mp1
> > (bdinfo "Early malloc usage" is reduced from 2588 to 2144).
>
> Gosh that is still a lot! But a nice improvement.

Applied to u-boot-dm, thanks!

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2019-10-12  2:55 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-02 12:47 [U-Boot] [RESEND PATCH 1/2] dm: Tidy up dump output when there are many devices Patrick Delaunay
2019-08-02 12:48 ` [U-Boot] [RESEND PATCH 2/2] dm: pinctrl: introduce PINCONF_RECURSIVE option Patrick Delaunay
2019-08-13  9:34   ` Simon Glass
2019-10-12  2:55     ` Simon Glass
2019-09-27  1:48 ` [U-Boot] [RESEND PATCH 1/2] dm: Tidy up dump output when there are many devices Simon Glass
2019-09-30  8:12   ` [U-Boot] [Uboot-stm32] " Patrick DELAUNAY

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.