mbox series

[U-Boot,GIT,PULL] u-boot-sunxi/master

Message ID 20170927103116.x2ilx7l46lkhqe5i@flea
State Changes Requested
Delegated to: Tom Rini
Headers show
Series [U-Boot,GIT,PULL] u-boot-sunxi/master | expand

Pull-request

git://git.denx.de/u-boot-sunxi master

Message

Maxime Ripard Sept. 27, 2017, 10:31 a.m. UTC
Hi Tom,

Here is a pull request for the sunxi related changes for the next
U-Boot version.

The diffstat is a bit scary, but mostly because of the Kconfig
migration of the USB ethernet related options, which were enabled by a
big number of boards. The fastboot options simplification is also one
of the offenders.

This is my first pull request ever, so I might have done something
wrong, let me know if it's the case.

Thanks!
Maxime

The following changes since commit 9241265f29f3670e380a9859a343ddc14873c46f:

  Merge git://www.denx.de/git/u-boot-cfi-flash (2017-09-26 19:38:04 -0400)

are available in the git repository at:

  git://git.denx.de/u-boot-sunxi master

for you to fetch changes up to ab922c5e83e9ed780aeaef9dd9da0224f9356245:

  sunxi: Enable EMAC on the Bananapi M3 (2017-09-27 12:17:05 +0200)

----------------------------------------------------------------
Chen-Yu Tsai (4):
      sunxi: rename Bananapi M3 dts file name
      sunxi: Enable eMMC on Cubietruck Plus
      sunxi: Enable EMAC on the Cubietruck Plus
      sunxi: Enable EMAC on the Bananapi M3

Icenowy Zheng (1):
      sunxi: defaultly enable SPL for Lichee Pi Zero

Jagan Teki (1):
      sun7i: a20: Add Bananapi M1 Plus support

Maxime Ripard (21):
      usb: gadget: Move USBNET_DEVADDR option out of g_dnl
      usb: gadget: Document USBNET_DEVADDR
      usb: gadget: Move USBNET_HOST_ADDR to Kconfig
      usb: gadget: Convert USB_ETHER to Kconfig
      usb: gadget: usb_ether: Move the interfaces to Kconfig
      usb: gadget: Make g_dnl USB settings common
      usb: gadget: usb_ether: Move settings to common
      sunxi: provide default USB gadget setup
      sunxi: imply USB_GADGET
      cmd: fastboot: Rework fastboot dependency
      musb: sunxi: switch to the device model
      sunxi: Register usb_ether
      sunxi: Imply USB_ETHER
      sunxi: sina33: Sync the device tree with the kernel
      cmd: Move CONFIG_RANDOM_UUID to Kconfig
      sunxi: Enable CMD_GPT by default
      arm: sunxi: Move spl_boot_device in a separate function
      sunxi: Use sunxi_get_boot_device
      sunxi: Remove the MMC index hack
      sunxi: Fix USB_GADGET implication
      sunxi: usb_phy: invert the USB phy_ctl condition

Stefan Mavrodiev (1):
      sunxi: Add support for A20-OLinuXino-MICRO-eMMC

 arch/arm/Kconfig                                   |   5 +-
 arch/arm/dts/Makefile                              |   4 +-
 arch/arm/dts/axp223.dtsi                           |  58 +++
 arch/arm/dts/axp22x.dtsi                           |  10 +
 arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts        |  91 +++-
 arch/arm/dts/sun7i-a20-olinuxino-micro-emmc.dts    |  70 +++
 arch/arm/dts/sun8i-a23-a33.dtsi                    | 446 +++++++++----------
 arch/arm/dts/sun8i-a33-sinlinx-sina33.dts          |  43 ++
 arch/arm/dts/sun8i-a33.dtsi                        | 477 +++++++++++++++++----
 arch/arm/dts/sun8i-a83t-bananapi-m3-u-boot.dtsi    |  41 ++
 ...ovoip-bpi-m3.dts => sun8i-a83t-bananapi-m3.dts} |   0
 .../arm/dts/sun8i-a83t-cubietruck-plus-u-boot.dtsi |  39 ++
 arch/arm/include/asm/arch-sunxi/spl.h              |   2 +
 arch/arm/include/asm/arch-sunxi/usb_phy.h          |   7 -
 arch/arm/mach-sunxi/board.c                        |  11 +-
 arch/arm/mach-sunxi/usb_phy.c                      |  14 +-
 board/samsung/common/gadget.c                      |   4 +-
 board/siemens/common/factoryset.c                  |   4 +-
 board/sunxi/MAINTAINERS                            |   5 +
 board/sunxi/board.c                                |  29 +-
 cmd/Kconfig                                        |   7 +
 cmd/fastboot/Kconfig                               |   6 +
 configs/A13-OLinuXino_defconfig                    |   5 -
 configs/A20-OLinuXino-Lime2-eMMC_defconfig         |   6 -
 configs/A20-OLinuXino-Lime2_defconfig              |   5 -
 configs/A20-OLinuXino_MICRO-eMMC_defconfig         |  27 ++
 configs/CHIP_defconfig                             |   5 -
 configs/CHIP_pro_defconfig                         |   5 -
 configs/Cubietruck_defconfig                       |   5 -
 configs/Cubietruck_plus_defconfig                  |   2 +
 configs/LicheePi_Zero_defconfig                    |   4 +
 configs/Nintendo_NES_Classic_Edition_defconfig     |   5 -
 configs/Sinlinx_SinA33_defconfig                   |   6 -
 configs/Sinovoip_BPI_M3_defconfig                  |   3 +-
 configs/am335x_baltos_defconfig                    |   8 +-
 configs/am335x_boneblack_defconfig                 |  10 +-
 configs/am335x_boneblack_vboot_defconfig           |   9 +-
 configs/am335x_evm_defconfig                       |   9 +-
 configs/am335x_evm_nor_defconfig                   |   9 +-
 configs/am335x_evm_norboot_defconfig               |  10 +-
 configs/am335x_evm_spiboot_defconfig               |   9 +-
 configs/am335x_evm_usbspl_defconfig                |   9 +-
 configs/am335x_hs_evm_defconfig                    |   7 +-
 configs/am43xx_evm_defconfig                       |   6 +-
 configs/am43xx_evm_ethboot_defconfig               |   6 +-
 configs/am43xx_evm_qspiboot_defconfig              |   6 +-
 configs/am43xx_evm_usbhost_boot_defconfig          |   6 +-
 configs/am43xx_hs_evm_defconfig                    |   6 +-
 configs/am57xx_evm_defconfig                       |   8 +-
 configs/am57xx_evm_nodt_defconfig                  |   9 +-
 configs/am57xx_hs_evm_defconfig                    |   8 +-
 configs/apalis-tk1_defconfig                       |   6 +-
 configs/apalis_imx6_defconfig                      |   6 +-
 configs/apalis_imx6_nospl_com_defconfig            |   6 +-
 configs/apalis_imx6_nospl_it_defconfig             |   6 +-
 configs/apalis_t30_defconfig                       |   6 +-
 configs/bananapi_m1_plus_defconfig                 |  24 ++
 configs/bcm11130_defconfig                         |   6 +-
 configs/bcm11130_nand_defconfig                    |   6 +-
 configs/bcm23550_w1d_defconfig                     |   9 +-
 configs/bcm28155_ap_defconfig                      |   9 +-
 configs/bcm28155_w1d_defconfig                     |   6 +-
 configs/beaver_defconfig                           |   6 +-
 configs/birdland_bav335a_defconfig                 |   9 +-
 configs/birdland_bav335b_defconfig                 |   9 +-
 configs/cei-tk1-som_defconfig                      |   6 +-
 configs/cgtqmx6eval_defconfig                      |   9 +-
 configs/chromebit_mickey_defconfig                 |   7 +-
 configs/chromebook_jerry_defconfig                 |   7 +-
 configs/chromebook_minnie_defconfig                |   7 +-
 configs/colibri_imx6_defconfig                     |   6 +-
 configs/colibri_imx6_nospl_defconfig               |   6 +-
 configs/colibri_imx7_defconfig                     |   6 +-
 configs/colibri_t20_defconfig                      |   6 +-
 configs/colibri_t30_defconfig                      |   6 +-
 configs/colibri_vf_defconfig                       |   6 +-
 configs/corvus_defconfig                           |   6 +-
 configs/dalmore_defconfig                          |   6 +-
 configs/dms-ba16-1g_defconfig                      |   6 +-
 configs/dms-ba16_defconfig                         |   6 +-
 configs/dra7xx_evm_defconfig                       |   8 +-
 configs/dra7xx_hs_evm_defconfig                    |   8 +-
 configs/draco_defconfig                            |   7 +-
 configs/e2220-1170_defconfig                       |   6 +-
 configs/edison_defconfig                           |   6 +-
 configs/etamin_defconfig                           |   7 +-
 configs/evb-rk3036_defconfig                       |   7 +-
 configs/evb-rk3229_defconfig                       |   7 +-
 configs/evb-rk3288_defconfig                       |   7 +-
 configs/evb-rk3328_defconfig                       |   6 +-
 configs/evb-rv1108_defconfig                       |   1 +
 configs/fennec-rk3288_defconfig                    |   7 +-
 configs/firefly-rk3288_defconfig                   |   7 +-
 configs/gwventana_emmc_defconfig                   |   8 +-
 configs/gwventana_gw5904_defconfig                 |   8 +-
 configs/gwventana_nand_defconfig                   |   8 +-
 configs/jetson-tk1_defconfig                       |   6 +-
 configs/kc1_defconfig                              |   9 +-
 configs/kylin-rk3036_defconfig                     |   7 +-
 configs/ma5d4evk_defconfig                         |   7 +-
 configs/miqi-rk3288_defconfig                      |   7 +-
 configs/mx6qsabrelite_defconfig                    |  11 +-
 configs/mx6sabreauto_defconfig                     |   6 +-
 configs/mx6sabresd_defconfig                       |   6 +-
 configs/mx7dsabresd_defconfig                      |   6 +-
 configs/mx7dsabresd_secure_defconfig               |   6 +-
 configs/nitrogen6dl2g_defconfig                    |  11 +-
 configs/nitrogen6dl_defconfig                      |  11 +-
 configs/nitrogen6q2g_defconfig                     |  11 +-
 configs/nitrogen6q_defconfig                       |  11 +-
 configs/nitrogen6s1g_defconfig                     |  11 +-
 configs/nitrogen6s_defconfig                       |  11 +-
 configs/novena_defconfig                           |   2 +
 configs/nyan-big_defconfig                         |   6 +-
 configs/odroid-xu3_defconfig                       |   6 +-
 configs/odroid_defconfig                           |   6 +-
 configs/omap3_beagle_defconfig                     |  10 +-
 configs/omap3_evm_defconfig                        |   7 +-
 configs/omap3_logic_defconfig                      |   9 +-
 configs/omap5_uevm_defconfig                       |   6 +-
 configs/opos6uldev_defconfig                       |   6 +-
 configs/origen_defconfig                           |   6 +-
 configs/p2371-0000_defconfig                       |   6 +-
 configs/p2371-2180_defconfig                       |   6 +-
 configs/p2571_defconfig                            |   6 +-
 configs/parrot_r16_defconfig                       |   6 -
 configs/pcm051_rev1_defconfig                      |   1 +
 configs/pcm051_rev3_defconfig                      |   1 +
 configs/phycore-rk3288_defconfig                   |   7 +-
 configs/pico-imx6ul_defconfig                      |   6 +-
 configs/pico-imx7d_defconfig                       |   6 +-
 configs/popmetal-rk3288_defconfig                  |   7 +-
 configs/pxm2_defconfig                             |   8 +-
 configs/rastaban_defconfig                         |   8 +-
 configs/rock2_defconfig                            |   7 +-
 configs/rock_defconfig                             |   1 +
 configs/rut_defconfig                              |   7 +-
 configs/s5p_goni_defconfig                         |   6 +-
 configs/s5pc210_universal_defconfig                |   6 +-
 configs/sama5d2_ptc_nandflash_defconfig            |   2 +
 configs/sama5d2_ptc_spiflash_defconfig             |   2 +
 configs/sansa_fuze_plus_defconfig                  |   2 +
 configs/smartweb_defconfig                         |   6 +-
 configs/sniper_defconfig                           |   9 +-
 configs/socfpga_arria5_defconfig                   |   6 +-
 configs/socfpga_cyclone5_defconfig                 |   6 +-
 configs/socfpga_de0_nano_soc_defconfig             |   6 +-
 configs/socfpga_de10_nano_defconfig                |   6 +-
 configs/socfpga_mcvevk_defconfig                   |   6 +-
 configs/socfpga_sockit_defconfig                   |   6 +-
 configs/socfpga_socrates_defconfig                 |   6 +-
 configs/socfpga_vining_fpga_defconfig              |   6 +-
 configs/taurus_defconfig                           |   6 +-
 configs/tbs2910_defconfig                          |   6 +-
 configs/thuban_defconfig                           |   7 +-
 configs/tinker-rk3288_defconfig                    |   7 +-
 configs/topic_miami_defconfig                      |   6 +-
 configs/topic_miamilite_defconfig                  |   6 +-
 configs/topic_miamiplus_defconfig                  |   6 +-
 configs/trats2_defconfig                           |   6 +-
 configs/trats_defconfig                            |   6 +-
 configs/venice2_defconfig                          |   6 +-
 configs/vinco_defconfig                            |   2 +
 configs/warp7_defconfig                            |   9 +-
 configs/warp7_secure_defconfig                     |   9 +-
 configs/warp_defconfig                             |   6 +-
 configs/xfi3_defconfig                             |   2 +
 configs/xilinx_zynqmp_ep_defconfig                 |   6 +-
 configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig   |   6 +-
 configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig   |   6 +-
 configs/xilinx_zynqmp_zcu102_revA_defconfig        |   6 +-
 configs/xilinx_zynqmp_zcu102_revB_defconfig        |   6 +-
 configs/zynq_microzed_defconfig                    |   6 +-
 configs/zynq_picozed_defconfig                     |   6 +-
 configs/zynq_z_turn_defconfig                      |   6 +-
 configs/zynq_zc702_defconfig                       |   6 +-
 configs/zynq_zc706_defconfig                       |   6 +-
 configs/zynq_zed_defconfig                         |   6 +-
 configs/zynq_zybo_defconfig                        |   6 +-
 doc/README.android-fastboot                        |   8 +-
 drivers/usb/gadget/Kconfig                         |  78 +++-
 drivers/usb/gadget/ether.c                         |  16 +-
 drivers/usb/gadget/g_dnl.c                         |  12 +-
 drivers/usb/musb-new/sunxi.c                       |  56 ++-
 include/configs/am335x_evm.h                       |   6 -
 include/configs/am3517_evm.h                       |   5 -
 include/configs/am43xx_evm.h                       |   6 +-
 include/configs/am57xx_evm.h                       |   1 -
 include/configs/baltos.h                           |   6 -
 include/configs/dra7xx_evm.h                       |   1 -
 include/configs/edison.h                           |   1 -
 include/configs/gw_ventana.h                       |   2 -
 include/configs/h2200.h                            |   2 -
 include/configs/ma5d4evk.h                         |   3 -
 include/configs/nitrogen6x.h                       |   2 -
 include/configs/novena.h                           |   2 -
 include/configs/odroid.h                           |   1 -
 include/configs/odroid_xu3.h                       |   2 +-
 include/configs/omap3_beagle.h                     |   1 -
 include/configs/omap3_evm.h                        |   1 -
 include/configs/omap3_logic.h                      |   1 -
 include/configs/pcm051.h                           |   5 -
 include/configs/rockchip-common.h                  |   2 -
 include/configs/sama5d2_ptc.h                      |   3 -
 include/configs/sansa_fuze_plus.h                  |   2 -
 include/configs/siemens-am33x-common.h             |   6 -
 include/configs/sunxi-common.h                     |  30 +-
 include/configs/tao3530.h                          |   2 -
 include/configs/trats.h                            |   1 -
 include/configs/trats2.h                           |   1 -
 include/configs/vinco.h                            |   4 -
 include/configs/warp7.h                            |   4 -
 include/configs/xfi3.h                             |   2 -
 include/configs/xilinx_zynqmp.h                    |   1 -
 include/dt-bindings/clock/sun8i-a23-a33-ccu.h      | 127 ++++++
 include/dt-bindings/reset/sun8i-a23-a33-ccu.h      |  87 ++++
 scripts/config_whitelist.txt                       |   6 -
 217 files changed, 1860 insertions(+), 1067 deletions(-)
 create mode 100644 arch/arm/dts/axp223.dtsi
 create mode 100644 arch/arm/dts/sun7i-a20-olinuxino-micro-emmc.dts
 create mode 100644 arch/arm/dts/sun8i-a83t-bananapi-m3-u-boot.dtsi
 rename arch/arm/dts/{sun8i-a83t-sinovoip-bpi-m3.dts => sun8i-a83t-bananapi-m3.dts} (100%)
 create mode 100644 arch/arm/dts/sun8i-a83t-cubietruck-plus-u-boot.dtsi
 create mode 100644 configs/A20-OLinuXino_MICRO-eMMC_defconfig
 create mode 100644 configs/bananapi_m1_plus_defconfig
 create mode 100644 include/dt-bindings/clock/sun8i-a23-a33-ccu.h
 create mode 100644 include/dt-bindings/reset/sun8i-a23-a33-ccu.h

Comments

Tom Rini Sept. 27, 2017, 12:33 p.m. UTC | #1
On Wed, Sep 27, 2017 at 12:31:16PM +0200, Maxime Ripard wrote:
> Hi Tom,
> 
> Here is a pull request for the sunxi related changes for the next
> U-Boot version.
> 
> The diffstat is a bit scary, but mostly because of the Kconfig
> migration of the USB ethernet related options, which were enabled by a
> big number of boards. The fastboot options simplification is also one
> of the offenders.
> 
> This is my first pull request ever, so I might have done something
> wrong, let me know if it's the case.

Sorry, this is pretty broken:
$ make O=/tmp/T sandbox_config
make[1]: Entering directory `/tmp/T'
GEN     ./Makefile
drivers/usb/Kconfig:1:error: recursive dependency detected!
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/usb/Kconfig:1:  symbol USB is selected by ARCH_SUNXI
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
arch/arm/Kconfig:674:   symbol ARCH_SUNXI is part of choice <choice>
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
arch/arm/Kconfig:291:   choice <choice> contains symbol ARCH_SUNXI
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
arch/arm/Kconfig:674:   symbol ARCH_SUNXI depends on USB_MUSB_GADGET
For a resolution refer to Documentation/kbuild/kconfig-language.txt
subsection "Kconfig recursive dependency limitations"
drivers/usb/musb-new/Kconfig:11:        symbol USB_MUSB_GADGET depends on USB
Maxime Ripard Sept. 27, 2017, 3:34 p.m. UTC | #2
On Wed, Sep 27, 2017 at 12:33:06PM +0000, Tom Rini wrote:
> On Wed, Sep 27, 2017 at 12:31:16PM +0200, Maxime Ripard wrote:
> > Hi Tom,
> > 
> > Here is a pull request for the sunxi related changes for the next
> > U-Boot version.
> > 
> > The diffstat is a bit scary, but mostly because of the Kconfig
> > migration of the USB ethernet related options, which were enabled by a
> > big number of boards. The fastboot options simplification is also one
> > of the offenders.
> > 
> > This is my first pull request ever, so I might have done something
> > wrong, let me know if it's the case.
> 
> Sorry, this is pretty broken:
> $ make O=/tmp/T sandbox_config
> make[1]: Entering directory `/tmp/T'
> GEN     ./Makefile
> drivers/usb/Kconfig:1:error: recursive dependency detected!
> For a resolution refer to Documentation/kbuild/kconfig-language.txt
> subsection "Kconfig recursive dependency limitations"
> drivers/usb/Kconfig:1:  symbol USB is selected by ARCH_SUNXI
> For a resolution refer to Documentation/kbuild/kconfig-language.txt
> subsection "Kconfig recursive dependency limitations"
> arch/arm/Kconfig:674:   symbol ARCH_SUNXI is part of choice <choice>
> For a resolution refer to Documentation/kbuild/kconfig-language.txt
> subsection "Kconfig recursive dependency limitations"
> arch/arm/Kconfig:291:   choice <choice> contains symbol ARCH_SUNXI
> For a resolution refer to Documentation/kbuild/kconfig-language.txt
> subsection "Kconfig recursive dependency limitations"
> arch/arm/Kconfig:674:   symbol ARCH_SUNXI depends on USB_MUSB_GADGET
> For a resolution refer to Documentation/kbuild/kconfig-language.txt
> subsection "Kconfig recursive dependency limitations"
> drivers/usb/musb-new/Kconfig:11:        symbol USB_MUSB_GADGET depends on USB

Gah. Sorry for that. So much for slipping in a fix without testing
it...

I wonder why it's considered a recursive dependency though.

The situation seems to be:

            selects        depends
ARCH_SUNXI --------> USB <--------- USB_MUSB_GADGET
    |
    +-------> USB_ETHER
     implies

USB_ETHER is implied only if USB_MUSB_GADGET is set, but that looks
like a directed graph without any loop, right?

Or am I missing something?

Maxime
Tom Rini Sept. 27, 2017, 3:45 p.m. UTC | #3
On Wed, Sep 27, 2017 at 05:34:04PM +0200, Maxime Ripard wrote:
> On Wed, Sep 27, 2017 at 12:33:06PM +0000, Tom Rini wrote:
> > On Wed, Sep 27, 2017 at 12:31:16PM +0200, Maxime Ripard wrote:
> > > Hi Tom,
> > > 
> > > Here is a pull request for the sunxi related changes for the next
> > > U-Boot version.
> > > 
> > > The diffstat is a bit scary, but mostly because of the Kconfig
> > > migration of the USB ethernet related options, which were enabled by a
> > > big number of boards. The fastboot options simplification is also one
> > > of the offenders.
> > > 
> > > This is my first pull request ever, so I might have done something
> > > wrong, let me know if it's the case.
> > 
> > Sorry, this is pretty broken:
> > $ make O=/tmp/T sandbox_config
> > make[1]: Entering directory `/tmp/T'
> > GEN     ./Makefile
> > drivers/usb/Kconfig:1:error: recursive dependency detected!
> > For a resolution refer to Documentation/kbuild/kconfig-language.txt
> > subsection "Kconfig recursive dependency limitations"
> > drivers/usb/Kconfig:1:  symbol USB is selected by ARCH_SUNXI
> > For a resolution refer to Documentation/kbuild/kconfig-language.txt
> > subsection "Kconfig recursive dependency limitations"
> > arch/arm/Kconfig:674:   symbol ARCH_SUNXI is part of choice <choice>
> > For a resolution refer to Documentation/kbuild/kconfig-language.txt
> > subsection "Kconfig recursive dependency limitations"
> > arch/arm/Kconfig:291:   choice <choice> contains symbol ARCH_SUNXI
> > For a resolution refer to Documentation/kbuild/kconfig-language.txt
> > subsection "Kconfig recursive dependency limitations"
> > arch/arm/Kconfig:674:   symbol ARCH_SUNXI depends on USB_MUSB_GADGET
> > For a resolution refer to Documentation/kbuild/kconfig-language.txt
> > subsection "Kconfig recursive dependency limitations"
> > drivers/usb/musb-new/Kconfig:11:        symbol USB_MUSB_GADGET depends on USB
> 
> Gah. Sorry for that. So much for slipping in a fix without testing
> it...
> 
> I wonder why it's considered a recursive dependency though.
> 
> The situation seems to be:
> 
>             selects        depends
> ARCH_SUNXI --------> USB <--------- USB_MUSB_GADGET
>     |
>     +-------> USB_ETHER
>      implies
> 
> USB_ETHER is implied only if USB_MUSB_GADGET is set, but that looks
> like a directed graph without any loop, right?
> 
> Or am I missing something?

implies is tricky, and I think it comes down to ARCH_SUNXI being under a
choice.  What I think we generally need to do here is use 'default y if
...' under things like USB_MUSB_GADGET instead of imply X if Y, under
the ARCH_xxx choice and similar.  An alternative that may, or may not,
make sense would be mirroring TI_COMMON_CMD_OPTIONS from
board/ti/common/Kconfig, where the intent there is that that
TI-the-vendor wants a consistent experience on their various EVMs so
that gets set to enable X/Y/Z, but a custom board based on a TI SoC
might not want to enable all of that since it's not an EVM that wants
the kitchen sink, so to speak.
Maxime Ripard Sept. 27, 2017, 3:55 p.m. UTC | #4
Hi,

On Wed, Sep 27, 2017 at 03:45:20PM +0000, Tom Rini wrote:
> On Wed, Sep 27, 2017 at 05:34:04PM +0200, Maxime Ripard wrote:
> > On Wed, Sep 27, 2017 at 12:33:06PM +0000, Tom Rini wrote:
> > > On Wed, Sep 27, 2017 at 12:31:16PM +0200, Maxime Ripard wrote:
> > > > Hi Tom,
> > > > 
> > > > Here is a pull request for the sunxi related changes for the next
> > > > U-Boot version.
> > > > 
> > > > The diffstat is a bit scary, but mostly because of the Kconfig
> > > > migration of the USB ethernet related options, which were enabled by a
> > > > big number of boards. The fastboot options simplification is also one
> > > > of the offenders.
> > > > 
> > > > This is my first pull request ever, so I might have done something
> > > > wrong, let me know if it's the case.
> > > 
> > > Sorry, this is pretty broken:
> > > $ make O=/tmp/T sandbox_config
> > > make[1]: Entering directory `/tmp/T'
> > > GEN     ./Makefile
> > > drivers/usb/Kconfig:1:error: recursive dependency detected!
> > > For a resolution refer to Documentation/kbuild/kconfig-language.txt
> > > subsection "Kconfig recursive dependency limitations"
> > > drivers/usb/Kconfig:1:  symbol USB is selected by ARCH_SUNXI
> > > For a resolution refer to Documentation/kbuild/kconfig-language.txt
> > > subsection "Kconfig recursive dependency limitations"
> > > arch/arm/Kconfig:674:   symbol ARCH_SUNXI is part of choice <choice>
> > > For a resolution refer to Documentation/kbuild/kconfig-language.txt
> > > subsection "Kconfig recursive dependency limitations"
> > > arch/arm/Kconfig:291:   choice <choice> contains symbol ARCH_SUNXI
> > > For a resolution refer to Documentation/kbuild/kconfig-language.txt
> > > subsection "Kconfig recursive dependency limitations"
> > > arch/arm/Kconfig:674:   symbol ARCH_SUNXI depends on USB_MUSB_GADGET
> > > For a resolution refer to Documentation/kbuild/kconfig-language.txt
> > > subsection "Kconfig recursive dependency limitations"
> > > drivers/usb/musb-new/Kconfig:11:        symbol USB_MUSB_GADGET depends on USB
> > 
> > Gah. Sorry for that. So much for slipping in a fix without testing
> > it...
> > 
> > I wonder why it's considered a recursive dependency though.
> > 
> > The situation seems to be:
> > 
> >             selects        depends
> > ARCH_SUNXI --------> USB <--------- USB_MUSB_GADGET
> >     |
> >     +-------> USB_ETHER
> >      implies
> > 
> > USB_ETHER is implied only if USB_MUSB_GADGET is set, but that looks
> > like a directed graph without any loop, right?
> > 
> > Or am I missing something?
> 
> implies is tricky, and I think it comes down to ARCH_SUNXI being under a
> choice.  What I think we generally need to do here is use 'default y if
> ...' under things like USB_MUSB_GADGET instead of imply X if Y, under
> the ARCH_xxx choice and similar.

Yeah, I tested a similar option in parallel, and putting a default y
if ARCH_SUNXI && USB_MUSB_GADGET under USB_ETHER work fine.

Would that work for you? I'll respin the pull request with this change
if so.

> An alternative that may, or may not, make sense would be mirroring
> TI_COMMON_CMD_OPTIONS from board/ti/common/Kconfig, where the intent
> there is that that TI-the-vendor wants a consistent experience on
> their various EVMs so that gets set to enable X/Y/Z, but a custom
> board based on a TI SoC might not want to enable all of that since
> it's not an EVM that wants the kitchen sink, so to speak.

Yeah, we were also starting to think about it (mostly for tablets vs
dev boards uses), but the discussion didn't really settle yet.

Thanks!
Maxime
Tom Rini Sept. 27, 2017, 4:12 p.m. UTC | #5
On Wed, Sep 27, 2017 at 05:55:31PM +0200, Maxime Ripard wrote:
> Hi,
> 
> On Wed, Sep 27, 2017 at 03:45:20PM +0000, Tom Rini wrote:
> > On Wed, Sep 27, 2017 at 05:34:04PM +0200, Maxime Ripard wrote:
> > > On Wed, Sep 27, 2017 at 12:33:06PM +0000, Tom Rini wrote:
> > > > On Wed, Sep 27, 2017 at 12:31:16PM +0200, Maxime Ripard wrote:
> > > > > Hi Tom,
> > > > > 
> > > > > Here is a pull request for the sunxi related changes for the next
> > > > > U-Boot version.
> > > > > 
> > > > > The diffstat is a bit scary, but mostly because of the Kconfig
> > > > > migration of the USB ethernet related options, which were enabled by a
> > > > > big number of boards. The fastboot options simplification is also one
> > > > > of the offenders.
> > > > > 
> > > > > This is my first pull request ever, so I might have done something
> > > > > wrong, let me know if it's the case.
> > > > 
> > > > Sorry, this is pretty broken:
> > > > $ make O=/tmp/T sandbox_config
> > > > make[1]: Entering directory `/tmp/T'
> > > > GEN     ./Makefile
> > > > drivers/usb/Kconfig:1:error: recursive dependency detected!
> > > > For a resolution refer to Documentation/kbuild/kconfig-language.txt
> > > > subsection "Kconfig recursive dependency limitations"
> > > > drivers/usb/Kconfig:1:  symbol USB is selected by ARCH_SUNXI
> > > > For a resolution refer to Documentation/kbuild/kconfig-language.txt
> > > > subsection "Kconfig recursive dependency limitations"
> > > > arch/arm/Kconfig:674:   symbol ARCH_SUNXI is part of choice <choice>
> > > > For a resolution refer to Documentation/kbuild/kconfig-language.txt
> > > > subsection "Kconfig recursive dependency limitations"
> > > > arch/arm/Kconfig:291:   choice <choice> contains symbol ARCH_SUNXI
> > > > For a resolution refer to Documentation/kbuild/kconfig-language.txt
> > > > subsection "Kconfig recursive dependency limitations"
> > > > arch/arm/Kconfig:674:   symbol ARCH_SUNXI depends on USB_MUSB_GADGET
> > > > For a resolution refer to Documentation/kbuild/kconfig-language.txt
> > > > subsection "Kconfig recursive dependency limitations"
> > > > drivers/usb/musb-new/Kconfig:11:        symbol USB_MUSB_GADGET depends on USB
> > > 
> > > Gah. Sorry for that. So much for slipping in a fix without testing
> > > it...
> > > 
> > > I wonder why it's considered a recursive dependency though.
> > > 
> > > The situation seems to be:
> > > 
> > >             selects        depends
> > > ARCH_SUNXI --------> USB <--------- USB_MUSB_GADGET
> > >     |
> > >     +-------> USB_ETHER
> > >      implies
> > > 
> > > USB_ETHER is implied only if USB_MUSB_GADGET is set, but that looks
> > > like a directed graph without any loop, right?
> > > 
> > > Or am I missing something?
> > 
> > implies is tricky, and I think it comes down to ARCH_SUNXI being under a
> > choice.  What I think we generally need to do here is use 'default y if
> > ...' under things like USB_MUSB_GADGET instead of imply X if Y, under
> > the ARCH_xxx choice and similar.
> 
> Yeah, I tested a similar option in parallel, and putting a default y
> if ARCH_SUNXI && USB_MUSB_GADGET under USB_ETHER work fine.
> 
> Would that work for you? I'll respin the pull request with this change
> if so.

That's fine, thanks!

> > An alternative that may, or may not, make sense would be mirroring
> > TI_COMMON_CMD_OPTIONS from board/ti/common/Kconfig, where the intent
> > there is that that TI-the-vendor wants a consistent experience on
> > their various EVMs so that gets set to enable X/Y/Z, but a custom
> > board based on a TI SoC might not want to enable all of that since
> > it's not an EVM that wants the kitchen sink, so to speak.
> 
> Yeah, we were also starting to think about it (mostly for tablets vs
> dev boards uses), but the discussion didn't really settle yet.

OK.