Merge branch 'master' of git://git.denx.de/u-boot-sunxi
authorTom Rini <trini@konsulko.com>
Wed, 14 Nov 2018 23:25:34 +0000 (18:25 -0500)
committerTom Rini <trini@konsulko.com>
Wed, 14 Nov 2018 23:25:34 +0000 (18:25 -0500)
491 files changed:
MAINTAINERS
Makefile
arch/arc/Kconfig
arch/arc/dts/Makefile
arch/arc/dts/emdk.dts [deleted file]
arch/arc/dts/emsdp.dts [new file with mode: 0644]
arch/arm/Kconfig
arch/arm/dts/armada-xp-theadorable.dts
arch/arm/dts/ast2500-evb.dts
arch/arm/dts/ast2500.dtsi
arch/arm/dts/fsl-imx8qxp-mek.dts
arch/arm/include/asm/ti-common/keystone_net.h
arch/arm/mach-davinci/dp83848.c
arch/arm/mach-davinci/et1011c.c
arch/arm/mach-davinci/ksz8873.c
arch/arm/mach-davinci/lxt972.c
arch/arm/mach-imx/Makefile
arch/arm/mach-imx/mx6/soc.c
arch/arm/mach-mvebu/dram.c
arch/arm/mach-mvebu/include/mach/cpu.h
arch/arm/mach-rmobile/cpu_info.c
arch/arm/mach-rmobile/memmap-gen3.c
arch/mips/Kconfig
arch/mips/config.mk
arch/mips/cpu/u-boot.lds
arch/powerpc/cpu/mpc85xx/Kconfig
arch/powerpc/cpu/mpc85xx/cmd_errata.c
arch/powerpc/include/asm/immap_85xx.h
arch/x86/include/asm/arch-baytrail/acpi/global_nvs.asl
arch/x86/include/asm/arch-quark/acpi/global_nvs.asl
arch/x86/include/asm/arch-tangier/acpi/global_nvs.asl
board/freescale/mx8mq_evk/README [deleted file]
board/st/stm32mp1/MAINTAINERS
board/synopsys/emdk/Kconfig [deleted file]
board/synopsys/emdk/MAINTAINERS [deleted file]
board/synopsys/emdk/Makefile [deleted file]
board/synopsys/emdk/README [deleted file]
board/synopsys/emdk/emdk.c [deleted file]
board/synopsys/emsdp/Kconfig [new file with mode: 0644]
board/synopsys/emsdp/MAINTAINERS [new file with mode: 0644]
board/synopsys/emsdp/Makefile [new file with mode: 0644]
board/synopsys/emsdp/README [new file with mode: 0644]
board/synopsys/emsdp/emsdp.c [new file with mode: 0644]
board/synopsys/iot_devkit/README [new file with mode: 0644]
board/ti/ks2_evm/board.c
board/ti/ks2_evm/board.h
board/ti/ks2_evm/board_k2e.c
board/ti/ks2_evm/board_k2g.c
board/ti/ks2_evm/board_k2hk.c
board/ti/ks2_evm/board_k2l.c
cmd/Kconfig
cmd/Makefile
cmd/remoteproc.c
cmd/ubi.c
common/Makefile
common/board_f.c
common/common_fit.c
common/spl/spl.c
configs/BSC9131RDB_NAND_SYSCLK100_defconfig
configs/BSC9131RDB_NAND_defconfig
configs/BSC9131RDB_SPIFLASH_SYSCLK100_defconfig
configs/BSC9131RDB_SPIFLASH_defconfig
configs/BSC9132QDS_NAND_DDRCLK100_SECURE_defconfig
configs/BSC9132QDS_NAND_DDRCLK100_defconfig
configs/BSC9132QDS_NAND_DDRCLK133_SECURE_defconfig
configs/BSC9132QDS_NAND_DDRCLK133_defconfig
configs/BSC9132QDS_NOR_DDRCLK100_SECURE_defconfig
configs/BSC9132QDS_NOR_DDRCLK100_defconfig
configs/BSC9132QDS_NOR_DDRCLK133_SECURE_defconfig
configs/BSC9132QDS_NOR_DDRCLK133_defconfig
configs/BSC9132QDS_SDCARD_DDRCLK100_SECURE_defconfig
configs/BSC9132QDS_SDCARD_DDRCLK100_defconfig
configs/BSC9132QDS_SDCARD_DDRCLK133_SECURE_defconfig
configs/BSC9132QDS_SDCARD_DDRCLK133_defconfig
configs/BSC9132QDS_SPIFLASH_DDRCLK100_SECURE_defconfig
configs/BSC9132QDS_SPIFLASH_DDRCLK100_defconfig
configs/BSC9132QDS_SPIFLASH_DDRCLK133_SECURE_defconfig
configs/BSC9132QDS_SPIFLASH_DDRCLK133_defconfig
configs/CHIP_pro_defconfig
configs/Nintendo_NES_Classic_Edition_defconfig
configs/P1020RDB-PD_NAND_defconfig
configs/P1020RDB-PD_SDCARD_defconfig
configs/P1020RDB-PD_SPIFLASH_defconfig
configs/P1020RDB-PD_defconfig
configs/P1021RDB-PC_36BIT_NAND_defconfig
configs/P1021RDB-PC_36BIT_SDCARD_defconfig
configs/P1021RDB-PC_36BIT_SPIFLASH_defconfig
configs/P1021RDB-PC_36BIT_defconfig
configs/P1021RDB-PC_NAND_defconfig
configs/P1021RDB-PC_SDCARD_defconfig
configs/P1021RDB-PC_SPIFLASH_defconfig
configs/P1021RDB-PC_defconfig
configs/P1022DS_36BIT_NAND_defconfig
configs/P1022DS_36BIT_SDCARD_defconfig
configs/P1022DS_36BIT_SPIFLASH_defconfig
configs/P1022DS_36BIT_defconfig
configs/P1022DS_NAND_defconfig
configs/P1022DS_SDCARD_defconfig
configs/P1022DS_SPIFLASH_defconfig
configs/P1022DS_defconfig
configs/P2020RDB-PC_36BIT_NAND_defconfig
configs/P2020RDB-PC_36BIT_SDCARD_defconfig
configs/P2020RDB-PC_36BIT_SPIFLASH_defconfig
configs/P2020RDB-PC_36BIT_defconfig
configs/P2020RDB-PC_NAND_defconfig
configs/P2020RDB-PC_SDCARD_defconfig
configs/P2020RDB-PC_SPIFLASH_defconfig
configs/P2020RDB-PC_defconfig
configs/T1023RDB_NAND_defconfig
configs/T1023RDB_SDCARD_defconfig
configs/T1023RDB_SECURE_BOOT_defconfig
configs/T1023RDB_SPIFLASH_defconfig
configs/T1023RDB_defconfig
configs/T1024QDS_DDR4_SECURE_BOOT_defconfig
configs/T1024QDS_DDR4_defconfig
configs/T1024QDS_NAND_defconfig
configs/T1024QDS_SDCARD_defconfig
configs/T1024QDS_SECURE_BOOT_defconfig
configs/T1024QDS_SPIFLASH_defconfig
configs/T1024QDS_defconfig
configs/T1024RDB_NAND_defconfig
configs/T1024RDB_SDCARD_defconfig
configs/T1024RDB_SECURE_BOOT_defconfig
configs/T1024RDB_SPIFLASH_defconfig
configs/T1024RDB_defconfig
configs/T1040D4RDB_NAND_defconfig
configs/T1040D4RDB_SDCARD_defconfig
configs/T1040D4RDB_SECURE_BOOT_defconfig
configs/T1040D4RDB_SPIFLASH_defconfig
configs/T1040D4RDB_defconfig
configs/T1040QDS_DDR4_defconfig
configs/T1040QDS_SECURE_BOOT_defconfig
configs/T1040QDS_defconfig
configs/T1040RDB_NAND_defconfig
configs/T1040RDB_SDCARD_defconfig
configs/T1040RDB_SECURE_BOOT_defconfig
configs/T1040RDB_SPIFLASH_defconfig
configs/T1040RDB_defconfig
configs/T1042D4RDB_NAND_defconfig
configs/T1042D4RDB_SDCARD_defconfig
configs/T1042D4RDB_SECURE_BOOT_defconfig
configs/T1042D4RDB_SPIFLASH_defconfig
configs/T1042D4RDB_defconfig
configs/T1042RDB_PI_NAND_SECURE_BOOT_defconfig
configs/T1042RDB_PI_NAND_defconfig
configs/T1042RDB_PI_SDCARD_defconfig
configs/T1042RDB_PI_SPIFLASH_defconfig
configs/T1042RDB_PI_defconfig
configs/T1042RDB_SECURE_BOOT_defconfig
configs/T1042RDB_defconfig
configs/T2080QDS_NAND_defconfig
configs/T2080QDS_SDCARD_defconfig
configs/T2080QDS_SECURE_BOOT_defconfig
configs/T2080QDS_SPIFLASH_defconfig
configs/T2080QDS_defconfig
configs/T2080RDB_NAND_defconfig
configs/T2080RDB_SDCARD_defconfig
configs/T2080RDB_SECURE_BOOT_defconfig
configs/T2080RDB_SPIFLASH_defconfig
configs/T2080RDB_defconfig
configs/T2081QDS_NAND_defconfig
configs/T2081QDS_SDCARD_defconfig
configs/T2081QDS_SPIFLASH_defconfig
configs/T2081QDS_defconfig
configs/TWR-P1025_defconfig
configs/alt_defconfig
configs/am335x_baltos_defconfig
configs/am335x_boneblack_defconfig
configs/am335x_boneblack_vboot_defconfig
configs/am335x_evm_defconfig
configs/am335x_evm_spiboot_defconfig
configs/am335x_evm_usbspl_defconfig
configs/am335x_hs_evm_defconfig
configs/am335x_hs_evm_uart_defconfig
configs/am335x_igep003x_defconfig
configs/am335x_pdu001_defconfig
configs/am335x_shc_defconfig
configs/am335x_shc_ict_defconfig
configs/am335x_shc_netboot_defconfig
configs/am335x_shc_prompt_defconfig
configs/am335x_shc_sdboot_defconfig
configs/am335x_shc_sdboot_prompt_defconfig
configs/am335x_sl50_defconfig
configs/am3517_evm_defconfig
configs/am43xx_evm_defconfig
configs/am43xx_evm_rtconly_defconfig
configs/am43xx_evm_usbhost_boot_defconfig
configs/am43xx_hs_evm_defconfig
configs/am57xx_evm_defconfig
configs/am57xx_hs_evm_defconfig
configs/apf27_defconfig
configs/apx4devkit_defconfig
configs/aristainetos2_defconfig
configs/aristainetos2b_defconfig
configs/aristainetos_defconfig
configs/at91sam9n12ek_mmc_defconfig
configs/at91sam9n12ek_nandflash_defconfig
configs/at91sam9n12ek_spiflash_defconfig
configs/at91sam9x5ek_dataflash_defconfig
configs/at91sam9x5ek_mmc_defconfig
configs/at91sam9x5ek_nandflash_defconfig
configs/at91sam9x5ek_spiflash_defconfig
configs/bcm7260_defconfig
configs/bcm7445_defconfig
configs/birdland_bav335a_defconfig
configs/birdland_bav335b_defconfig
configs/brppt1_mmc_defconfig
configs/brppt1_nand_defconfig
configs/brppt1_spi_defconfig
configs/cairo_defconfig
configs/chiliboard_defconfig
configs/chromebook_link64_defconfig
configs/chromebook_link_defconfig
configs/cm_fx6_defconfig
configs/cm_t335_defconfig
configs/cm_t3517_defconfig
configs/cm_t35_defconfig
configs/cm_t43_defconfig
configs/colibri-imx6ull_defconfig
configs/colibri_imx7_defconfig
configs/colibri_t20_defconfig
configs/colibri_vf_defconfig
configs/corvus_defconfig
configs/da850_am18xxevm_defconfig
configs/da850evm_defconfig
configs/da850evm_nand_defconfig
configs/devkit8000_defconfig
configs/display5_defconfig
configs/display5_factory_defconfig
configs/dns325_defconfig
configs/dockstar_defconfig
configs/dra7xx_evm_defconfig
configs/dra7xx_hs_evm_defconfig
configs/draco_defconfig
configs/dragonboard410c_defconfig
configs/ds414_defconfig
configs/ea20_defconfig
configs/eco5pk_defconfig
configs/emdk_defconfig [deleted file]
configs/emsdp_defconfig [new file with mode: 0644]
configs/etamin_defconfig
configs/ethernut5_defconfig
configs/evb-ast2500_defconfig
configs/flea3_defconfig
configs/gardena-smart-gateway-mt7688-ram_defconfig
configs/gardena-smart-gateway-mt7688_defconfig
configs/goflexhome_defconfig
configs/gose_defconfig
configs/guruplug_defconfig
configs/gwventana_emmc_defconfig
configs/gwventana_gw5904_defconfig
configs/gwventana_nand_defconfig
configs/harmony_defconfig
configs/hikey_defconfig
configs/ib62x0_defconfig
configs/iconnect_defconfig
configs/ids8313_defconfig
configs/igep0032_defconfig
configs/igep00x0_defconfig
configs/imx6dl_icore_nand_defconfig
configs/imx6q_icore_nand_defconfig
configs/imx6q_logic_defconfig
configs/imx6qdl_icore_mmc_defconfig
configs/imx6qdl_icore_nand_defconfig
configs/imx6ul_geam_nand_defconfig
configs/imx6ul_isiot_nand_defconfig
configs/imx8qxp_mek_defconfig
configs/ipam390_defconfig
configs/k2e_evm_defconfig
configs/k2e_hs_evm_defconfig
configs/k2g_evm_defconfig
configs/k2g_hs_evm_defconfig
configs/k2hk_evm_defconfig
configs/k2hk_hs_evm_defconfig
configs/k2l_evm_defconfig
configs/k2l_hs_evm_defconfig
configs/khadas-vim2_defconfig
configs/km_kirkwood_128m16_defconfig
configs/km_kirkwood_defconfig
configs/km_kirkwood_pci_defconfig
configs/kmcoge4_defconfig
configs/kmcoge5ne_defconfig
configs/kmcoge5un_defconfig
configs/kmeter1_defconfig
configs/kmlion1_defconfig
configs/kmnusa_defconfig
configs/kmopti2_defconfig
configs/kmsugp1_defconfig
configs/kmsupx5_defconfig
configs/kmsuv31_defconfig
configs/kmtegr1_defconfig
configs/kmtepr2_defconfig
configs/kmvect1_defconfig
configs/koelsch_defconfig
configs/lager_defconfig
configs/ls1021atwr_qspi_defconfig
configs/ls1021atwr_sdcard_qspi_defconfig
configs/ls1043aqds_qspi_defconfig
configs/ls1043aqds_sdcard_qspi_defconfig
configs/ls1046aqds_qspi_defconfig
configs/ls1046aqds_sdcard_qspi_defconfig
configs/ls1046ardb_emmc_defconfig
configs/ls1046ardb_qspi_SECURE_BOOT_defconfig
configs/ls1046ardb_qspi_defconfig
configs/ls1046ardb_sdcard_defconfig
configs/ls1088aqds_qspi_SECURE_BOOT_defconfig
configs/ls1088aqds_qspi_defconfig
configs/ls1088aqds_sdcard_qspi_defconfig
configs/ls1088ardb_qspi_SECURE_BOOT_defconfig
configs/ls1088ardb_qspi_defconfig
configs/ls1088ardb_sdcard_qspi_SECURE_BOOT_defconfig
configs/ls1088ardb_sdcard_qspi_defconfig
configs/ls2080a_emu_defconfig
configs/ls2080aqds_nand_defconfig
configs/ls2080aqds_qspi_defconfig
configs/ls2080aqds_sdcard_defconfig
configs/ls2088ardb_qspi_SECURE_BOOT_defconfig
configs/ls2088ardb_qspi_defconfig
configs/m53menlo_defconfig
configs/mccmon6_nor_defconfig
configs/mccmon6_sd_defconfig
configs/mcx_defconfig
configs/mgcoge3un_defconfig
configs/microblaze-generic_defconfig
configs/mt_ventoux_defconfig
configs/mx28evk_auart_console_defconfig
configs/mx28evk_defconfig
configs/mx28evk_nand_defconfig
configs/mx28evk_spi_defconfig
configs/mx35pdk_defconfig
configs/mx6sxsabreauto_defconfig
configs/mx6sxsabresd_defconfig
configs/mx6ul_14x14_evk_defconfig
configs/mx6ul_9x9_evk_defconfig
configs/mx7dsabresd_qspi_defconfig
configs/nas220_defconfig
configs/nsa310s_defconfig
configs/omap35_logic_defconfig
configs/omap35_logic_somlv_defconfig
configs/omap3_beagle_defconfig
configs/omap3_evm_defconfig
configs/omap3_logic_defconfig
configs/omap3_logic_somlv_defconfig
configs/omap3_overo_defconfig
configs/omap3_pandora_defconfig
configs/omap3_zoom1_defconfig
configs/omapl138_lcdk_defconfig
configs/openrd_base_defconfig
configs/openrd_client_defconfig
configs/openrd_ultimate_defconfig
configs/pcm051_rev1_defconfig
configs/pcm051_rev3_defconfig
configs/pcm058_defconfig
configs/pengwyn_defconfig
configs/pepper_defconfig
configs/pfla02_defconfig
configs/platinum_picon_defconfig
configs/platinum_titanium_defconfig
configs/pogo_e02_defconfig
configs/porter_defconfig
configs/portl2_defconfig
configs/pxm2_defconfig
configs/qemu_arm64_defconfig
configs/qemu_arm_defconfig
configs/r8a7795_salvator-x_defconfig
configs/r8a77970_eagle_defconfig
configs/rastaban_defconfig
configs/rut_defconfig
configs/s5pc210_universal_defconfig
configs/sama5d2_ptc_ek_mmc_defconfig
configs/sama5d3_xplained_mmc_defconfig
configs/sama5d3_xplained_nandflash_defconfig
configs/sandbox64_defconfig
configs/sandbox_defconfig
configs/sandbox_flattree_defconfig
configs/sandbox_spl_defconfig
configs/sheevaplug_defconfig
configs/silk_defconfig
configs/smartweb_defconfig
configs/smdkc100_defconfig
configs/sniper_defconfig
configs/socfpga_arria10_defconfig
configs/socfpga_dbm_soc1_defconfig
configs/socfpga_de10_nano_defconfig
configs/socfpga_de1_soc_defconfig
configs/spear300_defconfig
configs/spear300_nand_defconfig
configs/spear300_usbtty_defconfig
configs/spear300_usbtty_nand_defconfig
configs/spear310_defconfig
configs/spear310_nand_defconfig
configs/spear310_pnor_defconfig
configs/spear310_usbtty_defconfig
configs/spear310_usbtty_nand_defconfig
configs/spear310_usbtty_pnor_defconfig
configs/spear320_defconfig
configs/spear320_nand_defconfig
configs/spear320_pnor_defconfig
configs/spear320_usbtty_defconfig
configs/spear320_usbtty_nand_defconfig
configs/spear320_usbtty_pnor_defconfig
configs/spear600_defconfig
configs/spear600_nand_defconfig
configs/spear600_usbtty_defconfig
configs/spear600_usbtty_nand_defconfig
configs/stout_defconfig
configs/suvd3_defconfig
configs/taurus_defconfig
configs/thuban_defconfig
configs/titanium_defconfig
configs/tricorder_defconfig
configs/tricorder_flash_defconfig
configs/tuge1_defconfig
configs/turris_mox_defconfig
configs/tuxx1_defconfig
configs/twister_defconfig
configs/udoo_defconfig
configs/uniphier_ld4_sld8_defconfig
configs/uniphier_v7_defconfig
configs/uniphier_v8_defconfig
configs/vct_platinum_onenand_defconfig
configs/vct_platinum_onenand_small_defconfig
configs/vct_platinumavc_onenand_defconfig
configs/vct_platinumavc_onenand_small_defconfig
configs/vct_premium_onenand_defconfig
configs/vct_premium_onenand_small_defconfig
configs/warp7_bl33_defconfig
configs/warp7_defconfig
configs/wb45n_defconfig
configs/woodburn_defconfig
configs/woodburn_sd_defconfig
configs/x600_defconfig
doc/device-tree-bindings/net/mediatek,mt7628-eth.txt [new file with mode: 0644]
drivers/clk/aspeed/clk_ast2500.c
drivers/dfu/Kconfig
drivers/fpga/socfpga_arria10.c
drivers/fpga/socfpga_gen5.c
drivers/gpio/pca953x_gpio.c
drivers/mmc/dw_mmc.c
drivers/mmc/renesas-sdhi.c
drivers/mmc/tmio-common.c
drivers/mtd/Kconfig
drivers/mtd/mtd_uboot.c
drivers/net/Kconfig
drivers/net/Makefile
drivers/net/cpsw-common.c [deleted file]
drivers/net/cpsw.c [deleted file]
drivers/net/davinci_emac.c [deleted file]
drivers/net/davinci_emac.h [deleted file]
drivers/net/fm/t1040.c
drivers/net/ftgmac100.c
drivers/net/ftgmac100.h
drivers/net/keystone_net.c [deleted file]
drivers/net/mt7628-eth.c [new file with mode: 0644]
drivers/net/phy/mscc.c
drivers/net/ti/Kconfig [new file with mode: 0644]
drivers/net/ti/Makefile [new file with mode: 0644]
drivers/net/ti/cpsw-common.c [new file with mode: 0644]
drivers/net/ti/cpsw.c [new file with mode: 0644]
drivers/net/ti/cpsw_mdio.c [new file with mode: 0644]
drivers/net/ti/cpsw_mdio.h [new file with mode: 0644]
drivers/net/ti/davinci_emac.c [new file with mode: 0644]
drivers/net/ti/davinci_emac.h [new file with mode: 0644]
drivers/net/ti/keystone_net.c [new file with mode: 0644]
drivers/pinctrl/renesas/pfc-r8a77990.c
drivers/pinctrl/renesas/pfc.c
drivers/power/regulator/Kconfig
drivers/serial/serial-uclass.c
drivers/usb/common/fsl-errata.c
drivers/usb/host/ehci-fsl.c
drivers/usb/host/ehci-hcd.c
drivers/usb/host/ehci.h
drivers/w1-eeprom/ds24xxx.c
drivers/w1/w1-uclass.c
fs/ubifs/ubifs.c
include/configs/at91sam9x5ek.h
include/configs/emdk.h [deleted file]
include/configs/emsdp.h [new file with mode: 0644]
include/configs/socfpga_common.h
include/configs/ti_armv7_keystone2.h
include/configs/wb45n.h
include/configs/zynq-common.h
include/dwmmc.h
include/environment/ti/boot.h
include/fsl_usb.h
include/init.h
include/netdev.h
scripts/config_whitelist.txt
test/dm/tee.c
tools/imx8image.c
tools/mips-relocs.c

index cf8f73f200b8a043d3aa8e4949b7d64a678876d0..abdb6dcdb513aa7182a5509b32249889e6a94cd9 100644 (file)
@@ -121,6 +121,7 @@ F:  drivers/spi/bcmstb_spi.c
 ARM FREESCALE IMX
 M:     Stefano Babic <sbabic@denx.de>
 M:     Fabio Estevam <fabio.estevam@nxp.com>
+R:     NXP Linux Team <linux-imx@nxp.com>
 S:     Maintained
 T:     git git://git.denx.de/u-boot-imx.git
 F:     arch/arm/cpu/arm1136/mx*/
@@ -232,6 +233,7 @@ ARM STM STM32MP
 M:     Patrick Delaunay <patrick.delaunay@st.com>
 M:     Christophe Kerello <christophe.kerello@st.com>
 M:     Patrice Chotard <patrice.chotard@st.com>
+L:     uboot-stm32@st-md-mailman.stormreply.com (moderated for non-subscribers)
 S:     Maintained
 F:     arch/arm/mach-stm32mp
 F:     drivers/clk/clk_stm32mp1.c
index 250eb6c3c39b9148c0712c5ef1e22be9473c2972..552687db5385b4b04e4181283fd849557c702a39 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -3,7 +3,7 @@
 VERSION = 2018
 PATCHLEVEL = 11
 SUBLEVEL =
-EXTRAVERSION = -rc3
+EXTRAVERSION =
 NAME =
 
 # *DOCUMENTATION*
index b24593e137b31907df4f8d744f4912b0b05e328d..fa6b3447c961dcd2069b0a65c0e99516a5fae317 100644 (file)
@@ -150,8 +150,8 @@ config TARGET_AXS101
 config TARGET_AXS103
        bool "Support Synopsys Designware SDP board AXS103"
 
-config TARGET_EMDK
-       bool "Synopsys EM Development kit"
+config TARGET_EMSDP
+       bool "Synopsys EM Software Development Platform"
        select CPU_ARCEM6
 
 config TARGET_HSDK
@@ -166,7 +166,7 @@ endchoice
 source "board/abilis/tb100/Kconfig"
 source "board/synopsys/Kconfig"
 source "board/synopsys/axs10x/Kconfig"
-source "board/synopsys/emdk/Kconfig"
+source "board/synopsys/emsdp/Kconfig"
 source "board/synopsys/hsdk/Kconfig"
 source "board/synopsys/iot_devkit/Kconfig"
 
index 17e1405c0c4833b48d57f4f9a975e2453d42150c..4f1e4637ce956922db66b8bbb86c5046f23a96c3 100644 (file)
@@ -4,7 +4,7 @@ dtb-$(CONFIG_TARGET_AXS101) +=  axs101.dtb
 dtb-$(CONFIG_TARGET_AXS103) +=  axs103.dtb
 dtb-$(CONFIG_TARGET_NSIM) +=  nsim.dtb
 dtb-$(CONFIG_TARGET_TB100) +=  abilis_tb100.dtb
-dtb-$(CONFIG_TARGET_EMDK) +=  emdk.dtb
+dtb-$(CONFIG_TARGET_EMSDP) +=  emsdp.dtb
 dtb-$(CONFIG_TARGET_HSDK) +=  hsdk.dtb
 dtb-$(CONFIG_TARGET_IOT_DEVKIT) +=  iot_devkit.dtb
 
diff --git a/arch/arc/dts/emdk.dts b/arch/arc/dts/emdk.dts
deleted file mode 100644 (file)
index ebe538d..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * Copyright (C) 2018 Synopsys, Inc. All rights reserved.
- */
-/dts-v1/;
-
-#include "skeleton.dtsi"
-
-/ {
-       model = "snps,emdk";
-
-       #address-cells = <1>;
-       #size-cells = <1>;
-
-       aliases {
-               console = &uart0;
-       };
-
-       cpu_card {
-               core_clk: core_clk {
-                       #clock-cells = <0>;
-                       compatible = "fixed-clock";
-                       clock-frequency = <40000000>;
-                       u-boot,dm-pre-reloc;
-               };
-       };
-
-       uart0: serial0@f0004000 {
-               compatible = "snps,dw-apb-uart";
-               clock-frequency = <100000000>;
-               reg = <0xf0004000 0x1000>;
-               reg-shift = <2>;
-               reg-io-width = <4>;
-       };
-};
diff --git a/arch/arc/dts/emsdp.dts b/arch/arc/dts/emsdp.dts
new file mode 100644 (file)
index 0000000..d307b95
--- /dev/null
@@ -0,0 +1,35 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2018 Synopsys, Inc. All rights reserved.
+ */
+/dts-v1/;
+
+#include "skeleton.dtsi"
+
+/ {
+       model = "snps,emsdp";
+
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       aliases {
+               console = &uart0;
+       };
+
+       cpu_card {
+               core_clk: core_clk {
+                       #clock-cells = <0>;
+                       compatible = "fixed-clock";
+                       clock-frequency = <40000000>;
+                       u-boot,dm-pre-reloc;
+               };
+       };
+
+       uart0: serial0@f0004000 {
+               compatible = "snps,dw-apb-uart";
+               clock-frequency = <100000000>;
+               reg = <0xf0004000 0x1000>;
+               reg-shift = <2>;
+               reg-io-width = <4>;
+       };
+};
index d6b189af58855649e88adab52a22c848ffd6a652..2899a60793c6748924e60d00869f63b9d6cc5a6a 100644 (file)
@@ -807,7 +807,6 @@ config ARCH_SOCFPGA
        select SPL_SPI_SUPPORT if DM_SPI
        select SPL_WATCHDOG_SUPPORT
        select SUPPORT_SPL
-       select SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
        select SYS_NS16550
        select SYS_THUMB_BUILD if TARGET_SOCFPGA_GEN5 || TARGET_SOCFPGA_ARRIA10
        imply CMD_DM
@@ -817,6 +816,7 @@ config ARCH_SOCFPGA
        imply DM_SPI_FLASH
        imply FAT_WRITE
        imply SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
+       imply SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION_TYPE
 
 config ARCH_SUNXI
        bool "Support sunxi (Allwinner) SoCs"
index 7087ccfc2f0f60565b7824233dbb055e2fb1942b..965c38426c50c197e6f87eaa98bff8cef855ea78 100644 (file)
                                        u-boot,dm-pre-reloc;
                                        #address-cells = <1>;
                                        #size-cells = <1>;
-                                       compatible = "n25q128a13", "jedec,spi-nor";
+                                       compatible = "n25q128a13", "jedec,spi-nor", "spi-flash";
                                        reg = <0>; /* Chip select 0 */
                                        spi-max-frequency = <27777777>;
                                };
                        spi1: spi@10680 {
                                status = "okay";
 
-                               fpga@2 {
+                               fpga@0 {
                                        #address-cells = <1>;
                                        #size-cells = <1>;
                                        compatible = "spi-generic-device";
-                                       reg = <2>; /* Chip select 2 */
+                                       reg = <0>; /* Chip select 0 */
                                        spi-max-frequency = <27777777>;
                                };
                        };
index 723941ac0beea72f8416833852c721a7b4161031..ebf44fd707f9ad35c29d0053d4722927e8542d60 100644 (file)
        chosen {
                stdout-path = &uart5;
        };
+
+       aliases {
+               ethernet0 = &mac0;
+               ethernet1 = &mac1;
+       };
 };
 
 &uart5 {
        u-boot,dm-pre-reloc;
        status = "okay";
 };
+
+&mac0 {
+       status = "okay";
+
+       phy-mode = "rgmii";
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_mac1link_default &pinctrl_mdio1_default>;
+};
+
+&mac1 {
+       status = "okay";
+
+       phy-mode = "rgmii";
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_mac2link_default &pinctrl_mdio2_default>;
+};
index 7e0ad3a41ac546487d634f0d479966229832d009..98359bf924250ec18da0c2406e88cd67d1188176 100644 (file)
        #size-cells = <1>;
        interrupt-parent = <&vic>;
 
+       aliases {
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               i2c2 = &i2c2;
+               i2c3 = &i2c3;
+               i2c4 = &i2c4;
+               i2c5 = &i2c5;
+               i2c6 = &i2c6;
+               i2c7 = &i2c7;
+               i2c8 = &i2c8;
+               i2c9 = &i2c9;
+               i2c10 = &i2c10;
+               i2c11 = &i2c11;
+               i2c12 = &i2c12;
+               i2c13 = &i2c13;
+               serial0 = &uart1;
+               serial1 = &uart2;
+               serial2 = &uart3;
+               serial3 = &uart4;
+               serial4 = &uart5;
+               serial5 = &vuart;
+       };
+
        cpus {
                #address-cells = <1>;
                #size-cells = <0>;
                };
        };
 
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x80000000 0>;
+       };
+
        ahb {
                compatible = "simple-bus";
                #address-cells = <1>;
                #size-cells = <1>;
                ranges;
 
+               fmc: flash-controller@1e620000 {
+                       reg = < 0x1e620000 0xc4
+                               0x20000000 0x10000000 >;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "aspeed,ast2500-fmc";
+                       status = "disabled";
+                       interrupts = <19>;
+                       flash@0 {
+                               reg = < 0 >;
+                               compatible = "jedec,spi-nor";
+                               status = "disabled";
+                       };
+                       flash@1 {
+                               reg = < 1 >;
+                               compatible = "jedec,spi-nor";
+                               status = "disabled";
+                       };
+                       flash@2 {
+                               reg = < 2 >;
+                               compatible = "jedec,spi-nor";
+                               status = "disabled";
+                       };
+               };
+
+               spi1: flash-controller@1e630000 {
+                       reg = < 0x1e630000 0xc4
+                               0x30000000 0x08000000 >;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "aspeed,ast2500-spi";
+                       status = "disabled";
+                       flash@0 {
+                               reg = < 0 >;
+                               compatible = "jedec,spi-nor";
+                               status = "disabled";
+                       };
+                       flash@1 {
+                               reg = < 1 >;
+                               compatible = "jedec,spi-nor";
+                               status = "disabled";
+                       };
+               };
+
+               spi2: flash-controller@1e631000 {
+                       reg = < 0x1e631000 0xc4
+                               0x38000000 0x08000000 >;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       compatible = "aspeed,ast2500-spi";
+                       status = "disabled";
+                       flash@0 {
+                               reg = < 0 >;
+                               compatible = "jedec,spi-nor";
+                               status = "disabled";
+                       };
+                       flash@1 {
+                               reg = < 1 >;
+                               compatible = "jedec,spi-nor";
+                               status = "disabled";
+                       };
+               };
+
                vic: interrupt-controller@1e6c0080 {
                        compatible = "aspeed,ast2400-vic";
                        interrupt-controller;
                };
 
                mac0: ethernet@1e660000 {
-                       compatible = "faraday,ftgmac100";
+                       compatible = "aspeed,ast2500-mac", "faraday,ftgmac100";
                        reg = <0x1e660000 0x180>;
                        interrupts = <2>;
-                       no-hw-checksum;
                        status = "disabled";
                };
 
                mac1: ethernet@1e680000 {
-                       compatible = "faraday,ftgmac100";
+                       compatible = "aspeed,ast2500-mac", "faraday,ftgmac100";
                        reg = <0x1e680000 0x180>;
                        interrupts = <3>;
-                       no-hw-checksum;
+                       status = "disabled";
+               };
+
+               ehci0: usb@1e6a1000 {
+                       compatible = "aspeed,ast2500-ehci", "generic-ehci";
+                       reg = <0x1e6a1000 0x100>;
+                       interrupts = <5>;
+                       status = "disabled";
+               };
+
+               ehci1: usb@1e6a3000 {
+                       compatible = "aspeed,ast2500-ehci", "generic-ehci";
+                       reg = <0x1e6a3000 0x100>;
+                       interrupts = <13>;
+                       status = "disabled";
+               };
+
+               uhci: usb@1e6b0000 {
+                       compatible = "aspeed,ast2500-uhci", "generic-uhci";
+                       reg = <0x1e6b0000 0x100>;
+                       interrupts = <14>;
+                       #ports = <2>;
                        status = "disabled";
                };
 
                        #size-cells = <1>;
                        ranges;
 
-                       clk_clkin: clk_clkin@1e6e2070 {
-                               #clock-cells = <0>;
-                               compatible = "aspeed,g5-clkin-clock";
-                               reg = <0x1e6e2070 0x04>;
-                       };
-
                        syscon: syscon@1e6e2000 {
                                compatible = "aspeed,g5-scu", "syscon", "simple-mfd";
                                reg = <0x1e6e2000 0x1a8>;
+                               #clock-cells = <1>;
+                               #reset-cells = <1>;
 
                                pinctrl: pinctrl {
                                        compatible = "aspeed,g5-pinctrl";
                                        aspeed,external-nodes = <&gfx &lhc>;
 
-                                       pinctrl_acpi_default: acpi_default {
-                                               function = "ACPI";
-                                               groups = "ACPI";
-                                       };
+                               };
+                       };
 
-                                       pinctrl_adc0_default: adc0_default {
-                                               function = "ADC0";
-                                               groups = "ADC0";
-                                       };
+                       rng: hwrng@1e6e2078 {
+                               compatible = "timeriomem_rng";
+                               reg = <0x1e6e2078 0x4>;
+                               period = <1>;
+                               quality = <100>;
+                       };
 
-                                       pinctrl_adc1_default: adc1_default {
-                                               function = "ADC1";
-                                               groups = "ADC1";
-                                       };
+                       gfx: display@1e6e6000 {
+                               compatible = "aspeed,ast2500-gfx", "syscon";
+                               reg = <0x1e6e6000 0x1000>;
+                               reg-io-width = <4>;
+                       };
 
-                                       pinctrl_adc10_default: adc10_default {
-                                               function = "ADC10";
-                                               groups = "ADC10";
-                                       };
+                       adc: adc@1e6e9000 {
+                               compatible = "aspeed,ast2500-adc";
+                               reg = <0x1e6e9000 0xb0>;
+                               #io-channel-cells = <1>;
+                               status = "disabled";
+                       };
 
-                                       pinctrl_adc11_default: adc11_default {
-                                               function = "ADC11";
-                                               groups = "ADC11";
-                                       };
+                       sram@1e720000 {
+                               compatible = "mmio-sram";
+                               reg = <0x1e720000 0x9000>;      // 36K
+                       };
 
-                                       pinctrl_adc12_default: adc12_default {
-                                               function = "ADC12";
-                                               groups = "ADC12";
-                                       };
+                       gpio: gpio@1e780000 {
+                               #gpio-cells = <2>;
+                               gpio-controller;
+                               compatible = "aspeed,ast2500-gpio";
+                               reg = <0x1e780000 0x1000>;
+                               interrupts = <20>;
+                               gpio-ranges = <&pinctrl 0 0 220>;
+                               interrupt-controller;
+                       };
 
-                                       pinctrl_adc13_default: adc13_default {
-                                               function = "ADC13";
-                                               groups = "ADC13";
-                                       };
+                       timer: timer@1e782000 {
+                               /* This timer is a Faraday FTTMR010 derivative */
+                               compatible = "aspeed,ast2400-timer";
+                               reg = <0x1e782000 0x90>;
+                       };
 
-                                       pinctrl_adc14_default: adc14_default {
-                                               function = "ADC14";
-                                               groups = "ADC14";
-                                       };
+                       uart1: serial@1e783000 {
+                               compatible = "ns16550a";
+                               reg = <0x1e783000 0x20>;
+                               reg-shift = <2>;
+                               interrupts = <9>;
+                               no-loopback-test;
+                               status = "disabled";
+                       };
 
-                                       pinctrl_adc15_default: adc15_default {
-                                               function = "ADC15";
-                                               groups = "ADC15";
-                                       };
+                       uart5: serial@1e784000 {
+                               compatible = "ns16550a";
+                               reg = <0x1e784000 0x20>;
+                               reg-shift = <2>;
+                               interrupts = <10>;
+                               no-loopback-test;
+                               status = "disabled";
+                       };
 
-                                       pinctrl_adc2_default: adc2_default {
-                                               function = "ADC2";
-                                               groups = "ADC2";
-                                       };
+                       wdt1: watchdog@1e785000 {
+                               compatible = "aspeed,wdt";
+                               reg = <0x1e785000 0x1c>;
+                               interrupts = <27>;
+                       };
 
-                                       pinctrl_adc3_default: adc3_default {
-                                               function = "ADC3";
-                                               groups = "ADC3";
-                                       };
+                       wdt2: watchdog@1e785020 {
+                               compatible = "aspeed,wdt";
+                               reg = <0x1e785020 0x1c>;
+                               interrupts = <27>;
+                               status = "disabled";
+                       };
 
-                                       pinctrl_adc4_default: adc4_default {
-                                               function = "ADC4";
-                                               groups = "ADC4";
-                                       };
+                       wdt3: watchdog@1e785040 {
+                               compatible = "aspeed,wdt";
+                               reg = <0x1e785040 0x1c>;
+                               status = "disabled";
+                       };
 
-                                       pinctrl_adc5_default: adc5_default {
-                                               function = "ADC5";
-                                               groups = "ADC5";
-                                       };
+                       pwm_tacho: pwm-tacho-controller@1e786000 {
+                               compatible = "aspeed,ast2500-pwm-tacho";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x1e786000 0x1000>;
+                               status = "disabled";
+                       };
 
-                                       pinctrl_adc6_default: adc6_default {
-                                               function = "ADC6";
-                                               groups = "ADC6";
-                                       };
+                       vuart: serial@1e787000 {
+                               compatible = "aspeed,ast2500-vuart";
+                               reg = <0x1e787000 0x40>;
+                               reg-shift = <2>;
+                               interrupts = <8>;
+                               no-loopback-test;
+                               status = "disabled";
+                       };
 
-                                       pinctrl_adc7_default: adc7_default {
-                                               function = "ADC7";
-                                               groups = "ADC7";
-                                       };
+                       lpc: lpc@1e789000 {
+                               compatible = "aspeed,ast2500-lpc", "simple-mfd";
+                               reg = <0x1e789000 0x1000>;
 
-                                       pinctrl_adc8_default: adc8_default {
-                                               function = "ADC8";
-                                               groups = "ADC8";
-                                       };
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               ranges = <0x0 0x1e789000 0x1000>;
 
-                                       pinctrl_adc9_default: adc9_default {
-                                               function = "ADC9";
-                                               groups = "ADC9";
-                                       };
+                               lpc_bmc: lpc-bmc@0 {
+                                       compatible = "aspeed,ast2500-lpc-bmc";
+                                       reg = <0x0 0x80>;
+                               };
 
-                                       pinctrl_bmcint_default: bmcint_default {
-                                               function = "BMCINT";
-                                               groups = "BMCINT";
-                                       };
+                               lpc_host: lpc-host@80 {
+                                       compatible = "aspeed,ast2500-lpc-host", "simple-mfd", "syscon";
+                                       reg = <0x80 0x1e0>;
+                                       reg-io-width = <4>;
 
-                                       pinctrl_ddcclk_default: ddcclk_default {
-                                               function = "DDCCLK";
-                                               groups = "DDCCLK";
-                                       };
+                                       #address-cells = <1>;
+                                       #size-cells = <1>;
+                                       ranges = <0x0 0x80 0x1e0>;
 
-                                       pinctrl_ddcdat_default: ddcdat_default {
-                                               function = "DDCDAT";
-                                               groups = "DDCDAT";
+                                       lpc_ctrl: lpc-ctrl@0 {
+                                               compatible = "aspeed,ast2500-lpc-ctrl";
+                                               reg = <0x0 0x80>;
+                                               status = "disabled";
                                        };
 
-                                       pinctrl_espi_default: espi_default {
-                                               function = "ESPI";
-                                               groups = "ESPI";
+                                       lpc_snoop: lpc-snoop@0 {
+                                               compatible = "aspeed,ast2500-lpc-snoop";
+                                               reg = <0x0 0x80>;
+                                               interrupts = <8>;
+                                               status = "disabled";
                                        };
 
-                                       pinctrl_fwspics1_default: fwspics1_default {
-                                               function = "FWSPICS1";
-                                               groups = "FWSPICS1";
+                                       lhc: lhc@20 {
+                                               compatible = "aspeed,ast2500-lhc";
+                                               reg = <0x20 0x24 0x48 0x8>;
                                        };
 
-                                       pinctrl_fwspics2_default: fwspics2_default {
-                                               function = "FWSPICS2";
-                                               groups = "FWSPICS2";
+                                       lpc_reset: reset-controller@18 {
+                                               compatible = "aspeed,ast2500-lpc-reset";
+                                               reg = <0x18 0x4>;
+                                               #reset-cells = <1>;
                                        };
 
-                                       pinctrl_gpid0_default: gpid0_default {
-                                               function = "GPID0";
-                                               groups = "GPID0";
+                                       ibt: ibt@c0 {
+                                               compatible = "aspeed,ast2500-ibt-bmc";
+                                               reg = <0xc0 0x18>;
+                                               interrupts = <8>;
+                                               status = "disabled";
                                        };
+                               };
+                       };
 
-                                       pinctrl_gpid2_default: gpid2_default {
-                                               function = "GPID2";
-                                               groups = "GPID2";
-                                       };
+                       uart2: serial@1e78d000 {
+                               compatible = "ns16550a";
+                               reg = <0x1e78d000 0x20>;
+                               reg-shift = <2>;
+                               interrupts = <32>;
+                               no-loopback-test;
+                               status = "disabled";
+                       };
 
-                                       pinctrl_gpid4_default: gpid4_default {
-                                               function = "GPID4";
-                                               groups = "GPID4";
-                                       };
+                       uart3: serial@1e78e000 {
+                               compatible = "ns16550a";
+                               reg = <0x1e78e000 0x20>;
+                               reg-shift = <2>;
+                               interrupts = <33>;
+                               no-loopback-test;
+                               status = "disabled";
+                       };
 
-                                       pinctrl_gpid6_default: gpid6_default {
-                                               function = "GPID6";
-                                               groups = "GPID6";
-                                       };
+                       uart4: serial@1e78f000 {
+                               compatible = "ns16550a";
+                               reg = <0x1e78f000 0x20>;
+                               reg-shift = <2>;
+                               interrupts = <34>;
+                               no-loopback-test;
+                               status = "disabled";
+                       };
 
-                                       pinctrl_gpie0_default: gpie0_default {
-                                               function = "GPIE0";
-                                               groups = "GPIE0";
-                                       };
+                       i2c: i2c@1e78a000 {
+                               compatible = "simple-bus";
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               ranges = <0 0x1e78a000 0x1000>;
+                       };
+               };
+       };
+};
 
-                                       pinctrl_gpie2_default: gpie2_default {
-                                               function = "GPIE2";
-                                               groups = "GPIE2";
-                                       };
+&i2c {
+       i2c_ic: interrupt-controller@0 {
+               #interrupt-cells = <1>;
+               compatible = "aspeed,ast2500-i2c-ic";
+               reg = <0x0 0x40>;
+               interrupts = <12>;
+               interrupt-controller;
+       };
 
-                                       pinctrl_gpie4_default: gpie4_default {
-                                               function = "GPIE4";
-                                               groups = "GPIE4";
-                                       };
+       i2c0: i2c-bus@40 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+
+               reg = <0x40 0x40>;
+               compatible = "aspeed,ast2500-i2c-bus";
+               bus-frequency = <100000>;
+               interrupts = <0>;
+               interrupt-parent = <&i2c_ic>;
+               status = "disabled";
+               /* Does not need pinctrl properties */
+       };
 
-                                       pinctrl_gpie6_default: gpie6_default {
-                                               function = "GPIE6";
-                                               groups = "GPIE6";
-                                       };
+       i2c1: i2c-bus@80 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+
+               reg = <0x80 0x40>;
+               compatible = "aspeed,ast2500-i2c-bus";
+               bus-frequency = <100000>;
+               interrupts = <1>;
+               interrupt-parent = <&i2c_ic>;
+               status = "disabled";
+               /* Does not need pinctrl properties */
+       };
 
-                                       pinctrl_i2c10_default: i2c10_default {
-                                               function = "I2C10";
-                                               groups = "I2C10";
-                                       };
+       i2c2: i2c-bus@c0 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+
+               reg = <0xc0 0x40>;
+               compatible = "aspeed,ast2500-i2c-bus";
+               bus-frequency = <100000>;
+               interrupts = <2>;
+               interrupt-parent = <&i2c_ic>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c3_default>;
+               status = "disabled";
+       };
 
-                                       pinctrl_i2c11_default: i2c11_default {
-                                               function = "I2C11";
-                                               groups = "I2C11";
-                                       };
+       i2c3: i2c-bus@100 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+
+               reg = <0x100 0x40>;
+               compatible = "aspeed,ast2500-i2c-bus";
+               bus-frequency = <100000>;
+               interrupts = <3>;
+               interrupt-parent = <&i2c_ic>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c4_default>;
+               status = "disabled";
+       };
 
-                                       pinctrl_i2c12_default: i2c12_default {
-                                               function = "I2C12";
-                                               groups = "I2C12";
-                                       };
+       i2c4: i2c-bus@140 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+
+               reg = <0x140 0x40>;
+               compatible = "aspeed,ast2500-i2c-bus";
+               bus-frequency = <100000>;
+               interrupts = <4>;
+               interrupt-parent = <&i2c_ic>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c5_default>;
+               status = "disabled";
+       };
 
-                                       pinctrl_i2c13_default: i2c13_default {
-                                               function = "I2C13";
-                                               groups = "I2C13";
-                                       };
+       i2c5: i2c-bus@180 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+
+               reg = <0x180 0x40>;
+               compatible = "aspeed,ast2500-i2c-bus";
+               bus-frequency = <100000>;
+               interrupts = <5>;
+               interrupt-parent = <&i2c_ic>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c6_default>;
+               status = "disabled";
+       };
 
-                                       pinctrl_i2c14_default: i2c14_default {
-                                               function = "I2C14";
-                                               groups = "I2C14";
-                                       };
+       i2c6: i2c-bus@1c0 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+
+               reg = <0x1c0 0x40>;
+               compatible = "aspeed,ast2500-i2c-bus";
+               bus-frequency = <100000>;
+               interrupts = <6>;
+               interrupt-parent = <&i2c_ic>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c7_default>;
+               status = "disabled";
+       };
 
-                                       pinctrl_i2c3_default: i2c3_default {
-                                               function = "I2C3";
-                                               groups = "I2C3";
-                                       };
+       i2c7: i2c-bus@300 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+
+               reg = <0x300 0x40>;
+               compatible = "aspeed,ast2500-i2c-bus";
+               bus-frequency = <100000>;
+               interrupts = <7>;
+               interrupt-parent = <&i2c_ic>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c8_default>;
+               status = "disabled";
+       };
 
-                                       pinctrl_i2c4_default: i2c4_default {
-                                               function = "I2C4";
-                                               groups = "I2C4";
-                                       };
+       i2c8: i2c-bus@340 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+
+               reg = <0x340 0x40>;
+               compatible = "aspeed,ast2500-i2c-bus";
+               bus-frequency = <100000>;
+               interrupts = <8>;
+               interrupt-parent = <&i2c_ic>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c9_default>;
+               status = "disabled";
+       };
 
-                                       pinctrl_i2c5_default: i2c5_default {
-                                               function = "I2C5";
-                                               groups = "I2C5";
-                                       };
+       i2c9: i2c-bus@380 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+
+               reg = <0x380 0x40>;
+               compatible = "aspeed,ast2500-i2c-bus";
+               bus-frequency = <100000>;
+               interrupts = <9>;
+               interrupt-parent = <&i2c_ic>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c10_default>;
+               status = "disabled";
+       };
 
-                                       pinctrl_i2c6_default: i2c6_default {
-                                               function = "I2C6";
-                                               groups = "I2C6";
-                                       };
+       i2c10: i2c-bus@3c0 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+
+               reg = <0x3c0 0x40>;
+               compatible = "aspeed,ast2500-i2c-bus";
+               bus-frequency = <100000>;
+               interrupts = <10>;
+               interrupt-parent = <&i2c_ic>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c11_default>;
+               status = "disabled";
+       };
 
-                                       pinctrl_i2c7_default: i2c7_default {
-                                               function = "I2C7";
-                                               groups = "I2C7";
-                                       };
+       i2c11: i2c-bus@400 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+
+               reg = <0x400 0x40>;
+               compatible = "aspeed,ast2500-i2c-bus";
+               bus-frequency = <100000>;
+               interrupts = <11>;
+               interrupt-parent = <&i2c_ic>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c12_default>;
+               status = "disabled";
+       };
 
-                                       pinctrl_i2c8_default: i2c8_default {
-                                               function = "I2C8";
-                                               groups = "I2C8";
-                                       };
+       i2c12: i2c-bus@440 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+
+               reg = <0x440 0x40>;
+               compatible = "aspeed,ast2500-i2c-bus";
+               bus-frequency = <100000>;
+               interrupts = <12>;
+               interrupt-parent = <&i2c_ic>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c13_default>;
+               status = "disabled";
+       };
 
-                                       pinctrl_i2c9_default: i2c9_default {
-                                               function = "I2C9";
-                                               groups = "I2C9";
-                                       };
+       i2c13: i2c-bus@480 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               #interrupt-cells = <1>;
+
+               reg = <0x480 0x40>;
+               compatible = "aspeed,ast2500-i2c-bus";
+               bus-frequency = <100000>;
+               interrupts = <13>;
+               interrupt-parent = <&i2c_ic>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c14_default>;
+               status = "disabled";
+       };
+};
 
-                                       pinctrl_lad0_default: lad0_default {
-                                               function = "LAD0";
-                                               groups = "LAD0";
-                                       };
+&pinctrl {
+       pinctrl_acpi_default: acpi_default {
+               function = "ACPI";
+               groups = "ACPI";
+       };
 
-                                       pinctrl_lad1_default: lad1_default {
-                                               function = "LAD1";
-                                               groups = "LAD1";
-                                       };
+       pinctrl_adc0_default: adc0_default {
+               function = "ADC0";
+               groups = "ADC0";
+       };
 
-                                       pinctrl_lad2_default: lad2_default {
-                                               function = "LAD2";
-                                               groups = "LAD2";
-                                       };
+       pinctrl_adc1_default: adc1_default {
+               function = "ADC1";
+               groups = "ADC1";
+       };
 
-                                       pinctrl_lad3_default: lad3_default {
-                                               function = "LAD3";
-                                               groups = "LAD3";
-                                       };
+       pinctrl_adc10_default: adc10_default {
+               function = "ADC10";
+               groups = "ADC10";
+       };
 
-                                       pinctrl_lclk_default: lclk_default {
-                                               function = "LCLK";
-                                               groups = "LCLK";
-                                       };
+       pinctrl_adc11_default: adc11_default {
+               function = "ADC11";
+               groups = "ADC11";
+       };
 
-                                       pinctrl_lframe_default: lframe_default {
-                                               function = "LFRAME";
-                                               groups = "LFRAME";
-                                       };
+       pinctrl_adc12_default: adc12_default {
+               function = "ADC12";
+               groups = "ADC12";
+       };
 
-                                       pinctrl_lpchc_default: lpchc_default {
-                                               function = "LPCHC";
-                                               groups = "LPCHC";
-                                       };
+       pinctrl_adc13_default: adc13_default {
+               function = "ADC13";
+               groups = "ADC13";
+       };
 
-                                       pinctrl_lpcpd_default: lpcpd_default {
-                                               function = "LPCPD";
-                                               groups = "LPCPD";
-                                       };
+       pinctrl_adc14_default: adc14_default {
+               function = "ADC14";
+               groups = "ADC14";
+       };
 
-                                       pinctrl_lpcplus_default: lpcplus_default {
-                                               function = "LPCPLUS";
-                                               groups = "LPCPLUS";
-                                       };
+       pinctrl_adc15_default: adc15_default {
+               function = "ADC15";
+               groups = "ADC15";
+       };
 
-                                       pinctrl_lpcpme_default: lpcpme_default {
-                                               function = "LPCPME";
-                                               groups = "LPCPME";
-                                       };
+       pinctrl_adc2_default: adc2_default {
+               function = "ADC2";
+               groups = "ADC2";
+       };
 
-                                       pinctrl_lpcrst_default: lpcrst_default {
-                                               function = "LPCRST";
-                                               groups = "LPCRST";
-                                       };
+       pinctrl_adc3_default: adc3_default {
+               function = "ADC3";
+               groups = "ADC3";
+       };
 
-                                       pinctrl_lpcsmi_default: lpcsmi_default {
-                                               function = "LPCSMI";
-                                               groups = "LPCSMI";
-                                       };
+       pinctrl_adc4_default: adc4_default {
+               function = "ADC4";
+               groups = "ADC4";
+       };
 
-                                       pinctrl_lsirq_default: lsirq_default {
-                                               function = "LSIRQ";
-                                               groups = "LSIRQ";
-                                       };
+       pinctrl_adc5_default: adc5_default {
+               function = "ADC5";
+               groups = "ADC5";
+       };
 
-                                       pinctrl_mac1link_default: mac1link_default {
-                                               function = "MAC1LINK";
-                                               groups = "MAC1LINK";
-                                       };
+       pinctrl_adc6_default: adc6_default {
+               function = "ADC6";
+               groups = "ADC6";
+       };
 
-                                       pinctrl_mac2link_default: mac2link_default {
-                                               function = "MAC2LINK";
-                                               groups = "MAC2LINK";
-                                       };
+       pinctrl_adc7_default: adc7_default {
+               function = "ADC7";
+               groups = "ADC7";
+       };
 
-                                       pinctrl_mdio1_default: mdio1_default {
-                                               function = "MDIO1";
-                                               groups = "MDIO1";
-                                       };
+       pinctrl_adc8_default: adc8_default {
+               function = "ADC8";
+               groups = "ADC8";
+       };
 
-                                       pinctrl_mdio2_default: mdio2_default {
-                                               function = "MDIO2";
-                                               groups = "MDIO2";
-                                       };
+       pinctrl_adc9_default: adc9_default {
+               function = "ADC9";
+               groups = "ADC9";
+       };
 
-                                       pinctrl_ncts1_default: ncts1_default {
-                                               function = "NCTS1";
-                                               groups = "NCTS1";
-                                       };
+       pinctrl_bmcint_default: bmcint_default {
+               function = "BMCINT";
+               groups = "BMCINT";
+       };
 
-                                       pinctrl_ncts2_default: ncts2_default {
-                                               function = "NCTS2";
-                                               groups = "NCTS2";
-                                       };
+       pinctrl_ddcclk_default: ddcclk_default {
+               function = "DDCCLK";
+               groups = "DDCCLK";
+       };
 
-                                       pinctrl_ncts3_default: ncts3_default {
-                                               function = "NCTS3";
-                                               groups = "NCTS3";
-                                       };
+       pinctrl_ddcdat_default: ddcdat_default {
+               function = "DDCDAT";
+               groups = "DDCDAT";
+       };
 
-                                       pinctrl_ncts4_default: ncts4_default {
-                                               function = "NCTS4";
-                                               groups = "NCTS4";
-                                       };
+       pinctrl_espi_default: espi_default {
+               function = "ESPI";
+               groups = "ESPI";
+       };
 
-                                       pinctrl_ndcd1_default: ndcd1_default {
-                                               function = "NDCD1";
-                                               groups = "NDCD1";
-                                       };
+       pinctrl_fwspics1_default: fwspics1_default {
+               function = "FWSPICS1";
+               groups = "FWSPICS1";
+       };
 
-                                       pinctrl_ndcd2_default: ndcd2_default {
-                                               function = "NDCD2";
-                                               groups = "NDCD2";
-                                       };
+       pinctrl_fwspics2_default: fwspics2_default {
+               function = "FWSPICS2";
+               groups = "FWSPICS2";
+       };
 
-                                       pinctrl_ndcd3_default: ndcd3_default {
-                                               function = "NDCD3";
-                                               groups = "NDCD3";
-                                       };
+       pinctrl_gpid0_default: gpid0_default {
+               function = "GPID0";
+               groups = "GPID0";
+       };
 
-                                       pinctrl_ndcd4_default: ndcd4_default {
-                                               function = "NDCD4";
-                                               groups = "NDCD4";
-                                       };
+       pinctrl_gpid2_default: gpid2_default {
+               function = "GPID2";
+               groups = "GPID2";
+       };
 
-                                       pinctrl_ndsr1_default: ndsr1_default {
-                                               function = "NDSR1";
-                                               groups = "NDSR1";
-                                       };
+       pinctrl_gpid4_default: gpid4_default {
+               function = "GPID4";
+               groups = "GPID4";
+       };
 
-                                       pinctrl_ndsr2_default: ndsr2_default {
-                                               function = "NDSR2";
-                                               groups = "NDSR2";
-                                       };
+       pinctrl_gpid6_default: gpid6_default {
+               function = "GPID6";
+               groups = "GPID6";
+       };
 
-                                       pinctrl_ndsr3_default: ndsr3_default {
-                                               function = "NDSR3";
-                                               groups = "NDSR3";
-                                       };
+       pinctrl_gpie0_default: gpie0_default {
+               function = "GPIE0";
+               groups = "GPIE0";
+       };
 
-                                       pinctrl_ndsr4_default: ndsr4_default {
-                                               function = "NDSR4";
-                                               groups = "NDSR4";
-                                       };
+       pinctrl_gpie2_default: gpie2_default {
+               function = "GPIE2";
+               groups = "GPIE2";
+       };
 
-                                       pinctrl_ndtr1_default: ndtr1_default {
-                                               function = "NDTR1";
-                                               groups = "NDTR1";
-                                       };
+       pinctrl_gpie4_default: gpie4_default {
+               function = "GPIE4";
+               groups = "GPIE4";
+       };
 
-                                       pinctrl_ndtr2_default: ndtr2_default {
-                                               function = "NDTR2";
-                                               groups = "NDTR2";
-                                       };
+       pinctrl_gpie6_default: gpie6_default {
+               function = "GPIE6";
+               groups = "GPIE6";
+       };
 
-                                       pinctrl_ndtr3_default: ndtr3_default {
-                                               function = "NDTR3";
-                                               groups = "NDTR3";
-                                       };
+       pinctrl_i2c10_default: i2c10_default {
+               function = "I2C10";
+               groups = "I2C10";
+       };
 
-                                       pinctrl_ndtr4_default: ndtr4_default {
-                                               function = "NDTR4";
-                                               groups = "NDTR4";
-                                       };
+       pinctrl_i2c11_default: i2c11_default {
+               function = "I2C11";
+               groups = "I2C11";
+       };
 
-                                       pinctrl_nri1_default: nri1_default {
-                                               function = "NRI1";
-                                               groups = "NRI1";
-                                       };
+       pinctrl_i2c12_default: i2c12_default {
+               function = "I2C12";
+               groups = "I2C12";
+       };
 
-                                       pinctrl_nri2_default: nri2_default {
-                                               function = "NRI2";
-                                               groups = "NRI2";
-                                       };
+       pinctrl_i2c13_default: i2c13_default {
+               function = "I2C13";
+               groups = "I2C13";
+       };
 
-                                       pinctrl_nri3_default: nri3_default {
-                                               function = "NRI3";
-                                               groups = "NRI3";
-                                       };
+       pinctrl_i2c14_default: i2c14_default {
+               function = "I2C14";
+               groups = "I2C14";
+       };
 
-                                       pinctrl_nri4_default: nri4_default {
-                                               function = "NRI4";
-                                               groups = "NRI4";
-                                       };
+       pinctrl_i2c3_default: i2c3_default {
+               function = "I2C3";
+               groups = "I2C3";
+       };
 
-                                       pinctrl_nrts1_default: nrts1_default {
-                                               function = "NRTS1";
-                                               groups = "NRTS1";
-                                       };
+       pinctrl_i2c4_default: i2c4_default {
+               function = "I2C4";
+               groups = "I2C4";
+       };
 
-                                       pinctrl_nrts2_default: nrts2_default {
-                                               function = "NRTS2";
-                                               groups = "NRTS2";
-                                       };
+       pinctrl_i2c5_default: i2c5_default {
+               function = "I2C5";
+               groups = "I2C5";
+       };
 
-                                       pinctrl_nrts3_default: nrts3_default {
-                                               function = "NRTS3";
-                                               groups = "NRTS3";
-                                       };
+       pinctrl_i2c6_default: i2c6_default {
+               function = "I2C6";
+               groups = "I2C6";
+       };
 
-                                       pinctrl_nrts4_default: nrts4_default {
-                                               function = "NRTS4";
-                                               groups = "NRTS4";
-                                       };
+       pinctrl_i2c7_default: i2c7_default {
+               function = "I2C7";
+               groups = "I2C7";
+       };
 
-                                       pinctrl_oscclk_default: oscclk_default {
-                                               function = "OSCCLK";
-                                               groups = "OSCCLK";
-                                       };
+       pinctrl_i2c8_default: i2c8_default {
+               function = "I2C8";
+               groups = "I2C8";
+       };
 
-                                       pinctrl_pewake_default: pewake_default {
-                                               function = "PEWAKE";
-                                               groups = "PEWAKE";
-                                       };
+       pinctrl_i2c9_default: i2c9_default {
+               function = "I2C9";
+               groups = "I2C9";
+       };
 
-                                       pinctrl_pnor_default: pnor_default {
-                                               function = "PNOR";
-                                               groups = "PNOR";
-                                       };
+       pinctrl_lad0_default: lad0_default {
+               function = "LAD0";
+               groups = "LAD0";
+       };
 
-                                       pinctrl_pwm0_default: pwm0_default {
-                                               function = "PWM0";
-                                               groups = "PWM0";
-                                       };
+       pinctrl_lad1_default: lad1_default {
+               function = "LAD1";
+               groups = "LAD1";
+       };
 
-                                       pinctrl_pwm1_default: pwm1_default {
-                                               function = "PWM1";
-                                               groups = "PWM1";
-                                       };
+       pinctrl_lad2_default: lad2_default {
+               function = "LAD2";
+               groups = "LAD2";
+       };
 
-                                       pinctrl_pwm2_default: pwm2_default {
-                                               function = "PWM2";
-                                               groups = "PWM2";
-                                       };
+       pinctrl_lad3_default: lad3_default {
+               function = "LAD3";
+               groups = "LAD3";
+       };
 
-                                       pinctrl_pwm3_default: pwm3_default {
-                                               function = "PWM3";
-                                               groups = "PWM3";
-                                       };
+       pinctrl_lclk_default: lclk_default {
+               function = "LCLK";
+               groups = "LCLK";
+       };
 
-                                       pinctrl_pwm4_default: pwm4_default {
-                                               function = "PWM4";
-                                               groups = "PWM4";
-                                       };
+       pinctrl_lframe_default: lframe_default {
+               function = "LFRAME";
+               groups = "LFRAME";
+       };
 
-                                       pinctrl_pwm5_default: pwm5_default {
-                                               function = "PWM5";
-                                               groups = "PWM5";
-                                       };
+       pinctrl_lpchc_default: lpchc_default {
+               function = "LPCHC";
+               groups = "LPCHC";
+       };
 
-                                       pinctrl_pwm6_default: pwm6_default {
-                                               function = "PWM6";
-                                               groups = "PWM6";
-                                       };
+       pinctrl_lpcpd_default: lpcpd_default {
+               function = "LPCPD";
+               groups = "LPCPD";
+       };
 
-                                       pinctrl_pwm7_default: pwm7_default {
-                                               function = "PWM7";
-                                               groups = "PWM7";
-                                       };
+       pinctrl_lpcplus_default: lpcplus_default {
+               function = "LPCPLUS";
+               groups = "LPCPLUS";
+       };
 
-                                       pinctrl_rgmii1_default: rgmii1_default {
-                                               function = "RGMII1";
-                                               groups = "RGMII1";
-                                       };
+       pinctrl_lpcpme_default: lpcpme_default {
+               function = "LPCPME";
+               groups = "LPCPME";
+       };
 
-                                       pinctrl_rgmii2_default: rgmii2_default {
-                                               function = "RGMII2";
-                                               groups = "RGMII2";
-                                       };
+       pinctrl_lpcrst_default: lpcrst_default {
+               function = "LPCRST";
+               groups = "LPCRST";
+       };
 
-                                       pinctrl_rmii1_default: rmii1_default {
-                                               function = "RMII1";
-                                               groups = "RMII1";
-                                       };
+       pinctrl_lpcsmi_default: lpcsmi_default {
+               function = "LPCSMI";
+               groups = "LPCSMI";
+       };
 
-                                       pinctrl_rmii2_default: rmii2_default {
-                                               function = "RMII2";
-                                               groups = "RMII2";
-                                       };
+       pinctrl_lsirq_default: lsirq_default {
+               function = "LSIRQ";
+               groups = "LSIRQ";
+       };
 
-                                       pinctrl_rxd1_default: rxd1_default {
-                                               function = "RXD1";
-                                               groups = "RXD1";
-                                       };
+       pinctrl_mac1link_default: mac1link_default {
+               function = "MAC1LINK";
+               groups = "MAC1LINK";
+       };
 
-                                       pinctrl_rxd2_default: rxd2_default {
-                                               function = "RXD2";
-                                               groups = "RXD2";
-                                       };
+       pinctrl_mac2link_default: mac2link_default {
+               function = "MAC2LINK";
+               groups = "MAC2LINK";
+       };
 
-                                       pinctrl_rxd3_default: rxd3_default {
-                                               function = "RXD3";
-                                               groups = "RXD3";
-                                       };
+       pinctrl_mdio1_default: mdio1_default {
+               function = "MDIO1";
+               groups = "MDIO1";
+       };
 
-                                       pinctrl_rxd4_default: rxd4_default {
-                                               function = "RXD4";
-                                               groups = "RXD4";
-                                       };
+       pinctrl_mdio2_default: mdio2_default {
+               function = "MDIO2";
+               groups = "MDIO2";
+       };
 
-                                       pinctrl_salt1_default: salt1_default {
-                                               function = "SALT1";
-                                               groups = "SALT1";
-                                       };
+       pinctrl_ncts1_default: ncts1_default {
+               function = "NCTS1";
+               groups = "NCTS1";
+       };
 
-                                       pinctrl_salt10_default: salt10_default {
-                                               function = "SALT10";
-                                               groups = "SALT10";
-                                       };
+       pinctrl_ncts2_default: ncts2_default {
+               function = "NCTS2";
+               groups = "NCTS2";
+       };
 
-                                       pinctrl_salt11_default: salt11_default {
-                                               function = "SALT11";
-                                               groups = "SALT11";
-                                       };
+       pinctrl_ncts3_default: ncts3_default {
+               function = "NCTS3";
+               groups = "NCTS3";
+       };
 
-                                       pinctrl_salt12_default: salt12_default {
-                                               function = "SALT12";
-                                               groups = "SALT12";
-                                       };
+       pinctrl_ncts4_default: ncts4_default {
+               function = "NCTS4";
+               groups = "NCTS4";
+       };
 
-                                       pinctrl_salt13_default: salt13_default {
-                                               function = "SALT13";
-                                               groups = "SALT13";
-                                       };
+       pinctrl_ndcd1_default: ndcd1_default {
+               function = "NDCD1";
+               groups = "NDCD1";
+       };
 
-                                       pinctrl_salt14_default: salt14_default {
-                                               function = "SALT14";
-                                               groups = "SALT14";
-                                       };
+       pinctrl_ndcd2_default: ndcd2_default {
+               function = "NDCD2";
+               groups = "NDCD2";
+       };
 
-                                       pinctrl_salt2_default: salt2_default {
-                                               function = "SALT2";
-                                               groups = "SALT2";
-                                       };
+       pinctrl_ndcd3_default: ndcd3_default {
+               function = "NDCD3";
+               groups = "NDCD3";
+       };
 
-                                       pinctrl_salt3_default: salt3_default {
-                                               function = "SALT3";
-                                               groups = "SALT3";
-                                       };
+       pinctrl_ndcd4_default: ndcd4_default {
+               function = "NDCD4";
+               groups = "NDCD4";
+       };
 
-                                       pinctrl_salt4_default: salt4_default {
-                                               function = "SALT4";
-                                               groups = "SALT4";
-                                       };
+       pinctrl_ndsr1_default: ndsr1_default {
+               function = "NDSR1";
+               groups = "NDSR1";
+       };
 
-                                       pinctrl_salt5_default: salt5_default {
-                                               function = "SALT5";
-                                               groups = "SALT5";
-                                       };
+       pinctrl_ndsr2_default: ndsr2_default {
+               function = "NDSR2";
+               groups = "NDSR2";
+       };
 
-                                       pinctrl_salt6_default: salt6_default {
-                                               function = "SALT6";
-                                               groups = "SALT6";
-                                       };
+       pinctrl_ndsr3_default: ndsr3_default {
+               function = "NDSR3";
+               groups = "NDSR3";
+       };
 
-                                       pinctrl_salt7_default: salt7_default {
-                                               function = "SALT7";
-                                               groups = "SALT7";
-                                       };
+       pinctrl_ndsr4_default: ndsr4_default {
+               function = "NDSR4";
+               groups = "NDSR4";
+       };
 
-                                       pinctrl_salt8_default: salt8_default {
-                                               function = "SALT8";
-                                               groups = "SALT8";
-                                       };
+       pinctrl_ndtr1_default: ndtr1_default {
+               function = "NDTR1";
+               groups = "NDTR1";
+       };
 
-                                       pinctrl_salt9_default: salt9_default {
-                                               function = "SALT9";
-                                               groups = "SALT9";
-                                       };
+       pinctrl_ndtr2_default: ndtr2_default {
+               function = "NDTR2";
+               groups = "NDTR2";
+       };
 
-                                       pinctrl_scl1_default: scl1_default {
-                                               function = "SCL1";
-                                               groups = "SCL1";
-                                       };
+       pinctrl_ndtr3_default: ndtr3_default {
+               function = "NDTR3";
+               groups = "NDTR3";
+       };
 
-                                       pinctrl_scl2_default: scl2_default {
-                                               function = "SCL2";
-                                               groups = "SCL2";
-                                       };
+       pinctrl_ndtr4_default: ndtr4_default {
+               function = "NDTR4";
+               groups = "NDTR4";
+       };
 
-                                       pinctrl_sd1_default: sd1_default {
-                                               function = "SD1";
-                                               groups = "SD1";
-                                       };
+       pinctrl_nri1_default: nri1_default {
+               function = "NRI1";
+               groups = "NRI1";
+       };
 
-                                       pinctrl_sd2_default: sd2_default {
-                                               function = "SD2";
-                                               groups = "SD2";
-                                       };
+       pinctrl_nri2_default: nri2_default {
+               function = "NRI2";
+               groups = "NRI2";
+       };
 
-                                       pinctrl_sda1_default: sda1_default {
-                                               function = "SDA1";
-                                               groups = "SDA1";
-                                       };
+       pinctrl_nri3_default: nri3_default {
+               function = "NRI3";
+               groups = "NRI3";
+       };
 
-                                       pinctrl_sda2_default: sda2_default {
-                                               function = "SDA2";
-                                               groups = "SDA2";
-                                       };
+       pinctrl_nri4_default: nri4_default {
+               function = "NRI4";
+               groups = "NRI4";
+       };
 
-                                       pinctrl_sgps1_default: sgps1_default {
-                                               function = "SGPS1";
-                                               groups = "SGPS1";
-                                       };
+       pinctrl_nrts1_default: nrts1_default {
+               function = "NRTS1";
+               groups = "NRTS1";
+       };
 
-                                       pinctrl_sgps2_default: sgps2_default {
-                                               function = "SGPS2";
-                                               groups = "SGPS2";
-                                       };
+       pinctrl_nrts2_default: nrts2_default {
+               function = "NRTS2";
+               groups = "NRTS2";
+       };
 
-                                       pinctrl_sioonctrl_default: sioonctrl_default {
-                                               function = "SIOONCTRL";
-                                               groups = "SIOONCTRL";
-                                       };
+       pinctrl_nrts3_default: nrts3_default {
+               function = "NRTS3";
+               groups = "NRTS3";
+       };
 
-                                       pinctrl_siopbi_default: siopbi_default {
-                                               function = "SIOPBI";
-                                               groups = "SIOPBI";
-                                       };
+       pinctrl_nrts4_default: nrts4_default {
+               function = "NRTS4";
+               groups = "NRTS4";
+       };
 
-                                       pinctrl_siopbo_default: siopbo_default {
-                                               function = "SIOPBO";
-                                               groups = "SIOPBO";
-                                       };
+       pinctrl_oscclk_default: oscclk_default {
+               function = "OSCCLK";
+               groups = "OSCCLK";
+       };
 
-                                       pinctrl_siopwreq_default: siopwreq_default {
-                                               function = "SIOPWREQ";
-                                               groups = "SIOPWREQ";
-                                       };
+       pinctrl_pewake_default: pewake_default {
+               function = "PEWAKE";
+               groups = "PEWAKE";
+       };
 
-                                       pinctrl_siopwrgd_default: siopwrgd_default {
-                                               function = "SIOPWRGD";
-                                               groups = "SIOPWRGD";
-                                       };
+       pinctrl_pnor_default: pnor_default {
+               function = "PNOR";
+               groups = "PNOR";
+       };
 
-                                       pinctrl_sios3_default: sios3_default {
-                                               function = "SIOS3";
-                                               groups = "SIOS3";
-                                       };
+       pinctrl_pwm0_default: pwm0_default {
+               function = "PWM0";
+               groups = "PWM0";
+       };
 
-                                       pinctrl_sios5_default: sios5_default {
-                                               function = "SIOS5";
-                                               groups = "SIOS5";
-                                       };
+       pinctrl_pwm1_default: pwm1_default {
+               function = "PWM1";
+               groups = "PWM1";
+       };
 
-                                       pinctrl_siosci_default: siosci_default {
-                                               function = "SIOSCI";
-                                               groups = "SIOSCI";
-                                       };
+       pinctrl_pwm2_default: pwm2_default {
+               function = "PWM2";
+               groups = "PWM2";
+       };
 
-                                       pinctrl_spi1_default: spi1_default {
-                                               function = "SPI1";
-                                               groups = "SPI1";
-                                       };
+       pinctrl_pwm3_default: pwm3_default {
+               function = "PWM3";
+               groups = "PWM3";
+       };
 
-                                       pinctrl_spi1cs1_default: spi1cs1_default {
-                                               function = "SPI1CS1";
-                                               groups = "SPI1CS1";
-                                       };
+       pinctrl_pwm4_default: pwm4_default {
+               function = "PWM4";
+               groups = "PWM4";
+       };
 
-                                       pinctrl_spi1debug_default: spi1debug_default {
-                                               function = "SPI1DEBUG";
-                                               groups = "SPI1DEBUG";
-                                       };
+       pinctrl_pwm5_default: pwm5_default {
+               function = "PWM5";
+               groups = "PWM5";
+       };
 
-                                       pinctrl_spi1passthru_default: spi1passthru_default {
-                                               function = "SPI1PASSTHRU";
-                                               groups = "SPI1PASSTHRU";
-                                       };
+       pinctrl_pwm6_default: pwm6_default {
+               function = "PWM6";
+               groups = "PWM6";
+       };
 
-                                       pinctrl_spi2ck_default: spi2ck_default {
-                                               function = "SPI2CK";
-                                               groups = "SPI2CK";
-                                       };
+       pinctrl_pwm7_default: pwm7_default {
+               function = "PWM7";
+               groups = "PWM7";
+       };
 
-                                       pinctrl_spi2cs0_default: spi2cs0_default {
-                                               function = "SPI2CS0";
-                                               groups = "SPI2CS0";
-                                       };
+       pinctrl_rgmii1_default: rgmii1_default {
+               function = "RGMII1";
+               groups = "RGMII1";
+       };
 
-                                       pinctrl_spi2cs1_default: spi2cs1_default {
-                                               function = "SPI2CS1";
-                                               groups = "SPI2CS1";
-                                       };
+       pinctrl_rgmii2_default: rgmii2_default {
+               function = "RGMII2";
+               groups = "RGMII2";
+       };
 
-                                       pinctrl_spi2miso_default: spi2miso_default {
-                                               function = "SPI2MISO";
-                                               groups = "SPI2MISO";
-                                       };
+       pinctrl_rmii1_default: rmii1_default {
+               function = "RMII1";
+               groups = "RMII1";
+       };
 
-                                       pinctrl_spi2mosi_default: spi2mosi_default {
-                                               function = "SPI2MOSI";
-                                               groups = "SPI2MOSI";
-                                       };
+       pinctrl_rmii2_default: rmii2_default {
+               function = "RMII2";
+               groups = "RMII2";
+       };
 
-                                       pinctrl_timer3_default: timer3_default {
-                                               function = "TIMER3";
-                                               groups = "TIMER3";
-                                       };
+       pinctrl_rxd1_default: rxd1_default {
+               function = "RXD1";
+               groups = "RXD1";
+       };
 
-                                       pinctrl_timer4_default: timer4_default {
-                                               function = "TIMER4";
-                                               groups = "TIMER4";
-                                       };
+       pinctrl_rxd2_default: rxd2_default {
+               function = "RXD2";
+               groups = "RXD2";
+       };
 
-                                       pinctrl_timer5_default: timer5_default {
-                                               function = "TIMER5";
-                                               groups = "TIMER5";
-                                       };
+       pinctrl_rxd3_default: rxd3_default {
+               function = "RXD3";
+               groups = "RXD3";
+       };
 
-                                       pinctrl_timer6_default: timer6_default {
-                                               function = "TIMER6";
-                                               groups = "TIMER6";
-                                       };
+       pinctrl_rxd4_default: rxd4_default {
+               function = "RXD4";
+               groups = "RXD4";
+       };
 
-                                       pinctrl_timer7_default: timer7_default {
-                                               function = "TIMER7";
-                                               groups = "TIMER7";
-                                       };
+       pinctrl_salt1_default: salt1_default {
+               function = "SALT1";
+               groups = "SALT1";
+       };
 
-                                       pinctrl_timer8_default: timer8_default {
-                                               function = "TIMER8";
-                                               groups = "TIMER8";
-                                       };
+       pinctrl_salt10_default: salt10_default {
+               function = "SALT10";
+               groups = "SALT10";
+       };
 
-                                       pinctrl_txd1_default: txd1_default {
-                                               function = "TXD1";
-                                               groups = "TXD1";
-                                       };
+       pinctrl_salt11_default: salt11_default {
+               function = "SALT11";
+               groups = "SALT11";
+       };
 
-                                       pinctrl_txd2_default: txd2_default {
-                                               function = "TXD2";
-                                               groups = "TXD2";
-                                       };
+       pinctrl_salt12_default: salt12_default {
+               function = "SALT12";
+               groups = "SALT12";
+       };
 
-                                       pinctrl_txd3_default: txd3_default {
-                                               function = "TXD3";
-                                               groups = "TXD3";
-                                       };
+       pinctrl_salt13_default: salt13_default {
+               function = "SALT13";
+               groups = "SALT13";
+       };
 
-                                       pinctrl_txd4_default: txd4_default {
-                                               function = "TXD4";
-                                               groups = "TXD4";
-                                       };
+       pinctrl_salt14_default: salt14_default {
+               function = "SALT14";
+               groups = "SALT14";
+       };
 
-                                       pinctrl_uart6_default: uart6_default {
-                                               function = "UART6";
-                                               groups = "UART6";
-                                       };
+       pinctrl_salt2_default: salt2_default {
+               function = "SALT2";
+               groups = "SALT2";
+       };
 
-                                       pinctrl_usbcki_default: usbcki_default {
-                                               function = "USBCKI";
-                                               groups = "USBCKI";
-                                       };
+       pinctrl_salt3_default: salt3_default {
+               function = "SALT3";
+               groups = "SALT3";
+       };
 
-                                       pinctrl_vgabiosrom_default: vgabiosrom_default {
-                                               function = "VGABIOSROM";
-                                               groups = "VGABIOSROM";
-                                       };
+       pinctrl_salt4_default: salt4_default {
+               function = "SALT4";
+               groups = "SALT4";
+       };
 
-                                       pinctrl_vgahs_default: vgahs_default {
-                                               function = "VGAHS";
-                                               groups = "VGAHS";
-                                       };
+       pinctrl_salt5_default: salt5_default {
+               function = "SALT5";
+               groups = "SALT5";
+       };
 
-                                       pinctrl_vgavs_default: vgavs_default {
-                                               function = "VGAVS";
-                                               groups = "VGAVS";
-                                       };
+       pinctrl_salt6_default: salt6_default {
+               function = "SALT6";
+               groups = "SALT6";
+       };
 
-                                       pinctrl_vpi24_default: vpi24_default {
-                                               function = "VPI24";
-                                               groups = "VPI24";
-                                       };
+       pinctrl_salt7_default: salt7_default {
+               function = "SALT7";
+               groups = "SALT7";
+       };
 
-                                       pinctrl_vpo_default: vpo_default {
-                                               function = "VPO";
-                                               groups = "VPO";
-                                       };
+       pinctrl_salt8_default: salt8_default {
+               function = "SALT8";
+               groups = "SALT8";
+       };
 
-                                       pinctrl_wdtrst1_default: wdtrst1_default {
-                                               function = "WDTRST1";
-                                               groups = "WDTRST1";
-                                       };
+       pinctrl_salt9_default: salt9_default {
+               function = "SALT9";
+               groups = "SALT9";
+       };
 
-                                       pinctrl_wdtrst2_default: wdtrst2_default {
-                                               function = "WDTRST2";
-                                               groups = "WDTRST2";
-                                       };
+       pinctrl_scl1_default: scl1_default {
+               function = "SCL1";
+               groups = "SCL1";
+       };
 
-                               };
-                       };
+       pinctrl_scl2_default: scl2_default {
+               function = "SCL2";
+               groups = "SCL2";
+       };
 
-                       clk_hpll: clk_hpll@1e6e2024 {
-                               #clock-cells = <0>;
-                               compatible = "aspeed,g5-hpll-clock";
-                               reg = <0x1e6e2024 0x4>;
-                               clocks = <&clk_clkin>;
-                       };
+       pinctrl_sd1_default: sd1_default {
+               function = "SD1";
+               groups = "SD1";
+       };
 
-                       clk_ahb: clk_ahb@1e6e2070 {
-                               #clock-cells = <0>;
-                               compatible = "aspeed,g5-ahb-clock";
-                               reg = <0x1e6e2070 0x4>;
-                               clocks = <&clk_hpll>;
-                       };
+       pinctrl_sd2_default: sd2_default {
+               function = "SD2";
+               groups = "SD2";
+       };
 
-                       clk_apb: clk_apb@1e6e2008 {
-                               #clock-cells = <0>;
-                               compatible = "aspeed,g5-apb-clock";
-                               reg = <0x1e6e2008 0x4>;
-                               clocks = <&clk_hpll>;
-                       };
+       pinctrl_sda1_default: sda1_default {
+               function = "SDA1";
+               groups = "SDA1";
+       };
 
-                       clk_uart: clk_uart@1e6e2008 {
-                               #clock-cells = <0>;
-                               compatible = "aspeed,uart-clock";
-                               reg = <0x1e6e202c 0x4>;
-                       };
+       pinctrl_sda2_default: sda2_default {
+               function = "SDA2";
+               groups = "SDA2";
+       };
 
-                       gfx: display@1e6e6000 {
-                               compatible = "aspeed,ast2500-gfx", "syscon";
-                               reg = <0x1e6e6000 0x1000>;
-                               reg-io-width = <4>;
-                       };
+       pinctrl_sgps1_default: sgps1_default {
+               function = "SGPS1";
+               groups = "SGPS1";
+       };
 
-                       sram@1e720000 {
-                               compatible = "mmio-sram";
-                               reg = <0x1e720000 0x9000>;      // 36K
-                       };
+       pinctrl_sgps2_default: sgps2_default {
+               function = "SGPS2";
+               groups = "SGPS2";
+       };
 
-                       gpio: gpio@1e780000 {
-                               #gpio-cells = <2>;
-                               gpio-controller;
-                               compatible = "aspeed,ast2500-gpio";
-                               reg = <0x1e780000 0x1000>;
-                               interrupts = <20>;
-                               gpio-ranges = <&pinctrl 0 0 220>;
-                               interrupt-controller;
-                       };
+       pinctrl_sioonctrl_default: sioonctrl_default {
+               function = "SIOONCTRL";
+               groups = "SIOONCTRL";
+       };
 
-                       timer: timer@1e782000 {
-                               compatible = "aspeed,ast2400-timer";
-                               reg = <0x1e782000 0x90>;
-                               // The moxart_timer driver registers only one
-                               // interrupt and assumes it's for timer 1
-                               //interrupts = <16 17 18 35 36 37 38 39>;
-                               interrupts = <16>;
-                               clocks = <&clk_apb>;
-                       };
+       pinctrl_siopbi_default: siopbi_default {
+               function = "SIOPBI";
+               groups = "SIOPBI";
+       };
 
+       pinctrl_siopbo_default: siopbo_default {
+               function = "SIOPBO";
+               groups = "SIOPBO";
+       };
 
-                       wdt1: wdt@1e785000 {
-                               compatible = "aspeed,wdt";
-                               reg = <0x1e785000 0x1c>;
-                               interrupts = <27>;
-                       };
+       pinctrl_siopwreq_default: siopwreq_default {
+               function = "SIOPWREQ";
+               groups = "SIOPWREQ";
+       };
 
-                       wdt2: wdt@1e785020 {
-                               compatible = "aspeed,wdt";
-                               reg = <0x1e785020 0x1c>;
-                               interrupts = <27>;
-                               status = "disabled";
-                       };
+       pinctrl_siopwrgd_default: siopwrgd_default {
+               function = "SIOPWRGD";
+               groups = "SIOPWRGD";
+       };
 
-                       wdt3: wdt@1e785040 {
-                               compatible = "aspeed,wdt";
-                               reg = <0x1e785074 0x1c>;
-                               status = "disabled";
-                       };
+       pinctrl_sios3_default: sios3_default {
+               function = "SIOS3";
+               groups = "SIOS3";
+       };
 
-                       uart1: serial@1e783000 {
-                               compatible = "ns16550a";
-                               reg = <0x1e783000 0x1000>;
-                               reg-shift = <2>;
-                               interrupts = <9>;
-                               clocks = <&clk_uart>;
-                               no-loopback-test;
-                               status = "disabled";
-                       };
+       pinctrl_sios5_default: sios5_default {
+               function = "SIOS5";
+               groups = "SIOS5";
+       };
 
-                       lpc: lpc@1e789000 {
-                               compatible = "aspeed,ast2500-lpc", "simple-mfd";
-                               reg = <0x1e789000 0x1000>;
+       pinctrl_siosci_default: siosci_default {
+               function = "SIOSCI";
+               groups = "SIOSCI";
+       };
 
-                               #address-cells = <1>;
-                               #size-cells = <1>;
-                               ranges = <0 0x1e789000 0x1000>;
+       pinctrl_spi1_default: spi1_default {
+               function = "SPI1";
+               groups = "SPI1";
+       };
 
-                               lpc_bmc: lpc-bmc@0 {
-                                       compatible = "aspeed,ast2500-lpc-bmc";
-                                       reg = <0x0 0x80>;
-                               };
+       pinctrl_spi1cs1_default: spi1cs1_default {
+               function = "SPI1CS1";
+               groups = "SPI1CS1";
+       };
 
-                               lpc_host: lpc-host@80 {
-                                       compatible = "aspeed,ast2500-lpc-host", "simple-mfd", "syscon";
-                                       reg = <0x80 0x1e0>;
+       pinctrl_spi1debug_default: spi1debug_default {
+               function = "SPI1DEBUG";
+               groups = "SPI1DEBUG";
+       };
 
-                                       #address-cells = <1>;
-                                       #size-cells = <1>;
-                                       ranges = <0 0x80 0x1e0>;
+       pinctrl_spi1passthru_default: spi1passthru_default {
+               function = "SPI1PASSTHRU";
+               groups = "SPI1PASSTHRU";
+       };
 
-                                       reg-io-width = <4>;
+       pinctrl_spi2ck_default: spi2ck_default {
+               function = "SPI2CK";
+               groups = "SPI2CK";
+       };
 
-                                       lhc: lhc@20 {
-                                               compatible = "aspeed,ast2500-lhc";
-                                               reg = <0x20 0x24 0x48 0x8>;
-                                       };
-                               };
-                       };
+       pinctrl_spi2cs0_default: spi2cs0_default {
+               function = "SPI2CS0";
+               groups = "SPI2CS0";
+       };
 
-                       uart2: serial@1e78d000 {
-                               compatible = "ns16550a";
-                               reg = <0x1e78d000 0x1000>;
-                               reg-shift = <2>;
-                               interrupts = <32>;
-                               clocks = <&clk_uart>;
-                               no-loopback-test;
-                               status = "disabled";
-                       };
+       pinctrl_spi2cs1_default: spi2cs1_default {
+               function = "SPI2CS1";
+               groups = "SPI2CS1";
+       };
 
-                       uart3: serial@1e78e000 {
-                               compatible = "ns16550a";
-                               reg = <0x1e78e000 0x1000>;
-                               reg-shift = <2>;
-                               interrupts = <33>;
-                               clocks = <&clk_uart>;
-                               no-loopback-test;
-                               status = "disabled";
-                       };
+       pinctrl_spi2miso_default: spi2miso_default {
+               function = "SPI2MISO";
+               groups = "SPI2MISO";
+       };
 
-                       uart4: serial@1e78f000 {
-                               compatible = "ns16550a";
-                               reg = <0x1e78f000 0x1000>;
-                               reg-shift = <2>;
-                               interrupts = <34>;
-                               clocks = <&clk_uart>;
-                               no-loopback-test;
-                               status = "disabled";
-                       };
+       pinctrl_spi2mosi_default: spi2mosi_default {
+               function = "SPI2MOSI";
+               groups = "SPI2MOSI";
+       };
 
-                       uart5: serial@1e784000 {
-                               compatible = "ns16550a";
-                               reg = <0x1e784000 0x1000>;
-                               reg-shift = <2>;
-                               interrupts = <10>;
-                               clocks = <&clk_uart>;
-                               current-speed = <38400>;
-                               no-loopback-test;
-                               status = "disabled";
-                       };
+       pinctrl_timer3_default: timer3_default {
+               function = "TIMER3";
+               groups = "TIMER3";
+       };
 
-                       uart6: serial@1e787000 {
-                               compatible = "ns16550a";
-                               reg = <0x1e787000 0x1000>;
-                               reg-shift = <2>;
-                               interrupts = <10>;
-                               clocks = <&clk_uart>;
-                               no-loopback-test;
-                               status = "disabled";
-                       };
-               };
+       pinctrl_timer4_default: timer4_default {
+               function = "TIMER4";
+               groups = "TIMER4";
+       };
+
+       pinctrl_timer5_default: timer5_default {
+               function = "TIMER5";
+               groups = "TIMER5";
+       };
+
+       pinctrl_timer6_default: timer6_default {
+               function = "TIMER6";
+               groups = "TIMER6";
+       };
+
+       pinctrl_timer7_default: timer7_default {
+               function = "TIMER7";
+               groups = "TIMER7";
+       };
+
+       pinctrl_timer8_default: timer8_default {
+               function = "TIMER8";
+               groups = "TIMER8";
+       };
+
+       pinctrl_txd1_default: txd1_default {
+               function = "TXD1";
+               groups = "TXD1";
+       };
+
+       pinctrl_txd2_default: txd2_default {
+               function = "TXD2";
+               groups = "TXD2";
+       };
+
+       pinctrl_txd3_default: txd3_default {
+               function = "TXD3";
+               groups = "TXD3";
+       };
+
+       pinctrl_txd4_default: txd4_default {
+               function = "TXD4";
+               groups = "TXD4";
+       };
+
+       pinctrl_uart6_default: uart6_default {
+               function = "UART6";
+               groups = "UART6";
+       };
+
+       pinctrl_usbcki_default: usbcki_default {
+               function = "USBCKI";
+               groups = "USBCKI";
+       };
+
+       pinctrl_usb2ah_default: usb2ah_default {
+               function = "USB2AH";
+               groups = "USB2AH";
+       };
+
+       pinctrl_usb11bhid_default: usb11bhid_default {
+               function = "USB11BHID";
+               groups = "USB11BHID";
+       };
+
+       pinctrl_usb2bh_default: usb2bh_default {
+               function = "USB2BH";
+               groups = "USB2BH";
+       };
+
+       pinctrl_vgabiosrom_default: vgabiosrom_default {
+               function = "VGABIOSROM";
+               groups = "VGABIOSROM";
+       };
+
+       pinctrl_vgahs_default: vgahs_default {
+               function = "VGAHS";
+               groups = "VGAHS";
+       };
+
+       pinctrl_vgavs_default: vgavs_default {
+               function = "VGAVS";
+               groups = "VGAVS";
+       };
+
+       pinctrl_vpi24_default: vpi24_default {
+               function = "VPI24";
+               groups = "VPI24";
+       };
+
+       pinctrl_vpo_default: vpo_default {
+               function = "VPO";
+               groups = "VPO";
+       };
+
+       pinctrl_wdtrst1_default: wdtrst1_default {
+               function = "WDTRST1";
+               groups = "WDTRST1";
+       };
+
+       pinctrl_wdtrst2_default: wdtrst2_default {
+               function = "WDTRST2";
+               groups = "WDTRST2";
        };
 };
index c14e1845a1d3bd7fe272c06bd7057c31bbaf8603..adab494cdfa4d0a7d19fc3db8095f09dcefb1019 100644 (file)
                stdout-path = &lpuart0;
        };
 
-       regulators {
-               compatible = "simple-bus";
-
-               reg_usdhc2_vmmc: usdhc2-vmmc {
-                       compatible = "regulator-fixed";
-                       regulator-name = "SD1_SPWR";
-                       regulator-min-microvolt = <3000000>;
-                       regulator-max-microvolt = <3000000>;
-                       gpio = <&gpio4 19 GPIO_ACTIVE_HIGH>;
-                       off-on-delay = <3480>;
-                       enable-active-high;
-               };
+       reg_usdhc2_vmmc: regulator-usdhc2-vmmc {
+               compatible = "regulator-fixed";
+               regulator-name = "SD1_SPWR";
+               regulator-min-microvolt = <3000000>;
+               regulator-max-microvolt = <3000000>;
+               gpio = <&gpio4 19 GPIO_ACTIVE_HIGH>;
+               off-on-delay = <3480>;
+               enable-active-high;
        };
 };
 
index f89e043f6ea8218687d32f4d9a08e586054b1efa..bba1048499ba3887e00896c3519f2c7aabca49c9 100644 (file)
 /* MDIO clock output frequency */
 #define EMAC_MDIO_CLOCK_FREQ           2500000 /* 2.5 MHz */
 
-/* MII Status Register */
-#define MII_STATUS_REG                 1
-#define MII_STATUS_LINK_MASK           0x4
-
-#define MDIO_CONTROL_IDLE              0x80000000
-#define MDIO_CONTROL_ENABLE            0x40000000
-#define MDIO_CONTROL_FAULT_ENABLE      0x40000
-#define MDIO_CONTROL_FAULT             0x80000
-#define MDIO_USERACCESS0_GO            0x80000000
-#define MDIO_USERACCESS0_WRITE_READ    0x0
-#define MDIO_USERACCESS0_WRITE_WRITE   0x40000000
-#define MDIO_USERACCESS0_ACK           0x20000000
-
 #define EMAC_MACCONTROL_MIIEN_ENABLE           0x20
 #define EMAC_MACCONTROL_FULLDUPLEX_ENABLE      0x1
 #define EMAC_MACCONTROL_GIGABIT_ENABLE         BIT(7)
@@ -242,18 +229,4 @@ struct mdio_regs {
        u32 userphysel1;
 };
 
-struct eth_priv_t {
-       char int_name[32];
-       int rx_flow;
-       int phy_addr;
-       int slave_port;
-       int sgmii_link_type;
-       phy_interface_t phy_if;
-       struct phy_device *phy_dev;
-};
-
-int keystone2_emac_initialize(struct eth_priv_t *eth_priv);
-void sgmii_serdes_setup_156p25mhz(void);
-void sgmii_serdes_shutdown(void);
-
 #endif  /* _KEYSTONE_NET_H_ */
index 595e3ca149bd39875b973b683fe75687a26bf14e..7115d7bad24f4939ffde1f49f5188095ce65eeb8 100644 (file)
@@ -12,7 +12,7 @@
 #include <net.h>
 #include <dp83848.h>
 #include <asm/arch/emac_defs.h>
-#include "../../../drivers/net/davinci_emac.h"
+#include "../../../drivers/net/ti/davinci_emac.h"
 
 #ifdef CONFIG_DRIVER_TI_EMAC
 
index 3d02274810748a973688eb31460663de6ac9b347..bfb7ff26894e3cb149766d141ee86e153e7eb966 100644 (file)
@@ -9,7 +9,7 @@
 #include <net.h>
 #include <miiphy.h>
 #include <asm/arch/emac_defs.h>
-#include "../../../drivers/net/davinci_emac.h"
+#include "../../../drivers/net/ti/davinci_emac.h"
 
 #ifdef CONFIG_DRIVER_TI_EMAC
 
index 899cff0169a955e9c878714931017137cb14b82c..85b0c2620c9ed9543ae53bb1304e844683652768 100644 (file)
@@ -19,7 +19,7 @@
 #include <net.h>
 #include <asm/arch/emac_defs.h>
 #include <asm/io.h>
-#include "../../../drivers/net/davinci_emac.h"
+#include "../../../drivers/net/ti/davinci_emac.h"
 
 int ksz8873_is_phy_connected(int phy_addr)
 {
index 170e4a57830243e0ff8b3578a0b14aaeb3c0efbb..b54f67dbfedbc57f030d355b05e2d1fdaecef1fa 100644 (file)
@@ -13,7 +13,7 @@
 #include <miiphy.h>
 #include <lxt971a.h>
 #include <asm/arch/emac_defs.h>
-#include "../../../drivers/net/davinci_emac.h"
+#include "../../../drivers/net/ti/davinci_emac.h"
 
 #ifdef CONFIG_DRIVER_TI_EMAC
 
index 72fe23a2b95962117f737dc27f3870083b201502..53d9e5f42bc1953fa476c2b79e24cf4cdf4716cb 100644 (file)
@@ -58,6 +58,21 @@ obj-$(CONFIG_CMD_HDMIDETECT) += cmd_hdmidet.o
 obj-$(CONFIG_CMD_DEKBLOB) += cmd_dek.o
 endif
 
+ifneq ($(CONFIG_BOARD_SIZE_LIMIT),)
+BOARD_SIZE_CHECK = \
+        @actual=`wc -c $@ | awk '{print $$1}'`; \
+        limit=`printf "%d" $(CONFIG_BOARD_SIZE_LIMIT)`; \
+        if test $$actual -gt $$limit; then \
+                echo "$@ exceeds file size limit:" >&2 ; \
+                echo "  limit:  $$limit bytes" >&2 ; \
+                echo "  actual: $$actual bytes" >&2 ; \
+                echo "  excess: $$((actual - limit)) bytes" >&2; \
+                exit 1; \
+        fi
+else
+BOARD_SIZE_CHECK =
+endif
+
 PLUGIN = board/$(BOARDDIR)/plugin
 
 ifeq ($(CONFIG_USE_IMXIMG_PLUGIN),y)
@@ -101,6 +116,7 @@ u-boot.imx: MKIMAGEOUTPUT = u-boot.imx.log
 
 u-boot.imx: u-boot.bin u-boot.cfgout $(PLUGIN).bin FORCE
        $(call if_changed,mkimage)
+       $(BOARD_SIZE_CHECK)
 
 ifeq ($(CONFIG_OF_SEPARATE),y)
 MKIMAGEFLAGS_u-boot-dtb.imx = -n $(filter-out $(PLUGIN).bin $< $(PHONY),$^) \
index 31c9a6e4e373bd636d8b00d0021f112155e0d46e..e80f1d484b0c2ea7f5700a0662a43ca80c808c5d 100644 (file)
@@ -660,6 +660,14 @@ void gpr_init(void)
 {
        struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
 
+       /*
+        * If this function is used in a common MX6 spl implementation
+        * we have to ensure that it is only called for suitable cpu types,
+        * otherwise it breaks hardware parts like enet1, can1, can2, etc.
+        */
+       if (!is_mx6dqp() && !is_mx6dq() && !is_mx6sdl())
+               return;
+
        /* enable AXI cache for VDOA/VPU/IPU */
        writel(0xF00000CF, &iomux->gpr[4]);
        if (is_mx6dqp()) {
index 68383d06a274d516f196c8faaba91b837242d3df..fa8c799a462e0c3f0c513bc5b7598973f8b5e6ab 100644 (file)
@@ -33,7 +33,9 @@ struct sdram_addr_dec {
 #define REG_CPUCS_WIN_WIN0_CS(x)       (((x) & 0x3) << 2)
 #define REG_CPUCS_WIN_SIZE(x)          (((x) & 0xff) << 24)
 
-#define SDRAM_SIZE_MAX                 0xc0000000
+#ifndef MVEBU_SDRAM_SIZE_MAX
+#define MVEBU_SDRAM_SIZE_MAX           0xc0000000
+#endif
 
 #define SCRUB_MAGIC            0xbeefdead
 
@@ -275,8 +277,8 @@ int dram_init(void)
                 * address space left for the internal registers etc.
                 */
                size += mvebu_sdram_bs(i);
-               if (size > SDRAM_SIZE_MAX)
-                       size = SDRAM_SIZE_MAX;
+               if (size > MVEBU_SDRAM_SIZE_MAX)
+                       size = MVEBU_SDRAM_SIZE_MAX;
        }
 
        for (; i < CONFIG_NR_DRAM_BANKS; i++) {
@@ -312,7 +314,7 @@ int dram_init_banksize(void)
 
                /* Clip the banksize to 1GiB if it exceeds the max size */
                size += gd->bd->bi_dram[i].size;
-               if (size > SDRAM_SIZE_MAX)
+               if (size > MVEBU_SDRAM_SIZE_MAX)
                        mvebu_sdram_bs_set(i, 0x40000000);
        }
 
index d1042100a82b87f8411bb7439c11ae758501c7a7..85d7dd1610a8ceabaf2239133ccc7f7a1c908903 100644 (file)
@@ -68,10 +68,12 @@ enum {
        MVEBU_SOC_UNKNOWN,
 };
 
+#define MVEBU_SDRAM_SIZE_MAX   0xc0000000
+
 /*
  * Default Device Address MAP BAR values
  */
-#define MBUS_PCI_MEM_BASE      0xE8000000
+#define MBUS_PCI_MEM_BASE      MVEBU_SDRAM_SIZE_MAX
 #define MBUS_PCI_MEM_SIZE      (128 << 20)
 #define MBUS_PCI_IO_BASE       0xF1100000
 #define MBUS_PCI_IO_SIZE       (64 << 10)
index e110737471bb391eb6255a4b2dd2768bd093c2fa..c9ebc9f40ed642be9d47e51944ff701bad04bf45 100644 (file)
@@ -6,6 +6,8 @@
 #include <common.h>
 #include <asm/io.h>
 
+/* R-Car Gen3 caches are enabled in memmap-gen3.c */
+#ifndef CONFIG_RCAR_GEN3
 #ifdef CONFIG_ARCH_CPU_INIT
 int arch_cpu_init(void)
 {
@@ -20,6 +22,7 @@ void enable_caches(void)
        dcache_enable();
 }
 #endif
+#endif
 
 #ifdef CONFIG_DISPLAY_CPUINFO
 static u32 __rmobile_get_cpu_type(void)
index 92c8f2e80db762ddc78f3702b9e85badf3201f74..7e29ccc351b7cded26ce95a8e28a79b9f547e3cb 100644 (file)
@@ -8,7 +8,9 @@
 #include <common.h>
 #include <asm/armv8/mmu.h>
 
-static struct mm_region gen3_mem_map[] = {
+#define GEN3_NR_REGIONS 16
+
+static struct mm_region gen3_mem_map[GEN3_NR_REGIONS] = {
        {
                .virt = 0x0UL,
                .phys = 0x0UL,
@@ -42,3 +44,88 @@ static struct mm_region gen3_mem_map[] = {
 };
 
 struct mm_region *mem_map = gen3_mem_map;
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void enable_caches(void)
+{
+       u64 start, size;
+       int bank, i = 0;
+
+       /* Create map for RPC access */
+       gen3_mem_map[i].virt = 0x0ULL;
+       gen3_mem_map[i].phys = 0x0ULL;
+       gen3_mem_map[i].size = 0x40000000ULL;
+       gen3_mem_map[i].attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
+                               PTE_BLOCK_NON_SHARE |
+                               PTE_BLOCK_PXN | PTE_BLOCK_UXN;
+       i++;
+
+       /* Generate entires for DRAM in 32bit address space */
+       for (bank = 0; bank < CONFIG_NR_DRAM_BANKS; bank++) {
+               start = gd->bd->bi_dram[bank].start;
+               size = gd->bd->bi_dram[bank].size;
+
+               /* Skip empty DRAM banks */
+               if (!size)
+                       continue;
+
+               /* Skip DRAM above 4 GiB */
+               if (start >> 32ULL)
+                       continue;
+
+               /* Mark memory reserved by ATF as cacheable too. */
+               if (start == 0x48000000) {
+                       start = 0x40000000ULL;
+                       size += 0x08000000ULL;
+               }
+
+               gen3_mem_map[i].virt = start;
+               gen3_mem_map[i].phys = start;
+               gen3_mem_map[i].size = size;
+               gen3_mem_map[i].attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
+                                       PTE_BLOCK_INNER_SHARE;
+               i++;
+       }
+
+       /* Create map for register access */
+       gen3_mem_map[i].virt = 0xc0000000ULL;
+       gen3_mem_map[i].phys = 0xc0000000ULL;
+       gen3_mem_map[i].size = 0x40000000ULL;
+       gen3_mem_map[i].attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
+                               PTE_BLOCK_NON_SHARE |
+                               PTE_BLOCK_PXN | PTE_BLOCK_UXN;
+       i++;
+
+       /* Generate entires for DRAM in 64bit address space */
+       for (bank = 0; bank < CONFIG_NR_DRAM_BANKS; bank++) {
+               start = gd->bd->bi_dram[bank].start;
+               size = gd->bd->bi_dram[bank].size;
+
+               /* Skip empty DRAM banks */
+               if (!size)
+                       continue;
+
+               /* Skip DRAM below 4 GiB */
+               if (!(start >> 32ULL))
+                       continue;
+
+               gen3_mem_map[i].virt = start;
+               gen3_mem_map[i].phys = start;
+               gen3_mem_map[i].size = size;
+               gen3_mem_map[i].attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
+                                       PTE_BLOCK_INNER_SHARE;
+               i++;
+       }
+
+       /* Zero out the remaining regions. */
+       for (; i < GEN3_NR_REGIONS; i++) {
+               gen3_mem_map[i].virt = 0;
+               gen3_mem_map[i].phys = 0;
+               gen3_mem_map[i].size = 0;
+               gen3_mem_map[i].attrs = 0;
+       }
+
+       icache_enable();
+       dcache_enable();
+}
index 071dea04ec7c1f554afe12096d10b6a83dc6a444..6d646ef999764869edfb95d416a0e005967aec2e 100644 (file)
@@ -248,6 +248,24 @@ config MIPS_CACHE_INDEX_BASE
          Normally this is CKSEG0. If the MIPS system needs to move this block
          to some SRAM or ScratchPad RAM, adapt this option accordingly.
 
+config MIPS_RELOCATION_TABLE_SIZE
+       hex "Relocation table size"
+       range 0x100 0x10000
+       default "0x8000"
+       ---help---
+         A table of relocation data will be appended to the U-Boot binary
+         and parsed in relocate_code() to fix up all offsets in the relocated
+         U-Boot.
+
+         This option allows the amount of space reserved for the table to be
+         adjusted in a range from 256 up to 64k. The default is 32k and should
+         be ok in most cases. Reduce this value to shrink the size of U-Boot
+         binary.
+
+         The build will fail and a valid size suggested if this is too small.
+
+         If unsure, leave at the default value.
+
 endmenu
 
 menu "OS boot interface"
index 8aa45fc45c23da2c32befbf5b193202b15da090f..22223a0f3e9d149ec6417cd5e92b6dc558f4ada3 100644 (file)
@@ -55,7 +55,7 @@ PLATFORM_ELFFLAGS += -B mips $(OBJCOPYFLAGS)
 # MODFLAGS                     += -mlong-calls
 #
 ifndef CONFIG_SPL_BUILD
-OBJCOPYFLAGS                   += -j .got -j .rel -j .padding -j .dtb.init.rodata
+OBJCOPYFLAGS                   += -j .data.reloc -j .dtb.init.rodata
 LDFLAGS_FINAL                  += --emit-relocs
 endif
 
index f2c9f94f74edf6ebf861890476420e4b43027dd3..fd0f1b5d4f444a2b75f701d63ee2bbf5c47fd68e 100644 (file)
@@ -41,16 +41,22 @@ SECTIONS
        __image_copy_end = .;
        __init_end = .;
 
-       /*
-        * .rel must come last so that the mips-relocs tool can shrink
-        * the section size & the PT_LOAD program header filesz.
-        */
-       .rel : {
+       .data.reloc : {
                __rel_start = .;
-               BYTE(0x0)
-               . += (32 * 1024) - 1;
+               /*
+                * Space for relocation table
+                * This needs to be filled so that the
+                * mips-reloc tool can overwrite the content.
+                * An invalid value is left at the start of the
+                * section to abort relocation if the table
+                * has not been filled in.
+                */
+               LONG(0xFFFFFFFF);
+               FILL(0);
+               . += CONFIG_MIPS_RELOCATION_TABLE_SIZE - 4;
        }
 
+       . = ALIGN(4);
        _end = .;
 
        .bss __rel_start (OVERLAY) : {
index 7d139fffa24a1f960f7729f28a5ab97ee59b26df..309ca294601b2e26c1560ebcba114c6f89fecac4 100644 (file)
@@ -659,6 +659,7 @@ config ARCH_P1010
        select SYS_FSL_ERRATUM_A004477
        select SYS_FSL_ERRATUM_A004508
        select SYS_FSL_ERRATUM_A005125
+       select SYS_FSL_ERRATUM_A005275
        select SYS_FSL_ERRATUM_A006261
        select SYS_FSL_ERRATUM_A007075
        select SYS_FSL_ERRATUM_ESDHC111
@@ -821,6 +822,7 @@ config ARCH_P2041
        select FSL_LAW
        select SYS_FSL_ERRATUM_A004510
        select SYS_FSL_ERRATUM_A004849
+       select SYS_FSL_ERRATUM_A005275
        select SYS_FSL_ERRATUM_A006261
        select SYS_FSL_ERRATUM_CPU_A003999
        select SYS_FSL_ERRATUM_DDR_A003
@@ -845,6 +847,7 @@ config ARCH_P3041
        select SYS_FSL_DDR_VER_44
        select SYS_FSL_ERRATUM_A004510
        select SYS_FSL_ERRATUM_A004849
+       select SYS_FSL_ERRATUM_A005275
        select SYS_FSL_ERRATUM_A005812
        select SYS_FSL_ERRATUM_A006261
        select SYS_FSL_ERRATUM_CPU_A003999
@@ -910,6 +913,7 @@ config ARCH_P5020
        select FSL_LAW
        select SYS_FSL_DDR_VER_44
        select SYS_FSL_ERRATUM_A004510
+       select SYS_FSL_ERRATUM_A005275
        select SYS_FSL_ERRATUM_A006261
        select SYS_FSL_ERRATUM_DDR_A003
        select SYS_FSL_ERRATUM_DDR_A003474
@@ -935,6 +939,7 @@ config ARCH_P5040
        select SYS_FSL_DDR_VER_44
        select SYS_FSL_ERRATUM_A004510
        select SYS_FSL_ERRATUM_A004699
+       select SYS_FSL_ERRATUM_A005275
        select SYS_FSL_ERRATUM_A005812
        select SYS_FSL_ERRATUM_A006261
        select SYS_FSL_ERRATUM_DDR_A003
@@ -1303,6 +1308,9 @@ config SYS_FSL_ERRATUM_A005812
 config SYS_FSL_ERRATUM_A005871
        bool
 
+config SYS_FSL_ERRATUM_A005275
+       bool
+
 config SYS_FSL_ERRATUM_A006261
        bool
 
index eda2e7e63d7631a639d83430c95a4ef8cd87ea92..e455d8baf584a769b376adacf47a7537257b70e3 100644 (file)
@@ -307,6 +307,10 @@ static int do_errata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
            (SVR_REV(svr) <= CONFIG_SYS_FSL_A004447_SVR_REV))
                puts("Work-around for Erratum I2C-A004447 enabled\n");
 #endif
+#ifdef CONFIG_SYS_FSL_ERRATUM_A005275
+       if (has_erratum_a005275())
+               puts("Work-around for Erratum A005275 enabled\n");
+#endif
 #ifdef CONFIG_SYS_FSL_ERRATUM_A006261
        if (has_erratum_a006261())
                puts("Work-around for Erratum A006261 enabled\n");
index 7995093621040835b1522a1d8652517eedecfbbc..bfa601e91b6bb4fe222652cb8298dd3b0017366d 100644 (file)
@@ -1785,11 +1785,10 @@ typedef struct ccsr_gur {
 #define FSL_CORENET_RCWSR13_EC1_FM1_DTSEC4_MII 0x20000000
 #define FSL_CORENET_RCWSR13_EC2        0x0c000000 /* bits 420..421 */
 #define FSL_CORENET_RCWSR13_EC2_FM1_DTSEC5_RGMII       0x00000000
-#define FSL_CORENET_RCWSR13_EC2_FM1_GPIO       0x10000000
-#define FSL_CORENET_RCWSR13_EC2_FM1_DTSEC5_MII 0x20000000
+#define FSL_CORENET_RCWSR13_EC2_FM1_GPIO       0x04000000
 #define FSL_CORENET_RCWSR13_MAC2_GMII_SEL      0x00000080
 #define FSL_CORENET_RCWSR13_MAC2_GMII_SEL_L2_SWITCH    0x00000000
-#define FSL_CORENET_RCWSR13_MAC2_GMII_SEL_ENET_PORT    0x80000000
+#define FSL_CORENET_RCWSR13_MAC2_GMII_SEL_ENET_PORT    0x00000080
 #define CONFIG_SYS_FSL_SCFG_PIXCLKCR_OFFSET    0x28
 #define PXCKEN_MASK    0x80000000
 #define PXCK_MASK      0x00FF0000
index 9b8d1895eeed6eb3def36e984eaba7b752bc1c58..aaf87f4735ddfdbca5d281418e8429e6ea21965b 100644 (file)
@@ -8,7 +8,6 @@
 OperationRegion(GNVS, SystemMemory, ACPI_GNVS_ADDR, ACPI_GNVS_SIZE)
 Field(GNVS, ByteAcc, NoLock, Preserve)
 {
-       Offset (0x00),
        PCNT, 8,        /* processor count */
        IURE, 8,        /* internal UART enabled */
 }
index 44b9f12c7c7b2abbdb9a05a400613a3c9a980519..61602173f8e65c013351e763711715c0d1500dd4 100644 (file)
@@ -8,6 +8,5 @@
 OperationRegion(GNVS, SystemMemory, ACPI_GNVS_ADDR, ACPI_GNVS_SIZE)
 Field(GNVS, ByteAcc, NoLock, Preserve)
 {
-       Offset (0x00),
        PCNT, 8,        /* processor count */
 }
index a6296c2cb60e1266d67b5028f1bc4de7317135ac..895b807e96eaaf7c0d01d5d0e1233c90d1dd35cc 100644 (file)
@@ -10,6 +10,5 @@
 OperationRegion(GNVS, SystemMemory, ACPI_GNVS_ADDR, ACPI_GNVS_SIZE)
 Field(GNVS, ByteAcc, NoLock, Preserve)
 {
-    Offset (0x00),
     PCNT, 8,    /* processor count */
 }
diff --git a/board/freescale/mx8mq_evk/README b/board/freescale/mx8mq_evk/README
deleted file mode 100644 (file)
index cd7e67e..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-U-Boot for the NXP i.MX8MQ EVK board
-
-Quick Start
-===========
-
-- Build U-Boot
-- Build the ARM Trusted firmware binary
-- Get DDR firmware and mkimage tool
-- Generate flash.bin using imx-mkimage
-- Flash the binary into the SD card
-- Boot
-
-Build U-Boot
-============
-
-$ make mx8mq_evk_defconfig
-$ make
-
-Get and Build the ARM Trusted firmware
-======================================
-
-$ git clone https://source.codeaurora.org/external/imx/imx-atf
-$ cd imx-atf/
-$ git checkout origin/imx_4.9.51_imx8m_beta
-$ make PLAT=imx8mq bl31
-
-Get the DDR firmware and mkimage tool
-==============================
-
-$ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-7.2.bin
-$ chmod +x firmware-imx-7.2.bin
-$ ./firmware-imx-7.2.bin
-
-Download the imx-mkimage tool:
-
-$ git clone https://source.codeaurora.org/external/imx/imx-mkimage/
-$ cd imx-mkimage/
-$ git checkout origin/imx_4.9.51_imx8m_beta
-
-
-Generate flash.bin using imx-mkimage
-====================================
-
-Copy the following binaries to imx-mkimage/iMX8M folder:
-
-$ cp imx-atf/build/imx8mq/release/bl31.bin imx-mkimage/iMX8M/
-$ cp u-boot/u-boot-nodtb.bin imx-mkimage/iMX8M/
-$ cp u-boot/spl/u-boot-spl.bin imx-mkimage/iMX8M/
-$ cp u-boot/arch/arm/dts/fsl-imx8mq-evk.dtb imx-mkimage/iMX8M/
-
-Copy the following firmwares to imx-mkimage/iMX8 folder :
-
-$ cp firmware-imx-7.2/firmware/ddr/synopsys/lpddr4_pmu_train_1d_dmem.bin imx-mkimage/iMX8M/
-$ cp firmware-imx-7.2/firmware/ddr/synopsys/lpddr4_pmu_train_1d_imem.bin imx-mkimage/iMX8M/
-$ cp firmware-imx-7.2/firmware/ddr/synopsys/lpddr4_pmu_train_2d_dmem.bin imx-mkimage/iMX8M/
-$ cp firmware-imx-7.2/firmware/ddr/synopsys/lpddr4_pmu_train_2d_imem.bin imx-mkimage/iMX8M/
-
-If you want to run with HDMI, copy signed_hdmi_imx8m.bin to imx-mkimage/iMX8M.
-
-Before generating the flash.bin, transfer the mkimage generated by U-Boot to iMX8M folder:
-
-$ cp u-boot/tools/mkimage imx-mkimage/iMX8M/
-$ mv imx-mkimage/iMX8M/mkimage imx-mkimage/iMX8M/mkimage_uboot
-
-$ cd imx-mkimage/
-$ make SOC=iMX8M flash_spl_uboot
-
-Or for using HDMI:
-
-$ make SOC=iMX8M flash_hdmi_spl_uboot
-
-Flash the binary into the SD card
-=================================
-
-Burn the flash.bin binary to SD card offset 33KB:
-
-$ sudo dd if=iMX8M/flash.bin of=/dev/sd[x] bs=1024 seek=33
-
-Boot
-====
-Set Boot switch SW801: 1100 and Bmode: 10 to boot from Micro SD.
index 65266bce3f10c168647d900def3e7e83db2c38ae..48d8fd2c3f2caf23583fc6410baf40fa0f1656ad 100644 (file)
@@ -1,5 +1,6 @@
 STM32MP1 BOARD
 M:     Patrick Delaunay <patrick.delaunay@st.com>
+L:     uboot-stm32@st-md-mailman.stormreply.com (moderated for non-subscribers)
 S:     Maintained
 F:     board/st/stm32mp1
 F:     include/configs/stm32mp1.h
diff --git a/board/synopsys/emdk/Kconfig b/board/synopsys/emdk/Kconfig
deleted file mode 100644 (file)
index a9b834d..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_EMDK
-
-config SYS_BOARD
-       default "emdk"
-
-config SYS_VENDOR
-       default "synopsys"
-
-config SYS_CONFIG_NAME
-       default "emdk"
-
-endif
diff --git a/board/synopsys/emdk/MAINTAINERS b/board/synopsys/emdk/MAINTAINERS
deleted file mode 100644 (file)
index 605e338..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-EM DEVELOPMENT KIT BOARD
-M:     Alexey Brodkin <abrodkin@synopsys.com>
-S:     Maintained
-F:     board/synopsys/emdk/
-F:     configs/emdk_defconfig
diff --git a/board/synopsys/emdk/Makefile b/board/synopsys/emdk/Makefile
deleted file mode 100644 (file)
index 4926c4e..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#
-# Copyright (C) 2018 Synopsys, Inc. All rights reserved.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  += emdk.o
diff --git a/board/synopsys/emdk/README b/board/synopsys/emdk/README
deleted file mode 100644 (file)
index 706b547..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-================================================================================
-Useful notes on bulding and using of U-Boot on ARC EM Development Kit (AKA EMDK)
-================================================================================
-
-   BOARD OVERVIEW
-
-   The DesignWare ARC EM Development Kit is FPGA-bases platform for rapid
-   software development on the ARC EM family of processors.
-
-   Since this board is based on FPGA it's possible to load and use different
-   versions of ARC EM CPUs. U-Boot is built to be run on the simplest
-   possible configuration which means the same one binary will work on more
-   advanced configurations as well.
-
-   The board has the following features useful for U-Boot:
-    * On-board 2-channel FTDI TTL-to-USB converter
-      - The first channel is used for serial debug port (which makes it possible
-        to use a serial connection on pretty much any host machine be it
-        Windows, Linux or Mac).
-        On Linux machine typucally FTDI serial port would be /dev/ttyUSB0.
-        There's no HW flow-control and baud-rate is 115200.
-
-      - The second channel is used for built-in Digilent USB JTAG probe.
-        That means no extra hardware is required to access ARC core from a
-        debugger on development host. Both proprietary MetaWare debugger and
-        open source OpenOCD + GDB client are supported.
-
-      - Also with help of this FTDI chip it is possible to reset entire
-        board with help of a special `rff-ftdi-reset` utility, see:
-        https://github.com/foss-for-synopsys-dwc-arc-processors/rff-ftdi-reset
-
-    * Micro SD-card slot
-      - U-Boot expects to see the very first partition on the card formatted as
-        FAT file-system and uses it for keeping its environment in `uboot.env`
-        file. Note uboot.env is not just a text file but it is auto-generated
-        file created by U-Boot on invocation of `saveenv` command.
-        It contains a checksum which makes this saved environment invalid in
-        case of maual modification.
-
-      - There might be more useful files on that first FAT partition like
-        user applications, data files etc.
-
-    * 256 KiB of "ROM"
-      - This so-called "ROM" is a part of FPGA image and even though it
-        might be unlocked for writes its initial content will be restored
-        on the next power-on.
-
-
-   BUILDING U-BOOT
-
-   1. Configure U-Boot:
-      ------------------------->8----------------------
-      make emdk_defconfig
-      ------------------------->8----------------------
-
-   2. To build Elf file (for example to be used with host debugger via JTAG
-      connection to the target board):
-      ------------------------->8----------------------
-      make mdbtrick
-      ------------------------->8----------------------
-
-      This will produce `u-boot` Elf file.
-
-   3. To build binary image to be put in "ROM":
-      ------------------------->8----------------------
-      make u-boot.bin
-      ------------------------->8----------------------
-
-
-   EXECUTING U-BOOT
-
-   1. The EMDK board is supposed to auto-start U-Boot image stored in ROM on
-      power-on. For that make sure VCCIO DIP-switches are all in "off" state.
-
-   2. Though it is possible to load U-Boot as a simple Elf file via JTAG right
-      in "ROM" and start it from the debugger. One important note here we first
-      need to enable writes into "ROM" by writing 1 to 0xf0001000.
-
-      2.1. In case of proprietary MetaWare debugger run:
-      ------------------------->8----------------------
-      mdb -dll=opxdarc.so -OK -preloadexec="eval *(int*)0xf0001000=0" u-boot
-      ------------------------->8----------------------
diff --git a/board/synopsys/emdk/emdk.c b/board/synopsys/emdk/emdk.c
deleted file mode 100644 (file)
index 79cafef..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * Copyright (C) 2018 Synopsys, Inc. All rights reserved.
- */
-
-#include <common.h>
-#include <dwmmc.h>
-#include <malloc.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#define ARC_PERIPHERAL_BASE    0xF0000000
-#define SDIO_BASE              (ARC_PERIPHERAL_BASE + 0x10000)
-
-int board_mmc_init(bd_t *bis)
-{
-       struct dwmci_host *host = NULL;
-
-       host = malloc(sizeof(struct dwmci_host));
-       if (!host) {
-               printf("dwmci_host malloc fail!\n");
-               return 1;
-       }
-
-       memset(host, 0, sizeof(struct dwmci_host));
-       host->name = "Synopsys Mobile storage";
-       host->ioaddr = (void *)SDIO_BASE;
-       host->buswidth = 4;
-       host->dev_index = 0;
-       host->bus_hz = 50000000;
-
-       add_dwmci(host, host->bus_hz / 2, 400000);
-
-       return 0;
-}
-
-int board_mmc_getcd(struct mmc *mmc)
-{
-       struct dwmci_host *host = mmc->priv;
-
-       return !(dwmci_readl(host, DWMCI_CDETECT) & 1);
-}
-
-#define CREG_BASE              0xF0001000
-#define CREG_BOOT_OFFSET       0
-#define CREG_BOOT_WP_OFFSET    8
-
-#define CGU_BASE               0xF0000000
-#define CGU_IP_SW_RESET                0x0FF0
-
-void reset_cpu(ulong addr)
-{
-       writel(1, (u32 *)(CGU_BASE + CGU_IP_SW_RESET));
-       while (1)
-               ; /* loop forever till reset */
-}
-
-static int do_emdk_rom(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
-{
-       u32 creg_boot = readl((u32 *)(CREG_BASE + CREG_BOOT_OFFSET));
-
-       if (!strcmp(argv[1], "unlock"))
-               creg_boot &= ~BIT(CREG_BOOT_WP_OFFSET);
-       else if (!strcmp(argv[1], "lock"))
-               creg_boot |= BIT(CREG_BOOT_WP_OFFSET);
-       else
-               return CMD_RET_USAGE;
-
-       writel(creg_boot, (u32 *)(CREG_BASE + CREG_BOOT_OFFSET));
-
-       return CMD_RET_SUCCESS;
-}
-
-cmd_tbl_t cmd_emdk[] = {
-       U_BOOT_CMD_MKENT(rom, 2, 0, do_emdk_rom, "", ""),
-};
-
-static int do_emdk(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
-{
-       cmd_tbl_t *c;
-
-       c = find_cmd_tbl(argv[1], cmd_emdk, ARRAY_SIZE(cmd_emdk));
-
-       /* Strip off leading 'emdk' command */
-       argc--;
-       argv++;
-
-       if (c == NULL || argc > c->maxargs)
-               return CMD_RET_USAGE;
-
-       return c->cmd(cmdtp, flag, argc, argv);
-}
-
-U_BOOT_CMD(
-       emdk, CONFIG_SYS_MAXARGS, 0, do_emdk,
-       "Synopsys EMDK specific commands",
-       "rom unlock - Unlock non-volatile memory for writing\n"
-       "emdk rom lock - Lock non-volatile memory to prevent writing\n"
-);
diff --git a/board/synopsys/emsdp/Kconfig b/board/synopsys/emsdp/Kconfig
new file mode 100644 (file)
index 0000000..8228bb5
--- /dev/null
@@ -0,0 +1,12 @@
+if TARGET_EMSDP
+
+config SYS_BOARD
+       default "emsdp"
+
+config SYS_VENDOR
+       default "synopsys"
+
+config SYS_CONFIG_NAME
+       default "emsdp"
+
+endif
diff --git a/board/synopsys/emsdp/MAINTAINERS b/board/synopsys/emsdp/MAINTAINERS
new file mode 100644 (file)
index 0000000..6404013
--- /dev/null
@@ -0,0 +1,6 @@
+EM DEVELOPMENT KIT BOARD
+M:     Alexey Brodkin <abrodkin@synopsys.com>
+S:     Maintained
+F:     arch/arc/dts/emsdp.dts
+F:     board/synopsys/emsdp/
+F:     configs/emsdp_defconfig
diff --git a/board/synopsys/emsdp/Makefile b/board/synopsys/emsdp/Makefile
new file mode 100644 (file)
index 0000000..733a48c
--- /dev/null
@@ -0,0 +1,7 @@
+#
+# Copyright (C) 2018 Synopsys, Inc. All rights reserved.
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y  += emsdp.o
diff --git a/board/synopsys/emsdp/README b/board/synopsys/emsdp/README
new file mode 100644 (file)
index 0000000..034062e
--- /dev/null
@@ -0,0 +1,83 @@
+================================================================================
+Useful notes on bulding and using of U-Boot on
+ARC EM Software Development Platform (AKA EMSDP)
+================================================================================
+
+   BOARD OVERVIEW
+
+   The DesignWare ARC EM Software Development Platform is FPGA-bases platform
+   for rapid software development on the ARC EM family of processors.
+
+   Since this board is based on FPGA it's possible to load and use different
+   versions of ARC EM CPUs. U-Boot is built to be run on the simplest
+   possible configuration which means the same one binary will work on more
+   advanced configurations as well.
+
+   The board has the following features useful for U-Boot:
+    * On-board 2-channel FTDI TTL-to-USB converter
+      - The first channel is used for serial debug port (which makes it possible
+        to use a serial connection on pretty much any host machine be it
+        Windows, Linux or Mac).
+        On Linux machine typucally FTDI serial port would be /dev/ttyUSB0.
+        There's no HW flow-control and baud-rate is 115200.
+
+      - The second channel is used for built-in Digilent USB JTAG probe.
+        That means no extra hardware is required to access ARC core from a
+        debugger on development host. Both proprietary MetaWare debugger and
+        open source OpenOCD + GDB client are supported.
+
+      - Also with help of this FTDI chip it is possible to reset entire
+        board with help of a special `rff-ftdi-reset` utility, see:
+        https://github.com/foss-for-synopsys-dwc-arc-processors/rff-ftdi-reset
+
+    * Micro SD-card slot
+      - U-Boot expects to see the very first partition on the card formatted as
+        FAT file-system and uses it for keeping its environment in `uboot.env`
+        file. Note uboot.env is not just a text file but it is auto-generated
+        file created by U-Boot on invocation of `saveenv` command.
+        It contains a checksum which makes this saved environment invalid in
+        case of maual modification.
+
+      - There might be more useful files on that first FAT partition like
+        user applications, data files etc.
+
+    * 256 KiB of "ROM"
+      - This so-called "ROM" is a part of FPGA image and even though it
+        might be unlocked for writes its initial content will be restored
+        on the next power-on.
+
+
+   BUILDING U-BOOT
+
+   1. Configure U-Boot:
+      ------------------------->8----------------------
+      make emsdp_defconfig
+      ------------------------->8----------------------
+
+   2. To build Elf file (for example to be used with host debugger via JTAG
+      connection to the target board):
+      ------------------------->8----------------------
+      make mdbtrick
+      ------------------------->8----------------------
+
+      This will produce `u-boot` Elf file.
+
+   3. To build binary image to be put in "ROM":
+      ------------------------->8----------------------
+      make u-boot.bin
+      ------------------------->8----------------------
+
+
+   EXECUTING U-BOOT
+
+   1. The EMSDP board is supposed to auto-start U-Boot image stored in ROM on
+      power-on. For that make sure VCCIO DIP-switches are all in "off" state.
+
+   2. Though it is possible to load U-Boot as a simple Elf file via JTAG right
+      in "ROM" and start it from the debugger. One important note here we first
+      need to enable writes into "ROM" by writing 1 to 0xf0001000.
+
+      2.1. In case of proprietary MetaWare debugger run:
+      ------------------------->8----------------------
+      mdb -dll=opxdarc.so -OK -preloadexec="eval *(int*)0xf0001000=0" u-boot
+      ------------------------->8----------------------
diff --git a/board/synopsys/emsdp/emsdp.c b/board/synopsys/emsdp/emsdp.c
new file mode 100644 (file)
index 0000000..b5ec7f1
--- /dev/null
@@ -0,0 +1,99 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2018 Synopsys, Inc. All rights reserved.
+ */
+
+#include <common.h>
+#include <dwmmc.h>
+#include <malloc.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#define ARC_PERIPHERAL_BASE    0xF0000000
+#define SDIO_BASE              (ARC_PERIPHERAL_BASE + 0x10000)
+
+int board_mmc_init(bd_t *bis)
+{
+       struct dwmci_host *host = NULL;
+
+       host = malloc(sizeof(struct dwmci_host));
+       if (!host) {
+               printf("dwmci_host malloc fail!\n");
+               return 1;
+       }
+
+       memset(host, 0, sizeof(struct dwmci_host));
+       host->name = "Synopsys Mobile storage";
+       host->ioaddr = (void *)SDIO_BASE;
+       host->buswidth = 4;
+       host->dev_index = 0;
+       host->bus_hz = 50000000;
+
+       add_dwmci(host, host->bus_hz / 2, 400000);
+
+       return 0;
+}
+
+int board_mmc_getcd(struct mmc *mmc)
+{
+       struct dwmci_host *host = mmc->priv;
+
+       return !(dwmci_readl(host, DWMCI_CDETECT) & 1);
+}
+
+#define CREG_BASE              0xF0001000
+#define CREG_BOOT_OFFSET       0
+#define CREG_BOOT_WP_OFFSET    8
+
+#define CGU_BASE               0xF0000000
+#define CGU_IP_SW_RESET                0x0FF0
+
+void reset_cpu(ulong addr)
+{
+       writel(1, (u32 *)(CGU_BASE + CGU_IP_SW_RESET));
+       while (1)
+               ; /* loop forever till reset */
+}
+
+static int do_emsdp_rom(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
+{
+       u32 creg_boot = readl((u32 *)(CREG_BASE + CREG_BOOT_OFFSET));
+
+       if (!strcmp(argv[1], "unlock"))
+               creg_boot &= ~BIT(CREG_BOOT_WP_OFFSET);
+       else if (!strcmp(argv[1], "lock"))
+               creg_boot |= BIT(CREG_BOOT_WP_OFFSET);
+       else
+               return CMD_RET_USAGE;
+
+       writel(creg_boot, (u32 *)(CREG_BASE + CREG_BOOT_OFFSET));
+
+       return CMD_RET_SUCCESS;
+}
+
+cmd_tbl_t cmd_emsdp[] = {
+       U_BOOT_CMD_MKENT(rom, 2, 0, do_emsdp_rom, "", ""),
+};
+
+static int do_emsdp(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
+{
+       cmd_tbl_t *c;
+
+       c = find_cmd_tbl(argv[1], cmd_emsdp, ARRAY_SIZE(cmd_emsdp));
+
+       /* Strip off leading 'emsdp' command */
+       argc--;
+       argv++;
+
+       if (c == NULL || argc > c->maxargs)
+               return CMD_RET_USAGE;
+
+       return c->cmd(cmdtp, flag, argc, argv);
+}
+
+U_BOOT_CMD(
+       emsdp, CONFIG_SYS_MAXARGS, 0, do_emsdp,
+       "Synopsys EMSDP specific commands",
+       "rom unlock - Unlock non-volatile memory for writing\n"
+       "emsdp rom lock - Lock non-volatile memory to prevent writing\n"
+);
diff --git a/board/synopsys/iot_devkit/README b/board/synopsys/iot_devkit/README
new file mode 100644 (file)
index 0000000..20c140d
--- /dev/null
@@ -0,0 +1,145 @@
+================================================================================
+Useful notes on bulding and using of U-Boot on
+ARC IoT Development Kit (AKA IoTDK)
+================================================================================
+
+   BOARD OVERVIEW
+
+   The DesignWare ARC IoT Development Kit is a versatile platform that includes
+   the necessary hardware and software to accelerate software development and
+   debugging of sensor fusion, voice recognition and face detection designs.
+
+   The ARC IoT Development Kit includes a silicon implementation of the
+   ARC Data Fusion IP Subsystem running at 144 MHz on SMIC's
+   55-nm ultra-low power process, and a rich set of peripherals commonly used
+   in IoT designs such as USB, UART, SPI, I2C, PWM, SDIO and ADCs.
+
+   The board is shipped with pre-installed U-Boot in non-volatile memory
+   (eFlash) so on power-on user sees U-Boot start header and command line
+   prompt which might be used for U-Boot environment fine-tuning, manual
+   loading and execution of user application binaries etc.
+
+   The board has the following features useful for U-Boot:
+    * On-board 2-channel FTDI TTL-to-USB converter
+      - The first channel is used for serial debug port (which makes it possible
+        to use a serial connection on pretty much any host machine be it
+        Windows, Linux or Mac).
+        On Linux machine typucally FTDI serial port would be /dev/ttyUSB0.
+        There's no HW flow-control and baud-rate is 115200.
+
+      - The second channel is used for built-in Digilent USB JTAG probe.
+        That means no extra hardware is required to access ARC core from a
+        debugger on development host. Both proprietary MetaWare debugger and
+        open source OpenOCD + GDB client are supported.
+
+      - Also with help of this FTDI chip it is possible to reset entire
+        board with help of a special `rff-ftdi-reset` utility, see:
+        https://github.com/foss-for-synopsys-dwc-arc-processors/rff-ftdi-reset
+
+    * Micro SD-card slot
+      - U-Boot expects to see the very first partition on the card formatted as
+        FAT file-system and uses it for keeping its environment in `uboot.env`
+        file. Note uboot.env is not just a text file but it is auto-generated
+        file created by U-Boot on invocation of `saveenv` command.
+        It contains a checksum which makes this saved environment invalid in
+        case of maual modification.
+
+      - There might be more useful files on that first FAT partition like
+        user applications, data files etc.
+
+    * USB OTG connector
+      - U-Boot may access USB mass-storage devices attached to this connector.
+        Note only FAT file-system is supported. It might be used for storing
+        user application binaries as well as micro SD-card mentioned above.
+
+    * The following memories are avaialble on the board:
+      - eFlash:        256 KiB @ 0x0000_0000
+        A non-volatile memory from which ARC core may execute code directly.
+        Still is is not direcly writable, thus this is not an ordinary RAM.
+
+      - ICCM:  256 KiB @ 0x2000_0000
+        Instruction Closely Coupled Memory - fast on-chip memory primary used
+        for code being executed, still data could be placed in this memory too.
+        In that sense it's just a general purpose RAM.
+
+      - SRAM:  128 KiB @ 0x3000_0000
+        On-chip SRAM. From user perspective is the same as ICCM above.
+
+      - DCCM:  128 KiB @ 0x8000_0000
+        Data Closely Coupled Memory is similar to ICCM with a major difference -
+        ARC core cannot execute code from DCCM. So this is very special RAM
+        only suitable for data.
+
+   BUILDING U-BOOT
+
+   1. Configure U-Boot:
+      ------------------------->8----------------------
+      make iot_devkit_defconfig
+      ------------------------->8----------------------
+
+   2. To build Elf file (for example to be used with host debugger via JTAG
+      connection to the target board):
+      ------------------------->8----------------------
+      make mdbtrick
+      ------------------------->8----------------------
+
+      This will produce `u-boot` Elf file.
+
+   3. To build binary image to be put in "ROM":
+      ------------------------->8----------------------
+      make u-boot.bin
+      ------------------------->8----------------------
+
+
+   EXECUTING U-BOOT
+
+   1. The IoTDK board is supposed to auto-start U-Boot image stored in eFlash on
+      power-on. Note it's possible to update that image - follow instructions in
+      user's manual.
+
+   2. Though it is possible to load and start U-Boot as a simple Elf file
+      via JTAG right in ICCM. For that it's required to re-configure U-Boot
+      so it gets linked to ICCM address 0x2000_0000 (remember eFlash is not
+      direcly writable).
+      Run U-Boot's configuration utility with "make menuconfig", go to
+      "Boot images" and change "Text Base" from default 0x00000000 to
+      0x20000000. Exit & save new configuration. Now run "make mdbtrick" to
+      build new Elf.
+
+      2.1. In case of proprietary MetaWare debugger run:
+      ------------------------->8----------------------
+      mdb -digilent u-boot
+      ------------------------->8----------------------
+
+   USING U-BOOT
+
+   Note due to limited memory size it's supposed that user will run binary
+   images of their applications instead of loading Elf files.
+
+   1. To load and start application binary from micro SD-card execute
+      the following commands in U-Boot's shell:
+      ------------------------->8----------------------
+      fatload mmc 0 0x20000000 yourapp.bin
+      go 0x20000000
+      ------------------------->8----------------------
+
+   2. To load and start application binary from USB mass-storage device execute
+      the following commands in U-Boot's shell:
+      ------------------------->8----------------------
+      usb start
+      fatload usb 0x20000000 yourapp.bin
+      go 0x20000000
+      ------------------------->8----------------------
+
+   3. To have a sequence of commands executed on U-Boot start put those
+      commands in "bootcmd" with semicolon between them.
+      For example to get (1) done automatically:
+      ------------------------->8----------------------
+      setenv bootcmd fatload mmc 0 0x20000000 yourapp.bin\; go 0x20000000
+      saveenv
+      ------------------------->8----------------------
+
+   4. To reboot the board just run:
+      ------------------------->8----------------------
+      reset
+      ------------------------->8----------------------
index d81c8e621f0e69d04aae790c7b55be97718e4e83..72709c0e41352d2f3e6f1ede6e7981944f831eb7 100644 (file)
@@ -66,59 +66,6 @@ int board_init(void)
        return 0;
 }
 
-#ifdef CONFIG_DRIVER_TI_KEYSTONE_NET
-#ifndef CONFIG_DM_ETH
-int get_eth_env_param(char *env_name)
-{
-       char *env;
-       int res = -1;
-
-       env = env_get(env_name);
-       if (env)
-               res = simple_strtol(env, NULL, 0);
-
-       return res;
-}
-
-int board_eth_init(bd_t *bis)
-{
-       int j;
-       int res;
-       int port_num;
-       char link_type_name[32];
-
-       if (cpu_is_k2g())
-               writel(KS2_ETHERNET_RGMII, KS2_ETHERNET_CFG);
-
-       /* By default, select PA PLL clock as PA clock source */
-#ifndef CONFIG_SOC_K2G
-       if (psc_enable_module(KS2_LPSC_PA))
-               return -1;
-#endif
-       if (psc_enable_module(KS2_LPSC_CPGMAC))
-               return -1;
-       if (psc_enable_module(KS2_LPSC_CRYPTO))
-               return -1;
-
-       if (cpu_is_k2e() || cpu_is_k2l())
-               pll_pa_clk_sel();
-
-       port_num = get_num_eth_ports();
-
-       for (j = 0; j < port_num; j++) {
-               sprintf(link_type_name, "sgmii%d_link_type", j);
-               res = get_eth_env_param(link_type_name);
-               if (res >= 0)
-                       eth_priv_cfg[j].sgmii_link_type = res;
-
-               keystone2_emac_initialize(&eth_priv_cfg[j]);
-       }
-
-       return 0;
-}
-#endif
-#endif
-
 #ifdef CONFIG_SPL_BUILD
 void spl_board_init(void)
 {
index 250b649d459c6e96075c942d0e4f4d79d4659a8c..d0cfbf5a7517ff4fa48b8cefaab8ce2ddcc9a57c 100644 (file)
@@ -12,8 +12,6 @@
 #include <asm/ti-common/keystone_net.h>
 #include "../common/board_detect.h"
 
-extern struct eth_priv_t eth_priv_cfg[];
-
 #if defined(CONFIG_TI_I2C_BOARD_DETECT)
 static inline int board_is_k2g_gp(void)
 {
@@ -38,7 +36,6 @@ static inline int board_is_k2g_ice(void)
 }
 #endif
 
-int get_num_eth_ports(void);
 void spl_init_keystone_plls(void);
 
 #endif
index f86a8363c4761f038f4ce49fbfc4dd903dd01119..ecd4a42df40e8fc24a8333056ceefafd4c0bf291 100644 (file)
@@ -89,80 +89,6 @@ struct pll_init_data *get_pll_init_data(int pll)
        return data;
 }
 
-#ifdef CONFIG_DRIVER_TI_KEYSTONE_NET
-struct eth_priv_t eth_priv_cfg[] = {
-       {
-               .int_name        = "K2E_EMAC0",
-               .rx_flow         = 0,
-               .phy_addr        = 0,
-               .slave_port      = 1,
-               .sgmii_link_type = SGMII_LINK_MAC_PHY,
-               .phy_if          = PHY_INTERFACE_MODE_SGMII,
-       },
-       {
-               .int_name        = "K2E_EMAC1",
-               .rx_flow         = 8,
-               .phy_addr        = 1,
-               .slave_port      = 2,
-               .sgmii_link_type = SGMII_LINK_MAC_PHY,
-               .phy_if          = PHY_INTERFACE_MODE_SGMII,
-       },
-       {
-               .int_name        = "K2E_EMAC2",
-               .rx_flow         = 16,
-               .phy_addr        = 2,
-               .slave_port      = 3,
-               .sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
-               .phy_if          = PHY_INTERFACE_MODE_SGMII,
-       },
-       {
-               .int_name        = "K2E_EMAC3",
-               .rx_flow         = 24,
-               .phy_addr        = 3,
-               .slave_port      = 4,
-               .sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
-               .phy_if          = PHY_INTERFACE_MODE_SGMII,
-       },
-       {
-               .int_name        = "K2E_EMAC4",
-               .rx_flow         = 32,
-               .phy_addr        = 4,
-               .slave_port      = 5,
-               .sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
-               .phy_if          = PHY_INTERFACE_MODE_SGMII,
-       },
-       {
-               .int_name        = "K2E_EMAC5",
-               .rx_flow         = 40,
-               .phy_addr        = 5,
-               .slave_port      = 6,
-               .sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
-               .phy_if          = PHY_INTERFACE_MODE_SGMII,
-       },
-       {
-               .int_name        = "K2E_EMAC6",
-               .rx_flow         = 48,
-               .phy_addr        = 6,
-               .slave_port      = 7,
-               .sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
-               .phy_if          = PHY_INTERFACE_MODE_SGMII,
-       },
-       {
-               .int_name        = "K2E_EMAC7",
-               .rx_flow         = 56,
-               .phy_addr        = 7,
-               .slave_port      = 8,
-               .sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
-               .phy_if          = PHY_INTERFACE_MODE_SGMII,
-       },
-};
-
-int get_num_eth_ports(void)
-{
-       return sizeof(eth_priv_cfg) / sizeof(struct eth_priv_t);
-}
-#endif
-
 #if defined(CONFIG_MULTI_DTB_FIT)
 int board_fit_config_name_match(const char *name)
 {
index 9bc94fb69eeb0848479960b237a4b314a3c2bd24..87dc4d009e2eb7194e3b080fe48f520d836d1fbd 100644 (file)
@@ -354,24 +354,6 @@ void spl_init_keystone_plls(void)
 }
 #endif
 
-#ifdef CONFIG_DRIVER_TI_KEYSTONE_NET
-struct eth_priv_t eth_priv_cfg[] = {
-       {
-               .int_name       = "K2G_EMAC",
-               .rx_flow        = 0,
-               .phy_addr       = 0,
-               .slave_port     = 1,
-               .sgmii_link_type = SGMII_LINK_MAC_PHY,
-               .phy_if          = PHY_INTERFACE_MODE_RGMII,
-       },
-};
-
-int get_num_eth_ports(void)
-{
-       return sizeof(eth_priv_cfg) / sizeof(struct eth_priv_t);
-}
-#endif
-
 #ifdef CONFIG_TI_SECURE_DEVICE
 void board_pmmc_image_process(ulong pmmc_image, size_t pmmc_size)
 {
index abc89d84bdc68d3df8af0b59e41f2c3145e06e65..4c0acd627f2c3ce58d1b41bab3be9f667a9b7909 100644 (file)
@@ -96,48 +96,6 @@ struct pll_init_data *get_pll_init_data(int pll)
        return data;
 }
 
-#ifdef CONFIG_DRIVER_TI_KEYSTONE_NET
-struct eth_priv_t eth_priv_cfg[] = {
-       {
-               .int_name       = "K2HK_EMAC",
-               .rx_flow        = 22,
-               .phy_addr       = 0,
-               .slave_port     = 1,
-               .sgmii_link_type = SGMII_LINK_MAC_PHY,
-               .phy_if          = PHY_INTERFACE_MODE_SGMII,
-       },
-       {
-               .int_name       = "K2HK_EMAC1",
-               .rx_flow        = 23,
-               .phy_addr       = 1,
-               .slave_port     = 2,
-               .sgmii_link_type = SGMII_LINK_MAC_PHY,
-               .phy_if          = PHY_INTERFACE_MODE_SGMII,
-       },
-       {
-               .int_name       = "K2HK_EMAC2",
-               .rx_flow        = 24,
-               .phy_addr       = 2,
-               .slave_port     = 3,
-               .sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
-               .phy_if          = PHY_INTERFACE_MODE_SGMII,
-       },
-       {
-               .int_name       = "K2HK_EMAC3",
-               .rx_flow        = 25,
-               .phy_addr       = 3,
-               .slave_port     = 4,
-               .sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
-               .phy_if          = PHY_INTERFACE_MODE_SGMII,
-       },
-};
-
-int get_num_eth_ports(void)
-{
-       return sizeof(eth_priv_cfg) / sizeof(struct eth_priv_t);
-}
-#endif
-
 #ifdef CONFIG_BOARD_EARLY_INIT_F
 int board_early_init_f(void)
 {
index c28fad51b6192b37b193ef99d41bf1b0585a891b..e49d8b348236e3542a5aadb8fd84672c786e6f3b 100644 (file)
@@ -84,48 +84,6 @@ struct pll_init_data *get_pll_init_data(int pll)
        return data;
 }
 
-#ifdef CONFIG_DRIVER_TI_KEYSTONE_NET
-struct eth_priv_t eth_priv_cfg[] = {
-       {
-               .int_name        = "K2L_EMAC",
-               .rx_flow         = 0,
-               .phy_addr        = 0,
-               .slave_port      = 1,
-               .sgmii_link_type = SGMII_LINK_MAC_PHY,
-               .phy_if          = PHY_INTERFACE_MODE_SGMII,
-       },
-       {
-               .int_name        = "K2L_EMAC1",
-               .rx_flow         = 8,
-               .phy_addr        = 1,
-               .slave_port      = 2,
-               .sgmii_link_type = SGMII_LINK_MAC_PHY,
-               .phy_if          = PHY_INTERFACE_MODE_SGMII,
-       },
-       {
-               .int_name        = "K2L_EMAC2",
-               .rx_flow         = 16,
-               .phy_addr        = 2,
-               .slave_port      = 3,
-               .sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
-               .phy_if          = PHY_INTERFACE_MODE_SGMII,
-       },
-       {
-               .int_name        = "K2L_EMAC3",
-               .rx_flow         = 32,
-               .phy_addr        = 3,
-               .slave_port      = 4,
-               .sgmii_link_type = SGMII_LINK_MAC_MAC_FORCED,
-               .phy_if          = PHY_INTERFACE_MODE_SGMII,
-       },
-};
-
-int get_num_eth_ports(void)
-{
-       return sizeof(eth_priv_cfg) / sizeof(struct eth_priv_t);
-}
-#endif
-
 #ifdef CONFIG_BOARD_EARLY_INIT_F
 int board_early_init_f(void)
 {
index d66f710ad0f872aa52fc9cc8ab4c6c620e59068c..ad14c9ce712489a03ecc4e8ea3cc7343bab64deb 100644 (file)
@@ -1728,14 +1728,14 @@ config CMD_MTDPARTS
 
 config MTDIDS_DEFAULT
        string "Default MTD IDs"
-       depends on CMD_MTD || CMD_MTDPARTS || CMD_NAND || CMD_FLASH
+       depends on MTD_PARTITIONS || CMD_MTDPARTS || CMD_NAND || CMD_FLASH
        help
          Defines a default MTD IDs list for use with MTD partitions in the
          Linux MTD command line partitions format.
 
 config MTDPARTS_DEFAULT
        string "Default MTD partition scheme"
-       depends on CMD_MTD || CMD_MTDPARTS || CMD_NAND || CMD_FLASH
+       depends on MTD_PARTITIONS || CMD_MTDPARTS || CMD_NAND || CMD_FLASH
        help
          Defines a default MTD partitioning scheme in the Linux MTD command
          line partitions format
@@ -1856,7 +1856,6 @@ endmenu
 
 config CMD_UBI
        tristate "Enable UBI - Unsorted block images commands"
-       select CMD_MTDPARTS
        select CRC32
        select MTD_UBI
        help
index d9cdaf6064b88e682f10bdbc68e576f2112815ff..ac4830a692f22c60bf63460416f890b07e42a806 100644 (file)
@@ -15,7 +15,6 @@ obj-$(CONFIG_CMD_AES) += aes.o
 obj-$(CONFIG_CMD_ADC) += adc.o
 obj-$(CONFIG_CMD_ARMFLASH) += armflash.o
 obj-y += blk_common.o
-obj-$(CONFIG_SOURCE) += source.o
 obj-$(CONFIG_CMD_SOURCE) += source.o
 obj-$(CONFIG_CMD_BDI) += bdinfo.o
 obj-$(CONFIG_CMD_BEDBUG) += bedbug.o
index 9aebfc2f6ef8e7241d998562f3dde7a965fa0bf9..81463f36b603aef3ce36dfd7571ed14733d6521c 100644 (file)
@@ -120,7 +120,7 @@ static int do_remoteproc_load(cmd_tbl_t *cmdtp, int flag, int argc,
        if (argc != 4)
                return CMD_RET_USAGE;
 
-       id = (int)simple_strtoul(argv[1], NULL, 3);
+       id = (int)simple_strtoul(argv[1], NULL, 10);
        addr = simple_strtoul(argv[2], NULL, 16);
 
        size = simple_strtoul(argv[3], NULL, 16);
@@ -163,7 +163,7 @@ static int do_remoteproc_wrapper(cmd_tbl_t *cmdtp, int flag, int argc,
        if (argc != 2)
                return CMD_RET_USAGE;
 
-       id = (int)simple_strtoul(argv[1], NULL, 3);
+       id = (int)simple_strtoul(argv[1], NULL, 10);
 
        if (!rproc_is_initialized()) {
                printf("\tRemote Processors are not initialized\n");
index 767a4a4536407ab5cd47e15e1e89c0a7e9a19d79..2b74a9814463f084037fa42c83ba6a6cc2f4b327 100644 (file)
--- a/cmd/ubi.c
+++ b/cmd/ubi.c
@@ -417,11 +417,6 @@ static int ubi_dev_scan(struct mtd_info *info, const char *vid_header_offset)
 
 int ubi_detach(void)
 {
-       if (mtdparts_init() != 0) {
-               printf("Error initializing mtdparts!\n");
-               return 1;
-       }
-
 #ifdef CONFIG_CMD_UBIFS
        /*
         * Automatically unmount UBIFS partition when user
index 7473b850115c62717726f0e8cdc0e6d4153b97c9..a2388364d9f9b7696cd4b90d370418700aaea190 100644 (file)
@@ -121,6 +121,7 @@ obj-y += command.o
 obj-$(CONFIG_$(SPL_)LOG) += log.o
 obj-$(CONFIG_$(SPL_)LOG_CONSOLE) += log_console.o
 obj-y += s_record.o
-obj-y += xyzModem.o
+obj-$(CONFIG_CMD_LOADB) += xyzModem.o
+obj-$(CONFIG_$(SPL_TPL_)YMODEM_SUPPORT) += xyzModem.o
 
 obj-$(CONFIG_AVB_VERIFY) += avb_verify.o
index 213d0440667f871812d039ba03061058662bebc4..afafec5e4d02657926f164f7a06abaf76914e851 100644 (file)
@@ -11,7 +11,6 @@
 
 #include <common.h>
 #include <console.h>
-#include <cpu.h>
 #include <dm.h>
 #include <environment.h>
 #include <fdtdec.h>
@@ -166,33 +165,6 @@ static int print_resetinfo(void)
 }
 #endif
 
-#if defined(CONFIG_DISPLAY_CPUINFO) && CONFIG_IS_ENABLED(CPU)
-static int print_cpuinfo(void)
-{
-       struct udevice *dev;
-       char desc[512];
-       int ret;
-
-       ret = uclass_first_device_err(UCLASS_CPU, &dev);
-       if (ret) {
-               debug("%s: Could not get CPU device (err = %d)\n",
-                     __func__, ret);
-               return ret;
-       }
-
-       ret = cpu_get_desc(dev, desc, sizeof(desc));
-       if (ret) {
-               debug("%s: Could not get CPU description (err = %d)\n",
-                     dev->name, ret);
-               return ret;
-       }
-
-       printf("%s", desc);
-
-       return 0;
-}
-#endif
-
 static int announce_dram_init(void)
 {
        puts("DRAM:  ");
index 577b352554c009b4b9efdf8720aeebe980b2f71a..41305d8aa69315e2fd16f18158a01c43f7a08413 100644 (file)
@@ -8,7 +8,6 @@
 #include <errno.h>
 #include <image.h>
 #include <linux/libfdt.h>
-#include <spl.h>
 
 ulong fdt_getprop_u32(const void *fdt, int node, const char *prop)
 {
@@ -73,7 +72,7 @@ int fit_find_config_node(const void *fdt)
        }
 
        if (dflt_conf_node != -ENOENT) {
-               debug("Selecting default config '%s'", dflt_conf_desc);
+               debug("Selecting default config '%s'\n", dflt_conf_desc);
                return dflt_conf_node;
        }
 
index 292e659c9ac4cad92e17c269c9205308a6be38c6..12f9359c0acc4dd212ac13648ca0a82525f32dbf 100644 (file)
@@ -185,9 +185,8 @@ static int spl_load_fit_image(struct spl_image_info *spl_image,
        spl_image->os = IH_OS_U_BOOT;
        spl_image->name = "U-Boot";
 
-       debug("spl: payload image: %.*s load addr: 0x%lx size: %d\n",
-             (int)sizeof(spl_image->name), spl_image->name,
-               spl_image->load_addr, spl_image->size);
+       debug("spl: payload image: %32s load addr: 0x%lx size: %d\n",
+             spl_image->name, spl_image->load_addr, spl_image->size);
 
 #ifdef CONFIG_SPL_FIT_SIGNATURE
        images.verify = 1;
@@ -256,9 +255,8 @@ int spl_parse_image_header(struct spl_image_info *spl_image,
                }
                spl_image->os = image_get_os(header);
                spl_image->name = image_get_name(header);
-               debug("spl: payload image: %.*s load addr: 0x%lx size: %d\n",
-                       IH_NMLEN, spl_image->name,
-                       spl_image->load_addr, spl_image->size);
+               debug("spl: payload image: %32s load addr: 0x%lx size: %d\n",
+                     spl_image->name, spl_image->load_addr, spl_image->size);
 #else
                /* LEGACY image not supported */
                debug("Legacy boot image support not enabled, proceeding to other boot methods\n");
@@ -314,7 +312,7 @@ __weak void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)
        image_entry_noargs_t image_entry =
                (image_entry_noargs_t)spl_image->entry_point;
 
-       debug("image entry point: 0x%lX\n", spl_image->entry_point);
+       debug("image entry point: 0x%lx\n", spl_image->entry_point);
        image_entry();
 }
 
@@ -554,7 +552,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
                debug("Unsupported OS image.. Jumping nevertheless..\n");
        }
 #if CONFIG_VAL(SYS_MALLOC_F_LEN) && !defined(CONFIG_SYS_SPL_MALLOC_SIZE)
-       debug("SPL malloc() used %#lx bytes (%ld KB)\n", gd->malloc_ptr,
+       debug("SPL malloc() used 0x%lx bytes (%ld KB)\n", gd->malloc_ptr,
              gd->malloc_ptr / 1024);
 #endif
 #ifdef CONFIG_BOOTSTAGE_STASH
index 4f04ae8140acc18400ac1a75b0b648fe29122c85..3f271ccca714b6c6bcb9844666016a66f2bbd985 100644 (file)
@@ -30,7 +30,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=ff800000.flash:1m(uboot),8m(kernel),512k(dtb),
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_FSL_CAAM=y
 # CONFIG_MMC is not set
-CONFIG_MTD_PARTITIONS=y
 CONFIG_NAND=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index fee0c2037a8ed5de2323241073ad59e369b5183a..51dc15228870e1ac0f5e52d3153b74a48b272391 100644 (file)
@@ -29,7 +29,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=ff800000.flash:1m(uboot),8m(kernel),512k(dtb),
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_FSL_CAAM=y
 # CONFIG_MMC is not set
-CONFIG_MTD_PARTITIONS=y
 CONFIG_NAND=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index 9058c15435db98c20a5e8fb464e8a012968f29f4..2d3c3d6128a13dcbe10c4b52d0bdad28791016e4 100644 (file)
@@ -26,7 +26,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=ff800000.flash:1m(uboot),8m(kernel),512k(dtb),
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_FSL_CAAM=y
 # CONFIG_MMC is not set
-CONFIG_MTD_PARTITIONS=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_PHY_MARVELL=y
index 76721d4a0270eeb15a0d019af200326fd2e502a0..5a9f10d6c7191df68271fabf2bf5a65da0c97de5 100644 (file)
@@ -26,7 +26,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=ff800000.flash:1m(uboot),8m(kernel),512k(dtb),
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_FSL_CAAM=y
 # CONFIG_MMC is not set
-CONFIG_MTD_PARTITIONS=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_PHY_MARVELL=y
index 04ace68d7f7064f844131cfb11f9646731316794..1e2686174e60154776ccddb12fcaba3c8401a573 100644 (file)
@@ -29,7 +29,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=88000000.nor,nand0=ff800000.flash,"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=88000000.nor:256k(dtb),7m(kernel),55m(fs),1m(uboot);ff800000.flash:1m(uboot),8m(kernel),512k(dtb),-(fs)"
 CONFIG_DM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 7b71fa12d95e410c9c46c1d600608dde95e7d024..0db36b004fdf826554ae6032320b4ee0ae241aff 100644 (file)
@@ -32,7 +32,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=88000000.nor:256k(dtb),7m(kernel),55m(fs),1m(u
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index a2ea749b8edcc99fae18f83a043ac299065f083e..005087e6dd24260591122d59e09a1ce0209ce547 100644 (file)
@@ -29,7 +29,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=88000000.nor,nand0=ff800000.flash,"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=88000000.nor:256k(dtb),7m(kernel),55m(fs),1m(uboot);ff800000.flash:1m(uboot),8m(kernel),512k(dtb),-(fs)"
 CONFIG_DM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 31a13956da77d42d972f314240a24e242c5161df..a37a8a29fb2b739645677f63a4182d8c74872da6 100644 (file)
@@ -32,7 +32,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=88000000.nor:256k(dtb),7m(kernel),55m(fs),1m(u
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 5c78181a91acfccd49fa87fe23799c41d1ff8e03..d88b6d49e204796fbbe93d2a54fd303c6a599b17 100644 (file)
@@ -29,7 +29,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=88000000.nor,nand0=ff800000.flash,"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=88000000.nor:256k(dtb),7m(kernel),55m(fs),1m(uboot);ff800000.flash:1m(uboot),8m(kernel),512k(dtb),-(fs)"
 CONFIG_DM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 1f2990b70abed9383c6f194f1da636582ae3abd1..09751edebcad50dd2c63de858bc69e38a6f429e2 100644 (file)
@@ -28,7 +28,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=88000000.nor:256k(dtb),7m(kernel),55m(fs),1m(u
 CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 33e9b462e3b942261a48679922b7d6955fcde278..94d099b6cd9c66edb5115ef5868a23a4995a6de9 100644 (file)
@@ -29,7 +29,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=88000000.nor,nand0=ff800000.flash,"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=88000000.nor:256k(dtb),7m(kernel),55m(fs),1m(uboot);ff800000.flash:1m(uboot),8m(kernel),512k(dtb),-(fs)"
 CONFIG_DM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 767be683a5489d6ac5abe9e6fb11b2005df651d8..7b4ecee5c5e0e8eccb072b7619eb98377073f683 100644 (file)
@@ -28,7 +28,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=88000000.nor:256k(dtb),7m(kernel),55m(fs),1m(u
 CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index bd0a7067af08a57f6bc1109d339b0c63cfca13b1..4a53c7246765e95068aab99c1547f4b051d44f65 100644 (file)
@@ -29,7 +29,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=88000000.nor,nand0=ff800000.flash,"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=88000000.nor:256k(dtb),7m(kernel),55m(fs),1m(uboot);ff800000.flash:1m(uboot),8m(kernel),512k(dtb),-(fs)"
 CONFIG_DM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index e56bae07aaf6f411b7f2023fc4d56cce023bf155..ea2e04010deaa9155bb1420b202e48c13a137644 100644 (file)
@@ -28,7 +28,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=88000000.nor:256k(dtb),7m(kernel),55m(fs),1m(u
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index a9bc5f6ee7e1c31245711b7cdbd4c35f7d00a883..fc41568c97c11ba68a070a8d7ee82042bd470182 100644 (file)
@@ -29,7 +29,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=88000000.nor,nand0=ff800000.flash,"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=88000000.nor:256k(dtb),7m(kernel),55m(fs),1m(uboot);ff800000.flash:1m(uboot),8m(kernel),512k(dtb),-(fs)"
 CONFIG_DM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 9c552d01cdf1ec92b4d9285229252443b78134c6..622f5ca8c808e6541115eed0a1f59189e8769251 100644 (file)
@@ -28,7 +28,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=88000000.nor:256k(dtb),7m(kernel),55m(fs),1m(u
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index a99f691f4b4d91f210ecf60fb6c15f3c5350e948..5eca1f15802dfccca1721a6ff70064af03daee3e 100644 (file)
@@ -29,7 +29,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=88000000.nor,nand0=ff800000.flash,"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=88000000.nor:256k(dtb),7m(kernel),55m(fs),1m(uboot);ff800000.flash:1m(uboot),8m(kernel),512k(dtb),-(fs)"
 CONFIG_DM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 2d61ea85d5bc0841ad7b6de2c9a47c563ebe6572..b6f2e69af3967a4fc2968c6d6b61257a189db1d3 100644 (file)
@@ -28,7 +28,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=88000000.nor:256k(dtb),7m(kernel),55m(fs),1m(u
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index dfd2770d4cc486ad84e13a4bd3493e92bca7e230..fc89a74b0a88870e9d34d4c0c402bc505907c7ce 100644 (file)
@@ -29,7 +29,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=88000000.nor,nand0=ff800000.flash,"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=88000000.nor:256k(dtb),7m(kernel),55m(fs),1m(uboot);ff800000.flash:1m(uboot),8m(kernel),512k(dtb),-(fs)"
 CONFIG_DM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 61d0c4cc8a290d6609c5488f9beda17c7233624f..18f40bb188c558c589fef3ad42d8f4a1825de5c7 100644 (file)
@@ -28,7 +28,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=88000000.nor:256k(dtb),7m(kernel),55m(fs),1m(u
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index f6f83382e943b229d010c0875554ae26163f1bac..c607adb65b7c0900c1e54dd8ed86341d3679eff7 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_USB0_VBUS_PIN="PB10"
 CONFIG_NR_DRAM_BANKS=1
 CONFIG_SPL_I2C_SUPPORT=y
 # CONFIG_CMD_FLASH is not set
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=sunxi-nand.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=sunxi-nand.0:256k(spl),256k(spl-backup),2m(uboot),2m(uboot-backup),-(UBI)"
 CONFIG_DEFAULT_DEVICE_TREE="sun5i-gr8-chip-pro"
index e1ecd61dafdcb44820985568337128a3d794ef47..be116db00ef00e192cb404c847e39c059789eff8 100644 (file)
@@ -10,6 +10,7 @@ CONFIG_AXP_GPIO=y
 CONFIG_NR_DRAM_BANKS=1
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
 # CONFIG_CMD_FLASH is not set
+CONFIG_CMD_MTDPARTS=y
 # CONFIG_SPL_DOS_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
 CONFIG_DEFAULT_DEVICE_TREE="sun8i-r16-nintendo-nes-classic-edition"
index 4b3922c48c2aae51e68f1ab20176331701d7b6a4..58f25714e5aa1efe6e94f688b95737d999533214 100644 (file)
@@ -42,7 +42,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=ec000000.nor"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=ec000000.nor:128k(dtb),6016k(kernel),57088k(fs),1m(vsc7385-firmware),1280k(u-boot)"
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 7fcd9aea58647cf090cc1db72a843bdf22d6d34b..c6cb7a58e12ad1a11b790aee83bdb45efbe93a6c 100644 (file)
@@ -40,7 +40,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=ec000000.nor"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=ec000000.nor:128k(dtb),6016k(kernel),57088k(fs),1m(vsc7385-firmware),1280k(u-boot)"
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index ac0af802157d7db9c98edb3162c6702c85beedd2..848ca279aa25b2d4189bcc5f6310b8354a1f728c 100644 (file)
@@ -41,7 +41,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=ec000000.nor"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=ec000000.nor:128k(dtb),6016k(kernel),57088k(fs),1m(vsc7385-firmware),1280k(u-boot)"
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 8222ad3a26f475cb203c98f890814e3851a988c1..5377df34ce12a035444fcec956f2397099e79311 100644 (file)
@@ -30,7 +30,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=ec000000.nor"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=ec000000.nor:128k(dtb),6016k(kernel),57088k(fs),1m(vsc7385-firmware),1280k(u-boot)"
 CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 8be649f40459b889e67e3baf668b364a0ea8900d..d03cfc0016b8e3338b3f7be56c0d7a03e2067c6e 100644 (file)
@@ -44,7 +44,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=fef000000.nor"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=fef000000.nor:256k(vsc7385-firmware),256k(dtb),4608k(kernel),9728k(fs),256k(qe-ucode-firmware),1280k(u-boot)"
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 0a5871289a3384011dc20c4a1785547e45e7353c..a086c527ac6c652efa1bfc1dcd409551e8823001 100644 (file)
@@ -42,7 +42,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=fef000000.nor"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=fef000000.nor:256k(vsc7385-firmware),256k(dtb),4608k(kernel),9728k(fs),256k(qe-ucode-firmware),1280k(u-boot)"
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 850dd3222d2abec40d673241302b136729e18891..2ff094c165618751d57e41f9749e6a31a35c2c06 100644 (file)
@@ -43,7 +43,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=fef000000.nor"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=fef000000.nor:256k(vsc7385-firmware),256k(dtb),4608k(kernel),9728k(fs),256k(qe-ucode-firmware),1280k(u-boot)"
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index f7e7fd83dc63db231faf05577297ccbbd7c12429..72c79d77bfacfc2be488d995ce78b449524b6444 100644 (file)
@@ -32,7 +32,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=fef000000.nor"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=fef000000.nor:256k(vsc7385-firmware),256k(dtb),4608k(kernel),9728k(fs),256k(qe-ucode-firmware),1280k(u-boot)"
 CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index fdb0a34a453557db34a28d159282a0f31add4df6..0ee7a35bee3d3ab23f716976fa4a096e7a2e9c77 100644 (file)
@@ -43,7 +43,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=ef000000.nor"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=ef000000.nor:256k(vsc7385-firmware),256k(dtb),4608k(kernel),9728k(fs),256k(qe-ucode-firmware),1280k(u-boot)"
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 815f43540432f0a10d04b85eb580bfb2be226e85..4c49da3a7cd4365a61eb3d04d506fb74c356f6e0 100644 (file)
@@ -41,7 +41,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=ef000000.nor"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=ef000000.nor:256k(vsc7385-firmware),256k(dtb),4608k(kernel),9728k(fs),256k(qe-ucode-firmware),1280k(u-boot)"
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 71c00d5bc2414a2efee3a16f460d7f6592473da0..ac8c9b2669d794860062bec0f9668b7e0c7dcb37 100644 (file)
@@ -42,7 +42,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=ef000000.nor"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=ef000000.nor:256k(vsc7385-firmware),256k(dtb),4608k(kernel),9728k(fs),256k(qe-ucode-firmware),1280k(u-boot)"
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index e1c69e1a8d4abca345bb9291eee18170f0bf9c51..c831333b928f643e71ea781ad6bf290aa3eff575 100644 (file)
@@ -31,7 +31,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=ef000000.nor"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=ef000000.nor:256k(vsc7385-firmware),256k(dtb),4608k(kernel),9728k(fs),256k(qe-ucode-firmware),1280k(u-boot)"
 CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 4c36dc594c2a6cd5da89e598748df115cadfe5d3..a28d506a600cc73b3753d9ea92e62b687d2edd5b 100644 (file)
@@ -42,7 +42,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=fe8000000.nor"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:48m(ramdisk),14m(diagnostic),2m(dink),6m(kernel),58112k(fs),512k(dtb),768k(u-boot)"
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_FLASH_CFI_MTD=y
index d09da905d4dcc13ee31cc1a0976d31c3f30fd92d..5e49b03726056a7f3eb25156835c3a06e2e4c090 100644 (file)
@@ -40,7 +40,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=fe8000000.nor"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:48m(ramdisk),14m(diagnostic),2m(dink),6m(kernel),58112k(fs),512k(dtb),768k(u-boot)"
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_FLASH_CFI_MTD=y
index 886147c00ff1ebfbb513e13e4d853658277a317b..cf1b6a040847eb068331fdef086243e4ed298571 100644 (file)
@@ -41,7 +41,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=fe8000000.nor"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:48m(ramdisk),14m(diagnostic),2m(dink),6m(kernel),58112k(fs),512k(dtb),768k(u-boot)"
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_FLASH_CFI_MTD=y
index f0282e20e71f15ebc9c3e01223354739dd0656d5..e1fb283959b943034e955832a48e8f05b14f45ad 100644 (file)
@@ -30,7 +30,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=fe8000000.nor"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:48m(ramdisk),14m(diagnostic),2m(dink),6m(kernel),58112k(fs),512k(dtb),768k(u-boot)"
 CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_FLASH_CFI_MTD=y
index 128cef8d41ca05e3d60f032ac79bcc42c9aae569..c69ae0135b3b6b94811224952c4ba4329674357e 100644 (file)
@@ -41,7 +41,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=e8000000.nor"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=e8000000.nor:48m(ramdisk),14m(diagnostic),2m(dink),6m(kernel),58112k(fs),512k(dtb),768k(u-boot)"
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_FLASH_CFI_MTD=y
index 53cffcd97dfa0b1eb3fc293a70906455f5be298b..dbf1872f626e356b3d4bd44345b1f1cc3df750f7 100644 (file)
@@ -39,7 +39,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=e8000000.nor"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=e8000000.nor:48m(ramdisk),14m(diagnostic),2m(dink),6m(kernel),58112k(fs),512k(dtb),768k(u-boot)"
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_FLASH_CFI_MTD=y
index b640f8f5ede0bdb1cfc2948bb53041640c0c15b8..2c0546100afe48ed8161e65501b72d337c27e030 100644 (file)
@@ -40,7 +40,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=e8000000.nor"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=e8000000.nor:48m(ramdisk),14m(diagnostic),2m(dink),6m(kernel),58112k(fs),512k(dtb),768k(u-boot)"
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_FLASH_CFI_MTD=y
index 700959a685c7be673c99e1e6cab4e1db41424ce5..3449838653d543e4e5ca404c86c903ece38c7868 100644 (file)
@@ -29,7 +29,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=e8000000.nor"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=e8000000.nor:48m(ramdisk),14m(diagnostic),2m(dink),6m(kernel),58112k(fs),512k(dtb),768k(u-boot)"
 CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_FLASH_CFI_MTD=y
index 7f01310fe1406b7359352590cbda4923c10bfd30..e16c3858483529bb75374c12855b63f02b525742 100644 (file)
@@ -44,7 +44,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=fef000000.nor"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=fef000000.nor:256k(vsc7385-firmware),256k(dtb),4608k(kernel),9984k(fs),1280k(u-boot)"
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index f78af0d620a8f4eff8a3638114ddb8701da48e5d..fb78b202e96b0df5b1e4230ab5b7d8b11c2ca2b4 100644 (file)
@@ -42,7 +42,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=fef000000.nor"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=fef000000.nor:256k(vsc7385-firmware),256k(dtb),4608k(kernel),9984k(fs),1280k(u-boot)"
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index cdc2835e9ac249510396b6d9deca5934de44ccd2..e45381427767b59071d84dec1e9db572f0279c44 100644 (file)
@@ -43,7 +43,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=fef000000.nor"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=fef000000.nor:256k(vsc7385-firmware),256k(dtb),4608k(kernel),9984k(fs),1280k(u-boot)"
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 96d59625ecafa6002af7d0b127d4a4786614535c..2d7b823eb350162561c84d2189c5486f77af7613 100644 (file)
@@ -32,7 +32,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=fef000000.nor"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=fef000000.nor:256k(vsc7385-firmware),256k(dtb),4608k(kernel),9984k(fs),1280k(u-boot)"
 CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 10cd5c55e96efe5a40e0f96cbf5ccc0a0bb3e4ac..964f21d7ab451c47d49d1b52118a9b07b71a7853 100644 (file)
@@ -43,7 +43,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=ef000000.nor"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=ef000000.nor:256k(vsc7385-firmware),256k(dtb),4608k(kernel),9984k(fs),1280k(u-boot)"
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index da780a077f6811e8ee4af592232ad84e807ba07d..784262e447d19c0a94e6e259fb22cebd0abcb15b 100644 (file)
@@ -41,7 +41,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=ef000000.nor"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=ef000000.nor:256k(vsc7385-firmware),256k(dtb),4608k(kernel),9984k(fs),1280k(u-boot)"
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 3b1c53f4980d8c8eaf744492c80f3d06b3766701..647009750d977f6be0c44e3b6887f27b25830409 100644 (file)
@@ -42,7 +42,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=ef000000.nor"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=ef000000.nor:256k(vsc7385-firmware),256k(dtb),4608k(kernel),9984k(fs),1280k(u-boot)"
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 35c6bdd638f6de761788e4c775474f4dd0ee1344..7e905dcf9ccd18182ba20a6235ccc7cd2f64eceb 100644 (file)
@@ -31,7 +31,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=ef000000.nor"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=ef000000.nor:256k(vsc7385-firmware),256k(dtb),4608k(kernel),9984k(fs),1280k(u-boot)"
 CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index be034abdcd4a21f52a5e9cbf1ffde9ab32c0034e..22feb6fca711517f9b3cfe2b477762b3a9ef2581 100644 (file)
@@ -42,7 +42,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),9
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index f1df7424974bea75492aa4dab0a78c2de61cc1d9..de99d16636864b01c235738c1e67b24209db02d5 100644 (file)
@@ -42,7 +42,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),9
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 473bb1548a1b9cb1aa37764d3cfeb6122216f6c4..60c8a4782be127b1312fd6693696fd724130f61f 100644 (file)
@@ -32,7 +32,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=fe8000000.nor,nand0=fff800000.flash,spi0=spife110000
 CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),96m(fs),-(user);fff800000.flash:1m(uboot),5m(kernel),128k(dtb),96m(fs),-(user);spife110000.0:1m(uboot),5m(kernel),128k(dtb),-(user)"
 CONFIG_DM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 18866d0336183e54184fbc33d285e296c254c25f..b0434ea5d0439dbff1fc36f2765a104088844306 100644 (file)
@@ -43,7 +43,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),9
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index f4434ab782ba2675f57601e8d90abf71f7b371ac..7a57a759084f16a83a162ab115685dd6d12ac279 100644 (file)
@@ -31,7 +31,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),9
 CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 55cceae8adbe794cdd4aea5b1265de7c32984874..c38fee07572d307d4012d90aa9a032a399fdb1da 100644 (file)
@@ -33,7 +33,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=fe8000000.nor,nand0=fff800000.flash,spi0=spife110000
 CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),96m(fs),-(user);fff800000.flash:2m(uboot),9m(kernel),128k(dtb),96m(fs),-(user);spife110000.0:2m(uboot),9m(kernel),128k(dtb),-(user)"
 CONFIG_DM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 60f2b867ea6cd9b79464e88f3fe35d5fc5894b1a..9a9a25b1747ae0d2f5162ecc112e69d6a4bb9ecb 100644 (file)
@@ -32,7 +32,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),9
 CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 755ecff6b113c57db21a7a748e585ed4e85e8413..fa031a988f249d50fb27b44ed812b36844e47042 100644 (file)
@@ -44,7 +44,6 @@ CONFIG_ENV_IS_IN_NAND=y
 CONFIG_FSL_CAAM=y
 CONFIG_SYS_FSL_DDR3=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index b02a5616be5a93b596d94773603f248530ab9be7..be461fc8ad8fc5e2d29ddd6c1993c9cade9b8592 100644 (file)
@@ -44,7 +44,6 @@ CONFIG_ENV_IS_IN_MMC=y
 CONFIG_FSL_CAAM=y
 CONFIG_SYS_FSL_DDR3=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 4876aa66008108a1c637dfc009b3a4f13f72559d..ecebd48e727b2fbaf239af9385c5102843d856e8 100644 (file)
@@ -34,7 +34,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),9
 CONFIG_DM=y
 CONFIG_SYS_FSL_DDR3=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 7c5e1efed6fc0b1f92696098fd4f3abb770351f4..8ad4d35f30246f5d0e85598a0d9df92e56d0afe4 100644 (file)
@@ -45,7 +45,6 @@ CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_FSL_CAAM=y
 CONFIG_SYS_FSL_DDR3=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index e530f188f68a394cef13135230a4345e7c17af20..23ed39e240d5787b1ad5169ed2cfb6aa23640a3d 100644 (file)
@@ -33,7 +33,6 @@ CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_FSL_CAAM=y
 CONFIG_SYS_FSL_DDR3=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 6a37a7ff8321db22d7ec1690c0a6dbaa9bba888a..294d1267720dd932930cca9a6ec0afd4359f61a3 100644 (file)
@@ -44,7 +44,6 @@ CONFIG_ENV_IS_IN_NAND=y
 CONFIG_FSL_CAAM=y
 CONFIG_SYS_FSL_DDR3=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index dce5bdc21e5418175b613316d5e3f0f2e3f7c733..e31578c6b5e183fdee7f17263c3616e8c2265bba 100644 (file)
@@ -44,7 +44,6 @@ CONFIG_ENV_IS_IN_MMC=y
 CONFIG_FSL_CAAM=y
 CONFIG_SYS_FSL_DDR3=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 84bdffa6fc0133566285835a0975d493d7666087..4269133c8ccb0324213676afe4c50c05ae693568 100644 (file)
@@ -34,7 +34,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),9
 CONFIG_DM=y
 CONFIG_SYS_FSL_DDR3=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index bf28b135617f59880dc8156b35bee9acb29e0152..148eef0719e0c6b3872ec1abb0cc47db69507eeb 100644 (file)
@@ -45,7 +45,6 @@ CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_FSL_CAAM=y
 CONFIG_SYS_FSL_DDR3=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index a666e7e77995a4326f39667969ef86101cef5420..cb1f2640aac51c3d20a0e0f9b45e54490a68dbf7 100644 (file)
@@ -33,7 +33,6 @@ CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_FSL_CAAM=y
 CONFIG_SYS_FSL_DDR3=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index bef7af22a4a5ea51c10544120a17aff141628614..637fa078363e76174bd76708045e55631928a220 100644 (file)
@@ -41,7 +41,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),9
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 0720711b6231fa8545de4b2fb00fd48910c3eb31..88f3c287ece0959cb07e25c28c20f3e55975c5c7 100644 (file)
@@ -41,7 +41,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),9
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 1a29efe22b7c8dd68d01755987a433656502e9eb..030f72a1d5e41b0d8537be4f416faf61cb3cc4da 100644 (file)
@@ -31,7 +31,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=fe8000000.nor,nand0=fff800000.flash,spi0=spife110000
 CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),96m(fs),-(user);fff800000.flash:2m(uboot),9m(kernel),128k(dtb),96m(fs),-(user);spife110000.0:2m(uboot),9m(kernel),128k(dtb),-(user)"
 CONFIG_DM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 27f867289dcaac6e2ee495ea5907bc2e8899bd6d..7adf65cc8a1ae9a7faf593cf9381fe0e163ad38f 100644 (file)
@@ -42,7 +42,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),9
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index a8c6708006f192aa2f02754b780b8e239e750d96..c9032c24fedeac2891538e0ac2262324caaf9088 100644 (file)
@@ -30,7 +30,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),9
 CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 32a2857486dffd7cb66223ee34a3123033a59113..fd2c74f4d8b1928a6153a2e04753f7a5e83a20b3 100644 (file)
@@ -33,7 +33,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),9
 CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index da9d2d1a00a04ef90d6eaf8f0bbebda025c1ab31..719a1e459ade9ead859ad0212f30c75c792e2c58 100644 (file)
@@ -35,7 +35,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),9
 CONFIG_DM=y
 CONFIG_SYS_FSL_DDR3=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 193e6db436ab865f5b4501190f1e71178fdfac5b..81454ab735e9d8c5d57051a686c15d5acec2e633 100644 (file)
@@ -34,7 +34,6 @@ CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_FSL_CAAM=y
 CONFIG_SYS_FSL_DDR3=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 5c60dc7e5a4262c3d5834beb18fd93d25a3bcf7f..3287d1b5953b736a87407bb200656305fd8c7630 100644 (file)
@@ -42,7 +42,6 @@ CONFIG_ENV_IS_IN_NAND=y
 CONFIG_FSL_CAAM=y
 CONFIG_SYS_FSL_DDR3=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 69c8a24c8857ee9e373416290cf112990061b674..57d214da3b26c70f3850ff9d381bded3d4c555b3 100644 (file)
@@ -42,7 +42,6 @@ CONFIG_ENV_IS_IN_MMC=y
 CONFIG_FSL_CAAM=y
 CONFIG_SYS_FSL_DDR3=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index b4cfb47fa853d6c0776bd67d009cd5a6294ca59c..62d1c3068b4cbd7115d07685ac06236d47ad9010 100644 (file)
@@ -32,7 +32,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),9
 CONFIG_DM=y
 CONFIG_SYS_FSL_DDR3=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 3f06483475ffd41b6f24473a49d5123fc90b5b61..c086a9fe99a3cb4c7fe49ac71396e1fb646de845 100644 (file)
@@ -43,7 +43,6 @@ CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_FSL_CAAM=y
 CONFIG_SYS_FSL_DDR3=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index a1e800d5a3833b1ade4134fb318a1807eb1ef3f7..0209fb87472660971ddaa1128550b06465b5e753 100644 (file)
@@ -31,7 +31,6 @@ CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_FSL_CAAM=y
 CONFIG_SYS_FSL_DDR3=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index d3f4367b26e72396ed6e11daad30bcd4dd58e5a8..0bb15cc37204c75b4406782350005fe2e252121e 100644 (file)
@@ -42,7 +42,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),9
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 894985ae140e487b142c8223e33a659fab5901f6..1f7cf60695f76d08f00ddbacf88735b70f6b3625 100644 (file)
@@ -42,7 +42,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),9
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 5c9d8e8a55ec0606c75af67d7bdb1e97ac7d4230..ef9b243446382a475f28e8cb05aed231d2046f3f 100644 (file)
@@ -32,7 +32,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=fe8000000.nor,nand0=fff800000.flash,spi0=spife110000
 CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),96m(fs),-(user);fff800000.flash:2m(uboot),9m(kernel),128k(dtb),96m(fs),-(user);spife110000.0:2m(uboot),9m(kernel),128k(dtb),-(user)"
 CONFIG_DM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index d5838524d839a500f2cf8cbe90db44df5b1f6af5..a2a7d67c80329a8cbf2298da4c472ad859a2880f 100644 (file)
@@ -43,7 +43,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),9
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 6b03b6bfe0335cc67cf9fb790cbbfdf19748eb97..5d600225bdae20fe8134b4ad1d82cca630254bac 100644 (file)
@@ -31,7 +31,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),9
 CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 61ada5d3b7b714b63cce7b53763ec2c396c4cfa8..245abd225d947754ea883881a97f27c3cedef1b9 100644 (file)
@@ -47,7 +47,6 @@ CONFIG_DM=y
 CONFIG_SPL_DM=y
 CONFIG_SYS_FSL_DDR3=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 35949207fc8a398b29046eb396ba48c9b8a12d89..0d727143a040c5c8f4a2348270a32853909a3bca 100644 (file)
@@ -44,7 +44,6 @@ CONFIG_ENV_IS_IN_NAND=y
 CONFIG_FSL_CAAM=y
 CONFIG_SYS_FSL_DDR3=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index fd8f0606704e260c5e1a8e734c8b146cce398530..4b2d1828ef48f598edabe249728994dda7823801 100644 (file)
@@ -44,7 +44,6 @@ CONFIG_ENV_IS_IN_MMC=y
 CONFIG_FSL_CAAM=y
 CONFIG_SYS_FSL_DDR3=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index c7157d5531645dc614752188aaa94f86394ef009..8c36654544e9e9b844d0b5da321e5ffef50b2134 100644 (file)
@@ -45,7 +45,6 @@ CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_FSL_CAAM=y
 CONFIG_SYS_FSL_DDR3=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index d953034cc03e7bb00234cbd34e18af1b156ce758..ec816e732bce2b90bee746bbd64bd905481af129 100644 (file)
@@ -33,7 +33,6 @@ CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_FSL_CAAM=y
 CONFIG_SYS_FSL_DDR3=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 3a67c3f28771e7463e4cd6879e82a67246f1b4dd..2e40362e9eaa17db5ebaacb88e225979afcc235c 100644 (file)
@@ -31,7 +31,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),9
 CONFIG_DM=y
 CONFIG_SYS_FSL_DDR3=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 329e57a959d3178ff3a44c9b4b92ebb2ed8bd24b..515dec4c5538ea35751fe9b2e8d56d2e45f3c19d 100644 (file)
@@ -30,7 +30,6 @@ CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_FSL_CAAM=y
 CONFIG_SYS_FSL_DDR3=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 4dcd9e26a6c3e5042a2edb23430f1a90d6cd01bb..948a05af899e7abdfacd86a479d462d07af02fca 100644 (file)
@@ -40,7 +40,6 @@ CONFIG_DEFAULT_DEVICE_TREE="t2080qds"
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 9b523870b544858a21e1af389febe99827b27d49..30e87df3bb8796baa45ffcc19e8dae6b4f207078 100644 (file)
@@ -40,7 +40,6 @@ CONFIG_DEFAULT_DEVICE_TREE="t2080qds"
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 6e5e477269adfc3c2e6177bd151fbcdf13fb7868..9e155ee6aef59cbd4e09070cfb6228a822adb6be 100644 (file)
@@ -28,7 +28,6 @@ CONFIG_MTDIDS_DEFAULT="nor0=fe8000000.nor,nand0=fff800000.flash,spi0=spife110000
 CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),96m(fs),-(user);fff800000.flash:1m(uboot),5m(kernel),128k(dtb),96m(fs),-(user);spife110000.0:1m(uboot),5m(kernel),128k(dtb),-(user)"
 CONFIG_DM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 602f6724ba7cc7ea5c6a262e4ff2c1d2bd33a38c..0cccb3a85d845970731249af11c0370ceaf7b089 100644 (file)
@@ -41,7 +41,6 @@ CONFIG_DEFAULT_DEVICE_TREE="t2080qds"
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 676c9f74888396676d76d1fd200f86eea05b3658..79cf4424b4a17c9b7add00c32d1b92a5c201d40e 100644 (file)
@@ -30,7 +30,6 @@ CONFIG_DEFAULT_DEVICE_TREE="t2080qds"
 CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 38b7bf706962d803a98defd9ee5e0ca84d21522e..4a5a56e5f4412d420149a2daf501f3a52e57f11f 100644 (file)
@@ -40,7 +40,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),9
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index c5621d485e82e5f5e6c0e3ea0943dfdfd303fc02..dfe5e8bf0c8c62ad1bb72772f8def2ca26fdb244 100644 (file)
@@ -40,7 +40,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),9
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 4887433cb1672b238edc7286b59b9c67105692b0..5ec495aae4442c745f6c2efa626f7316618af66c 100644 (file)
@@ -30,7 +30,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),9
 # CONFIG_CMD_IRQ is not set
 CONFIG_DM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 3169d018c7406f41bfaf06733aaa81ed068c5124..6d6d6408e5ca6218cd5d89bd2159719c56006e3b 100644 (file)
@@ -41,7 +41,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),9
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index e991734729e8cbb088f3adbfc3dd496296a79072..4f155dee23477e25a06a5a287175ca95cee14184 100644 (file)
@@ -29,7 +29,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),9
 CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 56792e17927d92de867af105053bc2e080c3491d..d38a1e371634f7145aae5b68d42e072fd5330b0f 100644 (file)
@@ -38,7 +38,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),9
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 2492f3da841c8343ce09c6137514024dfefe6aec..4dd0e909d38ab1b6063dc875a590c724e27a714d 100644 (file)
@@ -38,7 +38,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),9
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index e7e90107cee2c60260f6fbf6c182e74b92660e8f..6dc7d6db65580bd1c709f11ff5a0729cf7c6d0ba 100644 (file)
@@ -39,7 +39,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),9
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 15f7bc1600577a5ad0111134cfed90ad02d5ea6c..24b616b3c6f9822dd578adeb8631e11ba14ba5c6 100644 (file)
@@ -27,7 +27,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=fe8000000.nor:1m(uboot),5m(kernel),128k(dtb),9
 CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_FSL_CAAM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 081bb653ddd5d6079238835a6050cee9e21cc6e0..5ed6b5aa4a772676ef660db9c59490385175387f 100644 (file)
@@ -32,7 +32,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=ec000000.nor:256k(vsc7385-firmware),256k(dtb),
 CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_SATA_SIL3114=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD_DEVICE=y
 CONFIG_FLASH_CFI_DRIVER=y
index 7bdb096a6dac901cfd0a46a8b2c8cf549c4952a9..396ed5eaf2871d18673aafef191a5c09f8aa5ebb 100644 (file)
@@ -64,7 +64,6 @@ CONFIG_SH_MMCIF=y
 CONFIG_RENESAS_SDHI=y
 CONFIG_MTD=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
index 5ce8a5a59ca6b57184a300ad63e43df7cf5d68f4..a61b13b6fc933111ca761cc505dcb159cbbcba66 100644 (file)
@@ -35,6 +35,7 @@ CONFIG_CMD_SPI=y
 CONFIG_CMD_USB=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=omap2-nand.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=omap2-nand.0:128k(SPL),128k(SPL.backup1),128k(SPL.backup2),128k(SPL.backup3),1920k(u-boot),-(UBI)"
 CONFIG_CMD_UBI=y
@@ -46,7 +47,6 @@ CONFIG_NAND=y
 CONFIG_PHY_ADDR_ENABLE=y
 CONFIG_DRIVER_TI_CPSW=y
 CONFIG_MII=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_USB=y
index ec7f011b700d35feb1b7bfe70c04a2792eed34a6..90ccf9adfe18e272ee404becea5bc1700f12a192 100644 (file)
@@ -34,7 +34,6 @@ CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_DRIVER_TI_CPSW=y
 CONFIG_MII=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_USB=y
index 9f0a673fb1ac71775cd6bad2cb958a2e251586e6..d625599461f5bed4a9fea6a71a6aab09f450f9cb 100644 (file)
@@ -39,7 +39,6 @@ CONFIG_DM_ETH=y
 CONFIG_DRIVER_TI_CPSW=y
 CONFIG_PHY_GIGE=y
 CONFIG_MII=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_TIMER=y
index 2fc21842d5cfa03af98a80a907d554240c2bde63..b6cd49a469f4d51842a8f178b0b71f14f7615cbe 100644 (file)
@@ -43,7 +43,6 @@ CONFIG_DM_ETH=y
 CONFIG_DRIVER_TI_CPSW=y
 CONFIG_PHY_GIGE=y
 CONFIG_MII=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_TIMER=y
index 2ae706e9f991978fb75dd71cca543ed01a2e38db..10a935f0c0bbbd46ad310633d3999a455fb8f94f 100644 (file)
@@ -32,7 +32,6 @@ CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_DRIVER_TI_CPSW=y
 CONFIG_MII=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_USB=y
index 8999893d726126000473ade7d1518fe53d23f8a0..ec72538ddc0813b4d99ec2069beb01e8cfca7967 100644 (file)
@@ -40,7 +40,6 @@ CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_DRIVER_TI_CPSW=y
 CONFIG_MII=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_USB=y
index 781f6df91e1ff4fab08f9d0a0189e9202099063e..aa6e9665d2e4ddce82675919d63b267493c5a8d1 100644 (file)
@@ -50,7 +50,6 @@ CONFIG_DM_ETH=y
 CONFIG_DRIVER_TI_CPSW=y
 CONFIG_PHY_GIGE=y
 CONFIG_MII=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_TIMER=y
index 7c7a017a385dd65be0cdf1d2b91353a21e7aef4e..379b9580a211062a70f6c1f010ebd5b6bb99b298 100644 (file)
@@ -47,7 +47,6 @@ CONFIG_DM_ETH=y
 CONFIG_DRIVER_TI_CPSW=y
 CONFIG_PHY_GIGE=y
 CONFIG_MII=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_TIMER=y
index d782976975699f1c4cf3b716e5480f5f483121eb..16affb8a05ca033dad0c057d83a449e0276f5aad 100644 (file)
@@ -34,6 +34,7 @@ CONFIG_CMD_NAND=y
 CONFIG_CMD_SPI=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=omap2-nand.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=omap2-nand.0:512k(SPL),-(UBI)"
 CONFIG_CMD_UBI=y
@@ -45,7 +46,6 @@ CONFIG_NAND=y
 CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_DRIVER_TI_CPSW=y
 CONFIG_MII=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_FAT_WRITE=y
index 8a61d84096c8d5b1ba5357eca4048c23b3ef2530..065efca633e88a2797175e6b38ac3c5695ebe719 100644 (file)
@@ -48,7 +48,6 @@ CONFIG_SPL_DM_REGULATOR=y
 CONFIG_DM_REGULATOR_FIXED=y
 CONFIG_DM_REGULATOR_TPS65910=y
 CONFIG_CONS_INDEX=4
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 # CONFIG_USE_TINY_PRINTF is not set
 # CONFIG_EFI_LOADER is not set
index 44ade7329d18ef410919e9c8b2dc07c375e8f2b1..25e1a4f9437b2e9ddcb5008c8a3c3b7385a1530f 100644 (file)
@@ -39,7 +39,6 @@ CONFIG_MMC_OMAP_HS=y
 CONFIG_PHY_ADDR_ENABLE=y
 CONFIG_DRIVER_TI_CPSW=y
 CONFIG_MII=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_FAT_WRITE=y
index 846d3784364e42a8271eb73c1ed62ee07124a4a3..9ebfe5e7f5975fdfe5556d724d9f3580a7a57f27 100644 (file)
@@ -40,7 +40,6 @@ CONFIG_MMC_OMAP_HS=y
 CONFIG_PHY_ADDR_ENABLE=y
 CONFIG_DRIVER_TI_CPSW=y
 CONFIG_MII=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_FAT_WRITE=y
index df1f9cbb6430c149d7b4980bbeaf445700f0957a..064b3c355c563820561d334ce182270ca05be4c6 100644 (file)
@@ -41,7 +41,6 @@ CONFIG_MMC_OMAP_HS=y
 CONFIG_PHY_ADDR_ENABLE=y
 CONFIG_DRIVER_TI_CPSW=y
 CONFIG_MII=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_FAT_WRITE=y
index 942f0be61182b9b9b72a74f75f732b30a152ab87..dce83347322b312218fcfeaf14dae246bf1df20a 100644 (file)
@@ -38,7 +38,6 @@ CONFIG_MMC_OMAP_HS=y
 CONFIG_PHY_ADDR_ENABLE=y
 CONFIG_DRIVER_TI_CPSW=y
 CONFIG_MII=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_FAT_WRITE=y
index ead26732a02b94e50dc6776397a22638e1b1b658..e4e6adef194b922b13ba510120a9ddd9104b9923 100644 (file)
@@ -40,7 +40,6 @@ CONFIG_MMC_OMAP_HS=y
 CONFIG_PHY_ADDR_ENABLE=y
 CONFIG_DRIVER_TI_CPSW=y
 CONFIG_MII=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_FAT_WRITE=y
index ead26732a02b94e50dc6776397a22638e1b1b658..e4e6adef194b922b13ba510120a9ddd9104b9923 100644 (file)
@@ -40,7 +40,6 @@ CONFIG_MMC_OMAP_HS=y
 CONFIG_PHY_ADDR_ENABLE=y
 CONFIG_DRIVER_TI_CPSW=y
 CONFIG_MII=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_FAT_WRITE=y
index 399fdd6b8d0bae90b1c5851d0638628c73099a4f..a45fd3d1c5f50d818c7e3cb2266dd92765be0c4a 100644 (file)
@@ -43,7 +43,6 @@ CONFIG_BOOTCOUNT_LIMIT=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_DRIVER_TI_CPSW=y
 CONFIG_MII=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_FAT_WRITE=y
index e334030e5111fbfc8e46264a149da4ecf9ef36b1..882163f8c13afeb8cb8760d361338d49a5b0fc74 100644 (file)
@@ -29,6 +29,7 @@ CONFIG_CMD_NAND=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_CACHE=y
 # CONFIG_CMD_TIME is not set
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=omap2-nand.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=omap2-nand.0:512k(MLO),1920k(u-boot),256k(u-boot-env),8m(kernel),512k(dtb),-(rootfs)"
 CONFIG_CMD_UBI=y
@@ -47,11 +48,10 @@ CONFIG_SYS_NAND_U_BOOT_OFFS=0x80000
 CONFIG_SPL_NAND_SIMPLE=y
 CONFIG_MII=y
 CONFIG_DRIVER_TI_EMAC=y
-# CONFIG_TWL4030_POWER is not set
 CONFIG_PINCTRL=y
 CONFIG_PINCTRL_SINGLE=y
+# CONFIG_TWL4030_POWER is not set
 CONFIG_CONS_INDEX=3
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_USB=y
 CONFIG_USB_MUSB_HOST=y
index 9e7ffee9bb8ed1b2f3dd413bacb6fffc4d54f501..7601263be4715878c13c4d3e2c4ebf6e60de5611 100644 (file)
@@ -41,7 +41,6 @@ CONFIG_DRIVER_TI_CPSW=y
 CONFIG_PHY_GIGE=y
 CONFIG_MII=y
 CONFIG_DM_SERIAL=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_TI_QSPI=y
 CONFIG_TIMER=y
index 97ad98466cd898a3df8940b4b5361bd96cbdcc25..2d54d1aaf0fda9c60816ee947ed4c63e4d0a45fc 100644 (file)
@@ -42,7 +42,6 @@ CONFIG_DRIVER_TI_CPSW=y
 CONFIG_PHY_GIGE=y
 CONFIG_MII=y
 CONFIG_DM_SERIAL=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_TI_QSPI=y
 CONFIG_TIMER=y
index 319996347481922730392a86c0b9c3bc716d9e52..27138335441942ef44f2eb735b556c37d2ccff1d 100644 (file)
@@ -55,7 +55,6 @@ CONFIG_DRIVER_TI_CPSW=y
 CONFIG_PHY_GIGE=y
 CONFIG_MII=y
 CONFIG_DM_SERIAL=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_TI_QSPI=y
 CONFIG_TIMER=y
index 949ca4df362d8b530e86a78bd4367068c9883677..aaf8d10fecb6b010dc369b0b27b153ce337191f6 100644 (file)
@@ -52,7 +52,6 @@ CONFIG_DRIVER_TI_CPSW=y
 CONFIG_PHY_GIGE=y
 CONFIG_MII=y
 CONFIG_DM_SERIAL=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_TI_QSPI=y
 CONFIG_TIMER=y
index da347f3a28b3a16c6a00602e1ea31bbd1f55ee78..5242ab6f9f667fd23ed74b6c558d186c273eef58 100644 (file)
@@ -66,7 +66,6 @@ CONFIG_PMIC_PALMAS=y
 CONFIG_DM_REGULATOR=y
 CONFIG_DM_REGULATOR_PALMAS=y
 CONFIG_DM_SERIAL=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
 CONFIG_TI_QSPI=y
index 6cf4f9a7103638c09a9f3eed6fa20c3f2670d176..be4aa0f316ccd8759ffef715eb70fdf277af81c1 100644 (file)
@@ -69,7 +69,6 @@ CONFIG_PMIC_PALMAS=y
 CONFIG_DM_REGULATOR=y
 CONFIG_DM_REGULATOR_PALMAS=y
 CONFIG_DM_SERIAL=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
 CONFIG_TI_QSPI=y
index f2a4e95a084fd617c3a7c1359fa97c04a44b738c..e482f48e87dc1b3231d4d9850aae2f36781eb98f 100644 (file)
@@ -31,6 +31,7 @@ CONFIG_CMD_CACHE=y
 CONFIG_CMD_DATE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=mxc_nand.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=mxc_nand.0:1M(u-boot)ro,512K(env),512K(env2),512K(firmware),512K(dtb),5M(kernel),-(rootfs)"
 CONFIG_CMD_UBI=y
index 352e0f286d20a57d2b9b2aa652a3cf9531db8709..baca2a662403f2e3e20c130662368d4760f52a4c 100644 (file)
@@ -25,6 +25,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=gpmi-nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=gpmi-nand:128k(bootstrap),1024k(boot),768k(env),-(root)"
 CONFIG_CMD_UBI=y
index c55e39c9970825f2f1e25597ee38d62d26bd1b81..db5008662d8c37e95d0baa6f6643ed25b95b8630 100644 (file)
@@ -31,6 +31,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_CMD_UBI=y
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_FSL_ESDHC=y
index 95c30632c1c1c57318b129529446d20a6c62f01a..9a5843b49e500df6f1341a2010547112ca6f495c 100644 (file)
@@ -31,6 +31,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_CMD_UBI=y
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_FSL_ESDHC=y
index 4082b121cd32dabb985e23abc74c9290e4cea53f..42611228df219e88b88f146a13036b94a0941263 100644 (file)
@@ -31,6 +31,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_CMD_UBI=y
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_FSL_ESDHC=y
index b5d8f48fce106ca42af1eb35de8afe222022174f..6b2cfe9c4226fa37f2c590e3fed53eb91facd330 100644 (file)
@@ -39,7 +39,6 @@ CONFIG_DM_GPIO=y
 CONFIG_AT91_GPIO=y
 CONFIG_DM_MMC=y
 CONFIG_GENERIC_ATMEL_MCI=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_NAND=y
 CONFIG_NAND_ATMEL=y
 CONFIG_DM_SPI_FLASH=y
index 3f86bc54f076f46eff7e69c6896cb0a7d179a30a..354c24ff16eb5242b40c9a5ef1f79040aca3b7b9 100644 (file)
@@ -39,7 +39,6 @@ CONFIG_DM_GPIO=y
 CONFIG_AT91_GPIO=y
 CONFIG_DM_MMC=y
 CONFIG_GENERIC_ATMEL_MCI=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_NAND_ATMEL=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
index a6e8095c5ac677a50ff148da86128dfde45bd3ce..63889355bfc8ce43f5dca95fc28c837caf2af4a7 100644 (file)
@@ -39,7 +39,6 @@ CONFIG_DM_GPIO=y
 CONFIG_AT91_GPIO=y
 CONFIG_DM_MMC=y
 CONFIG_GENERIC_ATMEL_MCI=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_NAND=y
 CONFIG_NAND_ATMEL=y
 CONFIG_DM_SPI_FLASH=y
index ef84aa276b3881b8d9323442872925d986dd229c..dc1350971505278766572e7e9e6a5bbbf2927f7d 100644 (file)
@@ -29,6 +29,7 @@ CONFIG_CMD_USB=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_CMD_UBI=y
 CONFIG_OF_CONTROL=y
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9g35ek"
index a44ab6bd9064baf5489867d69fbc015ffdae9b1b..ff86f93e61602de935fdf746c7f0e80b3ac1b577 100644 (file)
@@ -29,6 +29,7 @@ CONFIG_CMD_USB=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_CMD_UBI=y
 CONFIG_OF_CONTROL=y
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9g35ek"
index ac8111354358fafa41635fbed2ce3f3cae198ed7..b2b3ddb6d9eebff4bd4a538648db82cbdf5961ce 100644 (file)
@@ -29,6 +29,7 @@ CONFIG_CMD_USB=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_CMD_UBI=y
 CONFIG_OF_CONTROL=y
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9g35ek"
index e80b54edece805d8b0ff1ca62dc67a0fef75f91e..d0eebcdc75b5490b305f48e8e62446077167dad5 100644 (file)
@@ -29,6 +29,7 @@ CONFIG_CMD_USB=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_CMD_UBI=y
 CONFIG_OF_CONTROL=y
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9g35ek"
index e3b6ed472c3a89b111072f354a7b6981ec23cf06..263694c58fac561999cec99b1ef8d2f85a4a0c21 100644 (file)
@@ -8,10 +8,9 @@ CONFIG_FIT_SIGNATURE=y
 CONFIG_BOOTDELAY=1
 CONFIG_HUSH_PARSER=y
 CONFIG_SYS_PROMPT="U-Boot>"
+CONFIG_EFI_PARTITION=y
 CONFIG_OF_PRIOR_STAGE=y
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_BCMSTB=y
-CONFIG_CONS_INDEX=1
-CONFIG_EFI_LOADER=n
-CONFIG_EFI_PARTITION=y
+# CONFIG_EFI_LOADER is not set
index cb1522604db3f9c877a7b34f29f400274236582b..a09ac5cc2b11a34035ee1e8bd76e5159e8471e0d 100644 (file)
@@ -12,10 +12,9 @@ CONFIG_OF_PRIOR_STAGE=y
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_BCMSTB=y
-CONFIG_CONS_INDEX=1
-CONFIG_EFI_LOADER=n
-CONFIG_SPI=y
+CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
+CONFIG_SPI=y
 CONFIG_DM_SPI=y
-CONFIG_DM_SPI_FLASH=y
 CONFIG_BCMSTB_SPI=y
+# CONFIG_EFI_LOADER is not set
index 0df6e44bda80fdf237fc70ebc597f97e28d23c80..89c777872a4d87e04dba867e47be7d25b02e0ecd 100644 (file)
@@ -51,7 +51,6 @@ CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_DRIVER_TI_CPSW=y
 CONFIG_MII=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_USB=y
index b42ecbddd060a2d3da97582fe9096ba42bdb2a21..e3dc88b00587eaba42b3629d9b27894682316f3e 100644 (file)
@@ -51,7 +51,6 @@ CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_DRIVER_TI_CPSW=y
 CONFIG_MII=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_USB=y
index 6ab93656abf7fa4627b0f7fe607da8425def4a41..3296a74a0ae23201c08997993f18a9dacbb6beb3 100644 (file)
@@ -81,7 +81,6 @@ CONFIG_DM_ETH=y
 CONFIG_DRIVER_TI_CPSW=y
 # CONFIG_NETDEVICES is not set
 CONFIG_DM_SERIAL=y
-CONFIG_SYS_NS16550=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_MUSB_HOST=y
index 11b79ad524f955cd5fbde35f81d0611a7c34be64..e03eb37dfe298df54b2fa63c9c107720bc7c6246 100644 (file)
@@ -85,7 +85,6 @@ CONFIG_DM_ETH=y
 CONFIG_DRIVER_TI_CPSW=y
 # CONFIG_NETDEVICES is not set
 CONFIG_DM_SERIAL=y
-CONFIG_SYS_NS16550=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_MUSB_HOST=y
index a4adb78a9c8299b8894dc4eab2e84841b5668b78..2fa5dacd7a029308ec5c183805819a9609b70624 100644 (file)
@@ -92,7 +92,6 @@ CONFIG_DM_ETH=y
 CONFIG_DRIVER_TI_CPSW=y
 # CONFIG_NETDEVICES is not set
 CONFIG_DM_SERIAL=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
 CONFIG_OMAP3_SPI=y
index 5c64d6970226333d0243986fd663777cb83399e7..dc1245f1bfbc575b03c7366331ed94ea90503712 100644 (file)
@@ -32,7 +32,6 @@ CONFIG_MMC_OMAP_HS=y
 CONFIG_NAND=y
 CONFIG_SPL_NAND_SIMPLE=y
 CONFIG_CONS_INDEX=2
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_FAT_WRITE=y
index 803e2bd92072d32e53d1be6cbfa98cb68836f6dc..b6cde09d6f3b6443d4ba52948aa56c06321e2c32 100644 (file)
@@ -36,7 +36,6 @@ CONFIG_MMC_OMAP_HS=y
 CONFIG_NAND=y
 CONFIG_DRIVER_TI_CPSW=y
 CONFIG_MII=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_USB=y
index 2c51a2f7f79c5d15b34ea75a274c91a70d968303..13b90a13f6cc5e488a8c18bcf349f906d3105739 100644 (file)
@@ -73,7 +73,6 @@ CONFIG_SPL_DM_RTC=y
 CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_SPL_TIMER=y
-CONFIG_TIMER_EARLY=y
 CONFIG_TPM_TIS_LPC=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_KEYBOARD=y
index 9a0a85a442fb2d7f123f502ba5ae34e9db7c7f7a..b90aae610b2b408c73cd10c485bf3801c66206bc 100644 (file)
@@ -54,7 +54,6 @@ CONFIG_CROS_EC=y
 CONFIG_CROS_EC_LPC=y
 CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
-CONFIG_TIMER_EARLY=y
 CONFIG_TPM_TIS_LPC=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_KEYBOARD=y
index f7098bc8f8ba3e33757e63ad4010d7f9e958f251..4ec74b27cd129b9c9e9a84a06211015d5fd20039 100644 (file)
@@ -53,7 +53,6 @@ CONFIG_DWC_AHSATA=y
 CONFIG_DM_KEYBOARD=y
 CONFIG_DM_MMC=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_NAND=y
 CONFIG_NAND_MXS=y
 CONFIG_SPI_FLASH=y
index 57f7cececc94c75f29b77c36a0113df19bd87ae8..134b093e542d8dd2bdf1a9cc96519f48143b0eb1 100644 (file)
@@ -47,6 +47,5 @@ CONFIG_MMC_OMAP_HS=y
 CONFIG_NAND=y
 CONFIG_DRIVER_TI_CPSW=y
 CONFIG_MII=y
-CONFIG_SYS_NS16550=y
 CONFIG_FAT_WRITE=y
 CONFIG_OF_LIBFDT=y
index b2452ff595637e36a3fcc51c5160f575bdd0ba73..0901fea638851620cea743da90c1cb209cac658c 100644 (file)
@@ -40,7 +40,6 @@ CONFIG_LED_STATUS_STATE=2
 CONFIG_LED_STATUS_BOOT_ENABLE=y
 CONFIG_LED_STATUS_BOOT=0
 CONFIG_MMC_OMAP_HS=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_NAND=y
 CONFIG_MII=y
 CONFIG_SMC911X=y
index bb53e104f546c8f33cf4b48a5fd63e69e3a495f8..f1fe2d058d353399442eb85ed4002fc71af01156 100644 (file)
@@ -41,7 +41,6 @@ CONFIG_LED_STATUS_BOOT_ENABLE=y
 CONFIG_LED_STATUS_BOOT=0
 CONFIG_TWL4030_LED=y
 CONFIG_MMC_OMAP_HS=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_NAND=y
 CONFIG_SPL_NAND_SIMPLE=y
 CONFIG_SMC911X=y
index 56ea425c76b5be0d5596ed9b6e5f3ee5446180c1..eb4a8f5a3308588c21141d640f1e2082f1caad5d 100644 (file)
@@ -61,7 +61,6 @@ CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_DRIVER_TI_CPSW=y
 CONFIG_MII=y
 CONFIG_DM_SERIAL=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_USB=y
index 1d6e7ffd37b2071345c6a5d75a1123b7433b7bae..c26b3b9eb452d241d08569316a5a6dad0bc31cf0 100644 (file)
@@ -33,6 +33,7 @@ CONFIG_CMD_USB=y
 CONFIG_CMD_USB_MASS_STORAGE=y
 CONFIG_CMD_BMP=y
 CONFIG_CMD_CACHE=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=gpmi-nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=gpmi-nand:512k(mx6ull-bcb),1536k(u-boot1)ro,1536k(u-boot2)ro,512k(u-boot-env),-(ubi)"
 CONFIG_CMD_UBI=y
index 6e84a7545e4ec6105616fe9583b47b58aaf2d82b..7b496bcea98d71f6cf6a76c91d86843bbdb780d4 100644 (file)
@@ -37,6 +37,7 @@ CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT4=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=gpmi-nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=gpmi-nand:512k(mx7-bcb),1536k(u-boot1)ro,1536k(u-boot2)ro,512k(u-boot-env),-(ubi)"
 CONFIG_CMD_UBI=y
@@ -50,7 +51,6 @@ CONFIG_DM_GPIO=y
 CONFIG_DM_I2C=y
 CONFIG_FSL_ESDHC=y
 CONFIG_NAND=y
-CONFIG_NAND_MXS=y
 CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_PHYLIB=y
 CONFIG_PHY_MICREL=y
index dcb2bcf617b9a35ba61974ed2e2636745ae0aef6..43528ef383ab417152604236e38e8f4f6df4bb5b 100644 (file)
@@ -25,6 +25,7 @@ CONFIG_CMD_CACHE=y
 CONFIG_CMD_PMIC=y
 CONFIG_CMD_REGULATOR=y
 CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=tegra_nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=tegra_nand:2m(u-boot)ro,1m(u-boot-env),1m(cfgblock)ro,-(ubi)"
 CONFIG_CMD_UBI=y
index 5854910f7baeaead057b5314dc525c98a24a4308..fb0578868d7dd6745d013b2691a9ae1082551b75 100644 (file)
@@ -14,6 +14,7 @@ CONFIG_DISPLAY_BOARDINFO_LATE=y
 CONFIG_ARCH_MISC_INIT=y
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
+# CONFIG_CMDLINE_EDITING is not set
 # CONFIG_AUTO_COMPLETE is not set
 CONFIG_SYS_PROMPT="Colibri VFxx # "
 CONFIG_CMD_BOOTZ=y
@@ -23,7 +24,6 @@ CONFIG_CMD_DFU=y
 CONFIG_CMD_FUSE=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_MMC=y
-CONFIG_CMD_SPI=y
 CONFIG_CMD_USB=y
 CONFIG_CMD_USB_MASS_STORAGE=y
 # CONFIG_CMD_SETEXPR is not set
@@ -55,9 +55,6 @@ CONFIG_PHY_MICREL=y
 CONFIG_MII=y
 CONFIG_DM_SERIAL=y
 CONFIG_FSL_LPUART=y
-CONFIG_SPI=y
-CONFIG_DM_SPI=y
-CONFIG_FSL_DSPI=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_EHCI_HCD=y
@@ -72,3 +69,4 @@ CONFIG_VIDEO_FSL_DCU_FB=y
 CONFIG_VIDEO=y
 CONFIG_SYS_CONSOLE_FG_COL=0x00
 CONFIG_OF_LIBFDT_OVERLAY=y
+# CONFIG_EFI_UNICODE_CAPITALIZATION is not set
index d5ce4be40c34bce35b5c17689787a66ad516bd27..b1e7c35fa99e7e315ab703e016d19048a954931e 100644 (file)
@@ -41,7 +41,6 @@ CONFIG_CLK=y
 CONFIG_CLK_AT91=y
 CONFIG_DFU_NAND=y
 # CONFIG_MMC is not set
-CONFIG_MTD_PARTITIONS=y
 CONFIG_NAND=y
 CONFIG_NAND_ATMEL=y
 CONFIG_PHYLIB=y
index 8487509259618a4da77e908f80dbce9ab1c33d82..58745fec8267c18a6e3374259c517a617cf9ea2a 100644 (file)
@@ -8,7 +8,6 @@ CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL=y
-CONFIG_SPL_DM=y
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_NR_DRAM_BANKS=1
@@ -35,17 +34,17 @@ CONFIG_CRC32_VERIFY=y
 # CONFIG_CMD_FS_GENERIC is not set
 CONFIG_CMD_DIAG=y
 CONFIG_OF_CONTROL=y
-CONFIG_DEFAULT_DEVICE_TREE="da850-evm"
 CONFIG_SPL_OF_CONTROL=y
+CONFIG_DEFAULT_DEVICE_TREE="da850-evm"
 CONFIG_SPL_OF_PLATDATA=y
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_DM=y
+CONFIG_SPL_DM=y
 CONFIG_DA8XX_GPIO=y
 CONFIG_DM_I2C=y
 CONFIG_DM_I2C_COMPAT=y
 CONFIG_SYS_I2C_DAVINCI=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
index 5df45ae85584634fa3e764967d2a0437af3f1f89..1bb7b9a03ed9af7f0c121673e4610d38ec3f4caf 100644 (file)
@@ -7,7 +7,6 @@ CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL=y
-CONFIG_SPL_DM=y
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_NR_DRAM_BANKS=1
@@ -39,26 +38,26 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=spi0.0:512k(u-boot.ais),64k(u-boot-env),7552k(
 CONFIG_CMD_DIAG=y
 CONFIG_OF_CONTROL=y
 CONFIG_SPL_OF_CONTROL=y
-CONFIG_SPL_OF_PLATDATA=y
 CONFIG_DEFAULT_DEVICE_TREE="da850-evm"
+CONFIG_SPL_OF_PLATDATA=y
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_DM=y
+CONFIG_SPL_DM=y
 CONFIG_DM_GPIO=y
 CONFIG_DA8XX_GPIO=y
 CONFIG_DM_I2C=y
 CONFIG_SYS_I2C_DAVINCI=y
 CONFIG_DM_MMC=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_WINBOND=y
-CONFIG_PINCTRL=y
-CONFIG_PINCTRL_SINGLE=y
 CONFIG_SPI_FLASH_MTD=y
 CONFIG_MII=y
 CONFIG_DRIVER_TI_EMAC=y
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_SINGLE=y
 CONFIG_DM_SERIAL=y
 CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
index 20f8e0ae31476b38ee198bfdbcbe47ef09c32ab6..5c498749d60442ba966900f126a2db6f60f8f743 100644 (file)
@@ -7,12 +7,8 @@ CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL=y
-CONFIG_SPL_DM=y
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
-CONFIG_DEFAULT_DEVICE_TREE="da850-evm"
-CONFIG_SPL_OF_CONTROL=y
-CONFIG_SPL_OF_PLATDATA=y
 CONFIG_SYS_EXTRA_OPTIONS="MAC_ADDR_IN_SPIFLASH"
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
@@ -39,12 +35,15 @@ CONFIG_MTDIDS_DEFAULT="nand0=nand512"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=nand512:128k(u-boot env),512k(u-boot),128k(spl-os),8m(kernel),-(rootfs)"
 CONFIG_CMD_DIAG=y
 CONFIG_OF_CONTROL=y
+CONFIG_SPL_OF_CONTROL=y
+CONFIG_DEFAULT_DEVICE_TREE="da850-evm"
+CONFIG_SPL_OF_PLATDATA=y
 CONFIG_ENV_IS_IN_NAND=y
 CONFIG_DM=y
+CONFIG_SPL_DM=y
 CONFIG_DM_GPIO=y
 CONFIG_DA8XX_GPIO=y
 CONFIG_DM_I2C=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_NAND=y
 CONFIG_NAND_DAVINCI=y
 CONFIG_SYS_NAND_U_BOOT_LOCATIONS=y
index 41642abc8366f512eaeef2ad635809ab5016f8ce..ea2aee4ef4ae29d3bae29778edb735a0bba34ec9 100644 (file)
@@ -31,5 +31,4 @@ CONFIG_NAND=y
 CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
 CONFIG_SPL_NAND_SIMPLE=y
 CONFIG_CONS_INDEX=3
-CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
index ab5ec59343bfb5854da144f20ad927770c294847..e6162e3cfb7cbce28a15c97f73467bfaa0a139ac 100644 (file)
@@ -63,7 +63,6 @@ CONFIG_SYS_BOOTCOUNT_SINGLEWORD=y
 CONFIG_SYS_BOOTCOUNT_ADDR=0x020CC068
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
index 5d1c746205563d4dbd8a726114f2369469c51b6f..6ef85e246ccfe89a0e20b3de7be0299c98fa2c9d 100644 (file)
@@ -64,7 +64,6 @@ CONFIG_DFU_MMC=y
 CONFIG_DFU_SF=y
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
index af01e163db2ce24dddb3462629edb2505cd786c5..5a766981603a3e22f74c5612b1e797a5b9121155 100644 (file)
@@ -20,6 +20,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=orion_nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=orion_nand:896k(u-boot),128k(u-boot-env),5m(kernel),-(rootfs)"
 CONFIG_CMD_UBI=y
index 53c34d3d10fca0435d0510c93bc7ca047601dee6..41dfbd3263abeada8cb7aef5d0409f85bdef767a 100644 (file)
@@ -17,6 +17,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDPARTS_DEFAULT="mtdparts=orion_nand:1m(uboot),-(root)"
 CONFIG_CMD_UBI=y
 CONFIG_ISO_PARTITION=y
index 14adaab163dbf49cdd53971f38ce789174436374..27f6b5d981fd1a635c2dfc402e3fc1584477fc81 100644 (file)
@@ -80,7 +80,6 @@ CONFIG_DM_REGULATOR_PALMAS=y
 CONFIG_DM_REGULATOR_LP873X=y
 CONFIG_DM_SCSI=y
 CONFIG_DM_SERIAL=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
 CONFIG_TI_QSPI=y
index bd4ae0e50c36a8a13d9739f6189dd0e37a050ce7..651fc4fb4274f05ce5a2c184b519912c8cdea43b 100644 (file)
@@ -79,7 +79,6 @@ CONFIG_DM_REGULATOR_PALMAS=y
 CONFIG_DM_REGULATOR_LP873X=y
 CONFIG_DM_SCSI=y
 CONFIG_DM_SERIAL=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
 CONFIG_TI_QSPI=y
index c0af62ef2750a9ae9a639001aad7810696d793ea..be64c1a8df8744845563862019f6dd5a65838a0e 100644 (file)
@@ -47,6 +47,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_TIME=y
 CONFIG_CMD_EXT2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=omap2-nand.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=omap2-nand.0:128k(spl),128k(spl.backup1),128k(spl.backup2),128k(spl.backup3),1920k(u-boot),512k(u-boot.env0),512k(u-boot.env1),512k(mtdoops),-(rootfs)"
 CONFIG_CMD_UBI=y
@@ -66,7 +67,6 @@ CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT=1
 CONFIG_DRIVER_TI_CPSW=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_USB=y
index a55abaf8df55fc6256ad208d8260b47e7e062238..634721192df4e8ad58d7d6b16022ede6dcbed815 100644 (file)
@@ -52,7 +52,6 @@ CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_VENDOR_NUM=0x18d1
 CONFIG_USB_GADGET_PRODUCT_NUM=0xd00d
 CONFIG_CI_UDC=y
-CONFIG_USB_GADGET_DUALSPEED=n
 CONFIG_USB_HOST_ETHER=y
 CONFIG_USB_ETHER_ASIX=y
 CONFIG_USB_ETHER_ASIX88179=y
index 1b9bf569fc04832cf8248294bda4542266d1ad3b..5325bd9968a828d69cfce81c9c30826264b2cb93 100644 (file)
@@ -35,6 +35,7 @@ CONFIG_CMD_TIME=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_CMD_UBI=y
 CONFIG_ISO_PARTITION=y
 CONFIG_DEFAULT_DEVICE_TREE="armada-xp-synology-ds414"
index 5dad8ef0e58323e2d7c459a9ec78f474bce1fe7b..fae7ff9030096254c9673178f12d9ab26d873aa3 100644 (file)
@@ -27,6 +27,7 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_BMP=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_CMD_DIAG=y
 CONFIG_CMD_UBI=y
 CONFIG_ENV_IS_IN_SPI_FLASH=y
index 7ecd0e8d76895ba3a6461d1be91510c408002765..bc6b85ffae9e9697a14ec7cc98ad4925913610af 100644 (file)
@@ -23,6 +23,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=omap2-nand.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=omap2-nand.0:512k(xloader-nand),1024k(uboot-nand),256k(params-nand),5120k(kernel),-(ubifs)"
 CONFIG_CMD_UBI=y
diff --git a/configs/emdk_defconfig b/configs/emdk_defconfig
deleted file mode 100644 (file)
index c839d6f..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-CONFIG_ARC=y
-CONFIG_ISA_ARCV2=y
-CONFIG_CPU_ARCEM6=y
-CONFIG_TARGET_EMDK=y
-CONFIG_SYS_TEXT_BASE=0x00000000
-CONFIG_SYS_CLK_FREQ=40000000
-# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
-CONFIG_VERSION_VARIABLE=y
-CONFIG_HUSH_PARSER=y
-CONFIG_SYS_PROMPT="emdk# "
-# CONFIG_CMD_BOOTD is not set
-# CONFIG_CMD_XIMG is not set
-CONFIG_CMD_MMC=y
-CONFIG_CMD_CACHE=y
-CONFIG_CMD_FAT=y
-CONFIG_OF_CONTROL=y
-CONFIG_OF_EMBED=y
-CONFIG_DEFAULT_DEVICE_TREE="emdk"
-CONFIG_ENV_IS_IN_FAT=y
-CONFIG_ENV_FAT_INTERFACE="mmc"
-CONFIG_ENV_FAT_DEVICE_AND_PART="0:1"
-# CONFIG_NET is not set
-CONFIG_DM=y
-CONFIG_MMC=y
-CONFIG_MMC_DW=y
-CONFIG_DM_SERIAL=y
-CONFIG_SYS_NS16550=y
-CONFIG_FS_FAT_MAX_CLUSTSIZE=4096
-CONFIG_USE_PRIVATE_LIBGCC=y
-CONFIG_PANIC_HANG=y
diff --git a/configs/emsdp_defconfig b/configs/emsdp_defconfig
new file mode 100644 (file)
index 0000000..273334b
--- /dev/null
@@ -0,0 +1,30 @@
+CONFIG_ARC=y
+CONFIG_ISA_ARCV2=y
+CONFIG_CPU_ARCEM6=y
+CONFIG_TARGET_EMSDP=y
+CONFIG_SYS_TEXT_BASE=0x00000000
+CONFIG_SYS_CLK_FREQ=40000000
+# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
+CONFIG_VERSION_VARIABLE=y
+CONFIG_HUSH_PARSER=y
+CONFIG_SYS_PROMPT="emsdp# "
+# CONFIG_CMD_BOOTD is not set
+# CONFIG_CMD_XIMG is not set
+CONFIG_CMD_MMC=y
+CONFIG_CMD_CACHE=y
+CONFIG_CMD_FAT=y
+CONFIG_OF_CONTROL=y
+CONFIG_OF_EMBED=y
+CONFIG_DEFAULT_DEVICE_TREE="emsdp"
+CONFIG_ENV_IS_IN_FAT=y
+CONFIG_ENV_FAT_INTERFACE="mmc"
+CONFIG_ENV_FAT_DEVICE_AND_PART="0:1"
+# CONFIG_NET is not set
+CONFIG_DM=y
+CONFIG_MMC=y
+CONFIG_MMC_DW=y
+CONFIG_DM_SERIAL=y
+CONFIG_SYS_NS16550=y
+CONFIG_FS_FAT_MAX_CLUSTSIZE=4096
+CONFIG_USE_PRIVATE_LIBGCC=y
+CONFIG_PANIC_HANG=y
index 78283a3ed9ba5943fec29dd1ddd929eee27d830d..a6b03f9fa3723b81b72d5dd2d71a66b570ced8ea 100644 (file)
@@ -47,6 +47,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_TIME=y
 CONFIG_CMD_EXT2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand2=omap2-nand_concat"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=omap2-nand_concat:512k(spl),512k(spl.backup1),512k(spl.backup2),512k(spl.backup3),7680k(u-boot),2048k(u-boot.env0),2048k(u-boot.env1),2048k(mtdoops),-(rootfs)"
 CONFIG_CMD_UBI=y
@@ -66,7 +67,6 @@ CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT=1
 CONFIG_DRIVER_TI_CPSW=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_USB=y
index e4284db13f249b42e562b17791090526ebe0a2b8..b14cf6c8e41ac7e191edeec8ff61aa85b4fdff8f 100644 (file)
@@ -37,6 +37,7 @@ CONFIG_CMD_DATE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=atmel_nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=atmel_nand:-(root)"
 CONFIG_CMD_REISER=y
index 88230f4a12db85723e16a1289359c0f8de98a495..32581f5ada541f45961be43b62c18324f19397a0 100644 (file)
@@ -25,3 +25,11 @@ CONFIG_SYS_NS16550=y
 CONFIG_SYSRESET=y
 CONFIG_TIMER=y
 CONFIG_WDT=y
+CONFIG_NETDEVICES=y
+CONFIG_PHY=y
+CONFIG_DM_ETH=y
+CONFIG_FTGMAC100=y
+CONFIG_PHY_REALTEK=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_MII=y
index 4e6de6c023b34495a06a1eb0c3ff7fe988dc1518..19c96768dba932b320a0349cbb654977a208d8d4 100644 (file)
@@ -23,7 +23,6 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=mxc_nand:50m(root1),32m(rootfb),64m(pcache),64
 CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_MXC_GPIO=y
 # CONFIG_MMC is not set
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 0e2f158518a7397f224c855375ba07bc37bc47ae..262dea3115b86a01cf869d53aeb659660b0abcb1 100644 (file)
@@ -22,6 +22,7 @@ CONFIG_CMD_SF=y
 CONFIG_CMD_SPI=y
 # CONFIG_CMD_NET is not set
 CONFIG_CMD_TIME=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="spi-nand0=spi-nand0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=spi-nand0:-(ubi)"
 CONFIG_CMD_UBI=y
index 1213227758bea74b0cf8b568cd13919b83d8b3c5..6463e891b707eeb35f75f288044ea60695c3d90e 100644 (file)
@@ -25,6 +25,7 @@ CONFIG_CMD_SF=y
 CONFIG_CMD_SPI=y
 # CONFIG_CMD_NET is not set
 CONFIG_CMD_TIME=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="spi-nand0=spi-nand0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=spi-nand0:-(ubi)"
 CONFIG_CMD_UBI=y
index 7d7cae66520998dd149b3e0e3cc3aefb5cfa6a0e..c04bf0ea57429a7907e704948116927f12c57690 100644 (file)
@@ -21,6 +21,7 @@ CONFIG_CMD_EXT2=y
 CONFIG_CMD_EXT4=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=orion_nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=orion_nand:1m(uboot),6M(uImage),-(root)"
 CONFIG_CMD_UBI=y
index 012db5542a6a6653db8dce4fb27e92a9650b0eef..0368c659633e65e70fe5fc2196fc3d157d30de56 100644 (file)
@@ -63,7 +63,6 @@ CONFIG_DM_MMC=y
 CONFIG_RENESAS_SDHI=y
 CONFIG_MTD=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
index 121e4cb18d55fe977b1bd78cc2878e98029e2a00..9998e48ab9c26e71ffc8a9f93cd48e79133fbead 100644 (file)
@@ -21,6 +21,7 @@ CONFIG_CMD_EXT2=y
 CONFIG_CMD_EXT4=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=orion_nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=orion_nand:896K(uboot),128K(uboot_env),-@1M(root)"
 CONFIG_CMD_UBI=y
index 88ff2fc5d0f019c7bc1f0db25e7d4394d8aaea80..eb7614a75a9f3f69b61a7f9f163fb718ca2c74b7 100644 (file)
@@ -52,6 +52,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=nand:16m(uboot),1m(env),-(rootfs)"
 CONFIG_CMD_UBI=y
index c6ed7dfdad7e9ca8ec17d171c076076ae6e71062..e2408766e2e460649c58297d13d77a05fc3f8fd9 100644 (file)
@@ -52,6 +52,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=nand:16m(uboot),1m(env),-(rootfs)"
 CONFIG_CMD_UBI=y
index 3dd200ba8d6ee3e00137407953872c9fae18f780..83690f52580b181b505c2286b8855dd7f045f419 100644 (file)
@@ -54,6 +54,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=nand:16m(uboot),1m(env),-(rootfs)"
 CONFIG_CMD_UBI=y
index 511d455428a486c931a7c762390cbfdd55c0b526..8e99fe7ccbc0920895305a598cb3aa3b56ac14f7 100644 (file)
@@ -18,6 +18,7 @@ CONFIG_CMD_USB=y
 CONFIG_CMD_PMIC=y
 CONFIG_CMD_REGULATOR=y
 CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=tegra_nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=tegra_nand:2m(u-boot)ro,1m(u-boot-env),1m(cfgblock)ro,-(ubi)"
 CONFIG_CMD_UBI=y
index fc3cfb2b74cee4aa754f6e972d016b8b1530f929..8dc5a2823eb0a4d7a56d93a1791df7fdaa6aeccd 100644 (file)
@@ -20,7 +20,6 @@ CONFIG_ENV_FAT_INTERFACE="mmc"
 CONFIG_ENV_FAT_DEVICE_AND_PART="1:1"
 CONFIG_MMC_DW=y
 CONFIG_MMC_DW_K3=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_CONS_INDEX=4
 CONFIG_USB=y
 CONFIG_USB_DWC2=y
index 6ce7d49a0fe83589ba9ba9c3233690dae0d5e096..985d85e0274663efe5f29688fe20e2edff6edff6 100644 (file)
@@ -20,6 +20,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDPARTS_DEFAULT="mtdparts=orion_nand:0xe0000@0x0(uboot),0x20000@0xe0000(uboot_env),-@0x100000(root)"
 CONFIG_CMD_UBI=y
 CONFIG_ISO_PARTITION=y
index 38003b5b77b0014b606c94caf666e3a709ae8e90..c075bfb2cfe85ace4da8a14aa204dbf9a246db28 100644 (file)
@@ -16,6 +16,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDPARTS_DEFAULT="mtdparts=orion_nand:0x80000@0x0(uboot),0x20000@0x80000(uboot_env),-@0xa0000(rootfs)"
 CONFIG_CMD_UBI=y
 CONFIG_ISO_PARTITION=y
index 93dde6be1181870d89033d5bcf428b02be299e43..0d055e395ddd98ebdb63a93c9ecf9b34badfd97d 100644 (file)
@@ -29,6 +29,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_SNTP=y
 CONFIG_CMD_DATE=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nor0=ff800000.flash,nand0=e1000000.flash"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=ff800000.flash:7m(dum),768k(BOOT-BIN),128k(BOOT-ENV),128k(BOOT-REDENV);e1000000.flash:-(ubi)"
 CONFIG_CMD_UBI=y
index f58a02960c8785a568eb9cd742fedd03dcfd9f1f..383648789c5349414dc1f599452bc3274ea3799f 100644 (file)
@@ -27,6 +27,7 @@ CONFIG_CMD_SPI=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_CMD_UBI=y
 # CONFIG_CMD_UBIFS is not set
 CONFIG_NET_RANDOM_ETHADDR=y
@@ -38,7 +39,6 @@ CONFIG_SMC911X=y
 CONFIG_SMC911X_BASE=0x2C000000
 CONFIG_SMC911X_32_BIT=y
 CONFIG_CONS_INDEX=3
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_USB=y
index db72b290f0449810ff6f566ac714eb4f7f39c85a..f2989e34e12ea06dcc9e87abc9f020484a8f5b8d 100644 (file)
@@ -27,6 +27,7 @@ CONFIG_CMD_SPI=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_CMD_UBI=y
 # CONFIG_CMD_UBIFS is not set
 CONFIG_NET_RANDOM_ETHADDR=y
@@ -39,7 +40,6 @@ CONFIG_SMC911X=y
 CONFIG_SMC911X_BASE=0x2C000000
 CONFIG_SMC911X_32_BIT=y
 CONFIG_CONS_INDEX=3
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_USB=y
index 07890db07163c2e6ed2245f5d1bbad8a7e872ccc..a8b1a7dab45f8224a8f5adb343461509147ab2bb 100644 (file)
@@ -30,6 +30,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=gpmi-nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=gpmi-nand:2m(spl),2m(uboot),1m(env),8m(kernel),1m(dtb),-(rootfs)"
 CONFIG_CMD_UBI=y
index b2e6190ff1107e588ec1826fdf28b918f0b846be..74c6584cffd443963b48d4b664ef244a092a0b19 100644 (file)
@@ -31,6 +31,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=gpmi-nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=gpmi-nand:2m(spl),2m(uboot),1m(env),8m(kernel),1m(dtb),-(rootfs)"
 CONFIG_CMD_UBI=y
index 06d7753086ea34328ca355cb8635913e9f07653b..036069a4374b8dfe10c3296f89a2344c0b2965c2 100644 (file)
@@ -43,6 +43,7 @@ CONFIG_CMD_CACHE=y
 # CONFIG_CMD_LED is not set
 CONFIG_CMD_PMIC=y
 CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=gpmi-nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=gpmi-nand:2m(spl),2m(uboot),1m(env),16m(kernel),1m(dtb),-(fs)"
 CONFIG_CMD_UBI=y
index cb81a7a682901df7d3711970ed16b1f7b72d4b37..b8c2dee04ab22a46ddc88244b90e2c38d5c12cd0 100644 (file)
@@ -39,6 +39,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=gpmi-nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=gpmi-nand:2m(spl),2m(uboot),1m(env),8m(kernel),1m(dtb),-(rootfs)"
 CONFIG_CMD_UBI=y
index b2e6190ff1107e588ec1826fdf28b918f0b846be..74c6584cffd443963b48d4b664ef244a092a0b19 100644 (file)
@@ -31,6 +31,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=gpmi-nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=gpmi-nand:2m(spl),2m(uboot),1m(env),8m(kernel),1m(dtb),-(rootfs)"
 CONFIG_CMD_UBI=y
index 245d4e969ecce73df693b0c04e3d08cda8637d3e..f3342576b3ad82fdde3537d0fd6da0510e2c610d 100644 (file)
@@ -32,6 +32,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=gpmi-nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=gpmi-nand:2m(spl),2m(uboot),1m(env),8m(kernel),1m(dtb),-(rootfs)"
 CONFIG_CMD_UBI=y
index 95b21cfc56e888fd75c981efdbc1e27e230c4310..1c5e7d398321343ff938be264a648d4f47826709 100644 (file)
@@ -32,6 +32,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=gpmi-nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=gpmi-nand:2m(spl),2m(uboot),1m(env),8m(kernel),1m(dtb),-(rootfs)"
 CONFIG_CMD_UBI=y
index 15884161837d09bff759bf7eb35046621177f21d..518f7259f2b9a276771cedd84085627b4064e257 100644 (file)
@@ -1,11 +1,12 @@
 CONFIG_ARM=y
 CONFIG_ARCH_IMX8=y
 CONFIG_SYS_TEXT_BASE=0x80020000
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/imx8qxp_mek/imximage.cfg"
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_TARGET_IMX8QXP_MEK=y
 CONFIG_NR_DRAM_BANKS=3
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/imx8qxp_mek/imximage.cfg"
 CONFIG_BOOTDELAY=3
+# CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_CMD_CPU=y
 # CONFIG_CMD_IMPORTENV is not set
 CONFIG_CMD_CLK=y
index 8554ff7e32bcb9a7a992227b9fd60c3b244f63a7..7244b0f92a0c5a1a7e93c18c51e3c155c7e1e824 100644 (file)
@@ -30,6 +30,7 @@ CONFIG_CMD_NAND_TRIMFFS=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=davinci_nand.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=davinci_nand.0:128k(u-boot-env),1408k(u-boot),128k(bootparms),384k(factory-info),4M(kernel),-(rootfs)"
 CONFIG_CMD_DIAG=y
index d744cb19611fa5e9800f88282624cb73f5523e85..67b1f30c8e633f5559e9b42bbaf89bf4c4f7f509 100644 (file)
@@ -56,3 +56,4 @@ CONFIG_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
+CONFIG_DRIVER_TI_KEYSTONE_NET=y
index 87faf3d20792d221276ed2bbdcb91f142f7a7328..1abda846a1b8cb31127670c05c97a0e9c0533e7d 100644 (file)
@@ -49,3 +49,4 @@ CONFIG_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
+CONFIG_DRIVER_TI_KEYSTONE_NET=y
index a96029cdd491efa116bee331eb27d3508fb2f929..bc4b92b4915fe153fcdbdc4b6434eddee20e1da0 100644 (file)
@@ -60,3 +60,4 @@ CONFIG_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
+CONFIG_DRIVER_TI_KEYSTONE_NET=y
index 9e75500b7771f13ef0ed855c99e946b107e6ac96..66d8220aebb6130345c67c1d0fc813275160a318 100644 (file)
@@ -53,3 +53,4 @@ CONFIG_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
+CONFIG_DRIVER_TI_KEYSTONE_NET=y
index 8c7d36212934d61a5d8ff14a3243714eacdc391d..f66d922bf1760055dcf587947f49f83eb9162d1a 100644 (file)
@@ -56,3 +56,4 @@ CONFIG_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
+CONFIG_DRIVER_TI_KEYSTONE_NET=y
index c8f4bbeb91c1fc024c45286a367833fc68d074e7..dd91a51414506d8d57a0b110a7a9650dfba5a446 100644 (file)
@@ -49,3 +49,4 @@ CONFIG_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
+CONFIG_DRIVER_TI_KEYSTONE_NET=y
index dd91aa5ef28870f48da8c1024a3bdef68518cd67..4f04caa1a3c214ee804b91caa073a3fa81c3dd74 100644 (file)
@@ -56,3 +56,4 @@ CONFIG_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
+CONFIG_DRIVER_TI_KEYSTONE_NET=y
index ac400e43694faba6691a4b23ccdc09e0778ea644..9ce23dec93b8294ad9d59b6a122cb511b6eed8e2 100644 (file)
@@ -48,3 +48,4 @@ CONFIG_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
+CONFIG_DRIVER_TI_KEYSTONE_NET=y
index f21e3a8ddfecbb2611832c1e5b231753864a2342..4bbccc2f3440c8e6ef359fc705bb85fe88f6dadd 100644 (file)
@@ -6,7 +6,6 @@ CONFIG_TARGET_KHADAS_VIM2=y
 CONFIG_DEBUG_UART_BASE=0xc81004c0
 CONFIG_DEBUG_UART_CLOCK=24000000
 CONFIG_IDENT_STRING=" khadas-vim2"
-CONFIG_DEFAULT_DEVICE_TREE="meson-gxm-khadas-vim2"
 CONFIG_DEBUG_UART=y
 CONFIG_OF_BOARD_SETUP=y
 # CONFIG_DISPLAY_CPUINFO is not set
@@ -20,25 +19,25 @@ CONFIG_CMD_MMC=y
 CONFIG_CMD_USB=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_REGULATOR=y
-CONFIG_ADC=y
-CONFIG_SARADC_MESON=y
 CONFIG_OF_CONTROL=y
+CONFIG_DEFAULT_DEVICE_TREE="meson-gxm-khadas-vim2"
 CONFIG_NET_RANDOM_ETHADDR=y
+CONFIG_SARADC_MESON=y
 CONFIG_DM_GPIO=y
-CONFIG_DM_REGULATOR=y
-CONFIG_DM_REGULATOR_FIXED=y
-CONFIG_DM_RESET=y
 CONFIG_DM_MMC=y
 CONFIG_MMC_MESON_GX=y
+CONFIG_MTD=y
 CONFIG_DM_ETH=y
 CONFIG_ETH_DESIGNWARE=y
+CONFIG_PHY=y
 CONFIG_PINCTRL=y
 CONFIG_PINCTRL_MESON_GXL=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_RESET=y
 CONFIG_DEBUG_UART_MESON=y
 CONFIG_DEBUG_UART_ANNOUNCE=y
 CONFIG_DEBUG_UART_SKIP_INIT=y
 CONFIG_MESON_SERIAL=y
-CONFIG_OF_LIBFDT_OVERLAY=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
@@ -46,6 +45,4 @@ CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_XHCI_DWC3_OF_SIMPLE=y
 CONFIG_USB_DWC3=y
 CONFIG_USB_STORAGE=y
-CONFIG_PHY=y
-CONFIG_MESON_GXL_USB_PHY=y
-CONFIG_MTD=y
+CONFIG_OF_LIBFDT_OVERLAY=y
index 56c31722b8291830827ea1adb9ec7712e84d1d2d..b55b8b0424d1d3ae697d847dc4f81665c79611f8 100644 (file)
@@ -22,6 +22,7 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=orion_nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=orion_nand:-(ubi0);"
 CONFIG_CMD_UBI=y
index 3e33415df6ba65f1e8f9dd888196f2a76d08a3a0..b47b9e36fbeab43a1cb736344ad9ca4f5dff36d1 100644 (file)
@@ -22,6 +22,7 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=orion_nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=orion_nand:-(ubi0);"
 CONFIG_CMD_UBI=y
index f1df457e1484e742c14962db0b3b5b972dc714cf..fb18630874e1b99c684038dd2e28f8eb431f8b5f 100644 (file)
@@ -22,6 +22,7 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=orion_nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=orion_nand:-(ubi0);"
 CONFIG_CMD_UBI=y
index 08d81020a57d22b5e20cf42148bd4a12669505b4..a3cc06bd43043d9faa869f2be38af05da705afc4 100644 (file)
@@ -27,6 +27,7 @@ CONFIG_CMD_PING=y
 CONFIG_MP=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=fsl_elbc_nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=fsl_elbc_nand:-(ubi0);"
 # CONFIG_CMD_IRQ is not set
index 8a41d1ddc908161ded0e2d23a13d6945045bce8b..cb47b0b7fde0bbe72e03a56b5bff35bbb8de60ba 100644 (file)
@@ -23,6 +23,7 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nor0=boot,nand0=app"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=boot:768k(u-boot),128k(env),128k(envred),-(ubi0);app:-(ubi1);"
 CONFIG_CMD_UBI=y
index 5514f68c985dac3dff5972200d36ffaa44fd894a..598af88cd9aa2d312e60a3edebd24d596533596f 100644 (file)
@@ -22,6 +22,7 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=orion_nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=orion_nand:-(ubi0);"
 CONFIG_CMD_UBI=y
index 3f78854da7801fcafd1536aded56e29ad47ecfd2..0c3fadfcf8a67f50fb66064d9c6d4d76e5456bf0 100644 (file)
@@ -22,6 +22,7 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nor0=boot"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=boot:768k(u-boot),128k(env),128k(envred),-(ubi0);"
 CONFIG_CMD_UBI=y
index 058789af33098578465042df86439389f30abef9..75e5204ff5a06668489d7e955cbeafd68aee7ecd 100644 (file)
@@ -27,6 +27,7 @@ CONFIG_CMD_PING=y
 CONFIG_MP=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=fsl_elbc_nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=fsl_elbc_nand:-(ubi0);"
 # CONFIG_CMD_IRQ is not set
index 46130cd3732ee49eff0f7c2bfade871a1a145768..8b3fa7efac639a815190ea5f423adf74af6e0d07 100644 (file)
@@ -22,6 +22,7 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=orion_nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=orion_nand:-(ubi0);"
 CONFIG_CMD_UBI=y
index a81f4a39e6ad12402cc19959b2c2aa77a2be5313..e8e821fb800a8ca22bb46516ad7c9db50512d5f9 100644 (file)
@@ -22,6 +22,7 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nor0=boot"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=boot:768k(u-boot),128k(env),128k(envred),-(ubi0);"
 CONFIG_CMD_UBI=y
index 06ccf89f84535129a7d9bc04ef864420a8b67383..d2206b4c3cc5178c7d9843cbaec3188bcff1edb5 100644 (file)
@@ -22,6 +22,7 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=orion_nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=orion_nand:-(ubi0);"
 CONFIG_CMD_UBI=y
index 8234e1454ffd8b5197d8028b9ec2bf18452c5da4..86e2bd923785648fd45565babb7f52ffb9e1ac43 100644 (file)
@@ -22,6 +22,7 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nor0=boot"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=boot:768k(u-boot),128k(env),128k(envred),-(ubi0);"
 CONFIG_CMD_UBI=y
index 16f5e237116d40480f652df3f64f0683d382b4fc..62d3a0a1d09f50195381542254c5afca6e0848e3 100644 (file)
@@ -22,6 +22,7 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=orion_nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=orion_nand:-(ubi0);"
 CONFIG_CMD_UBI=y
index 55fbed61c053ab887e1a7ad6d640097fb5ac76a8..40181758e9cb24ce189704d37b1dac6083860763 100644 (file)
@@ -23,6 +23,7 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nor0=boot,nand0=app"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=boot:768k(u-boot),256k(qe-fw),128k(env),128k(envred),-(ubi0);app:-(ubi1);"
 CONFIG_CMD_DIAG=y
index ef7453f85aea84794d8588c7e62bc99cb4ea139b..6170dc3f1610c5ae8469e894143389485bf4f23c 100644 (file)
@@ -22,6 +22,7 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nor0=boot"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=boot:768k(u-boot),128k(env),128k(envred),-(ubi0);"
 CONFIG_CMD_UBI=y
index 4f513cbb50c4329d9ec420e712587badbc2e1544..74b688fb5f959f4a1f2519e8db3bcfee49a75ea2 100644 (file)
@@ -22,6 +22,7 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nor0=boot"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=boot:768k(u-boot),128k(env),128k(envred),-(ubi0);"
 CONFIG_CMD_DIAG=y
index 916fe0770398fb813d8e85b121cfdb1abed54484..dbacfd87ba5d46118d9819c63f465e4105bbcfd6 100644 (file)
@@ -63,7 +63,6 @@ CONFIG_DM_MMC=y
 CONFIG_RENESAS_SDHI=y
 CONFIG_MTD=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
index c1bdd6075888b45525502d0bd911feaf1a5fb88b..242e104b6bd31bc2c6de7df07380e2869bb29b68 100644 (file)
@@ -65,7 +65,6 @@ CONFIG_SH_MMCIF=y
 CONFIG_RENESAS_SDHI=y
 CONFIG_MTD=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
index b59fdf3153df672d9cb05b729941261e9fb68122..1bcf56aa5d68de0027f22dd0d7315008b3cabbe9 100644 (file)
@@ -32,6 +32,7 @@ CONFIG_DEFAULT_DEVICE_TREE="ls1021a-twr-duart"
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_DM=y
 CONFIG_FSL_CAAM=y
+CONFIG_DM_MMC=y
 CONFIG_FSL_ESDHC=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_ATMEL=y
@@ -57,5 +58,3 @@ CONFIG_USB_STORAGE=y
 CONFIG_VIDEO_FSL_DCU_FB=y
 CONFIG_VIDEO=y
 # CONFIG_VIDEO_SW_CURSOR is not set
-CONFIG_BLK=y
-CONFIG_DM_MMC=y
index 94c16dacb1fa7f3d4ce817cb11f7614a1e213303..4b01bc42f0e389a7331ca02bbcedb75eb5d26068 100644 (file)
@@ -42,6 +42,7 @@ CONFIG_DEFAULT_DEVICE_TREE="ls1021a-twr-duart"
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_DM=y
 CONFIG_FSL_CAAM=y
+CONFIG_DM_MMC=y
 CONFIG_FSL_ESDHC=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_ATMEL=y
@@ -67,5 +68,3 @@ CONFIG_USB_STORAGE=y
 CONFIG_VIDEO_FSL_DCU_FB=y
 CONFIG_VIDEO=y
 # CONFIG_VIDEO_SW_CURSOR is not set
-CONFIG_BLK=y
-CONFIG_DM_MMC=y
index b0a562e7269c5078cba8c12fa8f28bdbaa8cd466..c2024cf7c8b676a33c642130d73d86e18c01dfa0 100644 (file)
@@ -30,6 +30,7 @@ CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1043a-qds-duart"
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_DM=y
 CONFIG_FSL_CAAM=y
+CONFIG_DM_MMC=y
 CONFIG_FSL_ESDHC=y
 CONFIG_SPI_FLASH=y
 CONFIG_PHYLIB=y
@@ -46,5 +47,3 @@ CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
-CONFIG_BLK=y
-CONFIG_DM_MMC=y
index 2ef5b0138241b6c30faa05bb43d18c75fa07758e..850b1dc142e1fb63b1ed0a6ed3312f547f012634 100644 (file)
@@ -43,6 +43,7 @@ CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1043a-qds-duart"
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_DM=y
 CONFIG_FSL_CAAM=y
+CONFIG_DM_MMC=y
 CONFIG_FSL_ESDHC=y
 CONFIG_SPI_FLASH=y
 CONFIG_PHYLIB=y
@@ -59,5 +60,3 @@ CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
-CONFIG_BLK=y
-CONFIG_DM_MMC=y
index 56443adeba5154cbe8ef421c4d8337f43dbf1d8f..ab1b549a2790c9d66881fff4c6e87d14f9463a03 100644 (file)
@@ -30,6 +30,7 @@ CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1046a-qds-duart"
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_DM=y
 CONFIG_FSL_CAAM=y
+CONFIG_DM_MMC=y
 CONFIG_FSL_ESDHC=y
 CONFIG_SPI_FLASH=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
@@ -49,5 +50,3 @@ CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
-CONFIG_BLK=y
-CONFIG_DM_MMC=y
index 021d4f9300bbed352595cf925558f557462a814a..ab53eb768957ce67c9ec2f70d80811e72cfed1ba 100644 (file)
@@ -45,6 +45,7 @@ CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1046a-qds-duart"
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_DM=y
 CONFIG_FSL_CAAM=y
+CONFIG_DM_MMC=y
 CONFIG_FSL_ESDHC=y
 CONFIG_SPI_FLASH=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
@@ -64,5 +65,3 @@ CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
-CONFIG_BLK=y
-CONFIG_DM_MMC=y
index 16aa1c91db8927af41fd56a53fb2c5dc5a4708f4..f7a35c7e1947b7de78b91e540e4db4001a431fe9 100644 (file)
@@ -42,6 +42,7 @@ CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1046a-rdb"
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_DM=y
 CONFIG_FSL_CAAM=y
+CONFIG_DM_MMC=y
 CONFIG_FSL_ESDHC=y
 CONFIG_SPI_FLASH=y
 CONFIG_PHYLIB=y
@@ -60,5 +61,3 @@ CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
-CONFIG_BLK=y
-CONFIG_DM_MMC=y
index a6159ca406db50d344db2c8aa38a7270549f7381..80f52807e12838153e225ccf49c24b63c83da5da 100644 (file)
@@ -26,6 +26,7 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=1550000.quadspi:1m(rcw),15m(u-boot),48m(kernel
 CONFIG_OF_CONTROL=y
 CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1046a-rdb"
 CONFIG_DM=y
+CONFIG_DM_MMC=y
 CONFIG_FSL_ESDHC=y
 CONFIG_SPI_FLASH=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
@@ -46,5 +47,3 @@ CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
 CONFIG_RSA=y
-CONFIG_BLK=y
-CONFIG_DM_MMC=y
index e9d03d3813d906606ea535d46f322c5e96c8e7dc..e780acc446b014560b6e6ab5d9c08eccb50a11fe 100644 (file)
@@ -27,6 +27,7 @@ CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1046a-rdb"
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_DM=y
 CONFIG_FSL_CAAM=y
+CONFIG_DM_MMC=y
 CONFIG_FSL_ESDHC=y
 CONFIG_SPI_FLASH=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
@@ -46,5 +47,3 @@ CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
-CONFIG_BLK=y
-CONFIG_DM_MMC=y
index c14884caf18809e170a4023216fe24b3f49ac60d..61da6ae517b85485b3e4c0c2a6254d59f408c0c4 100644 (file)
@@ -41,6 +41,7 @@ CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1046a-rdb"
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_DM=y
 CONFIG_FSL_CAAM=y
+CONFIG_DM_MMC=y
 CONFIG_FSL_ESDHC=y
 CONFIG_SPI_FLASH=y
 CONFIG_PHYLIB=y
@@ -59,5 +60,3 @@ CONFIG_DM_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
-CONFIG_BLK=y
-CONFIG_DM_MMC=y
index 7c5f696ed13eda03379a2a7a8c47cfe42160fe48..b184d232955ba5574b6a0a283249299fcde53837 100644 (file)
@@ -29,6 +29,7 @@ CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1088a-qds"
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_DM=y
 CONFIG_SCSI_AHCI=y
+CONFIG_DM_MMC=y
 CONFIG_FSL_ESDHC=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
@@ -54,5 +55,3 @@ CONFIG_USB_GADGET=y
 CONFIG_RSA=y
 CONFIG_RSA_SOFTWARE_EXP=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
-CONFIG_BLK=y
-CONFIG_DM_MMC=y
index 9bda1b38cd646741ba0dec10962ee5113dff949b..c63426d0cd5e9c1eb5ccac652b93be4aa1ace734 100644 (file)
@@ -29,6 +29,7 @@ CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_DM=y
 CONFIG_SCSI_AHCI=y
+CONFIG_DM_MMC=y
 CONFIG_FSL_ESDHC=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
@@ -52,5 +53,3 @@ CONFIG_USB_DWC3=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_GADGET=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
-CONFIG_BLK=y
-CONFIG_DM_MMC=y
index 615fb5fa6157acfeccdea914a61f727ed74de077..f83c17b81b83f55af5309aeec4a2a1e818ded757 100644 (file)
@@ -39,6 +39,7 @@ CONFIG_ENV_IS_IN_MMC=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_DM=y
 CONFIG_SCSI_AHCI=y
+CONFIG_DM_MMC=y
 CONFIG_FSL_ESDHC=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
@@ -61,5 +62,3 @@ CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_DWC3=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_GADGET=y
-CONFIG_BLK=y
-CONFIG_DM_MMC=y
index f8f1f4de47a2545676bd1304c566ddee3ea38310..ff72ec5edc17bdceef224c98f8468543c4b11d88 100644 (file)
@@ -30,12 +30,12 @@ CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1088a-rdb"
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_DM=y
 CONFIG_SCSI_AHCI=y
+CONFIG_DM_MMC=y
 CONFIG_FSL_ESDHC=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
-CONFIG_PHY_AQUANTIA=y
 CONFIG_E1000=y
 CONFIG_MII=y
 CONFIG_PCI=y
@@ -56,5 +56,3 @@ CONFIG_USB_GADGET=y
 CONFIG_RSA=y
 CONFIG_RSA_SOFTWARE_EXP=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
-CONFIG_BLK=y
-CONFIG_DM_MMC=y
index 7e9cb991888f28164aa975eb7bc35b5a9bed0f06..089faa484ee860eea30ff8de2b1e907dbe6f83ec 100644 (file)
@@ -30,12 +30,12 @@ CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_DM=y
 CONFIG_SCSI_AHCI=y
+CONFIG_DM_MMC=y
 CONFIG_FSL_ESDHC=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
-CONFIG_PHY_AQUANTIA=y
 CONFIG_E1000=y
 CONFIG_MII=y
 CONFIG_PCI=y
@@ -54,5 +54,3 @@ CONFIG_USB_DWC3=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_GADGET=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
-CONFIG_BLK=y
-CONFIG_DM_MMC=y
index f584dd3c59675b2a9345adfd98de3811503411ca..f7ec11fe05d4587784057b4b74c0619ec7278d42 100644 (file)
@@ -48,7 +48,6 @@ CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
-CONFIG_PHY_AQUANTIA=y
 CONFIG_E1000=y
 CONFIG_MII=y
 CONFIG_PCI=y
index 886255e3da3aef81ba849b33b789560c23aa23a9..b56e11ed3a390d16fff6a991ea085ce6c5551f93 100644 (file)
@@ -40,12 +40,12 @@ CONFIG_ENV_IS_IN_MMC=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_DM=y
 CONFIG_SCSI_AHCI=y
+CONFIG_DM_MMC=y
 CONFIG_FSL_ESDHC=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
-CONFIG_PHY_AQUANTIA=y
 CONFIG_E1000=y
 CONFIG_MII=y
 CONFIG_PCI=y
@@ -63,5 +63,3 @@ CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_DWC3=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_GADGET=y
-CONFIG_BLK=y
-CONFIG_DM_MMC=y
index ccccc28dd5f320077d9d681606efd346641d40ad..1f2c0524278bee6ddb7eff0afcd34ec01161fb66 100644 (file)
@@ -33,5 +33,3 @@ CONFIG_FSL_CAAM=y
 CONFIG_SYS_NS16550=y
 CONFIG_OF_LIBFDT=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
-CONFIG_BLK=y
-CONFIG_DM_MMC=y
index 86696513dedb1a3db2e8352f4d60495da052809d..1f93a8378ccaf17647c48c2fef53573861629628 100644 (file)
@@ -42,6 +42,7 @@ CONFIG_ENV_IS_IN_NAND=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_DM=y
 CONFIG_FSL_CAAM=y
+CONFIG_DM_MMC=y
 CONFIG_FSL_ESDHC=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_PHYLIB=y
@@ -62,5 +63,3 @@ CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
-CONFIG_BLK=y
-CONFIG_DM_MMC=y
index 9980caacec12966c82eab528f2ce6674c1f78676..32eec9a99d9fb733b8f57fe593b6576eb6fe7128 100644 (file)
@@ -33,6 +33,7 @@ CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_DM=y
 CONFIG_FSL_CAAM=y
+CONFIG_DM_MMC=y
 CONFIG_FSL_ESDHC=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_PHYLIB=y
@@ -53,5 +54,3 @@ CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
-CONFIG_BLK=y
-CONFIG_DM_MMC=y
index 8bcab1e28b551015d16944430758f7e9b4b97266..a71913d65ccd2c87909080343b3e154f32cb79cd 100644 (file)
@@ -40,6 +40,7 @@ CONFIG_DEFAULT_DEVICE_TREE="fsl-ls2080a-qds"
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_DM=y
+CONFIG_DM_MMC=y
 CONFIG_FSL_ESDHC=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_PHYLIB=y
@@ -60,5 +61,3 @@ CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
-CONFIG_BLK=y
-CONFIG_DM_MMC=y
index 6d3708fec9ac41611f6d51314333893e11333207..e5712db3302d5f1df10fac7390813ce38a0f2d6c 100644 (file)
@@ -26,6 +26,7 @@ CONFIG_OF_CONTROL=y
 CONFIG_DEFAULT_DEVICE_TREE="fsl-ls2088a-rdb-qspi"
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_DM=y
+CONFIG_DM_MMC=y
 CONFIG_FSL_ESDHC=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
@@ -53,5 +54,3 @@ CONFIG_USB_STORAGE=y
 CONFIG_RSA=y
 CONFIG_RSA_SOFTWARE_EXP=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
-CONFIG_BLK=y
-CONFIG_DM_MMC=y
index 44b7d2a40e268126cdff911d8cc92c007eda4c20..5e5d17f6b4f57c207bd660e912f50530fd7de33c 100644 (file)
@@ -30,6 +30,7 @@ CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_DM=y
 CONFIG_FSL_CAAM=y
+CONFIG_DM_MMC=y
 CONFIG_FSL_ESDHC=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
@@ -55,5 +56,3 @@ CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
 CONFIG_EFI_LOADER_BOUNCE_BUFFER=y
-CONFIG_BLK=y
-CONFIG_DM_MMC=y
index f59f4acabb0ed5eb484086d1366cf7f01984f249..795f8a3ebc90fd6f713a267a9174a11a1857f64f 100644 (file)
@@ -39,6 +39,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=mxc_nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=mxc_nand:1m(u-boot),512k(env1),512k(env2),-(ubi)"
 CONFIG_CMD_UBI=y
index 964db15c81c793553671b431ad01f48584a3bc12..69fab7c779437db2c3f2011ecaae03758cb7ca1b 100644 (file)
@@ -28,7 +28,6 @@ CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
 CONFIG_DM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD_DEVICE=y
index 9f4507e83937ea4ec2e2602b2e2197bf72487789..05c6572beb3eefce35550f3e3ce9c8e0fe462e85 100644 (file)
@@ -29,7 +29,6 @@ CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
 CONFIG_DM=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD_DEVICE=y
index 811123843c1b153bef42e517f02fa3114f1f66bc..c30a4dd15032460792a43c179546d93c25acb972 100644 (file)
@@ -30,6 +30,7 @@ CONFIG_CMD_DATE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=omap2-nand.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=omap2-nand.0:512k(MLO),1m(u-boot),256k(env1),256k(env2),6m(kernel),6m(k_recovery),8m(fs_recovery),-(common_data)"
 CONFIG_CMD_UBI=y
index e834a14d4a0fc0c0decf3f534a67c54afd9a6fc4..0c2785c09522f7cfcafa016a2fc7de63bf7c1980 100644 (file)
@@ -22,6 +22,7 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=orion_nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=orion_nand:-(ubi0);"
 CONFIG_CMD_UBI=y
index ab378f891944e8df206567f3fe159e6e802f7bde..0b21020cfffa01926a64043f1276eabdd0367fe9 100644 (file)
@@ -44,7 +44,6 @@ CONFIG_DM_GPIO=y
 CONFIG_XILINX_GPIO=y
 CONFIG_LED=y
 CONFIG_LED_GPIO=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD_DEVICE=y
 CONFIG_FLASH_CFI_DRIVER=y
index ae88b7680af805c9e6e7d4453a0416f9598a9dd6..1635c69d1e2ec57d895cc4bad39b6eca98233ce0 100644 (file)
@@ -27,6 +27,7 @@ CONFIG_CMD_BMP=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=omap2-nand.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=omap2-nand.0:512k(MLO),1m(u-boot),256k(env1),256k(env2),8m(ubisystem),-(rootfs)"
 CONFIG_CMD_UBI=y
index 901de9a72b20700ce7563484b239c562dfb5cfbf..d0572212f1ec26e0569e2f6032c2e0defd6e28ba 100644 (file)
@@ -34,6 +34,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=gpmi-nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=gpmi-nand:3m(bootloader)ro,512k(environment),512k(redundant-environment),4m(kernel),512k(fdt),8m(ramdisk),-(filesystem)"
 CONFIG_CMD_UBI=y
index c018f34a588f15ce9841208d07295ed25bb49708..ab59d7599b483a0ba14689c372d6df09fa70cb91 100644 (file)
@@ -34,6 +34,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=gpmi-nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=gpmi-nand:3m(bootloader)ro,512k(environment),512k(redundant-environment),4m(kernel),512k(fdt),8m(ramdisk),-(filesystem)"
 CONFIG_CMD_UBI=y
index 675c81bb941dc7f60dae9e77292c58762ac82c0e..6b774cf248a3678760d963ee595aadc7102aef87 100644 (file)
@@ -33,6 +33,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=gpmi-nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=gpmi-nand:3m(bootloader)ro,512k(environment),512k(redundant-environment),4m(kernel),512k(fdt),8m(ramdisk),-(filesystem)"
 CONFIG_CMD_UBI=y
index 2d2790f32461b121cd4da1635468a6daed12fefb..0a77e6e9f739e335d3fed0c1f4d40bdd7a040d8d 100644 (file)
@@ -33,6 +33,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=gpmi-nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=gpmi-nand:3m(bootloader)ro,512k(environment),512k(redundant-environment),4m(kernel),512k(fdt),8m(ramdisk),-(filesystem)"
 CONFIG_CMD_UBI=y
index b37fb562ba826c4e37877b86cec42927bddf04db..7fec4b6aa046d9e3b6be6eade2555b215c36d9cd 100644 (file)
@@ -27,7 +27,6 @@ CONFIG_EFI_PARTITION=y
 CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_MXC_GPIO=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 6f0dcbedac83e53f76fc915383b8d5cdfcd05246..41fac12d0c9197ec11e3e57a49b7de790dfd6363 100644 (file)
@@ -36,7 +36,6 @@ CONFIG_DM_MMC=y
 CONFIG_FSL_ESDHC=y
 CONFIG_NAND=y
 CONFIG_NAND_MXS=y
-CONFIG_DM_SPI=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
@@ -52,6 +51,7 @@ CONFIG_DM_REGULATOR_PFUZE100=y
 CONFIG_DM_REGULATOR_FIXED=y
 CONFIG_DM_REGULATOR_GPIO=y
 CONFIG_SPI=y
+CONFIG_DM_SPI=y
 CONFIG_FSL_QSPI=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
index 2a366162df067ef154764e3bb157d2e9e70a4e57..d04ec4f9a34a4ffab6d54a3090160b8b454858ee 100644 (file)
@@ -14,10 +14,10 @@ CONFIG_CMD_BOOTZ=y
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_I2C=y
-CONFIG_CMD_SF=y
 CONFIG_CMD_MMC=y
 CONFIG_CMD_PART=y
 CONFIG_CMD_PCI=y
+CONFIG_CMD_SF=y
 CONFIG_CMD_USB=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_DHCP=y
@@ -38,14 +38,11 @@ CONFIG_DM_GPIO=y
 CONFIG_DM_I2C=y
 CONFIG_DM_MMC=y
 CONFIG_FSL_ESDHC=y
-CONFIG_SPI=y
-CONFIG_DM_SPI=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
-CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SPANSION=y
-CONFIG_FSL_QSPI=y
+CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_PHYLIB=y
 CONFIG_MII=y
 CONFIG_PCI=y
@@ -57,6 +54,9 @@ CONFIG_DM_REGULATOR=y
 CONFIG_DM_REGULATOR_PFUZE100=y
 CONFIG_DM_REGULATOR_FIXED=y
 CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_SPI=y
+CONFIG_DM_SPI=y
+CONFIG_FSL_QSPI=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_STORAGE=y
index 64ddc4f0c7540120e0d74cd2a011c6ffeface6fb..607045f8570d5e476f3bcc27c2a0fc214a15345d 100644 (file)
@@ -5,7 +5,6 @@ CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_TARGET_MX6UL_14X14_EVK=y
-CONFIG_DEFAULT_DEVICE_TREE="imx6ul-14x14-evk"
 CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL=y
@@ -31,37 +30,37 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_BMP=y
 CONFIG_CMD_CACHE=y
-CONFIG_CMD_NET=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
 CONFIG_OF_CONTROL=y
+CONFIG_DEFAULT_DEVICE_TREE="imx6ul-14x14-evk"
+CONFIG_ENV_IS_IN_MMC=y
+CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
 CONFIG_DM_GPIO=y
 CONFIG_DM_I2C=y
 CONFIG_DM_MMC=y
-CONFIG_DM_SPI=y
-CONFIG_DM_SPI_FLASH=y
-CONFIG_ENV_IS_IN_MMC=y
-CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
 CONFIG_FSL_ESDHC=y
+CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_PHYLIB=y
 CONFIG_PHY_MICREL=y
+CONFIG_DM_ETH=y
 CONFIG_MII=y
-CONFIG_SPI=y
-CONFIG_SOFT_SPI=y
 CONFIG_PINCTRL=y
 CONFIG_PINCTRL_IMX6=y
 CONFIG_DM_REGULATOR=y
 CONFIG_DM_REGULATOR_FIXED=y
 CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_SPI=y
+CONFIG_DM_SPI=y
+CONFIG_SOFT_SPI=y
 CONFIG_FSL_QSPI=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_STORAGE=y
 CONFIG_VIDEO=y
-CONFIG_DM_ETH=y
index af8939f76a8f56a63a41288e7897a0bb0b05272e..2c8be5fb31ef41696231d2d47abdae1d08439d25 100644 (file)
@@ -5,7 +5,6 @@ CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_TARGET_MX6UL_9X9_EVK=y
-CONFIG_DEFAULT_DEVICE_TREE="imx6ul-9x9-evk"
 CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL=y
@@ -31,29 +30,27 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_BMP=y
 CONFIG_CMD_CACHE=y
-CONFIG_CMD_NET=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
 CONFIG_OF_CONTROL=y
+CONFIG_DEFAULT_DEVICE_TREE="imx6ul-9x9-evk"
+CONFIG_ENV_IS_IN_MMC=y
+CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
 CONFIG_DM_GPIO=y
 CONFIG_DM_I2C=y
 CONFIG_DM_MMC=y
-CONFIG_DM_SPI=y
-CONFIG_DM_SPI_FLASH=y
-CONFIG_ENV_IS_IN_MMC=y
-CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
 CONFIG_FSL_ESDHC=y
+CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_PHYLIB=y
 CONFIG_PHY_MICREL=y
+CONFIG_DM_ETH=y
 CONFIG_MII=y
-CONFIG_SPI=y
-CONFIG_SOFT_SPI=y
 CONFIG_PINCTRL=y
 CONFIG_PINCTRL_IMX6=y
 CONFIG_DM_PMIC=y
@@ -62,9 +59,11 @@ CONFIG_DM_REGULATOR=y
 CONFIG_DM_REGULATOR_PFUZE100=y
 CONFIG_DM_REGULATOR_FIXED=y
 CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_SPI=y
+CONFIG_DM_SPI=y
+CONFIG_SOFT_SPI=y
 CONFIG_FSL_QSPI=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_STORAGE=y
 CONFIG_VIDEO=y
-CONFIG_DM_ETH=y
index 53894e66f14e5e5701d99e5fc5c0f1587f728679..48f4068e8cd0fcdb0c78afc4f36f3120265ef330 100644 (file)
@@ -6,8 +6,6 @@ CONFIG_ARMV7_BOOT_SEC_DEFAULT=y
 # CONFIG_ARMV7_VIRT is not set
 CONFIG_IMX_RDC=y
 CONFIG_IMX_BOOTAUX=y
-# CONFIG_CMD_BMODE is not set
-CONFIG_DEFAULT_DEVICE_TREE="imx7d-sdb-qspi"
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx7dsabresd/imximage.cfg"
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
@@ -38,6 +36,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_OF_CONTROL=y
+CONFIG_DEFAULT_DEVICE_TREE="imx7d-sdb-qspi"
 CONFIG_DFU_MMC=y
 CONFIG_DFU_RAM=y
 CONFIG_DM_GPIO=y
@@ -48,13 +47,13 @@ CONFIG_MMC_IO_VOLTAGE=y
 CONFIG_MMC_UHS_SUPPORT=y
 CONFIG_MMC_HS200_SUPPORT=y
 CONFIG_FSL_ESDHC=y
-CONFIG_FSL_QSPI=y
+CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
+CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_SPI_FLASH_BAR=y
-CONFIG_MII=y
 CONFIG_PHYLIB=y
+CONFIG_MII=y
 CONFIG_PINCTRL=y
 CONFIG_PINCTRL_IMX7=y
 CONFIG_DM_PMIC=y
@@ -65,8 +64,8 @@ CONFIG_DM_REGULATOR_FIXED=y
 CONFIG_DM_REGULATOR_GPIO=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
-CONFIG_DM_SPI_FLASH=y
 CONFIG_SOFT_SPI=y
+CONFIG_FSL_QSPI=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_EHCI_HCD=y
index 3c5c71f80db3af82f3ba60596f766b37709522d9..6bd308bb826431252b3b33aeeb650ae626ff2e9e 100644 (file)
@@ -21,6 +21,7 @@ CONFIG_CMD_EXT2=y
 CONFIG_CMD_EXT4=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_CMD_UBI=y
 CONFIG_ISO_PARTITION=y
 CONFIG_EFI_PARTITION=y
index 4a9ec13b62c1886006e77b54d6c2d3695b5197c8..eb29a70157c9ddff663b3d29a517fabd4c53d259 100644 (file)
@@ -19,6 +19,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDPARTS_DEFAULT="mtdparts=orion_nand:0xe0000@0x0(uboot),0x20000@0xe0000(uboot_env),0x100000@0x100000(second_stage_uboot),-@0x200000(root)"
 CONFIG_CMD_UBI=y
 CONFIG_ISO_PARTITION=y
index 54c40d8c42ec6bc2f74033b303e803730c34eb10..a23f6a33d6d7beaaca29cc5dc3a8153aaff730f3 100644 (file)
@@ -24,6 +24,7 @@ CONFIG_CMD_SPL_WRITE_SIZE=0x20000
 CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_LOCK_UNLOCK=y
 CONFIG_CMD_CACHE=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=omap2-nand.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=omap2-nand.0:512k(MLO),1792k(u-boot),128k(spl-os),128k(u-boot-env),6m(kernel),-(fs)"
 CONFIG_CMD_UBI=y
index 2b7dececf78c7ae2794ed6327a8875a61d38d209..f28ca5bcbf34722b75dc1bdb7046a7de5a044bf0 100644 (file)
@@ -24,6 +24,7 @@ CONFIG_CMD_SPL_WRITE_SIZE=0x20000
 CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_LOCK_UNLOCK=y
 CONFIG_CMD_CACHE=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=omap2-nand.0,nor0=physmap-flash.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=omap2-nand.0:512k(MLO),1792k(u-boot),128k(spl-os),128k(u-boot-env),6m(kernel),-(fs);physmap-flash.0:-(nor)"
 CONFIG_CMD_UBI=y
index a6038c167030a9eafbd57f6e084f71f77babed92..4fb8aec57dba9115fd4c5137c103a497e02fe542 100644 (file)
@@ -28,6 +28,7 @@ CONFIG_CMD_USB=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FS_UUID=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=omap2-nand.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=omap2-nand.0:512k(spl),1920k(u-boot),128k(u-boot-env),128k(dtb),6m(kernel),-(rootfs)"
 CONFIG_CMD_UBI=y
@@ -57,7 +58,6 @@ CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
 CONFIG_SYS_NAND_U_BOOT_LOCATIONS=y
 CONFIG_SYS_NAND_U_BOOT_OFFS=0x80000
 CONFIG_SPL_NAND_SIMPLE=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_USB=y
index 67fa13e87f741ab02e90196c80d2431d4b6fe4c5..2b8caf2d4a30e3387f618ebbcff128c268688497 100644 (file)
@@ -28,6 +28,7 @@ CONFIG_CMD_USB=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FS_UUID=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=omap2-nand.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=omap2-nand.0:512k(spl),1920k(u-boot),128k(u-boot-env),128k(dtb),6m(kernel),-(rootfs)"
 CONFIG_CMD_UBI=y
@@ -52,7 +53,6 @@ CONFIG_SPL_NAND_SIMPLE=y
 CONFIG_SMC911X=y
 CONFIG_SMC911X_BASE=0x2C000000
 CONFIG_SMC911X_32_BIT=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
 CONFIG_OMAP3_SPI=y
index 9b50a300a0d9a20a5a13dcbdb5d8ea94a27cfdeb..45e5b504f78969c4b8992cb8fa1bf86739c03ec9 100644 (file)
@@ -24,6 +24,7 @@ CONFIG_CMD_SPL_WRITE_SIZE=0x20000
 CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_LOCK_UNLOCK=y
 CONFIG_CMD_CACHE=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=omap2-nand.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=omap2-nand.0:512k(MLO),1792k(u-boot),128k(spl-os),128k(u-boot-env),6m(kernel),-(fs)"
 CONFIG_CMD_UBI=y
@@ -56,7 +57,6 @@ CONFIG_DM_REGULATOR=y
 CONFIG_DM_REGULATOR_FIXED=y
 CONFIG_DM_REGULATOR_GPIO=y
 CONFIG_SPECIFY_CONSOLE_INDEX=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
 CONFIG_OMAP3_SPI=y
index 16351ba41cc8af74acf5cf29f42b4f5d2c624c3b..e733584ebe48ead84e452914e535e1e33d2ea2aa 100644 (file)
@@ -23,6 +23,7 @@ CONFIG_CMD_SPL_WRITE_SIZE=0x20000
 CONFIG_CMD_NAND=y
 CONFIG_CMD_NAND_LOCK_UNLOCK=y
 CONFIG_CMD_CACHE=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=omap2-nand.0,nor0=physmap-flash.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=omap2-nand.0:512k(MLO),1792k(u-boot),128k(spl-os),128k(u-boot-env),6m(kernel),-(fs);physmap-flash.0:-(nor)"
 CONFIG_CMD_UBI=y
index f050ba8adcf26181b065889179c77bdc7b3db12d..1e7e5f7d8359d2719520cdae3f1a7c8e7b1716b7 100644 (file)
@@ -27,6 +27,7 @@ CONFIG_CMD_USB=y
 # CONFIG_CMD_NFS is not set
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=omap2-nand.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=omap2-nand.0:512k(xloader),1792k(u-boot),256k(environ),8m(linux),-(rootfs)"
 CONFIG_CMD_UBI=y
@@ -40,7 +41,6 @@ CONFIG_SMC911X=y
 CONFIG_SMC911X_BASE=0x2C000000
 CONFIG_SMC911X_32_BIT=y
 CONFIG_CONS_INDEX=3
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_USB=y
index c2b4a4f0d2b114249a8a61bb7d52c2a4c647c6f9..fb87d0da176269039c31f303680ceebe462aec46 100644 (file)
@@ -22,6 +22,7 @@ CONFIG_CMD_SPI=y
 # CONFIG_CMD_NET is not set
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=omap2-nand.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=omap2-nand.0:512k(xloader),1920k(uboot),128k(uboot-env),10m(boot),-(rootfs)"
 CONFIG_CMD_UBI=y
@@ -32,7 +33,6 @@ CONFIG_MMC_OMAP_HS=y
 CONFIG_NAND=y
 CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
 CONFIG_DM_SERIAL=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_FAT_WRITE=y
index 6cb1a2a60fe1172f973db1880de210e76322baff..325c0020cab4dfb79a5a32fcdfdd84f3945f73a2 100644 (file)
@@ -29,7 +29,6 @@ CONFIG_SYS_NAND_BUSWIDTH_16BIT=y
 CONFIG_SMC911X=y
 CONFIG_SMC911X_BASE=0x08000000
 CONFIG_SMC911X_32_BIT=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_USB=y
index e3a06c8f17e52fce44385a1db91109ae9e3c5e69..d66af98ba35c4ad0f2196159f843f9dacdb71a51 100644 (file)
@@ -27,6 +27,7 @@ CONFIG_CRC32_VERIFY=y
 # CONFIG_CMD_GPIO is not set
 CONFIG_CMD_NAND=y
 # CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_MTDPARTS=y
 CONFIG_CMD_DIAG=y
 CONFIG_CMD_UBI=y
 CONFIG_OF_CONTROL=y
index 6048a3467c03bd0267e9fd7870c565650b70a795..a01f1fe94e09c556547863fae037cecf1dc3f6dd 100644 (file)
@@ -21,6 +21,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=nand_mtd"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=nand_mtd:0x100000@0x000000(uboot),0x400000@0x100000(uImage),0x1fb00000@0x500000(rootfs)"
 CONFIG_CMD_UBI=y
index 6558549861c7a6b54f9c2c5ee99a5fd8bcd5ab90..0d17485fbb7938ee9be3b672aadcfc2355386d05 100644 (file)
@@ -21,6 +21,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=nand_mtd"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=nand_mtd:0x100000@0x000000(uboot),0x400000@0x100000(uImage),0x1fb00000@0x500000(rootfs)"
 CONFIG_CMD_UBI=y
index 65f25ae32a81028d90d0301fdbd204497925d52f..79c8f7fb0851a644816f1efa70c695322f67066c 100644 (file)
@@ -21,6 +21,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=nand_mtd"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=nand_mtd:0x100000@0x000000(uboot),0x400000@0x100000(uImage),0x1fb00000@0x500000(rootfs)"
 CONFIG_CMD_UBI=y
index fd86481b057025450b052db585244e37a0f861c9..0be0caa8262ef118ddedea193d2d8f31b39a8e40 100644 (file)
@@ -45,7 +45,6 @@ CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_DRIVER_TI_CPSW=y
 CONFIG_MII=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_USB=y
index 4af412d76ed9d0e6760ed74658907d759869bf07..33e8225e53608a23213b7876fd2da33994e70c9a 100644 (file)
@@ -45,7 +45,6 @@ CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_DRIVER_TI_CPSW=y
 CONFIG_MII=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_USB=y
index 8eaddaf0d30802d35eb0ca3c36f8eb13c0f279b2..66ee9ed38a21db0d34596bf6af4f1b0120471218 100644 (file)
@@ -34,6 +34,7 @@ CONFIG_CMD_NAND_TRIMFFS=y
 CONFIG_CMD_SF=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=nand:16m(uboot),1m(env),-(rootfs)"
 CONFIG_CMD_UBI=y
index 1398210406034374082aaca553f86845ae4ce220..3c8684ad958185f0c0285a8c4f1e023c865d8305 100644 (file)
@@ -50,7 +50,6 @@ CONFIG_MMC_OMAP_HS=y
 CONFIG_NAND=y
 CONFIG_DRIVER_TI_CPSW=y
 CONFIG_MII=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_USB=y
index 34a2f15610e6300c8149eeba7012be6a817732df..1dc3944d051d92f7cc0eda137e346b2cf49eeb16 100644 (file)
@@ -35,7 +35,6 @@ CONFIG_PHY_MICREL=y
 CONFIG_PHY_MICREL_KSZ90X1=y
 CONFIG_DRIVER_TI_CPSW=y
 CONFIG_MII=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_FAT_WRITE=y
index 8ab5112ea49b485d4af91348cd369fd9c36f8fb8..18d35a130f326e3355207a1f6d115aa24f8b565a 100644 (file)
@@ -34,6 +34,7 @@ CONFIG_CMD_MMC=y
 CONFIG_CMD_SF=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=gpmi-nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=gpmi-nand:-(nand);spi2.0:1024k(bootloader),64k(env1),64k(env2),-(rescue)"
 CONFIG_CMD_UBI=y
index 16f13097ff4b8c45ece01d439e23ce7161fbd68a..91487c1464ed2a3e41ded410dd3e2a267bb60df9 100644 (file)
@@ -40,6 +40,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=gpmi-nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=gpmi-nand:14M(spl),2M(uboot),512k(env1),512k(env2),495M(ubi0),14M(res0),2M(res1),512k(res2),512k(res3),-(ubi1)"
 CONFIG_CMD_UBI=y
index c6731a6cd526c0d9069de0ca5fb50d94468b8fcc..ee063063e32681714685a932f79ecafd73b0db2f 100644 (file)
@@ -40,6 +40,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=gpmi-nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=gpmi-nand:14M(spl),2M(uboot),512k(env1),512k(env2),-(ubi)"
 CONFIG_CMD_UBI=y
index 3a3cbc3b861daee138573cc0471b6d58d31cda5e..3aef5b590a77cee96ed1f02534cadff21ef40729 100644 (file)
@@ -17,6 +17,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_CMD_UBI=y
 CONFIG_ISO_PARTITION=y
 CONFIG_OF_CONTROL=y
index 6c01c598d5a79938a30e18a94870fac49f4019a2..d51db3d5cb28814c00c5f6bf6fb17bb57452e344 100644 (file)
@@ -63,7 +63,6 @@ CONFIG_DM_MMC=y
 CONFIG_RENESAS_SDHI=y
 CONFIG_MTD=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
index f9f13af4108a1fef9e94f886b3b9a4653e37de10..7d2e97a6f0b75c6bf099a04d39dd43a936526b27 100644 (file)
@@ -22,6 +22,7 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=orion_nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=orion_nand:-(ubi0);"
 CONFIG_CMD_UBI=y
index 05c1202c693bb4a1bafa6091386c3221da3f475e..4a5c3c6710a28d992a7fcb752d6694ee09d188f9 100644 (file)
@@ -50,6 +50,7 @@ CONFIG_CMD_CACHE=y
 CONFIG_CMD_TIME=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=omap2-nand.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=omap2-nand.0:128k(spl),128k(spl.backup1),128k(spl.backup2),128k(spl.backup3),1920k(u-boot),128k(uboot.env),5120k(kernel_a),5120k(kernel_b),8192k(mtdoops),-(rootfs)"
 CONFIG_CMD_UBI=y
@@ -69,7 +70,6 @@ CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT=1
 CONFIG_DRIVER_TI_CPSW=y
 CONFIG_MII=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_USB=y
index 7fd726fdda3578d1ad734bdab8512abb6ddc5dd7..e9e28192721bab237c24683c73084912c3344621 100644 (file)
@@ -11,7 +11,6 @@ CONFIG_NR_DRAM_BANKS=1
 CONFIG_CMD_BOOTEFI_SELFTEST=y
 CONFIG_CMD_PCI=y
 CONFIG_CMD_USB=y
-CONFIG_CMD_DATE=y
 CONFIG_OF_BOARD=y
 CONFIG_SCSI_AHCI=y
 CONFIG_AHCI_PCI=y
@@ -23,7 +22,6 @@ CONFIG_NVME=y
 CONFIG_PCI=y
 CONFIG_DM_PCI=y
 CONFIG_PCIE_ECAM_GENERIC=y
-CONFIG_RTC_PL031=y
 CONFIG_SCSI=y
 CONFIG_DM_SCSI=y
 CONFIG_SYSRESET=y
index fbceaf3c52f32c4dbaa53fff6ad8b77efc34f6e1..04c9afdb02e54c53ccbde381d51221670c558493 100644 (file)
@@ -11,7 +11,6 @@ CONFIG_NR_DRAM_BANKS=1
 CONFIG_CMD_BOOTEFI_SELFTEST=y
 CONFIG_CMD_PCI=y
 CONFIG_CMD_USB=y
-CONFIG_CMD_DATE=y
 CONFIG_OF_BOARD=y
 CONFIG_SCSI_AHCI=y
 CONFIG_AHCI_PCI=y
@@ -23,7 +22,6 @@ CONFIG_NVME=y
 CONFIG_PCI=y
 CONFIG_DM_PCI=y
 CONFIG_PCIE_ECAM_GENERIC=y
-CONFIG_RTC_PL031=y
 CONFIG_SCSI=y
 CONFIG_DM_SCSI=y
 CONFIG_SYSRESET=y
index 87870fc59578728d61ec2564be5f6fde8f255262..40712a44c3c583de772030585e9df1b264fc397d 100644 (file)
@@ -21,7 +21,6 @@ CONFIG_CMD_USB=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
-CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
index 67ef2632a97ee02e176dd6624b174aeab937c8ca..5af1bdb221f6b24c5aef37cab8ef155c62506dc3 100644 (file)
@@ -23,7 +23,6 @@ CONFIG_CMD_USB=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
-CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
index ef010497bbcfdc1f98ed127a26106efdc48df28a..09b64a385756e35fd856c09dde6583083782c1d6 100644 (file)
@@ -47,6 +47,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_TIME=y
 CONFIG_CMD_EXT2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=omap2-nand.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=omap2-nand.0:128k(spl),128k(spl.backup1),128k(spl.backup2),128k(spl.backup3),1920k(u-boot),512k(u-boot.env0),512k(u-boot.env1),300m(rootfs),512k(mtdoops),-(configuration)"
 CONFIG_CMD_UBI=y
@@ -66,7 +67,6 @@ CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT=1
 CONFIG_DRIVER_TI_CPSW=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_USB=y
index 6ebf8eaede474044bf8b09acd46bb47d99685f21..08eafc235e26e095f269c97cdf4cc99bd2af8961 100644 (file)
@@ -51,6 +51,7 @@ CONFIG_CMD_CACHE=y
 CONFIG_CMD_TIME=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=omap2-nand.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=omap2-nand.0:128k(spl),128k(spl.backup1),128k(spl.backup2),128k(spl.backup3),1920k(u-boot),128k(uboot.env),5120k(kernel_a),5120k(kernel_b),8192k(mtdoops),-(rootfs)"
 CONFIG_CMD_UBI=y
@@ -70,7 +71,6 @@ CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT=1
 CONFIG_DRIVER_TI_CPSW=y
 CONFIG_MII=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_USB=y
index e7e79308fdb09716a3b86630e48e43b4fa139e7d..5f5ff164eeacda52361c0d3353912fa544fe3f1d 100644 (file)
@@ -35,7 +35,6 @@ CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_SDMA=y
 CONFIG_MMC_SDHCI_S5P=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_DM_PMIC=y
 CONFIG_DM_PMIC_MAX8998=y
 CONFIG_USB=y
index e40ee003122e2eb3201f40d73f9d360ffd31c432..4a78b2da3d9b76e1a5ee2c25928c6886b09db116 100644 (file)
@@ -32,7 +32,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_FAT=y
 CONFIG_OF_CONTROL=y
 CONFIG_DEFAULT_DEVICE_TREE="at91-sama5d2_ptc_ek"
-CONFIG_ENV_IS_IN_MMC=y
+CONFIG_ENV_IS_IN_FAT=y
 CONFIG_DM=y
 CONFIG_SPL_DM_SEQ_ALIAS=y
 CONFIG_CLK=y
index 9ff71deb8c8a27ada27e8e9c9e2c7a8b79c9085c..eab38ec3665f5291737932c371c844c187f1fc11 100644 (file)
@@ -39,6 +39,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_CMD_UBI=y
 CONFIG_OF_CONTROL=y
 CONFIG_SPL_OF_CONTROL=y
index 39bb68b49dc5f272c6b24c3384d055ac18bdeb0f..ff7d2bffdd786685f2b71722266edc5927f21636 100644 (file)
@@ -36,6 +36,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_CMD_UBI=y
 CONFIG_OF_CONTROL=y
 CONFIG_SPL_OF_CONTROL=y
index 623eb267a22419c63bd4676f8adaf80b4b8ed0e2..e6680d9a594b5e241a742a858698db5d03880151 100644 (file)
@@ -3,7 +3,6 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_SANDBOX64=y
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_NR_DRAM_BANKS=1
-CONFIG_ANDROID_BOOT_IMAGE=y
 CONFIG_FIT=y
 CONFIG_FIT_SIGNATURE=y
 CONFIG_FIT_VERBOSE=y
index 2ce336fc81c2caa4262a9bc0b098234f651c4bc7..5a744f47917c82f54a7ed62be390370e6a5be258 100644 (file)
@@ -3,7 +3,6 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEBUG_UART=y
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_NR_DRAM_BANKS=1
-CONFIG_ANDROID_BOOT_IMAGE=y
 CONFIG_FIT=y
 CONFIG_FIT_SIGNATURE=y
 CONFIG_FIT_VERBOSE=y
@@ -24,7 +23,6 @@ CONFIG_DISPLAY_BOARDINFO_LATE=y
 CONFIG_CMD_CPU=y
 CONFIG_CMD_LICENSE=y
 CONFIG_CMD_BOOTZ=y
-CONFIG_CMD_BOOTEFI_SELFTEST=y
 # CONFIG_CMD_ELF is not set
 CONFIG_CMD_ASKENV=y
 CONFIG_CMD_GREPENV=y
@@ -197,12 +195,12 @@ CONFIG_CONSOLE_ROTATION=y
 CONFIG_CONSOLE_TRUETYPE=y
 CONFIG_CONSOLE_TRUETYPE_CANTORAONE=y
 CONFIG_VIDEO_SANDBOX_SDL=y
+CONFIG_OSD=y
+CONFIG_SANDBOX_OSD=y
 CONFIG_W1=y
 CONFIG_W1_GPIO=y
 CONFIG_W1_EEPROM=y
 CONFIG_W1_EEPROM_SANDBOX=y
-CONFIG_OSD=y
-CONFIG_SANDBOX_OSD=y
 CONFIG_WDT=y
 CONFIG_WDT_SANDBOX=y
 CONFIG_FS_CBFS=y
index 2f8a98c379c913862b99b0bb73bb8915998df76d..756b839b0819e1a496ebe7b8a2c47620820b43b8 100644 (file)
@@ -2,7 +2,6 @@ CONFIG_SYS_TEXT_BASE=0
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_NR_DRAM_BANKS=1
-CONFIG_ANDROID_BOOT_IMAGE=y
 CONFIG_FIT=y
 CONFIG_FIT_SIGNATURE=y
 CONFIG_FIT_VERBOSE=y
index c019eeb65bde7f414c6cdbf0bdc8a12547a84d24..f44e80e8c33fc319d672dcbeed1d3e8052045725 100644 (file)
@@ -8,7 +8,6 @@ CONFIG_SPL=y
 CONFIG_SANDBOX_SPL=y
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_NR_DRAM_BANKS=1
-CONFIG_ANDROID_BOOT_IMAGE=y
 CONFIG_FIT=y
 CONFIG_FIT_SIGNATURE=y
 CONFIG_FIT_VERBOSE=y
index c887f6ff57209cb99225f97ac62e3b0627f6aa9c..04b00cdea9d4643eb5968a6b023c6c839a7b2826 100644 (file)
@@ -23,6 +23,7 @@ CONFIG_CMD_EXT2=y
 CONFIG_CMD_EXT4=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=orion_nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=orion_nand:512K(uboot),512K(env),4M(kernel),-(rootfs)"
 CONFIG_CMD_UBI=y
index c7166892d47cdd29dd8a03ed03df2109655890d9..3350e6903960778efe97f976817d33d11507d641 100644 (file)
@@ -65,7 +65,6 @@ CONFIG_SH_MMCIF=y
 CONFIG_RENESAS_SDHI=y
 CONFIG_MTD=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
index b0bb18abc861e604753608e6c45a8a0b12c0f325..cf6f2757cae28e010fa4bb179e3dbca89bec98f5 100644 (file)
@@ -44,7 +44,6 @@ CONFIG_CLK=y
 CONFIG_CLK_AT91=y
 CONFIG_DFU_NAND=y
 # CONFIG_MMC is not set
-CONFIG_MTD_PARTITIONS=y
 CONFIG_NAND=y
 CONFIG_NAND_ATMEL=y
 CONFIG_PHYLIB=y
index 91f7301d245b54d5c7fdad5247fea3f7194bb0be..87b638f21dd0f94d533a9641d6b21f7a25f3db91 100644 (file)
@@ -22,6 +22,5 @@ CONFIG_DEFAULT_DEVICE_TREE="s5pc1xx-smdkc100"
 CONFIG_ENV_IS_IN_ONENAND=y
 # CONFIG_MMC is not set
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_SMC911X=y
 CONFIG_SMC911X_BASE=0x98800300
index 269d59ec539e00fadc49d551b200f404d4c77cf5..b7ded7686bbd4cb4b27698c4184cb3047b548e91 100644 (file)
@@ -29,7 +29,6 @@ CONFIG_SYS_OMAP24_I2C_SPEED=400000
 CONFIG_TWL4030_INPUT=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_CONS_INDEX=3
-CONFIG_SYS_NS16550=y
 CONFIG_USB=y
 CONFIG_USB_MUSB_GADGET=y
 CONFIG_USB_MUSB_OMAP2PLUS=y
index 56240305798a53f5f73c2b483e8c3b6072bd6286..6ebda811355e3223fe974fb78d6ffb05c04a555d 100644 (file)
@@ -34,7 +34,6 @@ CONFIG_DM_GPIO=y
 CONFIG_DWAPB_GPIO=y
 CONFIG_DM_MMC=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_DM_ETH=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_MII=y
index 7b26e20327d7d8b3772b9aa1b4f08ce09a4e4527..b6f4f8a3dd2fd6cce92390dec44917fa235e89b4 100644 (file)
@@ -51,7 +51,6 @@ CONFIG_SYS_I2C_DW=y
 CONFIG_DM_MMC=y
 CONFIG_MMC_DW=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_DM_ETH=y
 CONFIG_PHY_GIGE=y
 CONFIG_ETH_DESIGNWARE=y
index 6f1873e7e30326a1a1306597f297e9400c3c1c1e..c9490d47a4971676aedf170f965dea4d73af768c 100644 (file)
@@ -46,7 +46,6 @@ CONFIG_SYS_I2C_DW=y
 CONFIG_DM_MMC=y
 CONFIG_MMC_DW=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_PHY_MICREL=y
 CONFIG_PHY_MICREL_KSZ90X1=y
 CONFIG_DM_ETH=y
index 28068df75cc67582e397807f00d43fea00acfa03..b6c8e6c84d61edd050d8b65d71fd7b8ded88e573 100644 (file)
@@ -45,7 +45,6 @@ CONFIG_SYS_I2C_DW=y
 CONFIG_DM_MMC=y
 CONFIG_MMC_DW=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_PHY_MICREL=y
 CONFIG_PHY_MICREL_KSZ90X1=y
 CONFIG_DM_ETH=y
index 164e3d84704ea177ff0aba8b4d4c84dbf7327e36..72f460c9124d62ac5b2fda6a0843a006d8a41f93 100644 (file)
@@ -23,7 +23,6 @@ CONFIG_SYS_I2C_DW=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_PHY_GIGE=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_MII=y
index 17bff86ac5f5503e05561c014666d1040fcea1f4..95ca7de900b3f5ec19ea633d45f985ba23a99df5 100644 (file)
@@ -23,7 +23,6 @@ CONFIG_SYS_I2C_DW=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_NAND=y
 CONFIG_PHY_GIGE=y
 CONFIG_ETH_DESIGNWARE=y
index 297f7890e9368bdff90440637b15b9f169baf88c..bc0c3ec09132cc91991141b9edb66919d9ce4d5c 100644 (file)
@@ -23,7 +23,6 @@ CONFIG_SYS_I2C_DW=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_PHY_GIGE=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_MII=y
index e1b1e9362eb74dc1cba7d385012570006d3bc4a9..9b90cd86389afac668471138a9dfeec727f93a74 100644 (file)
@@ -23,7 +23,6 @@ CONFIG_SYS_I2C_DW=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_NAND=y
 CONFIG_PHY_GIGE=y
 CONFIG_ETH_DESIGNWARE=y
index 4263afbc4597bd8bc93450f240da5d0c0d7dd9ad..0fc0d0e939a1eff78d2e78f1f54d94722abfd151 100644 (file)
@@ -23,7 +23,6 @@ CONFIG_SYS_I2C_DW=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_PHY_GIGE=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_MII=y
index 433d972e842b028c033689109d045e26e8e553b3..ea65de9a9b59b004c649d30fb1b6f04870a7fe55 100644 (file)
@@ -23,7 +23,6 @@ CONFIG_SYS_I2C_DW=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_NAND=y
 CONFIG_PHY_GIGE=y
 CONFIG_ETH_DESIGNWARE=y
index 6969644cbfa299b93965dd273b336360bebf3408..906d813453919c070848c9292a7c501a50d89f87 100644 (file)
@@ -21,7 +21,6 @@ CONFIG_CMD_PING=y
 CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_SYS_I2C_DW=y
 # CONFIG_MMC is not set
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD_DEVICE=y
 CONFIG_FLASH_CFI_DRIVER=y
index 2b05b56e60357cd3003e35657eb5e8fcddefa878..7786e66998253bf0dbd703237517d0b4dd88d121 100644 (file)
@@ -23,7 +23,6 @@ CONFIG_SYS_I2C_DW=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_PHY_GIGE=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_MII=y
index bb14524901f048a97227e287f76f98c2e291d8bf..1d41522b2a21cdd7670ab62e3a2763d5e6441699 100644 (file)
@@ -23,7 +23,6 @@ CONFIG_SYS_I2C_DW=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_NAND=y
 CONFIG_PHY_GIGE=y
 CONFIG_ETH_DESIGNWARE=y
index 847b2c8c1ff84c11394805ab335e1402586cf0b7..b5214b5d8284c851a0a24e4a9eb0d0773f6c58d6 100644 (file)
@@ -21,7 +21,6 @@ CONFIG_CMD_PING=y
 CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_SYS_I2C_DW=y
 # CONFIG_MMC is not set
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD_DEVICE=y
 CONFIG_FLASH_CFI_DRIVER=y
index 3dc24d6500adc61f1aa33d5b498a0a07b5a74727..9c66bcf4249d9cc841d7f862d05c8892ad5cd663 100644 (file)
@@ -23,7 +23,6 @@ CONFIG_SYS_I2C_DW=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_PHY_GIGE=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_MII=y
index 10bcf69b0ecfce89f7d03314167ecaeb716baee3..a80208cc685564aa9eeb58a2167d4d77aa027f2e 100644 (file)
@@ -23,7 +23,6 @@ CONFIG_SYS_I2C_DW=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_NAND=y
 CONFIG_PHY_GIGE=y
 CONFIG_ETH_DESIGNWARE=y
index 2f97047750f83baaa17dfb22fe2f8c4f6eb81c89..7177efea1011ed0f870ff8c2f6e52b9455e395f2 100644 (file)
@@ -21,7 +21,6 @@ CONFIG_CMD_PING=y
 CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_SYS_I2C_DW=y
 # CONFIG_MMC is not set
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD_DEVICE=y
 CONFIG_FLASH_CFI_DRIVER=y
index 48449f7b0aba2b8ae023dff09afa04e891b8aaec..3c10f3261e5cd467525918dafbdbe49f62fe065c 100644 (file)
@@ -23,7 +23,6 @@ CONFIG_SYS_I2C_DW=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_PHY_GIGE=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_MII=y
index c9e3b5bf569eb6cae83f0516ab118b376362a87f..8fb84bcc604f30def443d2fbe16d22938c92fbbf 100644 (file)
@@ -23,7 +23,6 @@ CONFIG_SYS_I2C_DW=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_NAND=y
 CONFIG_PHY_GIGE=y
 CONFIG_ETH_DESIGNWARE=y
index dea26052f1d8b18daaaf1236ba7a9c9a8ab2f0ac..2cf39b450cf7187a181ea3680ad77eb56283f87c 100644 (file)
@@ -21,7 +21,6 @@ CONFIG_CMD_PING=y
 CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_SYS_I2C_DW=y
 # CONFIG_MMC is not set
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD_DEVICE=y
 CONFIG_FLASH_CFI_DRIVER=y
index e6784e0e42763b2c2fba2c20f7efe603db843ef0..d2972c1f04f0234523eba8941eb10627d1b9b2ec 100644 (file)
@@ -26,7 +26,6 @@ CONFIG_SYS_I2C_DW=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_PHY_GIGE=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_MII=y
index 535a702218c48f9013fa7cd987626366243524b2..170327224e2395ba5ad00b9f8f5a2b4c323ab878 100644 (file)
@@ -23,7 +23,6 @@ CONFIG_SYS_I2C_DW=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_NAND=y
 CONFIG_PHY_GIGE=y
 CONFIG_ETH_DESIGNWARE=y
index 8cf0a24c76e9ac3f284a510486ce9b2b9119cfa8..5c7b0a8ab41f8a2367fb610dbfd429d2346467aa 100644 (file)
@@ -23,7 +23,6 @@ CONFIG_SYS_I2C_DW=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_PHY_GIGE=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_MII=y
index f69772b6319b7c6484da6c88ef36c2dfe922ddbb..078e934bba93292700c9312bae68d34cc07379cf 100644 (file)
@@ -23,7 +23,6 @@ CONFIG_SYS_I2C_DW=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_NAND=y
 CONFIG_PHY_GIGE=y
 CONFIG_ETH_DESIGNWARE=y
index 9ffcbca0af9ee7a9eb87c451d36fe0268a23b8a6..acd05564f3273de0a191d49dc009d8fe30844dcb 100644 (file)
@@ -63,7 +63,6 @@ CONFIG_DM_MMC=y
 CONFIG_RENESAS_SDHI=y
 CONFIG_MTD=y
 CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_BAR=y
 CONFIG_SPI_FLASH_SPANSION=y
index 8f3248e06683b1583bf4ceae0ffea1da5bcaf67d..e6b97b866dd80e0338e89e3e43491cd69487ef24 100644 (file)
@@ -22,6 +22,7 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nor0=boot"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=boot:768k(u-boot),128k(env),128k(envred),-(ubi0);"
 CONFIG_CMD_UBI=y
index bafd8ab16cb307ccb8322dfc8317b110bcc8f0d4..ee5da43ccbaf8adaa013349dc0176f7524585f0b 100644 (file)
@@ -48,7 +48,6 @@ CONFIG_CLK=y
 CONFIG_CLK_AT91=y
 CONFIG_DFU_NAND=y
 # CONFIG_MMC is not set
-CONFIG_MTD_PARTITIONS=y
 CONFIG_NAND=y
 CONFIG_NAND_ATMEL=y
 CONFIG_SPI_FLASH=y
index a534d0a6c97c3d8e7a7abc0ef44d31347a766d25..b856b9d3c74a7509c47207f59c83c29583522871 100644 (file)
@@ -47,6 +47,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_TIME=y
 CONFIG_CMD_EXT2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=omap2-nand.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=omap2-nand.0:128k(spl),128k(spl.backup1),128k(spl.backup2),128k(spl.backup3),1920k(u-boot),512k(u-boot.env0),512k(u-boot.env1),512k(mtdoops),-(rootfs)"
 CONFIG_CMD_UBI=y
@@ -66,7 +67,6 @@ CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_MTD_UBI_FASTMAP=y
 CONFIG_MTD_UBI_FASTMAP_AUTOCONVERT=1
 CONFIG_DRIVER_TI_CPSW=y
-CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_OMAP3_SPI=y
 CONFIG_USB=y
index 9e0dfdafae537de12e544dc72f48a2fa33fa7562..2136176b69df84aa08225375a0c452ca65a1621a 100644 (file)
@@ -28,6 +28,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=gpmi-nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=gpmi-nand:16M(uboot),512k(env1),512k(env2),-(ubi)"
 CONFIG_CMD_UBI=y
index f92d391e3f63e258df50990ff4fc56a158963b0f..300f3faf6b347492848e8cbe4dad064a9878bd2a 100644 (file)
@@ -18,6 +18,7 @@ CONFIG_CMD_NAND_LOCK_UNLOCK=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=omap2-nand.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=omap2-nand.0:128k(SPL),1m(u-boot),384k(u-boot-env1),1152k(mtdoops),384k(u-boot-env2),5m(kernel),2m(fdt),-(ubi)"
 CONFIG_CMD_UBI=y
index b44a76656ef02e52229fb07c71117eede59a6b3e..ab2b15111d0765a93917dd165cdd8aa525940a3d 100644 (file)
@@ -18,6 +18,7 @@ CONFIG_CMD_NAND_LOCK_UNLOCK=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=omap2-nand.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=omap2-nand.0:128k(SPL),1m(u-boot),384k(u-boot-env1),1152k(mtdoops),384k(u-boot-env2),5m(kernel),2m(fdt),-(ubi)"
 CONFIG_CMD_UBI=y
index bee1baa41edfcf1539ef2a0d2b7b33646a0cc032..e5826719b9f4d938df3c6a824adfdba088fb334d 100644 (file)
@@ -22,6 +22,7 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nor0=boot"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=boot:768k(u-boot),128k(env),128k(envred),-(ubi0);"
 CONFIG_CMD_UBI=y
index 6463abcd3d44a992d15bd02fb022bdd1b4a84c0f..749ed31acddb1f22c6d617526f001cbead67dc5f 100644 (file)
@@ -13,7 +13,6 @@ CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_ARCH_EARLY_INIT_R=y
-CONFIG_OF_BOARD_FIXUP=y
 CONFIG_CMD_CLK=y
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_I2C=y
@@ -30,6 +29,7 @@ CONFIG_CMD_MVEBU_BUBT=y
 CONFIG_CMD_BTRFS=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_MAC_PARTITION=y
+CONFIG_OF_BOARD_FIXUP=y
 CONFIG_DEFAULT_DEVICE_TREE="armada-3720-turris-mox"
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_CLK=y
@@ -49,14 +49,14 @@ CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_PHY_GIGE=y
 CONFIG_MVNETA=y
-CONFIG_MVEBU_COMPHY_SUPPORT=y
-CONFIG_PINCTRL=y
-CONFIG_PINCTRL_ARMADA_37XX=y
-CONFIG_DM_REGULATOR_FIXED=y
 CONFIG_PCI=y
 CONFIG_DM_PCI=y
 CONFIG_PCI_AARDVARK=y
 # CONFIG_PCI_PNP is not set
+CONFIG_MVEBU_COMPHY_SUPPORT=y
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_ARMADA_37XX=y
+CONFIG_DM_REGULATOR_FIXED=y
 # CONFIG_SPL_SERIAL_PRESENT is not set
 CONFIG_DEBUG_MVEBU_A3700_UART=y
 CONFIG_DEBUG_UART_SHIFT=2
index 69b359c52741e6813ee58744104c8c56494bbede..204d3e4f687f1ec258b3582487d241e2cd666620 100644 (file)
@@ -22,6 +22,7 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nor0=boot"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=boot:768k(u-boot),128k(env),128k(envred),-(ubi0);"
 CONFIG_CMD_UBI=y
index 4e3000c44a4b3176f216251d4e59e35eefd94935..5632e6d27179f7cb4505e4fe57b17dad172af4cb 100644 (file)
@@ -28,6 +28,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=omap2-nand.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=omap2-nand.0:512k(MLO),1m(u-boot),256k(env1),256k(env2),6m(kernel),-(rootfs)"
 CONFIG_CMD_UBI=y
index bfaef1381de08368d394016d9ce0fa5de5960010..c9a860c20f5e2a33eefa1eb07a5a3b74ffaac8a4 100644 (file)
@@ -12,27 +12,17 @@ CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_NR_DRAM_BANKS=1
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg"
-CONFIG_BOOTCOMMAND="run findfdt; run distro_bootcmd"
 CONFIG_BOOTDELAY=3
-CONFIG_SUPPORT_RAW_INITRD=y
+CONFIG_BOOTCOMMAND="run findfdt; run distro_bootcmd"
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL_EXT_SUPPORT=y
 CONFIG_SPL_I2C_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
-CONFIG_HUSH_PARSER=y
-CONFIG_CMD_BOOTZ=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_MMC=y
 CONFIG_CMD_SATA=y
-CONFIG_CMD_DHCP=y
-CONFIG_CMD_MII=y
-CONFIG_CMD_PING=y
 CONFIG_CMD_CACHE=y
-CONFIG_CMD_EXT2=y
-CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
-CONFIG_CMD_FAT=y
-CONFIG_CMD_FS_GENERIC=y
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
 CONFIG_DM=y
index d9400b859657b685462c32026916e1ab38d11c5a..6b9e22ac0eeddd85f3b5d6307c7d237f4cc47741 100644 (file)
@@ -24,6 +24,7 @@ CONFIG_CMD_TFTPPUT=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_TIME=y
 # CONFIG_CMD_MISC is not set
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=uniphier-nand.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=uniphier-nand.0:1m(firmware),-(UBI)"
 CONFIG_CMD_UBI=y
index 7b1f0064238e567dad0a80d94f9afb05cc6406fc..4c06f272b14e53e69f3a36a05e571dcae06b28fd 100644 (file)
@@ -23,6 +23,7 @@ CONFIG_CMD_TFTPPUT=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_TIME=y
 # CONFIG_CMD_MISC is not set
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=uniphier-nand.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=uniphier-nand.0:1m(firmware),-(UBI)"
 CONFIG_CMD_UBI=y
index 25587557c51c1e6e62de056189f73f65ab8957fa..f8f9bdf05c3790ed5b54b2b67b2798582d7c386b 100644 (file)
@@ -20,6 +20,7 @@ CONFIG_CMD_TFTPPUT=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_TIME=y
 # CONFIG_CMD_MISC is not set
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=uniphier-nand.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=uniphier-nand.0:1m(firmware),-(UBI)"
 CONFIG_CMD_UBI=y
index 4bbc6c407e337d28508f8331906d41098ee62f98..ded3de04993ab417443ca8b2a47df21c1baf44f0 100644 (file)
@@ -17,6 +17,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_SNTP=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="onenand0=onenand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=onenand:128k(u-boot),128k(env),20m(kernel),-(rootfs)"
 CONFIG_CMD_UBI=y
index 6cbec322502539b128e46d9d2f3c0df425deea72..4afb03ee9eb8b1984c00b1cefcf77c343b5499de 100644 (file)
@@ -21,6 +21,7 @@ CONFIG_CMD_ONENAND=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_MISC is not set
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="onenand0=onenand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=onenand:128k(u-boot),128k(env),20m(kernel),-(rootfs)"
 CONFIG_CMD_UBI=y
index baa83978965f6b51b6587dd8a22c7cfc81a28637..e7e9c6cde1f0c89a7f307882356a343be5efa4cf 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_CMD_ONENAND=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_NET is not set
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="onenand0=onenand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=onenand:128k(u-boot),128k(env),20m(kernel),-(rootfs)"
 CONFIG_CMD_UBI=y
index e5a848d930c4f0597949763f7560d9ab497f1e70..776472666c57ed1a3e90080af6aafc131c757e1c 100644 (file)
@@ -21,6 +21,7 @@ CONFIG_CMD_ONENAND=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_MISC is not set
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="onenand0=onenand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=onenand:128k(u-boot),128k(env),20m(kernel),-(rootfs)"
 CONFIG_CMD_UBI=y
index 7c40e1e15933e12e5bb72af0c43c7019f3814e40..f1d01d9c90b5381f276c415927695758e2cfad17 100644 (file)
@@ -17,6 +17,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_SNTP=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="onenand0=onenand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=onenand:128k(u-boot),128k(env),20m(kernel),-(rootfs)"
 CONFIG_CMD_UBI=y
index e7d6f91c821cbe113f2420c7919b24bd86dc7511..751f8819426d81a7ec388292fb9447b5f48caab7 100644 (file)
@@ -21,6 +21,7 @@ CONFIG_CMD_ONENAND=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_MISC is not set
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="onenand0=onenand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=onenand:128k(u-boot),128k(env),20m(kernel),-(rootfs)"
 CONFIG_CMD_UBI=y
index bed970b01483b5f29f3b246dfdd5f241896a8033..a568c6d10e0b8a8d7bb3463cab3f1bf18b8ae305 100644 (file)
@@ -1,7 +1,7 @@
 CONFIG_ARM=y
 CONFIG_ARCH_MX7=y
-CONFIG_SECURE_BOOT=y
 CONFIG_SYS_TEXT_BASE=0x87800000
+CONFIG_SECURE_BOOT=y
 CONFIG_TARGET_WARP7=y
 CONFIG_ARMV7_BOOT_SEC_DEFAULT=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/warp7/imximage.cfg"
@@ -14,7 +14,6 @@ CONFIG_CMD_MMC=y
 CONFIG_CMD_PART=y
 CONFIG_CMD_USB=y
 CONFIG_CMD_USB_MASS_STORAGE=y
-CONFIG_CMD_SETEXPR=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT2=y
index a1c0b69ea805c3f2255daff39a9eabe522ed05e5..955c7af42afe4cf230531649a9c94f6f8d2052c2 100644 (file)
@@ -31,6 +31,7 @@ CONFIG_CMD_FS_GENERIC=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_DFU_MMC=y
 CONFIG_FSL_ESDHC=y
+CONFIG_OPTEE=y
 CONFIG_USB=y
 CONFIG_USB_EHCI_HCD=y
 CONFIG_MXC_USB_OTG_HACTIVE=y
@@ -45,8 +46,7 @@ CONFIG_USB_ETHER=y
 CONFIG_USB_ETH_CDC=y
 CONFIG_USBNET_HOST_ADDR="de:ad:be:af:00:00"
 CONFIG_OF_LIBFDT=y
-CONFIG_OPTEE=y
+CONFIG_OPTEE_LOAD_ADDR=0x84000000
 CONFIG_OPTEE_TZDRAM_SIZE=0x3000000
 CONFIG_OPTEE_TZDRAM_BASE=0x9d000000
-CONFIG_OPTEE_LOAD_ADDR=0x84000000
 CONFIG_BOOTM_OPTEE=y
index b7cc6003c63c0e7abfbcd1d0da5531a0be8bdbb0..33591d73e0d1bcb63ca8590ec33fa33ae86cc4b9 100644 (file)
@@ -23,9 +23,8 @@ CONFIG_CMD_NAND_TRIMFFS=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_ENV_IS_IN_NAND=y
-CONFIG_MTD_DEVICE=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_NAND=y
 CONFIG_NAND_ATMEL=y
 CONFIG_LZMA=y
index ec90c0f78c0501103c5c9fe621c54e4982404488..a5cc579ce5e0248c3e6d5ab252d89f31dc84f9b7 100644 (file)
@@ -28,7 +28,6 @@ CONFIG_EFI_PARTITION=y
 CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_MXC_GPIO=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 12e949c65a2b23d27b2646c52c33ae84456b1fc5..00c219f04689a6da0296a20f07613e04002f2fdd 100644 (file)
@@ -39,7 +39,6 @@ CONFIG_EFI_PARTITION=y
 CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_MXC_GPIO=y
 CONFIG_FSL_ESDHC=y
-CONFIG_MTD_PARTITIONS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_USE_BUFFER_WRITE=y
index 4af1a21e81cf6ca4f6d9453c95c666b160659d21..c8f5f662327bec5b806fd4b71561f73322c4a6fc 100644 (file)
@@ -35,6 +35,7 @@ CONFIG_CMD_CACHE=y
 CONFIG_CMD_DATE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=nand"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=nand:64M(ubi0),64M(ubi1)"
 CONFIG_CMD_UBI=y
diff --git a/doc/device-tree-bindings/net/mediatek,mt7628-eth.txt b/doc/device-tree-bindings/net/mediatek,mt7628-eth.txt
new file mode 100644 (file)
index 0000000..ec97504
--- /dev/null
@@ -0,0 +1,17 @@
+* MediaTek Frame Engine Ethernet controller
+
+Required properties:
+- compatible: should be "mediatek,mt7628-eth"
+- reg: address and length of the register set for the frame
+       engine ethernet controller and the internal switch.
+- syscon: phandle to the system controller
+
+Example:
+
+eth@10100000 {
+       compatible = "mediatek,mt7628-eth";
+       reg = <0x10100000 0x10000
+              0x10110000 0x8000>;
+
+       syscon = <&sysc>;
+};
index 526470051c5d2e35a3d57aace3c99f67fd04bff4..dbee13a18297aa454c2e4292a584841bbf184dcc 100644 (file)
@@ -165,6 +165,35 @@ static ulong ast2500_clk_get_rate(struct clk *clk)
        return rate;
 }
 
+struct ast2500_clock_config {
+       ulong input_rate;
+       ulong rate;
+       struct ast2500_div_config cfg;
+};
+
+static const struct ast2500_clock_config ast2500_clock_config_defaults[] = {
+       { 24000000, 250000000, { .num = 124, .denum = 1, .post_div = 5 } },
+};
+
+static bool ast2500_get_clock_config_default(ulong input_rate,
+                                            ulong requested_rate,
+                                            struct ast2500_div_config *cfg)
+{
+       int i;
+
+       for (i = 0; i < ARRAY_SIZE(ast2500_clock_config_defaults); i++) {
+               const struct ast2500_clock_config *default_cfg =
+                       &ast2500_clock_config_defaults[i];
+               if (default_cfg->input_rate == input_rate &&
+                   default_cfg->rate == requested_rate) {
+                       *cfg = default_cfg->cfg;
+                       return true;
+               }
+       }
+
+       return false;
+}
+
 /*
  * @input_rate - the rate of input clock in Hz
  * @requested_rate - desired output rate in Hz
@@ -189,6 +218,12 @@ static ulong ast2500_calc_clock_config(ulong input_rate, ulong requested_rate,
        ulong delta = rate_khz;
        ulong new_rate_khz = 0;
 
+       /*
+        * Look for a well known frequency first.
+        */
+       if (ast2500_get_clock_config_default(input_rate, requested_rate, cfg))
+               return requested_rate;
+
        for (; it.denum <= max_vals.denum; ++it.denum) {
                for (it.post_div = 0; it.post_div <= max_vals.post_div;
                     ++it.post_div) {
@@ -318,6 +353,9 @@ static ulong ast2500_configure_d2pll(struct ast2500_scu *scu, ulong rate)
        /*
         * The values and the meaning of the next three
         * parameters are undocumented. Taken from Aspeed SDK.
+        *
+        * TODO(clg@kaod.org): the SIP and SIC values depend on the
+        * Numerator value
         */
        const u32 d2_pll_ext_param = 0x2c;
        const u32 d2_pll_sip = 0x11;
@@ -411,6 +449,7 @@ static int ast2500_clk_enable(struct clk *clk)
                break;
        case PLL_D2PLL:
                ast2500_configure_d2pll(priv->scu, D2PLL_DEFAULT_RATE);
+               break;
        default:
                return -ENOENT;
        }
index 51ab484c2a4953194b3d36e59e262ad24048eba1..4692736c9d24fe1d44cd280ad4292ab6e23b6198 100644 (file)
@@ -30,6 +30,7 @@ config DFU_MMC
 
 config DFU_NAND
        bool "NAND back end for DFU"
+       depends on CMD_MTDPARTS
        help
          This option enables using DFU to read and write to NAND based
          storage.
index d6b59498e5de01f4e3866aaa65dcbf0c0b17af41..114dd910ab0c04dbd26ffb7aafa46cd818c5a7e4 100644 (file)
@@ -453,7 +453,7 @@ int fpgamgr_program_finish(void)
  */
 int socfpga_load(Altera_desc *desc, const void *rbf_data, size_t rbf_size)
 {
-       unsigned long status;
+       int status;
 
        /* disable all signals from hps peripheral controller to fpga */
        writel(0, &system_manager_base->fpgaintf_en_global);
index 184de743fd33822feeba07ae8df6fecac3bb35a0..6d16e0b37fb0667accab4e6b620546f34a236377 100644 (file)
@@ -204,7 +204,7 @@ static int fpgamgr_program_poll_usermode(void)
  */
 int socfpga_load(Altera_desc *desc, const void *rbf_data, size_t rbf_size)
 {
-       unsigned long status;
+       int status;
 
        if ((uint32_t)rbf_data & 0x3) {
                puts("FPGA: Unaligned data, realign to 32bit boundary.\n");
index 535b2f12eade9a920357518e6196da3e35ec0edd..0bb484498a8e5f4ad77bb2f2e99ce82ca131d6e6 100644 (file)
@@ -227,7 +227,7 @@ static int pca953x_xlate(struct udevice *dev, struct gpio_desc *desc,
                         struct ofnode_phandle_args *args)
 {
        desc->offset = args->args[0];
-       desc->flags = args->args[1] & (GPIO_ACTIVE_LOW ? GPIOD_ACTIVE_LOW : 0);
+       desc->flags = args->args[1] & GPIO_ACTIVE_LOW ? GPIOD_ACTIVE_LOW : 0;
 
        return 0;
 }
index 3c702b3ed815789d8dc42032df85c28da079ddf8..7544b84ab614cbd525ad5a9dc1100e4967886455 100644 (file)
@@ -317,6 +317,10 @@ static int dwmci_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
        } else if (mask & DWMCI_INTMSK_RE) {
                debug("%s: Response Error.\n", __func__);
                return -EIO;
+       } else if ((cmd->resp_type & MMC_RSP_CRC) &&
+                  (mask & DWMCI_INTMSK_RCRC)) {
+               debug("%s: Response CRC Error.\n", __func__);
+               return -EIO;
        }
 
 
index f8dc5f57ce16af300ffa362b8c550ab32dc14ec0..e7f96f8bf224a8b61d79b30bfeafd9e693433697 100644 (file)
@@ -34,6 +34,8 @@
 #define   RENESAS_SDHI_SCC_RVSREQ_RVSERR               BIT(2)
 #define RENESAS_SDHI_SCC_SMPCMP                        0x818
 #define RENESAS_SDHI_SCC_TMPPORT2                      0x81c
+#define   RENESAS_SDHI_SCC_TMPPORT2_HS400EN            BIT(31)
+#define   RENESAS_SDHI_SCC_TMPPORT2_HS400OSEL          BIT(4)
 
 #define RENESAS_SDHI_MAX_TAP 3
 
@@ -49,12 +51,9 @@ static unsigned int renesas_sdhi_init_tuning(struct tmio_sd_priv *priv)
        tmio_sd_writel(priv, reg, TMIO_SD_CLKCTL);
 
        /* Set sampling clock selection range */
-       tmio_sd_writel(priv, 0x8 << RENESAS_SDHI_SCC_DTCNTL_TAPNUM_SHIFT,
-                          RENESAS_SDHI_SCC_DTCNTL);
-
-       reg = tmio_sd_readl(priv, RENESAS_SDHI_SCC_DTCNTL);
-       reg |= RENESAS_SDHI_SCC_DTCNTL_TAPEN;
-       tmio_sd_writel(priv, reg, RENESAS_SDHI_SCC_DTCNTL);
+       tmio_sd_writel(priv, (0x8 << RENESAS_SDHI_SCC_DTCNTL_TAPNUM_SHIFT) |
+                            RENESAS_SDHI_SCC_DTCNTL_TAPEN,
+                            RENESAS_SDHI_SCC_DTCNTL);
 
        reg = tmio_sd_readl(priv, RENESAS_SDHI_SCC_CKSEL);
        reg |= RENESAS_SDHI_SCC_CKSEL_DTSEL;
@@ -90,6 +89,11 @@ static void renesas_sdhi_reset_tuning(struct tmio_sd_priv *priv)
        reg &= ~RENESAS_SDHI_SCC_CKSEL_DTSEL;
        tmio_sd_writel(priv, reg, RENESAS_SDHI_SCC_CKSEL);
 
+       reg = tmio_sd_readl(priv, RENESAS_SDHI_SCC_TMPPORT2);
+       reg &= ~(RENESAS_SDHI_SCC_TMPPORT2_HS400EN |
+                RENESAS_SDHI_SCC_TMPPORT2_HS400OSEL);
+       tmio_sd_writel(priv, reg, RENESAS_SDHI_SCC_TMPPORT2);
+
        reg = tmio_sd_readl(priv, TMIO_SD_CLKCTL);
        reg |= TMIO_SD_CLKCTL_SCLKEN;
        tmio_sd_writel(priv, reg, TMIO_SD_CLKCTL);
@@ -294,19 +298,45 @@ static int renesas_sdhi_set_ios(struct udevice *dev)
 #if CONFIG_IS_ENABLED(MMC_HS200_SUPPORT)
        struct tmio_sd_priv *priv = dev_get_priv(dev);
 
-       renesas_sdhi_reset_tuning(priv);
+       if (priv->caps & TMIO_SD_CAP_RCAR_UHS)
+               renesas_sdhi_reset_tuning(priv);
 #endif
 
        return ret;
 }
 
+#if CONFIG_IS_ENABLED(MMC_UHS_SUPPORT)
+static int renesas_sdhi_wait_dat0(struct udevice *dev, int state, int timeout)
+{
+       int ret = -ETIMEDOUT;
+       bool dat0_high;
+       bool target_dat0_high = !!state;
+       struct tmio_sd_priv *priv = dev_get_priv(dev);
+
+       timeout = DIV_ROUND_UP(timeout, 10); /* check every 10 us. */
+       while (timeout--) {
+               dat0_high = !!(tmio_sd_readl(priv, TMIO_SD_INFO2) & TMIO_SD_INFO2_DAT0);
+               if (dat0_high == target_dat0_high) {
+                       ret = 0;
+                       break;
+               }
+               udelay(10);
+       }
+
+       return ret;
+}
+#endif
+
 static const struct dm_mmc_ops renesas_sdhi_ops = {
        .send_cmd = tmio_sd_send_cmd,
        .set_ios = renesas_sdhi_set_ios,
        .get_cd = tmio_sd_get_cd,
-#if CONFIG_IS_ENABLED(MMC_HS200_SUPPORT)
+#if CONFIG_IS_ENABLED(MMC_UHS_SUPPORT) || CONFIG_IS_ENABLED(MMC_HS200_SUPPORT)
        .execute_tuning = renesas_sdhi_execute_tuning,
 #endif
+#if CONFIG_IS_ENABLED(MMC_UHS_SUPPORT)
+       .wait_dat0 = renesas_sdhi_wait_dat0,
+#endif
 };
 
 #define RENESAS_GEN2_QUIRKS    TMIO_SD_CAP_RCAR_GEN2
@@ -373,7 +403,7 @@ static int renesas_sdhi_probe(struct udevice *dev)
 
        ret = tmio_sd_probe(dev, quirks);
 #if CONFIG_IS_ENABLED(MMC_HS200_SUPPORT)
-       if (!ret)
+       if (!ret && (priv->caps & TMIO_SD_CAP_RCAR_UHS))
                renesas_sdhi_reset_tuning(priv);
 #endif
        return ret;
index 138de59470a7f606dd51ae3b500c6c57b9d84758..0eca83a0f4db9281af3fdc33141f97e882f2e22f 100644 (file)
@@ -95,7 +95,7 @@ static void __dma_unmap_single(dma_addr_t addr, size_t size,
                invalidate_dcache_range(addr, addr + size);
 }
 
-static int tmio_sd_check_error(struct udevice *dev)
+static int tmio_sd_check_error(struct udevice *dev, struct mmc_cmd *cmd)
 {
        struct tmio_sd_priv *priv = dev_get_priv(dev);
        u32 info2 = tmio_sd_readl(priv, TMIO_SD_INFO2);
@@ -116,7 +116,9 @@ static int tmio_sd_check_error(struct udevice *dev)
 
        if (info2 & (TMIO_SD_INFO2_ERR_END | TMIO_SD_INFO2_ERR_CRC |
                     TMIO_SD_INFO2_ERR_IDX)) {
-               dev_err(dev, "communication out of sync\n");
+               if ((cmd->cmdidx != MMC_CMD_SEND_TUNING_BLOCK) &&
+                   (cmd->cmdidx != MMC_CMD_SEND_TUNING_BLOCK_HS200))
+                       dev_err(dev, "communication out of sync\n");
                return -EILSEQ;
        }
 
@@ -129,8 +131,8 @@ static int tmio_sd_check_error(struct udevice *dev)
        return 0;
 }
 
-static int tmio_sd_wait_for_irq(struct udevice *dev, unsigned int reg,
-                                   u32 flag)
+static int tmio_sd_wait_for_irq(struct udevice *dev, struct mmc_cmd *cmd,
+                               unsigned int reg, u32 flag)
 {
        struct tmio_sd_priv *priv = dev_get_priv(dev);
        long wait = 1000000;
@@ -142,7 +144,7 @@ static int tmio_sd_wait_for_irq(struct udevice *dev, unsigned int reg,
                        return -ETIMEDOUT;
                }
 
-               ret = tmio_sd_check_error(dev);
+               ret = tmio_sd_check_error(dev, cmd);
                if (ret)
                        return ret;
 
@@ -178,15 +180,15 @@ tmio_pio_read_fifo(64, q)
 tmio_pio_read_fifo(32, l)
 tmio_pio_read_fifo(16, w)
 
-static int tmio_sd_pio_read_one_block(struct udevice *dev, char *pbuf,
-                                         uint blocksize)
+static int tmio_sd_pio_read_one_block(struct udevice *dev, struct mmc_cmd *cmd,
+                                     char *pbuf, uint blocksize)
 {
        struct tmio_sd_priv *priv = dev_get_priv(dev);
        int ret;
 
        /* wait until the buffer is filled with data */
-       ret = tmio_sd_wait_for_irq(dev, TMIO_SD_INFO2,
-                                      TMIO_SD_INFO2_BRE);
+       ret = tmio_sd_wait_for_irq(dev, cmd, TMIO_SD_INFO2,
+                                  TMIO_SD_INFO2_BRE);
        if (ret)
                return ret;
 
@@ -231,15 +233,15 @@ tmio_pio_write_fifo(64, q)
 tmio_pio_write_fifo(32, l)
 tmio_pio_write_fifo(16, w)
 
-static int tmio_sd_pio_write_one_block(struct udevice *dev,
+static int tmio_sd_pio_write_one_block(struct udevice *dev, struct mmc_cmd *cmd,
                                           const char *pbuf, uint blocksize)
 {
        struct tmio_sd_priv *priv = dev_get_priv(dev);
        int ret;
 
        /* wait until the buffer becomes empty */
-       ret = tmio_sd_wait_for_irq(dev, TMIO_SD_INFO2,
-                                   TMIO_SD_INFO2_BWE);
+       ret = tmio_sd_wait_for_irq(dev, cmd, TMIO_SD_INFO2,
+                                  TMIO_SD_INFO2_BWE);
        if (ret)
                return ret;
 
@@ -255,7 +257,8 @@ static int tmio_sd_pio_write_one_block(struct udevice *dev,
        return 0;
 }
 
-static int tmio_sd_pio_xfer(struct udevice *dev, struct mmc_data *data)
+static int tmio_sd_pio_xfer(struct udevice *dev, struct mmc_cmd *cmd,
+                           struct mmc_data *data)
 {
        const char *src = data->src;
        char *dest = data->dest;
@@ -263,10 +266,10 @@ static int tmio_sd_pio_xfer(struct udevice *dev, struct mmc_data *data)
 
        for (i = 0; i < data->blocks; i++) {
                if (data->flags & MMC_DATA_READ)
-                       ret = tmio_sd_pio_read_one_block(dev, dest,
+                       ret = tmio_sd_pio_read_one_block(dev, cmd, dest,
                                                             data->blocksize);
                else
-                       ret = tmio_sd_pio_write_one_block(dev, src,
+                       ret = tmio_sd_pio_write_one_block(dev, cmd, src,
                                                              data->blocksize);
                if (ret)
                        return ret;
@@ -468,8 +471,8 @@ int tmio_sd_send_cmd(struct udevice *dev, struct mmc_cmd *cmd,
                cmd->cmdidx, tmp, cmd->cmdarg);
        tmio_sd_writel(priv, tmp, TMIO_SD_CMD);
 
-       ret = tmio_sd_wait_for_irq(dev, TMIO_SD_INFO1,
-                                      TMIO_SD_INFO1_RSP);
+       ret = tmio_sd_wait_for_irq(dev, cmd, TMIO_SD_INFO1,
+                                  TMIO_SD_INFO1_RSP);
        if (ret)
                return ret;
 
@@ -497,17 +500,18 @@ int tmio_sd_send_cmd(struct udevice *dev, struct mmc_cmd *cmd,
                    tmio_sd_addr_is_dmaable(data->src))
                        ret = tmio_sd_dma_xfer(dev, data);
                else
-                       ret = tmio_sd_pio_xfer(dev, data);
+                       ret = tmio_sd_pio_xfer(dev, cmd, data);
+               if (ret)
+                       return ret;
 
-               ret = tmio_sd_wait_for_irq(dev, TMIO_SD_INFO1,
-                                              TMIO_SD_INFO1_CMP);
+               ret = tmio_sd_wait_for_irq(dev, cmd, TMIO_SD_INFO1,
+                                          TMIO_SD_INFO1_CMP);
                if (ret)
                        return ret;
        }
 
-       tmio_sd_wait_for_irq(dev, TMIO_SD_INFO2, TMIO_SD_INFO2_SCLKDIVEN);
-
-       return ret;
+       return tmio_sd_wait_for_irq(dev, cmd, TMIO_SD_INFO2,
+                                   TMIO_SD_INFO2_SCLKDIVEN);
 }
 
 static int tmio_sd_set_bus_width(struct tmio_sd_priv *priv,
@@ -622,26 +626,10 @@ static void tmio_sd_set_pins(struct udevice *dev)
 #endif
 
 #ifdef CONFIG_PINCTRL
-       switch (mmc->selected_mode) {
-       case MMC_LEGACY:
-       case SD_LEGACY:
-       case MMC_HS:
-       case SD_HS:
-       case MMC_HS_52:
-       case MMC_DDR_52:
-               pinctrl_select_state(dev, "default");
-               break;
-       case UHS_SDR12:
-       case UHS_SDR25:
-       case UHS_SDR50:
-       case UHS_DDR50:
-       case UHS_SDR104:
-       case MMC_HS_200:
+       if (mmc->signal_voltage == MMC_SIGNAL_VOLTAGE_180)
                pinctrl_select_state(dev, "state_uhs");
-               break;
-       default:
-               break;
-       }
+       else
+               pinctrl_select_state(dev, "default");
 #endif
 }
 
@@ -654,11 +642,11 @@ int tmio_sd_set_ios(struct udevice *dev)
        dev_dbg(dev, "clock %uHz, DDRmode %d, width %u\n",
                mmc->clock, mmc->ddr_mode, mmc->bus_width);
 
+       tmio_sd_set_clk_rate(priv, mmc);
        ret = tmio_sd_set_bus_width(priv, mmc);
        if (ret)
                return ret;
        tmio_sd_set_ddr_mode(priv, mmc);
-       tmio_sd_set_clk_rate(priv, mmc);
        tmio_sd_set_pins(dev);
 
        return 0;
@@ -732,6 +720,8 @@ int tmio_sd_probe(struct udevice *dev, u32 quirks)
 
 #ifdef CONFIG_DM_REGULATOR
        device_get_supply_regulator(dev, "vqmmc-supply", &priv->vqmmc_dev);
+       if (priv->vqmmc_dev)
+               regulator_set_value(priv->vqmmc_dev, 3300000);
 #endif
 
        ret = mmc_of_parse(dev, &plat->cfg);
index 11cf12bb5599a502f2b98fbcb231f13dc693ced6..0050fb2b9bf1a3b495859b24da0c54b435b453cc 100644 (file)
@@ -22,12 +22,6 @@ config MTD_DEVICE
          Adds the MTD device infrastructure from the Linux kernel.
          Needed for mtdparts command support.
 
-config MTD_PARTITIONS
-       bool "Add MTD Partioning infrastructure"
-       help
-         Adds the MTD partitioning infrastructure from the Linux
-         kernel. Needed for UBI support.
-
 config FLASH_CFI_DRIVER
        bool "Enable CFI Flash driver"
        help
index 7d7a11c990d6a0b75822fe42d1a5d5307e3b4321..5ca560c968794852384b5e8d4e5e024c5df20e01 100644 (file)
@@ -92,12 +92,70 @@ static void mtd_probe_uclass_mtd_devs(void) { }
 #endif
 
 #if defined(CONFIG_MTD_PARTITIONS)
+extern void board_mtdparts_default(const char **mtdids,
+                                  const char **mtdparts);
+
+static const char *get_mtdids(void)
+{
+       __maybe_unused const char *mtdparts = NULL;
+       const char *mtdids = env_get("mtdids");
+
+       if (mtdids)
+               return mtdids;
+
+#if defined(CONFIG_SYS_MTDPARTS_RUNTIME)
+       board_mtdparts_default(&mtdids, &mtdparts);
+#elif defined(MTDIDS_DEFAULT)
+       mtdids = MTDIDS_DEFAULT;
+#elif defined(CONFIG_MTDIDS_DEFAULT)
+       mtdids = CONFIG_MTDIDS_DEFAULT;
+#endif
+
+       if (mtdids)
+               env_set("mtdids", mtdids);
+
+       return mtdids;
+}
+
+#define MTDPARTS_MAXLEN         512
+
+static const char *get_mtdparts(void)
+{
+       __maybe_unused const char *mtdids = NULL;
+       static char tmp_parts[MTDPARTS_MAXLEN];
+       static bool use_defaults = true;
+       const char *mtdparts = NULL;
+
+       if (gd->flags & GD_FLG_ENV_READY)
+               mtdparts = env_get("mtdparts");
+       else if (env_get_f("mtdparts", tmp_parts, sizeof(tmp_parts)) != -1)
+               mtdparts = tmp_parts;
+
+       if (mtdparts || !use_defaults)
+               return mtdparts;
+
+#if defined(CONFIG_SYS_MTDPARTS_RUNTIME)
+       board_mtdparts_default(&mtdids, &mtdparts);
+#elif defined(MTDPARTS_DEFAULT)
+       mtdparts = MTDPARTS_DEFAULT;
+#elif defined(CONFIG_MTDPARTS_DEFAULT)
+       mtdparts = CONFIG_MTDPARTS_DEFAULT;
+#endif
+
+       if (mtdparts)
+               env_set("mtdparts", mtdparts);
+
+       use_defaults = false;
+
+       return mtdparts;
+}
+
 int mtd_probe_devices(void)
 {
        static char *old_mtdparts;
        static char *old_mtdids;
-       const char *mtdparts = env_get("mtdparts");
-       const char *mtdids = env_get("mtdids");
+       const char *mtdparts = get_mtdparts();
+       const char *mtdids = get_mtdids();
        bool remaining_partitions = true;
        struct mtd_info *mtd;
 
index 39687431fb1cc50c42efa1429c0005255f03cec0..8fb365fc5d2a64165dff2a4f003499f73759e68a 100644 (file)
@@ -11,13 +11,6 @@ config DM_ETH
          This is currently implemented in net/eth-uclass.c
          Look in include/net.h for details.
 
-config DRIVER_TI_CPSW
-       bool "TI Common Platform Ethernet Switch"
-       select PHYLIB
-       help
-         This driver supports the TI three port switch gigabit ethernet
-         subsystem found in the TI SoCs.
-
 menuconfig NETDEVICES
        bool "Network device support"
        depends on NET
@@ -186,6 +179,32 @@ config FTMAC100
        help
          This MAC is present in Andestech SoCs.
 
+config FTGMAC100
+       bool "Ftgmac100 Ethernet Support"
+       depends on DM_ETH
+       select PHYLIB
+       help
+         This driver supports the Faraday's FTGMAC100 Gigabit SoC
+         Ethernet controller that can be found on Aspeed SoCs (which
+         include NCSI).
+
+         It is fully compliant with IEEE 802.3 specification for
+         10/100 Mbps Ethernet and IEEE 802.3z specification for 1000
+         Mbps Ethernet and includes Reduced Media Independent
+         Interface (RMII) and Reduced Gigabit Media Independent
+         Interface (RGMII) interfaces. It adopts an AHB bus interface
+         and integrates a link list DMA engine with direct M-Bus
+         accesses for transmitting and receiving packets. It has
+         independent TX/RX fifos, supports half and full duplex (1000
+         Mbps mode only supports full duplex), flow control for full
+         duplex and backpressure for half duplex.
+
+         The FTGMAC100 also implements IP, TCP, UDP checksum offloads
+         and supports IEEE 802.1Q VLAN tag insertion and removal. It
+         offers high-priority transmit queue for QoS and CoS
+         applications.
+
+
 config MVGBE
        bool "Marvell Orion5x/Kirkwood network interface support"
        depends on KIRKWOOD || ORION5X
@@ -227,6 +246,13 @@ config MACB_ZYNQ
          The Cadence MACB ethernet interface was used on Zynq platform.
          Say Y to enable support for the MACB/GEM in Zynq chip.
 
+config MT7628_ETH
+       bool "MediaTek MT7628 Ethernet Interface"
+       depends on ARCH_MT7620
+       help
+         The MediaTek MT7628 ethernet interface is used on MT7628 and
+         MT7688 based boards.
+
 config PCH_GBE
        bool "Intel Platform Controller Hub EG20T GMAC driver"
        depends on DM_ETH && DM_PCI
@@ -322,10 +348,7 @@ config SH_ETHER
        help
          This driver supports the Ethernet for Renesas SH and ARM SoCs.
 
-config DRIVER_TI_EMAC
-       bool "TI Davinci EMAC"
-       help
-          Support for davinci emac
+source "drivers/net/ti/Kconfig"
 
 config XILINX_AXIEMAC
        depends on DM_ETH && (MICROBLAZE || ARCH_ZYNQ || ARCH_ZYNQMP)
index 48a2878071d1b8930a5e0d814bd46ef6a5051c90..99056aa041d08e3fd959d5bdcfbf6a713a7cb795 100644 (file)
@@ -30,13 +30,13 @@ obj-$(CONFIG_FTGMAC100) += ftgmac100.o
 obj-$(CONFIG_FTMAC110) += ftmac110.o
 obj-$(CONFIG_FTMAC100) += ftmac100.o
 obj-$(CONFIG_GMAC_ROCKCHIP) += gmac_rockchip.o
-obj-$(CONFIG_DRIVER_TI_KEYSTONE_NET) += keystone_net.o
 obj-$(CONFIG_KS8851_MLL) += ks8851_mll.o
 obj-$(CONFIG_LAN91C96) += lan91c96.o
 obj-$(CONFIG_LPC32XX_ETH) += lpc32xx_eth.o
 obj-$(CONFIG_MACB) += macb.o
 obj-$(CONFIG_MCFFEC) += mcffec.o mcfmii.o
 obj-$(CONFIG_MPC8XX_FEC) += mpc8xx_fec.o
+obj-$(CONFIG_MT7628_ETH) += mt7628-eth.o
 obj-$(CONFIG_MVGBE) += mvgbe.o
 obj-$(CONFIG_MVNETA) += mvneta.o
 obj-$(CONFIG_MVPP2) += mvpp2.o
@@ -56,9 +56,7 @@ obj-$(CONFIG_SH_ETHER) += sh_eth.o
 obj-$(CONFIG_RENESAS_RAVB) += ravb.o
 obj-$(CONFIG_SMC91111) += smc91111.o
 obj-$(CONFIG_SMC911X) += smc911x.o
-obj-$(CONFIG_DRIVER_TI_EMAC) += davinci_emac.o
 obj-$(CONFIG_TSEC_ENET) += tsec.o fsl_mdio.o
-obj-$(CONFIG_DRIVER_TI_CPSW) += cpsw.o cpsw-common.o
 obj-$(CONFIG_FMAN_ENET) += fsl_mdio.o
 obj-$(CONFIG_ULI526X) += uli526x.o
 obj-$(CONFIG_VSC7385_ENET) += vsc7385.o
@@ -73,3 +71,4 @@ obj-$(CONFIG_PIC32_ETH) += pic32_mdio.o pic32_eth.o
 obj-$(CONFIG_DWC_ETH_QOS) += dwc_eth_qos.o
 obj-$(CONFIG_FSL_PFE) += pfe_eth/
 obj-$(CONFIG_SNI_AVE) += sni_ave.o
+obj-y += ti/
diff --git a/drivers/net/cpsw-common.c b/drivers/net/cpsw-common.c
deleted file mode 100644 (file)
index 6c8ddbd..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * CPSW common - libs used across TI ethernet devices.
- *
- * Copyright (C) 2016, Texas Instruments, Incorporated
- */
-
-#include <common.h>
-#include <dm.h>
-#include <environment.h>
-#include <fdt_support.h>
-#include <asm/io.h>
-#include <cpsw.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#define CTRL_MAC_REG(offset, id) ((offset) + 0x8 * (id))
-
-static int davinci_emac_3517_get_macid(struct udevice *dev, u16 offset,
-                                      int slave, u8 *mac_addr)
-{
-       void *fdt = (void *)gd->fdt_blob;
-       int node = dev_of_offset(dev);
-       u32 macid_lsb;
-       u32 macid_msb;
-       fdt32_t gmii = 0;
-       int syscon;
-       u32 addr;
-
-       syscon = fdtdec_lookup_phandle(fdt, node, "syscon");
-       if (syscon < 0) {
-               pr_err("Syscon offset not found\n");
-               return -ENOENT;
-       }
-
-       addr = (u32)map_physmem(fdt_translate_address(fdt, syscon, &gmii),
-                               sizeof(u32), MAP_NOCACHE);
-       if (addr == FDT_ADDR_T_NONE) {
-               pr_err("Not able to get syscon address to get mac efuse address\n");
-               return -ENOENT;
-       }
-
-       addr += CTRL_MAC_REG(offset, slave);
-
-       /* try reading mac address from efuse */
-       macid_lsb = readl(addr);
-       macid_msb = readl(addr + 4);
-
-       mac_addr[0] = (macid_msb >> 16) & 0xff;
-       mac_addr[1] = (macid_msb >> 8)  & 0xff;
-       mac_addr[2] = macid_msb & 0xff;
-       mac_addr[3] = (macid_lsb >> 16) & 0xff;
-       mac_addr[4] = (macid_lsb >> 8)  & 0xff;
-       mac_addr[5] = macid_lsb & 0xff;
-
-       return 0;
-}
-
-static int cpsw_am33xx_cm_get_macid(struct udevice *dev, u16 offset, int slave,
-                                   u8 *mac_addr)
-{
-       void *fdt = (void *)gd->fdt_blob;
-       int node = dev_of_offset(dev);
-       u32 macid_lo;
-       u32 macid_hi;
-       fdt32_t gmii = 0;
-       int syscon;
-       u32 addr;
-
-       syscon = fdtdec_lookup_phandle(fdt, node, "syscon");
-       if (syscon < 0) {
-               pr_err("Syscon offset not found\n");
-               return -ENOENT;
-       }
-
-       addr = (u32)map_physmem(fdt_translate_address(fdt, syscon, &gmii),
-                               sizeof(u32), MAP_NOCACHE);
-       if (addr == FDT_ADDR_T_NONE) {
-               pr_err("Not able to get syscon address to get mac efuse address\n");
-               return -ENOENT;
-       }
-
-       addr += CTRL_MAC_REG(offset, slave);
-
-       /* try reading mac address from efuse */
-       macid_lo = readl(addr);
-       macid_hi = readl(addr + 4);
-
-       mac_addr[5] = (macid_lo >> 8) & 0xff;
-       mac_addr[4] = macid_lo & 0xff;
-       mac_addr[3] = (macid_hi >> 24) & 0xff;
-       mac_addr[2] = (macid_hi >> 16) & 0xff;
-       mac_addr[1] = (macid_hi >> 8) & 0xff;
-       mac_addr[0] = macid_hi & 0xff;
-
-       return 0;
-}
-
-int ti_cm_get_macid(struct udevice *dev, int slave, u8 *mac_addr)
-{
-       if (of_machine_is_compatible("ti,dm8148"))
-               return cpsw_am33xx_cm_get_macid(dev, 0x630, slave, mac_addr);
-
-       if (of_machine_is_compatible("ti,am33xx"))
-               return cpsw_am33xx_cm_get_macid(dev, 0x630, slave, mac_addr);
-
-       if (device_is_compatible(dev, "ti,am3517-emac"))
-               return davinci_emac_3517_get_macid(dev, 0x110, slave, mac_addr);
-
-       if (device_is_compatible(dev, "ti,dm816-emac"))
-               return cpsw_am33xx_cm_get_macid(dev, 0x30, slave, mac_addr);
-
-       if (of_machine_is_compatible("ti,am43"))
-               return cpsw_am33xx_cm_get_macid(dev, 0x630, slave, mac_addr);
-
-       if (of_machine_is_compatible("ti,dra7"))
-               return davinci_emac_3517_get_macid(dev, 0x514, slave, mac_addr);
-
-       dev_err(dev, "incompatible machine/device type for reading mac address\n");
-       return -ENOENT;
-}
diff --git a/drivers/net/cpsw.c b/drivers/net/cpsw.c
deleted file mode 100644 (file)
index 8e2a48c..0000000
+++ /dev/null
@@ -1,1508 +0,0 @@
-/*
- * CPSW Ethernet Switch Driver
- *
- * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation version 2.
- *
- * This program is distributed "as is" WITHOUT ANY WARRANTY of any
- * kind, whether express or implied; without even the implied warranty
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
-
-#include <common.h>
-#include <command.h>
-#include <net.h>
-#include <miiphy.h>
-#include <malloc.h>
-#include <net.h>
-#include <netdev.h>
-#include <cpsw.h>
-#include <linux/errno.h>
-#include <asm/gpio.h>
-#include <asm/io.h>
-#include <phy.h>
-#include <asm/arch/cpu.h>
-#include <dm.h>
-#include <fdt_support.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#define BITMASK(bits)          (BIT(bits) - 1)
-#define PHY_REG_MASK           0x1f
-#define PHY_ID_MASK            0x1f
-#define NUM_DESCS              (PKTBUFSRX * 2)
-#define PKT_MIN                        60
-#define PKT_MAX                        (1500 + 14 + 4 + 4)
-#define CLEAR_BIT              1
-#define GIGABITEN              BIT(7)
-#define FULLDUPLEXEN           BIT(0)
-#define MIIEN                  BIT(15)
-
-/* reg offset */
-#define CPSW_HOST_PORT_OFFSET  0x108
-#define CPSW_SLAVE0_OFFSET     0x208
-#define CPSW_SLAVE1_OFFSET     0x308
-#define CPSW_SLAVE_SIZE                0x100
-#define CPSW_CPDMA_OFFSET      0x800
-#define CPSW_HW_STATS          0x900
-#define CPSW_STATERAM_OFFSET   0xa00
-#define CPSW_CPTS_OFFSET       0xc00
-#define CPSW_ALE_OFFSET                0xd00
-#define CPSW_SLIVER0_OFFSET    0xd80
-#define CPSW_SLIVER1_OFFSET    0xdc0
-#define CPSW_BD_OFFSET         0x2000
-#define CPSW_MDIO_DIV          0xff
-
-#define AM335X_GMII_SEL_OFFSET 0x630
-
-/* DMA Registers */
-#define CPDMA_TXCONTROL                0x004
-#define CPDMA_RXCONTROL                0x014
-#define CPDMA_SOFTRESET                0x01c
-#define CPDMA_RXFREE           0x0e0
-#define CPDMA_TXHDP_VER1       0x100
-#define CPDMA_TXHDP_VER2       0x200
-#define CPDMA_RXHDP_VER1       0x120
-#define CPDMA_RXHDP_VER2       0x220
-#define CPDMA_TXCP_VER1                0x140
-#define CPDMA_TXCP_VER2                0x240
-#define CPDMA_RXCP_VER1                0x160
-#define CPDMA_RXCP_VER2                0x260
-
-/* Descriptor mode bits */
-#define CPDMA_DESC_SOP         BIT(31)
-#define CPDMA_DESC_EOP         BIT(30)
-#define CPDMA_DESC_OWNER       BIT(29)
-#define CPDMA_DESC_EOQ         BIT(28)
-
-/*
- * This timeout definition is a worst-case ultra defensive measure against
- * unexpected controller lock ups.  Ideally, we should never ever hit this
- * scenario in practice.
- */
-#define MDIO_TIMEOUT            100 /* msecs */
-#define CPDMA_TIMEOUT          100 /* msecs */
-
-struct cpsw_mdio_regs {
-       u32     version;
-       u32     control;
-#define CONTROL_IDLE           BIT(31)
-#define CONTROL_ENABLE         BIT(30)
-
-       u32     alive;
-       u32     link;
-       u32     linkintraw;
-       u32     linkintmasked;
-       u32     __reserved_0[2];
-       u32     userintraw;
-       u32     userintmasked;
-       u32     userintmaskset;
-       u32     userintmaskclr;
-       u32     __reserved_1[20];
-
-       struct {
-               u32             access;
-               u32             physel;
-#define USERACCESS_GO          BIT(31)
-#define USERACCESS_WRITE       BIT(30)
-#define USERACCESS_ACK         BIT(29)
-#define USERACCESS_READ                (0)
-#define USERACCESS_DATA                (0xffff)
-       } user[0];
-};
-
-struct cpsw_regs {
-       u32     id_ver;
-       u32     control;
-       u32     soft_reset;
-       u32     stat_port_en;
-       u32     ptype;
-};
-
-struct cpsw_slave_regs {
-       u32     max_blks;
-       u32     blk_cnt;
-       u32     flow_thresh;
-       u32     port_vlan;
-       u32     tx_pri_map;
-#ifdef CONFIG_AM33XX
-       u32     gap_thresh;
-#elif defined(CONFIG_TI814X)
-       u32     ts_ctl;
-       u32     ts_seq_ltype;
-       u32     ts_vlan;
-#endif
-       u32     sa_lo;
-       u32     sa_hi;
-};
-
-struct cpsw_host_regs {
-       u32     max_blks;
-       u32     blk_cnt;
-       u32     flow_thresh;
-       u32     port_vlan;
-       u32     tx_pri_map;
-       u32     cpdma_tx_pri_map;
-       u32     cpdma_rx_chan_map;
-};
-
-struct cpsw_sliver_regs {
-       u32     id_ver;
-       u32     mac_control;
-       u32     mac_status;
-       u32     soft_reset;
-       u32     rx_maxlen;
-       u32     __reserved_0;
-       u32     rx_pause;
-       u32     tx_pause;
-       u32     __reserved_1;
-       u32     rx_pri_map;
-};
-
-#define ALE_ENTRY_BITS         68
-#define ALE_ENTRY_WORDS                DIV_ROUND_UP(ALE_ENTRY_BITS, 32)
-
-/* ALE Registers */
-#define ALE_CONTROL            0x08
-#define ALE_UNKNOWNVLAN                0x18
-#define ALE_TABLE_CONTROL      0x20
-#define ALE_TABLE              0x34
-#define ALE_PORTCTL            0x40
-
-#define ALE_TABLE_WRITE                BIT(31)
-
-#define ALE_TYPE_FREE                  0
-#define ALE_TYPE_ADDR                  1
-#define ALE_TYPE_VLAN                  2
-#define ALE_TYPE_VLAN_ADDR             3
-
-#define ALE_UCAST_PERSISTANT           0
-#define ALE_UCAST_UNTOUCHED            1
-#define ALE_UCAST_OUI                  2
-#define ALE_UCAST_TOUCHED              3
-
-#define ALE_MCAST_FWD                  0
-#define ALE_MCAST_BLOCK_LEARN_FWD      1
-#define ALE_MCAST_FWD_LEARN            2
-#define ALE_MCAST_FWD_2                        3
-
-enum cpsw_ale_port_state {
-       ALE_PORT_STATE_DISABLE  = 0x00,
-       ALE_PORT_STATE_BLOCK    = 0x01,
-       ALE_PORT_STATE_LEARN    = 0x02,
-       ALE_PORT_STATE_FORWARD  = 0x03,
-};
-
-/* ALE unicast entry flags - passed into cpsw_ale_add_ucast() */
-#define ALE_SECURE     1
-#define ALE_BLOCKED    2
-
-struct cpsw_slave {
-       struct cpsw_slave_regs          *regs;
-       struct cpsw_sliver_regs         *sliver;
-       int                             slave_num;
-       u32                             mac_control;
-       struct cpsw_slave_data          *data;
-};
-
-struct cpdma_desc {
-       /* hardware fields */
-       u32                     hw_next;
-       u32                     hw_buffer;
-       u32                     hw_len;
-       u32                     hw_mode;
-       /* software fields */
-       u32                     sw_buffer;
-       u32                     sw_len;
-};
-
-struct cpdma_chan {
-       struct cpdma_desc       *head, *tail;
-       void                    *hdp, *cp, *rxfree;
-};
-
-/* AM33xx SoC specific definitions for the CONTROL port */
-#define AM33XX_GMII_SEL_MODE_MII       0
-#define AM33XX_GMII_SEL_MODE_RMII      1
-#define AM33XX_GMII_SEL_MODE_RGMII     2
-
-#define AM33XX_GMII_SEL_RGMII1_IDMODE  BIT(4)
-#define AM33XX_GMII_SEL_RGMII2_IDMODE  BIT(5)
-#define AM33XX_GMII_SEL_RMII1_IO_CLK_EN        BIT(6)
-#define AM33XX_GMII_SEL_RMII2_IO_CLK_EN        BIT(7)
-
-#define GMII_SEL_MODE_MASK             0x3
-
-#define desc_write(desc, fld, val)     __raw_writel((u32)(val), &(desc)->fld)
-#define desc_read(desc, fld)           __raw_readl(&(desc)->fld)
-#define desc_read_ptr(desc, fld)       ((void *)__raw_readl(&(desc)->fld))
-
-#define chan_write(chan, fld, val)     __raw_writel((u32)(val), (chan)->fld)
-#define chan_read(chan, fld)           __raw_readl((chan)->fld)
-#define chan_read_ptr(chan, fld)       ((void *)__raw_readl((chan)->fld))
-
-#define for_active_slave(slave, priv) \
-       slave = (priv)->slaves + (priv)->data.active_slave; if (slave)
-#define for_each_slave(slave, priv) \
-       for (slave = (priv)->slaves; slave != (priv)->slaves + \
-                               (priv)->data.slaves; slave++)
-
-struct cpsw_priv {
-#ifdef CONFIG_DM_ETH
-       struct udevice                  *dev;
-#else
-       struct eth_device               *dev;
-#endif
-       struct cpsw_platform_data       data;
-       int                             host_port;
-
-       struct cpsw_regs                *regs;
-       void                            *dma_regs;
-       struct cpsw_host_regs           *host_port_regs;
-       void                            *ale_regs;
-
-       struct cpdma_desc               *descs;
-       struct cpdma_desc               *desc_free;
-       struct cpdma_chan               rx_chan, tx_chan;
-
-       struct cpsw_slave               *slaves;
-       struct phy_device               *phydev;
-       struct mii_dev                  *bus;
-
-       u32                             phy_mask;
-};
-
-static inline int cpsw_ale_get_field(u32 *ale_entry, u32 start, u32 bits)
-{
-       int idx;
-
-       idx    = start / 32;
-       start -= idx * 32;
-       idx    = 2 - idx; /* flip */
-       return (ale_entry[idx] >> start) & BITMASK(bits);
-}
-
-static inline void cpsw_ale_set_field(u32 *ale_entry, u32 start, u32 bits,
-                                     u32 value)
-{
-       int idx;
-
-       value &= BITMASK(bits);
-       idx    = start / 32;
-       start -= idx * 32;
-       idx    = 2 - idx; /* flip */
-       ale_entry[idx] &= ~(BITMASK(bits) << start);
-       ale_entry[idx] |=  (value << start);
-}
-
-#define DEFINE_ALE_FIELD(name, start, bits)                            \
-static inline int cpsw_ale_get_##name(u32 *ale_entry)                  \
-{                                                                      \
-       return cpsw_ale_get_field(ale_entry, start, bits);              \
-}                                                                      \
-static inline void cpsw_ale_set_##name(u32 *ale_entry, u32 value)      \
-{                                                                      \
-       cpsw_ale_set_field(ale_entry, start, bits, value);              \
-}
-
-DEFINE_ALE_FIELD(entry_type,           60,     2)
-DEFINE_ALE_FIELD(mcast_state,          62,     2)
-DEFINE_ALE_FIELD(port_mask,            66,     3)
-DEFINE_ALE_FIELD(ucast_type,           62,     2)
-DEFINE_ALE_FIELD(port_num,             66,     2)
-DEFINE_ALE_FIELD(blocked,              65,     1)
-DEFINE_ALE_FIELD(secure,               64,     1)
-DEFINE_ALE_FIELD(mcast,                        40,     1)
-
-/* The MAC address field in the ALE entry cannot be macroized as above */
-static inline void cpsw_ale_get_addr(u32 *ale_entry, u8 *addr)
-{
-       int i;
-
-       for (i = 0; i < 6; i++)
-               addr[i] = cpsw_ale_get_field(ale_entry, 40 - 8*i, 8);
-}
-
-static inline void cpsw_ale_set_addr(u32 *ale_entry, const u8 *addr)
-{
-       int i;
-
-       for (i = 0; i < 6; i++)
-               cpsw_ale_set_field(ale_entry, 40 - 8*i, 8, addr[i]);
-}
-
-static int cpsw_ale_read(struct cpsw_priv *priv, int idx, u32 *ale_entry)
-{
-       int i;
-
-       __raw_writel(idx, priv->ale_regs + ALE_TABLE_CONTROL);
-
-       for (i = 0; i < ALE_ENTRY_WORDS; i++)
-               ale_entry[i] = __raw_readl(priv->ale_regs + ALE_TABLE + 4 * i);
-
-       return idx;
-}
-
-static int cpsw_ale_write(struct cpsw_priv *priv, int idx, u32 *ale_entry)
-{
-       int i;
-
-       for (i = 0; i < ALE_ENTRY_WORDS; i++)
-               __raw_writel(ale_entry[i], priv->ale_regs + ALE_TABLE + 4 * i);
-
-       __raw_writel(idx | ALE_TABLE_WRITE, priv->ale_regs + ALE_TABLE_CONTROL);
-
-       return idx;
-}
-
-static int cpsw_ale_match_addr(struct cpsw_priv *priv, const u8 *addr)
-{
-       u32 ale_entry[ALE_ENTRY_WORDS];
-       int type, idx;
-
-       for (idx = 0; idx < priv->data.ale_entries; idx++) {
-               u8 entry_addr[6];
-
-               cpsw_ale_read(priv, idx, ale_entry);
-               type = cpsw_ale_get_entry_type(ale_entry);
-               if (type != ALE_TYPE_ADDR && type != ALE_TYPE_VLAN_ADDR)
-                       continue;
-               cpsw_ale_get_addr(ale_entry, entry_addr);
-               if (memcmp(entry_addr, addr, 6) == 0)
-                       return idx;
-       }
-       return -ENOENT;
-}
-
-static int cpsw_ale_match_free(struct cpsw_priv *priv)
-{
-       u32 ale_entry[ALE_ENTRY_WORDS];
-       int type, idx;
-
-       for (idx = 0; idx < priv->data.ale_entries; idx++) {
-               cpsw_ale_read(priv, idx, ale_entry);
-               type = cpsw_ale_get_entry_type(ale_entry);
-               if (type == ALE_TYPE_FREE)
-                       return idx;
-       }
-       return -ENOENT;
-}
-
-static int cpsw_ale_find_ageable(struct cpsw_priv *priv)
-{
-       u32 ale_entry[ALE_ENTRY_WORDS];
-       int type, idx;
-
-       for (idx = 0; idx < priv->data.ale_entries; idx++) {
-               cpsw_ale_read(priv, idx, ale_entry);
-               type = cpsw_ale_get_entry_type(ale_entry);
-               if (type != ALE_TYPE_ADDR && type != ALE_TYPE_VLAN_ADDR)
-                       continue;
-               if (cpsw_ale_get_mcast(ale_entry))
-                       continue;
-               type = cpsw_ale_get_ucast_type(ale_entry);
-               if (type != ALE_UCAST_PERSISTANT &&
-                   type != ALE_UCAST_OUI)
-                       return idx;
-       }
-       return -ENOENT;
-}
-
-static int cpsw_ale_add_ucast(struct cpsw_priv *priv, const u8 *addr,
-                             int port, int flags)
-{
-       u32 ale_entry[ALE_ENTRY_WORDS] = {0, 0, 0};
-       int idx;
-
-       cpsw_ale_set_entry_type(ale_entry, ALE_TYPE_ADDR);
-       cpsw_ale_set_addr(ale_entry, addr);
-       cpsw_ale_set_ucast_type(ale_entry, ALE_UCAST_PERSISTANT);
-       cpsw_ale_set_secure(ale_entry, (flags & ALE_SECURE) ? 1 : 0);
-       cpsw_ale_set_blocked(ale_entry, (flags & ALE_BLOCKED) ? 1 : 0);
-       cpsw_ale_set_port_num(ale_entry, port);
-
-       idx = cpsw_ale_match_addr(priv, addr);
-       if (idx < 0)
-               idx = cpsw_ale_match_free(priv);
-       if (idx < 0)
-               idx = cpsw_ale_find_ageable(priv);
-       if (idx < 0)
-               return -ENOMEM;
-
-       cpsw_ale_write(priv, idx, ale_entry);
-       return 0;
-}
-
-static int cpsw_ale_add_mcast(struct cpsw_priv *priv, const u8 *addr,
-                             int port_mask)
-{
-       u32 ale_entry[ALE_ENTRY_WORDS] = {0, 0, 0};
-       int idx, mask;
-
-       idx = cpsw_ale_match_addr(priv, addr);
-       if (idx >= 0)
-               cpsw_ale_read(priv, idx, ale_entry);
-
-       cpsw_ale_set_entry_type(ale_entry, ALE_TYPE_ADDR);
-       cpsw_ale_set_addr(ale_entry, addr);
-       cpsw_ale_set_mcast_state(ale_entry, ALE_MCAST_FWD_2);
-
-       mask = cpsw_ale_get_port_mask(ale_entry);
-       port_mask |= mask;
-       cpsw_ale_set_port_mask(ale_entry, port_mask);
-
-       if (idx < 0)
-               idx = cpsw_ale_match_free(priv);
-       if (idx < 0)
-               idx = cpsw_ale_find_ageable(priv);
-       if (idx < 0)
-               return -ENOMEM;
-
-       cpsw_ale_write(priv, idx, ale_entry);
-       return 0;
-}
-
-static inline void cpsw_ale_control(struct cpsw_priv *priv, int bit, int val)
-{
-       u32 tmp, mask = BIT(bit);
-
-       tmp  = __raw_readl(priv->ale_regs + ALE_CONTROL);
-       tmp &= ~mask;
-       tmp |= val ? mask : 0;
-       __raw_writel(tmp, priv->ale_regs + ALE_CONTROL);
-}
-
-#define cpsw_ale_enable(priv, val)     cpsw_ale_control(priv, 31, val)
-#define cpsw_ale_clear(priv, val)      cpsw_ale_control(priv, 30, val)
-#define cpsw_ale_vlan_aware(priv, val) cpsw_ale_control(priv,  2, val)
-
-static inline void cpsw_ale_port_state(struct cpsw_priv *priv, int port,
-                                      int val)
-{
-       int offset = ALE_PORTCTL + 4 * port;
-       u32 tmp, mask = 0x3;
-
-       tmp  = __raw_readl(priv->ale_regs + offset);
-       tmp &= ~mask;
-       tmp |= val & mask;
-       __raw_writel(tmp, priv->ale_regs + offset);
-}
-
-static struct cpsw_mdio_regs *mdio_regs;
-
-/* wait until hardware is ready for another user access */
-static inline u32 wait_for_user_access(void)
-{
-       u32 reg = 0;
-       int timeout = MDIO_TIMEOUT;
-
-       while (timeout-- &&
-       ((reg = __raw_readl(&mdio_regs->user[0].access)) & USERACCESS_GO))
-               udelay(10);
-
-       if (timeout == -1) {
-               printf("wait_for_user_access Timeout\n");
-               return -ETIMEDOUT;
-       }
-       return reg;
-}
-
-/* wait until hardware state machine is idle */
-static inline void wait_for_idle(void)
-{
-       int timeout = MDIO_TIMEOUT;
-
-       while (timeout-- &&
-               ((__raw_readl(&mdio_regs->control) & CONTROL_IDLE) == 0))
-               udelay(10);
-
-       if (timeout == -1)
-               printf("wait_for_idle Timeout\n");
-}
-
-static int cpsw_mdio_read(struct mii_dev *bus, int phy_id,
-                               int dev_addr, int phy_reg)
-{
-       int data;
-       u32 reg;
-
-       if (phy_reg & ~PHY_REG_MASK || phy_id & ~PHY_ID_MASK)
-               return -EINVAL;
-
-       wait_for_user_access();
-       reg = (USERACCESS_GO | USERACCESS_READ | (phy_reg << 21) |
-              (phy_id << 16));
-       __raw_writel(reg, &mdio_regs->user[0].access);
-       reg = wait_for_user_access();
-
-       data = (reg & USERACCESS_ACK) ? (reg & USERACCESS_DATA) : -1;
-       return data;
-}
-
-static int cpsw_mdio_write(struct mii_dev *bus, int phy_id, int dev_addr,
-                               int phy_reg, u16 data)
-{
-       u32 reg;
-
-       if (phy_reg & ~PHY_REG_MASK || phy_id & ~PHY_ID_MASK)
-               return -EINVAL;
-
-       wait_for_user_access();
-       reg = (USERACCESS_GO | USERACCESS_WRITE | (phy_reg << 21) |
-                  (phy_id << 16) | (data & USERACCESS_DATA));
-       __raw_writel(reg, &mdio_regs->user[0].access);
-       wait_for_user_access();
-
-       return 0;
-}
-
-static void cpsw_mdio_init(const char *name, u32 mdio_base, u32 div)
-{
-       struct mii_dev *bus = mdio_alloc();
-
-       mdio_regs = (struct cpsw_mdio_regs *)mdio_base;
-
-       /* set enable and clock divider */
-       __raw_writel(div | CONTROL_ENABLE, &mdio_regs->control);
-
-       /*
-        * wait for scan logic to settle:
-        * the scan time consists of (a) a large fixed component, and (b) a
-        * small component that varies with the mii bus frequency.  These
-        * were estimated using measurements at 1.1 and 2.2 MHz on tnetv107x
-        * silicon.  Since the effect of (b) was found to be largely
-        * negligible, we keep things simple here.
-        */
-       udelay(1000);
-
-       bus->read = cpsw_mdio_read;
-       bus->write = cpsw_mdio_write;
-       strcpy(bus->name, name);
-
-       mdio_register(bus);
-}
-
-/* Set a self-clearing bit in a register, and wait for it to clear */
-static inline void setbit_and_wait_for_clear32(void *addr)
-{
-       __raw_writel(CLEAR_BIT, addr);
-       while (__raw_readl(addr) & CLEAR_BIT)
-               ;
-}
-
-#define mac_hi(mac)    (((mac)[0] << 0) | ((mac)[1] << 8) |    \
-                        ((mac)[2] << 16) | ((mac)[3] << 24))
-#define mac_lo(mac)    (((mac)[4] << 0) | ((mac)[5] << 8))
-
-static void cpsw_set_slave_mac(struct cpsw_slave *slave,
-                              struct cpsw_priv *priv)
-{
-#ifdef CONFIG_DM_ETH
-       struct eth_pdata *pdata = dev_get_platdata(priv->dev);
-
-       writel(mac_hi(pdata->enetaddr), &slave->regs->sa_hi);
-       writel(mac_lo(pdata->enetaddr), &slave->regs->sa_lo);
-#else
-       __raw_writel(mac_hi(priv->dev->enetaddr), &slave->regs->sa_hi);
-       __raw_writel(mac_lo(priv->dev->enetaddr), &slave->regs->sa_lo);
-#endif
-}
-
-static int cpsw_slave_update_link(struct cpsw_slave *slave,
-                                  struct cpsw_priv *priv, int *link)
-{
-       struct phy_device *phy;
-       u32 mac_control = 0;
-       int ret = -ENODEV;
-
-       phy = priv->phydev;
-       if (!phy)
-               goto out;
-
-       ret = phy_startup(phy);
-       if (ret)
-               goto out;
-
-       if (link)
-               *link = phy->link;
-
-       if (phy->link) { /* link up */
-               mac_control = priv->data.mac_control;
-               if (phy->speed == 1000)
-                       mac_control |= GIGABITEN;
-               if (phy->duplex == DUPLEX_FULL)
-                       mac_control |= FULLDUPLEXEN;
-               if (phy->speed == 100)
-                       mac_control |= MIIEN;
-       }
-
-       if (mac_control == slave->mac_control)
-               goto out;
-
-       if (mac_control) {
-               printf("link up on port %d, speed %d, %s duplex\n",
-                               slave->slave_num, phy->speed,
-                               (phy->duplex == DUPLEX_FULL) ? "full" : "half");
-       } else {
-               printf("link down on port %d\n", slave->slave_num);
-       }
-
-       __raw_writel(mac_control, &slave->sliver->mac_control);
-       slave->mac_control = mac_control;
-
-out:
-       return ret;
-}
-
-static int cpsw_update_link(struct cpsw_priv *priv)
-{
-       int ret = -ENODEV;
-       struct cpsw_slave *slave;
-
-       for_active_slave(slave, priv)
-               ret = cpsw_slave_update_link(slave, priv, NULL);
-
-       return ret;
-}
-
-static inline u32  cpsw_get_slave_port(struct cpsw_priv *priv, u32 slave_num)
-{
-       if (priv->host_port == 0)
-               return slave_num + 1;
-       else
-               return slave_num;
-}
-
-static void cpsw_slave_init(struct cpsw_slave *slave, struct cpsw_priv *priv)
-{
-       u32     slave_port;
-
-       setbit_and_wait_for_clear32(&slave->sliver->soft_reset);
-
-       /* setup priority mapping */
-       __raw_writel(0x76543210, &slave->sliver->rx_pri_map);
-       __raw_writel(0x33221100, &slave->regs->tx_pri_map);
-
-       /* setup max packet size, and mac address */
-       __raw_writel(PKT_MAX, &slave->sliver->rx_maxlen);
-       cpsw_set_slave_mac(slave, priv);
-
-       slave->mac_control = 0; /* no link yet */
-
-       /* enable forwarding */
-       slave_port = cpsw_get_slave_port(priv, slave->slave_num);
-       cpsw_ale_port_state(priv, slave_port, ALE_PORT_STATE_FORWARD);
-
-       cpsw_ale_add_mcast(priv, net_bcast_ethaddr, 1 << slave_port);
-
-       priv->phy_mask |= 1 << slave->data->phy_addr;
-}
-
-static struct cpdma_desc *cpdma_desc_alloc(struct cpsw_priv *priv)
-{
-       struct cpdma_desc *desc = priv->desc_free;
-
-       if (desc)
-               priv->desc_free = desc_read_ptr(desc, hw_next);
-       return desc;
-}
-
-static void cpdma_desc_free(struct cpsw_priv *priv, struct cpdma_desc *desc)
-{
-       if (desc) {
-               desc_write(desc, hw_next, priv->desc_free);
-               priv->desc_free = desc;
-       }
-}
-
-static int cpdma_submit(struct cpsw_priv *priv, struct cpdma_chan *chan,
-                       void *buffer, int len)
-{
-       struct cpdma_desc *desc, *prev;
-       u32 mode;
-
-       desc = cpdma_desc_alloc(priv);
-       if (!desc)
-               return -ENOMEM;
-
-       if (len < PKT_MIN)
-               len = PKT_MIN;
-
-       mode = CPDMA_DESC_OWNER | CPDMA_DESC_SOP | CPDMA_DESC_EOP;
-
-       desc_write(desc, hw_next,   0);
-       desc_write(desc, hw_buffer, buffer);
-       desc_write(desc, hw_len,    len);
-       desc_write(desc, hw_mode,   mode | len);
-       desc_write(desc, sw_buffer, buffer);
-       desc_write(desc, sw_len,    len);
-
-       if (!chan->head) {
-               /* simple case - first packet enqueued */
-               chan->head = desc;
-               chan->tail = desc;
-               chan_write(chan, hdp, desc);
-               goto done;
-       }
-
-       /* not the first packet - enqueue at the tail */
-       prev = chan->tail;
-       desc_write(prev, hw_next, desc);
-       chan->tail = desc;
-
-       /* next check if EOQ has been triggered already */
-       if (desc_read(prev, hw_mode) & CPDMA_DESC_EOQ)
-               chan_write(chan, hdp, desc);
-
-done:
-       if (chan->rxfree)
-               chan_write(chan, rxfree, 1);
-       return 0;
-}
-
-static int cpdma_process(struct cpsw_priv *priv, struct cpdma_chan *chan,
-                        void **buffer, int *len)
-{
-       struct cpdma_desc *desc = chan->head;
-       u32 status;
-
-       if (!desc)
-               return -ENOENT;
-
-       status = desc_read(desc, hw_mode);
-
-       if (len)
-               *len = status & 0x7ff;
-
-       if (buffer)
-               *buffer = desc_read_ptr(desc, sw_buffer);
-
-       if (status & CPDMA_DESC_OWNER) {
-               if (chan_read(chan, hdp) == 0) {
-                       if (desc_read(desc, hw_mode) & CPDMA_DESC_OWNER)
-                               chan_write(chan, hdp, desc);
-               }
-
-               return -EBUSY;
-       }
-
-       chan->head = desc_read_ptr(desc, hw_next);
-       chan_write(chan, cp, desc);
-
-       cpdma_desc_free(priv, desc);
-       return 0;
-}
-
-static int _cpsw_init(struct cpsw_priv *priv, u8 *enetaddr)
-{
-       struct cpsw_slave       *slave;
-       int i, ret;
-
-       /* soft reset the controller and initialize priv */
-       setbit_and_wait_for_clear32(&priv->regs->soft_reset);
-
-       /* initialize and reset the address lookup engine */
-       cpsw_ale_enable(priv, 1);
-       cpsw_ale_clear(priv, 1);
-       cpsw_ale_vlan_aware(priv, 0); /* vlan unaware mode */
-
-       /* setup host port priority mapping */
-       __raw_writel(0x76543210, &priv->host_port_regs->cpdma_tx_pri_map);
-       __raw_writel(0, &priv->host_port_regs->cpdma_rx_chan_map);
-
-       /* disable priority elevation and enable statistics on all ports */
-       __raw_writel(0, &priv->regs->ptype);
-
-       /* enable statistics collection only on the host port */
-       __raw_writel(BIT(priv->host_port), &priv->regs->stat_port_en);
-       __raw_writel(0x7, &priv->regs->stat_port_en);
-
-       cpsw_ale_port_state(priv, priv->host_port, ALE_PORT_STATE_FORWARD);
-
-       cpsw_ale_add_ucast(priv, enetaddr, priv->host_port, ALE_SECURE);
-       cpsw_ale_add_mcast(priv, net_bcast_ethaddr, 1 << priv->host_port);
-
-       for_active_slave(slave, priv)
-               cpsw_slave_init(slave, priv);
-
-       ret = cpsw_update_link(priv);
-       if (ret)
-               goto out;
-
-       /* init descriptor pool */
-       for (i = 0; i < NUM_DESCS; i++) {
-               desc_write(&priv->descs[i], hw_next,
-                          (i == (NUM_DESCS - 1)) ? 0 : &priv->descs[i+1]);
-       }
-       priv->desc_free = &priv->descs[0];
-
-       /* initialize channels */
-       if (priv->data.version == CPSW_CTRL_VERSION_2) {
-               memset(&priv->rx_chan, 0, sizeof(struct cpdma_chan));
-               priv->rx_chan.hdp       = priv->dma_regs + CPDMA_RXHDP_VER2;
-               priv->rx_chan.cp        = priv->dma_regs + CPDMA_RXCP_VER2;
-               priv->rx_chan.rxfree    = priv->dma_regs + CPDMA_RXFREE;
-
-               memset(&priv->tx_chan, 0, sizeof(struct cpdma_chan));
-               priv->tx_chan.hdp       = priv->dma_regs + CPDMA_TXHDP_VER2;
-               priv->tx_chan.cp        = priv->dma_regs + CPDMA_TXCP_VER2;
-       } else {
-               memset(&priv->rx_chan, 0, sizeof(struct cpdma_chan));
-               priv->rx_chan.hdp       = priv->dma_regs + CPDMA_RXHDP_VER1;
-               priv->rx_chan.cp        = priv->dma_regs + CPDMA_RXCP_VER1;
-               priv->rx_chan.rxfree    = priv->dma_regs + CPDMA_RXFREE;
-
-               memset(&priv->tx_chan, 0, sizeof(struct cpdma_chan));
-               priv->tx_chan.hdp       = priv->dma_regs + CPDMA_TXHDP_VER1;
-               priv->tx_chan.cp        = priv->dma_regs + CPDMA_TXCP_VER1;
-       }
-
-       /* clear dma state */
-       setbit_and_wait_for_clear32(priv->dma_regs + CPDMA_SOFTRESET);
-
-       if (priv->data.version == CPSW_CTRL_VERSION_2) {
-               for (i = 0; i < priv->data.channels; i++) {
-                       __raw_writel(0, priv->dma_regs + CPDMA_RXHDP_VER2 + 4
-                                       * i);
-                       __raw_writel(0, priv->dma_regs + CPDMA_RXFREE + 4
-                                       * i);
-                       __raw_writel(0, priv->dma_regs + CPDMA_RXCP_VER2 + 4
-                                       * i);
-                       __raw_writel(0, priv->dma_regs + CPDMA_TXHDP_VER2 + 4
-                                       * i);
-                       __raw_writel(0, priv->dma_regs + CPDMA_TXCP_VER2 + 4
-                                       * i);
-               }
-       } else {
-               for (i = 0; i < priv->data.channels; i++) {
-                       __raw_writel(0, priv->dma_regs + CPDMA_RXHDP_VER1 + 4
-                                       * i);
-                       __raw_writel(0, priv->dma_regs + CPDMA_RXFREE + 4
-                                       * i);
-                       __raw_writel(0, priv->dma_regs + CPDMA_RXCP_VER1 + 4
-                                       * i);
-                       __raw_writel(0, priv->dma_regs + CPDMA_TXHDP_VER1 + 4
-                                       * i);
-                       __raw_writel(0, priv->dma_regs + CPDMA_TXCP_VER1 + 4
-                                       * i);
-
-               }
-       }
-
-       __raw_writel(1, priv->dma_regs + CPDMA_TXCONTROL);
-       __raw_writel(1, priv->dma_regs + CPDMA_RXCONTROL);
-
-       /* submit rx descs */
-       for (i = 0; i < PKTBUFSRX; i++) {
-               ret = cpdma_submit(priv, &priv->rx_chan, net_rx_packets[i],
-                                  PKTSIZE);
-               if (ret < 0) {
-                       printf("error %d submitting rx desc\n", ret);
-                       break;
-               }
-       }
-
-out:
-       return ret;
-}
-
-static int cpsw_reap_completed_packets(struct cpsw_priv *priv)
-{
-       int timeout = CPDMA_TIMEOUT;
-
-       /* reap completed packets */
-       while (timeout-- &&
-              (cpdma_process(priv, &priv->tx_chan, NULL, NULL) >= 0))
-               ;
-
-       return timeout;
-}
-
-static void _cpsw_halt(struct cpsw_priv *priv)
-{
-       cpsw_reap_completed_packets(priv);
-
-       writel(0, priv->dma_regs + CPDMA_TXCONTROL);
-       writel(0, priv->dma_regs + CPDMA_RXCONTROL);
-
-       /* soft reset the controller and initialize priv */
-       setbit_and_wait_for_clear32(&priv->regs->soft_reset);
-
-       /* clear dma state */
-       setbit_and_wait_for_clear32(priv->dma_regs + CPDMA_SOFTRESET);
-
-}
-
-static int _cpsw_send(struct cpsw_priv *priv, void *packet, int length)
-{
-       int timeout;
-
-       flush_dcache_range((unsigned long)packet,
-                          (unsigned long)packet + ALIGN(length, PKTALIGN));
-
-       timeout = cpsw_reap_completed_packets(priv);
-       if (timeout == -1) {
-               printf("cpdma_process timeout\n");
-               return -ETIMEDOUT;
-       }
-
-       return cpdma_submit(priv, &priv->tx_chan, packet, length);
-}
-
-static int _cpsw_recv(struct cpsw_priv *priv, uchar **pkt)
-{
-       void *buffer;
-       int len;
-       int ret;
-
-       ret = cpdma_process(priv, &priv->rx_chan, &buffer, &len);
-       if (ret < 0)
-               return ret;
-
-       invalidate_dcache_range((unsigned long)buffer,
-                               (unsigned long)buffer + PKTSIZE_ALIGN);
-       *pkt = buffer;
-
-       return len;
-}
-
-static void cpsw_slave_setup(struct cpsw_slave *slave, int slave_num,
-                           struct cpsw_priv *priv)
-{
-       void                    *regs = priv->regs;
-       struct cpsw_slave_data  *data = priv->data.slave_data + slave_num;
-       slave->slave_num = slave_num;
-       slave->data     = data;
-       slave->regs     = regs + data->slave_reg_ofs;
-       slave->sliver   = regs + data->sliver_reg_ofs;
-}
-
-static int cpsw_phy_init(struct cpsw_priv *priv, struct cpsw_slave *slave)
-{
-       struct phy_device *phydev;
-       u32 supported = PHY_GBIT_FEATURES;
-
-       phydev = phy_connect(priv->bus,
-                       slave->data->phy_addr,
-                       priv->dev,
-                       slave->data->phy_if);
-
-       if (!phydev)
-               return -1;
-
-       phydev->supported &= supported;
-       phydev->advertising = phydev->supported;
-
-#ifdef CONFIG_DM_ETH
-       if (slave->data->phy_of_handle)
-               phydev->node = offset_to_ofnode(slave->data->phy_of_handle);
-#endif
-
-       priv->phydev = phydev;
-       phy_config(phydev);
-
-       return 1;
-}
-
-static void cpsw_phy_addr_update(struct cpsw_priv *priv)
-{
-       struct cpsw_platform_data *data = &priv->data;
-       u16 alive = mdio_regs->alive & GENMASK(15, 0);
-       int active = data->active_slave;
-       int new_addr = ffs(alive) - 1;
-
-       /*
-        * If there is only one phy alive and its address does not match
-        * that of active slave, then phy address can safely be updated.
-        */
-       if (hweight16(alive) == 1 &&
-           data->slave_data[active].phy_addr != new_addr) {
-               printf("Updated phy address for CPSW#%d, old: %d, new: %d\n",
-                      active, data->slave_data[active].phy_addr, new_addr);
-               data->slave_data[active].phy_addr = new_addr;
-       }
-}
-
-int _cpsw_register(struct cpsw_priv *priv)
-{
-       struct cpsw_slave       *slave;
-       struct cpsw_platform_data *data = &priv->data;
-       void                    *regs = (void *)data->cpsw_base;
-
-       priv->slaves = malloc(sizeof(struct cpsw_slave) * data->slaves);
-       if (!priv->slaves) {
-               return -ENOMEM;
-       }
-
-       priv->host_port         = data->host_port_num;
-       priv->regs              = regs;
-       priv->host_port_regs    = regs + data->host_port_reg_ofs;
-       priv->dma_regs          = regs + data->cpdma_reg_ofs;
-       priv->ale_regs          = regs + data->ale_reg_ofs;
-       priv->descs             = (void *)regs + data->bd_ram_ofs;
-
-       int idx = 0;
-
-       for_each_slave(slave, priv) {
-               cpsw_slave_setup(slave, idx, priv);
-               idx = idx + 1;
-       }
-
-       cpsw_mdio_init(priv->dev->name, data->mdio_base, data->mdio_div);
-
-       cpsw_phy_addr_update(priv);
-
-       priv->bus = miiphy_get_dev_by_name(priv->dev->name);
-       for_active_slave(slave, priv)
-               cpsw_phy_init(priv, slave);
-
-       return 0;
-}
-
-#ifndef CONFIG_DM_ETH
-static int cpsw_init(struct eth_device *dev, bd_t *bis)
-{
-       struct cpsw_priv        *priv = dev->priv;
-
-       return _cpsw_init(priv, dev->enetaddr);
-}
-
-static void cpsw_halt(struct eth_device *dev)
-{
-       struct cpsw_priv *priv = dev->priv;
-
-       return _cpsw_halt(priv);
-}
-
-static int cpsw_send(struct eth_device *dev, void *packet, int length)
-{
-       struct cpsw_priv        *priv = dev->priv;
-
-       return _cpsw_send(priv, packet, length);
-}
-
-static int cpsw_recv(struct eth_device *dev)
-{
-       struct cpsw_priv *priv = dev->priv;
-       uchar *pkt = NULL;
-       int len;
-
-       len = _cpsw_recv(priv, &pkt);
-
-       if (len > 0) {
-               net_process_received_packet(pkt, len);
-               cpdma_submit(priv, &priv->rx_chan, pkt, PKTSIZE);
-       }
-
-       return len;
-}
-
-int cpsw_register(struct cpsw_platform_data *data)
-{
-       struct cpsw_priv        *priv;
-       struct eth_device       *dev;
-       int ret;
-
-       dev = calloc(sizeof(*dev), 1);
-       if (!dev)
-               return -ENOMEM;
-
-       priv = calloc(sizeof(*priv), 1);
-       if (!priv) {
-               free(dev);
-               return -ENOMEM;
-       }
-
-       priv->dev = dev;
-       priv->data = *data;
-
-       strcpy(dev->name, "cpsw");
-       dev->iobase     = 0;
-       dev->init       = cpsw_init;
-       dev->halt       = cpsw_halt;
-       dev->send       = cpsw_send;
-       dev->recv       = cpsw_recv;
-       dev->priv       = priv;
-
-       eth_register(dev);
-
-       ret = _cpsw_register(priv);
-       if (ret < 0) {
-               eth_unregister(dev);
-               free(dev);
-               free(priv);
-               return ret;
-       }
-
-       return 1;
-}
-#else
-static int cpsw_eth_start(struct udevice *dev)
-{
-       struct eth_pdata *pdata = dev_get_platdata(dev);
-       struct cpsw_priv *priv = dev_get_priv(dev);
-
-       return _cpsw_init(priv, pdata->enetaddr);
-}
-
-static int cpsw_eth_send(struct udevice *dev, void *packet, int length)
-{
-       struct cpsw_priv *priv = dev_get_priv(dev);
-
-       return _cpsw_send(priv, packet, length);
-}
-
-static int cpsw_eth_recv(struct udevice *dev, int flags, uchar **packetp)
-{
-       struct cpsw_priv *priv = dev_get_priv(dev);
-
-       return _cpsw_recv(priv, packetp);
-}
-
-static int cpsw_eth_free_pkt(struct udevice *dev, uchar *packet,
-                                  int length)
-{
-       struct cpsw_priv *priv = dev_get_priv(dev);
-
-       return cpdma_submit(priv, &priv->rx_chan, packet, PKTSIZE);
-}
-
-static void cpsw_eth_stop(struct udevice *dev)
-{
-       struct cpsw_priv *priv = dev_get_priv(dev);
-
-       return _cpsw_halt(priv);
-}
-
-
-static int cpsw_eth_probe(struct udevice *dev)
-{
-       struct cpsw_priv *priv = dev_get_priv(dev);
-
-       priv->dev = dev;
-
-       return _cpsw_register(priv);
-}
-
-static const struct eth_ops cpsw_eth_ops = {
-       .start          = cpsw_eth_start,
-       .send           = cpsw_eth_send,
-       .recv           = cpsw_eth_recv,
-       .free_pkt       = cpsw_eth_free_pkt,
-       .stop           = cpsw_eth_stop,
-};
-
-static inline fdt_addr_t cpsw_get_addr_by_node(const void *fdt, int node)
-{
-       return fdtdec_get_addr_size_auto_noparent(fdt, node, "reg", 0, NULL,
-                                                 false);
-}
-
-static void cpsw_gmii_sel_am3352(struct cpsw_priv *priv,
-                                phy_interface_t phy_mode)
-{
-       u32 reg;
-       u32 mask;
-       u32 mode = 0;
-       bool rgmii_id = false;
-       int slave = priv->data.active_slave;
-
-       reg = readl(priv->data.gmii_sel);
-
-       switch (phy_mode) {
-       case PHY_INTERFACE_MODE_RMII:
-               mode = AM33XX_GMII_SEL_MODE_RMII;
-               break;
-
-       case PHY_INTERFACE_MODE_RGMII:
-               mode = AM33XX_GMII_SEL_MODE_RGMII;
-               break;
-       case PHY_INTERFACE_MODE_RGMII_ID:
-       case PHY_INTERFACE_MODE_RGMII_RXID:
-       case PHY_INTERFACE_MODE_RGMII_TXID:
-               mode = AM33XX_GMII_SEL_MODE_RGMII;
-               rgmii_id = true;
-               break;
-
-       case PHY_INTERFACE_MODE_MII:
-       default:
-               mode = AM33XX_GMII_SEL_MODE_MII;
-               break;
-       };
-
-       mask = GMII_SEL_MODE_MASK << (slave * 2) | BIT(slave + 6);
-       mode <<= slave * 2;
-
-       if (priv->data.rmii_clock_external) {
-               if (slave == 0)
-                       mode |= AM33XX_GMII_SEL_RMII1_IO_CLK_EN;
-               else
-                       mode |= AM33XX_GMII_SEL_RMII2_IO_CLK_EN;
-       }
-
-       if (rgmii_id) {
-               if (slave == 0)
-                       mode |= AM33XX_GMII_SEL_RGMII1_IDMODE;
-               else
-                       mode |= AM33XX_GMII_SEL_RGMII2_IDMODE;
-       }
-
-       reg &= ~mask;
-       reg |= mode;
-
-       writel(reg, priv->data.gmii_sel);
-}
-
-static void cpsw_gmii_sel_dra7xx(struct cpsw_priv *priv,
-                                phy_interface_t phy_mode)
-{
-       u32 reg;
-       u32 mask;
-       u32 mode = 0;
-       int slave = priv->data.active_slave;
-
-       reg = readl(priv->data.gmii_sel);
-
-       switch (phy_mode) {
-       case PHY_INTERFACE_MODE_RMII:
-               mode = AM33XX_GMII_SEL_MODE_RMII;
-               break;
-
-       case PHY_INTERFACE_MODE_RGMII:
-       case PHY_INTERFACE_MODE_RGMII_ID:
-       case PHY_INTERFACE_MODE_RGMII_RXID:
-       case PHY_INTERFACE_MODE_RGMII_TXID:
-               mode = AM33XX_GMII_SEL_MODE_RGMII;
-               break;
-
-       case PHY_INTERFACE_MODE_MII:
-       default:
-               mode = AM33XX_GMII_SEL_MODE_MII;
-               break;
-       };
-
-       switch (slave) {
-       case 0:
-               mask = GMII_SEL_MODE_MASK;
-               break;
-       case 1:
-               mask = GMII_SEL_MODE_MASK << 4;
-               mode <<= 4;
-               break;
-       default:
-               dev_err(priv->dev, "invalid slave number...\n");
-               return;
-       }
-
-       if (priv->data.rmii_clock_external)
-               dev_err(priv->dev, "RMII External clock is not supported\n");
-
-       reg &= ~mask;
-       reg |= mode;
-
-       writel(reg, priv->data.gmii_sel);
-}
-
-static void cpsw_phy_sel(struct cpsw_priv *priv, const char *compat,
-                        phy_interface_t phy_mode)
-{
-       if (!strcmp(compat, "ti,am3352-cpsw-phy-sel"))
-               cpsw_gmii_sel_am3352(priv, phy_mode);
-       if (!strcmp(compat, "ti,am43xx-cpsw-phy-sel"))
-               cpsw_gmii_sel_am3352(priv, phy_mode);
-       else if (!strcmp(compat, "ti,dra7xx-cpsw-phy-sel"))
-               cpsw_gmii_sel_dra7xx(priv, phy_mode);
-}
-
-static int cpsw_eth_ofdata_to_platdata(struct udevice *dev)
-{
-       struct eth_pdata *pdata = dev_get_platdata(dev);
-       struct cpsw_priv *priv = dev_get_priv(dev);
-       struct gpio_desc *mode_gpios;
-       const char *phy_mode;
-       const char *phy_sel_compat = NULL;
-       const void *fdt = gd->fdt_blob;
-       int node = dev_of_offset(dev);
-       int subnode;
-       int slave_index = 0;
-       int active_slave;
-       int num_mode_gpios;
-       int ret;
-
-       pdata->iobase = devfdt_get_addr(dev);
-       priv->data.version = CPSW_CTRL_VERSION_2;
-       priv->data.bd_ram_ofs = CPSW_BD_OFFSET;
-       priv->data.ale_reg_ofs = CPSW_ALE_OFFSET;
-       priv->data.cpdma_reg_ofs = CPSW_CPDMA_OFFSET;
-       priv->data.mdio_div = CPSW_MDIO_DIV;
-       priv->data.host_port_reg_ofs = CPSW_HOST_PORT_OFFSET,
-
-       pdata->phy_interface = -1;
-
-       priv->data.cpsw_base = pdata->iobase;
-       priv->data.channels = fdtdec_get_int(fdt, node, "cpdma_channels", -1);
-       if (priv->data.channels <= 0) {
-               printf("error: cpdma_channels not found in dt\n");
-               return -ENOENT;
-       }
-
-       priv->data.slaves = fdtdec_get_int(fdt, node, "slaves", -1);
-       if (priv->data.slaves <= 0) {
-               printf("error: slaves not found in dt\n");
-               return -ENOENT;
-       }
-       priv->data.slave_data = malloc(sizeof(struct cpsw_slave_data) *
-                                      priv->data.slaves);
-
-       priv->data.ale_entries = fdtdec_get_int(fdt, node, "ale_entries", -1);
-       if (priv->data.ale_entries <= 0) {
-               printf("error: ale_entries not found in dt\n");
-               return -ENOENT;
-       }
-
-       priv->data.bd_ram_ofs = fdtdec_get_int(fdt, node, "bd_ram_size", -1);
-       if (priv->data.bd_ram_ofs <= 0) {
-               printf("error: bd_ram_size not found in dt\n");
-               return -ENOENT;
-       }
-
-       priv->data.mac_control = fdtdec_get_int(fdt, node, "mac_control", -1);
-       if (priv->data.mac_control <= 0) {
-               printf("error: ale_entries not found in dt\n");
-               return -ENOENT;
-       }
-
-       num_mode_gpios = gpio_get_list_count(dev, "mode-gpios");
-       if (num_mode_gpios > 0) {
-               mode_gpios = malloc(sizeof(struct gpio_desc) *
-                                   num_mode_gpios);
-               gpio_request_list_by_name(dev, "mode-gpios", mode_gpios,
-                                         num_mode_gpios, GPIOD_IS_OUT);
-               free(mode_gpios);
-       }
-
-       active_slave = fdtdec_get_int(fdt, node, "active_slave", 0);
-       priv->data.active_slave = active_slave;
-
-       fdt_for_each_subnode(subnode, fdt, node) {
-               int len;
-               const char *name;
-
-               name = fdt_get_name(fdt, subnode, &len);
-               if (!strncmp(name, "mdio", 4)) {
-                       u32 mdio_base;
-
-                       mdio_base = cpsw_get_addr_by_node(fdt, subnode);
-                       if (mdio_base == FDT_ADDR_T_NONE) {
-                               pr_err("Not able to get MDIO address space\n");
-                               return -ENOENT;
-                       }
-                       priv->data.mdio_base = mdio_base;
-               }
-
-               if (!strncmp(name, "slave", 5)) {
-                       u32 phy_id[2];
-
-                       if (slave_index >= priv->data.slaves)
-                               continue;
-                       phy_mode = fdt_getprop(fdt, subnode, "phy-mode", NULL);
-                       if (phy_mode)
-                               priv->data.slave_data[slave_index].phy_if =
-                                       phy_get_interface_by_name(phy_mode);
-
-                       priv->data.slave_data[slave_index].phy_of_handle =
-                               fdtdec_lookup_phandle(fdt, subnode,
-                                                     "phy-handle");
-
-                       if (priv->data.slave_data[slave_index].phy_of_handle >= 0) {
-                               priv->data.slave_data[slave_index].phy_addr =
-                                               fdtdec_get_int(gd->fdt_blob,
-                                                              priv->data.slave_data[slave_index].phy_of_handle,
-                                                              "reg", -1);
-                       } else {
-                               fdtdec_get_int_array(fdt, subnode, "phy_id",
-                                                    phy_id, 2);
-                               priv->data.slave_data[slave_index].phy_addr =
-                                               phy_id[1];
-                       }
-                       slave_index++;
-               }
-
-               if (!strncmp(name, "cpsw-phy-sel", 12)) {
-                       priv->data.gmii_sel = cpsw_get_addr_by_node(fdt,
-                                                                   subnode);
-
-                       if (priv->data.gmii_sel == FDT_ADDR_T_NONE) {
-                               pr_err("Not able to get gmii_sel reg address\n");
-                               return -ENOENT;
-                       }
-
-                       if (fdt_get_property(fdt, subnode, "rmii-clock-ext",
-                                            NULL))
-                               priv->data.rmii_clock_external = true;
-
-                       phy_sel_compat = fdt_getprop(fdt, subnode, "compatible",
-                                                    NULL);
-                       if (!phy_sel_compat) {
-                               pr_err("Not able to get gmii_sel compatible\n");
-                               return -ENOENT;
-                       }
-               }
-       }
-
-       priv->data.slave_data[0].slave_reg_ofs = CPSW_SLAVE0_OFFSET;
-       priv->data.slave_data[0].sliver_reg_ofs = CPSW_SLIVER0_OFFSET;
-
-       if (priv->data.slaves == 2) {
-               priv->data.slave_data[1].slave_reg_ofs = CPSW_SLAVE1_OFFSET;
-               priv->data.slave_data[1].sliver_reg_ofs = CPSW_SLIVER1_OFFSET;
-       }
-
-       ret = ti_cm_get_macid(dev, active_slave, pdata->enetaddr);
-       if (ret < 0) {
-               pr_err("cpsw read efuse mac failed\n");
-               return ret;
-       }
-
-       pdata->phy_interface = priv->data.slave_data[active_slave].phy_if;
-       if (pdata->phy_interface == -1) {
-               debug("%s: Invalid PHY interface '%s'\n", __func__, phy_mode);
-               return -EINVAL;
-       }
-
-       /* Select phy interface in control module */
-       cpsw_phy_sel(priv, phy_sel_compat, pdata->phy_interface);
-
-       return 0;
-}
-
-int cpsw_get_slave_phy_addr(struct udevice *dev, int slave)
-{
-       struct cpsw_priv *priv = dev_get_priv(dev);
-       struct cpsw_platform_data *data = &priv->data;
-
-       return data->slave_data[slave].phy_addr;
-}
-
-static const struct udevice_id cpsw_eth_ids[] = {
-       { .compatible = "ti,cpsw" },
-       { .compatible = "ti,am335x-cpsw" },
-       { }
-};
-
-U_BOOT_DRIVER(eth_cpsw) = {
-       .name   = "eth_cpsw",
-       .id     = UCLASS_ETH,
-       .of_match = cpsw_eth_ids,
-       .ofdata_to_platdata = cpsw_eth_ofdata_to_platdata,
-       .probe  = cpsw_eth_probe,
-       .ops    = &cpsw_eth_ops,
-       .priv_auto_alloc_size = sizeof(struct cpsw_priv),
-       .platdata_auto_alloc_size = sizeof(struct eth_pdata),
-       .flags = DM_FLAG_ALLOC_PRIV_DMA,
-};
-#endif /* CONFIG_DM_ETH */
diff --git a/drivers/net/davinci_emac.c b/drivers/net/davinci_emac.c
deleted file mode 100644 (file)
index bb879d8..0000000
+++ /dev/null
@@ -1,901 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * Ethernet driver for TI TMS320DM644x (DaVinci) chips.
- *
- * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
- *
- * Parts shamelessly stolen from TI's dm644x_emac.c. Original copyright
- * follows:
- *
- * ----------------------------------------------------------------------------
- *
- * dm644x_emac.c
- *
- * TI DaVinci (DM644X) EMAC peripheral driver source for DV-EVM
- *
- * Copyright (C) 2005 Texas Instruments.
- *
- * ----------------------------------------------------------------------------
- *
- * Modifications:
- * ver. 1.0: Sep 2005, Anant Gole - Created EMAC version for uBoot.
- * ver  1.1: Nov 2005, Anant Gole - Extended the RX logic for multiple descriptors
- */
-#include <common.h>
-#include <command.h>
-#include <net.h>
-#include <miiphy.h>
-#include <malloc.h>
-#include <netdev.h>
-#include <linux/compiler.h>
-#include <asm/arch/emac_defs.h>
-#include <asm/io.h>
-#include "davinci_emac.h"
-
-unsigned int   emac_dbg = 0;
-#define debug_emac(fmt,args...)        if (emac_dbg) printf(fmt,##args)
-
-#ifdef EMAC_HW_RAM_ADDR
-static inline unsigned long BD_TO_HW(unsigned long x)
-{
-       if (x == 0)
-               return 0;
-
-       return x - EMAC_WRAPPER_RAM_ADDR + EMAC_HW_RAM_ADDR;
-}
-
-static inline unsigned long HW_TO_BD(unsigned long x)
-{
-       if (x == 0)
-               return 0;
-
-       return x - EMAC_HW_RAM_ADDR + EMAC_WRAPPER_RAM_ADDR;
-}
-#else
-#define BD_TO_HW(x)    (x)
-#define HW_TO_BD(x)    (x)
-#endif
-
-#ifdef DAVINCI_EMAC_GIG_ENABLE
-#define emac_gigabit_enable(phy_addr)  davinci_eth_gigabit_enable(phy_addr)
-#else
-#define emac_gigabit_enable(phy_addr)  /* no gigabit to enable */
-#endif
-
-#if !defined(CONFIG_SYS_EMAC_TI_CLKDIV)
-#define CONFIG_SYS_EMAC_TI_CLKDIV      ((EMAC_MDIO_BUS_FREQ / \
-               EMAC_MDIO_CLOCK_FREQ) - 1)
-#endif
-
-static void davinci_eth_mdio_enable(void);
-
-static int gen_init_phy(int phy_addr);
-static int gen_is_phy_connected(int phy_addr);
-static int gen_get_link_speed(int phy_addr);
-static int gen_auto_negotiate(int phy_addr);
-
-void eth_mdio_enable(void)
-{
-       davinci_eth_mdio_enable();
-}
-
-/* EMAC Addresses */
-static volatile emac_regs      *adap_emac = (emac_regs *)EMAC_BASE_ADDR;
-static volatile ewrap_regs     *adap_ewrap = (ewrap_regs *)EMAC_WRAPPER_BASE_ADDR;
-static volatile mdio_regs      *adap_mdio = (mdio_regs *)EMAC_MDIO_BASE_ADDR;
-
-/* EMAC descriptors */
-static volatile emac_desc      *emac_rx_desc = (emac_desc *)(EMAC_WRAPPER_RAM_ADDR + EMAC_RX_DESC_BASE);
-static volatile emac_desc      *emac_tx_desc = (emac_desc *)(EMAC_WRAPPER_RAM_ADDR + EMAC_TX_DESC_BASE);
-static volatile emac_desc      *emac_rx_active_head = 0;
-static volatile emac_desc      *emac_rx_active_tail = 0;
-static int                     emac_rx_queue_active = 0;
-
-/* Receive packet buffers */
-static unsigned char emac_rx_buffers[EMAC_MAX_RX_BUFFERS * EMAC_RXBUF_SIZE]
-                               __aligned(ARCH_DMA_MINALIGN);
-
-#ifndef CONFIG_SYS_DAVINCI_EMAC_PHY_COUNT
-#define CONFIG_SYS_DAVINCI_EMAC_PHY_COUNT      3
-#endif
-
-/* PHY address for a discovered PHY (0xff - not found) */
-static u_int8_t        active_phy_addr[CONFIG_SYS_DAVINCI_EMAC_PHY_COUNT];
-
-/* number of PHY found active */
-static u_int8_t        num_phy;
-
-phy_t                          phy[CONFIG_SYS_DAVINCI_EMAC_PHY_COUNT];
-
-static int davinci_eth_set_mac_addr(struct eth_device *dev)
-{
-       unsigned long           mac_hi;
-       unsigned long           mac_lo;
-
-       /*
-        * Set MAC Addresses & Init multicast Hash to 0 (disable any multicast
-        * receive)
-        *  Using channel 0 only - other channels are disabled
-        *  */
-       writel(0, &adap_emac->MACINDEX);
-       mac_hi = (dev->enetaddr[3] << 24) |
-                (dev->enetaddr[2] << 16) |
-                (dev->enetaddr[1] << 8)  |
-                (dev->enetaddr[0]);
-       mac_lo = (dev->enetaddr[5] << 8) |
-                (dev->enetaddr[4]);
-
-       writel(mac_hi, &adap_emac->MACADDRHI);
-#if defined(DAVINCI_EMAC_VERSION2)
-       writel(mac_lo | EMAC_MAC_ADDR_IS_VALID | EMAC_MAC_ADDR_MATCH,
-              &adap_emac->MACADDRLO);
-#else
-       writel(mac_lo, &adap_emac->MACADDRLO);
-#endif
-
-       writel(0, &adap_emac->MACHASH1);
-       writel(0, &adap_emac->MACHASH2);
-
-       /* Set source MAC address - REQUIRED */
-       writel(mac_hi, &adap_emac->MACSRCADDRHI);
-       writel(mac_lo, &adap_emac->MACSRCADDRLO);
-
-
-       return 0;
-}
-
-static void davinci_eth_mdio_enable(void)
-{
-       u_int32_t       clkdiv;
-
-       clkdiv = CONFIG_SYS_EMAC_TI_CLKDIV;
-
-       writel((clkdiv & 0xff) |
-              MDIO_CONTROL_ENABLE |
-              MDIO_CONTROL_FAULT |
-              MDIO_CONTROL_FAULT_ENABLE,
-              &adap_mdio->CONTROL);
-
-       while (readl(&adap_mdio->CONTROL) & MDIO_CONTROL_IDLE)
-               ;
-}
-
-/*
- * Tries to find an active connected PHY. Returns 1 if address if found.
- * If no active PHY (or more than one PHY) found returns 0.
- * Sets active_phy_addr variable.
- */
-static int davinci_eth_phy_detect(void)
-{
-       u_int32_t       phy_act_state;
-       int             i;
-       int             j;
-       unsigned int    count = 0;
-
-       for (i = 0; i < CONFIG_SYS_DAVINCI_EMAC_PHY_COUNT; i++)
-               active_phy_addr[i] = 0xff;
-
-       udelay(1000);
-       phy_act_state = readl(&adap_mdio->ALIVE);
-
-       if (phy_act_state == 0)
-               return 0;               /* No active PHYs */
-
-       debug_emac("davinci_eth_phy_detect(), ALIVE = 0x%08x\n", phy_act_state);
-
-       for (i = 0, j = 0; i < 32; i++)
-               if (phy_act_state & (1 << i)) {
-                       count++;
-                       if (count <= CONFIG_SYS_DAVINCI_EMAC_PHY_COUNT) {
-                               active_phy_addr[j++] = i;
-                       } else {
-                               printf("%s: to many PHYs detected.\n",
-                                       __func__);
-                               count = 0;
-                               break;
-                       }
-               }
-
-       num_phy = count;
-
-       return count;
-}
-
-
-/* Read a PHY register via MDIO inteface. Returns 1 on success, 0 otherwise */
-int davinci_eth_phy_read(u_int8_t phy_addr, u_int8_t reg_num, u_int16_t *data)
-{
-       int     tmp;
-
-       while (readl(&adap_mdio->USERACCESS0) & MDIO_USERACCESS0_GO)
-               ;
-
-       writel(MDIO_USERACCESS0_GO |
-              MDIO_USERACCESS0_WRITE_READ |
-              ((reg_num & 0x1f) << 21) |
-              ((phy_addr & 0x1f) << 16),
-              &adap_mdio->USERACCESS0);
-
-       /* Wait for command to complete */
-       while ((tmp = readl(&adap_mdio->USERACCESS0)) & MDIO_USERACCESS0_GO)
-               ;
-
-       if (tmp & MDIO_USERACCESS0_ACK) {
-               *data = tmp & 0xffff;
-               return 1;
-       }
-
-       return 0;
-}
-
-/* Write to a PHY register via MDIO inteface. Blocks until operation is complete. */
-int davinci_eth_phy_write(u_int8_t phy_addr, u_int8_t reg_num, u_int16_t data)
-{
-
-       while (readl(&adap_mdio->USERACCESS0) & MDIO_USERACCESS0_GO)
-               ;
-
-       writel(MDIO_USERACCESS0_GO |
-              MDIO_USERACCESS0_WRITE_WRITE |
-              ((reg_num & 0x1f) << 21) |
-              ((phy_addr & 0x1f) << 16) |
-              (data & 0xffff),
-              &adap_mdio->USERACCESS0);
-
-       /* Wait for command to complete */
-       while (readl(&adap_mdio->USERACCESS0) & MDIO_USERACCESS0_GO)
-               ;
-
-       return 1;
-}
-
-/* PHY functions for a generic PHY */
-static int gen_init_phy(int phy_addr)
-{
-       int     ret = 1;
-
-       if (gen_get_link_speed(phy_addr)) {
-               /* Try another time */
-               ret = gen_get_link_speed(phy_addr);
-       }
-
-       return(ret);
-}
-
-static int gen_is_phy_connected(int phy_addr)
-{
-       u_int16_t       dummy;
-
-       return davinci_eth_phy_read(phy_addr, MII_PHYSID1, &dummy);
-}
-
-static int get_active_phy(void)
-{
-       int i;
-
-       for (i = 0; i < num_phy; i++)
-               if (phy[i].get_link_speed(active_phy_addr[i]))
-                       return i;
-
-       return -1;      /* Return error if no link */
-}
-
-static int gen_get_link_speed(int phy_addr)
-{
-       u_int16_t       tmp;
-
-       if (davinci_eth_phy_read(phy_addr, MII_STATUS_REG, &tmp) &&
-                       (tmp & 0x04)) {
-#if defined(CONFIG_DRIVER_TI_EMAC_USE_RMII) && \
-               defined(CONFIG_MACH_DAVINCI_DA850_EVM)
-               davinci_eth_phy_read(phy_addr, MII_LPA, &tmp);
-
-               /* Speed doesn't matter, there is no setting for it in EMAC. */
-               if (tmp & (LPA_100FULL | LPA_10FULL)) {
-                       /* set EMAC for Full Duplex  */
-                       writel(EMAC_MACCONTROL_MIIEN_ENABLE |
-                                       EMAC_MACCONTROL_FULLDUPLEX_ENABLE,
-                                       &adap_emac->MACCONTROL);
-               } else {
-                       /*set EMAC for Half Duplex  */
-                       writel(EMAC_MACCONTROL_MIIEN_ENABLE,
-                                       &adap_emac->MACCONTROL);
-               }
-
-               if (tmp & (LPA_100FULL | LPA_100HALF))
-                       writel(readl(&adap_emac->MACCONTROL) |
-                                       EMAC_MACCONTROL_RMIISPEED_100,
-                                        &adap_emac->MACCONTROL);
-               else
-                       writel(readl(&adap_emac->MACCONTROL) &
-                                       ~EMAC_MACCONTROL_RMIISPEED_100,
-                                        &adap_emac->MACCONTROL);
-#endif
-               return(1);
-       }
-
-       return(0);
-}
-
-static int gen_auto_negotiate(int phy_addr)
-{
-       u_int16_t       tmp;
-       u_int16_t       val;
-       unsigned long   cntr = 0;
-
-       if (!davinci_eth_phy_read(phy_addr, MII_BMCR, &tmp))
-               return 0;
-
-       val = tmp | BMCR_FULLDPLX | BMCR_ANENABLE |
-                                               BMCR_SPEED100;
-       davinci_eth_phy_write(phy_addr, MII_BMCR, val);
-
-       if (!davinci_eth_phy_read(phy_addr, MII_ADVERTISE, &val))
-               return 0;
-
-       val |= (ADVERTISE_100FULL | ADVERTISE_100HALF | ADVERTISE_10FULL |
-                                                       ADVERTISE_10HALF);
-       davinci_eth_phy_write(phy_addr, MII_ADVERTISE, val);
-
-       if (!davinci_eth_phy_read(phy_addr, MII_BMCR, &tmp))
-               return(0);
-
-#ifdef DAVINCI_EMAC_GIG_ENABLE
-       davinci_eth_phy_read(phy_addr, MII_CTRL1000, &val);
-       val |= PHY_1000BTCR_1000FD;
-       val &= ~PHY_1000BTCR_1000HD;
-       davinci_eth_phy_write(phy_addr, MII_CTRL1000, val);
-       davinci_eth_phy_read(phy_addr, MII_CTRL1000, &val);
-#endif
-
-       /* Restart Auto_negotiation  */
-       tmp |= BMCR_ANRESTART;
-       davinci_eth_phy_write(phy_addr, MII_BMCR, tmp);
-
-       /*check AutoNegotiate complete */
-       do {
-               udelay(40000);
-               if (!davinci_eth_phy_read(phy_addr, MII_BMSR, &tmp))
-                       return 0;
-
-               if (tmp & BMSR_ANEGCOMPLETE)
-                       break;
-
-               cntr++;
-       } while (cntr < 200);
-
-       if (!davinci_eth_phy_read(phy_addr, MII_BMSR, &tmp))
-               return(0);
-
-       if (!(tmp & BMSR_ANEGCOMPLETE))
-               return(0);
-
-       return(gen_get_link_speed(phy_addr));
-}
-/* End of generic PHY functions */
-
-
-#if defined(CONFIG_MII) || defined(CONFIG_CMD_MII)
-static int davinci_mii_phy_read(struct mii_dev *bus, int addr, int devad,
-                               int reg)
-{
-       unsigned short value = 0;
-       int retval = davinci_eth_phy_read(addr, reg, &value);
-
-       return retval ? value : -EIO;
-}
-
-static int davinci_mii_phy_write(struct mii_dev *bus, int addr, int devad,
-                                int reg, u16 value)
-{
-       return davinci_eth_phy_write(addr, reg, value) ? 0 : 1;
-}
-#endif
-
-static void  __attribute__((unused)) davinci_eth_gigabit_enable(int phy_addr)
-{
-       u_int16_t data;
-
-       if (davinci_eth_phy_read(phy_addr, 0, &data)) {
-               if (data & (1 << 6)) { /* speed selection MSB */
-                       /*
-                        * Check if link detected is giga-bit
-                        * If Gigabit mode detected, enable gigbit in MAC
-                        */
-                       writel(readl(&adap_emac->MACCONTROL) |
-                               EMAC_MACCONTROL_GIGFORCE |
-                               EMAC_MACCONTROL_GIGABIT_ENABLE,
-                               &adap_emac->MACCONTROL);
-               }
-       }
-}
-
-/* Eth device open */
-static int davinci_eth_open(struct eth_device *dev, bd_t *bis)
-{
-       dv_reg_p                addr;
-       u_int32_t               clkdiv, cnt, mac_control;
-       uint16_t                __maybe_unused lpa_val;
-       volatile emac_desc      *rx_desc;
-       int                     index;
-
-       debug_emac("+ emac_open\n");
-
-       /* Reset EMAC module and disable interrupts in wrapper */
-       writel(1, &adap_emac->SOFTRESET);
-       while (readl(&adap_emac->SOFTRESET) != 0)
-               ;
-#if defined(DAVINCI_EMAC_VERSION2)
-       writel(1, &adap_ewrap->softrst);
-       while (readl(&adap_ewrap->softrst) != 0)
-               ;
-#else
-       writel(0, &adap_ewrap->EWCTL);
-       for (cnt = 0; cnt < 5; cnt++) {
-               clkdiv = readl(&adap_ewrap->EWCTL);
-       }
-#endif
-
-#if defined(CONFIG_DRIVER_TI_EMAC_USE_RMII) && \
-       defined(CONFIG_MACH_DAVINCI_DA850_EVM)
-       adap_ewrap->c0rxen = adap_ewrap->c1rxen = adap_ewrap->c2rxen = 0;
-       adap_ewrap->c0txen = adap_ewrap->c1txen = adap_ewrap->c2txen = 0;
-       adap_ewrap->c0miscen = adap_ewrap->c1miscen = adap_ewrap->c2miscen = 0;
-#endif
-       rx_desc = emac_rx_desc;
-
-       writel(1, &adap_emac->TXCONTROL);
-       writel(1, &adap_emac->RXCONTROL);
-
-       davinci_eth_set_mac_addr(dev);
-
-       /* Set DMA 8 TX / 8 RX Head pointers to 0 */
-       addr = &adap_emac->TX0HDP;
-       for (cnt = 0; cnt < 8; cnt++)
-               writel(0, addr++);
-
-       addr = &adap_emac->RX0HDP;
-       for (cnt = 0; cnt < 8; cnt++)
-               writel(0, addr++);
-
-       /* Clear Statistics (do this before setting MacControl register) */
-       addr = &adap_emac->RXGOODFRAMES;
-       for(cnt = 0; cnt < EMAC_NUM_STATS; cnt++)
-               writel(0, addr++);
-
-       /* No multicast addressing */
-       writel(0, &adap_emac->MACHASH1);
-       writel(0, &adap_emac->MACHASH2);
-
-       /* Create RX queue and set receive process in place */
-       emac_rx_active_head = emac_rx_desc;
-       for (cnt = 0; cnt < EMAC_MAX_RX_BUFFERS; cnt++) {
-               rx_desc->next = BD_TO_HW((u_int32_t)(rx_desc + 1));
-               rx_desc->buffer = &emac_rx_buffers[cnt * EMAC_RXBUF_SIZE];
-               rx_desc->buff_off_len = EMAC_MAX_ETHERNET_PKT_SIZE;
-               rx_desc->pkt_flag_len = EMAC_CPPI_OWNERSHIP_BIT;
-               rx_desc++;
-       }
-
-       /* Finalize the rx desc list */
-       rx_desc--;
-       rx_desc->next = 0;
-       emac_rx_active_tail = rx_desc;
-       emac_rx_queue_active = 1;
-
-       /* Enable TX/RX */
-       writel(EMAC_MAX_ETHERNET_PKT_SIZE, &adap_emac->RXMAXLEN);
-       writel(0, &adap_emac->RXBUFFEROFFSET);
-
-       /*
-        * No fancy configs - Use this for promiscous debug
-        *   - EMAC_RXMBPENABLE_RXCAFEN_ENABLE
-        */
-       writel(EMAC_RXMBPENABLE_RXBROADEN, &adap_emac->RXMBPENABLE);
-
-       /* Enable ch 0 only */
-       writel(1, &adap_emac->RXUNICASTSET);
-
-       /* Init MDIO & get link state */
-       clkdiv = CONFIG_SYS_EMAC_TI_CLKDIV;
-       writel((clkdiv & 0xff) | MDIO_CONTROL_ENABLE | MDIO_CONTROL_FAULT,
-              &adap_mdio->CONTROL);
-
-       /* We need to wait for MDIO to start */
-       udelay(1000);
-
-       index = get_active_phy();
-       if (index == -1)
-               return(0);
-
-       /* Enable MII interface */
-       mac_control = EMAC_MACCONTROL_MIIEN_ENABLE;
-#ifdef DAVINCI_EMAC_GIG_ENABLE
-       davinci_eth_phy_read(active_phy_addr[index], MII_STAT1000, &lpa_val);
-       if (lpa_val & PHY_1000BTSR_1000FD) {
-               debug_emac("eth_open : gigabit negotiated\n");
-               mac_control |= EMAC_MACCONTROL_FULLDUPLEX_ENABLE;
-               mac_control |= EMAC_MACCONTROL_GIGABIT_ENABLE;
-       }
-#endif
-
-       davinci_eth_phy_read(active_phy_addr[index], MII_LPA, &lpa_val);
-       if (lpa_val & (LPA_100FULL | LPA_10FULL))
-               /* set EMAC for Full Duplex  */
-               mac_control |= EMAC_MACCONTROL_FULLDUPLEX_ENABLE;
-#if defined(CONFIG_SOC_DA8XX) || \
-       (defined(CONFIG_OMAP34XX) && defined(CONFIG_DRIVER_TI_EMAC_USE_RMII))
-       mac_control |= EMAC_MACCONTROL_RMIISPEED_100;
-#endif
-       writel(mac_control, &adap_emac->MACCONTROL);
-       /* Start receive process */
-       writel(BD_TO_HW((u_int32_t)emac_rx_desc), &adap_emac->RX0HDP);
-
-       debug_emac("- emac_open\n");
-
-       return(1);
-}
-
-/* EMAC Channel Teardown */
-static void davinci_eth_ch_teardown(int ch)
-{
-       dv_reg          dly = 0xff;
-       dv_reg          cnt;
-
-       debug_emac("+ emac_ch_teardown\n");
-
-       if (ch == EMAC_CH_TX) {
-               /* Init TX channel teardown */
-               writel(0, &adap_emac->TXTEARDOWN);
-               do {
-                       /*
-                        * Wait here for Tx teardown completion interrupt to
-                        * occur. Note: A task delay can be called here to pend
-                        * rather than occupying CPU cycles - anyway it has
-                        * been found that teardown takes very few cpu cycles
-                        * and does not affect functionality
-                        */
-                       dly--;
-                       udelay(1);
-                       if (dly == 0)
-                               break;
-                       cnt = readl(&adap_emac->TX0CP);
-               } while (cnt != 0xfffffffc);
-               writel(cnt, &adap_emac->TX0CP);
-               writel(0, &adap_emac->TX0HDP);
-       } else {
-               /* Init RX channel teardown */
-               writel(0, &adap_emac->RXTEARDOWN);
-               do {
-                       /*
-                        * Wait here for Rx teardown completion interrupt to
-                        * occur. Note: A task delay can be called here to pend
-                        * rather than occupying CPU cycles - anyway it has
-                        * been found that teardown takes very few cpu cycles
-                        * and does not affect functionality
-                        */
-                       dly--;
-                       udelay(1);
-                       if (dly == 0)
-                               break;
-                       cnt = readl(&adap_emac->RX0CP);
-               } while (cnt != 0xfffffffc);
-               writel(cnt, &adap_emac->RX0CP);
-               writel(0, &adap_emac->RX0HDP);
-       }
-
-       debug_emac("- emac_ch_teardown\n");
-}
-
-/* Eth device close */
-static void davinci_eth_close(struct eth_device *dev)
-{
-       debug_emac("+ emac_close\n");
-
-       davinci_eth_ch_teardown(EMAC_CH_TX);    /* TX Channel teardown */
-       if (readl(&adap_emac->RXCONTROL) & 1)
-               davinci_eth_ch_teardown(EMAC_CH_RX); /* RX Channel teardown */
-
-       /* Reset EMAC module and disable interrupts in wrapper */
-       writel(1, &adap_emac->SOFTRESET);
-#if defined(DAVINCI_EMAC_VERSION2)
-       writel(1, &adap_ewrap->softrst);
-#else
-       writel(0, &adap_ewrap->EWCTL);
-#endif
-
-#if defined(CONFIG_DRIVER_TI_EMAC_USE_RMII) && \
-       defined(CONFIG_MACH_DAVINCI_DA850_EVM)
-       adap_ewrap->c0rxen = adap_ewrap->c1rxen = adap_ewrap->c2rxen = 0;
-       adap_ewrap->c0txen = adap_ewrap->c1txen = adap_ewrap->c2txen = 0;
-       adap_ewrap->c0miscen = adap_ewrap->c1miscen = adap_ewrap->c2miscen = 0;
-#endif
-       debug_emac("- emac_close\n");
-}
-
-static int tx_send_loop = 0;
-
-/*
- * This function sends a single packet on the network and returns
- * positive number (number of bytes transmitted) or negative for error
- */
-static int davinci_eth_send_packet (struct eth_device *dev,
-                                       void *packet, int length)
-{
-       int ret_status = -1;
-       int index;
-       tx_send_loop = 0;
-
-       index = get_active_phy();
-       if (index == -1) {
-               printf(" WARN: emac_send_packet: No link\n");
-               return (ret_status);
-       }
-
-       /* Check packet size and if < EMAC_MIN_ETHERNET_PKT_SIZE, pad it up */
-       if (length < EMAC_MIN_ETHERNET_PKT_SIZE) {
-               length = EMAC_MIN_ETHERNET_PKT_SIZE;
-       }
-
-       /* Populate the TX descriptor */
-       emac_tx_desc->next = 0;
-       emac_tx_desc->buffer = (u_int8_t *) packet;
-       emac_tx_desc->buff_off_len = (length & 0xffff);
-       emac_tx_desc->pkt_flag_len = ((length & 0xffff) |
-                                     EMAC_CPPI_SOP_BIT |
-                                     EMAC_CPPI_OWNERSHIP_BIT |
-                                     EMAC_CPPI_EOP_BIT);
-
-       flush_dcache_range((unsigned long)packet,
-                          (unsigned long)packet + ALIGN(length, PKTALIGN));
-
-       /* Send the packet */
-       writel(BD_TO_HW((unsigned long)emac_tx_desc), &adap_emac->TX0HDP);
-
-       /* Wait for packet to complete or link down */
-       while (1) {
-               if (!phy[index].get_link_speed(active_phy_addr[index])) {
-                       davinci_eth_ch_teardown (EMAC_CH_TX);
-                       return (ret_status);
-               }
-
-               if (readl(&adap_emac->TXINTSTATRAW) & 0x01) {
-                       ret_status = length;
-                       break;
-               }
-               tx_send_loop++;
-       }
-
-       return (ret_status);
-}
-
-/*
- * This function handles receipt of a packet from the network
- */
-static int davinci_eth_rcv_packet (struct eth_device *dev)
-{
-       volatile emac_desc *rx_curr_desc;
-       volatile emac_desc *curr_desc;
-       volatile emac_desc *tail_desc;
-       int status, ret = -1;
-
-       rx_curr_desc = emac_rx_active_head;
-       if (!rx_curr_desc)
-               return 0;
-       status = rx_curr_desc->pkt_flag_len;
-       if ((status & EMAC_CPPI_OWNERSHIP_BIT) == 0) {
-               if (status & EMAC_CPPI_RX_ERROR_FRAME) {
-                       /* Error in packet - discard it and requeue desc */
-                       printf ("WARN: emac_rcv_pkt: Error in packet\n");
-               } else {
-                       unsigned long tmp = (unsigned long)rx_curr_desc->buffer;
-                       unsigned short len =
-                               rx_curr_desc->buff_off_len & 0xffff;
-
-                       invalidate_dcache_range(tmp, tmp + ALIGN(len, PKTALIGN));
-                       net_process_received_packet(rx_curr_desc->buffer, len);
-                       ret = len;
-               }
-
-               /* Ack received packet descriptor */
-               writel(BD_TO_HW((ulong)rx_curr_desc), &adap_emac->RX0CP);
-               curr_desc = rx_curr_desc;
-               emac_rx_active_head =
-                       (volatile emac_desc *) (HW_TO_BD(rx_curr_desc->next));
-
-               if (status & EMAC_CPPI_EOQ_BIT) {
-                       if (emac_rx_active_head) {
-                               writel(BD_TO_HW((ulong)emac_rx_active_head),
-                                      &adap_emac->RX0HDP);
-                       } else {
-                               emac_rx_queue_active = 0;
-                               printf ("INFO:emac_rcv_packet: RX Queue not active\n");
-                       }
-               }
-
-               /* Recycle RX descriptor */
-               rx_curr_desc->buff_off_len = EMAC_MAX_ETHERNET_PKT_SIZE;
-               rx_curr_desc->pkt_flag_len = EMAC_CPPI_OWNERSHIP_BIT;
-               rx_curr_desc->next = 0;
-
-               if (emac_rx_active_head == 0) {
-                       printf ("INFO: emac_rcv_pkt: active queue head = 0\n");
-                       emac_rx_active_head = curr_desc;
-                       emac_rx_active_tail = curr_desc;
-                       if (emac_rx_queue_active != 0) {
-                               writel(BD_TO_HW((ulong)emac_rx_active_head),
-                                      &adap_emac->RX0HDP);
-                               printf ("INFO: emac_rcv_pkt: active queue head = 0, HDP fired\n");
-                               emac_rx_queue_active = 1;
-                       }
-               } else {
-                       tail_desc = emac_rx_active_tail;
-                       emac_rx_active_tail = curr_desc;
-                       tail_desc->next = BD_TO_HW((ulong) curr_desc);
-                       status = tail_desc->pkt_flag_len;
-                       if (status & EMAC_CPPI_EOQ_BIT) {
-                               writel(BD_TO_HW((ulong)curr_desc),
-                                      &adap_emac->RX0HDP);
-                               status &= ~EMAC_CPPI_EOQ_BIT;
-                               tail_desc->pkt_flag_len = status;
-                       }
-               }
-               return (ret);
-       }
-       return (0);
-}
-
-/*
- * This function initializes the emac hardware. It does NOT initialize
- * EMAC modules power or pin multiplexors, that is done by board_init()
- * much earlier in bootup process. Returns 1 on success, 0 otherwise.
- */
-int davinci_emac_initialize(void)
-{
-       u_int32_t       phy_id;
-       u_int16_t       tmp;
-       int             i;
-       int             ret;
-       struct eth_device *dev;
-
-       dev = malloc(sizeof *dev);
-
-       if (dev == NULL)
-               return -1;
-
-       memset(dev, 0, sizeof *dev);
-       strcpy(dev->name, "DaVinci-EMAC");
-
-       dev->iobase = 0;
-       dev->init = davinci_eth_open;
-       dev->halt = davinci_eth_close;
-       dev->send = davinci_eth_send_packet;
-       dev->recv = davinci_eth_rcv_packet;
-       dev->write_hwaddr = davinci_eth_set_mac_addr;
-
-       eth_register(dev);
-
-       davinci_eth_mdio_enable();
-
-       /* let the EMAC detect the PHYs */
-       udelay(5000);
-
-       for (i = 0; i < 256; i++) {
-               if (readl(&adap_mdio->ALIVE))
-                       break;
-               udelay(1000);
-       }
-
-       if (i >= 256) {
-               printf("No ETH PHY detected!!!\n");
-               return(0);
-       }
-
-       /* Find if PHY(s) is/are connected */
-       ret = davinci_eth_phy_detect();
-       if (!ret)
-               return(0);
-       else
-               debug_emac(" %d ETH PHY detected\n", ret);
-
-       /* Get PHY ID and initialize phy_ops for a detected PHY */
-       for (i = 0; i < num_phy; i++) {
-               if (!davinci_eth_phy_read(active_phy_addr[i], MII_PHYSID1,
-                                                       &tmp)) {
-                       active_phy_addr[i] = 0xff;
-                       continue;
-               }
-
-               phy_id = (tmp << 16) & 0xffff0000;
-
-               if (!davinci_eth_phy_read(active_phy_addr[i], MII_PHYSID2,
-                                                       &tmp)) {
-                       active_phy_addr[i] = 0xff;
-                       continue;
-               }
-
-               phy_id |= tmp & 0x0000ffff;
-
-               switch (phy_id) {
-#ifdef PHY_KSZ8873
-               case PHY_KSZ8873:
-                       sprintf(phy[i].name, "KSZ8873 @ 0x%02x",
-                                               active_phy_addr[i]);
-                       phy[i].init = ksz8873_init_phy;
-                       phy[i].is_phy_connected = ksz8873_is_phy_connected;
-                       phy[i].get_link_speed = ksz8873_get_link_speed;
-                       phy[i].auto_negotiate = ksz8873_auto_negotiate;
-                       break;
-#endif
-#ifdef PHY_LXT972
-               case PHY_LXT972:
-                       sprintf(phy[i].name, "LXT972 @ 0x%02x",
-                                               active_phy_addr[i]);
-                       phy[i].init = lxt972_init_phy;
-                       phy[i].is_phy_connected = lxt972_is_phy_connected;
-                       phy[i].get_link_speed = lxt972_get_link_speed;
-                       phy[i].auto_negotiate = lxt972_auto_negotiate;
-                       break;
-#endif
-#ifdef PHY_DP83848
-               case PHY_DP83848:
-                       sprintf(phy[i].name, "DP83848 @ 0x%02x",
-                                               active_phy_addr[i]);
-                       phy[i].init = dp83848_init_phy;
-                       phy[i].is_phy_connected = dp83848_is_phy_connected;
-                       phy[i].get_link_speed = dp83848_get_link_speed;
-                       phy[i].auto_negotiate = dp83848_auto_negotiate;
-                       break;
-#endif
-#ifdef PHY_ET1011C
-               case PHY_ET1011C:
-                       sprintf(phy[i].name, "ET1011C @ 0x%02x",
-                                               active_phy_addr[i]);
-                       phy[i].init = gen_init_phy;
-                       phy[i].is_phy_connected = gen_is_phy_connected;
-                       phy[i].get_link_speed = et1011c_get_link_speed;
-                       phy[i].auto_negotiate = gen_auto_negotiate;
-                       break;
-#endif
-               default:
-                       sprintf(phy[i].name, "GENERIC @ 0x%02x",
-                                               active_phy_addr[i]);
-                       phy[i].init = gen_init_phy;
-                       phy[i].is_phy_connected = gen_is_phy_connected;
-                       phy[i].get_link_speed = gen_get_link_speed;
-                       phy[i].auto_negotiate = gen_auto_negotiate;
-               }
-
-               debug("Ethernet PHY: %s\n", phy[i].name);
-
-               int retval;
-               struct mii_dev *mdiodev = mdio_alloc();
-               if (!mdiodev)
-                       return -ENOMEM;
-               strncpy(mdiodev->name, phy[i].name, MDIO_NAME_LEN);
-               mdiodev->read = davinci_mii_phy_read;
-               mdiodev->write = davinci_mii_phy_write;
-
-               retval = mdio_register(mdiodev);
-               if (retval < 0)
-                       return retval;
-#ifdef DAVINCI_EMAC_GIG_ENABLE
-#define PHY_CONF_REG   22
-               /* Enable PHY to clock out TX_CLK */
-               davinci_eth_phy_read(active_phy_addr[i], PHY_CONF_REG, &tmp);
-               tmp |= PHY_CONF_TXCLKEN;
-               davinci_eth_phy_write(active_phy_addr[i], PHY_CONF_REG, tmp);
-               davinci_eth_phy_read(active_phy_addr[i], PHY_CONF_REG, &tmp);
-#endif
-       }
-
-#if defined(CONFIG_TI816X) || (defined(CONFIG_DRIVER_TI_EMAC_USE_RMII) && \
-               defined(CONFIG_MACH_DAVINCI_DA850_EVM) && \
-                       !defined(CONFIG_DRIVER_TI_EMAC_RMII_NO_NEGOTIATE))
-       for (i = 0; i < num_phy; i++) {
-               if (phy[i].is_phy_connected(i))
-                       phy[i].auto_negotiate(i);
-       }
-#endif
-       return(1);
-}
diff --git a/drivers/net/davinci_emac.h b/drivers/net/davinci_emac.h
deleted file mode 100644 (file)
index 695855b..0000000
+++ /dev/null
@@ -1,304 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * Copyright (C) 2011 Ilya Yanok, Emcraft Systems
- *
- * Based on: mach-davinci/emac_defs.h
- * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
- */
-
-#ifndef _DAVINCI_EMAC_H_
-#define _DAVINCI_EMAC_H_
-/* Ethernet Min/Max packet size */
-#define EMAC_MIN_ETHERNET_PKT_SIZE     60
-#define EMAC_MAX_ETHERNET_PKT_SIZE     1518
-/* Buffer size (should be aligned on 32 byte and cache line) */
-#define EMAC_RXBUF_SIZE        ALIGN(ALIGN(EMAC_MAX_ETHERNET_PKT_SIZE, 32),\
-                               ARCH_DMA_MINALIGN)
-
-/* Number of RX packet buffers
- * NOTE: Only 1 buffer supported as of now
- */
-#define EMAC_MAX_RX_BUFFERS            10
-
-
-/***********************************************
- ******** Internally used macros ***************
- ***********************************************/
-
-#define EMAC_CH_TX                     1
-#define EMAC_CH_RX                     0
-
-/* Each descriptor occupies 4 words, lets start RX desc's at 0 and
- * reserve space for 64 descriptors max
- */
-#define EMAC_RX_DESC_BASE              0x0
-#define EMAC_TX_DESC_BASE              0x1000
-
-/* EMAC Teardown value */
-#define EMAC_TEARDOWN_VALUE            0xfffffffc
-
-/* MII Status Register */
-#define MII_STATUS_REG                 1
-/* PHY Configuration register */
-#define PHY_CONF_TXCLKEN               (1 << 5)
-
-/* Number of statistics registers */
-#define EMAC_NUM_STATS                 36
-
-
-/* EMAC Descriptor */
-typedef volatile struct _emac_desc
-{
-       u_int32_t       next;           /* Pointer to next descriptor
-                                          in chain */
-       u_int8_t        *buffer;        /* Pointer to data buffer */
-       u_int32_t       buff_off_len;   /* Buffer Offset(MSW) and Length(LSW) */
-       u_int32_t       pkt_flag_len;   /* Packet Flags(MSW) and Length(LSW) */
-} emac_desc;
-
-/* CPPI bit positions */
-#define EMAC_CPPI_SOP_BIT              (0x80000000)
-#define EMAC_CPPI_EOP_BIT              (0x40000000)
-#define EMAC_CPPI_OWNERSHIP_BIT                (0x20000000)
-#define EMAC_CPPI_EOQ_BIT              (0x10000000)
-#define EMAC_CPPI_TEARDOWN_COMPLETE_BIT        (0x08000000)
-#define EMAC_CPPI_PASS_CRC_BIT         (0x04000000)
-
-#define EMAC_CPPI_RX_ERROR_FRAME       (0x03fc0000)
-
-#define EMAC_MACCONTROL_MIIEN_ENABLE           (0x20)
-#define EMAC_MACCONTROL_FULLDUPLEX_ENABLE      (0x1)
-#define EMAC_MACCONTROL_GIGABIT_ENABLE         (1 << 7)
-#define EMAC_MACCONTROL_GIGFORCE               (1 << 17)
-#define EMAC_MACCONTROL_RMIISPEED_100          (1 << 15)
-
-#define EMAC_MAC_ADDR_MATCH            (1 << 19)
-#define EMAC_MAC_ADDR_IS_VALID         (1 << 20)
-
-#define EMAC_RXMBPENABLE_RXCAFEN_ENABLE        (0x200000)
-#define EMAC_RXMBPENABLE_RXBROADEN     (0x2000)
-
-
-#define MDIO_CONTROL_IDLE              (0x80000000)
-#define MDIO_CONTROL_ENABLE            (0x40000000)
-#define MDIO_CONTROL_FAULT_ENABLE      (0x40000)
-#define MDIO_CONTROL_FAULT             (0x80000)
-#define MDIO_USERACCESS0_GO            (0x80000000)
-#define MDIO_USERACCESS0_WRITE_READ    (0x0)
-#define MDIO_USERACCESS0_WRITE_WRITE   (0x40000000)
-#define MDIO_USERACCESS0_ACK           (0x20000000)
-
-/* Ethernet MAC Registers Structure */
-typedef struct  {
-       dv_reg          TXIDVER;
-       dv_reg          TXCONTROL;
-       dv_reg          TXTEARDOWN;
-       u_int8_t        RSVD0[4];
-       dv_reg          RXIDVER;
-       dv_reg          RXCONTROL;
-       dv_reg          RXTEARDOWN;
-       u_int8_t        RSVD1[100];
-       dv_reg          TXINTSTATRAW;
-       dv_reg          TXINTSTATMASKED;
-       dv_reg          TXINTMASKSET;
-       dv_reg          TXINTMASKCLEAR;
-       dv_reg          MACINVECTOR;
-       u_int8_t        RSVD2[12];
-       dv_reg          RXINTSTATRAW;
-       dv_reg          RXINTSTATMASKED;
-       dv_reg          RXINTMASKSET;
-       dv_reg          RXINTMASKCLEAR;
-       dv_reg          MACINTSTATRAW;
-       dv_reg          MACINTSTATMASKED;
-       dv_reg          MACINTMASKSET;
-       dv_reg          MACINTMASKCLEAR;
-       u_int8_t        RSVD3[64];
-       dv_reg          RXMBPENABLE;
-       dv_reg          RXUNICASTSET;
-       dv_reg          RXUNICASTCLEAR;
-       dv_reg          RXMAXLEN;
-       dv_reg          RXBUFFEROFFSET;
-       dv_reg          RXFILTERLOWTHRESH;
-       u_int8_t        RSVD4[8];
-       dv_reg          RX0FLOWTHRESH;
-       dv_reg          RX1FLOWTHRESH;
-       dv_reg          RX2FLOWTHRESH;
-       dv_reg          RX3FLOWTHRESH;
-       dv_reg          RX4FLOWTHRESH;
-       dv_reg          RX5FLOWTHRESH;
-       dv_reg          RX6FLOWTHRESH;
-       dv_reg          RX7FLOWTHRESH;
-       dv_reg          RX0FREEBUFFER;
-       dv_reg          RX1FREEBUFFER;
-       dv_reg          RX2FREEBUFFER;
-       dv_reg          RX3FREEBUFFER;
-       dv_reg          RX4FREEBUFFER;
-       dv_reg          RX5FREEBUFFER;
-       dv_reg          RX6FREEBUFFER;
-       dv_reg          RX7FREEBUFFER;
-       dv_reg          MACCONTROL;
-       dv_reg          MACSTATUS;
-       dv_reg          EMCONTROL;
-       dv_reg          FIFOCONTROL;
-       dv_reg          MACCONFIG;
-       dv_reg          SOFTRESET;
-       u_int8_t        RSVD5[88];
-       dv_reg          MACSRCADDRLO;
-       dv_reg          MACSRCADDRHI;
-       dv_reg          MACHASH1;
-       dv_reg          MACHASH2;
-       dv_reg          BOFFTEST;
-       dv_reg          TPACETEST;
-       dv_reg          RXPAUSE;
-       dv_reg          TXPAUSE;
-       u_int8_t        RSVD6[16];
-       dv_reg          RXGOODFRAMES;
-       dv_reg          RXBCASTFRAMES;
-       dv_reg          RXMCASTFRAMES;
-       dv_reg          RXPAUSEFRAMES;
-       dv_reg          RXCRCERRORS;
-       dv_reg          RXALIGNCODEERRORS;
-       dv_reg          RXOVERSIZED;
-       dv_reg          RXJABBER;
-       dv_reg          RXUNDERSIZED;
-       dv_reg          RXFRAGMENTS;
-       dv_reg          RXFILTERED;
-       dv_reg          RXQOSFILTERED;
-       dv_reg          RXOCTETS;
-       dv_reg          TXGOODFRAMES;
-       dv_reg          TXBCASTFRAMES;
-       dv_reg          TXMCASTFRAMES;
-       dv_reg          TXPAUSEFRAMES;
-       dv_reg          TXDEFERRED;
-       dv_reg          TXCOLLISION;
-       dv_reg          TXSINGLECOLL;
-       dv_reg          TXMULTICOLL;
-       dv_reg          TXEXCESSIVECOLL;
-       dv_reg          TXLATECOLL;
-       dv_reg          TXUNDERRUN;
-       dv_reg          TXCARRIERSENSE;
-       dv_reg          TXOCTETS;
-       dv_reg          FRAME64;
-       dv_reg          FRAME65T127;
-       dv_reg          FRAME128T255;
-       dv_reg          FRAME256T511;
-       dv_reg          FRAME512T1023;
-       dv_reg          FRAME1024TUP;
-       dv_reg          NETOCTETS;
-       dv_reg          RXSOFOVERRUNS;
-       dv_reg          RXMOFOVERRUNS;
-       dv_reg          RXDMAOVERRUNS;
-       u_int8_t        RSVD7[624];
-       dv_reg          MACADDRLO;
-       dv_reg          MACADDRHI;
-       dv_reg          MACINDEX;
-       u_int8_t        RSVD8[244];
-       dv_reg          TX0HDP;
-       dv_reg          TX1HDP;
-       dv_reg          TX2HDP;
-       dv_reg          TX3HDP;
-       dv_reg          TX4HDP;
-       dv_reg          TX5HDP;
-       dv_reg          TX6HDP;
-       dv_reg          TX7HDP;
-       dv_reg          RX0HDP;
-       dv_reg          RX1HDP;
-       dv_reg          RX2HDP;
-       dv_reg          RX3HDP;
-       dv_reg          RX4HDP;
-       dv_reg          RX5HDP;
-       dv_reg          RX6HDP;
-       dv_reg          RX7HDP;
-       dv_reg          TX0CP;
-       dv_reg          TX1CP;
-       dv_reg          TX2CP;
-       dv_reg          TX3CP;
-       dv_reg          TX4CP;
-       dv_reg          TX5CP;
-       dv_reg          TX6CP;
-       dv_reg          TX7CP;
-       dv_reg          RX0CP;
-       dv_reg          RX1CP;
-       dv_reg          RX2CP;
-       dv_reg          RX3CP;
-       dv_reg          RX4CP;
-       dv_reg          RX5CP;
-       dv_reg          RX6CP;
-       dv_reg          RX7CP;
-} emac_regs;
-
-/* EMAC Wrapper Registers Structure */
-typedef struct  {
-#ifdef DAVINCI_EMAC_VERSION2
-       dv_reg          idver;
-       dv_reg          softrst;
-       dv_reg          emctrl;
-       dv_reg          c0rxthreshen;
-       dv_reg          c0rxen;
-       dv_reg          c0txen;
-       dv_reg          c0miscen;
-       dv_reg          c1rxthreshen;
-       dv_reg          c1rxen;
-       dv_reg          c1txen;
-       dv_reg          c1miscen;
-       dv_reg          c2rxthreshen;
-       dv_reg          c2rxen;
-       dv_reg          c2txen;
-       dv_reg          c2miscen;
-       dv_reg          c0rxthreshstat;
-       dv_reg          c0rxstat;
-       dv_reg          c0txstat;
-       dv_reg          c0miscstat;
-       dv_reg          c1rxthreshstat;
-       dv_reg          c1rxstat;
-       dv_reg          c1txstat;
-       dv_reg          c1miscstat;
-       dv_reg          c2rxthreshstat;
-       dv_reg          c2rxstat;
-       dv_reg          c2txstat;
-       dv_reg          c2miscstat;
-       dv_reg          c0rximax;
-       dv_reg          c0tximax;
-       dv_reg          c1rximax;
-       dv_reg          c1tximax;
-       dv_reg          c2rximax;
-       dv_reg          c2tximax;
-#else
-       u_int8_t        RSVD0[4100];
-       dv_reg          EWCTL;
-       dv_reg          EWINTTCNT;
-#endif
-} ewrap_regs;
-
-/* EMAC MDIO Registers Structure */
-typedef struct  {
-       dv_reg          VERSION;
-       dv_reg          CONTROL;
-       dv_reg          ALIVE;
-       dv_reg          LINK;
-       dv_reg          LINKINTRAW;
-       dv_reg          LINKINTMASKED;
-       u_int8_t        RSVD0[8];
-       dv_reg          USERINTRAW;
-       dv_reg          USERINTMASKED;
-       dv_reg          USERINTMASKSET;
-       dv_reg          USERINTMASKCLEAR;
-       u_int8_t        RSVD1[80];
-       dv_reg          USERACCESS0;
-       dv_reg          USERPHYSEL0;
-       dv_reg          USERACCESS1;
-       dv_reg          USERPHYSEL1;
-} mdio_regs;
-
-int davinci_eth_phy_read(u_int8_t phy_addr, u_int8_t reg_num, u_int16_t *data);
-int davinci_eth_phy_write(u_int8_t phy_addr, u_int8_t reg_num, u_int16_t data);
-
-typedef struct {
-       char    name[64];
-       int     (*init)(int phy_addr);
-       int     (*is_phy_connected)(int phy_addr);
-       int     (*get_link_speed)(int phy_addr);
-       int     (*auto_negotiate)(int phy_addr);
-} phy_t;
-
-#endif /* _DAVINCI_EMAC_H_ */
index 7ec7f99bd0e87757137cd135025c5570a4bf6b30..af4f5c561075b96edea613503e624cfdd4ee678d 100644 (file)
@@ -41,9 +41,6 @@ phy_interface_t fman_port_enet_if(enum fm_port port)
                if ((rcwsr13 & FSL_CORENET_RCWSR13_EC2) ==
                                FSL_CORENET_RCWSR13_EC2_FM1_DTSEC5_RGMII)
                        return PHY_INTERFACE_MODE_RGMII;
-               else if ((rcwsr13 & FSL_CORENET_RCWSR13_EC2) ==
-                               FSL_CORENET_RCWSR13_EC2_FM1_DTSEC5_MII)
-                       return PHY_INTERFACE_MODE_MII;
        }
 
        switch (port) {
index c996f5f4a16762001ac26ff92ff5e547d6e5f06f..92c38a81bd352b9311f7087bc67545c14b0f8a93 100644 (file)
  *
  * (C) Copyright 2010 Andes Technology
  * Macpaul Lin <macpaul@andestech.com>
+ *
+ * Copyright (C) 2018, IBM Corporation.
  */
 
-#include <config.h>
-#include <common.h>
-#include <malloc.h>
+#include <clk.h>
+#include <dm.h>
+#include <miiphy.h>
 #include <net.h>
-#include <asm/io.h>
-#include <asm/dma-mapping.h>
-#include <linux/mii.h>
+#include <wait_bit.h>
+#include <linux/io.h>
+#include <linux/iopoll.h>
 
 #include "ftgmac100.h"
 
-#define ETH_ZLEN       60
-#define CFG_XBUF_SIZE  1536
+/* Min frame ethernet frame size without FCS */
+#define ETH_ZLEN                       60
 
-/* RBSR - hw default init value is also 0x640 */
-#define RBSR_DEFAULT_VALUE     0x640
+/* Receive Buffer Size Register - HW default is 0x640 */
+#define FTGMAC100_RBSR_DEFAULT         0x640
 
 /* PKTBUFSTX/PKTBUFSRX must both be power of 2 */
 #define PKTBUFSTX      4       /* must be power of 2 */
 
+/* Timeout for transmit */
+#define FTGMAC100_TX_TIMEOUT_MS                1000
+
+/* Timeout for a mdio read/write operation */
+#define FTGMAC100_MDIO_TIMEOUT_USEC    10000
+
+/*
+ * MDC clock cycle threshold
+ *
+ * 20us * 100 = 2ms > (1 / 2.5Mhz) * 0x34
+ */
+#define MDC_CYCTHR                     0x34
+
+/*
+ * ftgmac100 model variants
+ */
+enum ftgmac100_model {
+       FTGMAC100_MODEL_FARADAY,
+       FTGMAC100_MODEL_ASPEED,
+};
+
+/**
+ * struct ftgmac100_data - private data for the FTGMAC100 driver
+ *
+ * @iobase: The base address of the hardware registers
+ * @txdes: The array of transmit descriptors
+ * @rxdes: The array of receive descriptors
+ * @tx_index: Transmit descriptor index in @txdes
+ * @rx_index: Receive descriptor index in @rxdes
+ * @phy_addr: The PHY interface address to use
+ * @phydev: The PHY device backing the MAC
+ * @bus: The mdio bus
+ * @phy_mode: The mode of the PHY interface (rgmii, rmii, ...)
+ * @max_speed: Maximum speed of Ethernet connection supported by MAC
+ * @clks: The bulk of clocks assigned to the device in the DT
+ * @rxdes0_edorr_mask: The bit number identifying the end of the RX ring buffer
+ * @txdes0_edotr_mask: The bit number identifying the end of the TX ring buffer
+ */
 struct ftgmac100_data {
-       ulong txdes_dma;
-       struct ftgmac100_txdes *txdes;
-       ulong rxdes_dma;
-       struct ftgmac100_rxdes *rxdes;
+       struct ftgmac100 *iobase;
+
+       struct ftgmac100_txdes txdes[PKTBUFSTX];
+       struct ftgmac100_rxdes rxdes[PKTBUFSRX];
        int tx_index;
        int rx_index;
-       int phy_addr;
+
+       u32 phy_addr;
+       struct phy_device *phydev;
+       struct mii_dev *bus;
+       u32 phy_mode;
+       u32 max_speed;
+
+       struct clk_bulk clks;
+
+       /* End of RX/TX ring buffer bits. Depend on model */
+       u32 rxdes0_edorr_mask;
+       u32 txdes0_edotr_mask;
 };
 
 /*
  * struct mii_bus functions
  */
-static int ftgmac100_mdiobus_read(struct eth_device *dev, int phy_addr,
-       int regnum)
+static int ftgmac100_mdio_read(struct mii_dev *bus, int phy_addr, int dev_addr,
+                              int reg_addr)
 {
-       struct ftgmac100 *ftgmac100 = (struct ftgmac100 *)dev->iobase;
+       struct ftgmac100_data *priv = bus->priv;
+       struct ftgmac100 *ftgmac100 = priv->iobase;
        int phycr;
-       int i;
-
-       phycr = readl(&ftgmac100->phycr);
-
-       /* preserve MDC cycle threshold */
-       phycr &= FTGMAC100_PHYCR_MDC_CYCTHR_MASK;
-
-       phycr |= FTGMAC100_PHYCR_PHYAD(phy_addr)
-             |  FTGMAC100_PHYCR_REGAD(regnum)
-             |  FTGMAC100_PHYCR_MIIRD;
+       int data;
+       int ret;
 
+       phycr = FTGMAC100_PHYCR_MDC_CYCTHR(MDC_CYCTHR) |
+               FTGMAC100_PHYCR_PHYAD(phy_addr) |
+               FTGMAC100_PHYCR_REGAD(reg_addr) |
+               FTGMAC100_PHYCR_MIIRD;
        writel(phycr, &ftgmac100->phycr);
 
-       for (i = 0; i < 10; i++) {
-               phycr = readl(&ftgmac100->phycr);
-
-               if ((phycr & FTGMAC100_PHYCR_MIIRD) == 0) {
-                       int data;
-
-                       data = readl(&ftgmac100->phydata);
-                       return FTGMAC100_PHYDATA_MIIRDATA(data);
-               }
-
-               mdelay(10);
+       ret = readl_poll_timeout(&ftgmac100->phycr, phycr,
+                                !(phycr & FTGMAC100_PHYCR_MIIRD),
+                                FTGMAC100_MDIO_TIMEOUT_USEC);
+       if (ret) {
+               pr_err("%s: mdio read failed (phy:%d reg:%x)\n",
+                      priv->phydev->dev->name, phy_addr, reg_addr);
+               return ret;
        }
 
-       debug("mdio read timed out\n");
-       return -1;
+       data = readl(&ftgmac100->phydata);
+
+       return FTGMAC100_PHYDATA_MIIRDATA(data);
 }
 
-static int ftgmac100_mdiobus_write(struct eth_device *dev, int phy_addr,
-       int regnum, u16 value)
+static int ftgmac100_mdio_write(struct mii_dev *bus, int phy_addr, int dev_addr,
+                               int reg_addr, u16 value)
 {
-       struct ftgmac100 *ftgmac100 = (struct ftgmac100 *)dev->iobase;
+       struct ftgmac100_data *priv = bus->priv;
+       struct ftgmac100 *ftgmac100 = priv->iobase;
        int phycr;
        int data;
-       int i;
-
-       phycr = readl(&ftgmac100->phycr);
-
-       /* preserve MDC cycle threshold */
-       phycr &= FTGMAC100_PHYCR_MDC_CYCTHR_MASK;
-
-       phycr |= FTGMAC100_PHYCR_PHYAD(phy_addr)
-             |  FTGMAC100_PHYCR_REGAD(regnum)
-             |  FTGMAC100_PHYCR_MIIWR;
+       int ret;
 
+       phycr = FTGMAC100_PHYCR_MDC_CYCTHR(MDC_CYCTHR) |
+               FTGMAC100_PHYCR_PHYAD(phy_addr) |
+               FTGMAC100_PHYCR_REGAD(reg_addr) |
+               FTGMAC100_PHYCR_MIIWR;
        data = FTGMAC100_PHYDATA_MIIWDATA(value);
 
        writel(data, &ftgmac100->phydata);
        writel(phycr, &ftgmac100->phycr);
 
-       for (i = 0; i < 10; i++) {
-               phycr = readl(&ftgmac100->phycr);
-
-               if ((phycr & FTGMAC100_PHYCR_MIIWR) == 0) {
-                       debug("(phycr & FTGMAC100_PHYCR_MIIWR) == 0: " \
-                               "phy_addr: %x\n", phy_addr);
-                       return 0;
-               }
-
-               mdelay(1);
+       ret = readl_poll_timeout(&ftgmac100->phycr, phycr,
+                                !(phycr & FTGMAC100_PHYCR_MIIWR),
+                                FTGMAC100_MDIO_TIMEOUT_USEC);
+       if (ret) {
+               pr_err("%s: mdio write failed (phy:%d reg:%x)\n",
+                      priv->phydev->dev->name, phy_addr, reg_addr);
        }
 
-       debug("mdio write timed out\n");
-       return -1;
-}
-
-int ftgmac100_phy_read(struct eth_device *dev, int addr, int reg, u16 *value)
-{
-       *value = ftgmac100_mdiobus_read(dev , addr, reg);
-
-       if (*value == -1)
-               return -1;
-
-       return 0;
+       return ret;
 }
 
-int  ftgmac100_phy_write(struct eth_device *dev, int addr, int reg, u16 value)
+static int ftgmac100_mdio_init(struct udevice *dev)
 {
-       if (ftgmac100_mdiobus_write(dev, addr, reg, value) == -1)
-               return -1;
-
-       return 0;
-}
-
-static int ftgmac100_phy_reset(struct eth_device *dev)
-{
-       struct ftgmac100_data *priv = dev->priv;
-       int i;
-       u16 status, adv;
-
-       adv = ADVERTISE_CSMA | ADVERTISE_ALL;
-
-       ftgmac100_phy_write(dev, priv->phy_addr, MII_ADVERTISE, adv);
-
-       printf("%s: Starting autonegotiation...\n", dev->name);
-
-       ftgmac100_phy_write(dev, priv->phy_addr,
-               MII_BMCR, (BMCR_ANENABLE | BMCR_ANRESTART));
-
-       for (i = 0; i < 100000 / 100; i++) {
-               ftgmac100_phy_read(dev, priv->phy_addr, MII_BMSR, &status);
-
-               if (status & BMSR_ANEGCOMPLETE)
-                       break;
-               mdelay(1);
+       struct ftgmac100_data *priv = dev_get_priv(dev);
+       struct mii_dev *bus;
+       int ret;
+
+       bus = mdio_alloc();
+       if (!bus)
+               return -ENOMEM;
+
+       bus->read  = ftgmac100_mdio_read;
+       bus->write = ftgmac100_mdio_write;
+       bus->priv  = priv;
+
+       ret = mdio_register_seq(bus, dev->seq);
+       if (ret) {
+               free(bus);
+               return ret;
        }
 
-       if (status & BMSR_ANEGCOMPLETE) {
-               printf("%s: Autonegotiation complete\n", dev->name);
-       } else {
-               printf("%s: Autonegotiation timed out (status=0x%04x)\n",
-                      dev->name, status);
-               return 0;
-       }
+       priv->bus = bus;
 
-       return 1;
+       return 0;
 }
 
-static int ftgmac100_phy_init(struct eth_device *dev)
+static int ftgmac100_phy_adjust_link(struct ftgmac100_data *priv)
 {
-       struct ftgmac100_data *priv = dev->priv;
-
-       int phy_addr;
-       u16 phy_id, status, adv, lpa, stat_ge;
-       int media, speed, duplex;
-       int i;
+       struct ftgmac100 *ftgmac100 = priv->iobase;
+       struct phy_device *phydev = priv->phydev;
+       u32 maccr;
 
-       /* Check if the PHY is up to snuff... */
-       for (phy_addr = 0; phy_addr < CONFIG_PHY_MAX_ADDR; phy_addr++) {
-
-               ftgmac100_phy_read(dev, phy_addr, MII_PHYSID1, &phy_id);
-
-               /*
-                * When it is unable to found PHY,
-                * the interface usually return 0xffff or 0x0000
-                */
-               if (phy_id != 0xffff && phy_id != 0x0) {
-                       printf("%s: found PHY at 0x%02x\n",
-                               dev->name, phy_addr);
-                       priv->phy_addr = phy_addr;
-                       break;
-               }
+       if (!phydev->link) {
+               dev_err(phydev->dev, "No link\n");
+               return -EREMOTEIO;
        }
 
-       if (phy_id == 0xffff || phy_id == 0x0) {
-               printf("%s: no PHY present\n", dev->name);
-               return 0;
-       }
-
-       ftgmac100_phy_read(dev, priv->phy_addr, MII_BMSR, &status);
-
-       if (!(status & BMSR_LSTATUS)) {
-               /* Try to re-negotiate if we don't have link already. */
-               ftgmac100_phy_reset(dev);
-
-               for (i = 0; i < 100000 / 100; i++) {
-                       ftgmac100_phy_read(dev, priv->phy_addr,
-                               MII_BMSR, &status);
-                       if (status & BMSR_LSTATUS)
-                               break;
-                       udelay(100);
-               }
-       }
-
-       if (!(status & BMSR_LSTATUS)) {
-               printf("%s: link down\n", dev->name);
-               return 0;
-       }
-
-#ifdef CONFIG_FTGMAC100_EGIGA
-       /* 1000 Base-T Status Register */
-       ftgmac100_phy_read(dev, priv->phy_addr,
-               MII_STAT1000, &stat_ge);
-
-       speed = (stat_ge & (LPA_1000FULL | LPA_1000HALF)
-                ? 1 : 0);
-
-       duplex = ((stat_ge & LPA_1000FULL)
-                ? 1 : 0);
-
-       if (speed) { /* Speed is 1000 */
-               printf("%s: link up, 1000bps %s-duplex\n",
-                       dev->name, duplex ? "full" : "half");
-               return 0;
-       }
-#endif
-
-       ftgmac100_phy_read(dev, priv->phy_addr, MII_ADVERTISE, &adv);
-       ftgmac100_phy_read(dev, priv->phy_addr, MII_LPA, &lpa);
-
-       media = mii_nway_result(lpa & adv);
-       speed = (media & (ADVERTISE_100FULL | ADVERTISE_100HALF) ? 1 : 0);
-       duplex = (media & ADVERTISE_FULL) ? 1 : 0;
-
-       printf("%s: link up, %sMbps %s-duplex\n",
-              dev->name, speed ? "100" : "10", duplex ? "full" : "half");
-
-       return 1;
-}
-
-static int ftgmac100_update_link_speed(struct eth_device *dev)
-{
-       struct ftgmac100 *ftgmac100 = (struct ftgmac100 *)dev->iobase;
-       struct ftgmac100_data *priv = dev->priv;
-
-       unsigned short stat_fe;
-       unsigned short stat_ge;
-       unsigned int maccr;
-
-#ifdef CONFIG_FTGMAC100_EGIGA
-       /* 1000 Base-T Status Register */
-       ftgmac100_phy_read(dev, priv->phy_addr, MII_STAT1000, &stat_ge);
-#endif
-
-       ftgmac100_phy_read(dev, priv->phy_addr, MII_BMSR, &stat_fe);
-
-       if (!(stat_fe & BMSR_LSTATUS))  /* link status up? */
-               return 0;
-
        /* read MAC control register and clear related bits */
        maccr = readl(&ftgmac100->maccr) &
                ~(FTGMAC100_MACCR_GIGA_MODE |
                  FTGMAC100_MACCR_FAST_MODE |
                  FTGMAC100_MACCR_FULLDUP);
 
-#ifdef CONFIG_FTGMAC100_EGIGA
-       if (stat_ge & LPA_1000FULL) {
-               /* set gmac for 1000BaseTX and Full Duplex */
-               maccr |= FTGMAC100_MACCR_GIGA_MODE | FTGMAC100_MACCR_FULLDUP;
-       }
-
-       if (stat_ge & LPA_1000HALF) {
-               /* set gmac for 1000BaseTX and Half Duplex */
+       if (phy_interface_is_rgmii(phydev) && phydev->speed == 1000)
                maccr |= FTGMAC100_MACCR_GIGA_MODE;
-       }
-#endif
-
-       if (stat_fe & BMSR_100FULL) {
-               /* set MII for 100BaseTX and Full Duplex */
-               maccr |= FTGMAC100_MACCR_FAST_MODE | FTGMAC100_MACCR_FULLDUP;
-       }
 
-       if (stat_fe & BMSR_10FULL) {
-               /* set MII for 10BaseT and Full Duplex */
-               maccr |= FTGMAC100_MACCR_FULLDUP;
-       }
-
-       if (stat_fe & BMSR_100HALF) {
-               /* set MII for 100BaseTX and Half Duplex */
+       if (phydev->speed == 100)
                maccr |= FTGMAC100_MACCR_FAST_MODE;
-       }
 
-       if (stat_fe & BMSR_10HALF) {
-               /* set MII for 10BaseT and Half Duplex */
-               /* we have already clear these bits, do nothing */
-               ;
-       }
+       if (phydev->duplex)
+               maccr |= FTGMAC100_MACCR_FULLDUP;
 
        /* update MII config into maccr */
        writel(maccr, &ftgmac100->maccr);
 
-       return 1;
+       return 0;
+}
+
+static int ftgmac100_phy_init(struct udevice *dev)
+{
+       struct ftgmac100_data *priv = dev_get_priv(dev);
+       struct phy_device *phydev;
+       int ret;
+
+       phydev = phy_connect(priv->bus, priv->phy_addr, dev, priv->phy_mode);
+       if (!phydev)
+               return -ENODEV;
+
+       phydev->supported &= PHY_GBIT_FEATURES;
+       if (priv->max_speed) {
+               ret = phy_set_supported(phydev, priv->max_speed);
+               if (ret)
+                       return ret;
+       }
+       phydev->advertising = phydev->supported;
+       priv->phydev = phydev;
+       phy_config(phydev);
+
+       return 0;
 }
 
 /*
  * Reset MAC
  */
-static void ftgmac100_reset(struct eth_device *dev)
+static void ftgmac100_reset(struct ftgmac100_data *priv)
 {
-       struct ftgmac100 *ftgmac100 = (struct ftgmac100 *)dev->iobase;
+       struct ftgmac100 *ftgmac100 = priv->iobase;
 
        debug("%s()\n", __func__);
 
-       writel(FTGMAC100_MACCR_SW_RST, &ftgmac100->maccr);
+       setbits_le32(&ftgmac100->maccr, FTGMAC100_MACCR_SW_RST);
 
        while (readl(&ftgmac100->maccr) & FTGMAC100_MACCR_SW_RST)
                ;
@@ -330,10 +248,10 @@ static void ftgmac100_reset(struct eth_device *dev)
 /*
  * Set MAC address
  */
-static void ftgmac100_set_mac(struct eth_device *dev,
-       const unsigned char *mac)
+static int ftgmac100_set_mac(struct ftgmac100_data *priv,
+                            const unsigned char *mac)
 {
-       struct ftgmac100 *ftgmac100 = (struct ftgmac100 *)dev->iobase;
+       struct ftgmac100 *ftgmac100 = priv->iobase;
        unsigned int maddr = mac[0] << 8 | mac[1];
        unsigned int laddr = mac[2] << 24 | mac[3] << 16 | mac[4] << 8 | mac[5];
 
@@ -341,61 +259,42 @@ static void ftgmac100_set_mac(struct eth_device *dev,
 
        writel(maddr, &ftgmac100->mac_madr);
        writel(laddr, &ftgmac100->mac_ladr);
-}
-
-static void ftgmac100_set_mac_from_env(struct eth_device *dev)
-{
-       eth_env_get_enetaddr("ethaddr", dev->enetaddr);
 
-       ftgmac100_set_mac(dev, dev->enetaddr);
+       return 0;
 }
 
 /*
  * disable transmitter, receiver
  */
-static void ftgmac100_halt(struct eth_device *dev)
+static void ftgmac100_stop(struct udevice *dev)
 {
-       struct ftgmac100 *ftgmac100 = (struct ftgmac100 *)dev->iobase;
+       struct ftgmac100_data *priv = dev_get_priv(dev);
+       struct ftgmac100 *ftgmac100 = priv->iobase;
 
        debug("%s()\n", __func__);
 
        writel(0, &ftgmac100->maccr);
+
+       phy_shutdown(priv->phydev);
 }
 
-static int ftgmac100_init(struct eth_device *dev, bd_t *bd)
+static int ftgmac100_start(struct udevice *dev)
 {
-       struct ftgmac100 *ftgmac100 = (struct ftgmac100 *)dev->iobase;
-       struct ftgmac100_data *priv = dev->priv;
-       struct ftgmac100_txdes *txdes;
-       struct ftgmac100_rxdes *rxdes;
+       struct eth_pdata *plat = dev_get_platdata(dev);
+       struct ftgmac100_data *priv = dev_get_priv(dev);
+       struct ftgmac100 *ftgmac100 = priv->iobase;
+       struct phy_device *phydev = priv->phydev;
        unsigned int maccr;
-       void *buf;
+       ulong start, end;
+       int ret;
        int i;
 
        debug("%s()\n", __func__);
 
-       if (!priv->txdes) {
-               txdes = dma_alloc_coherent(
-                       sizeof(*txdes) * PKTBUFSTX, &priv->txdes_dma);
-               if (!txdes)
-                       panic("ftgmac100: out of memory\n");
-               memset(txdes, 0, sizeof(*txdes) * PKTBUFSTX);
-               priv->txdes = txdes;
-       }
-       txdes = priv->txdes;
-
-       if (!priv->rxdes) {
-               rxdes = dma_alloc_coherent(
-                       sizeof(*rxdes) * PKTBUFSRX, &priv->rxdes_dma);
-               if (!rxdes)
-                       panic("ftgmac100: out of memory\n");
-               memset(rxdes, 0, sizeof(*rxdes) * PKTBUFSRX);
-               priv->rxdes = rxdes;
-       }
-       rxdes = priv->rxdes;
+       ftgmac100_reset(priv);
 
        /* set the ethernet address */
-       ftgmac100_set_mac_from_env(dev);
+       ftgmac100_set_mac(priv, plat->enetaddr);
 
        /* disable all interrupts */
        writel(0, &ftgmac100->ier);
@@ -404,42 +303,37 @@ static int ftgmac100_init(struct eth_device *dev, bd_t *bd)
        priv->tx_index = 0;
        priv->rx_index = 0;
 
-       txdes[PKTBUFSTX - 1].txdes0     = FTGMAC100_TXDES0_EDOTR;
-       rxdes[PKTBUFSRX - 1].rxdes0     = FTGMAC100_RXDES0_EDORR;
-
        for (i = 0; i < PKTBUFSTX; i++) {
-               /* TXBUF_BADR */
-               if (!txdes[i].txdes2) {
-                       buf = memalign(ARCH_DMA_MINALIGN, CFG_XBUF_SIZE);
-                       if (!buf)
-                               panic("ftgmac100: out of memory\n");
-                       txdes[i].txdes3 = virt_to_phys(buf);
-                       txdes[i].txdes2 = (uint)buf;
-               }
-               txdes[i].txdes1 = 0;
+               priv->txdes[i].txdes3 = 0;
+               priv->txdes[i].txdes0 = 0;
        }
+       priv->txdes[PKTBUFSTX - 1].txdes0 = priv->txdes0_edotr_mask;
+
+       start = (ulong)&priv->txdes[0];
+       end = start + roundup(sizeof(priv->txdes), ARCH_DMA_MINALIGN);
+       flush_dcache_range(start, end);
 
        for (i = 0; i < PKTBUFSRX; i++) {
-               /* RXBUF_BADR */
-               if (!rxdes[i].rxdes2) {
-                       buf = net_rx_packets[i];
-                       rxdes[i].rxdes3 = virt_to_phys(buf);
-                       rxdes[i].rxdes2 = (uint)buf;
-               }
-               rxdes[i].rxdes0 &= ~FTGMAC100_RXDES0_RXPKT_RDY;
+               priv->rxdes[i].rxdes3 = (unsigned int)net_rx_packets[i];
+               priv->rxdes[i].rxdes0 = 0;
        }
+       priv->rxdes[PKTBUFSRX - 1].rxdes0 = priv->rxdes0_edorr_mask;
+
+       start = (ulong)&priv->rxdes[0];
+       end = start + roundup(sizeof(priv->rxdes), ARCH_DMA_MINALIGN);
+       flush_dcache_range(start, end);
 
        /* transmit ring */
-       writel(priv->txdes_dma, &ftgmac100->txr_badr);
+       writel((u32)priv->txdes, &ftgmac100->txr_badr);
 
        /* receive ring */
-       writel(priv->rxdes_dma, &ftgmac100->rxr_badr);
+       writel((u32)priv->rxdes, &ftgmac100->rxr_badr);
 
        /* poll receive descriptor automatically */
        writel(FTGMAC100_APTC_RXPOLL_CNT(1), &ftgmac100->aptc);
 
        /* config receive buffer size register */
-       writel(FTGMAC100_RBSR_SIZE(RBSR_DEFAULT_VALUE), &ftgmac100->rbsr);
+       writel(FTGMAC100_RBSR_SIZE(FTGMAC100_RBSR_DEFAULT), &ftgmac100->rbsr);
 
        /* enable transmitter, receiver */
        maccr = FTGMAC100_MACCR_TXMAC_EN |
@@ -453,34 +347,67 @@ static int ftgmac100_init(struct eth_device *dev, bd_t *bd)
 
        writel(maccr, &ftgmac100->maccr);
 
-       if (!ftgmac100_phy_init(dev)) {
-               if (!ftgmac100_update_link_speed(dev))
-                       return -1;
+       ret = phy_startup(phydev);
+       if (ret) {
+               dev_err(phydev->dev, "Could not start PHY\n");
+               return ret;
        }
 
+       ret = ftgmac100_phy_adjust_link(priv);
+       if (ret) {
+               dev_err(phydev->dev,  "Could not adjust link\n");
+               return ret;
+       }
+
+       printf("%s: link up, %d Mbps %s-duplex mac:%pM\n", phydev->dev->name,
+              phydev->speed, phydev->duplex ? "full" : "half", plat->enetaddr);
+
+       return 0;
+}
+
+static int ftgmac100_free_pkt(struct udevice *dev, uchar *packet, int length)
+{
+       struct ftgmac100_data *priv = dev_get_priv(dev);
+       struct ftgmac100_rxdes *curr_des = &priv->rxdes[priv->rx_index];
+       ulong des_start = (ulong)curr_des;
+       ulong des_end = des_start +
+               roundup(sizeof(*curr_des), ARCH_DMA_MINALIGN);
+
+       /* Release buffer to DMA and flush descriptor */
+       curr_des->rxdes0 &= ~FTGMAC100_RXDES0_RXPKT_RDY;
+       flush_dcache_range(des_start, des_end);
+
+       /* Move to next descriptor */
+       priv->rx_index = (priv->rx_index + 1) % PKTBUFSRX;
+
        return 0;
 }
 
 /*
  * Get a data block via Ethernet
  */
-static int ftgmac100_recv(struct eth_device *dev)
+static int ftgmac100_recv(struct udevice *dev, int flags, uchar **packetp)
 {
-       struct ftgmac100_data *priv = dev->priv;
-       struct ftgmac100_rxdes *curr_des;
+       struct ftgmac100_data *priv = dev_get_priv(dev);
+       struct ftgmac100_rxdes *curr_des = &priv->rxdes[priv->rx_index];
        unsigned short rxlen;
+       ulong des_start = (ulong)curr_des;
+       ulong des_end = des_start +
+               roundup(sizeof(*curr_des), ARCH_DMA_MINALIGN);
+       ulong data_start = curr_des->rxdes3;
+       ulong data_end;
 
-       curr_des = &priv->rxdes[priv->rx_index];
+       invalidate_dcache_range(des_start, des_end);
 
        if (!(curr_des->rxdes0 & FTGMAC100_RXDES0_RXPKT_RDY))
-               return -1;
+               return -EAGAIN;
 
        if (curr_des->rxdes0 & (FTGMAC100_RXDES0_RX_ERR |
                                FTGMAC100_RXDES0_CRC_ERR |
                                FTGMAC100_RXDES0_FTL |
                                FTGMAC100_RXDES0_RUNT |
                                FTGMAC100_RXDES0_RX_ODD_NB)) {
-               return -1;
+               return -EAGAIN;
        }
 
        rxlen = FTGMAC100_RXDES0_VDBC(curr_des->rxdes0);
@@ -488,95 +415,194 @@ static int ftgmac100_recv(struct eth_device *dev)
        debug("%s(): RX buffer %d, %x received\n",
               __func__, priv->rx_index, rxlen);
 
-       /* invalidate d-cache */
-       dma_map_single((void *)curr_des->rxdes2, rxlen, DMA_FROM_DEVICE);
+       /* Invalidate received data */
+       data_end = data_start + roundup(rxlen, ARCH_DMA_MINALIGN);
+       invalidate_dcache_range(data_start, data_end);
+       *packetp = (uchar *)data_start;
 
-       /* pass the packet up to the protocol layers. */
-       net_process_received_packet((void *)curr_des->rxdes2, rxlen);
+       return rxlen;
+}
 
-       /* release buffer to DMA */
-       curr_des->rxdes0 &= ~FTGMAC100_RXDES0_RXPKT_RDY;
+static u32 ftgmac100_read_txdesc(const void *desc)
+{
+       const struct ftgmac100_txdes *txdes = desc;
+       ulong des_start = (ulong)txdes;
+       ulong des_end = des_start + roundup(sizeof(*txdes), ARCH_DMA_MINALIGN);
 
-       priv->rx_index = (priv->rx_index + 1) % PKTBUFSRX;
+       invalidate_dcache_range(des_start, des_end);
 
-       return 0;
+       return txdes->txdes0;
 }
 
+BUILD_WAIT_FOR_BIT(ftgmac100_txdone, u32, ftgmac100_read_txdesc)
+
 /*
  * Send a data block via Ethernet
  */
-static int ftgmac100_send(struct eth_device *dev, void *packet, int length)
+static int ftgmac100_send(struct udevice *dev, void *packet, int length)
 {
-       struct ftgmac100 *ftgmac100 = (struct ftgmac100 *)dev->iobase;
-       struct ftgmac100_data *priv = dev->priv;
+       struct ftgmac100_data *priv = dev_get_priv(dev);
+       struct ftgmac100 *ftgmac100 = priv->iobase;
        struct ftgmac100_txdes *curr_des = &priv->txdes[priv->tx_index];
+       ulong des_start = (ulong)curr_des;
+       ulong des_end = des_start +
+               roundup(sizeof(*curr_des), ARCH_DMA_MINALIGN);
+       ulong data_start;
+       ulong data_end;
+       int rc;
+
+       invalidate_dcache_range(des_start, des_end);
 
        if (curr_des->txdes0 & FTGMAC100_TXDES0_TXDMA_OWN) {
-               debug("%s(): no TX descriptor available\n", __func__);
-               return -1;
+               dev_err(dev, "no TX descriptor available\n");
+               return -EPERM;
        }
 
        debug("%s(%x, %x)\n", __func__, (int)packet, length);
 
        length = (length < ETH_ZLEN) ? ETH_ZLEN : length;
 
-       memcpy((void *)curr_des->txdes2, (void *)packet, length);
-       dma_map_single((void *)curr_des->txdes2, length, DMA_TO_DEVICE);
+       curr_des->txdes3 = (unsigned int)packet;
 
-       /* only one descriptor on TXBUF */
-       curr_des->txdes0 &= FTGMAC100_TXDES0_EDOTR;
+       /* Flush data to be sent */
+       data_start = curr_des->txdes3;
+       data_end = data_start + roundup(length, ARCH_DMA_MINALIGN);
+       flush_dcache_range(data_start, data_end);
+
+       /* Only one segment on TXBUF */
+       curr_des->txdes0 &= priv->txdes0_edotr_mask;
        curr_des->txdes0 |= FTGMAC100_TXDES0_FTS |
                            FTGMAC100_TXDES0_LTS |
                            FTGMAC100_TXDES0_TXBUF_SIZE(length) |
                            FTGMAC100_TXDES0_TXDMA_OWN ;
 
-       /* start transmit */
+       /* Flush modified buffer descriptor */
+       flush_dcache_range(des_start, des_end);
+
+       /* Start transmit */
        writel(1, &ftgmac100->txpd);
 
+       rc = wait_for_bit_ftgmac100_txdone(curr_des,
+                                          FTGMAC100_TXDES0_TXDMA_OWN, false,
+                                          FTGMAC100_TX_TIMEOUT_MS, true);
+       if (rc)
+               return rc;
+
        debug("%s(): packet sent\n", __func__);
 
+       /* Move to next descriptor */
        priv->tx_index = (priv->tx_index + 1) % PKTBUFSTX;
 
        return 0;
 }
 
-int ftgmac100_initialize(bd_t *bd)
+static int ftgmac100_write_hwaddr(struct udevice *dev)
 {
-       struct eth_device *dev;
-       struct ftgmac100_data *priv;
+       struct eth_pdata *pdata = dev_get_platdata(dev);
+       struct ftgmac100_data *priv = dev_get_priv(dev);
 
-       dev = malloc(sizeof *dev);
-       if (!dev) {
-               printf("%s(): failed to allocate dev\n", __func__);
-               goto out;
+       return ftgmac100_set_mac(priv, pdata->enetaddr);
+}
+
+static int ftgmac100_ofdata_to_platdata(struct udevice *dev)
+{
+       struct eth_pdata *pdata = dev_get_platdata(dev);
+       struct ftgmac100_data *priv = dev_get_priv(dev);
+       const char *phy_mode;
+
+       pdata->iobase = devfdt_get_addr(dev);
+       pdata->phy_interface = -1;
+       phy_mode = dev_read_string(dev, "phy-mode");
+       if (phy_mode)
+               pdata->phy_interface = phy_get_interface_by_name(phy_mode);
+       if (pdata->phy_interface == -1) {
+               dev_err(dev, "Invalid PHY interface '%s'\n", phy_mode);
+               return -EINVAL;
        }
 
-       /* Transmit and receive descriptors should align to 16 bytes */
-       priv = memalign(16, sizeof(struct ftgmac100_data));
-       if (!priv) {
-               printf("%s(): failed to allocate priv\n", __func__);
-               goto free_dev;
+       pdata->max_speed = dev_read_u32_default(dev, "max-speed", 0);
+
+       if (dev_get_driver_data(dev) == FTGMAC100_MODEL_ASPEED) {
+               priv->rxdes0_edorr_mask = BIT(30);
+               priv->txdes0_edotr_mask = BIT(30);
+       } else {
+               priv->rxdes0_edorr_mask = BIT(15);
+               priv->txdes0_edotr_mask = BIT(15);
        }
 
-       memset(dev, 0, sizeof(*dev));
-       memset(priv, 0, sizeof(*priv));
+       return clk_get_bulk(dev, &priv->clks);
+}
 
-       strcpy(dev->name, "FTGMAC100");
-       dev->iobase     = CONFIG_FTGMAC100_BASE;
-       dev->init       = ftgmac100_init;
-       dev->halt       = ftgmac100_halt;
-       dev->send       = ftgmac100_send;
-       dev->recv       = ftgmac100_recv;
-       dev->priv       = priv;
+static int ftgmac100_probe(struct udevice *dev)
+{
+       struct eth_pdata *pdata = dev_get_platdata(dev);
+       struct ftgmac100_data *priv = dev_get_priv(dev);
+       int ret;
+
+       priv->iobase = (struct ftgmac100 *)pdata->iobase;
+       priv->phy_mode = pdata->phy_interface;
+       priv->max_speed = pdata->max_speed;
+       priv->phy_addr = 0;
 
-       eth_register(dev);
+       ret = clk_enable_bulk(&priv->clks);
+       if (ret)
+               goto out;
 
-       ftgmac100_reset(dev);
+       ret = ftgmac100_mdio_init(dev);
+       if (ret) {
+               dev_err(dev, "Failed to initialize mdiobus: %d\n", ret);
+               goto out;
+       }
 
-       return 1;
+       ret = ftgmac100_phy_init(dev);
+       if (ret) {
+               dev_err(dev, "Failed to initialize PHY: %d\n", ret);
+               goto out;
+       }
 
-free_dev:
-       free(dev);
 out:
+       if (ret)
+               clk_release_bulk(&priv->clks);
+
+       return ret;
+}
+
+static int ftgmac100_remove(struct udevice *dev)
+{
+       struct ftgmac100_data *priv = dev_get_priv(dev);
+
+       free(priv->phydev);
+       mdio_unregister(priv->bus);
+       mdio_free(priv->bus);
+       clk_release_bulk(&priv->clks);
+
        return 0;
 }
+
+static const struct eth_ops ftgmac100_ops = {
+       .start  = ftgmac100_start,
+       .send   = ftgmac100_send,
+       .recv   = ftgmac100_recv,
+       .stop   = ftgmac100_stop,
+       .free_pkt = ftgmac100_free_pkt,
+       .write_hwaddr = ftgmac100_write_hwaddr,
+};
+
+static const struct udevice_id ftgmac100_ids[] = {
+       { .compatible = "faraday,ftgmac100",  .data = FTGMAC100_MODEL_FARADAY },
+       { .compatible = "aspeed,ast2500-mac", .data = FTGMAC100_MODEL_ASPEED  },
+       { }
+};
+
+U_BOOT_DRIVER(ftgmac100) = {
+       .name   = "ftgmac100",
+       .id     = UCLASS_ETH,
+       .of_match = ftgmac100_ids,
+       .ofdata_to_platdata = ftgmac100_ofdata_to_platdata,
+       .probe  = ftgmac100_probe,
+       .remove = ftgmac100_remove,
+       .ops    = &ftgmac100_ops,
+       .priv_auto_alloc_size = sizeof(struct ftgmac100_data),
+       .platdata_auto_alloc_size = sizeof(struct eth_pdata),
+       .flags  = DM_FLAG_ALLOC_PRIV_DMA,
+};
index ffbe1f3e3fa7aaa13ab3113458373c35ecb6c74b..9a789e4d5bee34830de8c0ee765e099c47f4182f 100644 (file)
@@ -70,48 +70,48 @@ struct ftgmac100 {
 /*
  * Interrupt status register & interrupt enable register
  */
-#define FTGMAC100_INT_RPKT_BUF         (1 << 0)
-#define FTGMAC100_INT_RPKT_FIFO                (1 << 1)
-#define FTGMAC100_INT_NO_RXBUF         (1 << 2)
-#define FTGMAC100_INT_RPKT_LOST                (1 << 3)
-#define FTGMAC100_INT_XPKT_ETH         (1 << 4)
-#define FTGMAC100_INT_XPKT_FIFO                (1 << 5)
-#define FTGMAC100_INT_NO_NPTXBUF       (1 << 6)
-#define FTGMAC100_INT_XPKT_LOST                (1 << 7)
-#define FTGMAC100_INT_AHB_ERR          (1 << 8)
-#define FTGMAC100_INT_PHYSTS_CHG       (1 << 9)
-#define FTGMAC100_INT_NO_HPTXBUF       (1 << 10)
+#define FTGMAC100_INT_RPKT_BUF         BIT(0)
+#define FTGMAC100_INT_RPKT_FIFO                BIT(1)
+#define FTGMAC100_INT_NO_RXBUF         BIT(2)
+#define FTGMAC100_INT_RPKT_LOST                BIT(3)
+#define FTGMAC100_INT_XPKT_ETH         BIT(4)
+#define FTGMAC100_INT_XPKT_FIFO                BIT(5)
+#define FTGMAC100_INT_NO_NPTXBUF       BIT(6)
+#define FTGMAC100_INT_XPKT_LOST                BIT(7)
+#define FTGMAC100_INT_AHB_ERR          BIT(8)
+#define FTGMAC100_INT_PHYSTS_CHG       BIT(9)
+#define FTGMAC100_INT_NO_HPTXBUF       BIT(10)
 
 /*
  * Interrupt timer control register
  */
 #define FTGMAC100_ITC_RXINT_CNT(x)     (((x) & 0xf) << 0)
 #define FTGMAC100_ITC_RXINT_THR(x)     (((x) & 0x7) << 4)
-#define FTGMAC100_ITC_RXINT_TIME_SEL   (1 << 7)
+#define FTGMAC100_ITC_RXINT_TIME_SEL   BIT(7)
 #define FTGMAC100_ITC_TXINT_CNT(x)     (((x) & 0xf) << 8)
 #define FTGMAC100_ITC_TXINT_THR(x)     (((x) & 0x7) << 12)
-#define FTGMAC100_ITC_TXINT_TIME_SEL   (1 << 15)
+#define FTGMAC100_ITC_TXINT_TIME_SEL   BIT(15)
 
 /*
  * Automatic polling timer control register
  */
 #define FTGMAC100_APTC_RXPOLL_CNT(x)   (((x) & 0xf) << 0)
-#define FTGMAC100_APTC_RXPOLL_TIME_SEL (1 << 4)
+#define FTGMAC100_APTC_RXPOLL_TIME_SEL BIT(4)
 #define FTGMAC100_APTC_TXPOLL_CNT(x)   (((x) & 0xf) << 8)
-#define FTGMAC100_APTC_TXPOLL_TIME_SEL (1 << 12)
+#define FTGMAC100_APTC_TXPOLL_TIME_SEL BIT(12)
 
 /*
  * DMA burst length and arbitration control register
  */
 #define FTGMAC100_DBLAC_RXFIFO_LTHR(x) (((x) & 0x7) << 0)
 #define FTGMAC100_DBLAC_RXFIFO_HTHR(x) (((x) & 0x7) << 3)
-#define FTGMAC100_DBLAC_RX_THR_EN      (1 << 6)
+#define FTGMAC100_DBLAC_RX_THR_EN      BIT(6)
 #define FTGMAC100_DBLAC_RXBURST_SIZE(x)        (((x) & 0x3) << 8)
 #define FTGMAC100_DBLAC_TXBURST_SIZE(x)        (((x) & 0x3) << 10)
 #define FTGMAC100_DBLAC_RXDES_SIZE(x)  (((x) & 0xf) << 12)
 #define FTGMAC100_DBLAC_TXDES_SIZE(x)  (((x) & 0xf) << 16)
 #define FTGMAC100_DBLAC_IFG_CNT(x)     (((x) & 0x7) << 20)
-#define FTGMAC100_DBLAC_IFG_INC                (1 << 23)
+#define FTGMAC100_DBLAC_IFG_INC                BIT(23)
 
 /*
  * DMA FIFO status register
@@ -122,12 +122,12 @@ struct ftgmac100 {
 #define FTGMAC100_DMAFIFOS_TXDMA1_SM(dmafifos) (((dmafifos) >> 12) & 0xf)
 #define FTGMAC100_DMAFIFOS_TXDMA2_SM(dmafifos) (((dmafifos) >> 16) & 0x3)
 #define FTGMAC100_DMAFIFOS_TXDMA3_SM(dmafifos) (((dmafifos) >> 18) & 0xf)
-#define FTGMAC100_DMAFIFOS_RXFIFO_EMPTY                (1 << 26)
-#define FTGMAC100_DMAFIFOS_TXFIFO_EMPTY                (1 << 27)
-#define FTGMAC100_DMAFIFOS_RXDMA_GRANT         (1 << 28)
-#define FTGMAC100_DMAFIFOS_TXDMA_GRANT         (1 << 29)
-#define FTGMAC100_DMAFIFOS_RXDMA_REQ           (1 << 30)
-#define FTGMAC100_DMAFIFOS_TXDMA_REQ           (1 << 31)
+#define FTGMAC100_DMAFIFOS_RXFIFO_EMPTY                BIT(26)
+#define FTGMAC100_DMAFIFOS_TXFIFO_EMPTY                BIT(27)
+#define FTGMAC100_DMAFIFOS_RXDMA_GRANT         BIT(28)
+#define FTGMAC100_DMAFIFOS_TXDMA_GRANT         BIT(29)
+#define FTGMAC100_DMAFIFOS_RXDMA_REQ           BIT(30)
+#define FTGMAC100_DMAFIFOS_TXDMA_REQ           BIT(31)
 
 /*
  * Receive buffer size register
@@ -137,26 +137,26 @@ struct ftgmac100 {
 /*
  * MAC control register
  */
-#define FTGMAC100_MACCR_TXDMA_EN       (1 << 0)
-#define FTGMAC100_MACCR_RXDMA_EN       (1 << 1)
-#define FTGMAC100_MACCR_TXMAC_EN       (1 << 2)
-#define FTGMAC100_MACCR_RXMAC_EN       (1 << 3)
-#define FTGMAC100_MACCR_RM_VLAN                (1 << 4)
-#define FTGMAC100_MACCR_HPTXR_EN       (1 << 5)
-#define FTGMAC100_MACCR_LOOP_EN                (1 << 6)
-#define FTGMAC100_MACCR_ENRX_IN_HALFTX (1 << 7)
-#define FTGMAC100_MACCR_FULLDUP                (1 << 8)
-#define FTGMAC100_MACCR_GIGA_MODE      (1 << 9)
-#define FTGMAC100_MACCR_CRC_APD                (1 << 10)
-#define FTGMAC100_MACCR_RX_RUNT                (1 << 12)
-#define FTGMAC100_MACCR_JUMBO_LF       (1 << 13)
-#define FTGMAC100_MACCR_RX_ALL         (1 << 14)
-#define FTGMAC100_MACCR_HT_MULTI_EN    (1 << 15)
-#define FTGMAC100_MACCR_RX_MULTIPKT    (1 << 16)
-#define FTGMAC100_MACCR_RX_BROADPKT    (1 << 17)
-#define FTGMAC100_MACCR_DISCARD_CRCERR (1 << 18)
-#define FTGMAC100_MACCR_FAST_MODE      (1 << 19)
-#define FTGMAC100_MACCR_SW_RST         (1 << 31)
+#define FTGMAC100_MACCR_TXDMA_EN       BIT(0)
+#define FTGMAC100_MACCR_RXDMA_EN       BIT(1)
+#define FTGMAC100_MACCR_TXMAC_EN       BIT(2)
+#define FTGMAC100_MACCR_RXMAC_EN       BIT(3)
+#define FTGMAC100_MACCR_RM_VLAN                BIT(4)
+#define FTGMAC100_MACCR_HPTXR_EN       BIT(5)
+#define FTGMAC100_MACCR_LOOP_EN                BIT(6)
+#define FTGMAC100_MACCR_ENRX_IN_HALFTX BIT(7)
+#define FTGMAC100_MACCR_FULLDUP                BIT(8)
+#define FTGMAC100_MACCR_GIGA_MODE      BIT(9)
+#define FTGMAC100_MACCR_CRC_APD                BIT(10)
+#define FTGMAC100_MACCR_RX_RUNT                BIT(12)
+#define FTGMAC100_MACCR_JUMBO_LF       BIT(13)
+#define FTGMAC100_MACCR_RX_ALL         BIT(14)
+#define FTGMAC100_MACCR_HT_MULTI_EN    BIT(15)
+#define FTGMAC100_MACCR_RX_MULTIPKT    BIT(16)
+#define FTGMAC100_MACCR_RX_BROADPKT    BIT(17)
+#define FTGMAC100_MACCR_DISCARD_CRCERR BIT(18)
+#define FTGMAC100_MACCR_FAST_MODE      BIT(19)
+#define FTGMAC100_MACCR_SW_RST         BIT(31)
 
 /*
  * PHY control register
@@ -165,8 +165,8 @@ struct ftgmac100 {
 #define FTGMAC100_PHYCR_MDC_CYCTHR(x)  ((x) & 0x3f)
 #define FTGMAC100_PHYCR_PHYAD(x)       (((x) & 0x1f) << 16)
 #define FTGMAC100_PHYCR_REGAD(x)       (((x) & 0x1f) << 21)
-#define FTGMAC100_PHYCR_MIIRD          (1 << 26)
-#define FTGMAC100_PHYCR_MIIWR          (1 << 27)
+#define FTGMAC100_PHYCR_MIIRD          BIT(26)
+#define FTGMAC100_PHYCR_MIIWR          BIT(27)
 
 /*
  * PHY data register
@@ -182,23 +182,23 @@ struct ftgmac100_txdes {
        unsigned int    txdes1;
        unsigned int    txdes2; /* not used by HW */
        unsigned int    txdes3; /* TXBUF_BADR */
-} __attribute__ ((aligned(16)));
+} __aligned(16);
 
 #define FTGMAC100_TXDES0_TXBUF_SIZE(x) ((x) & 0x3fff)
-#define FTGMAC100_TXDES0_EDOTR         (1 << 15)
-#define FTGMAC100_TXDES0_CRC_ERR       (1 << 19)
-#define FTGMAC100_TXDES0_LTS           (1 << 28)
-#define FTGMAC100_TXDES0_FTS           (1 << 29)
-#define FTGMAC100_TXDES0_TXDMA_OWN     (1 << 31)
+#define FTGMAC100_TXDES0_EDOTR         BIT(15)
+#define FTGMAC100_TXDES0_CRC_ERR       BIT(19)
+#define FTGMAC100_TXDES0_LTS           BIT(28)
+#define FTGMAC100_TXDES0_FTS           BIT(29)
+#define FTGMAC100_TXDES0_TXDMA_OWN     BIT(31)
 
 #define FTGMAC100_TXDES1_VLANTAG_CI(x) ((x) & 0xffff)
-#define FTGMAC100_TXDES1_INS_VLANTAG   (1 << 16)
-#define FTGMAC100_TXDES1_TCP_CHKSUM    (1 << 17)
-#define FTGMAC100_TXDES1_UDP_CHKSUM    (1 << 18)
-#define FTGMAC100_TXDES1_IP_CHKSUM     (1 << 19)
-#define FTGMAC100_TXDES1_LLC           (1 << 22)
-#define FTGMAC100_TXDES1_TX2FIC                (1 << 30)
-#define FTGMAC100_TXDES1_TXIC          (1 << 31)
+#define FTGMAC100_TXDES1_INS_VLANTAG   BIT(16)
+#define FTGMAC100_TXDES1_TCP_CHKSUM    BIT(17)
+#define FTGMAC100_TXDES1_UDP_CHKSUM    BIT(18)
+#define FTGMAC100_TXDES1_IP_CHKSUM     BIT(19)
+#define FTGMAC100_TXDES1_LLC           BIT(22)
+#define FTGMAC100_TXDES1_TX2FIC                BIT(30)
+#define FTGMAC100_TXDES1_TXIC          BIT(31)
 
 /*
  * Receive descriptor, aligned to 16 bytes
@@ -208,23 +208,23 @@ struct ftgmac100_rxdes {
        unsigned int    rxdes1;
        unsigned int    rxdes2; /* not used by HW */
        unsigned int    rxdes3; /* RXBUF_BADR */
-} __attribute__ ((aligned(16)));
+} __aligned(16);
 
 #define FTGMAC100_RXDES0_VDBC(x)       ((x) & 0x3fff)
-#define FTGMAC100_RXDES0_EDORR         (1 << 15)
-#define FTGMAC100_RXDES0_MULTICAST     (1 << 16)
-#define FTGMAC100_RXDES0_BROADCAST     (1 << 17)
-#define FTGMAC100_RXDES0_RX_ERR                (1 << 18)
-#define FTGMAC100_RXDES0_CRC_ERR       (1 << 19)
-#define FTGMAC100_RXDES0_FTL           (1 << 20)
-#define FTGMAC100_RXDES0_RUNT          (1 << 21)
-#define FTGMAC100_RXDES0_RX_ODD_NB     (1 << 22)
-#define FTGMAC100_RXDES0_FIFO_FULL     (1 << 23)
-#define FTGMAC100_RXDES0_PAUSE_OPCODE  (1 << 24)
-#define FTGMAC100_RXDES0_PAUSE_FRAME   (1 << 25)
-#define FTGMAC100_RXDES0_LRS           (1 << 28)
-#define FTGMAC100_RXDES0_FRS           (1 << 29)
-#define FTGMAC100_RXDES0_RXPKT_RDY     (1 << 31)
+#define FTGMAC100_RXDES0_EDORR         BIT(15)
+#define FTGMAC100_RXDES0_MULTICAST     BIT(16)
+#define FTGMAC100_RXDES0_BROADCAST     BIT(17)
+#define FTGMAC100_RXDES0_RX_ERR                BIT(18)
+#define FTGMAC100_RXDES0_CRC_ERR       BIT(19)
+#define FTGMAC100_RXDES0_FTL           BIT(20)
+#define FTGMAC100_RXDES0_RUNT          BIT(21)
+#define FTGMAC100_RXDES0_RX_ODD_NB     BIT(22)
+#define FTGMAC100_RXDES0_FIFO_FULL     BIT(23)
+#define FTGMAC100_RXDES0_PAUSE_OPCODE  BIT(24)
+#define FTGMAC100_RXDES0_PAUSE_FRAME   BIT(25)
+#define FTGMAC100_RXDES0_LRS           BIT(28)
+#define FTGMAC100_RXDES0_FRS           BIT(29)
+#define FTGMAC100_RXDES0_RXPKT_RDY     BIT(31)
 
 #define FTGMAC100_RXDES1_VLANTAG_CI    0xffff
 #define FTGMAC100_RXDES1_PROT_MASK     (0x3 << 20)
@@ -232,11 +232,11 @@ struct ftgmac100_rxdes {
 #define FTGMAC100_RXDES1_PROT_IP       (0x1 << 20)
 #define FTGMAC100_RXDES1_PROT_TCPIP    (0x2 << 20)
 #define FTGMAC100_RXDES1_PROT_UDPIP    (0x3 << 20)
-#define FTGMAC100_RXDES1_LLC           (1 << 22)
-#define FTGMAC100_RXDES1_DF            (1 << 23)
-#define FTGMAC100_RXDES1_VLANTAG_AVAIL (1 << 24)
-#define FTGMAC100_RXDES1_TCP_CHKSUM_ERR        (1 << 25)
-#define FTGMAC100_RXDES1_UDP_CHKSUM_ERR        (1 << 26)
-#define FTGMAC100_RXDES1_IP_CHKSUM_ERR (1 << 27)
+#define FTGMAC100_RXDES1_LLC           BIT(22)
+#define FTGMAC100_RXDES1_DF            BIT(23)
+#define FTGMAC100_RXDES1_VLANTAG_AVAIL BIT(24)
+#define FTGMAC100_RXDES1_TCP_CHKSUM_ERR        BIT(25)
+#define FTGMAC100_RXDES1_UDP_CHKSUM_ERR        BIT(26)
+#define FTGMAC100_RXDES1_IP_CHKSUM_ERR BIT(27)
 
 #endif /* __FTGMAC100_H */
diff --git a/drivers/net/keystone_net.c b/drivers/net/keystone_net.c
deleted file mode 100644 (file)
index d4d909b..0000000
+++ /dev/null
@@ -1,1170 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * Ethernet driver for TI K2HK EVM.
- *
- * (C) Copyright 2012-2014
- *     Texas Instruments Incorporated, <www.ti.com>
- */
-#include <common.h>
-#include <command.h>
-#include <console.h>
-
-#include <dm.h>
-#include <dm/lists.h>
-
-#include <net.h>
-#include <phy.h>
-#include <errno.h>
-#include <miiphy.h>
-#include <malloc.h>
-#include <asm/ti-common/keystone_nav.h>
-#include <asm/ti-common/keystone_net.h>
-#include <asm/ti-common/keystone_serdes.h>
-#include <asm/arch/psc_defs.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#ifndef CONFIG_DM_ETH
-unsigned int emac_open;
-static struct mii_dev *mdio_bus;
-static unsigned int sys_has_mdio = 1;
-#endif
-
-#ifdef KEYSTONE2_EMAC_GIG_ENABLE
-#define emac_gigabit_enable(x) keystone2_eth_gigabit_enable(x)
-#else
-#define emac_gigabit_enable(x) /* no gigabit to enable */
-#endif
-
-#define RX_BUFF_NUMS   24
-#define RX_BUFF_LEN    1520
-#define MAX_SIZE_STREAM_BUFFER RX_BUFF_LEN
-#define SGMII_ANEG_TIMEOUT             4000
-
-static u8 rx_buffs[RX_BUFF_NUMS * RX_BUFF_LEN] __aligned(16);
-
-#ifndef CONFIG_DM_ETH
-struct rx_buff_desc net_rx_buffs = {
-       .buff_ptr       = rx_buffs,
-       .num_buffs      = RX_BUFF_NUMS,
-       .buff_len       = RX_BUFF_LEN,
-       .rx_flow        = 22,
-};
-#endif
-
-#ifdef CONFIG_DM_ETH
-
-enum link_type {
-       LINK_TYPE_SGMII_MAC_TO_MAC_AUTO         = 0,
-       LINK_TYPE_SGMII_MAC_TO_PHY_MODE         = 1,
-       LINK_TYPE_SGMII_MAC_TO_MAC_FORCED_MODE  = 2,
-       LINK_TYPE_SGMII_MAC_TO_FIBRE_MODE       = 3,
-       LINK_TYPE_SGMII_MAC_TO_PHY_NO_MDIO_MODE = 4,
-       LINK_TYPE_RGMII_LINK_MAC_PHY            = 5,
-       LINK_TYPE_RGMII_LINK_MAC_MAC_FORCED     = 6,
-       LINK_TYPE_RGMII_LINK_MAC_PHY_NO_MDIO    = 7,
-       LINK_TYPE_10G_MAC_TO_PHY_MODE           = 10,
-       LINK_TYPE_10G_MAC_TO_MAC_FORCED_MODE    = 11,
-};
-
-#define mac_hi(mac)     (((mac)[0] << 0) | ((mac)[1] << 8) |    \
-                        ((mac)[2] << 16) | ((mac)[3] << 24))
-#define mac_lo(mac)     (((mac)[4] << 0) | ((mac)[5] << 8))
-
-#ifdef CONFIG_KSNET_NETCP_V1_0
-
-#define EMAC_EMACSW_BASE_OFS           0x90800
-#define EMAC_EMACSW_PORT_BASE_OFS      (EMAC_EMACSW_BASE_OFS + 0x60)
-
-/* CPSW Switch slave registers */
-#define CPGMACSL_REG_SA_LO             0x10
-#define CPGMACSL_REG_SA_HI             0x14
-
-#define DEVICE_EMACSW_BASE(base, x)    ((base) + EMAC_EMACSW_PORT_BASE_OFS +  \
-                                        (x) * 0x30)
-
-#elif defined CONFIG_KSNET_NETCP_V1_5
-
-#define EMAC_EMACSW_PORT_BASE_OFS      0x222000
-
-/* CPSW Switch slave registers */
-#define CPGMACSL_REG_SA_LO             0x308
-#define CPGMACSL_REG_SA_HI             0x30c
-
-#define DEVICE_EMACSW_BASE(base, x)    ((base) + EMAC_EMACSW_PORT_BASE_OFS +  \
-                                        (x) * 0x1000)
-
-#endif
-
-
-struct ks2_eth_priv {
-       struct udevice                  *dev;
-       struct phy_device               *phydev;
-       struct mii_dev                  *mdio_bus;
-       int                             phy_addr;
-       phy_interface_t                 phy_if;
-       int                             sgmii_link_type;
-       void                            *mdio_base;
-       struct rx_buff_desc             net_rx_buffs;
-       struct pktdma_cfg               *netcp_pktdma;
-       void                            *hd;
-       int                             slave_port;
-       enum link_type                  link_type;
-       bool                            emac_open;
-       bool                            has_mdio;
-};
-#endif
-
-/* MDIO */
-
-static int keystone2_mdio_reset(struct mii_dev *bus)
-{
-       u_int32_t clkdiv;
-       struct mdio_regs *adap_mdio = bus->priv;
-
-       clkdiv = (EMAC_MDIO_BUS_FREQ / EMAC_MDIO_CLOCK_FREQ) - 1;
-
-       writel((clkdiv & 0xffff) | MDIO_CONTROL_ENABLE |
-              MDIO_CONTROL_FAULT | MDIO_CONTROL_FAULT_ENABLE,
-              &adap_mdio->control);
-
-       while (readl(&adap_mdio->control) & MDIO_CONTROL_IDLE)
-               ;
-
-       return 0;
-}
-
-/**
- * keystone2_mdio_read - read a PHY register via MDIO interface.
- * Blocks until operation is complete.
- */
-static int keystone2_mdio_read(struct mii_dev *bus,
-                              int addr, int devad, int reg)
-{
-       int tmp;
-       struct mdio_regs *adap_mdio = bus->priv;
-
-       while (readl(&adap_mdio->useraccess0) & MDIO_USERACCESS0_GO)
-               ;
-
-       writel(MDIO_USERACCESS0_GO | MDIO_USERACCESS0_WRITE_READ |
-              ((reg & 0x1f) << 21) | ((addr & 0x1f) << 16),
-              &adap_mdio->useraccess0);
-
-       /* Wait for command to complete */
-       while ((tmp = readl(&adap_mdio->useraccess0)) & MDIO_USERACCESS0_GO)
-               ;
-
-       if (tmp & MDIO_USERACCESS0_ACK)
-               return tmp & 0xffff;
-
-       return -1;
-}
-
-/**
- * keystone2_mdio_write - write to a PHY register via MDIO interface.
- * Blocks until operation is complete.
- */
-static int keystone2_mdio_write(struct mii_dev *bus,
-                               int addr, int devad, int reg, u16 val)
-{
-       struct mdio_regs *adap_mdio = bus->priv;
-
-       while (readl(&adap_mdio->useraccess0) & MDIO_USERACCESS0_GO)
-               ;
-
-       writel(MDIO_USERACCESS0_GO | MDIO_USERACCESS0_WRITE_WRITE |
-              ((reg & 0x1f) << 21) | ((addr & 0x1f) << 16) |
-              (val & 0xffff), &adap_mdio->useraccess0);
-
-       /* Wait for command to complete */
-       while (readl(&adap_mdio->useraccess0) & MDIO_USERACCESS0_GO)
-               ;
-
-       return 0;
-}
-
-#ifndef CONFIG_DM_ETH
-static void  __attribute__((unused))
-       keystone2_eth_gigabit_enable(struct eth_device *dev)
-{
-       u_int16_t data;
-       struct eth_priv_t *eth_priv = (struct eth_priv_t *)dev->priv;
-
-       if (sys_has_mdio) {
-               data = keystone2_mdio_read(mdio_bus, eth_priv->phy_addr,
-                                          MDIO_DEVAD_NONE, 0);
-               /* speed selection MSB */
-               if (!(data & (1 << 6)))
-                       return;
-       }
-
-       /*
-        * Check if link detected is giga-bit
-        * If Gigabit mode detected, enable gigbit in MAC
-        */
-       writel(readl(DEVICE_EMACSL_BASE(eth_priv->slave_port - 1) +
-                    CPGMACSL_REG_CTL) |
-              EMAC_MACCONTROL_GIGFORCE | EMAC_MACCONTROL_GIGABIT_ENABLE,
-              DEVICE_EMACSL_BASE(eth_priv->slave_port - 1) + CPGMACSL_REG_CTL);
-}
-#else
-static void  __attribute__((unused))
-       keystone2_eth_gigabit_enable(struct udevice *dev)
-{
-       struct ks2_eth_priv *priv = dev_get_priv(dev);
-       u_int16_t data;
-
-       if (priv->has_mdio) {
-               data = keystone2_mdio_read(priv->mdio_bus, priv->phy_addr,
-                                          MDIO_DEVAD_NONE, 0);
-               /* speed selection MSB */
-               if (!(data & (1 << 6)))
-                       return;
-       }
-
-       /*
-        * Check if link detected is giga-bit
-        * If Gigabit mode detected, enable gigbit in MAC
-        */
-       writel(readl(DEVICE_EMACSL_BASE(priv->slave_port - 1) +
-                    CPGMACSL_REG_CTL) |
-              EMAC_MACCONTROL_GIGFORCE | EMAC_MACCONTROL_GIGABIT_ENABLE,
-              DEVICE_EMACSL_BASE(priv->slave_port - 1) + CPGMACSL_REG_CTL);
-}
-#endif
-
-#ifdef CONFIG_SOC_K2G
-int keystone_rgmii_config(struct phy_device *phy_dev)
-{
-       unsigned int i, status;
-
-       i = 0;
-       do {
-               if (i > SGMII_ANEG_TIMEOUT) {
-                       puts(" TIMEOUT !\n");
-                       phy_dev->link = 0;
-                       return 0;
-               }
-
-               if (ctrlc()) {
-                       puts("user interrupt!\n");
-                       phy_dev->link = 0;
-                       return -EINTR;
-               }
-
-               if ((i++ % 500) == 0)
-                       printf(".");
-
-               udelay(1000);   /* 1 ms */
-               status = readl(RGMII_STATUS_REG);
-       } while (!(status & RGMII_REG_STATUS_LINK));
-
-       puts(" done\n");
-
-       return 0;
-}
-#else
-int keystone_sgmii_config(struct phy_device *phy_dev, int port, int interface)
-{
-       unsigned int i, status, mask;
-       unsigned int mr_adv_ability, control;
-
-       switch (interface) {
-       case SGMII_LINK_MAC_MAC_AUTONEG:
-               mr_adv_ability  = (SGMII_REG_MR_ADV_ENABLE |
-                                  SGMII_REG_MR_ADV_LINK |
-                                  SGMII_REG_MR_ADV_FULL_DUPLEX |
-                                  SGMII_REG_MR_ADV_GIG_MODE);
-               control         = (SGMII_REG_CONTROL_MASTER |
-                                  SGMII_REG_CONTROL_AUTONEG);
-
-               break;
-       case SGMII_LINK_MAC_PHY:
-       case SGMII_LINK_MAC_PHY_FORCED:
-               mr_adv_ability  = SGMII_REG_MR_ADV_ENABLE;
-               control         = SGMII_REG_CONTROL_AUTONEG;
-
-               break;
-       case SGMII_LINK_MAC_MAC_FORCED:
-               mr_adv_ability  = (SGMII_REG_MR_ADV_ENABLE |
-                                  SGMII_REG_MR_ADV_LINK |
-                                  SGMII_REG_MR_ADV_FULL_DUPLEX |
-                                  SGMII_REG_MR_ADV_GIG_MODE);
-               control         = SGMII_REG_CONTROL_MASTER;
-
-               break;
-       case SGMII_LINK_MAC_FIBER:
-               mr_adv_ability  = 0x20;
-               control         = SGMII_REG_CONTROL_AUTONEG;
-
-               break;
-       default:
-               mr_adv_ability  = SGMII_REG_MR_ADV_ENABLE;
-               control         = SGMII_REG_CONTROL_AUTONEG;
-       }
-
-       __raw_writel(0, SGMII_CTL_REG(port));
-
-       /*
-        * Wait for the SerDes pll to lock,
-        * but don't trap if lock is never read
-        */
-       for (i = 0; i < 1000; i++)  {
-               udelay(2000);
-               status = __raw_readl(SGMII_STATUS_REG(port));
-               if ((status & SGMII_REG_STATUS_LOCK) != 0)
-                       break;
-       }
-
-       __raw_writel(mr_adv_ability, SGMII_MRADV_REG(port));
-       __raw_writel(control, SGMII_CTL_REG(port));
-
-
-       mask = SGMII_REG_STATUS_LINK;
-
-       if (control & SGMII_REG_CONTROL_AUTONEG)
-               mask |= SGMII_REG_STATUS_AUTONEG;
-
-       status = __raw_readl(SGMII_STATUS_REG(port));
-       if ((status & mask) == mask)
-               return 0;
-
-       printf("\n%s Waiting for SGMII auto negotiation to complete",
-              phy_dev->dev->name);
-       while ((status & mask) != mask) {
-               /*
-                * Timeout reached ?
-                */
-               if (i > SGMII_ANEG_TIMEOUT) {
-                       puts(" TIMEOUT !\n");
-                       phy_dev->link = 0;
-                       return 0;
-               }
-
-               if (ctrlc()) {
-                       puts("user interrupt!\n");
-                       phy_dev->link = 0;
-                       return -EINTR;
-               }
-
-               if ((i++ % 500) == 0)
-                       printf(".");
-
-               udelay(1000);   /* 1 ms */
-               status = __raw_readl(SGMII_STATUS_REG(port));
-       }
-       puts(" done\n");
-
-       return 0;
-}
-#endif
-
-int mac_sl_reset(u32 port)
-{
-       u32 i, v;
-
-       if (port >= DEVICE_N_GMACSL_PORTS)
-               return GMACSL_RET_INVALID_PORT;
-
-       /* Set the soft reset bit */
-       writel(CPGMAC_REG_RESET_VAL_RESET,
-              DEVICE_EMACSL_BASE(port) + CPGMACSL_REG_RESET);
-
-       /* Wait for the bit to clear */
-       for (i = 0; i < DEVICE_EMACSL_RESET_POLL_COUNT; i++) {
-               v = readl(DEVICE_EMACSL_BASE(port) + CPGMACSL_REG_RESET);
-               if ((v & CPGMAC_REG_RESET_VAL_RESET_MASK) !=
-                   CPGMAC_REG_RESET_VAL_RESET)
-                       return GMACSL_RET_OK;
-       }
-
-       /* Timeout on the reset */
-       return GMACSL_RET_WARN_RESET_INCOMPLETE;
-}
-
-int mac_sl_config(u_int16_t port, struct mac_sl_cfg *cfg)
-{
-       u32 v, i;
-       int ret = GMACSL_RET_OK;
-
-       if (port >= DEVICE_N_GMACSL_PORTS)
-               return GMACSL_RET_INVALID_PORT;
-
-       if (cfg->max_rx_len > CPGMAC_REG_MAXLEN_LEN) {
-               cfg->max_rx_len = CPGMAC_REG_MAXLEN_LEN;
-               ret = GMACSL_RET_WARN_MAXLEN_TOO_BIG;
-       }
-
-       /* Must wait if the device is undergoing reset */
-       for (i = 0; i < DEVICE_EMACSL_RESET_POLL_COUNT; i++) {
-               v = readl(DEVICE_EMACSL_BASE(port) + CPGMACSL_REG_RESET);
-               if ((v & CPGMAC_REG_RESET_VAL_RESET_MASK) !=
-                   CPGMAC_REG_RESET_VAL_RESET)
-                       break;
-       }
-
-       if (i == DEVICE_EMACSL_RESET_POLL_COUNT)
-               return GMACSL_RET_CONFIG_FAIL_RESET_ACTIVE;
-
-       writel(cfg->max_rx_len, DEVICE_EMACSL_BASE(port) + CPGMACSL_REG_MAXLEN);
-       writel(cfg->ctl, DEVICE_EMACSL_BASE(port) + CPGMACSL_REG_CTL);
-
-#ifndef CONFIG_SOC_K2HK
-       /* Map RX packet flow priority to 0 */
-       writel(0, DEVICE_EMACSL_BASE(port) + CPGMACSL_REG_RX_PRI_MAP);
-#endif
-
-       return ret;
-}
-
-int ethss_config(u32 ctl, u32 max_pkt_size)
-{
-       u32 i;
-
-       /* Max length register */
-       writel(max_pkt_size, DEVICE_CPSW_BASE + CPSW_REG_MAXLEN);
-
-       /* Control register */
-       writel(ctl, DEVICE_CPSW_BASE + CPSW_REG_CTL);
-
-       /* All statistics enabled by default */
-       writel(CPSW_REG_VAL_STAT_ENABLE_ALL,
-              DEVICE_CPSW_BASE + CPSW_REG_STAT_PORT_EN);
-
-       /* Reset and enable the ALE */
-       writel(CPSW_REG_VAL_ALE_CTL_RESET_AND_ENABLE |
-              CPSW_REG_VAL_ALE_CTL_BYPASS,
-              DEVICE_CPSW_BASE + CPSW_REG_ALE_CONTROL);
-
-       /* All ports put into forward mode */
-       for (i = 0; i < DEVICE_CPSW_NUM_PORTS; i++)
-               writel(CPSW_REG_VAL_PORTCTL_FORWARD_MODE,
-                      DEVICE_CPSW_BASE + CPSW_REG_ALE_PORTCTL(i));
-
-       return 0;
-}
-
-int ethss_start(void)
-{
-       int i;
-       struct mac_sl_cfg cfg;
-
-       cfg.max_rx_len  = MAX_SIZE_STREAM_BUFFER;
-       cfg.ctl         = GMACSL_ENABLE | GMACSL_RX_ENABLE_EXT_CTL;
-
-       for (i = 0; i < DEVICE_N_GMACSL_PORTS; i++) {
-               mac_sl_reset(i);
-               mac_sl_config(i, &cfg);
-       }
-
-       return 0;
-}
-
-int ethss_stop(void)
-{
-       int i;
-
-       for (i = 0; i < DEVICE_N_GMACSL_PORTS; i++)
-               mac_sl_reset(i);
-
-       return 0;
-}
-
-struct ks2_serdes ks2_serdes_sgmii_156p25mhz = {
-       .clk = SERDES_CLOCK_156P25M,
-       .rate = SERDES_RATE_5G,
-       .rate_mode = SERDES_QUARTER_RATE,
-       .intf = SERDES_PHY_SGMII,
-       .loopback = 0,
-};
-
-#ifndef CONFIG_SOC_K2G
-static void keystone2_net_serdes_setup(void)
-{
-       ks2_serdes_init(CONFIG_KSNET_SERDES_SGMII_BASE,
-                       &ks2_serdes_sgmii_156p25mhz,
-                       CONFIG_KSNET_SERDES_LANES_PER_SGMII);
-
-#if defined(CONFIG_SOC_K2E) || defined(CONFIG_SOC_K2L)
-       ks2_serdes_init(CONFIG_KSNET_SERDES_SGMII2_BASE,
-                       &ks2_serdes_sgmii_156p25mhz,
-                       CONFIG_KSNET_SERDES_LANES_PER_SGMII);
-#endif
-
-       /* wait till setup */
-       udelay(5000);
-}
-#endif
-
-#ifndef CONFIG_DM_ETH
-
-int keystone2_eth_read_mac_addr(struct eth_device *dev)
-{
-       struct eth_priv_t *eth_priv;
-       u32 maca = 0;
-       u32 macb = 0;
-
-       eth_priv = (struct eth_priv_t *)dev->priv;
-
-       /* Read the e-fuse mac address */
-       if (eth_priv->slave_port == 1) {
-               maca = __raw_readl(MAC_ID_BASE_ADDR);
-               macb = __raw_readl(MAC_ID_BASE_ADDR + 4);
-       }
-
-       dev->enetaddr[0] = (macb >>  8) & 0xff;
-       dev->enetaddr[1] = (macb >>  0) & 0xff;
-       dev->enetaddr[2] = (maca >> 24) & 0xff;
-       dev->enetaddr[3] = (maca >> 16) & 0xff;
-       dev->enetaddr[4] = (maca >>  8) & 0xff;
-       dev->enetaddr[5] = (maca >>  0) & 0xff;
-
-       return 0;
-}
-
-int32_t cpmac_drv_send(u32 *buffer, int num_bytes, int slave_port_num)
-{
-       if (num_bytes < EMAC_MIN_ETHERNET_PKT_SIZE)
-               num_bytes = EMAC_MIN_ETHERNET_PKT_SIZE;
-
-       return ksnav_send(&netcp_pktdma, buffer,
-                         num_bytes, (slave_port_num) << 16);
-}
-
-/* Eth device open */
-static int keystone2_eth_open(struct eth_device *dev, bd_t *bis)
-{
-       struct eth_priv_t *eth_priv = (struct eth_priv_t *)dev->priv;
-       struct phy_device *phy_dev = eth_priv->phy_dev;
-
-       debug("+ emac_open\n");
-
-       net_rx_buffs.rx_flow    = eth_priv->rx_flow;
-
-       sys_has_mdio =
-               (eth_priv->sgmii_link_type == SGMII_LINK_MAC_PHY) ? 1 : 0;
-
-       if (sys_has_mdio)
-               keystone2_mdio_reset(mdio_bus);
-
-#ifdef CONFIG_SOC_K2G
-       keystone_rgmii_config(phy_dev);
-#else
-       keystone_sgmii_config(phy_dev, eth_priv->slave_port - 1,
-                             eth_priv->sgmii_link_type);
-#endif
-
-       udelay(10000);
-
-       /* On chip switch configuration */
-       ethss_config(target_get_switch_ctl(), SWITCH_MAX_PKT_SIZE);
-
-       /* TODO: add error handling code */
-       if (qm_init()) {
-               printf("ERROR: qm_init()\n");
-               return -1;
-       }
-       if (ksnav_init(&netcp_pktdma, &net_rx_buffs)) {
-               qm_close();
-               printf("ERROR: netcp_init()\n");
-               return -1;
-       }
-
-       /*
-        * Streaming switch configuration. If not present this
-        * statement is defined to void in target.h.
-        * If present this is usually defined to a series of register writes
-        */
-       hw_config_streaming_switch();
-
-       if (sys_has_mdio) {
-               keystone2_mdio_reset(mdio_bus);
-
-               phy_startup(phy_dev);
-               if (phy_dev->link == 0) {
-                       ksnav_close(&netcp_pktdma);
-                       qm_close();
-                       return -1;
-               }
-       }
-
-       emac_gigabit_enable(dev);
-
-       ethss_start();
-
-       debug("- emac_open\n");
-
-       emac_open = 1;
-
-       return 0;
-}
-
-/* Eth device close */
-void keystone2_eth_close(struct eth_device *dev)
-{
-       struct eth_priv_t *eth_priv = (struct eth_priv_t *)dev->priv;
-       struct phy_device *phy_dev = eth_priv->phy_dev;
-
-       debug("+ emac_close\n");
-
-       if (!emac_open)
-               return;
-
-       ethss_stop();
-
-       ksnav_close(&netcp_pktdma);
-       qm_close();
-       phy_shutdown(phy_dev);
-
-       emac_open = 0;
-
-       debug("- emac_close\n");
-}
-
-/*
- * This function sends a single packet on the network and returns
- * positive number (number of bytes transmitted) or negative for error
- */
-static int keystone2_eth_send_packet(struct eth_device *dev,
-                                       void *packet, int length)
-{
-       int ret_status = -1;
-       struct eth_priv_t *eth_priv = (struct eth_priv_t *)dev->priv;
-       struct phy_device *phy_dev = eth_priv->phy_dev;
-
-       genphy_update_link(phy_dev);
-       if (phy_dev->link == 0)
-               return -1;
-
-       if (cpmac_drv_send((u32 *)packet, length, eth_priv->slave_port) != 0)
-               return ret_status;
-
-       return length;
-}
-
-/*
- * This function handles receipt of a packet from the network
- */
-static int keystone2_eth_rcv_packet(struct eth_device *dev)
-{
-       void *hd;
-       int  pkt_size;
-       u32  *pkt;
-
-       hd = ksnav_recv(&netcp_pktdma, &pkt, &pkt_size);
-       if (hd == NULL)
-               return 0;
-
-       net_process_received_packet((uchar *)pkt, pkt_size);
-
-       ksnav_release_rxhd(&netcp_pktdma, hd);
-
-       return pkt_size;
-}
-
-#ifdef CONFIG_MCAST_TFTP
-static int keystone2_eth_bcast_addr(struct eth_device *dev, u32 ip, u8 set)
-{
-       return 0;
-}
-#endif
-
-/*
- * This function initializes the EMAC hardware.
- */
-int keystone2_emac_initialize(struct eth_priv_t *eth_priv)
-{
-       int res;
-       struct eth_device *dev;
-       struct phy_device *phy_dev;
-       struct mdio_regs *adap_mdio = (struct mdio_regs *)EMAC_MDIO_BASE_ADDR;
-
-       dev = malloc(sizeof(struct eth_device));
-       if (dev == NULL)
-               return -1;
-
-       memset(dev, 0, sizeof(struct eth_device));
-
-       strcpy(dev->name, eth_priv->int_name);
-       dev->priv = eth_priv;
-
-       keystone2_eth_read_mac_addr(dev);
-
-       dev->iobase             = 0;
-       dev->init               = keystone2_eth_open;
-       dev->halt               = keystone2_eth_close;
-       dev->send               = keystone2_eth_send_packet;
-       dev->recv               = keystone2_eth_rcv_packet;
-#ifdef CONFIG_MCAST_TFTP
-       dev->mcast              = keystone2_eth_bcast_addr;
-#endif
-
-       eth_register(dev);
-
-       /* Register MDIO bus if it's not registered yet */
-       if (!mdio_bus) {
-               mdio_bus        = mdio_alloc();
-               mdio_bus->read  = keystone2_mdio_read;
-               mdio_bus->write = keystone2_mdio_write;
-               mdio_bus->reset = keystone2_mdio_reset;
-               mdio_bus->priv  = (void *)EMAC_MDIO_BASE_ADDR;
-               strcpy(mdio_bus->name, "ethernet-mdio");
-
-               res = mdio_register(mdio_bus);
-               if (res)
-                       return res;
-       }
-
-#ifndef CONFIG_SOC_K2G
-       keystone2_net_serdes_setup();
-#endif
-
-       /* Create phy device and bind it with driver */
-#ifdef CONFIG_KSNET_MDIO_PHY_CONFIG_ENABLE
-       phy_dev = phy_connect(mdio_bus, eth_priv->phy_addr,
-                             dev, eth_priv->phy_if);
-       phy_config(phy_dev);
-#else
-       phy_dev = phy_find_by_mask(mdio_bus, 1 << eth_priv->phy_addr,
-                                  eth_priv->phy_if);
-       phy_dev->dev = dev;
-#endif
-       eth_priv->phy_dev = phy_dev;
-
-       return 0;
-}
-
-#else
-
-static int ks2_eth_start(struct udevice *dev)
-{
-       struct ks2_eth_priv *priv = dev_get_priv(dev);
-
-#ifdef CONFIG_SOC_K2G
-       keystone_rgmii_config(priv->phydev);
-#else
-       keystone_sgmii_config(priv->phydev, priv->slave_port - 1,
-                             priv->sgmii_link_type);
-#endif
-
-       udelay(10000);
-
-       /* On chip switch configuration */
-       ethss_config(target_get_switch_ctl(), SWITCH_MAX_PKT_SIZE);
-
-       qm_init();
-
-       if (ksnav_init(priv->netcp_pktdma, &priv->net_rx_buffs)) {
-               pr_err("ksnav_init failed\n");
-               goto err_knav_init;
-       }
-
-       /*
-        * Streaming switch configuration. If not present this
-        * statement is defined to void in target.h.
-        * If present this is usually defined to a series of register writes
-        */
-       hw_config_streaming_switch();
-
-       if (priv->has_mdio) {
-               keystone2_mdio_reset(priv->mdio_bus);
-
-               phy_startup(priv->phydev);
-               if (priv->phydev->link == 0) {
-                       pr_err("phy startup failed\n");
-                       goto err_phy_start;
-               }
-       }
-
-       emac_gigabit_enable(dev);
-
-       ethss_start();
-
-       priv->emac_open = true;
-
-       return 0;
-
-err_phy_start:
-       ksnav_close(priv->netcp_pktdma);
-err_knav_init:
-       qm_close();
-
-       return -EFAULT;
-}
-
-static int ks2_eth_send(struct udevice *dev, void *packet, int length)
-{
-       struct ks2_eth_priv *priv = dev_get_priv(dev);
-
-       genphy_update_link(priv->phydev);
-       if (priv->phydev->link == 0)
-               return -1;
-
-       if (length < EMAC_MIN_ETHERNET_PKT_SIZE)
-               length = EMAC_MIN_ETHERNET_PKT_SIZE;
-
-       return ksnav_send(priv->netcp_pktdma, (u32 *)packet,
-                         length, (priv->slave_port) << 16);
-}
-
-static int ks2_eth_recv(struct udevice *dev, int flags, uchar **packetp)
-{
-       struct ks2_eth_priv *priv = dev_get_priv(dev);
-       int  pkt_size;
-       u32 *pkt = NULL;
-
-       priv->hd = ksnav_recv(priv->netcp_pktdma, &pkt, &pkt_size);
-       if (priv->hd == NULL)
-               return -EAGAIN;
-
-       *packetp = (uchar *)pkt;
-
-       return pkt_size;
-}
-
-static int ks2_eth_free_pkt(struct udevice *dev, uchar *packet,
-                                  int length)
-{
-       struct ks2_eth_priv *priv = dev_get_priv(dev);
-
-       ksnav_release_rxhd(priv->netcp_pktdma, priv->hd);
-
-       return 0;
-}
-
-static void ks2_eth_stop(struct udevice *dev)
-{
-       struct ks2_eth_priv *priv = dev_get_priv(dev);
-
-       if (!priv->emac_open)
-               return;
-       ethss_stop();
-
-       ksnav_close(priv->netcp_pktdma);
-       qm_close();
-       phy_shutdown(priv->phydev);
-       priv->emac_open = false;
-}
-
-int ks2_eth_read_rom_hwaddr(struct udevice *dev)
-{
-       struct ks2_eth_priv *priv = dev_get_priv(dev);
-       struct eth_pdata *pdata = dev_get_platdata(dev);
-       u32 maca = 0;
-       u32 macb = 0;
-
-       /* Read the e-fuse mac address */
-       if (priv->slave_port == 1) {
-               maca = __raw_readl(MAC_ID_BASE_ADDR);
-               macb = __raw_readl(MAC_ID_BASE_ADDR + 4);
-       }
-
-       pdata->enetaddr[0] = (macb >>  8) & 0xff;
-       pdata->enetaddr[1] = (macb >>  0) & 0xff;
-       pdata->enetaddr[2] = (maca >> 24) & 0xff;
-       pdata->enetaddr[3] = (maca >> 16) & 0xff;
-       pdata->enetaddr[4] = (maca >>  8) & 0xff;
-       pdata->enetaddr[5] = (maca >>  0) & 0xff;
-
-       return 0;
-}
-
-int ks2_eth_write_hwaddr(struct udevice *dev)
-{
-       struct ks2_eth_priv *priv = dev_get_priv(dev);
-       struct eth_pdata *pdata = dev_get_platdata(dev);
-
-       writel(mac_hi(pdata->enetaddr),
-              DEVICE_EMACSW_BASE(pdata->iobase, priv->slave_port - 1) +
-                                 CPGMACSL_REG_SA_HI);
-       writel(mac_lo(pdata->enetaddr),
-              DEVICE_EMACSW_BASE(pdata->iobase, priv->slave_port - 1) +
-                                 CPGMACSL_REG_SA_LO);
-
-       return 0;
-}
-
-static int ks2_eth_probe(struct udevice *dev)
-{
-       struct ks2_eth_priv *priv = dev_get_priv(dev);
-       struct mii_dev *mdio_bus;
-       int ret;
-
-       priv->dev = dev;
-
-       /* These clock enables has to be moved to common location */
-       if (cpu_is_k2g())
-               writel(KS2_ETHERNET_RGMII, KS2_ETHERNET_CFG);
-
-       /* By default, select PA PLL clock as PA clock source */
-#ifndef CONFIG_SOC_K2G
-       if (psc_enable_module(KS2_LPSC_PA))
-               return -EACCES;
-#endif
-       if (psc_enable_module(KS2_LPSC_CPGMAC))
-               return -EACCES;
-       if (psc_enable_module(KS2_LPSC_CRYPTO))
-               return -EACCES;
-
-       if (cpu_is_k2e() || cpu_is_k2l())
-               pll_pa_clk_sel();
-
-
-       priv->net_rx_buffs.buff_ptr = rx_buffs;
-       priv->net_rx_buffs.num_buffs = RX_BUFF_NUMS;
-       priv->net_rx_buffs.buff_len = RX_BUFF_LEN;
-
-       if (priv->slave_port == 1) {
-               /*
-                * Register MDIO bus for slave 0 only, other slave have
-                * to re-use the same
-                */
-               mdio_bus = mdio_alloc();
-               if (!mdio_bus) {
-                       pr_err("MDIO alloc failed\n");
-                       return -ENOMEM;
-               }
-               priv->mdio_bus = mdio_bus;
-               mdio_bus->read  = keystone2_mdio_read;
-               mdio_bus->write = keystone2_mdio_write;
-               mdio_bus->reset = keystone2_mdio_reset;
-               mdio_bus->priv  = priv->mdio_base;
-               sprintf(mdio_bus->name, "ethernet-mdio");
-
-               ret = mdio_register(mdio_bus);
-               if (ret) {
-                       pr_err("MDIO bus register failed\n");
-                       return ret;
-               }
-       } else {
-               /* Get the MDIO bus from slave 0 device */
-               struct ks2_eth_priv *parent_priv;
-
-               parent_priv = dev_get_priv(dev->parent);
-               priv->mdio_bus = parent_priv->mdio_bus;
-       }
-
-#ifndef CONFIG_SOC_K2G
-       keystone2_net_serdes_setup();
-#endif
-
-       priv->netcp_pktdma = &netcp_pktdma;
-
-       if (priv->has_mdio) {
-               priv->phydev = phy_connect(priv->mdio_bus, priv->phy_addr,
-                                          dev, priv->phy_if);
-               phy_config(priv->phydev);
-       }
-
-       return 0;
-}
-
-int ks2_eth_remove(struct udevice *dev)
-{
-       struct ks2_eth_priv *priv = dev_get_priv(dev);
-
-       free(priv->phydev);
-       mdio_unregister(priv->mdio_bus);
-       mdio_free(priv->mdio_bus);
-
-       return 0;
-}
-
-static const struct eth_ops ks2_eth_ops = {
-       .start                  = ks2_eth_start,
-       .send                   = ks2_eth_send,
-       .recv                   = ks2_eth_recv,
-       .free_pkt               = ks2_eth_free_pkt,
-       .stop                   = ks2_eth_stop,
-       .read_rom_hwaddr        = ks2_eth_read_rom_hwaddr,
-       .write_hwaddr           = ks2_eth_write_hwaddr,
-};
-
-static int ks2_eth_bind_slaves(struct udevice *dev, int gbe, int *gbe_0)
-{
-       const void *fdt = gd->fdt_blob;
-       struct udevice *sl_dev;
-       int interfaces;
-       int sec_slave;
-       int slave;
-       int ret;
-       char *slave_name;
-
-       interfaces = fdt_subnode_offset(fdt, gbe, "interfaces");
-       fdt_for_each_subnode(slave, fdt, interfaces) {
-               int slave_no;
-
-               slave_no = fdtdec_get_int(fdt, slave, "slave-port", -ENOENT);
-               if (slave_no == -ENOENT)
-                       continue;
-
-               if (slave_no == 0) {
-                       /* This is the current eth device */
-                       *gbe_0 = slave;
-               } else {
-                       /* Slave devices to be registered */
-                       slave_name = malloc(20);
-                       snprintf(slave_name, 20, "netcp@slave-%d", slave_no);
-                       ret = device_bind_driver_to_node(dev, "eth_ks2_sl",
-                                       slave_name, offset_to_ofnode(slave),
-                                       &sl_dev);
-                       if (ret) {
-                               pr_err("ks2_net - not able to bind slave interfaces\n");
-                               return ret;
-                       }
-               }
-       }
-
-       sec_slave = fdt_subnode_offset(fdt, gbe, "secondary-slave-ports");
-       fdt_for_each_subnode(slave, fdt, sec_slave) {
-               int slave_no;
-
-               slave_no = fdtdec_get_int(fdt, slave, "slave-port", -ENOENT);
-               if (slave_no == -ENOENT)
-                       continue;
-
-               /* Slave devices to be registered */
-               slave_name = malloc(20);
-               snprintf(slave_name, 20, "netcp@slave-%d", slave_no);
-               ret = device_bind_driver_to_node(dev, "eth_ks2_sl", slave_name,
-                                       offset_to_ofnode(slave), &sl_dev);
-               if (ret) {
-                       pr_err("ks2_net - not able to bind slave interfaces\n");
-                       return ret;
-               }
-       }
-
-       return 0;
-}
-
-static int ks2_eth_parse_slave_interface(int netcp, int slave,
-                                        struct ks2_eth_priv *priv,
-                                        struct eth_pdata *pdata)
-{
-       const void *fdt = gd->fdt_blob;
-       int mdio;
-       int phy;
-       int dma_count;
-       u32 dma_channel[8];
-
-       priv->slave_port = fdtdec_get_int(fdt, slave, "slave-port", -1);
-       priv->net_rx_buffs.rx_flow = priv->slave_port * 8;
-
-       /* U-Boot slave port number starts with 1 instead of 0 */
-       priv->slave_port += 1;
-
-       dma_count = fdtdec_get_int_array_count(fdt, netcp,
-                                              "ti,navigator-dmas",
-                                              dma_channel, 8);
-
-       if (dma_count > (2 * priv->slave_port)) {
-               int dma_idx;
-
-               dma_idx = priv->slave_port * 2 - 1;
-               priv->net_rx_buffs.rx_flow = dma_channel[dma_idx];
-       }
-
-       priv->link_type = fdtdec_get_int(fdt, slave, "link-interface", -1);
-
-       phy = fdtdec_lookup_phandle(fdt, slave, "phy-handle");
-       if (phy >= 0) {
-               priv->phy_addr = fdtdec_get_int(fdt, phy, "reg", -1);
-
-               mdio = fdt_parent_offset(fdt, phy);
-               if (mdio < 0) {
-                       pr_err("mdio dt not found\n");
-                       return -ENODEV;
-               }
-               priv->mdio_base = (void *)fdtdec_get_addr(fdt, mdio, "reg");
-       }
-
-       if (priv->link_type == LINK_TYPE_SGMII_MAC_TO_PHY_MODE) {
-               priv->phy_if = PHY_INTERFACE_MODE_SGMII;
-               pdata->phy_interface = priv->phy_if;
-               priv->sgmii_link_type = SGMII_LINK_MAC_PHY;
-               priv->has_mdio = true;
-       } else if (priv->link_type == LINK_TYPE_RGMII_LINK_MAC_PHY) {
-               priv->phy_if = PHY_INTERFACE_MODE_RGMII;
-               pdata->phy_interface = priv->phy_if;
-               priv->has_mdio = true;
-       }
-
-       return 0;
-}
-
-static int ks2_sl_eth_ofdata_to_platdata(struct udevice *dev)
-{
-       struct ks2_eth_priv *priv = dev_get_priv(dev);
-       struct eth_pdata *pdata = dev_get_platdata(dev);
-       const void *fdt = gd->fdt_blob;
-       int slave = dev_of_offset(dev);
-       int interfaces;
-       int gbe;
-       int netcp_devices;
-       int netcp;
-
-       interfaces = fdt_parent_offset(fdt, slave);
-       gbe = fdt_parent_offset(fdt, interfaces);
-       netcp_devices = fdt_parent_offset(fdt, gbe);
-       netcp = fdt_parent_offset(fdt, netcp_devices);
-
-       ks2_eth_parse_slave_interface(netcp, slave, priv, pdata);
-
-       pdata->iobase = fdtdec_get_addr(fdt, netcp, "reg");
-
-       return 0;
-}
-
-static int ks2_eth_ofdata_to_platdata(struct udevice *dev)
-{
-       struct ks2_eth_priv *priv = dev_get_priv(dev);
-       struct eth_pdata *pdata = dev_get_platdata(dev);
-       const void *fdt = gd->fdt_blob;
-       int gbe_0 = -ENODEV;
-       int netcp_devices;
-       int gbe;
-
-       netcp_devices = fdt_subnode_offset(fdt, dev_of_offset(dev),
-                                          "netcp-devices");
-       gbe = fdt_subnode_offset(fdt, netcp_devices, "gbe");
-
-       ks2_eth_bind_slaves(dev, gbe, &gbe_0);
-
-       ks2_eth_parse_slave_interface(dev_of_offset(dev), gbe_0, priv, pdata);
-
-       pdata->iobase = devfdt_get_addr(dev);
-
-       return 0;
-}
-
-static const struct udevice_id ks2_eth_ids[] = {
-       { .compatible = "ti,netcp-1.0" },
-       { }
-};
-
-U_BOOT_DRIVER(eth_ks2_slave) = {
-       .name   = "eth_ks2_sl",
-       .id     = UCLASS_ETH,
-       .ofdata_to_platdata = ks2_sl_eth_ofdata_to_platdata,
-       .probe  = ks2_eth_probe,
-       .remove = ks2_eth_remove,
-       .ops    = &ks2_eth_ops,
-       .priv_auto_alloc_size = sizeof(struct ks2_eth_priv),
-       .platdata_auto_alloc_size = sizeof(struct eth_pdata),
-       .flags = DM_FLAG_ALLOC_PRIV_DMA,
-};
-
-U_BOOT_DRIVER(eth_ks2) = {
-       .name   = "eth_ks2",
-       .id     = UCLASS_ETH,
-       .of_match = ks2_eth_ids,
-       .ofdata_to_platdata = ks2_eth_ofdata_to_platdata,
-       .probe  = ks2_eth_probe,
-       .remove = ks2_eth_remove,
-       .ops    = &ks2_eth_ops,
-       .priv_auto_alloc_size = sizeof(struct ks2_eth_priv),
-       .platdata_auto_alloc_size = sizeof(struct eth_pdata),
-       .flags = DM_FLAG_ALLOC_PRIV_DMA,
-};
-#endif
diff --git a/drivers/net/mt7628-eth.c b/drivers/net/mt7628-eth.c
new file mode 100644 (file)
index 0000000..7833b2f
--- /dev/null
@@ -0,0 +1,644 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * MediaTek ethernet IP driver for U-Boot
+ *
+ * Copyright (C) 2018 Stefan Roese <sr@denx.de>
+ *
+ * This code is mostly based on the code extracted from this MediaTek
+ * github repository:
+ *
+ * https://github.com/MediaTek-Labs/linkit-smart-uboot.git
+ *
+ * I was not able to find a specific license or other developers
+ * copyrights here, so I can't add them here.
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <malloc.h>
+#include <miiphy.h>
+#include <net.h>
+#include <regmap.h>
+#include <syscon.h>
+#include <wait_bit.h>
+#include <asm/io.h>
+#include <linux/bitfield.h>
+#include <linux/err.h>
+
+/* System controller register */
+#define MT7628_RSTCTRL_REG     0x34
+#define RSTCTRL_EPHY_RST       BIT(24)
+
+#define MT7628_AGPIO_CFG_REG   0x3c
+#define MT7628_EPHY_GPIO_AIO_EN        GENMASK(20, 17)
+#define MT7628_EPHY_P0_DIS     BIT(16)
+
+#define MT7628_GPIO2_MODE_REG  0x64
+
+/* Ethernet frame engine register */
+#define PDMA_RELATED           0x0800
+
+#define TX_BASE_PTR0           (PDMA_RELATED + 0x000)
+#define TX_MAX_CNT0            (PDMA_RELATED + 0x004)
+#define TX_CTX_IDX0            (PDMA_RELATED + 0x008)
+#define TX_DTX_IDX0            (PDMA_RELATED + 0x00c)
+
+#define RX_BASE_PTR0           (PDMA_RELATED + 0x100)
+#define RX_MAX_CNT0            (PDMA_RELATED + 0x104)
+#define RX_CALC_IDX0           (PDMA_RELATED + 0x108)
+
+#define PDMA_GLO_CFG           (PDMA_RELATED + 0x204)
+#define PDMA_RST_IDX           (PDMA_RELATED + 0x208)
+#define DLY_INT_CFG            (PDMA_RELATED + 0x20c)
+
+#define SDM_RELATED            0x0c00
+
+#define SDM_MAC_ADRL           (SDM_RELATED + 0x0c)    /* MAC address LSB */
+#define SDM_MAC_ADRH           (SDM_RELATED + 0x10)    /* MAC Address MSB */
+
+#define RST_DTX_IDX0           BIT(0)
+#define RST_DRX_IDX0           BIT(16)
+
+#define TX_DMA_EN              BIT(0)
+#define TX_DMA_BUSY            BIT(1)
+#define RX_DMA_EN              BIT(2)
+#define RX_DMA_BUSY            BIT(3)
+#define TX_WB_DDONE            BIT(6)
+
+/* Ethernet switch register */
+#define MT7628_SWITCH_FCT0     0x0008
+#define MT7628_SWITCH_PFC1     0x0014
+#define MT7628_SWITCH_FPA      0x0084
+#define MT7628_SWITCH_SOCPC    0x008c
+#define MT7628_SWITCH_POC0     0x0090
+#define MT7628_SWITCH_POC2     0x0098
+#define MT7628_SWITCH_SGC      0x009c
+#define MT7628_SWITCH_PCR0     0x00c0
+#define PCR0_PHY_ADDR          GENMASK(4, 0)
+#define PCR0_PHY_REG           GENMASK(12, 8)
+#define PCR0_WT_PHY_CMD                BIT(13)
+#define PCR0_RD_PHY_CMD                BIT(14)
+#define PCR0_WT_DATA           GENMASK(31, 16)
+
+#define MT7628_SWITCH_PCR1     0x00c4
+#define PCR1_WT_DONE           BIT(0)
+#define PCR1_RD_RDY            BIT(1)
+#define PCR1_RD_DATA           GENMASK(31, 16)
+
+#define MT7628_SWITCH_FPA1     0x00c8
+#define MT7628_SWITCH_FCT2     0x00cc
+#define MT7628_SWITCH_SGC2     0x00e4
+#define MT7628_SWITCH_BMU_CTRL 0x0110
+
+/* rxd2 */
+#define RX_DMA_DONE            BIT(31)
+#define RX_DMA_LSO             BIT(30)
+#define RX_DMA_PLEN0           GENMASK(29, 16)
+#define RX_DMA_TAG             BIT(15)
+
+struct fe_rx_dma {
+       unsigned int rxd1;
+       unsigned int rxd2;
+       unsigned int rxd3;
+       unsigned int rxd4;
+} __packed __aligned(4);
+
+#define TX_DMA_PLEN0           GENMASK(29, 16)
+#define TX_DMA_LS1             BIT(14)
+#define TX_DMA_LS0             BIT(30)
+#define TX_DMA_DONE            BIT(31)
+
+#define TX_DMA_INS_VLAN_MT7621 BIT(16)
+#define TX_DMA_INS_VLAN                BIT(7)
+#define TX_DMA_INS_PPPOE       BIT(12)
+#define TX_DMA_PN              GENMASK(26, 24)
+
+struct fe_tx_dma {
+       unsigned int txd1;
+       unsigned int txd2;
+       unsigned int txd3;
+       unsigned int txd4;
+} __packed __aligned(4);
+
+#define NUM_RX_DESC            256
+#define NUM_TX_DESC            4
+
+#define PADDING_LENGTH         60
+
+#define MTK_QDMA_PAGE_SIZE     2048
+
+#define CONFIG_MDIO_TIMEOUT    100
+#define CONFIG_DMA_STOP_TIMEOUT        100
+#define CONFIG_TX_DMA_TIMEOUT  100
+
+#define LINK_DELAY_TIME                500             /* 500 ms */
+#define LINK_TIMEOUT           10000           /* 10 seconds */
+
+struct mt7628_eth_dev {
+       void __iomem *base;             /* frame engine base address */
+       void __iomem *eth_sw_base;      /* switch base address */
+       struct regmap *sysctrl_regmap;  /* system-controller reg-map */
+
+       struct mii_dev *bus;
+
+       struct fe_tx_dma *tx_ring;
+       struct fe_rx_dma *rx_ring;
+
+       u8 *rx_buf[NUM_RX_DESC];
+
+       /* Point to the next RXD DMA wants to use in RXD Ring0 */
+       int rx_dma_idx;
+       /* Point to the next TXD in TXD Ring0 CPU wants to use */
+       int tx_dma_idx;
+};
+
+static int mdio_wait_read(struct mt7628_eth_dev *priv, u32 mask, bool mask_set)
+{
+       void __iomem *base = priv->eth_sw_base;
+       int ret;
+
+       ret = wait_for_bit_le32(base + MT7628_SWITCH_PCR1, mask, mask_set,
+                               CONFIG_MDIO_TIMEOUT, false);
+       if (ret) {
+               printf("MDIO operation timeout!\n");
+               return -ETIMEDOUT;
+       }
+
+       return 0;
+}
+
+static int mii_mgr_read(struct mt7628_eth_dev *priv,
+                       u32 phy_addr, u32 phy_register, u32 *read_data)
+{
+       void __iomem *base = priv->eth_sw_base;
+       u32 status = 0;
+       u32 ret;
+
+       *read_data = 0xffff;
+       /* Make sure previous read operation is complete */
+       ret = mdio_wait_read(priv, PCR1_RD_RDY, false);
+       if (ret)
+               return ret;
+
+       writel(PCR0_RD_PHY_CMD |
+              FIELD_PREP(PCR0_PHY_REG, phy_register) |
+              FIELD_PREP(PCR0_PHY_ADDR, phy_addr),
+              base + MT7628_SWITCH_PCR0);
+
+       /* Make sure previous read operation is complete */
+       ret = mdio_wait_read(priv, PCR1_RD_RDY, true);
+       if (ret)
+               return ret;
+
+       status = readl(base + MT7628_SWITCH_PCR1);
+       *read_data = FIELD_GET(PCR1_RD_DATA, status);
+
+       return 0;
+}
+
+static int mii_mgr_write(struct mt7628_eth_dev *priv,
+                        u32 phy_addr, u32 phy_register, u32 write_data)
+{
+       void __iomem *base = priv->eth_sw_base;
+       u32 data;
+       int ret;
+
+       /* Make sure previous write operation is complete */
+       ret = mdio_wait_read(priv, PCR1_WT_DONE, false);
+       if (ret)
+               return ret;
+
+       data = FIELD_PREP(PCR0_WT_DATA, write_data) |
+               FIELD_PREP(PCR0_PHY_REG, phy_register) |
+               FIELD_PREP(PCR0_PHY_ADDR, phy_addr) |
+               PCR0_WT_PHY_CMD;
+       writel(data, base + MT7628_SWITCH_PCR0);
+
+       return mdio_wait_read(priv, PCR1_WT_DONE, true);
+}
+
+static int mt7628_mdio_read(struct mii_dev *bus, int addr, int devad, int reg)
+{
+       u32 val;
+       int ret;
+
+       ret = mii_mgr_read(bus->priv, addr, reg, &val);
+       if (ret)
+               return ret;
+
+       return val;
+}
+
+static int mt7628_mdio_write(struct mii_dev *bus, int addr, int devad, int reg,
+                            u16 value)
+{
+       return mii_mgr_write(bus->priv, addr, reg, value);
+}
+
+static void mt7628_ephy_init(struct mt7628_eth_dev *priv)
+{
+       int i;
+
+       mii_mgr_write(priv, 0, 31, 0x2000);     /* change G2 page */
+       mii_mgr_write(priv, 0, 26, 0x0000);
+
+       for (i = 0; i < 5; i++) {
+               mii_mgr_write(priv, i, 31, 0x8000);     /* change L0 page */
+               mii_mgr_write(priv, i,  0, 0x3100);
+
+               /* EEE disable */
+               mii_mgr_write(priv, i, 30, 0xa000);
+               mii_mgr_write(priv, i, 31, 0xa000);     /* change L2 page */
+               mii_mgr_write(priv, i, 16, 0x0606);
+               mii_mgr_write(priv, i, 23, 0x0f0e);
+               mii_mgr_write(priv, i, 24, 0x1610);
+               mii_mgr_write(priv, i, 30, 0x1f15);
+               mii_mgr_write(priv, i, 28, 0x6111);
+       }
+
+       /* 100Base AOI setting */
+       mii_mgr_write(priv, 0, 31, 0x5000);     /* change G5 page */
+       mii_mgr_write(priv, 0, 19, 0x004a);
+       mii_mgr_write(priv, 0, 20, 0x015a);
+       mii_mgr_write(priv, 0, 21, 0x00ee);
+       mii_mgr_write(priv, 0, 22, 0x0033);
+       mii_mgr_write(priv, 0, 23, 0x020a);
+       mii_mgr_write(priv, 0, 24, 0x0000);
+       mii_mgr_write(priv, 0, 25, 0x024a);
+       mii_mgr_write(priv, 0, 26, 0x035a);
+       mii_mgr_write(priv, 0, 27, 0x02ee);
+       mii_mgr_write(priv, 0, 28, 0x0233);
+       mii_mgr_write(priv, 0, 29, 0x000a);
+       mii_mgr_write(priv, 0, 30, 0x0000);
+
+       /* Fix EPHY idle state abnormal behavior */
+       mii_mgr_write(priv, 0, 31, 0x4000);     /* change G4 page */
+       mii_mgr_write(priv, 0, 29, 0x000d);
+       mii_mgr_write(priv, 0, 30, 0x0500);
+}
+
+static void rt305x_esw_init(struct mt7628_eth_dev *priv)
+{
+       void __iomem *base = priv->eth_sw_base;
+
+       /*
+        * FC_RLS_TH=200, FC_SET_TH=160
+        * DROP_RLS=120, DROP_SET_TH=80
+        */
+       writel(0xc8a07850, base + MT7628_SWITCH_FCT0);
+       writel(0x00000000, base + MT7628_SWITCH_SGC2);
+       writel(0x00405555, base + MT7628_SWITCH_PFC1);
+       writel(0x00007f7f, base + MT7628_SWITCH_POC0);
+       writel(0x00007f7f, base + MT7628_SWITCH_POC2);  /* disable VLAN */
+       writel(0x0002500c, base + MT7628_SWITCH_FCT2);
+       /* hashing algorithm=XOR48, aging interval=300sec */
+       writel(0x0008a301, base + MT7628_SWITCH_SGC);
+       writel(0x02404040, base + MT7628_SWITCH_SOCPC);
+
+       /* Ext PHY Addr=0x1f */
+       writel(0x3f502b28, base + MT7628_SWITCH_FPA1);
+       writel(0x00000000, base + MT7628_SWITCH_FPA);
+       /* 1us cycle number=125 (FE's clock=125Mhz) */
+       writel(0x7d000000, base + MT7628_SWITCH_BMU_CTRL);
+
+       /* Configure analog GPIO setup */
+       regmap_update_bits(priv->sysctrl_regmap, MT7628_AGPIO_CFG_REG,
+                          MT7628_EPHY_P0_DIS, MT7628_EPHY_GPIO_AIO_EN);
+
+       /* Reset PHY */
+       regmap_update_bits(priv->sysctrl_regmap, MT7628_RSTCTRL_REG,
+                          0, RSTCTRL_EPHY_RST);
+       regmap_update_bits(priv->sysctrl_regmap, MT7628_RSTCTRL_REG,
+                          RSTCTRL_EPHY_RST, 0);
+       mdelay(10);
+
+       /* Set P0 EPHY LED mode */
+       regmap_update_bits(priv->sysctrl_regmap, MT7628_GPIO2_MODE_REG,
+                          0x0ffc0ffc, 0x05540554);
+       mdelay(10);
+
+       mt7628_ephy_init(priv);
+}
+
+static void eth_dma_start(struct mt7628_eth_dev *priv)
+{
+       void __iomem *base = priv->base;
+
+       setbits_le32(base + PDMA_GLO_CFG, TX_WB_DDONE | RX_DMA_EN | TX_DMA_EN);
+}
+
+static void eth_dma_stop(struct mt7628_eth_dev *priv)
+{
+       void __iomem *base = priv->base;
+       int ret;
+
+       clrbits_le32(base + PDMA_GLO_CFG, TX_WB_DDONE | RX_DMA_EN | TX_DMA_EN);
+
+       /* Wait for DMA to stop */
+       ret = wait_for_bit_le32(base + PDMA_GLO_CFG,
+                               RX_DMA_BUSY | TX_DMA_BUSY, false,
+                               CONFIG_DMA_STOP_TIMEOUT, false);
+       if (ret)
+               printf("DMA stop timeout error!\n");
+}
+
+static int mt7628_eth_write_hwaddr(struct udevice *dev)
+{
+       struct mt7628_eth_dev *priv = dev_get_priv(dev);
+       void __iomem *base = priv->base;
+       u8 *addr = ((struct eth_pdata *)dev_get_platdata(dev))->enetaddr;
+       u32 val;
+
+       /* Set MAC address. */
+       val = addr[0];
+       val = (val << 8) | addr[1];
+       writel(val, base + SDM_MAC_ADRH);
+
+       val = addr[2];
+       val = (val << 8) | addr[3];
+       val = (val << 8) | addr[4];
+       val = (val << 8) | addr[5];
+       writel(val, base + SDM_MAC_ADRL);
+
+       return 0;
+}
+
+static int mt7628_eth_send(struct udevice *dev, void *packet, int length)
+{
+       struct mt7628_eth_dev *priv = dev_get_priv(dev);
+       void __iomem *base = priv->base;
+       int ret;
+       int idx;
+       int i;
+
+       idx = priv->tx_dma_idx;
+
+       /* Pad message to a minimum length */
+       if (length < PADDING_LENGTH) {
+               char *p = (char *)packet;
+
+               for (i = 0; i < PADDING_LENGTH - length; i++)
+                       p[length + i] = 0;
+               length = PADDING_LENGTH;
+       }
+
+       /* Check if buffer is ready for next TX DMA */
+       ret = wait_for_bit_le32(&priv->tx_ring[idx].txd2, TX_DMA_DONE, true,
+                               CONFIG_TX_DMA_TIMEOUT, false);
+       if (ret) {
+               printf("TX: DMA still busy on buffer %d\n", idx);
+               return ret;
+       }
+
+       flush_dcache_range((u32)packet, (u32)packet + length);
+
+       priv->tx_ring[idx].txd1 = CPHYSADDR(packet);
+       priv->tx_ring[idx].txd2 &= ~TX_DMA_PLEN0;
+       priv->tx_ring[idx].txd2 |= FIELD_PREP(TX_DMA_PLEN0, length);
+       priv->tx_ring[idx].txd2 &= ~TX_DMA_DONE;
+
+       idx = (idx + 1) % NUM_TX_DESC;
+
+       /* Make sure the writes executed at this place */
+       wmb();
+       writel(idx, base + TX_CTX_IDX0);
+
+       priv->tx_dma_idx = idx;
+
+       return 0;
+}
+
+static int mt7628_eth_recv(struct udevice *dev, int flags, uchar **packetp)
+{
+       struct mt7628_eth_dev *priv = dev_get_priv(dev);
+       u32 rxd_info;
+       int length;
+       int idx;
+
+       idx = priv->rx_dma_idx;
+
+       rxd_info = priv->rx_ring[idx].rxd2;
+       if ((rxd_info & RX_DMA_DONE) == 0)
+               return -EAGAIN;
+
+       length = FIELD_GET(RX_DMA_PLEN0, priv->rx_ring[idx].rxd2);
+       if (length == 0 || length > MTK_QDMA_PAGE_SIZE) {
+               printf("%s: invalid length (%d bytes)\n", __func__, length);
+               return -EIO;
+       }
+
+       *packetp = priv->rx_buf[idx];
+       invalidate_dcache_range((u32)*packetp, (u32)*packetp + length);
+
+       priv->rx_ring[idx].rxd4 = 0;
+       priv->rx_ring[idx].rxd2 = RX_DMA_LSO;
+
+       /* Make sure the writes executed at this place */
+       wmb();
+
+       return length;
+}
+
+static int mt7628_eth_free_pkt(struct udevice *dev, uchar *packet, int length)
+{
+       struct mt7628_eth_dev *priv = dev_get_priv(dev);
+       void __iomem *base = priv->base;
+       int idx;
+
+       idx = priv->rx_dma_idx;
+
+       /* Move point to next RXD which wants to alloc */
+       writel(idx, base + RX_CALC_IDX0);
+
+       /* Update to Next packet point that was received */
+       idx = (idx + 1) % NUM_RX_DESC;
+
+       priv->rx_dma_idx = idx;
+
+       return 0;
+}
+
+static int phy_link_up(struct mt7628_eth_dev *priv)
+{
+       u32 val;
+
+       mii_mgr_read(priv, 0x00, MII_BMSR, &val);
+       return !!(val & BMSR_LSTATUS);
+}
+
+static int mt7628_eth_start(struct udevice *dev)
+{
+       struct mt7628_eth_dev *priv = dev_get_priv(dev);
+       void __iomem *base = priv->base;
+       uchar packet[MTK_QDMA_PAGE_SIZE];
+       uchar *packetp;
+       int i;
+
+       for (i = 0; i < NUM_RX_DESC; i++) {
+               memset((void *)&priv->rx_ring[i], 0, sizeof(priv->rx_ring[0]));
+               priv->rx_ring[i].rxd2 |= RX_DMA_LSO;
+               priv->rx_ring[i].rxd1 = CPHYSADDR(priv->rx_buf[i]);
+       }
+
+       for (i = 0; i < NUM_TX_DESC; i++) {
+               memset((void *)&priv->tx_ring[i], 0, sizeof(priv->tx_ring[0]));
+               priv->tx_ring[i].txd2 = TX_DMA_LS0 | TX_DMA_DONE;
+               priv->tx_ring[i].txd4 = FIELD_PREP(TX_DMA_PN, 1);
+       }
+
+       priv->rx_dma_idx = 0;
+       priv->tx_dma_idx = 0;
+
+       /* Make sure the writes executed at this place */
+       wmb();
+
+       /* disable delay interrupt */
+       writel(0, base + DLY_INT_CFG);
+
+       clrbits_le32(base + PDMA_GLO_CFG, 0xffff0000);
+
+       /* Tell the adapter where the TX/RX rings are located. */
+       writel(CPHYSADDR(&priv->rx_ring[0]), base + RX_BASE_PTR0);
+       writel(CPHYSADDR((u32)&priv->tx_ring[0]), base + TX_BASE_PTR0);
+
+       writel(NUM_RX_DESC, base + RX_MAX_CNT0);
+       writel(NUM_TX_DESC, base + TX_MAX_CNT0);
+
+       writel(priv->tx_dma_idx, base + TX_CTX_IDX0);
+       writel(RST_DTX_IDX0, base + PDMA_RST_IDX);
+
+       writel(NUM_RX_DESC - 1, base + RX_CALC_IDX0);
+       writel(RST_DRX_IDX0, base + PDMA_RST_IDX);
+
+       /* Make sure the writes executed at this place */
+       wmb();
+       eth_dma_start(priv);
+
+       /* Check if link is not up yet */
+       if (!phy_link_up(priv)) {
+               /* Wait for link to come up */
+
+               printf("Waiting for link to come up .");
+               for (i = 0; i < (LINK_TIMEOUT / LINK_DELAY_TIME); i++) {
+                       mdelay(LINK_DELAY_TIME);
+                       if (phy_link_up(priv)) {
+                               mdelay(100);    /* Ensure all is ready */
+                               break;
+                       }
+
+                       printf(".");
+               }
+
+               if (phy_link_up(priv))
+                       printf(" done\n");
+               else
+                       printf(" timeout! Trying anyways\n");
+       }
+
+       /*
+        * The integrated switch seems to queue some received ethernet
+        * packets in some FIFO. Lets read the already queued packets
+        * out by using the receive routine, so that these old messages
+        * are dropped before the new xfer starts.
+        */
+       packetp = &packet[0];
+       while (mt7628_eth_recv(dev, 0, &packetp) != -EAGAIN)
+               mt7628_eth_free_pkt(dev, packetp, 0);
+
+       return 0;
+}
+
+static void mt7628_eth_stop(struct udevice *dev)
+{
+       struct mt7628_eth_dev *priv = dev_get_priv(dev);
+
+       eth_dma_stop(priv);
+}
+
+static int mt7628_eth_probe(struct udevice *dev)
+{
+       struct mt7628_eth_dev *priv = dev_get_priv(dev);
+       struct udevice *syscon;
+       struct mii_dev *bus;
+       int ret;
+       int i;
+
+       /* Save frame-engine base address for later use */
+       priv->base = dev_remap_addr_index(dev, 0);
+       if (IS_ERR(priv->base))
+               return PTR_ERR(priv->base);
+
+       /* Save switch base address for later use */
+       priv->eth_sw_base = dev_remap_addr_index(dev, 1);
+       if (IS_ERR(priv->eth_sw_base))
+               return PTR_ERR(priv->eth_sw_base);
+
+       /* Get system controller regmap */
+       ret = uclass_get_device_by_phandle(UCLASS_SYSCON, dev,
+                                          "syscon", &syscon);
+       if (ret) {
+               pr_err("unable to find syscon device\n");
+               return ret;
+       }
+
+       priv->sysctrl_regmap = syscon_get_regmap(syscon);
+       if (!priv->sysctrl_regmap) {
+               pr_err("unable to find regmap\n");
+               return -ENODEV;
+       }
+
+       /* Put rx and tx rings into KSEG1 area (uncached) */
+       priv->tx_ring = (struct fe_tx_dma *)
+               KSEG1ADDR(memalign(ARCH_DMA_MINALIGN,
+                                  sizeof(*priv->tx_ring) * NUM_TX_DESC));
+       priv->rx_ring = (struct fe_rx_dma *)
+               KSEG1ADDR(memalign(ARCH_DMA_MINALIGN,
+                                  sizeof(*priv->rx_ring) * NUM_RX_DESC));
+
+       for (i = 0; i < NUM_RX_DESC; i++)
+               priv->rx_buf[i] = memalign(PKTALIGN, MTK_QDMA_PAGE_SIZE);
+
+       bus = mdio_alloc();
+       if (!bus) {
+               printf("Failed to allocate MDIO bus\n");
+               return -ENOMEM;
+       }
+
+       bus->read = mt7628_mdio_read;
+       bus->write = mt7628_mdio_write;
+       snprintf(bus->name, sizeof(bus->name), dev->name);
+       bus->priv = (void *)priv;
+
+       ret = mdio_register(bus);
+       if (ret)
+               return ret;
+
+       /* Switch configuration */
+       rt305x_esw_init(priv);
+
+       return 0;
+}
+
+static const struct eth_ops mt7628_eth_ops = {
+       .start          = mt7628_eth_start,
+       .send           = mt7628_eth_send,
+       .recv           = mt7628_eth_recv,
+       .free_pkt       = mt7628_eth_free_pkt,
+       .stop           = mt7628_eth_stop,
+       .write_hwaddr   = mt7628_eth_write_hwaddr,
+};
+
+static const struct udevice_id mt7628_eth_ids[] = {
+       { .compatible = "mediatek,mt7628-eth" },
+       { }
+};
+
+U_BOOT_DRIVER(mt7628_eth) = {
+       .name   = "mt7628_eth",
+       .id     = UCLASS_ETH,
+       .of_match = mt7628_eth_ids,
+       .probe  = mt7628_eth_probe,
+       .ops    = &mt7628_eth_ops,
+       .priv_auto_alloc_size = sizeof(struct mt7628_eth_dev),
+       .platdata_auto_alloc_size = sizeof(struct eth_pdata),
+};
index 6f102f134edb7e95c60f4b1e8a886c1b8e11b7d1..72bbda5469591fb3b88fe45ba1879e44c04ab5a1 100644 (file)
 
 #include <miiphy.h>
 #include <bitfield.h>
+#include <time.h>
+#include <linux/delay.h>
 
 /* Microsemi PHY ID's */
 #define PHY_ID_VSC8530                  0x00070560
 #define PHY_ID_VSC8531                  0x00070570
 #define PHY_ID_VSC8540                  0x00070760
 #define PHY_ID_VSC8541                  0x00070770
+#define PHY_ID_VSC8574                 0x000704a0
+#define PHY_ID_VSC8584                  0x000707c0
 
 /* Microsemi VSC85xx PHY Register Pages */
 #define MSCC_EXT_PAGE_ACCESS            31     /* Page Access Register */
 #define MSCC_PHY_PAGE_TEST             0x2A30 /* TEST Page registers */
 #define MSCC_PHY_PAGE_TR               0x52B5 /* Token Ring Page registers */
 
+/* Std Page Register 18 */
+#define MSCC_PHY_BYPASS_CONTROL           18
+#define PARALLEL_DET_IGNORE_ADVERTISED    BIT(3)
+
+/* Std Page Register 22 */
+#define MSCC_PHY_EXT_CNTL_STATUS          22
+#define SMI_BROADCAST_WR_EN              BIT(0)
+
+/* Std Page Register 24 */
+#define MSCC_PHY_EXT_PHY_CNTL_2           24
+
 /* Std Page Register 28 - PHY AUX Control/Status */
 #define MIIM_AUX_CNTRL_STAT_REG                28
 #define MIIM_AUX_CNTRL_STAT_ACTIPHY_TO (0x0004)
 #define MAC_IF_SELECTION_RGMII         (2)
 #define MAC_IF_SELECTION_POS           (11)
 #define MAC_IF_SELECTION_WIDTH         (2)
+#define VSC8584_MAC_IF_SELECTION_MASK     BIT(12)
+#define VSC8584_MAC_IF_SELECTION_SGMII    0
+#define VSC8584_MAC_IF_SELECTION_1000BASEX 1
+#define VSC8584_MAC_IF_SELECTION_POS      12
+#define MEDIA_OP_MODE_MASK               GENMASK(10, 8)
+#define MEDIA_OP_MODE_COPPER             0
+#define MEDIA_OP_MODE_SERDES             1
+#define MEDIA_OP_MODE_1000BASEX                  2
+#define MEDIA_OP_MODE_100BASEFX                  3
+#define MEDIA_OP_MODE_AMS_COPPER_SERDES          5
+#define MEDIA_OP_MODE_AMS_COPPER_1000BASEX     6
+#define MEDIA_OP_MODE_AMS_COPPER_100BASEFX     7
+#define MEDIA_OP_MODE_POS                8
+
+/* Extended Page 1 Register 20E1 */
+#define MSCC_PHY_ACTIPHY_CNTL            20
+#define PHY_ADDR_REVERSED                BIT(9)
+
+/* Extended Page 1 Register 23E1 */
+
+#define MSCC_PHY_EXT_PHY_CNTL_4           23
+#define PHY_CNTL_4_ADDR_POS              11
+
+/* Extended Page 1 Register 25E1 */
+#define MSCC_PHY_VERIPHY_CNTL_2                25
+
+/* Extended Page 1 Register 26E1 */
+#define MSCC_PHY_VERIPHY_CNTL_3                26
+
+/* Extended Page 2 Register 16E2 */
+#define MSCC_PHY_CU_PMD_TX_CNTL         16
 
 /* Extended Page 2 Register 20E2 */
 #define MSCC_PHY_RGMII_CNTL_REG                20
 #define RMII_CLK_OUT_ENABLE_WIDTH      (1)
 #define RMII_CLK_OUT_ENABLE_MASK       (0x10)
 
+/* Extended Page 3 Register 22E3 */
+#define MSCC_PHY_SERDES_TX_CRC_ERR_CNT 22
+
+/* Extended page GPIO register 00G */
+#define MSCC_DW8051_CNTL_STATUS                0
+#define MICRO_NSOFT_RESET              BIT(15)
+#define RUN_FROM_INT_ROM               BIT(14)
+#define AUTOINC_ADDR                   BIT(13)
+#define PATCH_RAM_CLK                  BIT(12)
+#define MICRO_PATCH_EN                 BIT(7)
+#define DW8051_CLK_EN                  BIT(4)
+#define MICRO_CLK_EN                   BIT(3)
+#define MICRO_CLK_DIVIDE(x)            ((x) >> 1)
+#define MSCC_DW8051_VLD_MASK           0xf1ff
+
+/* Extended page GPIO register 09G */
+#define MSCC_TRAP_ROM_ADDR(x)          ((x) * 2 + 1)
+#define MSCC_TRAP_ROM_ADDR_SERDES_INIT 0x3eb7
+
+/* Extended page GPIO register 10G */
+#define MSCC_PATCH_RAM_ADDR(x)         (((x) + 1) * 2)
+#define MSCC_PATCH_RAM_ADDR_SERDES_INIT        0x4012
+
+/* Extended page GPIO register 11G */
+#define MSCC_INT_MEM_ADDR              11
+
+/* Extended page GPIO register 12G */
+#define MSCC_INT_MEM_CNTL              12
+#define READ_SFR                       (BIT(14) | BIT(13))
+#define READ_PRAM                      BIT(14)
+#define READ_ROM                       BIT(13)
+#define READ_RAM                       (0x00 << 13)
+#define INT_MEM_WRITE_EN               BIT(12)
+#define EN_PATCH_RAM_TRAP_ADDR(x)      BIT((x) + 7)
+#define INT_MEM_DATA_M                 GENMASK(7, 0)
+#define INT_MEM_DATA(x)                        (INT_MEM_DATA_M & (x))
+
+/* Extended page GPIO register 18G */
+#define MSCC_PHY_PROC_CMD                18
+#define PROC_CMD_NCOMPLETED              BIT(15)
+#define PROC_CMD_FAILED                          BIT(14)
+#define PROC_CMD_SGMII_PORT(x)           ((x) << 8)
+#define PROC_CMD_FIBER_PORT(x)           BIT(8 + (x) % 4)
+#define PROC_CMD_QSGMII_PORT             (BIT(11) | BIT(10))
+#define PROC_CMD_RST_CONF_PORT           BIT(7)
+#define PROC_CMD_RECONF_PORT             (0 << 7)
+#define PROC_CMD_READ_MOD_WRITE_PORT     BIT(6)
+#define PROC_CMD_WRITE                   BIT(6)
+#define PROC_CMD_READ                    (0 << 6)
+#define PROC_CMD_FIBER_DISABLE           BIT(5)
+#define PROC_CMD_FIBER_100BASE_FX        BIT(4)
+#define PROC_CMD_FIBER_1000BASE_X        (0 << 4)
+#define PROC_CMD_SGMII_MAC               (BIT(5) | BIT(4))
+#define PROC_CMD_QSGMII_MAC              BIT(5)
+#define PROC_CMD_NO_MAC_CONF             (0x00 << 4)
+#define PROC_CMD_1588_DEFAULT_INIT       BIT(4)
+#define PROC_CMD_NOP                     GENMASK(3, 0)
+#define PROC_CMD_PHY_INIT                (BIT(3) | BIT(1))
+#define PROC_CMD_CRC16                   BIT(3)
+#define PROC_CMD_FIBER_MEDIA_CONF        BIT(0)
+#define PROC_CMD_MCB_ACCESS_MAC_CONF     (0x0000 << 0)
+#define PROC_CMD_NCOMPLETED_TIMEOUT_MS    500
+
+/* Extended page GPIO register 19G */
+#define MSCC_PHY_MAC_CFG_FASTLINK        19
+#define MAC_CFG_MASK                     GENMASK(15, 14)
+#define MAC_CFG_SGMII                    (0x00 << 14)
+#define MAC_CFG_QSGMII                   BIT(14)
+
+/* Test Registers */
+#define MSCC_PHY_TEST_PAGE_5           5
+
+#define MSCC_PHY_TEST_PAGE_8           8
+#define TR_CLK_DISABLE                 BIT(15)
+
+#define MSCC_PHY_TEST_PAGE_9           9
+#define MSCC_PHY_TEST_PAGE_20          20
+#define MSCC_PHY_TEST_PAGE_24          24
+
 /* Token Ring Page 0x52B5 Registers */
 #define MSCC_PHY_REG_TR_ADDR_16                16
 #define MSCC_PHY_REG_TR_DATA_17                17
 #define MSCC_PHY_RESET_TIMEOUT         (100)
 #define MSCC_PHY_MICRO_TIMEOUT         (500)
 
+#define VSC8584_REVB           0x0001
+#define MSCC_DEV_REV_MASK      GENMASK(3, 0)
+
+#define MSCC_VSC8574_REVB_INT8051_FW_START_ADDR 0x4000
+#define MSCC_VSC8574_REVB_INT8051_FW_CRC       0x29e8
+
+#define MSCC_VSC8584_REVB_INT8051_FW_START_ADDR        0xe800
+#define MSCC_VSC8584_REVB_INT8051_FW_CRC       0xfb48
+
 /* RGMII/GMII Clock Delay (Skew) Options */ enum vsc_phy_rgmii_skew {
        VSC_PHY_RGMII_DELAY_200_PS,
        VSC_PHY_RGMII_DELAY_800_PS,
@@ -133,6 +267,743 @@ vsc_phy_clk_slew {
        VSC_PHY_CLK_SLEW_RATE_7,
 };
 
+struct vsc85xx_priv {
+       int (*config_pre)(struct phy_device *phydev);
+};
+
+static void vsc8584_csr_write(struct mii_dev *bus, int phy0, u16 addr, u32 val)
+{
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_REG_TR_DATA_18,
+                  val >> 16);
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_REG_TR_DATA_17,
+                  val & GENMASK(15, 0));
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_REG_TR_ADDR_16,
+                  MSCC_PHY_TR_16_WRITE | addr);
+}
+
+static int vsc8584_cmd(struct mii_dev *bus, int phy, u16 val)
+{
+       unsigned long deadline;
+       u16 reg_val;
+
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                  MSCC_PHY_PAGE_GPIO);
+
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_PHY_PROC_CMD,
+                  PROC_CMD_NCOMPLETED | val);
+
+       deadline = timer_get_us() + PROC_CMD_NCOMPLETED_TIMEOUT_MS * 1000;
+       do {
+               reg_val = bus->read(bus, phy, MDIO_DEVAD_NONE,
+                                   MSCC_PHY_PROC_CMD);
+       } while (timer_get_us() <= deadline &&
+                (reg_val & PROC_CMD_NCOMPLETED) &&
+                !(reg_val & PROC_CMD_FAILED));
+
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                  MSCC_PHY_PAGE_STD);
+
+       if (reg_val & PROC_CMD_FAILED)
+               return -EIO;
+       if (reg_val & PROC_CMD_NCOMPLETED)
+               return -ETIMEDOUT;
+
+       return 0;
+}
+
+static int vsc8584_micro_deassert_reset(struct mii_dev *bus, int phy,
+                                       bool patch_en)
+{
+       u32 enable, release;
+
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                  MSCC_PHY_PAGE_GPIO);
+
+       enable = RUN_FROM_INT_ROM | MICRO_CLK_EN | DW8051_CLK_EN;
+       release = MICRO_NSOFT_RESET | RUN_FROM_INT_ROM | DW8051_CLK_EN |
+               MICRO_CLK_EN;
+
+       if (patch_en) {
+               enable |= MICRO_PATCH_EN;
+               release |= MICRO_PATCH_EN;
+
+               /* Clear all patches */
+               bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_INT_MEM_CNTL,
+                          READ_RAM);
+       }
+
+       /*
+        * Enable 8051 Micro clock; CLEAR/SET patch present; disable PRAM clock
+        * override and addr. auto-incr; operate at 125 MHz
+        */
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_DW8051_CNTL_STATUS, enable);
+       /* Release 8051 Micro SW reset */
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_DW8051_CNTL_STATUS, release);
+
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                  MSCC_PHY_PAGE_STD);
+
+       return 0;
+}
+
+static int vsc8584_micro_assert_reset(struct mii_dev *bus, int phy)
+{
+       int ret;
+       u16 reg;
+
+       ret = vsc8584_cmd(bus, phy, PROC_CMD_NOP);
+       if (ret)
+               return ret;
+
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                  MSCC_PHY_PAGE_GPIO);
+
+       reg = bus->read(bus, phy, MDIO_DEVAD_NONE, MSCC_INT_MEM_CNTL);
+       reg &= ~EN_PATCH_RAM_TRAP_ADDR(4);
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_INT_MEM_CNTL, reg);
+
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_TRAP_ROM_ADDR(4), 0x005b);
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_PATCH_RAM_ADDR(4), 0x005b);
+
+       reg = bus->read(bus, phy, MDIO_DEVAD_NONE, MSCC_INT_MEM_CNTL);
+       reg |= EN_PATCH_RAM_TRAP_ADDR(4);
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_INT_MEM_CNTL, reg);
+
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_PHY_PROC_CMD, PROC_CMD_NOP);
+
+       reg = bus->read(bus, phy, MDIO_DEVAD_NONE, MSCC_DW8051_CNTL_STATUS);
+       reg &= ~MICRO_NSOFT_RESET;
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_DW8051_CNTL_STATUS, reg);
+
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_PHY_PROC_CMD,
+                  PROC_CMD_MCB_ACCESS_MAC_CONF | PROC_CMD_SGMII_PORT(0) |
+                  PROC_CMD_NO_MAC_CONF | PROC_CMD_READ);
+
+       reg = bus->read(bus, phy, MDIO_DEVAD_NONE, MSCC_INT_MEM_CNTL);
+       reg &= ~EN_PATCH_RAM_TRAP_ADDR(4);
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_INT_MEM_CNTL, reg);
+
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                  MSCC_PHY_PAGE_STD);
+
+       return 0;
+}
+
+static const u8 fw_patch_vsc8574[] = {
+       0x46, 0x4a, 0x02, 0x43, 0x37, 0x02, 0x46, 0x26, 0x02, 0x46, 0x77, 0x02,
+       0x45, 0x60, 0x02, 0x45, 0xaf, 0xed, 0xff, 0xe5, 0xfc, 0x54, 0x38, 0x64,
+       0x20, 0x70, 0x08, 0x65, 0xff, 0x70, 0x04, 0xed, 0x44, 0x80, 0xff, 0x22,
+       0x8f, 0x19, 0x7b, 0xbb, 0x7d, 0x0e, 0x7f, 0x04, 0x12, 0x3d, 0xd7, 0xef,
+       0x4e, 0x60, 0x03, 0x02, 0x41, 0xf9, 0xe4, 0xf5, 0x1a, 0x74, 0x01, 0x7e,
+       0x00, 0xa8, 0x1a, 0x08, 0x80, 0x05, 0xc3, 0x33, 0xce, 0x33, 0xce, 0xd8,
+       0xf9, 0xff, 0xef, 0x55, 0x19, 0x70, 0x03, 0x02, 0x41, 0xed, 0x85, 0x1a,
+       0xfb, 0x7b, 0xbb, 0xe4, 0xfd, 0xff, 0x12, 0x3d, 0xd7, 0xef, 0x4e, 0x60,
+       0x03, 0x02, 0x41, 0xed, 0xe5, 0x1a, 0x54, 0x02, 0x75, 0x1d, 0x00, 0x25,
+       0xe0, 0x25, 0xe0, 0xf5, 0x1c, 0xe4, 0x78, 0xc5, 0xf6, 0xd2, 0x0a, 0x12,
+       0x41, 0xfa, 0x7b, 0xff, 0x7d, 0x12, 0x7f, 0x07, 0x12, 0x3d, 0xd7, 0xef,
+       0x4e, 0x60, 0x03, 0x02, 0x41, 0xe7, 0xc2, 0x0a, 0x74, 0xc7, 0x25, 0x1a,
+       0xf9, 0x74, 0xe7, 0x25, 0x1a, 0xf8, 0xe6, 0x27, 0xf5, 0x1b, 0xe5, 0x1d,
+       0x24, 0x5b, 0x12, 0x45, 0xea, 0x12, 0x3e, 0xda, 0x7b, 0xfc, 0x7d, 0x11,
+       0x7f, 0x07, 0x12, 0x3d, 0xd7, 0x78, 0xcc, 0xef, 0xf6, 0x78, 0xc1, 0xe6,
+       0xfe, 0xef, 0xd3, 0x9e, 0x40, 0x06, 0x78, 0xcc, 0xe6, 0x78, 0xc1, 0xf6,
+       0x12, 0x41, 0xfa, 0x7b, 0xec, 0x7d, 0x12, 0x7f, 0x07, 0x12, 0x3d, 0xd7,
+       0x78, 0xcb, 0xef, 0xf6, 0xbf, 0x07, 0x06, 0x78, 0xc3, 0x76, 0x1a, 0x80,
+       0x1f, 0x78, 0xc5, 0xe6, 0xff, 0x60, 0x0f, 0xc3, 0xe5, 0x1b, 0x9f, 0xff,
+       0x78, 0xcb, 0xe6, 0x85, 0x1b, 0xf0, 0xa4, 0x2f, 0x80, 0x07, 0x78, 0xcb,
+       0xe6, 0x85, 0x1b, 0xf0, 0xa4, 0x78, 0xc3, 0xf6, 0xe4, 0x78, 0xc2, 0xf6,
+       0x78, 0xc2, 0xe6, 0xff, 0xc3, 0x08, 0x96, 0x40, 0x03, 0x02, 0x41, 0xd1,
+       0xef, 0x54, 0x03, 0x60, 0x33, 0x14, 0x60, 0x46, 0x24, 0xfe, 0x60, 0x42,
+       0x04, 0x70, 0x4b, 0xef, 0x24, 0x02, 0xff, 0xe4, 0x33, 0xfe, 0xef, 0x78,
+       0x02, 0xce, 0xa2, 0xe7, 0x13, 0xce, 0x13, 0xd8, 0xf8, 0xff, 0xe5, 0x1d,
+       0x24, 0x5c, 0xcd, 0xe5, 0x1c, 0x34, 0xf0, 0xcd, 0x2f, 0xff, 0xed, 0x3e,
+       0xfe, 0x12, 0x46, 0x0d, 0x7d, 0x11, 0x80, 0x0b, 0x78, 0xc2, 0xe6, 0x70,
+       0x04, 0x7d, 0x11, 0x80, 0x02, 0x7d, 0x12, 0x7f, 0x07, 0x12, 0x3e, 0x9a,
+       0x8e, 0x1e, 0x8f, 0x1f, 0x80, 0x03, 0xe5, 0x1e, 0xff, 0x78, 0xc5, 0xe6,
+       0x06, 0x24, 0xcd, 0xf8, 0xa6, 0x07, 0x78, 0xc2, 0x06, 0xe6, 0xb4, 0x1a,
+       0x0a, 0xe5, 0x1d, 0x24, 0x5c, 0x12, 0x45, 0xea, 0x12, 0x3e, 0xda, 0x78,
+       0xc5, 0xe6, 0x65, 0x1b, 0x70, 0x82, 0x75, 0xdb, 0x20, 0x75, 0xdb, 0x28,
+       0x12, 0x46, 0x02, 0x12, 0x46, 0x02, 0xe5, 0x1a, 0x12, 0x45, 0xf5, 0xe5,
+       0x1a, 0xc3, 0x13, 0x12, 0x45, 0xf5, 0x78, 0xc5, 0x16, 0xe6, 0x24, 0xcd,
+       0xf8, 0xe6, 0xff, 0x7e, 0x08, 0x1e, 0xef, 0xa8, 0x06, 0x08, 0x80, 0x02,
+       0xc3, 0x13, 0xd8, 0xfc, 0xfd, 0xc4, 0x33, 0x54, 0xe0, 0xf5, 0xdb, 0xef,
+       0xa8, 0x06, 0x08, 0x80, 0x02, 0xc3, 0x13, 0xd8, 0xfc, 0xfd, 0xc4, 0x33,
+       0x54, 0xe0, 0x44, 0x08, 0xf5, 0xdb, 0xee, 0x70, 0xd8, 0x78, 0xc5, 0xe6,
+       0x70, 0xc8, 0x75, 0xdb, 0x10, 0x02, 0x40, 0xfd, 0x78, 0xc2, 0xe6, 0xc3,
+       0x94, 0x17, 0x50, 0x0e, 0xe5, 0x1d, 0x24, 0x62, 0x12, 0x42, 0x08, 0xe5,
+       0x1d, 0x24, 0x5c, 0x12, 0x42, 0x08, 0x20, 0x0a, 0x03, 0x02, 0x40, 0x76,
+       0x05, 0x1a, 0xe5, 0x1a, 0xc3, 0x94, 0x04, 0x50, 0x03, 0x02, 0x40, 0x3a,
+       0x22, 0xe5, 0x1d, 0x24, 0x5c, 0xff, 0xe5, 0x1c, 0x34, 0xf0, 0xfe, 0x12,
+       0x46, 0x0d, 0x22, 0xff, 0xe5, 0x1c, 0x34, 0xf0, 0xfe, 0x12, 0x46, 0x0d,
+       0x22, 0xe4, 0xf5, 0x19, 0x12, 0x46, 0x43, 0x20, 0xe7, 0x1e, 0x7b, 0xfe,
+       0x12, 0x42, 0xf9, 0xef, 0xc4, 0x33, 0x33, 0x54, 0xc0, 0xff, 0xc0, 0x07,
+       0x7b, 0x54, 0x12, 0x42, 0xf9, 0xd0, 0xe0, 0x4f, 0xff, 0x74, 0x2a, 0x25,
+       0x19, 0xf8, 0xa6, 0x07, 0x12, 0x46, 0x43, 0x20, 0xe7, 0x03, 0x02, 0x42,
+       0xdf, 0x54, 0x03, 0x64, 0x03, 0x70, 0x03, 0x02, 0x42, 0xcf, 0x7b, 0xcb,
+       0x12, 0x43, 0x2c, 0x8f, 0xfb, 0x7b, 0x30, 0x7d, 0x03, 0xe4, 0xff, 0x12,
+       0x3d, 0xd7, 0xc3, 0xef, 0x94, 0x02, 0xee, 0x94, 0x00, 0x50, 0x2a, 0x12,
+       0x42, 0xec, 0xef, 0x4e, 0x70, 0x23, 0x12, 0x43, 0x04, 0x60, 0x0a, 0x12,
+       0x43, 0x12, 0x70, 0x0c, 0x12, 0x43, 0x1f, 0x70, 0x07, 0x12, 0x46, 0x39,
+       0x7b, 0x03, 0x80, 0x07, 0x12, 0x46, 0x39, 0x12, 0x46, 0x43, 0xfb, 0x7a,
+       0x00, 0x7d, 0x54, 0x80, 0x3e, 0x12, 0x42, 0xec, 0xef, 0x4e, 0x70, 0x24,
+       0x12, 0x43, 0x04, 0x60, 0x0a, 0x12, 0x43, 0x12, 0x70, 0x0f, 0x12, 0x43,
+       0x1f, 0x70, 0x0a, 0x12, 0x46, 0x39, 0xe4, 0xfb, 0xfa, 0x7d, 0xee, 0x80,
+       0x1e, 0x12, 0x46, 0x39, 0x7b, 0x01, 0x7a, 0x00, 0x7d, 0xee, 0x80, 0x13,
+       0x12, 0x46, 0x39, 0x12, 0x46, 0x43, 0x54, 0x40, 0xfe, 0xc4, 0x13, 0x13,
+       0x54, 0x03, 0xfb, 0x7a, 0x00, 0x7d, 0xee, 0x12, 0x38, 0xbd, 0x7b, 0xff,
+       0x12, 0x43, 0x2c, 0xef, 0x4e, 0x70, 0x07, 0x74, 0x2a, 0x25, 0x19, 0xf8,
+       0xe4, 0xf6, 0x05, 0x19, 0xe5, 0x19, 0xc3, 0x94, 0x02, 0x50, 0x03, 0x02,
+       0x42, 0x15, 0x22, 0xe5, 0x19, 0x24, 0x17, 0xfd, 0x7b, 0x20, 0x7f, 0x04,
+       0x12, 0x3d, 0xd7, 0x22, 0xe5, 0x19, 0x24, 0x17, 0xfd, 0x7f, 0x04, 0x12,
+       0x3d, 0xd7, 0x22, 0x7b, 0x22, 0x7d, 0x18, 0x7f, 0x06, 0x12, 0x3d, 0xd7,
+       0xef, 0x64, 0x01, 0x4e, 0x22, 0x7d, 0x1c, 0xe4, 0xff, 0x12, 0x3e, 0x9a,
+       0xef, 0x54, 0x1b, 0x64, 0x0a, 0x22, 0x7b, 0xcc, 0x7d, 0x10, 0xff, 0x12,
+       0x3d, 0xd7, 0xef, 0x64, 0x01, 0x4e, 0x22, 0xe5, 0x19, 0x24, 0x17, 0xfd,
+       0x7f, 0x04, 0x12, 0x3d, 0xd7, 0x22, 0xd2, 0x08, 0x75, 0xfb, 0x03, 0xab,
+       0x7e, 0xaa, 0x7d, 0x7d, 0x19, 0x7f, 0x03, 0x12, 0x3e, 0xda, 0xe5, 0x7e,
+       0x54, 0x0f, 0x24, 0xf3, 0x60, 0x03, 0x02, 0x43, 0xe9, 0x12, 0x46, 0x5a,
+       0x12, 0x46, 0x61, 0xd8, 0xfb, 0xff, 0x20, 0xe2, 0x35, 0x13, 0x92, 0x0c,
+       0xef, 0xa2, 0xe1, 0x92, 0x0b, 0x30, 0x0c, 0x2a, 0xe4, 0xf5, 0x10, 0x7b,
+       0xfe, 0x12, 0x43, 0xff, 0xef, 0xc4, 0x33, 0x33, 0x54, 0xc0, 0xff, 0xc0,
+       0x07, 0x7b, 0x54, 0x12, 0x43, 0xff, 0xd0, 0xe0, 0x4f, 0xff, 0x74, 0x2a,
+       0x25, 0x10, 0xf8, 0xa6, 0x07, 0x05, 0x10, 0xe5, 0x10, 0xc3, 0x94, 0x02,
+       0x40, 0xd9, 0x12, 0x46, 0x5a, 0x12, 0x46, 0x61, 0xd8, 0xfb, 0x54, 0x05,
+       0x64, 0x04, 0x70, 0x27, 0x78, 0xc4, 0xe6, 0x78, 0xc6, 0xf6, 0xe5, 0x7d,
+       0xff, 0x33, 0x95, 0xe0, 0xef, 0x54, 0x0f, 0x78, 0xc4, 0xf6, 0x12, 0x44,
+       0x0a, 0x20, 0x0c, 0x0c, 0x12, 0x46, 0x5a, 0x12, 0x46, 0x61, 0xd8, 0xfb,
+       0x13, 0x92, 0x0d, 0x22, 0xc2, 0x0d, 0x22, 0x12, 0x46, 0x5a, 0x12, 0x46,
+       0x61, 0xd8, 0xfb, 0x54, 0x05, 0x64, 0x05, 0x70, 0x1e, 0x78, 0xc4, 0x7d,
+       0xb8, 0x12, 0x43, 0xf5, 0x78, 0xc1, 0x7d, 0x74, 0x12, 0x43, 0xf5, 0xe4,
+       0x78, 0xc1, 0xf6, 0x22, 0x7b, 0x01, 0x7a, 0x00, 0x7d, 0xee, 0x7f, 0x92,
+       0x12, 0x38, 0xbd, 0x22, 0xe6, 0xfb, 0x7a, 0x00, 0x7f, 0x92, 0x12, 0x38,
+       0xbd, 0x22, 0xe5, 0x10, 0x24, 0x17, 0xfd, 0x7f, 0x04, 0x12, 0x3d, 0xd7,
+       0x22, 0x78, 0xc1, 0xe6, 0xfb, 0x7a, 0x00, 0x7d, 0x74, 0x7f, 0x92, 0x12,
+       0x38, 0xbd, 0xe4, 0x78, 0xc1, 0xf6, 0xf5, 0x11, 0x74, 0x01, 0x7e, 0x00,
+       0xa8, 0x11, 0x08, 0x80, 0x05, 0xc3, 0x33, 0xce, 0x33, 0xce, 0xd8, 0xf9,
+       0xff, 0x78, 0xc4, 0xe6, 0xfd, 0xef, 0x5d, 0x60, 0x44, 0x85, 0x11, 0xfb,
+       0xe5, 0x11, 0x54, 0x02, 0x25, 0xe0, 0x25, 0xe0, 0xfe, 0xe4, 0x24, 0x5b,
+       0xfb, 0xee, 0x12, 0x45, 0xed, 0x12, 0x3e, 0xda, 0x7b, 0x40, 0x7d, 0x11,
+       0x7f, 0x07, 0x12, 0x3d, 0xd7, 0x74, 0xc7, 0x25, 0x11, 0xf8, 0xa6, 0x07,
+       0x7b, 0x11, 0x7d, 0x12, 0x7f, 0x07, 0x12, 0x3d, 0xd7, 0xef, 0x4e, 0x60,
+       0x09, 0x74, 0xe7, 0x25, 0x11, 0xf8, 0x76, 0x04, 0x80, 0x07, 0x74, 0xe7,
+       0x25, 0x11, 0xf8, 0x76, 0x0a, 0x05, 0x11, 0xe5, 0x11, 0xc3, 0x94, 0x04,
+       0x40, 0x9a, 0x78, 0xc6, 0xe6, 0x70, 0x15, 0x78, 0xc4, 0xe6, 0x60, 0x10,
+       0x75, 0xd9, 0x38, 0x75, 0xdb, 0x10, 0x7d, 0xfe, 0x12, 0x44, 0xb8, 0x7d,
+       0x76, 0x12, 0x44, 0xb8, 0x79, 0xc6, 0xe7, 0x78, 0xc4, 0x66, 0xff, 0x60,
+       0x03, 0x12, 0x40, 0x25, 0x78, 0xc4, 0xe6, 0x70, 0x09, 0xfb, 0xfa, 0x7d,
+       0xfe, 0x7f, 0x8e, 0x12, 0x38, 0xbd, 0x22, 0x7b, 0x01, 0x7a, 0x00, 0x7f,
+       0x8e, 0x12, 0x38, 0xbd, 0x22, 0xe4, 0xf5, 0xfb, 0x7d, 0x1c, 0xe4, 0xff,
+       0x12, 0x3e, 0x9a, 0xad, 0x07, 0xac, 0x06, 0xec, 0x54, 0xc0, 0xff, 0xed,
+       0x54, 0x3f, 0x4f, 0xf5, 0x20, 0x30, 0x06, 0x2c, 0x30, 0x01, 0x08, 0xa2,
+       0x04, 0x72, 0x03, 0x92, 0x07, 0x80, 0x21, 0x30, 0x04, 0x06, 0x7b, 0xcc,
+       0x7d, 0x11, 0x80, 0x0d, 0x30, 0x03, 0x06, 0x7b, 0xcc, 0x7d, 0x10, 0x80,
+       0x04, 0x7b, 0x66, 0x7d, 0x16, 0xe4, 0xff, 0x12, 0x3d, 0xd7, 0xee, 0x4f,
+       0x24, 0xff, 0x92, 0x07, 0xaf, 0xfb, 0x74, 0x26, 0x2f, 0xf8, 0xe6, 0xff,
+       0xa6, 0x20, 0x20, 0x07, 0x39, 0x8f, 0x20, 0x30, 0x07, 0x34, 0x30, 0x00,
+       0x31, 0x20, 0x04, 0x2e, 0x20, 0x03, 0x2b, 0xe4, 0xf5, 0xff, 0x75, 0xfc,
+       0xc2, 0xe5, 0xfc, 0x30, 0xe0, 0xfb, 0xaf, 0xfe, 0xef, 0x20, 0xe3, 0x1a,
+       0xae, 0xfd, 0x44, 0x08, 0xf5, 0xfe, 0x75, 0xfc, 0x80, 0xe5, 0xfc, 0x30,
+       0xe0, 0xfb, 0x8f, 0xfe, 0x8e, 0xfd, 0x75, 0xfc, 0x80, 0xe5, 0xfc, 0x30,
+       0xe0, 0xfb, 0x05, 0xfb, 0xaf, 0xfb, 0xef, 0xc3, 0x94, 0x04, 0x50, 0x03,
+       0x02, 0x44, 0xc5, 0xe4, 0xf5, 0xfb, 0x22, 0xe5, 0x7e, 0x54, 0x0f, 0x64,
+       0x01, 0x70, 0x23, 0xe5, 0x7e, 0x30, 0xe4, 0x1e, 0x90, 0x47, 0xd0, 0xe0,
+       0x44, 0x02, 0xf0, 0x54, 0xfb, 0xf0, 0x90, 0x47, 0xd4, 0xe0, 0x44, 0x04,
+       0xf0, 0x7b, 0x03, 0x7d, 0x5b, 0x7f, 0x5d, 0x12, 0x36, 0x29, 0x7b, 0x0e,
+       0x80, 0x1c, 0x90, 0x47, 0xd0, 0xe0, 0x54, 0xfd, 0xf0, 0x44, 0x04, 0xf0,
+       0x90, 0x47, 0xd4, 0xe0, 0x54, 0xfb, 0xf0, 0x7b, 0x02, 0x7d, 0x5b, 0x7f,
+       0x5d, 0x12, 0x36, 0x29, 0x7b, 0x06, 0x7d, 0x60, 0x7f, 0x63, 0x12, 0x36,
+       0x29, 0x22, 0xe5, 0x7e, 0x30, 0xe5, 0x35, 0x30, 0xe4, 0x0b, 0x7b, 0x02,
+       0x7d, 0x33, 0x7f, 0x35, 0x12, 0x36, 0x29, 0x80, 0x10, 0x7b, 0x01, 0x7d,
+       0x33, 0x7f, 0x35, 0x12, 0x36, 0x29, 0x90, 0x47, 0xd2, 0xe0, 0x44, 0x04,
+       0xf0, 0x90, 0x47, 0xd2, 0xe0, 0x54, 0xf7, 0xf0, 0x90, 0x47, 0xd1, 0xe0,
+       0x44, 0x10, 0xf0, 0x7b, 0x05, 0x7d, 0x84, 0x7f, 0x86, 0x12, 0x36, 0x29,
+       0x22, 0xfb, 0xe5, 0x1c, 0x34, 0xf0, 0xfa, 0x7d, 0x10, 0x7f, 0x07, 0x22,
+       0x54, 0x01, 0xc4, 0x33, 0x54, 0xe0, 0xf5, 0xdb, 0x44, 0x08, 0xf5, 0xdb,
+       0x22, 0xf5, 0xdb, 0x75, 0xdb, 0x08, 0xf5, 0xdb, 0x75, 0xdb, 0x08, 0x22,
+       0xab, 0x07, 0xaa, 0x06, 0x7d, 0x10, 0x7f, 0x07, 0x12, 0x3e, 0xda, 0x7b,
+       0xff, 0x7d, 0x10, 0x7f, 0x07, 0x12, 0x3d, 0xd7, 0xef, 0x4e, 0x60, 0xf3,
+       0x22, 0x12, 0x44, 0xc2, 0x30, 0x0c, 0x03, 0x12, 0x42, 0x12, 0x78, 0xc4,
+       0xe6, 0xff, 0x60, 0x03, 0x12, 0x40, 0x25, 0x22, 0xe5, 0x19, 0x24, 0x17,
+       0x54, 0x1f, 0x44, 0x80, 0xff, 0x22, 0x74, 0x2a, 0x25, 0x19, 0xf8, 0xe6,
+       0x22, 0x12, 0x46, 0x72, 0x12, 0x46, 0x68, 0x90, 0x47, 0xfa, 0xe0, 0x54,
+       0xf8, 0x44, 0x02, 0xf0, 0x22, 0xe5, 0x7e, 0xae, 0x7d, 0x78, 0x04, 0x22,
+       0xce, 0xa2, 0xe7, 0x13, 0xce, 0x13, 0x22, 0xe4, 0x78, 0xc4, 0xf6, 0xc2,
+       0x0d, 0x78, 0xc1, 0xf6, 0x22, 0xc2, 0x0c, 0xc2, 0x0b, 0x22, 0x22,
+};
+
+static const u8 fw_patch_vsc8584[] = {
+       0xe8, 0x59, 0x02, 0xe8, 0x12, 0x02, 0xe8, 0x42, 0x02, 0xe8, 0x5a, 0x02,
+       0xe8, 0x5b, 0x02, 0xe8, 0x5c, 0xe5, 0x69, 0x54, 0x0f, 0x24, 0xf7, 0x60,
+       0x27, 0x24, 0xfc, 0x60, 0x23, 0x24, 0x08, 0x70, 0x14, 0xe5, 0x69, 0xae,
+       0x68, 0x78, 0x04, 0xce, 0xa2, 0xe7, 0x13, 0xce, 0x13, 0xd8, 0xf8, 0x7e,
+       0x00, 0x54, 0x0f, 0x80, 0x00, 0x7b, 0x01, 0x7a, 0x00, 0x7d, 0xee, 0x7f,
+       0x92, 0x12, 0x50, 0xee, 0x22, 0xe4, 0xf5, 0x10, 0x85, 0x10, 0xfb, 0x7d,
+       0x1c, 0xe4, 0xff, 0x12, 0x59, 0xea, 0x05, 0x10, 0xe5, 0x10, 0xc3, 0x94,
+       0x04, 0x40, 0xed, 0x22, 0x22, 0x22, 0x22, 0x22,
+};
+
+static int vsc8584_get_fw_crc(struct mii_dev *bus, int phy, u16 start,
+                             u16 *crc, const u8 *fw_patch, int fw_size)
+{
+       int ret;
+
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                  MSCC_PHY_PAGE_EXT1);
+
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_PHY_VERIPHY_CNTL_2, start);
+       /* Add one byte to size for the one added by the patch_fw function */
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_PHY_VERIPHY_CNTL_3,
+                  fw_size + 1);
+
+       ret = vsc8584_cmd(bus, phy, PROC_CMD_CRC16);
+       if (ret)
+               goto out;
+
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                  MSCC_PHY_PAGE_EXT1);
+
+       *crc = bus->read(bus, phy, MDIO_DEVAD_NONE, MSCC_PHY_VERIPHY_CNTL_2);
+
+out:
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                  MSCC_PHY_PAGE_STD);
+
+       return ret;
+}
+
+static int vsc8584_patch_fw(struct mii_dev *bus, int phy, const u8 *fw_patch,
+                           int fw_size)
+{
+       int i, ret;
+
+       ret = vsc8584_micro_assert_reset(bus, phy);
+       if (ret) {
+               pr_err("%s: failed to assert reset of micro\n", __func__);
+               return ret;
+       }
+
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                  MSCC_PHY_PAGE_GPIO);
+
+       /*
+        * Hold 8051 Micro in SW Reset, Enable auto incr address and patch clock
+        * Disable the 8051 Micro clock
+        */
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_DW8051_CNTL_STATUS,
+                  RUN_FROM_INT_ROM | AUTOINC_ADDR | PATCH_RAM_CLK |
+                  MICRO_CLK_EN | MICRO_CLK_DIVIDE(2));
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_INT_MEM_CNTL, READ_PRAM |
+                  INT_MEM_WRITE_EN | INT_MEM_DATA(2));
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_INT_MEM_ADDR, 0x0000);
+
+       for (i = 0; i < fw_size; i++)
+               bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_INT_MEM_CNTL,
+                          READ_PRAM | INT_MEM_WRITE_EN | fw_patch[i]);
+
+       /* Clear internal memory access */
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_INT_MEM_CNTL, READ_RAM);
+
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                  MSCC_PHY_PAGE_STD);
+
+       return 0;
+}
+
+static bool vsc8574_is_serdes_init(struct mii_dev *bus, int phy)
+{
+       u16 reg;
+       bool ret;
+
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                  MSCC_PHY_PAGE_GPIO);
+
+       reg = bus->read(bus, phy, MDIO_DEVAD_NONE, MSCC_TRAP_ROM_ADDR(1));
+       if (reg != MSCC_TRAP_ROM_ADDR_SERDES_INIT) {
+               ret = false;
+               goto out;
+       }
+
+       reg = bus->read(bus, phy, MDIO_DEVAD_NONE, MSCC_PATCH_RAM_ADDR(1));
+       if (reg != MSCC_PATCH_RAM_ADDR_SERDES_INIT) {
+               ret = false;
+               goto out;
+       }
+
+       reg = bus->read(bus, phy, MDIO_DEVAD_NONE, MSCC_INT_MEM_CNTL);
+       if (reg != EN_PATCH_RAM_TRAP_ADDR(1)) {
+               ret = false;
+               goto out;
+       }
+
+       reg = bus->read(bus, phy, MDIO_DEVAD_NONE, MSCC_DW8051_CNTL_STATUS);
+       if ((MICRO_NSOFT_RESET | RUN_FROM_INT_ROM |  DW8051_CLK_EN |
+            MICRO_CLK_EN) != (reg & MSCC_DW8051_VLD_MASK)) {
+               ret = false;
+               goto out;
+       }
+
+       ret = true;
+
+out:
+       bus->write(bus, phy, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                  MSCC_PHY_PAGE_GPIO);
+
+       return ret;
+}
+
+static int vsc8574_config_pre_init(struct phy_device *phydev)
+{
+       struct mii_dev *bus = phydev->bus;
+       u16 crc, reg, phy0, addr;
+       bool serdes_init;
+       int ret;
+
+       phy_write(phydev, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                 MSCC_PHY_PAGE_EXT1);
+       addr = phy_read(phydev, MDIO_DEVAD_NONE, MSCC_PHY_EXT_PHY_CNTL_4);
+       addr >>= PHY_CNTL_4_ADDR_POS;
+
+       reg = phy_read(phydev, MDIO_DEVAD_NONE, MSCC_PHY_ACTIPHY_CNTL);
+       if (reg & PHY_ADDR_REVERSED)
+               phy0 = phydev->addr + addr;
+       else
+               phy0 = phydev->addr - addr;
+
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                  MSCC_PHY_PAGE_STD);
+
+       /* all writes below are broadcasted to all PHYs in the same package */
+       reg = bus->read(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_EXT_CNTL_STATUS);
+       reg |= SMI_BROADCAST_WR_EN;
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_EXT_CNTL_STATUS, reg);
+
+       /*
+        * The below register writes are tweaking analog and electrical
+        * configuration that were determined through characterization by PHY
+        * engineers. These don't mean anything more than "these are the best
+        * values".
+        */
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_EXT_PHY_CNTL_2, 0x0040);
+
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                  MSCC_PHY_PAGE_TEST);
+
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_TEST_PAGE_20, 0x4320);
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_TEST_PAGE_24, 0x0c00);
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_TEST_PAGE_9, 0x18ca);
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_TEST_PAGE_5, 0x1b20);
+
+       reg = bus->read(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_TEST_PAGE_8);
+       reg |= TR_CLK_DISABLE;
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_TEST_PAGE_8, reg);
+
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                  MSCC_PHY_PAGE_TR);
+
+       vsc8584_csr_write(bus, phy0, 0x0fae, 0x000401bd);
+       vsc8584_csr_write(bus, phy0, 0x0fac, 0x000f000f);
+       vsc8584_csr_write(bus, phy0, 0x17a0, 0x00a0f147);
+       vsc8584_csr_write(bus, phy0, 0x0fe4, 0x00052f54);
+       vsc8584_csr_write(bus, phy0, 0x1792, 0x0027303d);
+       vsc8584_csr_write(bus, phy0, 0x07fe, 0x00000704);
+       vsc8584_csr_write(bus, phy0, 0x0fe0, 0x00060150);
+       vsc8584_csr_write(bus, phy0, 0x0f82, 0x0012b00a);
+       vsc8584_csr_write(bus, phy0, 0x0f80, 0x00000d74);
+       vsc8584_csr_write(bus, phy0, 0x02e0, 0x00000012);
+       vsc8584_csr_write(bus, phy0, 0x03a2, 0x00050208);
+       vsc8584_csr_write(bus, phy0, 0x03b2, 0x00009186);
+       vsc8584_csr_write(bus, phy0, 0x0fb0, 0x000e3700);
+       vsc8584_csr_write(bus, phy0, 0x1688, 0x00049f81);
+       vsc8584_csr_write(bus, phy0, 0x0fd2, 0x0000ffff);
+       vsc8584_csr_write(bus, phy0, 0x168a, 0x00039fa2);
+       vsc8584_csr_write(bus, phy0, 0x1690, 0x0020640b);
+       vsc8584_csr_write(bus, phy0, 0x0258, 0x00002220);
+       vsc8584_csr_write(bus, phy0, 0x025a, 0x00002a20);
+       vsc8584_csr_write(bus, phy0, 0x025c, 0x00003060);
+       vsc8584_csr_write(bus, phy0, 0x025e, 0x00003fa0);
+       vsc8584_csr_write(bus, phy0, 0x03a6, 0x0000e0f0);
+       vsc8584_csr_write(bus, phy0, 0x0f92, 0x00001489);
+       vsc8584_csr_write(bus, phy0, 0x16a2, 0x00007000);
+       vsc8584_csr_write(bus, phy0, 0x16a6, 0x00071448);
+       vsc8584_csr_write(bus, phy0, 0x16a0, 0x00eeffdd);
+       vsc8584_csr_write(bus, phy0, 0x0fe8, 0x0091b06c);
+       vsc8584_csr_write(bus, phy0, 0x0fea, 0x00041600);
+       vsc8584_csr_write(bus, phy0, 0x16b0, 0x00eeff00);
+       vsc8584_csr_write(bus, phy0, 0x16b2, 0x00007000);
+       vsc8584_csr_write(bus, phy0, 0x16b4, 0x00000814);
+       vsc8584_csr_write(bus, phy0, 0x0f90, 0x00688980);
+       vsc8584_csr_write(bus, phy0, 0x03a4, 0x0000d8f0);
+       vsc8584_csr_write(bus, phy0, 0x0fc0, 0x00000400);
+       vsc8584_csr_write(bus, phy0, 0x07fa, 0x0050100f);
+       vsc8584_csr_write(bus, phy0, 0x0796, 0x00000003);
+       vsc8584_csr_write(bus, phy0, 0x07f8, 0x00c3ff98);
+       vsc8584_csr_write(bus, phy0, 0x0fa4, 0x0018292a);
+       vsc8584_csr_write(bus, phy0, 0x168c, 0x00d2c46f);
+       vsc8584_csr_write(bus, phy0, 0x17a2, 0x00000620);
+       vsc8584_csr_write(bus, phy0, 0x16a4, 0x0013132f);
+       vsc8584_csr_write(bus, phy0, 0x16a8, 0x00000000);
+       vsc8584_csr_write(bus, phy0, 0x0ffc, 0x00c0a028);
+       vsc8584_csr_write(bus, phy0, 0x0fec, 0x00901c09);
+       vsc8584_csr_write(bus, phy0, 0x0fee, 0x0004a6a1);
+       vsc8584_csr_write(bus, phy0, 0x0ffe, 0x00b01807);
+
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                       MSCC_PHY_PAGE_EXT2);
+
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_CU_PMD_TX_CNTL, 0x028e);
+
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                  MSCC_PHY_PAGE_TR);
+
+       vsc8584_csr_write(bus, phy0, 0x0486, 0x0008a518);
+       vsc8584_csr_write(bus, phy0, 0x0488, 0x006dc696);
+       vsc8584_csr_write(bus, phy0, 0x048a, 0x00000912);
+       vsc8584_csr_write(bus, phy0, 0x048e, 0x00000db6);
+       vsc8584_csr_write(bus, phy0, 0x049c, 0x00596596);
+       vsc8584_csr_write(bus, phy0, 0x049e, 0x00000514);
+       vsc8584_csr_write(bus, phy0, 0x04a2, 0x00410280);
+       vsc8584_csr_write(bus, phy0, 0x04a4, 0x00000000);
+       vsc8584_csr_write(bus, phy0, 0x04a6, 0x00000000);
+       vsc8584_csr_write(bus, phy0, 0x04a8, 0x00000000);
+       vsc8584_csr_write(bus, phy0, 0x04aa, 0x00000000);
+       vsc8584_csr_write(bus, phy0, 0x04ae, 0x007df7dd);
+       vsc8584_csr_write(bus, phy0, 0x04b0, 0x006d95d4);
+       vsc8584_csr_write(bus, phy0, 0x04b2, 0x00492410);
+
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                  MSCC_PHY_PAGE_TEST);
+
+       reg = bus->read(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_TEST_PAGE_8);
+       reg &= ~TR_CLK_DISABLE;
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_TEST_PAGE_8, reg);
+
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                       MSCC_PHY_PAGE_STD);
+
+       /* end of write broadcasting */
+       reg = bus->read(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_EXT_CNTL_STATUS);
+       reg &= ~SMI_BROADCAST_WR_EN;
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_EXT_CNTL_STATUS, reg);
+
+       ret = vsc8584_get_fw_crc(bus, phy0,
+                                MSCC_VSC8574_REVB_INT8051_FW_START_ADDR, &crc,
+                                fw_patch_vsc8574,
+                                ARRAY_SIZE(fw_patch_vsc8574));
+       if (ret)
+               goto out;
+
+       if (crc == MSCC_VSC8574_REVB_INT8051_FW_CRC) {
+               serdes_init = vsc8574_is_serdes_init(bus, phy0);
+
+               if (!serdes_init) {
+                       ret = vsc8584_micro_assert_reset(bus, phy0);
+                       if (ret) {
+                               pr_err("failed to assert reset of micro\n");
+                               return ret;
+                       }
+               }
+       } else {
+               pr_debug("FW CRC is not the expected one, patching FW\n");
+
+               serdes_init = false;
+
+               if (vsc8584_patch_fw(bus, phy0, fw_patch_vsc8574,
+                                    ARRAY_SIZE(fw_patch_vsc8574)))
+                       pr_warn("failed to patch FW, expect non-optimal device\n");
+       }
+
+       if (!serdes_init) {
+               bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                               MSCC_PHY_PAGE_GPIO);
+
+               bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_TRAP_ROM_ADDR(1),
+                          MSCC_TRAP_ROM_ADDR_SERDES_INIT);
+               bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_PATCH_RAM_ADDR(1),
+                          MSCC_PATCH_RAM_ADDR_SERDES_INIT);
+
+               bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_INT_MEM_CNTL,
+                               EN_PATCH_RAM_TRAP_ADDR(1));
+
+               vsc8584_micro_deassert_reset(bus, phy0, false);
+
+               ret = vsc8584_get_fw_crc(bus, phy0,
+                                        MSCC_VSC8574_REVB_INT8051_FW_START_ADDR,
+                                        &crc, fw_patch_vsc8574,
+                                        ARRAY_SIZE(fw_patch_vsc8574));
+               if (ret)
+                       goto out;
+
+               if (crc != MSCC_VSC8574_REVB_INT8051_FW_CRC)
+                       pr_warn("FW CRC after patching is not the expected one, expect non-optimal device\n");
+       }
+
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                  MSCC_PHY_PAGE_GPIO);
+
+       ret = vsc8584_cmd(bus, phy0, PROC_CMD_1588_DEFAULT_INIT |
+                         PROC_CMD_PHY_INIT);
+
+out:
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                       MSCC_PHY_PAGE_STD);
+
+       return ret;
+}
+
+static int vsc8584_config_pre_init(struct phy_device *phydev)
+{
+       struct mii_dev *bus = phydev->bus;
+       u16 reg, crc, phy0, addr;
+       int ret;
+
+       if ((phydev->phy_id & MSCC_DEV_REV_MASK) != VSC8584_REVB) {
+               pr_warn("VSC8584 revA not officially supported, skipping firmware patching. Use at your own risk.\n");
+               return 0;
+       }
+
+       phy_write(phydev, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                 MSCC_PHY_PAGE_EXT1);
+       addr = phy_read(phydev, MDIO_DEVAD_NONE, MSCC_PHY_EXT_PHY_CNTL_4);
+       addr >>= PHY_CNTL_4_ADDR_POS;
+
+       reg = phy_read(phydev, MDIO_DEVAD_NONE, MSCC_PHY_ACTIPHY_CNTL);
+       if (reg & PHY_ADDR_REVERSED)
+               phy0 = phydev->addr + addr;
+       else
+               phy0 = phydev->addr - addr;
+
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                  MSCC_PHY_PAGE_STD);
+
+       /* all writes below are broadcasted to all PHYs in the same package */
+       reg = bus->read(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_EXT_CNTL_STATUS);
+       reg |= SMI_BROADCAST_WR_EN;
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_EXT_CNTL_STATUS, reg);
+
+       /*
+        * The below register writes are tweaking analog and electrical
+        * configuration that were determined through characterization by PHY
+        * engineers. These don't mean anything more than "these are the best
+        * values".
+        */
+       reg = bus->read(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_BYPASS_CONTROL);
+       reg |= PARALLEL_DET_IGNORE_ADVERTISED;
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_BYPASS_CONTROL, reg);
+
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                  MSCC_PHY_PAGE_EXT3);
+
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_SERDES_TX_CRC_ERR_CNT,
+                  0x2000);
+
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                  MSCC_PHY_PAGE_TEST);
+
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_TEST_PAGE_5, 0x1f20);
+
+       reg = bus->read(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_TEST_PAGE_8);
+       reg |= TR_CLK_DISABLE;
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_TEST_PAGE_8, reg);
+
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                  MSCC_PHY_PAGE_TR);
+
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_REG_TR_ADDR_16, 0xafa4);
+
+       reg = bus->read(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_REG_TR_DATA_18);
+       reg &= ~0x007f;
+       reg |= 0x0019;
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_REG_TR_DATA_18, reg);
+
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_REG_TR_ADDR_16, 0x8fa4);
+
+       vsc8584_csr_write(bus, phy0, 0x07fa, 0x0050100f);
+       vsc8584_csr_write(bus, phy0, 0x1688, 0x00049f81);
+       vsc8584_csr_write(bus, phy0, 0x0f90, 0x00688980);
+       vsc8584_csr_write(bus, phy0, 0x03a4, 0x0000d8f0);
+       vsc8584_csr_write(bus, phy0, 0x0fc0, 0x00000400);
+       vsc8584_csr_write(bus, phy0, 0x0f82, 0x0012b002);
+       vsc8584_csr_write(bus, phy0, 0x1686, 0x00000004);
+       vsc8584_csr_write(bus, phy0, 0x168c, 0x00d2c46f);
+       vsc8584_csr_write(bus, phy0, 0x17a2, 0x00000620);
+       vsc8584_csr_write(bus, phy0, 0x16a0, 0x00eeffdd);
+       vsc8584_csr_write(bus, phy0, 0x16a6, 0x00071448);
+       vsc8584_csr_write(bus, phy0, 0x16a4, 0x0013132f);
+       vsc8584_csr_write(bus, phy0, 0x16a8, 0x00000000);
+       vsc8584_csr_write(bus, phy0, 0x0ffc, 0x00c0a028);
+       vsc8584_csr_write(bus, phy0, 0x0fe8, 0x0091b06c);
+       vsc8584_csr_write(bus, phy0, 0x0fea, 0x00041600);
+       vsc8584_csr_write(bus, phy0, 0x0f80, 0x00fffaff);
+       vsc8584_csr_write(bus, phy0, 0x0fec, 0x00901809);
+       vsc8584_csr_write(bus, phy0, 0x0ffe, 0x00b01007);
+       vsc8584_csr_write(bus, phy0, 0x16b0, 0x00eeff00);
+       vsc8584_csr_write(bus, phy0, 0x16b2, 0x00007000);
+       vsc8584_csr_write(bus, phy0, 0x16b4, 0x00000814);
+
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                  MSCC_PHY_PAGE_EXT2);
+
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_CU_PMD_TX_CNTL, 0x028e);
+
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                  MSCC_PHY_PAGE_TR);
+
+       vsc8584_csr_write(bus, phy0, 0x0486, 0x0008a518);
+       vsc8584_csr_write(bus, phy0, 0x0488, 0x006dc696);
+       vsc8584_csr_write(bus, phy0, 0x048a, 0x00000912);
+
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                  MSCC_PHY_PAGE_TEST);
+
+       reg = bus->read(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_TEST_PAGE_8);
+       reg &= ~TR_CLK_DISABLE;
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_TEST_PAGE_8, reg);
+
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                  MSCC_PHY_PAGE_STD);
+
+       /* end of write broadcasting */
+       reg = bus->read(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_EXT_CNTL_STATUS);
+       reg &= ~SMI_BROADCAST_WR_EN;
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_PHY_EXT_CNTL_STATUS, reg);
+
+       ret = vsc8584_get_fw_crc(bus, phy0,
+                                MSCC_VSC8584_REVB_INT8051_FW_START_ADDR, &crc,
+                                fw_patch_vsc8584,
+                                ARRAY_SIZE(fw_patch_vsc8584));
+       if (ret)
+               goto out;
+
+       if (crc != MSCC_VSC8584_REVB_INT8051_FW_CRC) {
+               debug("FW CRC is not the expected one, patching FW...\n");
+               if (vsc8584_patch_fw(bus, phy0, fw_patch_vsc8584,
+                                    ARRAY_SIZE(fw_patch_vsc8584)))
+                       pr_warn("failed to patch FW, expect non-optimal device\n");
+       }
+
+       vsc8584_micro_deassert_reset(bus, phy0, false);
+
+       ret = vsc8584_get_fw_crc(bus, phy0,
+                                MSCC_VSC8584_REVB_INT8051_FW_START_ADDR, &crc,
+                                fw_patch_vsc8584,
+                                ARRAY_SIZE(fw_patch_vsc8584));
+       if (ret)
+               goto out;
+
+       if (crc != MSCC_VSC8584_REVB_INT8051_FW_CRC)
+               pr_warn("FW CRC after patching is not the expected one, expect non-optimal device\n");
+
+       ret = vsc8584_micro_assert_reset(bus, phy0);
+       if (ret)
+               goto out;
+
+       vsc8584_micro_deassert_reset(bus, phy0, true);
+
+out:
+       bus->write(bus, phy0, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                  MSCC_PHY_PAGE_STD);
+
+       return ret;
+}
 
 static int mscc_vsc8531_vsc8541_init_scripts(struct phy_device *phydev)
 {
@@ -457,6 +1328,108 @@ static int vsc8541_config(struct phy_device *phydev)
        return genphy_config_aneg(phydev);
 }
 
+static int vsc8584_config_init(struct phy_device *phydev)
+{
+       struct vsc85xx_priv *priv = phydev->priv;
+       int ret;
+       u16 addr;
+       u16 reg_val;
+       u16 val;
+
+       phy_write(phydev, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                 MSCC_PHY_PAGE_EXT1);
+       addr = phy_read(phydev, MDIO_DEVAD_NONE, MSCC_PHY_EXT_PHY_CNTL_4);
+       addr >>= PHY_CNTL_4_ADDR_POS;
+
+       ret = priv->config_pre(phydev);
+       if (ret)
+               return ret;
+
+       phy_write(phydev, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                 MSCC_PHY_PAGE_GPIO);
+
+       if (phydev->interface == PHY_INTERFACE_MODE_QSGMII)
+               val = MAC_CFG_QSGMII;
+       else
+               val = MAC_CFG_SGMII;
+
+       reg_val = phy_read(phydev, MDIO_DEVAD_NONE, MSCC_PHY_MAC_CFG_FASTLINK);
+       reg_val &= ~MAC_CFG_MASK;
+       reg_val |= val;
+       ret = phy_write(phydev, MDIO_DEVAD_NONE, MSCC_PHY_MAC_CFG_FASTLINK,
+                       reg_val);
+       if (ret)
+               return ret;
+
+       reg_val = PROC_CMD_MCB_ACCESS_MAC_CONF | PROC_CMD_RST_CONF_PORT |
+               PROC_CMD_READ_MOD_WRITE_PORT;
+       if (phydev->interface == PHY_INTERFACE_MODE_QSGMII)
+               reg_val |= PROC_CMD_QSGMII_MAC;
+       else
+               reg_val |= PROC_CMD_SGMII_MAC;
+
+       ret = vsc8584_cmd(phydev->bus, phydev->addr, reg_val);
+       if (ret)
+               return ret;
+
+       mdelay(10);
+
+       /* Disable SerDes for 100Base-FX */
+       ret = vsc8584_cmd(phydev->bus, phydev->addr, PROC_CMD_FIBER_MEDIA_CONF |
+                         PROC_CMD_FIBER_PORT(addr) | PROC_CMD_FIBER_DISABLE |
+                         PROC_CMD_READ_MOD_WRITE_PORT |
+                         PROC_CMD_RST_CONF_PORT | PROC_CMD_FIBER_100BASE_FX);
+       if (ret)
+               return ret;
+
+       /* Disable SerDes for 1000Base-X */
+       ret = vsc8584_cmd(phydev->bus, phydev->addr, PROC_CMD_FIBER_MEDIA_CONF |
+                         PROC_CMD_FIBER_PORT(addr) | PROC_CMD_FIBER_DISABLE |
+                         PROC_CMD_READ_MOD_WRITE_PORT |
+                         PROC_CMD_RST_CONF_PORT | PROC_CMD_FIBER_1000BASE_X);
+       if (ret)
+               return ret;
+
+       phy_write(phydev, MDIO_DEVAD_NONE, MSCC_EXT_PAGE_ACCESS,
+                 MSCC_PHY_PAGE_STD);
+       reg_val = phy_read(phydev, MDIO_DEVAD_NONE,
+                          MSCC_PHY_EXT_PHY_CNTL_1_REG);
+       reg_val &= ~(MEDIA_OP_MODE_MASK | VSC8584_MAC_IF_SELECTION_MASK);
+       reg_val |= MEDIA_OP_MODE_COPPER |
+               (VSC8584_MAC_IF_SELECTION_SGMII <<
+                VSC8584_MAC_IF_SELECTION_POS);
+       ret = phy_write(phydev, MDIO_DEVAD_NONE, MSCC_PHY_EXT_PHY_CNTL_1_REG,
+                       reg_val);
+
+       ret = mscc_phy_soft_reset(phydev);
+       if (ret != 0)
+               return ret;
+
+       return genphy_config(phydev);
+}
+
+static struct vsc85xx_priv vsc8574_priv = {
+       .config_pre = vsc8574_config_pre_init,
+};
+
+static int vsc8574_config(struct phy_device *phydev)
+{
+       phydev->priv = &vsc8574_priv;
+
+       return vsc8584_config_init(phydev);
+}
+
+static struct vsc85xx_priv vsc8584_priv = {
+       .config_pre = vsc8584_config_pre_init,
+};
+
+static int vsc8584_config(struct phy_device *phydev)
+{
+       phydev->priv = &vsc8584_priv;
+
+       return vsc8584_config_init(phydev);
+}
+
 static struct phy_driver VSC8530_driver = {
        .name = "Microsemi VSC8530",
        .uid = PHY_ID_VSC8530,
@@ -497,12 +1470,34 @@ static struct phy_driver VSC8541_driver = {
        .shutdown = &genphy_shutdown,
 };
 
+static struct phy_driver VSC8574_driver = {
+       .name = "Microsemi VSC8574",
+       .uid = PHY_ID_VSC8574,
+       .mask = 0x000ffff0,
+       .features = PHY_GBIT_FEATURES,
+       .config = &vsc8574_config,
+       .startup = &mscc_startup,
+       .shutdown = &genphy_shutdown,
+};
+
+static struct phy_driver VSC8584_driver = {
+       .name = "Microsemi VSC8584",
+       .uid = PHY_ID_VSC8584,
+       .mask = 0x000ffff0,
+       .features = PHY_GBIT_FEATURES,
+       .config = &vsc8584_config,
+       .startup = &mscc_startup,
+       .shutdown = &genphy_shutdown,
+};
+
 int phy_mscc_init(void)
 {
        phy_register(&VSC8530_driver);
        phy_register(&VSC8531_driver);
        phy_register(&VSC8540_driver);
        phy_register(&VSC8541_driver);
+       phy_register(&VSC8574_driver);
+       phy_register(&VSC8584_driver);
 
        return 0;
 }
diff --git a/drivers/net/ti/Kconfig b/drivers/net/ti/Kconfig
new file mode 100644 (file)
index 0000000..82bc9f5
--- /dev/null
@@ -0,0 +1,20 @@
+# SPDX-License-Identifier: GPL-2.0+
+#
+# Copyright (C) 2018 Texas Instruments Incorporated - http://www.ti.com/
+
+config DRIVER_TI_CPSW
+       bool "TI Common Platform Ethernet Switch"
+       select PHYLIB
+       help
+         This driver supports the TI three port switch gigabit ethernet
+         subsystem found in the TI SoCs.
+
+config DRIVER_TI_EMAC
+       bool "TI Davinci EMAC"
+       help
+          Support for davinci emac
+
+config DRIVER_TI_KEYSTONE_NET
+       bool "TI Keystone 2 Ethernet"
+       help
+          This driver supports the TI Keystone 2 Ethernet subsystem
diff --git a/drivers/net/ti/Makefile b/drivers/net/ti/Makefile
new file mode 100644 (file)
index 0000000..ee3e4eb
--- /dev/null
@@ -0,0 +1,7 @@
+# SPDX-License-Identifier: GPL-2.0+
+#
+# Copyright (C) 2018 Texas Instruments Incorporated - http://www.ti.com/
+
+obj-$(CONFIG_DRIVER_TI_CPSW) += cpsw.o cpsw-common.o cpsw_mdio.o
+obj-$(CONFIG_DRIVER_TI_EMAC) += davinci_emac.o
+obj-$(CONFIG_DRIVER_TI_KEYSTONE_NET) += keystone_net.o cpsw_mdio.o
diff --git a/drivers/net/ti/cpsw-common.c b/drivers/net/ti/cpsw-common.c
new file mode 100644 (file)
index 0000000..6c8ddbd
--- /dev/null
@@ -0,0 +1,121 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * CPSW common - libs used across TI ethernet devices.
+ *
+ * Copyright (C) 2016, Texas Instruments, Incorporated
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <environment.h>
+#include <fdt_support.h>
+#include <asm/io.h>
+#include <cpsw.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#define CTRL_MAC_REG(offset, id) ((offset) + 0x8 * (id))
+
+static int davinci_emac_3517_get_macid(struct udevice *dev, u16 offset,
+                                      int slave, u8 *mac_addr)
+{
+       void *fdt = (void *)gd->fdt_blob;
+       int node = dev_of_offset(dev);
+       u32 macid_lsb;
+       u32 macid_msb;
+       fdt32_t gmii = 0;
+       int syscon;
+       u32 addr;
+
+       syscon = fdtdec_lookup_phandle(fdt, node, "syscon");
+       if (syscon < 0) {
+               pr_err("Syscon offset not found\n");
+               return -ENOENT;
+       }
+
+       addr = (u32)map_physmem(fdt_translate_address(fdt, syscon, &gmii),
+                               sizeof(u32), MAP_NOCACHE);
+       if (addr == FDT_ADDR_T_NONE) {
+               pr_err("Not able to get syscon address to get mac efuse address\n");
+               return -ENOENT;
+       }
+
+       addr += CTRL_MAC_REG(offset, slave);
+
+       /* try reading mac address from efuse */
+       macid_lsb = readl(addr);
+       macid_msb = readl(addr + 4);
+
+       mac_addr[0] = (macid_msb >> 16) & 0xff;
+       mac_addr[1] = (macid_msb >> 8)  & 0xff;
+       mac_addr[2] = macid_msb & 0xff;
+       mac_addr[3] = (macid_lsb >> 16) & 0xff;
+       mac_addr[4] = (macid_lsb >> 8)  & 0xff;
+       mac_addr[5] = macid_lsb & 0xff;
+
+       return 0;
+}
+
+static int cpsw_am33xx_cm_get_macid(struct udevice *dev, u16 offset, int slave,
+                                   u8 *mac_addr)
+{
+       void *fdt = (void *)gd->fdt_blob;
+       int node = dev_of_offset(dev);
+       u32 macid_lo;
+       u32 macid_hi;
+       fdt32_t gmii = 0;
+       int syscon;
+       u32 addr;
+
+       syscon = fdtdec_lookup_phandle(fdt, node, "syscon");
+       if (syscon < 0) {
+               pr_err("Syscon offset not found\n");
+               return -ENOENT;
+       }
+
+       addr = (u32)map_physmem(fdt_translate_address(fdt, syscon, &gmii),
+                               sizeof(u32), MAP_NOCACHE);
+       if (addr == FDT_ADDR_T_NONE) {
+               pr_err("Not able to get syscon address to get mac efuse address\n");
+               return -ENOENT;
+       }
+
+       addr += CTRL_MAC_REG(offset, slave);
+
+       /* try reading mac address from efuse */
+       macid_lo = readl(addr);
+       macid_hi = readl(addr + 4);
+
+       mac_addr[5] = (macid_lo >> 8) & 0xff;
+       mac_addr[4] = macid_lo & 0xff;
+       mac_addr[3] = (macid_hi >> 24) & 0xff;
+       mac_addr[2] = (macid_hi >> 16) & 0xff;
+       mac_addr[1] = (macid_hi >> 8) & 0xff;
+       mac_addr[0] = macid_hi & 0xff;
+
+       return 0;
+}
+
+int ti_cm_get_macid(struct udevice *dev, int slave, u8 *mac_addr)
+{
+       if (of_machine_is_compatible("ti,dm8148"))
+               return cpsw_am33xx_cm_get_macid(dev, 0x630, slave, mac_addr);
+
+       if (of_machine_is_compatible("ti,am33xx"))
+               return cpsw_am33xx_cm_get_macid(dev, 0x630, slave, mac_addr);
+
+       if (device_is_compatible(dev, "ti,am3517-emac"))
+               return davinci_emac_3517_get_macid(dev, 0x110, slave, mac_addr);
+
+       if (device_is_compatible(dev, "ti,dm816-emac"))
+               return cpsw_am33xx_cm_get_macid(dev, 0x30, slave, mac_addr);
+
+       if (of_machine_is_compatible("ti,am43"))
+               return cpsw_am33xx_cm_get_macid(dev, 0x630, slave, mac_addr);
+
+       if (of_machine_is_compatible("ti,dra7"))
+               return davinci_emac_3517_get_macid(dev, 0x514, slave, mac_addr);
+
+       dev_err(dev, "incompatible machine/device type for reading mac address\n");
+       return -ENOENT;
+}
diff --git a/drivers/net/ti/cpsw.c b/drivers/net/ti/cpsw.c
new file mode 100644 (file)
index 0000000..f5fd02e
--- /dev/null
@@ -0,0 +1,1378 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * CPSW Ethernet Switch Driver
+ *
+ * Copyright (C) 2010-2018 Texas Instruments Incorporated - http://www.ti.com/
+ */
+
+#include <common.h>
+#include <command.h>
+#include <net.h>
+#include <miiphy.h>
+#include <malloc.h>
+#include <net.h>
+#include <netdev.h>
+#include <cpsw.h>
+#include <linux/errno.h>
+#include <asm/gpio.h>
+#include <asm/io.h>
+#include <phy.h>
+#include <asm/arch/cpu.h>
+#include <dm.h>
+#include <fdt_support.h>
+
+#include "cpsw_mdio.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#define BITMASK(bits)          (BIT(bits) - 1)
+#define NUM_DESCS              (PKTBUFSRX * 2)
+#define PKT_MIN                        60
+#define PKT_MAX                        (1500 + 14 + 4 + 4)
+#define CLEAR_BIT              1
+#define GIGABITEN              BIT(7)
+#define FULLDUPLEXEN           BIT(0)
+#define MIIEN                  BIT(15)
+
+/* reg offset */
+#define CPSW_HOST_PORT_OFFSET  0x108
+#define CPSW_SLAVE0_OFFSET     0x208
+#define CPSW_SLAVE1_OFFSET     0x308
+#define CPSW_SLAVE_SIZE                0x100
+#define CPSW_CPDMA_OFFSET      0x800
+#define CPSW_HW_STATS          0x900
+#define CPSW_STATERAM_OFFSET   0xa00
+#define CPSW_CPTS_OFFSET       0xc00
+#define CPSW_ALE_OFFSET                0xd00
+#define CPSW_SLIVER0_OFFSET    0xd80
+#define CPSW_SLIVER1_OFFSET    0xdc0
+#define CPSW_BD_OFFSET         0x2000
+#define CPSW_MDIO_DIV          0xff
+
+#define AM335X_GMII_SEL_OFFSET 0x630
+
+/* DMA Registers */
+#define CPDMA_TXCONTROL                0x004
+#define CPDMA_RXCONTROL                0x014
+#define CPDMA_SOFTRESET                0x01c
+#define CPDMA_RXFREE           0x0e0
+#define CPDMA_TXHDP_VER1       0x100
+#define CPDMA_TXHDP_VER2       0x200
+#define CPDMA_RXHDP_VER1       0x120
+#define CPDMA_RXHDP_VER2       0x220
+#define CPDMA_TXCP_VER1                0x140
+#define CPDMA_TXCP_VER2                0x240
+#define CPDMA_RXCP_VER1                0x160
+#define CPDMA_RXCP_VER2                0x260
+
+/* Descriptor mode bits */
+#define CPDMA_DESC_SOP         BIT(31)
+#define CPDMA_DESC_EOP         BIT(30)
+#define CPDMA_DESC_OWNER       BIT(29)
+#define CPDMA_DESC_EOQ         BIT(28)
+
+/*
+ * This timeout definition is a worst-case ultra defensive measure against
+ * unexpected controller lock ups.  Ideally, we should never ever hit this
+ * scenario in practice.
+ */
+#define CPDMA_TIMEOUT          100 /* msecs */
+
+struct cpsw_regs {
+       u32     id_ver;
+       u32     control;
+       u32     soft_reset;
+       u32     stat_port_en;
+       u32     ptype;
+};
+
+struct cpsw_slave_regs {
+       u32     max_blks;
+       u32     blk_cnt;
+       u32     flow_thresh;
+       u32     port_vlan;
+       u32     tx_pri_map;
+#ifdef CONFIG_AM33XX
+       u32     gap_thresh;
+#elif defined(CONFIG_TI814X)
+       u32     ts_ctl;
+       u32     ts_seq_ltype;
+       u32     ts_vlan;
+#endif
+       u32     sa_lo;
+       u32     sa_hi;
+};
+
+struct cpsw_host_regs {
+       u32     max_blks;
+       u32     blk_cnt;
+       u32     flow_thresh;
+       u32     port_vlan;
+       u32     tx_pri_map;
+       u32     cpdma_tx_pri_map;
+       u32     cpdma_rx_chan_map;
+};
+
+struct cpsw_sliver_regs {
+       u32     id_ver;
+       u32     mac_control;
+       u32     mac_status;
+       u32     soft_reset;
+       u32     rx_maxlen;
+       u32     __reserved_0;
+       u32     rx_pause;
+       u32     tx_pause;
+       u32     __reserved_1;
+       u32     rx_pri_map;
+};
+
+#define ALE_ENTRY_BITS         68
+#define ALE_ENTRY_WORDS                DIV_ROUND_UP(ALE_ENTRY_BITS, 32)
+
+/* ALE Registers */
+#define ALE_CONTROL            0x08
+#define ALE_UNKNOWNVLAN                0x18
+#define ALE_TABLE_CONTROL      0x20
+#define ALE_TABLE              0x34
+#define ALE_PORTCTL            0x40
+
+#define ALE_TABLE_WRITE                BIT(31)
+
+#define ALE_TYPE_FREE                  0
+#define ALE_TYPE_ADDR                  1
+#define ALE_TYPE_VLAN                  2
+#define ALE_TYPE_VLAN_ADDR             3
+
+#define ALE_UCAST_PERSISTANT           0
+#define ALE_UCAST_UNTOUCHED            1
+#define ALE_UCAST_OUI                  2
+#define ALE_UCAST_TOUCHED              3
+
+#define ALE_MCAST_FWD                  0
+#define ALE_MCAST_BLOCK_LEARN_FWD      1
+#define ALE_MCAST_FWD_LEARN            2
+#define ALE_MCAST_FWD_2                        3
+
+enum cpsw_ale_port_state {
+       ALE_PORT_STATE_DISABLE  = 0x00,
+       ALE_PORT_STATE_BLOCK    = 0x01,
+       ALE_PORT_STATE_LEARN    = 0x02,
+       ALE_PORT_STATE_FORWARD  = 0x03,
+};
+
+/* ALE unicast entry flags - passed into cpsw_ale_add_ucast() */
+#define ALE_SECURE     1
+#define ALE_BLOCKED    2
+
+struct cpsw_slave {
+       struct cpsw_slave_regs          *regs;
+       struct cpsw_sliver_regs         *sliver;
+       int                             slave_num;
+       u32                             mac_control;
+       struct cpsw_slave_data          *data;
+};
+
+struct cpdma_desc {
+       /* hardware fields */
+       u32                     hw_next;
+       u32                     hw_buffer;
+       u32                     hw_len;
+       u32                     hw_mode;
+       /* software fields */
+       u32                     sw_buffer;
+       u32                     sw_len;
+};
+
+struct cpdma_chan {
+       struct cpdma_desc       *head, *tail;
+       void                    *hdp, *cp, *rxfree;
+};
+
+/* AM33xx SoC specific definitions for the CONTROL port */
+#define AM33XX_GMII_SEL_MODE_MII       0
+#define AM33XX_GMII_SEL_MODE_RMII      1
+#define AM33XX_GMII_SEL_MODE_RGMII     2
+
+#define AM33XX_GMII_SEL_RGMII1_IDMODE  BIT(4)
+#define AM33XX_GMII_SEL_RGMII2_IDMODE  BIT(5)
+#define AM33XX_GMII_SEL_RMII1_IO_CLK_EN        BIT(6)
+#define AM33XX_GMII_SEL_RMII2_IO_CLK_EN        BIT(7)
+
+#define GMII_SEL_MODE_MASK             0x3
+
+#define desc_write(desc, fld, val)     __raw_writel((u32)(val), &(desc)->fld)
+#define desc_read(desc, fld)           __raw_readl(&(desc)->fld)
+#define desc_read_ptr(desc, fld)       ((void *)__raw_readl(&(desc)->fld))
+
+#define chan_write(chan, fld, val)     __raw_writel((u32)(val), (chan)->fld)
+#define chan_read(chan, fld)           __raw_readl((chan)->fld)
+#define chan_read_ptr(chan, fld)       ((void *)__raw_readl((chan)->fld))
+
+#define for_active_slave(slave, priv) \
+       slave = (priv)->slaves + (priv)->data.active_slave; if (slave)
+#define for_each_slave(slave, priv) \
+       for (slave = (priv)->slaves; slave != (priv)->slaves + \
+                               (priv)->data.slaves; slave++)
+
+struct cpsw_priv {
+#ifdef CONFIG_DM_ETH
+       struct udevice                  *dev;
+#else
+       struct eth_device               *dev;
+#endif
+       struct cpsw_platform_data       data;
+       int                             host_port;
+
+       struct cpsw_regs                *regs;
+       void                            *dma_regs;
+       struct cpsw_host_regs           *host_port_regs;
+       void                            *ale_regs;
+
+       struct cpdma_desc               *descs;
+       struct cpdma_desc               *desc_free;
+       struct cpdma_chan               rx_chan, tx_chan;
+
+       struct cpsw_slave               *slaves;
+       struct phy_device               *phydev;
+       struct mii_dev                  *bus;
+
+       u32                             phy_mask;
+};
+
+static inline int cpsw_ale_get_field(u32 *ale_entry, u32 start, u32 bits)
+{
+       int idx;
+
+       idx    = start / 32;
+       start -= idx * 32;
+       idx    = 2 - idx; /* flip */
+       return (ale_entry[idx] >> start) & BITMASK(bits);
+}
+
+static inline void cpsw_ale_set_field(u32 *ale_entry, u32 start, u32 bits,
+                                     u32 value)
+{
+       int idx;
+
+       value &= BITMASK(bits);
+       idx    = start / 32;
+       start -= idx * 32;
+       idx    = 2 - idx; /* flip */
+       ale_entry[idx] &= ~(BITMASK(bits) << start);
+       ale_entry[idx] |=  (value << start);
+}
+
+#define DEFINE_ALE_FIELD(name, start, bits)                            \
+static inline int cpsw_ale_get_##name(u32 *ale_entry)                  \
+{                                                                      \
+       return cpsw_ale_get_field(ale_entry, start, bits);              \
+}                                                                      \
+static inline void cpsw_ale_set_##name(u32 *ale_entry, u32 value)      \
+{                                                                      \
+       cpsw_ale_set_field(ale_entry, start, bits, value);              \
+}
+
+DEFINE_ALE_FIELD(entry_type,           60,     2)
+DEFINE_ALE_FIELD(mcast_state,          62,     2)
+DEFINE_ALE_FIELD(port_mask,            66,     3)
+DEFINE_ALE_FIELD(ucast_type,           62,     2)
+DEFINE_ALE_FIELD(port_num,             66,     2)
+DEFINE_ALE_FIELD(blocked,              65,     1)
+DEFINE_ALE_FIELD(secure,               64,     1)
+DEFINE_ALE_FIELD(mcast,                        40,     1)
+
+/* The MAC address field in the ALE entry cannot be macroized as above */
+static inline void cpsw_ale_get_addr(u32 *ale_entry, u8 *addr)
+{
+       int i;
+
+       for (i = 0; i < 6; i++)
+               addr[i] = cpsw_ale_get_field(ale_entry, 40 - 8*i, 8);
+}
+
+static inline void cpsw_ale_set_addr(u32 *ale_entry, const u8 *addr)
+{
+       int i;
+
+       for (i = 0; i < 6; i++)
+               cpsw_ale_set_field(ale_entry, 40 - 8*i, 8, addr[i]);
+}
+
+static int cpsw_ale_read(struct cpsw_priv *priv, int idx, u32 *ale_entry)
+{
+       int i;
+
+       __raw_writel(idx, priv->ale_regs + ALE_TABLE_CONTROL);
+
+       for (i = 0; i < ALE_ENTRY_WORDS; i++)
+               ale_entry[i] = __raw_readl(priv->ale_regs + ALE_TABLE + 4 * i);
+
+       return idx;
+}
+
+static int cpsw_ale_write(struct cpsw_priv *priv, int idx, u32 *ale_entry)
+{
+       int i;
+
+       for (i = 0; i < ALE_ENTRY_WORDS; i++)
+               __raw_writel(ale_entry[i], priv->ale_regs + ALE_TABLE + 4 * i);
+
+       __raw_writel(idx | ALE_TABLE_WRITE, priv->ale_regs + ALE_TABLE_CONTROL);
+
+       return idx;
+}
+
+static int cpsw_ale_match_addr(struct cpsw_priv *priv, const u8 *addr)
+{
+       u32 ale_entry[ALE_ENTRY_WORDS];
+       int type, idx;
+
+       for (idx = 0; idx < priv->data.ale_entries; idx++) {
+               u8 entry_addr[6];
+
+               cpsw_ale_read(priv, idx, ale_entry);
+               type = cpsw_ale_get_entry_type(ale_entry);
+               if (type != ALE_TYPE_ADDR && type != ALE_TYPE_VLAN_ADDR)
+                       continue;
+               cpsw_ale_get_addr(ale_entry, entry_addr);
+               if (memcmp(entry_addr, addr, 6) == 0)
+                       return idx;
+       }
+       return -ENOENT;
+}
+
+static int cpsw_ale_match_free(struct cpsw_priv *priv)
+{
+       u32 ale_entry[ALE_ENTRY_WORDS];
+       int type, idx;
+
+       for (idx = 0; idx < priv->data.ale_entries; idx++) {
+               cpsw_ale_read(priv, idx, ale_entry);
+               type = cpsw_ale_get_entry_type(ale_entry);
+               if (type == ALE_TYPE_FREE)
+                       return idx;
+       }
+       return -ENOENT;
+}
+
+static int cpsw_ale_find_ageable(struct cpsw_priv *priv)
+{
+       u32 ale_entry[ALE_ENTRY_WORDS];
+       int type, idx;
+
+       for (idx = 0; idx < priv->data.ale_entries; idx++) {
+               cpsw_ale_read(priv, idx, ale_entry);
+               type = cpsw_ale_get_entry_type(ale_entry);
+               if (type != ALE_TYPE_ADDR && type != ALE_TYPE_VLAN_ADDR)
+                       continue;
+               if (cpsw_ale_get_mcast(ale_entry))
+                       continue;
+               type = cpsw_ale_get_ucast_type(ale_entry);
+               if (type != ALE_UCAST_PERSISTANT &&
+                   type != ALE_UCAST_OUI)
+                       return idx;
+       }
+       return -ENOENT;
+}
+
+static int cpsw_ale_add_ucast(struct cpsw_priv *priv, const u8 *addr,
+                             int port, int flags)
+{
+       u32 ale_entry[ALE_ENTRY_WORDS] = {0, 0, 0};
+       int idx;
+
+       cpsw_ale_set_entry_type(ale_entry, ALE_TYPE_ADDR);
+       cpsw_ale_set_addr(ale_entry, addr);
+       cpsw_ale_set_ucast_type(ale_entry, ALE_UCAST_PERSISTANT);
+       cpsw_ale_set_secure(ale_entry, (flags & ALE_SECURE) ? 1 : 0);
+       cpsw_ale_set_blocked(ale_entry, (flags & ALE_BLOCKED) ? 1 : 0);
+       cpsw_ale_set_port_num(ale_entry, port);
+
+       idx = cpsw_ale_match_addr(priv, addr);
+       if (idx < 0)
+               idx = cpsw_ale_match_free(priv);
+       if (idx < 0)
+               idx = cpsw_ale_find_ageable(priv);
+       if (idx < 0)
+               return -ENOMEM;
+
+       cpsw_ale_write(priv, idx, ale_entry);
+       return 0;
+}
+
+static int cpsw_ale_add_mcast(struct cpsw_priv *priv, const u8 *addr,
+                             int port_mask)
+{
+       u32 ale_entry[ALE_ENTRY_WORDS] = {0, 0, 0};
+       int idx, mask;
+
+       idx = cpsw_ale_match_addr(priv, addr);
+       if (idx >= 0)
+               cpsw_ale_read(priv, idx, ale_entry);
+
+       cpsw_ale_set_entry_type(ale_entry, ALE_TYPE_ADDR);
+       cpsw_ale_set_addr(ale_entry, addr);
+       cpsw_ale_set_mcast_state(ale_entry, ALE_MCAST_FWD_2);
+
+       mask = cpsw_ale_get_port_mask(ale_entry);
+       port_mask |= mask;
+       cpsw_ale_set_port_mask(ale_entry, port_mask);
+
+       if (idx < 0)
+               idx = cpsw_ale_match_free(priv);
+       if (idx < 0)
+               idx = cpsw_ale_find_ageable(priv);
+       if (idx < 0)
+               return -ENOMEM;
+
+       cpsw_ale_write(priv, idx, ale_entry);
+       return 0;
+}
+
+static inline void cpsw_ale_control(struct cpsw_priv *priv, int bit, int val)
+{
+       u32 tmp, mask = BIT(bit);
+
+       tmp  = __raw_readl(priv->ale_regs + ALE_CONTROL);
+       tmp &= ~mask;
+       tmp |= val ? mask : 0;
+       __raw_writel(tmp, priv->ale_regs + ALE_CONTROL);
+}
+
+#define cpsw_ale_enable(priv, val)     cpsw_ale_control(priv, 31, val)
+#define cpsw_ale_clear(priv, val)      cpsw_ale_control(priv, 30, val)
+#define cpsw_ale_vlan_aware(priv, val) cpsw_ale_control(priv,  2, val)
+
+static inline void cpsw_ale_port_state(struct cpsw_priv *priv, int port,
+                                      int val)
+{
+       int offset = ALE_PORTCTL + 4 * port;
+       u32 tmp, mask = 0x3;
+
+       tmp  = __raw_readl(priv->ale_regs + offset);
+       tmp &= ~mask;
+       tmp |= val & mask;
+       __raw_writel(tmp, priv->ale_regs + offset);
+}
+
+/* Set a self-clearing bit in a register, and wait for it to clear */
+static inline void setbit_and_wait_for_clear32(void *addr)
+{
+       __raw_writel(CLEAR_BIT, addr);
+       while (__raw_readl(addr) & CLEAR_BIT)
+               ;
+}
+
+#define mac_hi(mac)    (((mac)[0] << 0) | ((mac)[1] << 8) |    \
+                        ((mac)[2] << 16) | ((mac)[3] << 24))
+#define mac_lo(mac)    (((mac)[4] << 0) | ((mac)[5] << 8))
+
+static void cpsw_set_slave_mac(struct cpsw_slave *slave,
+                              struct cpsw_priv *priv)
+{
+#ifdef CONFIG_DM_ETH
+       struct eth_pdata *pdata = dev_get_platdata(priv->dev);
+
+       writel(mac_hi(pdata->enetaddr), &slave->regs->sa_hi);
+       writel(mac_lo(pdata->enetaddr), &slave->regs->sa_lo);
+#else
+       __raw_writel(mac_hi(priv->dev->enetaddr), &slave->regs->sa_hi);
+       __raw_writel(mac_lo(priv->dev->enetaddr), &slave->regs->sa_lo);
+#endif
+}
+
+static int cpsw_slave_update_link(struct cpsw_slave *slave,
+                                  struct cpsw_priv *priv, int *link)
+{
+       struct phy_device *phy;
+       u32 mac_control = 0;
+       int ret = -ENODEV;
+
+       phy = priv->phydev;
+       if (!phy)
+               goto out;
+
+       ret = phy_startup(phy);
+       if (ret)
+               goto out;
+
+       if (link)
+               *link = phy->link;
+
+       if (phy->link) { /* link up */
+               mac_control = priv->data.mac_control;
+               if (phy->speed == 1000)
+                       mac_control |= GIGABITEN;
+               if (phy->duplex == DUPLEX_FULL)
+                       mac_control |= FULLDUPLEXEN;
+               if (phy->speed == 100)
+                       mac_control |= MIIEN;
+       }
+
+       if (mac_control == slave->mac_control)
+               goto out;
+
+       if (mac_control) {
+               printf("link up on port %d, speed %d, %s duplex\n",
+                               slave->slave_num, phy->speed,
+                               (phy->duplex == DUPLEX_FULL) ? "full" : "half");
+       } else {
+               printf("link down on port %d\n", slave->slave_num);
+       }
+
+       __raw_writel(mac_control, &slave->sliver->mac_control);
+       slave->mac_control = mac_control;
+
+out:
+       return ret;
+}
+
+static int cpsw_update_link(struct cpsw_priv *priv)
+{
+       int ret = -ENODEV;
+       struct cpsw_slave *slave;
+
+       for_active_slave(slave, priv)
+               ret = cpsw_slave_update_link(slave, priv, NULL);
+
+       return ret;
+}
+
+static inline u32  cpsw_get_slave_port(struct cpsw_priv *priv, u32 slave_num)
+{
+       if (priv->host_port == 0)
+               return slave_num + 1;
+       else
+               return slave_num;
+}
+
+static void cpsw_slave_init(struct cpsw_slave *slave, struct cpsw_priv *priv)
+{
+       u32     slave_port;
+
+       setbit_and_wait_for_clear32(&slave->sliver->soft_reset);
+
+       /* setup priority mapping */
+       __raw_writel(0x76543210, &slave->sliver->rx_pri_map);
+       __raw_writel(0x33221100, &slave->regs->tx_pri_map);
+
+       /* setup max packet size, and mac address */
+       __raw_writel(PKT_MAX, &slave->sliver->rx_maxlen);
+       cpsw_set_slave_mac(slave, priv);
+
+       slave->mac_control = 0; /* no link yet */
+
+       /* enable forwarding */
+       slave_port = cpsw_get_slave_port(priv, slave->slave_num);
+       cpsw_ale_port_state(priv, slave_port, ALE_PORT_STATE_FORWARD);
+
+       cpsw_ale_add_mcast(priv, net_bcast_ethaddr, 1 << slave_port);
+
+       priv->phy_mask |= 1 << slave->data->phy_addr;
+}
+
+static struct cpdma_desc *cpdma_desc_alloc(struct cpsw_priv *priv)
+{
+       struct cpdma_desc *desc = priv->desc_free;
+
+       if (desc)
+               priv->desc_free = desc_read_ptr(desc, hw_next);
+       return desc;
+}
+
+static void cpdma_desc_free(struct cpsw_priv *priv, struct cpdma_desc *desc)
+{
+       if (desc) {
+               desc_write(desc, hw_next, priv->desc_free);
+               priv->desc_free = desc;
+       }
+}
+
+static int cpdma_submit(struct cpsw_priv *priv, struct cpdma_chan *chan,
+                       void *buffer, int len)
+{
+       struct cpdma_desc *desc, *prev;
+       u32 mode;
+
+       desc = cpdma_desc_alloc(priv);
+       if (!desc)
+               return -ENOMEM;
+
+       if (len < PKT_MIN)
+               len = PKT_MIN;
+
+       mode = CPDMA_DESC_OWNER | CPDMA_DESC_SOP | CPDMA_DESC_EOP;
+
+       desc_write(desc, hw_next,   0);
+       desc_write(desc, hw_buffer, buffer);
+       desc_write(desc, hw_len,    len);
+       desc_write(desc, hw_mode,   mode | len);
+       desc_write(desc, sw_buffer, buffer);
+       desc_write(desc, sw_len,    len);
+
+       if (!chan->head) {
+               /* simple case - first packet enqueued */
+               chan->head = desc;
+               chan->tail = desc;
+               chan_write(chan, hdp, desc);
+               goto done;
+       }
+
+       /* not the first packet - enqueue at the tail */
+       prev = chan->tail;
+       desc_write(prev, hw_next, desc);
+       chan->tail = desc;
+
+       /* next check if EOQ has been triggered already */
+       if (desc_read(prev, hw_mode) & CPDMA_DESC_EOQ)
+               chan_write(chan, hdp, desc);
+
+done:
+       if (chan->rxfree)
+               chan_write(chan, rxfree, 1);
+       return 0;
+}
+
+static int cpdma_process(struct cpsw_priv *priv, struct cpdma_chan *chan,
+                        void **buffer, int *len)
+{
+       struct cpdma_desc *desc = chan->head;
+       u32 status;
+
+       if (!desc)
+               return -ENOENT;
+
+       status = desc_read(desc, hw_mode);
+
+       if (len)
+               *len = status & 0x7ff;
+
+       if (buffer)
+               *buffer = desc_read_ptr(desc, sw_buffer);
+
+       if (status & CPDMA_DESC_OWNER) {
+               if (chan_read(chan, hdp) == 0) {
+                       if (desc_read(desc, hw_mode) & CPDMA_DESC_OWNER)
+                               chan_write(chan, hdp, desc);
+               }
+
+               return -EBUSY;
+       }
+
+       chan->head = desc_read_ptr(desc, hw_next);
+       chan_write(chan, cp, desc);
+
+       cpdma_desc_free(priv, desc);
+       return 0;
+}
+
+static int _cpsw_init(struct cpsw_priv *priv, u8 *enetaddr)
+{
+       struct cpsw_slave       *slave;
+       int i, ret;
+
+       /* soft reset the controller and initialize priv */
+       setbit_and_wait_for_clear32(&priv->regs->soft_reset);
+
+       /* initialize and reset the address lookup engine */
+       cpsw_ale_enable(priv, 1);
+       cpsw_ale_clear(priv, 1);
+       cpsw_ale_vlan_aware(priv, 0); /* vlan unaware mode */
+
+       /* setup host port priority mapping */
+       __raw_writel(0x76543210, &priv->host_port_regs->cpdma_tx_pri_map);
+       __raw_writel(0, &priv->host_port_regs->cpdma_rx_chan_map);
+
+       /* disable priority elevation and enable statistics on all ports */
+       __raw_writel(0, &priv->regs->ptype);
+
+       /* enable statistics collection only on the host port */
+       __raw_writel(BIT(priv->host_port), &priv->regs->stat_port_en);
+       __raw_writel(0x7, &priv->regs->stat_port_en);
+
+       cpsw_ale_port_state(priv, priv->host_port, ALE_PORT_STATE_FORWARD);
+
+       cpsw_ale_add_ucast(priv, enetaddr, priv->host_port, ALE_SECURE);
+       cpsw_ale_add_mcast(priv, net_bcast_ethaddr, 1 << priv->host_port);
+
+       for_active_slave(slave, priv)
+               cpsw_slave_init(slave, priv);
+
+       ret = cpsw_update_link(priv);
+       if (ret)
+               goto out;
+
+       /* init descriptor pool */
+       for (i = 0; i < NUM_DESCS; i++) {
+               desc_write(&priv->descs[i], hw_next,
+                          (i == (NUM_DESCS - 1)) ? 0 : &priv->descs[i+1]);
+       }
+       priv->desc_free = &priv->descs[0];
+
+       /* initialize channels */
+       if (priv->data.version == CPSW_CTRL_VERSION_2) {
+               memset(&priv->rx_chan, 0, sizeof(struct cpdma_chan));
+               priv->rx_chan.hdp       = priv->dma_regs + CPDMA_RXHDP_VER2;
+               priv->rx_chan.cp        = priv->dma_regs + CPDMA_RXCP_VER2;
+               priv->rx_chan.rxfree    = priv->dma_regs + CPDMA_RXFREE;
+
+               memset(&priv->tx_chan, 0, sizeof(struct cpdma_chan));
+               priv->tx_chan.hdp       = priv->dma_regs + CPDMA_TXHDP_VER2;
+               priv->tx_chan.cp        = priv->dma_regs + CPDMA_TXCP_VER2;
+       } else {
+               memset(&priv->rx_chan, 0, sizeof(struct cpdma_chan));
+               priv->rx_chan.hdp       = priv->dma_regs + CPDMA_RXHDP_VER1;
+               priv->rx_chan.cp        = priv->dma_regs + CPDMA_RXCP_VER1;
+               priv->rx_chan.rxfree    = priv->dma_regs + CPDMA_RXFREE;
+
+               memset(&priv->tx_chan, 0, sizeof(struct cpdma_chan));
+               priv->tx_chan.hdp       = priv->dma_regs + CPDMA_TXHDP_VER1;
+               priv->tx_chan.cp        = priv->dma_regs + CPDMA_TXCP_VER1;
+       }
+
+       /* clear dma state */
+       setbit_and_wait_for_clear32(priv->dma_regs + CPDMA_SOFTRESET);
+
+       if (priv->data.version == CPSW_CTRL_VERSION_2) {
+               for (i = 0; i < priv->data.channels; i++) {
+                       __raw_writel(0, priv->dma_regs + CPDMA_RXHDP_VER2 + 4
+                                       * i);
+                       __raw_writel(0, priv->dma_regs + CPDMA_RXFREE + 4
+                                       * i);
+                       __raw_writel(0, priv->dma_regs + CPDMA_RXCP_VER2 + 4
+                                       * i);
+                       __raw_writel(0, priv->dma_regs + CPDMA_TXHDP_VER2 + 4
+                                       * i);
+                       __raw_writel(0, priv->dma_regs + CPDMA_TXCP_VER2 + 4
+                                       * i);
+               }
+       } else {
+               for (i = 0; i < priv->data.channels; i++) {
+                       __raw_writel(0, priv->dma_regs + CPDMA_RXHDP_VER1 + 4
+                                       * i);
+                       __raw_writel(0, priv->dma_regs + CPDMA_RXFREE + 4
+                                       * i);
+                       __raw_writel(0, priv->dma_regs + CPDMA_RXCP_VER1 + 4
+                                       * i);
+                       __raw_writel(0, priv->dma_regs + CPDMA_TXHDP_VER1 + 4
+                                       * i);
+                       __raw_writel(0, priv->dma_regs + CPDMA_TXCP_VER1 + 4
+                                       * i);
+
+               }
+       }
+
+       __raw_writel(1, priv->dma_regs + CPDMA_TXCONTROL);
+       __raw_writel(1, priv->dma_regs + CPDMA_RXCONTROL);
+
+       /* submit rx descs */
+       for (i = 0; i < PKTBUFSRX; i++) {
+               ret = cpdma_submit(priv, &priv->rx_chan, net_rx_packets[i],
+                                  PKTSIZE);
+               if (ret < 0) {
+                       printf("error %d submitting rx desc\n", ret);
+                       break;
+               }
+       }
+
+out:
+       return ret;
+}
+
+static int cpsw_reap_completed_packets(struct cpsw_priv *priv)
+{
+       int timeout = CPDMA_TIMEOUT;
+
+       /* reap completed packets */
+       while (timeout-- &&
+              (cpdma_process(priv, &priv->tx_chan, NULL, NULL) >= 0))
+               ;
+
+       return timeout;
+}
+
+static void _cpsw_halt(struct cpsw_priv *priv)
+{
+       cpsw_reap_completed_packets(priv);
+
+       writel(0, priv->dma_regs + CPDMA_TXCONTROL);
+       writel(0, priv->dma_regs + CPDMA_RXCONTROL);
+
+       /* soft reset the controller and initialize priv */
+       setbit_and_wait_for_clear32(&priv->regs->soft_reset);
+
+       /* clear dma state */
+       setbit_and_wait_for_clear32(priv->dma_regs + CPDMA_SOFTRESET);
+
+}
+
+static int _cpsw_send(struct cpsw_priv *priv, void *packet, int length)
+{
+       int timeout;
+
+       flush_dcache_range((unsigned long)packet,
+                          (unsigned long)packet + ALIGN(length, PKTALIGN));
+
+       timeout = cpsw_reap_completed_packets(priv);
+       if (timeout == -1) {
+               printf("cpdma_process timeout\n");
+               return -ETIMEDOUT;
+       }
+
+       return cpdma_submit(priv, &priv->tx_chan, packet, length);
+}
+
+static int _cpsw_recv(struct cpsw_priv *priv, uchar **pkt)
+{
+       void *buffer;
+       int len;
+       int ret;
+
+       ret = cpdma_process(priv, &priv->rx_chan, &buffer, &len);
+       if (ret < 0)
+               return ret;
+
+       invalidate_dcache_range((unsigned long)buffer,
+                               (unsigned long)buffer + PKTSIZE_ALIGN);
+       *pkt = buffer;
+
+       return len;
+}
+
+static void cpsw_slave_setup(struct cpsw_slave *slave, int slave_num,
+                           struct cpsw_priv *priv)
+{
+       void                    *regs = priv->regs;
+       struct cpsw_slave_data  *data = priv->data.slave_data + slave_num;
+       slave->slave_num = slave_num;
+       slave->data     = data;
+       slave->regs     = regs + data->slave_reg_ofs;
+       slave->sliver   = regs + data->sliver_reg_ofs;
+}
+
+static int cpsw_phy_init(struct cpsw_priv *priv, struct cpsw_slave *slave)
+{
+       struct phy_device *phydev;
+       u32 supported = PHY_GBIT_FEATURES;
+
+       phydev = phy_connect(priv->bus,
+                       slave->data->phy_addr,
+                       priv->dev,
+                       slave->data->phy_if);
+
+       if (!phydev)
+               return -1;
+
+       phydev->supported &= supported;
+       phydev->advertising = phydev->supported;
+
+#ifdef CONFIG_DM_ETH
+       if (slave->data->phy_of_handle)
+               phydev->node = offset_to_ofnode(slave->data->phy_of_handle);
+#endif
+
+       priv->phydev = phydev;
+       phy_config(phydev);
+
+       return 1;
+}
+
+static void cpsw_phy_addr_update(struct cpsw_priv *priv)
+{
+       struct cpsw_platform_data *data = &priv->data;
+       u16 alive = cpsw_mdio_get_alive(priv->bus);
+       int active = data->active_slave;
+       int new_addr = ffs(alive) - 1;
+
+       /*
+        * If there is only one phy alive and its address does not match
+        * that of active slave, then phy address can safely be updated.
+        */
+       if (hweight16(alive) == 1 &&
+           data->slave_data[active].phy_addr != new_addr) {
+               printf("Updated phy address for CPSW#%d, old: %d, new: %d\n",
+                      active, data->slave_data[active].phy_addr, new_addr);
+               data->slave_data[active].phy_addr = new_addr;
+       }
+}
+
+int _cpsw_register(struct cpsw_priv *priv)
+{
+       struct cpsw_slave       *slave;
+       struct cpsw_platform_data *data = &priv->data;
+       void                    *regs = (void *)data->cpsw_base;
+
+       priv->slaves = malloc(sizeof(struct cpsw_slave) * data->slaves);
+       if (!priv->slaves) {
+               return -ENOMEM;
+       }
+
+       priv->host_port         = data->host_port_num;
+       priv->regs              = regs;
+       priv->host_port_regs    = regs + data->host_port_reg_ofs;
+       priv->dma_regs          = regs + data->cpdma_reg_ofs;
+       priv->ale_regs          = regs + data->ale_reg_ofs;
+       priv->descs             = (void *)regs + data->bd_ram_ofs;
+
+       int idx = 0;
+
+       for_each_slave(slave, priv) {
+               cpsw_slave_setup(slave, idx, priv);
+               idx = idx + 1;
+       }
+
+       priv->bus = cpsw_mdio_init(priv->dev->name, data->mdio_base, 0, 0);
+       if (!priv->bus)
+               return -EFAULT;
+
+       cpsw_phy_addr_update(priv);
+
+       for_active_slave(slave, priv)
+               cpsw_phy_init(priv, slave);
+
+       return 0;
+}
+
+#ifndef CONFIG_DM_ETH
+static int cpsw_init(struct eth_device *dev, bd_t *bis)
+{
+       struct cpsw_priv        *priv = dev->priv;
+
+       return _cpsw_init(priv, dev->enetaddr);
+}
+
+static void cpsw_halt(struct eth_device *dev)
+{
+       struct cpsw_priv *priv = dev->priv;
+
+       return _cpsw_halt(priv);
+}
+
+static int cpsw_send(struct eth_device *dev, void *packet, int length)
+{
+       struct cpsw_priv        *priv = dev->priv;
+
+       return _cpsw_send(priv, packet, length);
+}
+
+static int cpsw_recv(struct eth_device *dev)
+{
+       struct cpsw_priv *priv = dev->priv;
+       uchar *pkt = NULL;
+       int len;
+
+       len = _cpsw_recv(priv, &pkt);
+
+       if (len > 0) {
+               net_process_received_packet(pkt, len);
+               cpdma_submit(priv, &priv->rx_chan, pkt, PKTSIZE);
+       }
+
+       return len;
+}
+
+int cpsw_register(struct cpsw_platform_data *data)
+{
+       struct cpsw_priv        *priv;
+       struct eth_device       *dev;
+       int ret;
+
+       dev = calloc(sizeof(*dev), 1);
+       if (!dev)
+               return -ENOMEM;
+
+       priv = calloc(sizeof(*priv), 1);
+       if (!priv) {
+               free(dev);
+               return -ENOMEM;
+       }
+
+       priv->dev = dev;
+       priv->data = *data;
+
+       strcpy(dev->name, "cpsw");
+       dev->iobase     = 0;
+       dev->init       = cpsw_init;
+       dev->halt       = cpsw_halt;
+       dev->send       = cpsw_send;
+       dev->recv       = cpsw_recv;
+       dev->priv       = priv;
+
+       eth_register(dev);
+
+       ret = _cpsw_register(priv);
+       if (ret < 0) {
+               eth_unregister(dev);
+               free(dev);
+               free(priv);
+               return ret;
+       }
+
+       return 1;
+}
+#else
+static int cpsw_eth_start(struct udevice *dev)
+{
+       struct eth_pdata *pdata = dev_get_platdata(dev);
+       struct cpsw_priv *priv = dev_get_priv(dev);
+
+       return _cpsw_init(priv, pdata->enetaddr);
+}
+
+static int cpsw_eth_send(struct udevice *dev, void *packet, int length)
+{
+       struct cpsw_priv *priv = dev_get_priv(dev);
+
+       return _cpsw_send(priv, packet, length);
+}
+
+static int cpsw_eth_recv(struct udevice *dev, int flags, uchar **packetp)
+{
+       struct cpsw_priv *priv = dev_get_priv(dev);
+
+       return _cpsw_recv(priv, packetp);
+}
+
+static int cpsw_eth_free_pkt(struct udevice *dev, uchar *packet,
+                                  int length)
+{
+       struct cpsw_priv *priv = dev_get_priv(dev);
+
+       return cpdma_submit(priv, &priv->rx_chan, packet, PKTSIZE);
+}
+
+static void cpsw_eth_stop(struct udevice *dev)
+{
+       struct cpsw_priv *priv = dev_get_priv(dev);
+
+       return _cpsw_halt(priv);
+}
+
+
+static int cpsw_eth_probe(struct udevice *dev)
+{
+       struct cpsw_priv *priv = dev_get_priv(dev);
+
+       priv->dev = dev;
+
+       return _cpsw_register(priv);
+}
+
+static const struct eth_ops cpsw_eth_ops = {
+       .start          = cpsw_eth_start,
+       .send           = cpsw_eth_send,
+       .recv           = cpsw_eth_recv,
+       .free_pkt       = cpsw_eth_free_pkt,
+       .stop           = cpsw_eth_stop,
+};
+
+static inline fdt_addr_t cpsw_get_addr_by_node(const void *fdt, int node)
+{
+       return fdtdec_get_addr_size_auto_noparent(fdt, node, "reg", 0, NULL,
+                                                 false);
+}
+
+static void cpsw_gmii_sel_am3352(struct cpsw_priv *priv,
+                                phy_interface_t phy_mode)
+{
+       u32 reg;
+       u32 mask;
+       u32 mode = 0;
+       bool rgmii_id = false;
+       int slave = priv->data.active_slave;
+
+       reg = readl(priv->data.gmii_sel);
+
+       switch (phy_mode) {
+       case PHY_INTERFACE_MODE_RMII:
+               mode = AM33XX_GMII_SEL_MODE_RMII;
+               break;
+
+       case PHY_INTERFACE_MODE_RGMII:
+               mode = AM33XX_GMII_SEL_MODE_RGMII;
+               break;
+       case PHY_INTERFACE_MODE_RGMII_ID:
+       case PHY_INTERFACE_MODE_RGMII_RXID:
+       case PHY_INTERFACE_MODE_RGMII_TXID:
+               mode = AM33XX_GMII_SEL_MODE_RGMII;
+               rgmii_id = true;
+               break;
+
+       case PHY_INTERFACE_MODE_MII:
+       default:
+               mode = AM33XX_GMII_SEL_MODE_MII;
+               break;
+       };
+
+       mask = GMII_SEL_MODE_MASK << (slave * 2) | BIT(slave + 6);
+       mode <<= slave * 2;
+
+       if (priv->data.rmii_clock_external) {
+               if (slave == 0)
+                       mode |= AM33XX_GMII_SEL_RMII1_IO_CLK_EN;
+               else
+                       mode |= AM33XX_GMII_SEL_RMII2_IO_CLK_EN;
+       }
+
+       if (rgmii_id) {
+               if (slave == 0)
+                       mode |= AM33XX_GMII_SEL_RGMII1_IDMODE;
+               else
+                       mode |= AM33XX_GMII_SEL_RGMII2_IDMODE;
+       }
+
+       reg &= ~mask;
+       reg |= mode;
+
+       writel(reg, priv->data.gmii_sel);
+}
+
+static void cpsw_gmii_sel_dra7xx(struct cpsw_priv *priv,
+                                phy_interface_t phy_mode)
+{
+       u32 reg;
+       u32 mask;
+       u32 mode = 0;
+       int slave = priv->data.active_slave;
+
+       reg = readl(priv->data.gmii_sel);
+
+       switch (phy_mode) {
+       case PHY_INTERFACE_MODE_RMII:
+               mode = AM33XX_GMII_SEL_MODE_RMII;
+               break;
+
+       case PHY_INTERFACE_MODE_RGMII:
+       case PHY_INTERFACE_MODE_RGMII_ID:
+       case PHY_INTERFACE_MODE_RGMII_RXID:
+       case PHY_INTERFACE_MODE_RGMII_TXID:
+               mode = AM33XX_GMII_SEL_MODE_RGMII;
+               break;
+
+       case PHY_INTERFACE_MODE_MII:
+       default:
+               mode = AM33XX_GMII_SEL_MODE_MII;
+               break;
+       };
+
+       switch (slave) {
+       case 0:
+               mask = GMII_SEL_MODE_MASK;
+               break;
+       case 1:
+               mask = GMII_SEL_MODE_MASK << 4;
+               mode <<= 4;
+               break;
+       default:
+               dev_err(priv->dev, "invalid slave number...\n");
+               return;
+       }
+
+       if (priv->data.rmii_clock_external)
+               dev_err(priv->dev, "RMII External clock is not supported\n");
+
+       reg &= ~mask;
+       reg |= mode;
+
+       writel(reg, priv->data.gmii_sel);
+}
+
+static void cpsw_phy_sel(struct cpsw_priv *priv, const char *compat,
+                        phy_interface_t phy_mode)
+{
+       if (!strcmp(compat, "ti,am3352-cpsw-phy-sel"))
+               cpsw_gmii_sel_am3352(priv, phy_mode);
+       if (!strcmp(compat, "ti,am43xx-cpsw-phy-sel"))
+               cpsw_gmii_sel_am3352(priv, phy_mode);
+       else if (!strcmp(compat, "ti,dra7xx-cpsw-phy-sel"))
+               cpsw_gmii_sel_dra7xx(priv, phy_mode);
+}
+
+static int cpsw_eth_ofdata_to_platdata(struct udevice *dev)
+{
+       struct eth_pdata *pdata = dev_get_platdata(dev);
+       struct cpsw_priv *priv = dev_get_priv(dev);
+       struct gpio_desc *mode_gpios;
+       const char *phy_mode;
+       const char *phy_sel_compat = NULL;
+       const void *fdt = gd->fdt_blob;
+       int node = dev_of_offset(dev);
+       int subnode;
+       int slave_index = 0;
+       int active_slave;
+       int num_mode_gpios;
+       int ret;
+
+       pdata->iobase = devfdt_get_addr(dev);
+       priv->data.version = CPSW_CTRL_VERSION_2;
+       priv->data.bd_ram_ofs = CPSW_BD_OFFSET;
+       priv->data.ale_reg_ofs = CPSW_ALE_OFFSET;
+       priv->data.cpdma_reg_ofs = CPSW_CPDMA_OFFSET;
+       priv->data.mdio_div = CPSW_MDIO_DIV;
+       priv->data.host_port_reg_ofs = CPSW_HOST_PORT_OFFSET,
+
+       pdata->phy_interface = -1;
+
+       priv->data.cpsw_base = pdata->iobase;
+       priv->data.channels = fdtdec_get_int(fdt, node, "cpdma_channels", -1);
+       if (priv->data.channels <= 0) {
+               printf("error: cpdma_channels not found in dt\n");
+               return -ENOENT;
+       }
+
+       priv->data.slaves = fdtdec_get_int(fdt, node, "slaves", -1);
+       if (priv->data.slaves <= 0) {
+               printf("error: slaves not found in dt\n");
+               return -ENOENT;
+       }
+       priv->data.slave_data = malloc(sizeof(struct cpsw_slave_data) *
+                                      priv->data.slaves);
+
+       priv->data.ale_entries = fdtdec_get_int(fdt, node, "ale_entries", -1);
+       if (priv->data.ale_entries <= 0) {
+               printf("error: ale_entries not found in dt\n");
+               return -ENOENT;
+       }
+
+       priv->data.bd_ram_ofs = fdtdec_get_int(fdt, node, "bd_ram_size", -1);
+       if (priv->data.bd_ram_ofs <= 0) {
+               printf("error: bd_ram_size not found in dt\n");
+               return -ENOENT;
+       }
+
+       priv->data.mac_control = fdtdec_get_int(fdt, node, "mac_control", -1);
+       if (priv->data.mac_control <= 0) {
+               printf("error: ale_entries not found in dt\n");
+               return -ENOENT;
+       }
+
+       num_mode_gpios = gpio_get_list_count(dev, "mode-gpios");
+       if (num_mode_gpios > 0) {
+               mode_gpios = malloc(sizeof(struct gpio_desc) *
+                                   num_mode_gpios);
+               gpio_request_list_by_name(dev, "mode-gpios", mode_gpios,
+                                         num_mode_gpios, GPIOD_IS_OUT);
+               free(mode_gpios);
+       }
+
+       active_slave = fdtdec_get_int(fdt, node, "active_slave", 0);
+       priv->data.active_slave = active_slave;
+
+       fdt_for_each_subnode(subnode, fdt, node) {
+               int len;
+               const char *name;
+
+               name = fdt_get_name(fdt, subnode, &len);
+               if (!strncmp(name, "mdio", 4)) {
+                       u32 mdio_base;
+
+                       mdio_base = cpsw_get_addr_by_node(fdt, subnode);
+                       if (mdio_base == FDT_ADDR_T_NONE) {
+                               pr_err("Not able to get MDIO address space\n");
+                               return -ENOENT;
+                       }
+                       priv->data.mdio_base = mdio_base;
+               }
+
+               if (!strncmp(name, "slave", 5)) {
+                       u32 phy_id[2];
+
+                       if (slave_index >= priv->data.slaves)
+                               continue;
+                       phy_mode = fdt_getprop(fdt, subnode, "phy-mode", NULL);
+                       if (phy_mode)
+                               priv->data.slave_data[slave_index].phy_if =
+                                       phy_get_interface_by_name(phy_mode);
+
+                       priv->data.slave_data[slave_index].phy_of_handle =
+                               fdtdec_lookup_phandle(fdt, subnode,
+                                                     "phy-handle");
+
+                       if (priv->data.slave_data[slave_index].phy_of_handle >= 0) {
+                               priv->data.slave_data[slave_index].phy_addr =
+                                               fdtdec_get_int(gd->fdt_blob,
+                                                              priv->data.slave_data[slave_index].phy_of_handle,
+                                                              "reg", -1);
+                       } else {
+                               fdtdec_get_int_array(fdt, subnode, "phy_id",
+                                                    phy_id, 2);
+                               priv->data.slave_data[slave_index].phy_addr =
+                                               phy_id[1];
+                       }
+                       slave_index++;
+               }
+
+               if (!strncmp(name, "cpsw-phy-sel", 12)) {
+                       priv->data.gmii_sel = cpsw_get_addr_by_node(fdt,
+                                                                   subnode);
+
+                       if (priv->data.gmii_sel == FDT_ADDR_T_NONE) {
+                               pr_err("Not able to get gmii_sel reg address\n");
+                               return -ENOENT;
+                       }
+
+                       if (fdt_get_property(fdt, subnode, "rmii-clock-ext",
+                                            NULL))
+                               priv->data.rmii_clock_external = true;
+
+                       phy_sel_compat = fdt_getprop(fdt, subnode, "compatible",
+                                                    NULL);
+                       if (!phy_sel_compat) {
+                               pr_err("Not able to get gmii_sel compatible\n");
+                               return -ENOENT;
+                       }
+               }
+       }
+
+       priv->data.slave_data[0].slave_reg_ofs = CPSW_SLAVE0_OFFSET;
+       priv->data.slave_data[0].sliver_reg_ofs = CPSW_SLIVER0_OFFSET;
+
+       if (priv->data.slaves == 2) {
+               priv->data.slave_data[1].slave_reg_ofs = CPSW_SLAVE1_OFFSET;
+               priv->data.slave_data[1].sliver_reg_ofs = CPSW_SLIVER1_OFFSET;
+       }
+
+       ret = ti_cm_get_macid(dev, active_slave, pdata->enetaddr);
+       if (ret < 0) {
+               pr_err("cpsw read efuse mac failed\n");
+               return ret;
+       }
+
+       pdata->phy_interface = priv->data.slave_data[active_slave].phy_if;
+       if (pdata->phy_interface == -1) {
+               debug("%s: Invalid PHY interface '%s'\n", __func__, phy_mode);
+               return -EINVAL;
+       }
+
+       /* Select phy interface in control module */
+       cpsw_phy_sel(priv, phy_sel_compat, pdata->phy_interface);
+
+       return 0;
+}
+
+int cpsw_get_slave_phy_addr(struct udevice *dev, int slave)
+{
+       struct cpsw_priv *priv = dev_get_priv(dev);
+       struct cpsw_platform_data *data = &priv->data;
+
+       return data->slave_data[slave].phy_addr;
+}
+
+static const struct udevice_id cpsw_eth_ids[] = {
+       { .compatible = "ti,cpsw" },
+       { .compatible = "ti,am335x-cpsw" },
+       { }
+};
+
+U_BOOT_DRIVER(eth_cpsw) = {
+       .name   = "eth_cpsw",
+       .id     = UCLASS_ETH,
+       .of_match = cpsw_eth_ids,
+       .ofdata_to_platdata = cpsw_eth_ofdata_to_platdata,
+       .probe  = cpsw_eth_probe,
+       .ops    = &cpsw_eth_ops,
+       .priv_auto_alloc_size = sizeof(struct cpsw_priv),
+       .platdata_auto_alloc_size = sizeof(struct eth_pdata),
+       .flags = DM_FLAG_ALLOC_PRIV_DMA,
+};
+#endif /* CONFIG_DM_ETH */
diff --git a/drivers/net/ti/cpsw_mdio.c b/drivers/net/ti/cpsw_mdio.c
new file mode 100644 (file)
index 0000000..70f547e
--- /dev/null
@@ -0,0 +1,203 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * CPSW MDIO generic driver for TI AMxx/K2x/EMAC devices.
+ *
+ * Copyright (C) 2018 Texas Instruments Incorporated - http://www.ti.com/
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <miiphy.h>
+#include <wait_bit.h>
+
+struct cpsw_mdio_regs {
+       u32     version;
+       u32     control;
+#define CONTROL_IDLE           BIT(31)
+#define CONTROL_ENABLE         BIT(30)
+#define CONTROL_FAULT          BIT(19)
+#define CONTROL_FAULT_ENABLE   BIT(18)
+#define CONTROL_DIV_MASK       GENMASK(15, 0)
+
+       u32     alive;
+       u32     link;
+       u32     linkintraw;
+       u32     linkintmasked;
+       u32     __reserved_0[2];
+       u32     userintraw;
+       u32     userintmasked;
+       u32     userintmaskset;
+       u32     userintmaskclr;
+       u32     __reserved_1[20];
+
+       struct {
+               u32             access;
+               u32             physel;
+#define USERACCESS_GO          BIT(31)
+#define USERACCESS_WRITE       BIT(30)
+#define USERACCESS_ACK         BIT(29)
+#define USERACCESS_READ                (0)
+#define USERACCESS_PHY_REG_SHIFT       (21)
+#define USERACCESS_PHY_ADDR_SHIFT      (16)
+#define USERACCESS_DATA                GENMASK(15, 0)
+       } user[0];
+};
+
+#define CPSW_MDIO_DIV_DEF      0xff
+#define PHY_REG_MASK           0x1f
+#define PHY_ID_MASK            0x1f
+
+/*
+ * This timeout definition is a worst-case ultra defensive measure against
+ * unexpected controller lock ups.  Ideally, we should never ever hit this
+ * scenario in practice.
+ */
+#define CPSW_MDIO_TIMEOUT            100 /* msecs */
+
+struct cpsw_mdio {
+       struct cpsw_mdio_regs *regs;
+       struct mii_dev *bus;
+       int div;
+};
+
+/* wait until hardware is ready for another user access */
+static int cpsw_mdio_wait_for_user_access(struct cpsw_mdio *mdio)
+{
+       return wait_for_bit_le32(&mdio->regs->user[0].access,
+                                USERACCESS_GO, false,
+                                CPSW_MDIO_TIMEOUT, false);
+}
+
+static int cpsw_mdio_read(struct mii_dev *bus, int phy_id,
+                         int dev_addr, int phy_reg)
+{
+       struct cpsw_mdio *mdio = bus->priv;
+       int data, ret;
+       u32 reg;
+
+       if (phy_reg & ~PHY_REG_MASK || phy_id & ~PHY_ID_MASK)
+               return -EINVAL;
+
+       ret = cpsw_mdio_wait_for_user_access(mdio);
+       if (ret)
+               return ret;
+       reg = (USERACCESS_GO | USERACCESS_READ |
+              (phy_reg << USERACCESS_PHY_REG_SHIFT) |
+              (phy_id << USERACCESS_PHY_ADDR_SHIFT));
+       writel(reg, &mdio->regs->user[0].access);
+       ret = cpsw_mdio_wait_for_user_access(mdio);
+       if (ret)
+               return ret;
+
+       reg = readl(&mdio->regs->user[0].access);
+       data = (reg & USERACCESS_ACK) ? (reg & USERACCESS_DATA) : -1;
+       return data;
+}
+
+static int cpsw_mdio_write(struct mii_dev *bus, int phy_id, int dev_addr,
+                          int phy_reg, u16 data)
+{
+       struct cpsw_mdio *mdio = bus->priv;
+       u32 reg;
+       int ret;
+
+       if (phy_reg & ~PHY_REG_MASK || phy_id & ~PHY_ID_MASK)
+               return -EINVAL;
+
+       ret = cpsw_mdio_wait_for_user_access(mdio);
+       if (ret)
+               return ret;
+       reg = (USERACCESS_GO | USERACCESS_WRITE |
+              (phy_reg << USERACCESS_PHY_REG_SHIFT) |
+              (phy_id << USERACCESS_PHY_ADDR_SHIFT) |
+              (data & USERACCESS_DATA));
+       writel(reg, &mdio->regs->user[0].access);
+
+       return cpsw_mdio_wait_for_user_access(mdio);
+}
+
+u32 cpsw_mdio_get_alive(struct mii_dev *bus)
+{
+       struct cpsw_mdio *mdio = bus->priv;
+       u32 val;
+
+       val = readl(&mdio->regs->control);
+       return val & GENMASK(15, 0);
+}
+
+struct mii_dev *cpsw_mdio_init(const char *name, u32 mdio_base,
+                              u32 bus_freq, int fck_freq)
+{
+       struct cpsw_mdio *cpsw_mdio;
+       int ret;
+
+       cpsw_mdio = calloc(1, sizeof(*cpsw_mdio));
+       if (!cpsw_mdio) {
+               debug("failed to alloc cpsw_mdio\n");
+               return NULL;
+       }
+
+       cpsw_mdio->bus = mdio_alloc();
+       if (!cpsw_mdio->bus) {
+               debug("failed to alloc mii bus\n");
+               free(cpsw_mdio);
+               return NULL;
+       }
+
+       cpsw_mdio->regs = (struct cpsw_mdio_regs *)mdio_base;
+
+       if (!bus_freq || !fck_freq)
+               cpsw_mdio->div = CPSW_MDIO_DIV_DEF;
+       else
+               cpsw_mdio->div = (fck_freq / bus_freq) - 1;
+       cpsw_mdio->div &= CONTROL_DIV_MASK;
+
+       /* set enable and clock divider */
+       writel(cpsw_mdio->div | CONTROL_ENABLE | CONTROL_FAULT |
+              CONTROL_FAULT_ENABLE, &cpsw_mdio->regs->control);
+       wait_for_bit_le32(&cpsw_mdio->regs->control,
+                         CONTROL_IDLE, false, CPSW_MDIO_TIMEOUT, true);
+
+       /*
+        * wait for scan logic to settle:
+        * the scan time consists of (a) a large fixed component, and (b) a
+        * small component that varies with the mii bus frequency.  These
+        * were estimated using measurements at 1.1 and 2.2 MHz on tnetv107x
+        * silicon.  Since the effect of (b) was found to be largely
+        * negligible, we keep things simple here.
+        */
+       mdelay(1);
+
+       cpsw_mdio->bus->read = cpsw_mdio_read;
+       cpsw_mdio->bus->write = cpsw_mdio_write;
+       cpsw_mdio->bus->priv = cpsw_mdio;
+       snprintf(cpsw_mdio->bus->name, sizeof(cpsw_mdio->bus->name), name);
+
+       ret = mdio_register(cpsw_mdio->bus);
+       if (ret < 0) {
+               debug("failed to register mii bus\n");
+               goto free_bus;
+       }
+
+       return cpsw_mdio->bus;
+
+free_bus:
+       mdio_free(cpsw_mdio->bus);
+       free(cpsw_mdio);
+       return NULL;
+}
+
+void cpsw_mdio_free(struct mii_dev *bus)
+{
+       struct cpsw_mdio *mdio = bus->priv;
+       u32 reg;
+
+       /* disable mdio */
+       reg = readl(&mdio->regs->control);
+       reg &= ~CONTROL_ENABLE;
+       writel(reg, &mdio->regs->control);
+
+       mdio_unregister(bus);
+       mdio_free(bus);
+       free(mdio);
+}
diff --git a/drivers/net/ti/cpsw_mdio.h b/drivers/net/ti/cpsw_mdio.h
new file mode 100644 (file)
index 0000000..4a76d4e
--- /dev/null
@@ -0,0 +1,18 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * CPSW MDIO generic driver API for TI AMxx/K2x/EMAC devices.
+ *
+ * Copyright (C) 2018 Texas Instruments Incorporated - http://www.ti.com/
+ */
+
+#ifndef CPSW_MDIO_H_
+#define CPSW_MDIO_H_
+
+struct cpsw_mdio;
+
+struct mii_dev *cpsw_mdio_init(const char *name, u32 mdio_base,
+                              u32 bus_freq, int fck_freq);
+void cpsw_mdio_free(struct mii_dev *bus);
+u32 cpsw_mdio_get_alive(struct mii_dev *bus);
+
+#endif /* CPSW_MDIO_H_ */
diff --git a/drivers/net/ti/davinci_emac.c b/drivers/net/ti/davinci_emac.c
new file mode 100644 (file)
index 0000000..bb879d8
--- /dev/null
@@ -0,0 +1,901 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Ethernet driver for TI TMS320DM644x (DaVinci) chips.
+ *
+ * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
+ *
+ * Parts shamelessly stolen from TI's dm644x_emac.c. Original copyright
+ * follows:
+ *
+ * ----------------------------------------------------------------------------
+ *
+ * dm644x_emac.c
+ *
+ * TI DaVinci (DM644X) EMAC peripheral driver source for DV-EVM
+ *
+ * Copyright (C) 2005 Texas Instruments.
+ *
+ * ----------------------------------------------------------------------------
+ *
+ * Modifications:
+ * ver. 1.0: Sep 2005, Anant Gole - Created EMAC version for uBoot.
+ * ver  1.1: Nov 2005, Anant Gole - Extended the RX logic for multiple descriptors
+ */
+#include <common.h>
+#include <command.h>
+#include <net.h>
+#include <miiphy.h>
+#include <malloc.h>
+#include <netdev.h>
+#include <linux/compiler.h>
+#include <asm/arch/emac_defs.h>
+#include <asm/io.h>
+#include "davinci_emac.h"
+
+unsigned int   emac_dbg = 0;
+#define debug_emac(fmt,args...)        if (emac_dbg) printf(fmt,##args)
+
+#ifdef EMAC_HW_RAM_ADDR
+static inline unsigned long BD_TO_HW(unsigned long x)
+{
+       if (x == 0)
+               return 0;
+
+       return x - EMAC_WRAPPER_RAM_ADDR + EMAC_HW_RAM_ADDR;
+}
+
+static inline unsigned long HW_TO_BD(unsigned long x)
+{
+       if (x == 0)
+               return 0;
+
+       return x - EMAC_HW_RAM_ADDR + EMAC_WRAPPER_RAM_ADDR;
+}
+#else
+#define BD_TO_HW(x)    (x)
+#define HW_TO_BD(x)    (x)
+#endif
+
+#ifdef DAVINCI_EMAC_GIG_ENABLE
+#define emac_gigabit_enable(phy_addr)  davinci_eth_gigabit_enable(phy_addr)
+#else
+#define emac_gigabit_enable(phy_addr)  /* no gigabit to enable */
+#endif
+
+#if !defined(CONFIG_SYS_EMAC_TI_CLKDIV)
+#define CONFIG_SYS_EMAC_TI_CLKDIV      ((EMAC_MDIO_BUS_FREQ / \
+               EMAC_MDIO_CLOCK_FREQ) - 1)
+#endif
+
+static void davinci_eth_mdio_enable(void);
+
+static int gen_init_phy(int phy_addr);
+static int gen_is_phy_connected(int phy_addr);
+static int gen_get_link_speed(int phy_addr);
+static int gen_auto_negotiate(int phy_addr);
+
+void eth_mdio_enable(void)
+{
+       davinci_eth_mdio_enable();
+}
+
+/* EMAC Addresses */
+static volatile emac_regs      *adap_emac = (emac_regs *)EMAC_BASE_ADDR;
+static volatile ewrap_regs     *adap_ewrap = (ewrap_regs *)EMAC_WRAPPER_BASE_ADDR;
+static volatile mdio_regs      *adap_mdio = (mdio_regs *)EMAC_MDIO_BASE_ADDR;
+
+/* EMAC descriptors */
+static volatile emac_desc      *emac_rx_desc = (emac_desc *)(EMAC_WRAPPER_RAM_ADDR + EMAC_RX_DESC_BASE);
+static volatile emac_desc      *emac_tx_desc = (emac_desc *)(EMAC_WRAPPER_RAM_ADDR + EMAC_TX_DESC_BASE);
+static volatile emac_desc      *emac_rx_active_head = 0;
+static volatile emac_desc      *emac_rx_active_tail = 0;
+static int                     emac_rx_queue_active = 0;
+
+/* Receive packet buffers */
+static unsigned char emac_rx_buffers[EMAC_MAX_RX_BUFFERS * EMAC_RXBUF_SIZE]
+                               __aligned(ARCH_DMA_MINALIGN);
+
+#ifndef CONFIG_SYS_DAVINCI_EMAC_PHY_COUNT
+#define CONFIG_SYS_DAVINCI_EMAC_PHY_COUNT      3
+#endif
+
+/* PHY address for a discovered PHY (0xff - not found) */
+static u_int8_t        active_phy_addr[CONFIG_SYS_DAVINCI_EMAC_PHY_COUNT];
+
+/* number of PHY found active */
+static u_int8_t        num_phy;
+
+phy_t                          phy[CONFIG_SYS_DAVINCI_EMAC_PHY_COUNT];
+
+static int davinci_eth_set_mac_addr(struct eth_device *dev)
+{
+       unsigned long           mac_hi;
+       unsigned long           mac_lo;
+
+       /*
+        * Set MAC Addresses & Init multicast Hash to 0 (disable any multicast
+        * receive)
+        *  Using channel 0 only - other channels are disabled
+        *  */
+       writel(0, &adap_emac->MACINDEX);
+       mac_hi = (dev->enetaddr[3] << 24) |
+                (dev->enetaddr[2] << 16) |
+                (dev->enetaddr[1] << 8)  |
+                (dev->enetaddr[0]);
+       mac_lo = (dev->enetaddr[5] << 8) |
+                (dev->enetaddr[4]);
+
+       writel(mac_hi, &adap_emac->MACADDRHI);
+#if defined(DAVINCI_EMAC_VERSION2)
+       writel(mac_lo | EMAC_MAC_ADDR_IS_VALID | EMAC_MAC_ADDR_MATCH,
+              &adap_emac->MACADDRLO);
+#else
+       writel(mac_lo, &adap_emac->MACADDRLO);
+#endif
+
+       writel(0, &adap_emac->MACHASH1);
+       writel(0, &adap_emac->MACHASH2);
+
+       /* Set source MAC address - REQUIRED */
+       writel(mac_hi, &adap_emac->MACSRCADDRHI);
+       writel(mac_lo, &adap_emac->MACSRCADDRLO);
+
+
+       return 0;
+}
+
+static void davinci_eth_mdio_enable(void)
+{
+       u_int32_t       clkdiv;
+
+       clkdiv = CONFIG_SYS_EMAC_TI_CLKDIV;
+
+       writel((clkdiv & 0xff) |
+              MDIO_CONTROL_ENABLE |
+              MDIO_CONTROL_FAULT |
+              MDIO_CONTROL_FAULT_ENABLE,
+              &adap_mdio->CONTROL);
+
+       while (readl(&adap_mdio->CONTROL) & MDIO_CONTROL_IDLE)
+               ;
+}
+
+/*
+ * Tries to find an active connected PHY. Returns 1 if address if found.
+ * If no active PHY (or more than one PHY) found returns 0.
+ * Sets active_phy_addr variable.
+ */
+static int davinci_eth_phy_detect(void)
+{
+       u_int32_t       phy_act_state;
+       int             i;
+       int             j;
+       unsigned int    count = 0;
+
+       for (i = 0; i < CONFIG_SYS_DAVINCI_EMAC_PHY_COUNT; i++)
+               active_phy_addr[i] = 0xff;
+
+       udelay(1000);
+       phy_act_state = readl(&adap_mdio->ALIVE);
+
+       if (phy_act_state == 0)
+               return 0;               /* No active PHYs */
+
+       debug_emac("davinci_eth_phy_detect(), ALIVE = 0x%08x\n", phy_act_state);
+
+       for (i = 0, j = 0; i < 32; i++)
+               if (phy_act_state & (1 << i)) {
+                       count++;
+                       if (count <= CONFIG_SYS_DAVINCI_EMAC_PHY_COUNT) {
+                               active_phy_addr[j++] = i;
+                       } else {
+                               printf("%s: to many PHYs detected.\n",
+                                       __func__);
+                               count = 0;
+                               break;
+                       }
+               }
+
+       num_phy = count;
+
+       return count;
+}
+
+
+/* Read a PHY register via MDIO inteface. Returns 1 on success, 0 otherwise */
+int davinci_eth_phy_read(u_int8_t phy_addr, u_int8_t reg_num, u_int16_t *data)
+{
+       int     tmp;
+
+       while (readl(&adap_mdio->USERACCESS0) & MDIO_USERACCESS0_GO)
+               ;
+
+       writel(MDIO_USERACCESS0_GO |
+              MDIO_USERACCESS0_WRITE_READ |
+              ((reg_num & 0x1f) << 21) |
+              ((phy_addr & 0x1f) << 16),
+              &adap_mdio->USERACCESS0);
+
+       /* Wait for command to complete */
+       while ((tmp = readl(&adap_mdio->USERACCESS0)) & MDIO_USERACCESS0_GO)
+               ;
+
+       if (tmp & MDIO_USERACCESS0_ACK) {
+               *data = tmp & 0xffff;
+               return 1;
+       }
+
+       return 0;
+}
+
+/* Write to a PHY register via MDIO inteface. Blocks until operation is complete. */
+int davinci_eth_phy_write(u_int8_t phy_addr, u_int8_t reg_num, u_int16_t data)
+{
+
+       while (readl(&adap_mdio->USERACCESS0) & MDIO_USERACCESS0_GO)
+               ;
+
+       writel(MDIO_USERACCESS0_GO |
+              MDIO_USERACCESS0_WRITE_WRITE |
+              ((reg_num & 0x1f) << 21) |
+              ((phy_addr & 0x1f) << 16) |
+              (data & 0xffff),
+              &adap_mdio->USERACCESS0);
+
+       /* Wait for command to complete */
+       while (readl(&adap_mdio->USERACCESS0) & MDIO_USERACCESS0_GO)
+               ;
+
+       return 1;
+}
+
+/* PHY functions for a generic PHY */
+static int gen_init_phy(int phy_addr)
+{
+       int     ret = 1;
+
+       if (gen_get_link_speed(phy_addr)) {
+               /* Try another time */
+               ret = gen_get_link_speed(phy_addr);
+       }
+
+       return(ret);
+}
+
+static int gen_is_phy_connected(int phy_addr)
+{
+       u_int16_t       dummy;
+
+       return davinci_eth_phy_read(phy_addr, MII_PHYSID1, &dummy);
+}
+
+static int get_active_phy(void)
+{
+       int i;
+
+       for (i = 0; i < num_phy; i++)
+               if (phy[i].get_link_speed(active_phy_addr[i]))
+                       return i;
+
+       return -1;      /* Return error if no link */
+}
+
+static int gen_get_link_speed(int phy_addr)
+{
+       u_int16_t       tmp;
+
+       if (davinci_eth_phy_read(phy_addr, MII_STATUS_REG, &tmp) &&
+                       (tmp & 0x04)) {
+#if defined(CONFIG_DRIVER_TI_EMAC_USE_RMII) && \
+               defined(CONFIG_MACH_DAVINCI_DA850_EVM)
+               davinci_eth_phy_read(phy_addr, MII_LPA, &tmp);
+
+               /* Speed doesn't matter, there is no setting for it in EMAC. */
+               if (tmp & (LPA_100FULL | LPA_10FULL)) {
+                       /* set EMAC for Full Duplex  */
+                       writel(EMAC_MACCONTROL_MIIEN_ENABLE |
+                                       EMAC_MACCONTROL_FULLDUPLEX_ENABLE,
+                                       &adap_emac->MACCONTROL);
+               } else {
+                       /*set EMAC for Half Duplex  */
+                       writel(EMAC_MACCONTROL_MIIEN_ENABLE,
+                                       &adap_emac->MACCONTROL);
+               }
+
+               if (tmp & (LPA_100FULL | LPA_100HALF))
+                       writel(readl(&adap_emac->MACCONTROL) |
+                                       EMAC_MACCONTROL_RMIISPEED_100,
+                                        &adap_emac->MACCONTROL);
+               else
+                       writel(readl(&adap_emac->MACCONTROL) &
+                                       ~EMAC_MACCONTROL_RMIISPEED_100,
+                                        &adap_emac->MACCONTROL);
+#endif
+               return(1);
+       }
+
+       return(0);
+}
+
+static int gen_auto_negotiate(int phy_addr)
+{
+       u_int16_t       tmp;
+       u_int16_t       val;
+       unsigned long   cntr = 0;
+
+       if (!davinci_eth_phy_read(phy_addr, MII_BMCR, &tmp))
+               return 0;
+
+       val = tmp | BMCR_FULLDPLX | BMCR_ANENABLE |
+                                               BMCR_SPEED100;
+       davinci_eth_phy_write(phy_addr, MII_BMCR, val);
+
+       if (!davinci_eth_phy_read(phy_addr, MII_ADVERTISE, &val))
+               return 0;
+
+       val |= (ADVERTISE_100FULL | ADVERTISE_100HALF | ADVERTISE_10FULL |
+                                                       ADVERTISE_10HALF);
+       davinci_eth_phy_write(phy_addr, MII_ADVERTISE, val);
+
+       if (!davinci_eth_phy_read(phy_addr, MII_BMCR, &tmp))
+               return(0);
+
+#ifdef DAVINCI_EMAC_GIG_ENABLE
+       davinci_eth_phy_read(phy_addr, MII_CTRL1000, &val);
+       val |= PHY_1000BTCR_1000FD;
+       val &= ~PHY_1000BTCR_1000HD;
+       davinci_eth_phy_write(phy_addr, MII_CTRL1000, val);
+       davinci_eth_phy_read(phy_addr, MII_CTRL1000, &val);
+#endif
+
+       /* Restart Auto_negotiation  */
+       tmp |= BMCR_ANRESTART;
+       davinci_eth_phy_write(phy_addr, MII_BMCR, tmp);
+
+       /*check AutoNegotiate complete */
+       do {
+               udelay(40000);
+               if (!davinci_eth_phy_read(phy_addr, MII_BMSR, &tmp))
+                       return 0;
+
+               if (tmp & BMSR_ANEGCOMPLETE)
+                       break;
+
+               cntr++;
+       } while (cntr < 200);
+
+       if (!davinci_eth_phy_read(phy_addr, MII_BMSR, &tmp))
+               return(0);
+
+       if (!(tmp & BMSR_ANEGCOMPLETE))
+               return(0);
+
+       return(gen_get_link_speed(phy_addr));
+}
+/* End of generic PHY functions */
+
+
+#if defined(CONFIG_MII) || defined(CONFIG_CMD_MII)
+static int davinci_mii_phy_read(struct mii_dev *bus, int addr, int devad,
+                               int reg)
+{
+       unsigned short value = 0;
+       int retval = davinci_eth_phy_read(addr, reg, &value);
+
+       return retval ? value : -EIO;
+}
+
+static int davinci_mii_phy_write(struct mii_dev *bus, int addr, int devad,
+                                int reg, u16 value)
+{
+       return davinci_eth_phy_write(addr, reg, value) ? 0 : 1;
+}
+#endif
+
+static void  __attribute__((unused)) davinci_eth_gigabit_enable(int phy_addr)
+{
+       u_int16_t data;
+
+       if (davinci_eth_phy_read(phy_addr, 0, &data)) {
+               if (data & (1 << 6)) { /* speed selection MSB */
+                       /*
+                        * Check if link detected is giga-bit
+                        * If Gigabit mode detected, enable gigbit in MAC
+                        */
+                       writel(readl(&adap_emac->MACCONTROL) |
+                               EMAC_MACCONTROL_GIGFORCE |
+                               EMAC_MACCONTROL_GIGABIT_ENABLE,
+                               &adap_emac->MACCONTROL);
+               }
+       }
+}
+
+/* Eth device open */
+static int davinci_eth_open(struct eth_device *dev, bd_t *bis)
+{
+       dv_reg_p                addr;
+       u_int32_t               clkdiv, cnt, mac_control;
+       uint16_t                __maybe_unused lpa_val;
+       volatile emac_desc      *rx_desc;
+       int                     index;
+
+       debug_emac("+ emac_open\n");
+
+       /* Reset EMAC module and disable interrupts in wrapper */
+       writel(1, &adap_emac->SOFTRESET);
+       while (readl(&adap_emac->SOFTRESET) != 0)
+               ;
+#if defined(DAVINCI_EMAC_VERSION2)
+       writel(1, &adap_ewrap->softrst);
+       while (readl(&adap_ewrap->softrst) != 0)
+               ;
+#else
+       writel(0, &adap_ewrap->EWCTL);
+       for (cnt = 0; cnt < 5; cnt++) {
+               clkdiv = readl(&adap_ewrap->EWCTL);
+       }
+#endif
+
+#if defined(CONFIG_DRIVER_TI_EMAC_USE_RMII) && \
+       defined(CONFIG_MACH_DAVINCI_DA850_EVM)
+       adap_ewrap->c0rxen = adap_ewrap->c1rxen = adap_ewrap->c2rxen = 0;
+       adap_ewrap->c0txen = adap_ewrap->c1txen = adap_ewrap->c2txen = 0;
+       adap_ewrap->c0miscen = adap_ewrap->c1miscen = adap_ewrap->c2miscen = 0;
+#endif
+       rx_desc = emac_rx_desc;
+
+       writel(1, &adap_emac->TXCONTROL);
+       writel(1, &adap_emac->RXCONTROL);
+
+       davinci_eth_set_mac_addr(dev);
+
+       /* Set DMA 8 TX / 8 RX Head pointers to 0 */
+       addr = &adap_emac->TX0HDP;
+       for (cnt = 0; cnt < 8; cnt++)
+               writel(0, addr++);
+
+       addr = &adap_emac->RX0HDP;
+       for (cnt = 0; cnt < 8; cnt++)
+               writel(0, addr++);
+
+       /* Clear Statistics (do this before setting MacControl register) */
+       addr = &adap_emac->RXGOODFRAMES;
+       for(cnt = 0; cnt < EMAC_NUM_STATS; cnt++)
+               writel(0, addr++);
+
+       /* No multicast addressing */
+       writel(0, &adap_emac->MACHASH1);
+       writel(0, &adap_emac->MACHASH2);
+
+       /* Create RX queue and set receive process in place */
+       emac_rx_active_head = emac_rx_desc;
+       for (cnt = 0; cnt < EMAC_MAX_RX_BUFFERS; cnt++) {
+               rx_desc->next = BD_TO_HW((u_int32_t)(rx_desc + 1));
+               rx_desc->buffer = &emac_rx_buffers[cnt * EMAC_RXBUF_SIZE];
+               rx_desc->buff_off_len = EMAC_MAX_ETHERNET_PKT_SIZE;
+               rx_desc->pkt_flag_len = EMAC_CPPI_OWNERSHIP_BIT;
+               rx_desc++;
+       }
+
+       /* Finalize the rx desc list */
+       rx_desc--;
+       rx_desc->next = 0;
+       emac_rx_active_tail = rx_desc;
+       emac_rx_queue_active = 1;
+
+       /* Enable TX/RX */
+       writel(EMAC_MAX_ETHERNET_PKT_SIZE, &adap_emac->RXMAXLEN);
+       writel(0, &adap_emac->RXBUFFEROFFSET);
+
+       /*
+        * No fancy configs - Use this for promiscous debug
+        *   - EMAC_RXMBPENABLE_RXCAFEN_ENABLE
+        */
+       writel(EMAC_RXMBPENABLE_RXBROADEN, &adap_emac->RXMBPENABLE);
+
+       /* Enable ch 0 only */
+       writel(1, &adap_emac->RXUNICASTSET);
+
+       /* Init MDIO & get link state */
+       clkdiv = CONFIG_SYS_EMAC_TI_CLKDIV;
+       writel((clkdiv & 0xff) | MDIO_CONTROL_ENABLE | MDIO_CONTROL_FAULT,
+              &adap_mdio->CONTROL);
+
+       /* We need to wait for MDIO to start */
+       udelay(1000);
+
+       index = get_active_phy();
+       if (index == -1)
+               return(0);
+
+       /* Enable MII interface */
+       mac_control = EMAC_MACCONTROL_MIIEN_ENABLE;
+#ifdef DAVINCI_EMAC_GIG_ENABLE
+       davinci_eth_phy_read(active_phy_addr[index], MII_STAT1000, &lpa_val);
+       if (lpa_val & PHY_1000BTSR_1000FD) {
+               debug_emac("eth_open : gigabit negotiated\n");
+               mac_control |= EMAC_MACCONTROL_FULLDUPLEX_ENABLE;
+               mac_control |= EMAC_MACCONTROL_GIGABIT_ENABLE;
+       }
+#endif
+
+       davinci_eth_phy_read(active_phy_addr[index], MII_LPA, &lpa_val);
+       if (lpa_val & (LPA_100FULL | LPA_10FULL))
+               /* set EMAC for Full Duplex  */
+               mac_control |= EMAC_MACCONTROL_FULLDUPLEX_ENABLE;
+#if defined(CONFIG_SOC_DA8XX) || \
+       (defined(CONFIG_OMAP34XX) && defined(CONFIG_DRIVER_TI_EMAC_USE_RMII))
+       mac_control |= EMAC_MACCONTROL_RMIISPEED_100;
+#endif
+       writel(mac_control, &adap_emac->MACCONTROL);
+       /* Start receive process */
+       writel(BD_TO_HW((u_int32_t)emac_rx_desc), &adap_emac->RX0HDP);
+
+       debug_emac("- emac_open\n");
+
+       return(1);
+}
+
+/* EMAC Channel Teardown */
+static void davinci_eth_ch_teardown(int ch)
+{
+       dv_reg          dly = 0xff;
+       dv_reg          cnt;
+
+       debug_emac("+ emac_ch_teardown\n");
+
+       if (ch == EMAC_CH_TX) {
+               /* Init TX channel teardown */
+               writel(0, &adap_emac->TXTEARDOWN);
+               do {
+                       /*
+                        * Wait here for Tx teardown completion interrupt to
+                        * occur. Note: A task delay can be called here to pend
+                        * rather than occupying CPU cycles - anyway it has
+                        * been found that teardown takes very few cpu cycles
+                        * and does not affect functionality
+                        */
+                       dly--;
+                       udelay(1);
+                       if (dly == 0)
+                               break;
+                       cnt = readl(&adap_emac->TX0CP);
+               } while (cnt != 0xfffffffc);
+               writel(cnt, &adap_emac->TX0CP);
+               writel(0, &adap_emac->TX0HDP);
+       } else {
+               /* Init RX channel teardown */
+               writel(0, &adap_emac->RXTEARDOWN);
+               do {
+                       /*
+                        * Wait here for Rx teardown completion interrupt to
+                        * occur. Note: A task delay can be called here to pend
+                        * rather than occupying CPU cycles - anyway it has
+                        * been found that teardown takes very few cpu cycles
+                        * and does not affect functionality
+                        */
+                       dly--;
+                       udelay(1);
+                       if (dly == 0)
+                               break;
+                       cnt = readl(&adap_emac->RX0CP);
+               } while (cnt != 0xfffffffc);
+               writel(cnt, &adap_emac->RX0CP);
+               writel(0, &adap_emac->RX0HDP);
+       }
+
+       debug_emac("- emac_ch_teardown\n");
+}
+
+/* Eth device close */
+static void davinci_eth_close(struct eth_device *dev)
+{
+       debug_emac("+ emac_close\n");
+
+       davinci_eth_ch_teardown(EMAC_CH_TX);    /* TX Channel teardown */
+       if (readl(&adap_emac->RXCONTROL) & 1)
+               davinci_eth_ch_teardown(EMAC_CH_RX); /* RX Channel teardown */
+
+       /* Reset EMAC module and disable interrupts in wrapper */
+       writel(1, &adap_emac->SOFTRESET);
+#if defined(DAVINCI_EMAC_VERSION2)
+       writel(1, &adap_ewrap->softrst);
+#else
+       writel(0, &adap_ewrap->EWCTL);
+#endif
+
+#if defined(CONFIG_DRIVER_TI_EMAC_USE_RMII) && \
+       defined(CONFIG_MACH_DAVINCI_DA850_EVM)
+       adap_ewrap->c0rxen = adap_ewrap->c1rxen = adap_ewrap->c2rxen = 0;
+       adap_ewrap->c0txen = adap_ewrap->c1txen = adap_ewrap->c2txen = 0;
+       adap_ewrap->c0miscen = adap_ewrap->c1miscen = adap_ewrap->c2miscen = 0;
+#endif
+       debug_emac("- emac_close\n");
+}
+
+static int tx_send_loop = 0;
+
+/*
+ * This function sends a single packet on the network and returns
+ * positive number (number of bytes transmitted) or negative for error
+ */
+static int davinci_eth_send_packet (struct eth_device *dev,
+                                       void *packet, int length)
+{
+       int ret_status = -1;
+       int index;
+       tx_send_loop = 0;
+
+       index = get_active_phy();
+       if (index == -1) {
+               printf(" WARN: emac_send_packet: No link\n");
+               return (ret_status);
+       }
+
+       /* Check packet size and if < EMAC_MIN_ETHERNET_PKT_SIZE, pad it up */
+       if (length < EMAC_MIN_ETHERNET_PKT_SIZE) {
+               length = EMAC_MIN_ETHERNET_PKT_SIZE;
+       }
+
+       /* Populate the TX descriptor */
+       emac_tx_desc->next = 0;
+       emac_tx_desc->buffer = (u_int8_t *) packet;
+       emac_tx_desc->buff_off_len = (length & 0xffff);
+       emac_tx_desc->pkt_flag_len = ((length & 0xffff) |
+                                     EMAC_CPPI_SOP_BIT |
+                                     EMAC_CPPI_OWNERSHIP_BIT |
+                                     EMAC_CPPI_EOP_BIT);
+
+       flush_dcache_range((unsigned long)packet,
+                          (unsigned long)packet + ALIGN(length, PKTALIGN));
+
+       /* Send the packet */
+       writel(BD_TO_HW((unsigned long)emac_tx_desc), &adap_emac->TX0HDP);
+
+       /* Wait for packet to complete or link down */
+       while (1) {
+               if (!phy[index].get_link_speed(active_phy_addr[index])) {
+                       davinci_eth_ch_teardown (EMAC_CH_TX);
+                       return (ret_status);
+               }
+
+               if (readl(&adap_emac->TXINTSTATRAW) & 0x01) {
+                       ret_status = length;
+                       break;
+               }
+               tx_send_loop++;
+       }
+
+       return (ret_status);
+}
+
+/*
+ * This function handles receipt of a packet from the network
+ */
+static int davinci_eth_rcv_packet (struct eth_device *dev)
+{
+       volatile emac_desc *rx_curr_desc;
+       volatile emac_desc *curr_desc;
+       volatile emac_desc *tail_desc;
+       int status, ret = -1;
+
+       rx_curr_desc = emac_rx_active_head;
+       if (!rx_curr_desc)
+               return 0;
+       status = rx_curr_desc->pkt_flag_len;
+       if ((status & EMAC_CPPI_OWNERSHIP_BIT) == 0) {
+               if (status & EMAC_CPPI_RX_ERROR_FRAME) {
+                       /* Error in packet - discard it and requeue desc */
+                       printf ("WARN: emac_rcv_pkt: Error in packet\n");
+               } else {
+                       unsigned long tmp = (unsigned long)rx_curr_desc->buffer;
+                       unsigned short len =
+                               rx_curr_desc->buff_off_len & 0xffff;
+
+                       invalidate_dcache_range(tmp, tmp + ALIGN(len, PKTALIGN));
+                       net_process_received_packet(rx_curr_desc->buffer, len);
+                       ret = len;
+               }
+
+               /* Ack received packet descriptor */
+               writel(BD_TO_HW((ulong)rx_curr_desc), &adap_emac->RX0CP);
+               curr_desc = rx_curr_desc;
+               emac_rx_active_head =
+                       (volatile emac_desc *) (HW_TO_BD(rx_curr_desc->next));
+
+               if (status & EMAC_CPPI_EOQ_BIT) {
+                       if (emac_rx_active_head) {
+                               writel(BD_TO_HW((ulong)emac_rx_active_head),
+                                      &adap_emac->RX0HDP);
+                       } else {
+                               emac_rx_queue_active = 0;
+                               printf ("INFO:emac_rcv_packet: RX Queue not active\n");
+                       }
+               }
+
+               /* Recycle RX descriptor */
+               rx_curr_desc->buff_off_len = EMAC_MAX_ETHERNET_PKT_SIZE;
+               rx_curr_desc->pkt_flag_len = EMAC_CPPI_OWNERSHIP_BIT;
+               rx_curr_desc->next = 0;
+
+               if (emac_rx_active_head == 0) {
+                       printf ("INFO: emac_rcv_pkt: active queue head = 0\n");
+                       emac_rx_active_head = curr_desc;
+                       emac_rx_active_tail = curr_desc;
+                       if (emac_rx_queue_active != 0) {
+                               writel(BD_TO_HW((ulong)emac_rx_active_head),
+                                      &adap_emac->RX0HDP);
+                               printf ("INFO: emac_rcv_pkt: active queue head = 0, HDP fired\n");
+                               emac_rx_queue_active = 1;
+                       }
+               } else {
+                       tail_desc = emac_rx_active_tail;
+                       emac_rx_active_tail = curr_desc;
+                       tail_desc->next = BD_TO_HW((ulong) curr_desc);
+                       status = tail_desc->pkt_flag_len;
+                       if (status & EMAC_CPPI_EOQ_BIT) {
+                               writel(BD_TO_HW((ulong)curr_desc),
+                                      &adap_emac->RX0HDP);
+                               status &= ~EMAC_CPPI_EOQ_BIT;
+                               tail_desc->pkt_flag_len = status;
+                       }
+               }
+               return (ret);
+       }
+       return (0);
+}
+
+/*
+ * This function initializes the emac hardware. It does NOT initialize
+ * EMAC modules power or pin multiplexors, that is done by board_init()
+ * much earlier in bootup process. Returns 1 on success, 0 otherwise.
+ */
+int davinci_emac_initialize(void)
+{
+       u_int32_t       phy_id;
+       u_int16_t       tmp;
+       int             i;
+       int             ret;
+       struct eth_device *dev;
+
+       dev = malloc(sizeof *dev);
+
+       if (dev == NULL)
+               return -1;
+
+       memset(dev, 0, sizeof *dev);
+       strcpy(dev->name, "DaVinci-EMAC");
+
+       dev->iobase = 0;
+       dev->init = davinci_eth_open;
+       dev->halt = davinci_eth_close;
+       dev->send = davinci_eth_send_packet;
+       dev->recv = davinci_eth_rcv_packet;
+       dev->write_hwaddr = davinci_eth_set_mac_addr;
+
+       eth_register(dev);
+
+       davinci_eth_mdio_enable();
+
+       /* let the EMAC detect the PHYs */
+       udelay(5000);
+
+       for (i = 0; i < 256; i++) {
+               if (readl(&adap_mdio->ALIVE))
+                       break;
+               udelay(1000);
+       }
+
+       if (i >= 256) {
+               printf("No ETH PHY detected!!!\n");
+               return(0);
+       }
+
+       /* Find if PHY(s) is/are connected */
+       ret = davinci_eth_phy_detect();
+       if (!ret)
+               return(0);
+       else
+               debug_emac(" %d ETH PHY detected\n", ret);
+
+       /* Get PHY ID and initialize phy_ops for a detected PHY */
+       for (i = 0; i < num_phy; i++) {
+               if (!davinci_eth_phy_read(active_phy_addr[i], MII_PHYSID1,
+                                                       &tmp)) {
+                       active_phy_addr[i] = 0xff;
+                       continue;
+               }
+
+               phy_id = (tmp << 16) & 0xffff0000;
+
+               if (!davinci_eth_phy_read(active_phy_addr[i], MII_PHYSID2,
+                                                       &tmp)) {
+                       active_phy_addr[i] = 0xff;
+                       continue;
+               }
+
+               phy_id |= tmp & 0x0000ffff;
+
+               switch (phy_id) {
+#ifdef PHY_KSZ8873
+               case PHY_KSZ8873:
+                       sprintf(phy[i].name, "KSZ8873 @ 0x%02x",
+                                               active_phy_addr[i]);
+                       phy[i].init = ksz8873_init_phy;
+                       phy[i].is_phy_connected = ksz8873_is_phy_connected;
+                       phy[i].get_link_speed = ksz8873_get_link_speed;
+                       phy[i].auto_negotiate = ksz8873_auto_negotiate;
+                       break;
+#endif
+#ifdef PHY_LXT972
+               case PHY_LXT972:
+                       sprintf(phy[i].name, "LXT972 @ 0x%02x",
+                                               active_phy_addr[i]);
+                       phy[i].init = lxt972_init_phy;
+                       phy[i].is_phy_connected = lxt972_is_phy_connected;
+                       phy[i].get_link_speed = lxt972_get_link_speed;
+                       phy[i].auto_negotiate = lxt972_auto_negotiate;
+                       break;
+#endif
+#ifdef PHY_DP83848
+               case PHY_DP83848:
+                       sprintf(phy[i].name, "DP83848 @ 0x%02x",
+                                               active_phy_addr[i]);
+                       phy[i].init = dp83848_init_phy;
+                       phy[i].is_phy_connected = dp83848_is_phy_connected;
+                       phy[i].get_link_speed = dp83848_get_link_speed;
+                       phy[i].auto_negotiate = dp83848_auto_negotiate;
+                       break;
+#endif
+#ifdef PHY_ET1011C
+               case PHY_ET1011C:
+                       sprintf(phy[i].name, "ET1011C @ 0x%02x",
+                                               active_phy_addr[i]);
+                       phy[i].init = gen_init_phy;
+                       phy[i].is_phy_connected = gen_is_phy_connected;
+                       phy[i].get_link_speed = et1011c_get_link_speed;
+                       phy[i].auto_negotiate = gen_auto_negotiate;
+                       break;
+#endif
+               default:
+                       sprintf(phy[i].name, "GENERIC @ 0x%02x",
+                                               active_phy_addr[i]);
+                       phy[i].init = gen_init_phy;
+                       phy[i].is_phy_connected = gen_is_phy_connected;
+                       phy[i].get_link_speed = gen_get_link_speed;
+                       phy[i].auto_negotiate = gen_auto_negotiate;
+               }
+
+               debug("Ethernet PHY: %s\n", phy[i].name);
+
+               int retval;
+               struct mii_dev *mdiodev = mdio_alloc();
+               if (!mdiodev)
+                       return -ENOMEM;
+               strncpy(mdiodev->name, phy[i].name, MDIO_NAME_LEN);
+               mdiodev->read = davinci_mii_phy_read;
+               mdiodev->write = davinci_mii_phy_write;
+
+               retval = mdio_register(mdiodev);
+               if (retval < 0)
+                       return retval;
+#ifdef DAVINCI_EMAC_GIG_ENABLE
+#define PHY_CONF_REG   22
+               /* Enable PHY to clock out TX_CLK */
+               davinci_eth_phy_read(active_phy_addr[i], PHY_CONF_REG, &tmp);
+               tmp |= PHY_CONF_TXCLKEN;
+               davinci_eth_phy_write(active_phy_addr[i], PHY_CONF_REG, tmp);
+               davinci_eth_phy_read(active_phy_addr[i], PHY_CONF_REG, &tmp);
+#endif
+       }
+
+#if defined(CONFIG_TI816X) || (defined(CONFIG_DRIVER_TI_EMAC_USE_RMII) && \
+               defined(CONFIG_MACH_DAVINCI_DA850_EVM) && \
+                       !defined(CONFIG_DRIVER_TI_EMAC_RMII_NO_NEGOTIATE))
+       for (i = 0; i < num_phy; i++) {
+               if (phy[i].is_phy_connected(i))
+                       phy[i].auto_negotiate(i);
+       }
+#endif
+       return(1);
+}
diff --git a/drivers/net/ti/davinci_emac.h b/drivers/net/ti/davinci_emac.h
new file mode 100644 (file)
index 0000000..695855b
--- /dev/null
@@ -0,0 +1,304 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright (C) 2011 Ilya Yanok, Emcraft Systems
+ *
+ * Based on: mach-davinci/emac_defs.h
+ * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
+ */
+
+#ifndef _DAVINCI_EMAC_H_
+#define _DAVINCI_EMAC_H_
+/* Ethernet Min/Max packet size */
+#define EMAC_MIN_ETHERNET_PKT_SIZE     60
+#define EMAC_MAX_ETHERNET_PKT_SIZE     1518
+/* Buffer size (should be aligned on 32 byte and cache line) */
+#define EMAC_RXBUF_SIZE        ALIGN(ALIGN(EMAC_MAX_ETHERNET_PKT_SIZE, 32),\
+                               ARCH_DMA_MINALIGN)
+
+/* Number of RX packet buffers
+ * NOTE: Only 1 buffer supported as of now
+ */
+#define EMAC_MAX_RX_BUFFERS            10
+
+
+/***********************************************
+ ******** Internally used macros ***************
+ ***********************************************/
+
+#define EMAC_CH_TX                     1
+#define EMAC_CH_RX                     0
+
+/* Each descriptor occupies 4 words, lets start RX desc's at 0 and
+ * reserve space for 64 descriptors max
+ */
+#define EMAC_RX_DESC_BASE              0x0
+#define EMAC_TX_DESC_BASE              0x1000
+
+/* EMAC Teardown value */
+#define EMAC_TEARDOWN_VALUE            0xfffffffc
+
+/* MII Status Register */
+#define MII_STATUS_REG                 1
+/* PHY Configuration register */
+#define PHY_CONF_TXCLKEN               (1 << 5)
+
+/* Number of statistics registers */
+#define EMAC_NUM_STATS                 36
+
+
+/* EMAC Descriptor */
+typedef volatile struct _emac_desc
+{
+       u_int32_t       next;           /* Pointer to next descriptor
+                                          in chain */
+       u_int8_t        *buffer;        /* Pointer to data buffer */
+       u_int32_t       buff_off_len;   /* Buffer Offset(MSW) and Length(LSW) */
+       u_int32_t       pkt_flag_len;   /* Packet Flags(MSW) and Length(LSW) */
+} emac_desc;
+
+/* CPPI bit positions */
+#define EMAC_CPPI_SOP_BIT              (0x80000000)
+#define EMAC_CPPI_EOP_BIT              (0x40000000)
+#define EMAC_CPPI_OWNERSHIP_BIT                (0x20000000)
+#define EMAC_CPPI_EOQ_BIT              (0x10000000)
+#define EMAC_CPPI_TEARDOWN_COMPLETE_BIT        (0x08000000)
+#define EMAC_CPPI_PASS_CRC_BIT         (0x04000000)
+
+#define EMAC_CPPI_RX_ERROR_FRAME       (0x03fc0000)
+
+#define EMAC_MACCONTROL_MIIEN_ENABLE           (0x20)
+#define EMAC_MACCONTROL_FULLDUPLEX_ENABLE      (0x1)
+#define EMAC_MACCONTROL_GIGABIT_ENABLE         (1 << 7)
+#define EMAC_MACCONTROL_GIGFORCE               (1 << 17)
+#define EMAC_MACCONTROL_RMIISPEED_100          (1 << 15)
+
+#define EMAC_MAC_ADDR_MATCH            (1 << 19)
+#define EMAC_MAC_ADDR_IS_VALID         (1 << 20)
+
+#define EMAC_RXMBPENABLE_RXCAFEN_ENABLE        (0x200000)
+#define EMAC_RXMBPENABLE_RXBROADEN     (0x2000)
+
+
+#define MDIO_CONTROL_IDLE              (0x80000000)
+#define MDIO_CONTROL_ENABLE            (0x40000000)
+#define MDIO_CONTROL_FAULT_ENABLE      (0x40000)
+#define MDIO_CONTROL_FAULT             (0x80000)
+#define MDIO_USERACCESS0_GO            (0x80000000)
+#define MDIO_USERACCESS0_WRITE_READ    (0x0)
+#define MDIO_USERACCESS0_WRITE_WRITE   (0x40000000)
+#define MDIO_USERACCESS0_ACK           (0x20000000)
+
+/* Ethernet MAC Registers Structure */
+typedef struct  {
+       dv_reg          TXIDVER;
+       dv_reg          TXCONTROL;
+       dv_reg          TXTEARDOWN;
+       u_int8_t        RSVD0[4];
+       dv_reg          RXIDVER;
+       dv_reg          RXCONTROL;
+       dv_reg          RXTEARDOWN;
+       u_int8_t        RSVD1[100];
+       dv_reg          TXINTSTATRAW;
+       dv_reg          TXINTSTATMASKED;
+       dv_reg          TXINTMASKSET;
+       dv_reg          TXINTMASKCLEAR;
+       dv_reg          MACINVECTOR;
+       u_int8_t        RSVD2[12];
+       dv_reg          RXINTSTATRAW;
+       dv_reg          RXINTSTATMASKED;
+       dv_reg          RXINTMASKSET;
+       dv_reg          RXINTMASKCLEAR;
+       dv_reg          MACINTSTATRAW;
+       dv_reg          MACINTSTATMASKED;
+       dv_reg          MACINTMASKSET;
+       dv_reg          MACINTMASKCLEAR;
+       u_int8_t        RSVD3[64];
+       dv_reg          RXMBPENABLE;
+       dv_reg          RXUNICASTSET;
+       dv_reg          RXUNICASTCLEAR;
+       dv_reg          RXMAXLEN;
+       dv_reg          RXBUFFEROFFSET;
+       dv_reg          RXFILTERLOWTHRESH;
+       u_int8_t        RSVD4[8];
+       dv_reg          RX0FLOWTHRESH;
+       dv_reg          RX1FLOWTHRESH;
+       dv_reg          RX2FLOWTHRESH;
+       dv_reg          RX3FLOWTHRESH;
+       dv_reg          RX4FLOWTHRESH;
+       dv_reg          RX5FLOWTHRESH;
+       dv_reg          RX6FLOWTHRESH;
+       dv_reg          RX7FLOWTHRESH;
+       dv_reg          RX0FREEBUFFER;
+       dv_reg          RX1FREEBUFFER;
+       dv_reg          RX2FREEBUFFER;
+       dv_reg          RX3FREEBUFFER;
+       dv_reg          RX4FREEBUFFER;
+       dv_reg          RX5FREEBUFFER;
+       dv_reg          RX6FREEBUFFER;
+       dv_reg          RX7FREEBUFFER;
+       dv_reg          MACCONTROL;
+       dv_reg          MACSTATUS;
+       dv_reg          EMCONTROL;
+       dv_reg          FIFOCONTROL;
+       dv_reg          MACCONFIG;
+       dv_reg          SOFTRESET;
+       u_int8_t        RSVD5[88];
+       dv_reg          MACSRCADDRLO;
+       dv_reg          MACSRCADDRHI;
+       dv_reg          MACHASH1;
+       dv_reg          MACHASH2;
+       dv_reg          BOFFTEST;
+       dv_reg          TPACETEST;
+       dv_reg          RXPAUSE;
+       dv_reg          TXPAUSE;
+       u_int8_t        RSVD6[16];
+       dv_reg          RXGOODFRAMES;
+       dv_reg          RXBCASTFRAMES;
+       dv_reg          RXMCASTFRAMES;
+       dv_reg          RXPAUSEFRAMES;
+       dv_reg          RXCRCERRORS;
+       dv_reg          RXALIGNCODEERRORS;
+       dv_reg          RXOVERSIZED;
+       dv_reg          RXJABBER;
+       dv_reg          RXUNDERSIZED;
+       dv_reg          RXFRAGMENTS;
+       dv_reg          RXFILTERED;
+       dv_reg          RXQOSFILTERED;
+       dv_reg          RXOCTETS;
+       dv_reg          TXGOODFRAMES;
+       dv_reg          TXBCASTFRAMES;
+       dv_reg          TXMCASTFRAMES;
+       dv_reg          TXPAUSEFRAMES;
+       dv_reg          TXDEFERRED;
+       dv_reg          TXCOLLISION;
+       dv_reg          TXSINGLECOLL;
+       dv_reg          TXMULTICOLL;
+       dv_reg          TXEXCESSIVECOLL;
+       dv_reg          TXLATECOLL;
+       dv_reg          TXUNDERRUN;
+       dv_reg          TXCARRIERSENSE;
+       dv_reg          TXOCTETS;
+       dv_reg          FRAME64;
+       dv_reg          FRAME65T127;
+       dv_reg          FRAME128T255;
+       dv_reg          FRAME256T511;
+       dv_reg          FRAME512T1023;
+       dv_reg          FRAME1024TUP;
+       dv_reg          NETOCTETS;
+       dv_reg          RXSOFOVERRUNS;
+       dv_reg          RXMOFOVERRUNS;
+       dv_reg          RXDMAOVERRUNS;
+       u_int8_t        RSVD7[624];
+       dv_reg          MACADDRLO;
+       dv_reg          MACADDRHI;
+       dv_reg          MACINDEX;
+       u_int8_t        RSVD8[244];
+       dv_reg          TX0HDP;
+       dv_reg          TX1HDP;
+       dv_reg          TX2HDP;
+       dv_reg          TX3HDP;
+       dv_reg          TX4HDP;
+       dv_reg          TX5HDP;
+       dv_reg          TX6HDP;
+       dv_reg          TX7HDP;
+       dv_reg          RX0HDP;
+       dv_reg          RX1HDP;
+       dv_reg          RX2HDP;
+       dv_reg          RX3HDP;
+       dv_reg          RX4HDP;
+       dv_reg          RX5HDP;
+       dv_reg          RX6HDP;
+       dv_reg          RX7HDP;
+       dv_reg          TX0CP;
+       dv_reg          TX1CP;
+       dv_reg          TX2CP;
+       dv_reg          TX3CP;
+       dv_reg          TX4CP;
+       dv_reg          TX5CP;
+       dv_reg          TX6CP;
+       dv_reg          TX7CP;
+       dv_reg          RX0CP;
+       dv_reg          RX1CP;
+       dv_reg          RX2CP;
+       dv_reg          RX3CP;
+       dv_reg          RX4CP;
+       dv_reg          RX5CP;
+       dv_reg          RX6CP;
+       dv_reg          RX7CP;
+} emac_regs;
+
+/* EMAC Wrapper Registers Structure */
+typedef struct  {
+#ifdef DAVINCI_EMAC_VERSION2
+       dv_reg          idver;
+       dv_reg          softrst;
+       dv_reg          emctrl;
+       dv_reg          c0rxthreshen;
+       dv_reg          c0rxen;
+       dv_reg          c0txen;
+       dv_reg          c0miscen;
+       dv_reg          c1rxthreshen;
+       dv_reg          c1rxen;
+       dv_reg          c1txen;
+       dv_reg          c1miscen;
+       dv_reg          c2rxthreshen;
+       dv_reg          c2rxen;
+       dv_reg          c2txen;
+       dv_reg          c2miscen;
+       dv_reg          c0rxthreshstat;
+       dv_reg          c0rxstat;
+       dv_reg          c0txstat;
+       dv_reg          c0miscstat;
+       dv_reg          c1rxthreshstat;
+       dv_reg          c1rxstat;
+       dv_reg          c1txstat;
+       dv_reg          c1miscstat;
+       dv_reg          c2rxthreshstat;
+       dv_reg          c2rxstat;
+       dv_reg          c2txstat;
+       dv_reg          c2miscstat;
+       dv_reg          c0rximax;
+       dv_reg          c0tximax;
+       dv_reg          c1rximax;
+       dv_reg          c1tximax;
+       dv_reg          c2rximax;
+       dv_reg          c2tximax;
+#else
+       u_int8_t        RSVD0[4100];
+       dv_reg          EWCTL;
+       dv_reg          EWINTTCNT;
+#endif
+} ewrap_regs;
+
+/* EMAC MDIO Registers Structure */
+typedef struct  {
+       dv_reg          VERSION;
+       dv_reg          CONTROL;
+       dv_reg          ALIVE;
+       dv_reg          LINK;
+       dv_reg          LINKINTRAW;
+       dv_reg          LINKINTMASKED;
+       u_int8_t        RSVD0[8];
+       dv_reg          USERINTRAW;
+       dv_reg          USERINTMASKED;
+       dv_reg          USERINTMASKSET;
+       dv_reg          USERINTMASKCLEAR;
+       u_int8_t        RSVD1[80];
+       dv_reg          USERACCESS0;
+       dv_reg          USERPHYSEL0;
+       dv_reg          USERACCESS1;
+       dv_reg          USERPHYSEL1;
+} mdio_regs;
+
+int davinci_eth_phy_read(u_int8_t phy_addr, u_int8_t reg_num, u_int16_t *data);
+int davinci_eth_phy_write(u_int8_t phy_addr, u_int8_t reg_num, u_int16_t data);
+
+typedef struct {
+       char    name[64];
+       int     (*init)(int phy_addr);
+       int     (*is_phy_connected)(int phy_addr);
+       int     (*get_link_speed)(int phy_addr);
+       int     (*auto_negotiate)(int phy_addr);
+} phy_t;
+
+#endif /* _DAVINCI_EMAC_H_ */
diff --git a/drivers/net/ti/keystone_net.c b/drivers/net/ti/keystone_net.c
new file mode 100644 (file)
index 0000000..a3ba91c
--- /dev/null
@@ -0,0 +1,801 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Ethernet driver for TI K2HK EVM.
+ *
+ * (C) Copyright 2012-2014
+ *     Texas Instruments Incorporated, <www.ti.com>
+ */
+#include <common.h>
+#include <command.h>
+#include <console.h>
+
+#include <dm.h>
+#include <dm/lists.h>
+
+#include <net.h>
+#include <phy.h>
+#include <errno.h>
+#include <miiphy.h>
+#include <malloc.h>
+#include <asm/ti-common/keystone_nav.h>
+#include <asm/ti-common/keystone_net.h>
+#include <asm/ti-common/keystone_serdes.h>
+#include <asm/arch/psc_defs.h>
+
+#include "cpsw_mdio.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#ifdef KEYSTONE2_EMAC_GIG_ENABLE
+#define emac_gigabit_enable(x) keystone2_eth_gigabit_enable(x)
+#else
+#define emac_gigabit_enable(x) /* no gigabit to enable */
+#endif
+
+#define RX_BUFF_NUMS   24
+#define RX_BUFF_LEN    1520
+#define MAX_SIZE_STREAM_BUFFER RX_BUFF_LEN
+#define SGMII_ANEG_TIMEOUT             4000
+
+static u8 rx_buffs[RX_BUFF_NUMS * RX_BUFF_LEN] __aligned(16);
+
+enum link_type {
+       LINK_TYPE_SGMII_MAC_TO_MAC_AUTO         = 0,
+       LINK_TYPE_SGMII_MAC_TO_PHY_MODE         = 1,
+       LINK_TYPE_SGMII_MAC_TO_MAC_FORCED_MODE  = 2,
+       LINK_TYPE_SGMII_MAC_TO_FIBRE_MODE       = 3,
+       LINK_TYPE_SGMII_MAC_TO_PHY_NO_MDIO_MODE = 4,
+       LINK_TYPE_RGMII_LINK_MAC_PHY            = 5,
+       LINK_TYPE_RGMII_LINK_MAC_MAC_FORCED     = 6,
+       LINK_TYPE_RGMII_LINK_MAC_PHY_NO_MDIO    = 7,
+       LINK_TYPE_10G_MAC_TO_PHY_MODE           = 10,
+       LINK_TYPE_10G_MAC_TO_MAC_FORCED_MODE    = 11,
+};
+
+#define mac_hi(mac)     (((mac)[0] << 0) | ((mac)[1] << 8) |    \
+                        ((mac)[2] << 16) | ((mac)[3] << 24))
+#define mac_lo(mac)     (((mac)[4] << 0) | ((mac)[5] << 8))
+
+#ifdef CONFIG_KSNET_NETCP_V1_0
+
+#define EMAC_EMACSW_BASE_OFS           0x90800
+#define EMAC_EMACSW_PORT_BASE_OFS      (EMAC_EMACSW_BASE_OFS + 0x60)
+
+/* CPSW Switch slave registers */
+#define CPGMACSL_REG_SA_LO             0x10
+#define CPGMACSL_REG_SA_HI             0x14
+
+#define DEVICE_EMACSW_BASE(base, x)    ((base) + EMAC_EMACSW_PORT_BASE_OFS +  \
+                                        (x) * 0x30)
+
+#elif defined(CONFIG_KSNET_NETCP_V1_5)
+
+#define EMAC_EMACSW_PORT_BASE_OFS      0x222000
+
+/* CPSW Switch slave registers */
+#define CPGMACSL_REG_SA_LO             0x308
+#define CPGMACSL_REG_SA_HI             0x30c
+
+#define DEVICE_EMACSW_BASE(base, x)    ((base) + EMAC_EMACSW_PORT_BASE_OFS +  \
+                                        (x) * 0x1000)
+
+#endif
+
+
+struct ks2_eth_priv {
+       struct udevice                  *dev;
+       struct phy_device               *phydev;
+       struct mii_dev                  *mdio_bus;
+       int                             phy_addr;
+       phy_interface_t                 phy_if;
+       int                             sgmii_link_type;
+       void                            *mdio_base;
+       struct rx_buff_desc             net_rx_buffs;
+       struct pktdma_cfg               *netcp_pktdma;
+       void                            *hd;
+       int                             slave_port;
+       enum link_type                  link_type;
+       bool                            emac_open;
+       bool                            has_mdio;
+};
+
+static void  __attribute__((unused))
+       keystone2_eth_gigabit_enable(struct udevice *dev)
+{
+       struct ks2_eth_priv *priv = dev_get_priv(dev);
+
+       /*
+        * Check if link detected is giga-bit
+        * If Gigabit mode detected, enable gigbit in MAC
+        */
+       if (priv->has_mdio) {
+               if (priv->phydev->speed != 1000)
+                       return;
+       }
+
+       writel(readl(DEVICE_EMACSL_BASE(priv->slave_port - 1) +
+                    CPGMACSL_REG_CTL) |
+              EMAC_MACCONTROL_GIGFORCE | EMAC_MACCONTROL_GIGABIT_ENABLE,
+              DEVICE_EMACSL_BASE(priv->slave_port - 1) + CPGMACSL_REG_CTL);
+}
+
+#ifdef CONFIG_SOC_K2G
+int keystone_rgmii_config(struct phy_device *phy_dev)
+{
+       unsigned int i, status;
+
+       i = 0;
+       do {
+               if (i > SGMII_ANEG_TIMEOUT) {
+                       puts(" TIMEOUT !\n");
+                       phy_dev->link = 0;
+                       return 0;
+               }
+
+               if (ctrlc()) {
+                       puts("user interrupt!\n");
+                       phy_dev->link = 0;
+                       return -EINTR;
+               }
+
+               if ((i++ % 500) == 0)
+                       printf(".");
+
+               udelay(1000);   /* 1 ms */
+               status = readl(RGMII_STATUS_REG);
+       } while (!(status & RGMII_REG_STATUS_LINK));
+
+       puts(" done\n");
+
+       return 0;
+}
+#else
+int keystone_sgmii_config(struct phy_device *phy_dev, int port, int interface)
+{
+       unsigned int i, status, mask;
+       unsigned int mr_adv_ability, control;
+
+       switch (interface) {
+       case SGMII_LINK_MAC_MAC_AUTONEG:
+               mr_adv_ability  = (SGMII_REG_MR_ADV_ENABLE |
+                                  SGMII_REG_MR_ADV_LINK |
+                                  SGMII_REG_MR_ADV_FULL_DUPLEX |
+                                  SGMII_REG_MR_ADV_GIG_MODE);
+               control         = (SGMII_REG_CONTROL_MASTER |
+                                  SGMII_REG_CONTROL_AUTONEG);
+
+               break;
+       case SGMII_LINK_MAC_PHY:
+       case SGMII_LINK_MAC_PHY_FORCED:
+               mr_adv_ability  = SGMII_REG_MR_ADV_ENABLE;
+               control         = SGMII_REG_CONTROL_AUTONEG;
+
+               break;
+       case SGMII_LINK_MAC_MAC_FORCED:
+               mr_adv_ability  = (SGMII_REG_MR_ADV_ENABLE |
+                                  SGMII_REG_MR_ADV_LINK |
+                                  SGMII_REG_MR_ADV_FULL_DUPLEX |
+                                  SGMII_REG_MR_ADV_GIG_MODE);
+               control         = SGMII_REG_CONTROL_MASTER;
+
+               break;
+       case SGMII_LINK_MAC_FIBER:
+               mr_adv_ability  = 0x20;
+               control         = SGMII_REG_CONTROL_AUTONEG;
+
+               break;
+       default:
+               mr_adv_ability  = SGMII_REG_MR_ADV_ENABLE;
+               control         = SGMII_REG_CONTROL_AUTONEG;
+       }
+
+       __raw_writel(0, SGMII_CTL_REG(port));
+
+       /*
+        * Wait for the SerDes pll to lock,
+        * but don't trap if lock is never read
+        */
+       for (i = 0; i < 1000; i++)  {
+               udelay(2000);
+               status = __raw_readl(SGMII_STATUS_REG(port));
+               if ((status & SGMII_REG_STATUS_LOCK) != 0)
+                       break;
+       }
+
+       __raw_writel(mr_adv_ability, SGMII_MRADV_REG(port));
+       __raw_writel(control, SGMII_CTL_REG(port));
+
+
+       mask = SGMII_REG_STATUS_LINK;
+
+       if (control & SGMII_REG_CONTROL_AUTONEG)
+               mask |= SGMII_REG_STATUS_AUTONEG;
+
+       status = __raw_readl(SGMII_STATUS_REG(port));
+       if ((status & mask) == mask)
+               return 0;
+
+       printf("\n%s Waiting for SGMII auto negotiation to complete",
+              phy_dev->dev->name);
+       while ((status & mask) != mask) {
+               /*
+                * Timeout reached ?
+                */
+               if (i > SGMII_ANEG_TIMEOUT) {
+                       puts(" TIMEOUT !\n");
+                       phy_dev->link = 0;
+                       return 0;
+               }
+
+               if (ctrlc()) {
+                       puts("user interrupt!\n");
+                       phy_dev->link = 0;
+                       return -EINTR;
+               }
+
+               if ((i++ % 500) == 0)
+                       printf(".");
+
+               udelay(1000);   /* 1 ms */
+               status = __raw_readl(SGMII_STATUS_REG(port));
+       }
+       puts(" done\n");
+
+       return 0;
+}
+#endif
+
+int mac_sl_reset(u32 port)
+{
+       u32 i, v;
+
+       if (port >= DEVICE_N_GMACSL_PORTS)
+               return GMACSL_RET_INVALID_PORT;
+
+       /* Set the soft reset bit */
+       writel(CPGMAC_REG_RESET_VAL_RESET,
+              DEVICE_EMACSL_BASE(port) + CPGMACSL_REG_RESET);
+
+       /* Wait for the bit to clear */
+       for (i = 0; i < DEVICE_EMACSL_RESET_POLL_COUNT; i++) {
+               v = readl(DEVICE_EMACSL_BASE(port) + CPGMACSL_REG_RESET);
+               if ((v & CPGMAC_REG_RESET_VAL_RESET_MASK) !=
+                   CPGMAC_REG_RESET_VAL_RESET)
+                       return GMACSL_RET_OK;
+       }
+
+       /* Timeout on the reset */
+       return GMACSL_RET_WARN_RESET_INCOMPLETE;
+}
+
+int mac_sl_config(u_int16_t port, struct mac_sl_cfg *cfg)
+{
+       u32 v, i;
+       int ret = GMACSL_RET_OK;
+
+       if (port >= DEVICE_N_GMACSL_PORTS)
+               return GMACSL_RET_INVALID_PORT;
+
+       if (cfg->max_rx_len > CPGMAC_REG_MAXLEN_LEN) {
+               cfg->max_rx_len = CPGMAC_REG_MAXLEN_LEN;
+               ret = GMACSL_RET_WARN_MAXLEN_TOO_BIG;
+       }
+
+       /* Must wait if the device is undergoing reset */
+       for (i = 0; i < DEVICE_EMACSL_RESET_POLL_COUNT; i++) {
+               v = readl(DEVICE_EMACSL_BASE(port) + CPGMACSL_REG_RESET);
+               if ((v & CPGMAC_REG_RESET_VAL_RESET_MASK) !=
+                   CPGMAC_REG_RESET_VAL_RESET)
+                       break;
+       }
+
+       if (i == DEVICE_EMACSL_RESET_POLL_COUNT)
+               return GMACSL_RET_CONFIG_FAIL_RESET_ACTIVE;
+
+       writel(cfg->max_rx_len, DEVICE_EMACSL_BASE(port) + CPGMACSL_REG_MAXLEN);
+       writel(cfg->ctl, DEVICE_EMACSL_BASE(port) + CPGMACSL_REG_CTL);
+
+#ifndef CONFIG_SOC_K2HK
+       /* Map RX packet flow priority to 0 */
+       writel(0, DEVICE_EMACSL_BASE(port) + CPGMACSL_REG_RX_PRI_MAP);
+#endif
+
+       return ret;
+}
+
+int ethss_config(u32 ctl, u32 max_pkt_size)
+{
+       u32 i;
+
+       /* Max length register */
+       writel(max_pkt_size, DEVICE_CPSW_BASE + CPSW_REG_MAXLEN);
+
+       /* Control register */
+       writel(ctl, DEVICE_CPSW_BASE + CPSW_REG_CTL);
+
+       /* All statistics enabled by default */
+       writel(CPSW_REG_VAL_STAT_ENABLE_ALL,
+              DEVICE_CPSW_BASE + CPSW_REG_STAT_PORT_EN);
+
+       /* Reset and enable the ALE */
+       writel(CPSW_REG_VAL_ALE_CTL_RESET_AND_ENABLE |
+              CPSW_REG_VAL_ALE_CTL_BYPASS,
+              DEVICE_CPSW_BASE + CPSW_REG_ALE_CONTROL);
+
+       /* All ports put into forward mode */
+       for (i = 0; i < DEVICE_CPSW_NUM_PORTS; i++)
+               writel(CPSW_REG_VAL_PORTCTL_FORWARD_MODE,
+                      DEVICE_CPSW_BASE + CPSW_REG_ALE_PORTCTL(i));
+
+       return 0;
+}
+
+int ethss_start(void)
+{
+       int i;
+       struct mac_sl_cfg cfg;
+
+       cfg.max_rx_len  = MAX_SIZE_STREAM_BUFFER;
+       cfg.ctl         = GMACSL_ENABLE | GMACSL_RX_ENABLE_EXT_CTL;
+
+       for (i = 0; i < DEVICE_N_GMACSL_PORTS; i++) {
+               mac_sl_reset(i);
+               mac_sl_config(i, &cfg);
+       }
+
+       return 0;
+}
+
+int ethss_stop(void)
+{
+       int i;
+
+       for (i = 0; i < DEVICE_N_GMACSL_PORTS; i++)
+               mac_sl_reset(i);
+
+       return 0;
+}
+
+struct ks2_serdes ks2_serdes_sgmii_156p25mhz = {
+       .clk = SERDES_CLOCK_156P25M,
+       .rate = SERDES_RATE_5G,
+       .rate_mode = SERDES_QUARTER_RATE,
+       .intf = SERDES_PHY_SGMII,
+       .loopback = 0,
+};
+
+#ifndef CONFIG_SOC_K2G
+static void keystone2_net_serdes_setup(void)
+{
+       ks2_serdes_init(CONFIG_KSNET_SERDES_SGMII_BASE,
+                       &ks2_serdes_sgmii_156p25mhz,
+                       CONFIG_KSNET_SERDES_LANES_PER_SGMII);
+
+#if defined(CONFIG_SOC_K2E) || defined(CONFIG_SOC_K2L)
+       ks2_serdes_init(CONFIG_KSNET_SERDES_SGMII2_BASE,
+                       &ks2_serdes_sgmii_156p25mhz,
+                       CONFIG_KSNET_SERDES_LANES_PER_SGMII);
+#endif
+
+       /* wait till setup */
+       udelay(5000);
+}
+#endif
+
+static int ks2_eth_start(struct udevice *dev)
+{
+       struct ks2_eth_priv *priv = dev_get_priv(dev);
+
+#ifdef CONFIG_SOC_K2G
+       keystone_rgmii_config(priv->phydev);
+#else
+       keystone_sgmii_config(priv->phydev, priv->slave_port - 1,
+                             priv->sgmii_link_type);
+#endif
+
+       udelay(10000);
+
+       /* On chip switch configuration */
+       ethss_config(target_get_switch_ctl(), SWITCH_MAX_PKT_SIZE);
+
+       qm_init();
+
+       if (ksnav_init(priv->netcp_pktdma, &priv->net_rx_buffs)) {
+               pr_err("ksnav_init failed\n");
+               goto err_knav_init;
+       }
+
+       /*
+        * Streaming switch configuration. If not present this
+        * statement is defined to void in target.h.
+        * If present this is usually defined to a series of register writes
+        */
+       hw_config_streaming_switch();
+
+       if (priv->has_mdio) {
+               phy_startup(priv->phydev);
+               if (priv->phydev->link == 0) {
+                       pr_err("phy startup failed\n");
+                       goto err_phy_start;
+               }
+       }
+
+       emac_gigabit_enable(dev);
+
+       ethss_start();
+
+       priv->emac_open = true;
+
+       return 0;
+
+err_phy_start:
+       ksnav_close(priv->netcp_pktdma);
+err_knav_init:
+       qm_close();
+
+       return -EFAULT;
+}
+
+static int ks2_eth_send(struct udevice *dev, void *packet, int length)
+{
+       struct ks2_eth_priv *priv = dev_get_priv(dev);
+
+       genphy_update_link(priv->phydev);
+       if (priv->phydev->link == 0)
+               return -1;
+
+       if (length < EMAC_MIN_ETHERNET_PKT_SIZE)
+               length = EMAC_MIN_ETHERNET_PKT_SIZE;
+
+       return ksnav_send(priv->netcp_pktdma, (u32 *)packet,
+                         length, (priv->slave_port) << 16);
+}
+
+static int ks2_eth_recv(struct udevice *dev, int flags, uchar **packetp)
+{
+       struct ks2_eth_priv *priv = dev_get_priv(dev);
+       int  pkt_size;
+       u32 *pkt = NULL;
+
+       priv->hd = ksnav_recv(priv->netcp_pktdma, &pkt, &pkt_size);
+       if (priv->hd == NULL)
+               return -EAGAIN;
+
+       *packetp = (uchar *)pkt;
+
+       return pkt_size;
+}
+
+static int ks2_eth_free_pkt(struct udevice *dev, uchar *packet,
+                                  int length)
+{
+       struct ks2_eth_priv *priv = dev_get_priv(dev);
+
+       ksnav_release_rxhd(priv->netcp_pktdma, priv->hd);
+
+       return 0;
+}
+
+static void ks2_eth_stop(struct udevice *dev)
+{
+       struct ks2_eth_priv *priv = dev_get_priv(dev);
+
+       if (!priv->emac_open)
+               return;
+       ethss_stop();
+
+       ksnav_close(priv->netcp_pktdma);
+       qm_close();
+       phy_shutdown(priv->phydev);
+       priv->emac_open = false;
+}
+
+int ks2_eth_read_rom_hwaddr(struct udevice *dev)
+{
+       struct ks2_eth_priv *priv = dev_get_priv(dev);
+       struct eth_pdata *pdata = dev_get_platdata(dev);
+       u32 maca = 0;
+       u32 macb = 0;
+
+       /* Read the e-fuse mac address */
+       if (priv->slave_port == 1) {
+               maca = __raw_readl(MAC_ID_BASE_ADDR);
+               macb = __raw_readl(MAC_ID_BASE_ADDR + 4);
+       }
+
+       pdata->enetaddr[0] = (macb >>  8) & 0xff;
+       pdata->enetaddr[1] = (macb >>  0) & 0xff;
+       pdata->enetaddr[2] = (maca >> 24) & 0xff;
+       pdata->enetaddr[3] = (maca >> 16) & 0xff;
+       pdata->enetaddr[4] = (maca >>  8) & 0xff;
+       pdata->enetaddr[5] = (maca >>  0) & 0xff;
+
+       return 0;
+}
+
+int ks2_eth_write_hwaddr(struct udevice *dev)
+{
+       struct ks2_eth_priv *priv = dev_get_priv(dev);
+       struct eth_pdata *pdata = dev_get_platdata(dev);
+
+       writel(mac_hi(pdata->enetaddr),
+              DEVICE_EMACSW_BASE(pdata->iobase, priv->slave_port - 1) +
+                                 CPGMACSL_REG_SA_HI);
+       writel(mac_lo(pdata->enetaddr),
+              DEVICE_EMACSW_BASE(pdata->iobase, priv->slave_port - 1) +
+                                 CPGMACSL_REG_SA_LO);
+
+       return 0;
+}
+
+static int ks2_eth_probe(struct udevice *dev)
+{
+       struct ks2_eth_priv *priv = dev_get_priv(dev);
+       struct mii_dev *mdio_bus;
+
+       priv->dev = dev;
+       priv->emac_open = false;
+
+       /* These clock enables has to be moved to common location */
+       if (cpu_is_k2g())
+               writel(KS2_ETHERNET_RGMII, KS2_ETHERNET_CFG);
+
+       /* By default, select PA PLL clock as PA clock source */
+#ifndef CONFIG_SOC_K2G
+       if (psc_enable_module(KS2_LPSC_PA))
+               return -EACCES;
+#endif
+       if (psc_enable_module(KS2_LPSC_CPGMAC))
+               return -EACCES;
+       if (psc_enable_module(KS2_LPSC_CRYPTO))
+               return -EACCES;
+
+       if (cpu_is_k2e() || cpu_is_k2l())
+               pll_pa_clk_sel();
+
+       priv->net_rx_buffs.buff_ptr = rx_buffs;
+       priv->net_rx_buffs.num_buffs = RX_BUFF_NUMS;
+       priv->net_rx_buffs.buff_len = RX_BUFF_LEN;
+
+       if (priv->slave_port == 1) {
+#ifndef CONFIG_SOC_K2G
+               keystone2_net_serdes_setup();
+#endif
+               /*
+                * Register MDIO bus for slave 0 only, other slave have
+                * to re-use the same
+                */
+               mdio_bus = cpsw_mdio_init("ethernet-mdio",
+                                         (u32)priv->mdio_base,
+                                         EMAC_MDIO_CLOCK_FREQ,
+                                         EMAC_MDIO_BUS_FREQ);
+               if (!mdio_bus) {
+                       pr_err("MDIO alloc failed\n");
+                       return -ENOMEM;
+               }
+               priv->mdio_bus = mdio_bus;
+       } else {
+               /* Get the MDIO bus from slave 0 device */
+               struct ks2_eth_priv *parent_priv;
+
+               parent_priv = dev_get_priv(dev->parent);
+               priv->mdio_bus = parent_priv->mdio_bus;
+               priv->mdio_base = parent_priv->mdio_base;
+       }
+
+       priv->netcp_pktdma = &netcp_pktdma;
+
+       if (priv->has_mdio) {
+               priv->phydev = phy_connect(priv->mdio_bus, priv->phy_addr,
+                                          dev, priv->phy_if);
+               phy_config(priv->phydev);
+       }
+
+       return 0;
+}
+
+int ks2_eth_remove(struct udevice *dev)
+{
+       struct ks2_eth_priv *priv = dev_get_priv(dev);
+
+       cpsw_mdio_free(priv->mdio_bus);
+
+       return 0;
+}
+
+static const struct eth_ops ks2_eth_ops = {
+       .start                  = ks2_eth_start,
+       .send                   = ks2_eth_send,
+       .recv                   = ks2_eth_recv,
+       .free_pkt               = ks2_eth_free_pkt,
+       .stop                   = ks2_eth_stop,
+       .read_rom_hwaddr        = ks2_eth_read_rom_hwaddr,
+       .write_hwaddr           = ks2_eth_write_hwaddr,
+};
+
+static int ks2_eth_bind_slaves(struct udevice *dev, int gbe, int *gbe_0)
+{
+       const void *fdt = gd->fdt_blob;
+       struct udevice *sl_dev;
+       int interfaces;
+       int sec_slave;
+       int slave;
+       int ret;
+       char *slave_name;
+
+       interfaces = fdt_subnode_offset(fdt, gbe, "interfaces");
+       fdt_for_each_subnode(slave, fdt, interfaces) {
+               int slave_no;
+
+               slave_no = fdtdec_get_int(fdt, slave, "slave-port", -ENOENT);
+               if (slave_no == -ENOENT)
+                       continue;
+
+               if (slave_no == 0) {
+                       /* This is the current eth device */
+                       *gbe_0 = slave;
+               } else {
+                       /* Slave devices to be registered */
+                       slave_name = malloc(20);
+                       snprintf(slave_name, 20, "netcp@slave-%d", slave_no);
+                       ret = device_bind_driver_to_node(dev, "eth_ks2_sl",
+                                       slave_name, offset_to_ofnode(slave),
+                                       &sl_dev);
+                       if (ret) {
+                               pr_err("ks2_net - not able to bind slave interfaces\n");
+                               return ret;
+                       }
+               }
+       }
+
+       sec_slave = fdt_subnode_offset(fdt, gbe, "secondary-slave-ports");
+       fdt_for_each_subnode(slave, fdt, sec_slave) {
+               int slave_no;
+
+               slave_no = fdtdec_get_int(fdt, slave, "slave-port", -ENOENT);
+               if (slave_no == -ENOENT)
+                       continue;
+
+               /* Slave devices to be registered */
+               slave_name = malloc(20);
+               snprintf(slave_name, 20, "netcp@slave-%d", slave_no);
+               ret = device_bind_driver_to_node(dev, "eth_ks2_sl", slave_name,
+                                       offset_to_ofnode(slave), &sl_dev);
+               if (ret) {
+                       pr_err("ks2_net - not able to bind slave interfaces\n");
+                       return ret;
+               }
+       }
+
+       return 0;
+}
+
+static int ks2_eth_parse_slave_interface(int netcp, int slave,
+                                        struct ks2_eth_priv *priv,
+                                        struct eth_pdata *pdata)
+{
+       const void *fdt = gd->fdt_blob;
+       int mdio;
+       int phy;
+       int dma_count;
+       u32 dma_channel[8];
+
+       priv->slave_port = fdtdec_get_int(fdt, slave, "slave-port", -1);
+       priv->net_rx_buffs.rx_flow = priv->slave_port * 8;
+
+       /* U-Boot slave port number starts with 1 instead of 0 */
+       priv->slave_port += 1;
+
+       dma_count = fdtdec_get_int_array_count(fdt, netcp,
+                                              "ti,navigator-dmas",
+                                              dma_channel, 8);
+
+       if (dma_count > (2 * priv->slave_port)) {
+               int dma_idx;
+
+               dma_idx = priv->slave_port * 2 - 1;
+               priv->net_rx_buffs.rx_flow = dma_channel[dma_idx];
+       }
+
+       priv->link_type = fdtdec_get_int(fdt, slave, "link-interface", -1);
+
+       phy = fdtdec_lookup_phandle(fdt, slave, "phy-handle");
+       if (phy >= 0) {
+               priv->phy_addr = fdtdec_get_int(fdt, phy, "reg", -1);
+
+               mdio = fdt_parent_offset(fdt, phy);
+               if (mdio < 0) {
+                       pr_err("mdio dt not found\n");
+                       return -ENODEV;
+               }
+               priv->mdio_base = (void *)fdtdec_get_addr(fdt, mdio, "reg");
+       }
+
+       if (priv->link_type == LINK_TYPE_SGMII_MAC_TO_PHY_MODE) {
+               priv->phy_if = PHY_INTERFACE_MODE_SGMII;
+               pdata->phy_interface = priv->phy_if;
+               priv->sgmii_link_type = SGMII_LINK_MAC_PHY;
+               priv->has_mdio = true;
+       } else if (priv->link_type == LINK_TYPE_RGMII_LINK_MAC_PHY) {
+               priv->phy_if = PHY_INTERFACE_MODE_RGMII;
+               pdata->phy_interface = priv->phy_if;
+               priv->has_mdio = true;
+       }
+
+       return 0;
+}
+
+static int ks2_sl_eth_ofdata_to_platdata(struct udevice *dev)
+{
+       struct ks2_eth_priv *priv = dev_get_priv(dev);
+       struct eth_pdata *pdata = dev_get_platdata(dev);
+       const void *fdt = gd->fdt_blob;
+       int slave = dev_of_offset(dev);
+       int interfaces;
+       int gbe;
+       int netcp_devices;
+       int netcp;
+
+       interfaces = fdt_parent_offset(fdt, slave);
+       gbe = fdt_parent_offset(fdt, interfaces);
+       netcp_devices = fdt_parent_offset(fdt, gbe);
+       netcp = fdt_parent_offset(fdt, netcp_devices);
+
+       ks2_eth_parse_slave_interface(netcp, slave, priv, pdata);
+
+       pdata->iobase = fdtdec_get_addr(fdt, netcp, "reg");
+
+       return 0;
+}
+
+static int ks2_eth_ofdata_to_platdata(struct udevice *dev)
+{
+       struct ks2_eth_priv *priv = dev_get_priv(dev);
+       struct eth_pdata *pdata = dev_get_platdata(dev);
+       const void *fdt = gd->fdt_blob;
+       int gbe_0 = -ENODEV;
+       int netcp_devices;
+       int gbe;
+
+       netcp_devices = fdt_subnode_offset(fdt, dev_of_offset(dev),
+                                          "netcp-devices");
+       gbe = fdt_subnode_offset(fdt, netcp_devices, "gbe");
+
+       ks2_eth_bind_slaves(dev, gbe, &gbe_0);
+
+       ks2_eth_parse_slave_interface(dev_of_offset(dev), gbe_0, priv, pdata);
+
+       pdata->iobase = devfdt_get_addr(dev);
+
+       return 0;
+}
+
+static const struct udevice_id ks2_eth_ids[] = {
+       { .compatible = "ti,netcp-1.0" },
+       { }
+};
+
+U_BOOT_DRIVER(eth_ks2_slave) = {
+       .name   = "eth_ks2_sl",
+       .id     = UCLASS_ETH,
+       .ofdata_to_platdata = ks2_sl_eth_ofdata_to_platdata,
+       .probe  = ks2_eth_probe,
+       .remove = ks2_eth_remove,
+       .ops    = &ks2_eth_ops,
+       .priv_auto_alloc_size = sizeof(struct ks2_eth_priv),
+       .platdata_auto_alloc_size = sizeof(struct eth_pdata),
+       .flags = DM_FLAG_ALLOC_PRIV_DMA,
+};
+
+U_BOOT_DRIVER(eth_ks2) = {
+       .name   = "eth_ks2",
+       .id     = UCLASS_ETH,
+       .of_match = ks2_eth_ids,
+       .ofdata_to_platdata = ks2_eth_ofdata_to_platdata,
+       .probe  = ks2_eth_probe,
+       .remove = ks2_eth_remove,
+       .ops    = &ks2_eth_ops,
+       .priv_auto_alloc_size = sizeof(struct ks2_eth_priv),
+       .platdata_auto_alloc_size = sizeof(struct eth_pdata),
+       .flags = DM_FLAG_ALLOC_PRIV_DMA,
+};
index a99fd770f2f633a3da7e844d8b311ca4ac316fd7..78bf3193d540daa6335a61260e4f515bc8ad1e59 100644 (file)
        PORT_GP_18(0, fn, sfx), \
        PORT_GP_23(1, fn, sfx), \
        PORT_GP_26(2, fn, sfx), \
-       PORT_GP_12(3, fn, sfx), \
+       PORT_GP_CFG_12(3, fn, sfx, SH_PFC_PIN_CFG_IO_VOLTAGE),  \
        PORT_GP_1(3, 12, fn, sfx),      \
        PORT_GP_1(3, 13, fn, sfx),      \
        PORT_GP_1(3, 14, fn, sfx),      \
        PORT_GP_1(3, 15, fn, sfx),      \
-       PORT_GP_11(4, fn, sfx), \
+       PORT_GP_CFG_11(4, fn, sfx, SH_PFC_PIN_CFG_IO_VOLTAGE),  \
        PORT_GP_20(5, fn, sfx), \
        PORT_GP_18(6, fn, sfx)
 /*
@@ -5151,8 +5151,37 @@ static const struct pinmux_cfg_reg pinmux_config_regs[] = {
        { },
 };
 
+enum ioctrl_regs {
+       POCCTRL,
+};
+
+static const struct pinmux_ioctrl_reg pinmux_ioctrl_regs[] = {
+       [POCCTRL] = { 0xe6060380, },
+       { /* sentinel */ },
+};
+
+static int r8a77990_pin_to_pocctrl(struct sh_pfc *pfc, unsigned int pin, u32 *pocctrl)
+{
+       int bit = -EINVAL;
+
+       *pocctrl = pinmux_ioctrl_regs[POCCTRL].reg;
+
+       if (pin >= RCAR_GP_PIN(3, 0) && pin <= RCAR_GP_PIN(3, 11))
+               bit = pin & 0x1f;
+
+       if (pin >= RCAR_GP_PIN(4, 0) && pin <= RCAR_GP_PIN(4, 10))
+               bit = (pin & 0x1f) + 19;
+
+       return bit;
+}
+
+static const struct sh_pfc_soc_operations r8a77990_pinmux_ops = {
+       .pin_to_pocctrl = r8a77990_pin_to_pocctrl,
+};
+
 const struct sh_pfc_soc_info r8a77990_pinmux_info = {
        .name = "r8a77990_pfc",
+       .ops = &r8a77990_pinmux_ops,
        .unlock_reg = 0xe6060000, /* PMMR */
 
        .function = { PINMUX_FUNCTION_BEGIN, PINMUX_FUNCTION_END },
@@ -5165,6 +5194,7 @@ const struct sh_pfc_soc_info r8a77990_pinmux_info = {
        .nr_functions = ARRAY_SIZE(pinmux_functions),
 
        .cfg_regs = pinmux_config_regs,
+       .ioctrl_regs = pinmux_ioctrl_regs,
 
        .pinmux_data = pinmux_data,
        .pinmux_data_size = ARRAY_SIZE(pinmux_data),
index 90011537a856444863c6f5538c047bc037fa9879..b3a4ff9049d093d00fdf67819700c2ec73c8c587 100644 (file)
@@ -591,7 +591,7 @@ static int sh_pfc_pinconf_set_drive_strength(struct sh_pfc *pfc,
        strength = strength / step - 1;
 
        val = sh_pfc_read_raw_reg(reg, 32);
-       val &= ~GENMASK(offset + size - 1, offset);
+       val &= ~GENMASK(offset + 4 - 1, offset);
        val |= strength << offset;
 
        if (unlock_reg)
index 414f4a53f786827a1c140e40e34a10384ea840c2..2561a8a85616652fdea827b37be48daaf0d92e65 100644 (file)
@@ -86,12 +86,19 @@ config SPL_DM_REGULATOR_FIXED
 
 config DM_REGULATOR_GPIO
        bool "Enable Driver Model for GPIO REGULATOR"
-       depends on DM_REGULATOR
+       depends on DM_REGULATOR && DM_GPIO
        ---help---
        This config enables implementation of driver-model regulator uclass
        features for gpio regulators. The driver implements get/set for
        voltage value.
 
+config SPL_DM_REGULATOR_GPIO
+       bool "Enable Driver Model for GPIO REGULATOR in SPL"
+       depends on DM_REGULATOR_GPIO && SPL_GPIO_SUPPORT
+       ---help---
+       This config enables implementation of driver-model regulator uclass
+       features for gpio regulators in SPL.
+
 config REGULATOR_RK8XX
        bool "Enable driver for RK8XX regulators"
        depends on DM_REGULATOR && PMIC_RK8XX
index e50f0aa851061fd2a1f00fa2f5225a699bf55f5e..665cca85cb5683f024cba340ab96d6742075fd4b 100644 (file)
@@ -423,7 +423,7 @@ static int serial_post_probe(struct udevice *dev)
                ops->setconfig += gd->reloc_off;
 #if CONFIG_POST & CONFIG_SYS_POST_UART
        if (ops->loop)
-               ops->loop += gd->reloc_off
+               ops->loop += gd->reloc_off;
 #endif
 #endif
        /* Set the baud rate */
index 386130d7a1f6e7756835309eb08f67f6e397f3b0..9eb1d23067253ea1c489fc08a05396b0883004c9 100644 (file)
@@ -6,6 +6,7 @@
  */
 
 #include <common.h>
+#include <hwconfig.h>
 #include <fsl_errata.h>
 #include<fsl_usb.h>
 #if defined(CONFIG_FSL_LSCH2) || defined(CONFIG_FSL_LSCH3) || \
@@ -44,6 +45,33 @@ bool has_dual_phy(void)
        return false;
 }
 
+bool has_erratum_a005275(void)
+{
+       u32 svr = get_svr();
+       u32 soc = SVR_SOC_VER(svr);
+
+       if (hwconfig("no_erratum_a005275"))
+               return false;
+
+       switch (soc) {
+#ifdef CONFIG_PPC
+       case SVR_P3041:
+       case SVR_P2041:
+       case SVR_P2040:
+               return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 1, 1);
+       case SVR_P5010:
+       case SVR_P5020:
+       case SVR_P5021:
+               return IS_SVR_REV(svr, 1, 0) || IS_SVR_REV(svr, 2, 0);
+       case SVR_P5040:
+       case SVR_P1010:
+               return IS_SVR_REV(svr, 1, 0);
+#endif
+       }
+
+       return false;
+}
+
 bool has_erratum_a006261(void)
 {
        u32 svr = get_svr();
index a04f6a31c8e49986827f6a9be20d6f4d8d19ccd3..a8fb2b8ac3b5531775802a4d13171c6719d14842 100644 (file)
@@ -93,6 +93,7 @@ static int ehci_fsl_probe(struct udevice *dev)
        struct usb_ehci *ehci = NULL;
        struct ehci_hccr *hccr;
        struct ehci_hcor *hcor;
+       struct ehci_ctrl *ehci_ctrl = &priv->ehci;
 
        /*
         * Get the base address for EHCI controller from the device node
@@ -107,6 +108,8 @@ static int ehci_fsl_probe(struct udevice *dev)
        hcor = (struct ehci_hcor *)
                ((void *)hccr + HC_LENGTH(ehci_readl(&hccr->cr_capbase)));
 
+       ehci_ctrl->has_fsl_erratum_a005275 = has_erratum_a005275();
+
        if (ehci_fsl_init(priv, ehci, hccr, hcor) < 0)
                return -ENXIO;
 
@@ -145,6 +148,8 @@ U_BOOT_DRIVER(ehci_fsl) = {
 int ehci_hcd_init(int index, enum usb_init_type init,
                struct ehci_hccr **hccr, struct ehci_hcor **hcor)
 {
+       struct ehci_ctrl *ehci_ctrl = container_of(hccr,
+                                       struct ehci_ctrl, hccr);
        struct usb_ehci *ehci = NULL;
 
        switch (index) {
@@ -163,6 +168,8 @@ int ehci_hcd_init(int index, enum usb_init_type init,
        *hcor = (struct ehci_hcor *)((uint32_t) *hccr +
                        HC_LENGTH(ehci_readl(&(*hccr)->cr_capbase)));
 
+       ehci_ctrl->has_fsl_erratum_a005275 = has_erratum_a005275();
+
        return ehci_fsl_init(index, ehci, *hccr, *hcor);
 }
 
index 199b3a8b264d98e62c601e2127873265801c9fa6..d1d8f08d98671017221bbfc9723d73c59c10b2fe 100644 (file)
@@ -409,9 +409,15 @@ ehci_submit_async(struct usb_device *dev, unsigned long pipe, void *buffer,
        endpt = QH_ENDPT1_RL(8) | QH_ENDPT1_C(c) |
                QH_ENDPT1_MAXPKTLEN(maxpacket) | QH_ENDPT1_H(0) |
                QH_ENDPT1_DTC(QH_ENDPT1_DTC_DT_FROM_QTD) |
-               QH_ENDPT1_EPS(ehci_encode_speed(dev->speed)) |
                QH_ENDPT1_ENDPT(usb_pipeendpoint(pipe)) | QH_ENDPT1_I(0) |
                QH_ENDPT1_DEVADDR(usb_pipedevice(pipe));
+
+       /* Force FS for fsl HS quirk */
+       if (!ctrl->has_fsl_erratum_a005275)
+               endpt |= QH_ENDPT1_EPS(ehci_encode_speed(dev->speed));
+       else
+               endpt |= QH_ENDPT1_EPS(ehci_encode_speed(QH_FULL_SPEED));
+
        qh->qh_endpt1 = cpu_to_hc32(endpt);
        endpt = QH_ENDPT2_MULT(1) | QH_ENDPT2_UFCMASK(0) | QH_ENDPT2_UFSMASK(0);
        qh->qh_endpt2 = cpu_to_hc32(endpt);
@@ -832,6 +838,10 @@ static int ehci_submit_root(struct usb_device *dev, unsigned long pipe,
                        } else {
                                int ret;
 
+                               /* Disable chirp for HS erratum */
+                               if (ctrl->has_fsl_erratum_a005275)
+                                       reg |= PORTSC_FSL_PFSC;
+
                                reg |= EHCI_PS_PR;
                                reg &= ~EHCI_PS_PE;
                                ehci_writel(status_reg, reg);
index 7945016624da55dd15f9a0d0ab2a3454ad3a9d3e..6c359af90c9459baabbba55663627d3c2cae690e 100644 (file)
@@ -8,6 +8,7 @@
 #ifndef USB_EHCI_H
 #define USB_EHCI_H
 
+#include <stdbool.h>
 #include <usb.h>
 #include <generic-phy.h>
 
@@ -66,6 +67,8 @@ struct ehci_hcor {
 #define PORTSC_PSPD_FS                 0x0
 #define PORTSC_PSPD_LS                 0x1
 #define PORTSC_PSPD_HS                 0x2
+#define PORTSC_FSL_PFSC                BIT(24) /* PFSC bit to disable HS chirping */
+
        uint32_t or_systune;
 } __attribute__ ((packed, aligned(4)));
 
@@ -251,6 +254,7 @@ struct ehci_ctrl {
        uint32_t *periodic_list;
        int periodic_schedules;
        int ntds;
+       bool has_fsl_erratum_a005275;   /* Freescale HS silicon quirk */
        struct ehci_ops ops;
        void *priv;     /* client's private data */
 };
index 56186e587cf50bf62b39ac3147d8732dc30ca752..0967accdf0095c3883eda1aa1f2bf3d0f82402f2 100644 (file)
@@ -31,7 +31,7 @@ static int ds24xxx_probe(struct udevice *dev)
 {
        struct w1_device *w1;
 
-       w1 = dev_get_platdata(dev);
+       w1 = dev_get_parent_platdata(dev);
        w1->id = 0;
        return 0;
 }
index aecf7fec77cf7bcc90e4d7f34fb4cbe919f9c16f..cb41b68eff1a4de7dee2b9b37e39fbac934d0109 100644 (file)
@@ -115,17 +115,19 @@ int w1_get_bus(int busnum, struct udevice **busp)
        struct udevice *dev;
 
        for (ret = uclass_first_device(UCLASS_W1, &dev);
-            !ret;
-            uclass_next_device(&dev), i++) {
-               if (ret) {
-                       debug("Cannot find w1 bus %d\n", busnum);
-                       return ret;
-               }
+            dev && !ret;
+            ret = uclass_next_device(&dev), i++) {
                if (i == busnum) {
                        *busp = dev;
                        return 0;
                }
        }
+
+       if (!ret) {
+               debug("Cannot find w1 bus %d\n", busnum);
+               ret = -ENODEV;
+       }
+
        return ret;
 }
 
index 47fa41ad1dd329fdc5ee595e0436fd192779d6c6..d5101d3c4594beec93e9caf8b9c15e8359182678 100644 (file)
@@ -125,6 +125,7 @@ crypto_comp_decompress(const struct ubifs_info *c, struct crypto_comp *tfm,
 {
        struct ubifs_compressor *compr = ubifs_compressors[tfm->compressor];
        int err;
+       size_t tmp_len = *dlen;
 
        if (compr->compr_type == UBIFS_COMPR_NONE) {
                memcpy(dst, src, slen);
@@ -132,11 +133,12 @@ crypto_comp_decompress(const struct ubifs_info *c, struct crypto_comp *tfm,
                return 0;
        }
 
-       err = compr->decompress(src, slen, dst, (size_t *)dlen);
+       err = compr->decompress(src, slen, dst, &tmp_len);
        if (err)
                ubifs_err(c, "cannot decompress %d bytes, compressor %s, "
                          "error %d", slen, compr->name, err);
 
+       *dlen = tmp_len;
        return err;
 
        return 0;
index d48b7d078550c5d8fabfb8ee7b1316537a6d12fa..63305a7cdd3a0c65bc55373359aa2d0a44155026 100644 (file)
@@ -85,8 +85,9 @@
 #define CONFIG_ENV_OFFSET_REDUND       0x100000
 #define CONFIG_ENV_SIZE                0x20000         /* 1 sector = 128 kB */
 #define CONFIG_BOOTCOMMAND     "nand read " \
-                               "0x22000000 0x200000 0x300000; " \
-                               "bootm 0x22000000"
+                               "0x22000000 0x200000 0x600000; " \
+                               "nand read 0x21000000 0x180000 0x20000; " \
+                               "bootz 0x22000000 - 0x21000000"
 #elif defined(CONFIG_SPI_BOOT)
 /* bootstrap + u-boot + env + linux in spi flash */
 #define CONFIG_ENV_OFFSET      0x5000
diff --git a/include/configs/emdk.h b/include/configs/emdk.h
deleted file mode 100644 (file)
index dca13e2..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * Copyright (C) 2018 Synopsys, Inc. All rights reserved.
- */
-
-#ifndef _CONFIG_EMDK_H_
-#define _CONFIG_EMDK_H_
-
-#include <linux/sizes.h>
-
-#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_TEXT_BASE
-
-#define CONFIG_SYS_SDRAM_BASE          0x10000000
-#define CONFIG_SYS_SDRAM_SIZE          SZ_8M
-
-#define CONFIG_SYS_INIT_SP_ADDR                (CONFIG_SYS_SDRAM_BASE + SZ_1M)
-
-#define CONFIG_SYS_MALLOC_LEN          SZ_64K
-#define CONFIG_SYS_LOAD_ADDR           CONFIG_SYS_SDRAM_BASE
-
-/* Required by DW MMC driver */
-#define CONFIG_BOUNCE_BUFFER
-
-/*
- * Environment
- */
-#define CONFIG_ENV_SIZE                        SZ_4K
-#define CONFIG_BOOTFILE                        "app.bin"
-#define CONFIG_LOADADDR                        CONFIG_SYS_LOAD_ADDR
-
-#define CONFIG_EXTRA_ENV_SETTINGS \
-       "upgrade_image=u-boot.bin\0" \
-       "upgrade=emdk rom unlock && " \
-               "fatload mmc 0 ${loadaddr} ${upgrade_image} && " \
-               "cp.b ${loadaddr} 0 ${filesize} && " \
-               "dcache flush && " \
-               "emdk rom lock\0"
-
-#endif /* _CONFIG_EMDK_H_ */
-
diff --git a/include/configs/emsdp.h b/include/configs/emsdp.h
new file mode 100644 (file)
index 0000000..385d59e
--- /dev/null
@@ -0,0 +1,40 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright (C) 2018 Synopsys, Inc. All rights reserved.
+ */
+
+#ifndef _CONFIG_EMSDP_H_
+#define _CONFIG_EMSDP_H_
+
+#include <linux/sizes.h>
+
+#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_TEXT_BASE
+
+#define CONFIG_SYS_SDRAM_BASE          0x10000000
+#define CONFIG_SYS_SDRAM_SIZE          SZ_8M
+
+#define CONFIG_SYS_INIT_SP_ADDR                (CONFIG_SYS_SDRAM_BASE + SZ_1M)
+
+#define CONFIG_SYS_MALLOC_LEN          SZ_64K
+#define CONFIG_SYS_LOAD_ADDR           CONFIG_SYS_SDRAM_BASE
+
+/* Required by DW MMC driver */
+#define CONFIG_BOUNCE_BUFFER
+
+/*
+ * Environment
+ */
+#define CONFIG_ENV_SIZE                        SZ_4K
+#define CONFIG_BOOTFILE                        "app.bin"
+#define CONFIG_LOADADDR                        CONFIG_SYS_LOAD_ADDR
+
+#define CONFIG_EXTRA_ENV_SETTINGS \
+       "upgrade_image=u-boot.bin\0" \
+       "upgrade=emsdp rom unlock && " \
+               "fatload mmc 0 ${loadaddr} ${upgrade_image} && " \
+               "cp.b ${loadaddr} 0 ${filesize} && " \
+               "dcache flush && " \
+               "emsdp rom lock\0"
+
+#endif /* _CONFIG_EMSDP_H_ */
+
index 2330143cf1ce40ebba7d30c8d19ea7f8c5cb790f..bd8f5c8c412f69f77685b640e1ba5bc21b19c583 100644 (file)
 #define CONFIG_SYS_INIT_RAM_ADDR       0xFFE00000
 #define CONFIG_SYS_INIT_RAM_SIZE       0x40000 /* 256KB */
 #endif
+
+/*
+ * Some boards (e.g. socfpga_sr1500) use 8 bytes at the end of the internal
+ * SRAM as bootcounter storage. Make sure to not put the stack directly
+ * at this address to not overwrite the bootcounter by checking, if the
+ * bootcounter address is located in the internal SRAM.
+ */
+#if ((CONFIG_SYS_BOOTCOUNT_ADDR > CONFIG_SYS_INIT_RAM_ADDR) && \
+     (CONFIG_SYS_BOOTCOUNT_ADDR < (CONFIG_SYS_INIT_RAM_ADDR +  \
+                                  CONFIG_SYS_INIT_RAM_SIZE)))
+#define CONFIG_SYS_INIT_SP_ADDR                CONFIG_SYS_BOOTCOUNT_ADDR
+#else
 #define CONFIG_SYS_INIT_SP_ADDR                        \
        (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_RAM_SIZE)
+#endif
 
 #define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
 
index cc823c51469b31fe53c00be5a667eafefa4df59a..5e504f6d3d287cd8aa867fe0d29a9a2d816e0288 100644 (file)
 #define CONFIG_KSNAV_NETCP_PDMA_TX_SND_QUEUE   KS2_NETCP_PDMA_TX_SND_QUEUE
 
 /* Keystone net */
-#define CONFIG_DRIVER_TI_KEYSTONE_NET
 #define CONFIG_KSNET_MAC_ID_BASE               KS2_MAC_ID_BASE_ADDR
 #define CONFIG_KSNET_NETCP_BASE                        KS2_NETCP_BASE
 #define CONFIG_KSNET_SERDES_SGMII_BASE         KS2_SGMII_SERDES_BASE
index 0ca5ef8d4d71a54f84d359d0a8abde6be9382430..b516b66c3565fe1f2810d3ebe61f358c08fb7358 100644 (file)
@@ -54,7 +54,6 @@
 #define CONFIG_PMECC_CAP            4
 #define CONFIG_PMECC_SECTOR_SIZE    512
 
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_RBTREE
 #define CONFIG_LZO
 
index 98411c4e9f681846c6fd820ada6d46d5fb1bcc36..864f3220f3612d85375efa8968eb090ae395a39d 100644 (file)
 #define CONFIG_SPL_BSS_START_ADDR      0x100000
 #define CONFIG_SPL_BSS_MAX_SIZE                0x100000
 
+#define CONFIG_SPL_LOAD_FIT_ADDRESS 0x10000000
+
 #define CONFIG_SYS_UBOOT_START CONFIG_SYS_TEXT_BASE
 
 #endif /* __CONFIG_ZYNQ_COMMON_H */
index 0f9d51b557911ce60acca19ed0d356049c438117..4ceda5e43c5ed5190f5650a3a5897db65399e024 100644 (file)
@@ -56,6 +56,7 @@
 #define DWMCI_INTMSK_DTO       (1 << 3)
 #define DWMCI_INTMSK_TXDR      (1 << 4)
 #define DWMCI_INTMSK_RXDR      (1 << 5)
+#define DWMCI_INTMSK_RCRC      (1 << 6)
 #define DWMCI_INTMSK_DCRC      (1 << 7)
 #define DWMCI_INTMSK_RTO       (1 << 8)
 #define DWMCI_INTMSK_DRTO      (1 << 9)
index 560753ae4c8834cd0a1596d89c9bf071f149cc99..3c9c87f21b1cc005de046541a6cd6b5d08d068db 100644 (file)
@@ -93,7 +93,6 @@
                AVB_VERIFY_CHECK \
                "part start mmc ${mmcdev} boot boot_start; " \
                "part size mmc ${mmcdev} boot boot_size; " \
-               "mmc read ${fdtaddr} ${fdt_start} ${fdt_size}; " \
                "mmc read ${loadaddr} ${boot_start} ${boot_size}; " \
                "bootm ${loadaddr}#${fdtfile};\0 "
 
index e9e1dd69053edbecfc12228edfe5760841280ebc..c0f076b06daf5959e06c3535d29f5df4bbf33b6e 100644 (file)
@@ -87,6 +87,7 @@ struct ccsr_usb_phy {
 /* USB Erratum Checking code */
 #if defined(CONFIG_PPC) || defined(CONFIG_ARM)
 bool has_dual_phy(void);
+bool has_erratum_a005275(void);
 bool has_erratum_a006261(void);
 bool has_erratum_a007075(void);
 bool has_erratum_a007798(void);
index afc953d51e2d07cdbcde9459b7c2d275c3e60dee..a58d7a6917f23625d59e24200d7448a90c56a03d 100644 (file)
@@ -109,14 +109,7 @@ int arch_reserve_stacks(void);
  */
 int init_cache_f_r(void);
 
-#if !CONFIG_IS_ENABLED(CPU)
-/**
- * print_cpuinfo() - Display information about the CPU
- *
- * Return: 0 if OK, -ve on error
- */
 int print_cpuinfo(void);
-#endif
 int timer_init(void);
 int reserve_mmu(void);
 int misc_init_f(void);
index 55001625fb923a86868d224d4fdcb03c2cb8da56..0a1a3a2d8da25ae96a9dc538b25eb62b1ffc46bd 100644 (file)
@@ -43,7 +43,6 @@ int ethoc_initialize(u8 dev_num, int base_addr);
 int fec_initialize (bd_t *bis);
 int fecmxc_initialize(bd_t *bis);
 int fecmxc_initialize_multi(bd_t *bis, int dev_id, int phy_id, uint32_t addr);
-int ftgmac100_initialize(bd_t *bits);
 int ftmac100_initialize(bd_t *bits);
 int ftmac110_initialize(bd_t *bits);
 void gt6426x_eth_initialize(bd_t *bis);
index 94c0f1ff8285075f55dd1dcd81197f0009104732..0627024e71c4bacf6374a898793f37d5fb8eee40 100644 (file)
@@ -730,7 +730,6 @@ CONFIG_FTWDT010_WATCHDOG
 CONFIG_FZOTG266HD0A_BASE
 CONFIG_GATEWAYIP
 CONFIG_GICV2
-CONFIG_GICV3
 CONFIG_GLOBAL_DATA_NOT_REG10
 CONFIG_GLOBAL_TIMER
 CONFIG_GMII
@@ -1773,7 +1772,6 @@ CONFIG_SH_SCIF_CLK_FREQ
 CONFIG_SH_SDHI_FREQ
 CONFIG_SH_SDRAM_OFFSET
 CONFIG_SH_SPI_BASE
-CONFIG_SH_TMU_CLK_FREQ
 CONFIG_SIEMENS_MACH_TYPE
 CONFIG_SIMU
 CONFIG_SKIP_LOCAL_MAC_RANDOMIZATION
index 13e3f4003a7d918f32b36e137c7b4ae06bad923d..22f05a4219783c8a7826b1b0750e49509c177e26 100644 (file)
@@ -49,7 +49,12 @@ static int match(struct tee_version_data *vers, const void *data)
        return vers->gen_caps & TEE_GEN_CAP_GP;
 }
 
-static int dm_test_tee(struct unit_test_state *uts)
+struct test_tee_vars {
+       struct tee_shm *reg_shm;
+       struct tee_shm *alloc_shm;
+};
+
+static int test_tee(struct unit_test_state *uts, struct test_tee_vars *vars)
 {
        struct tee_version_data vers;
        struct udevice *dev;
@@ -57,8 +62,6 @@ static int dm_test_tee(struct unit_test_state *uts)
        u32 session = 0;
        int rc;
        u8 data[128];
-       struct tee_shm *reg_shm;
-       struct tee_shm *alloc_shm;
 
        dev = tee_find_device(NULL, match, NULL, &vers);
        ut_assert(dev);
@@ -77,22 +80,36 @@ static int dm_test_tee(struct unit_test_state *uts)
        ut_assert(!state->session);
 
        ut_assert(!state->num_shms);
-       rc = tee_shm_register(dev, data, sizeof(data), 0, &reg_shm);
+       rc = tee_shm_register(dev, data, sizeof(data), 0, &vars->reg_shm);
        ut_assert(!rc);
        ut_assert(state->num_shms == 1);
 
-       rc = tee_shm_alloc(dev, 256, 0, &alloc_shm);
+       rc = tee_shm_alloc(dev, 256, 0, &vars->alloc_shm);
        ut_assert(!rc);
        ut_assert(state->num_shms == 2);
 
-       ut_assert(tee_shm_is_registered(reg_shm, dev));
-       ut_assert(tee_shm_is_registered(alloc_shm, dev));
+       ut_assert(tee_shm_is_registered(vars->reg_shm, dev));
+       ut_assert(tee_shm_is_registered(vars->alloc_shm, dev));
 
-       tee_shm_free(reg_shm);
-       tee_shm_free(alloc_shm);
+       tee_shm_free(vars->reg_shm);
+       vars->reg_shm = NULL;
+       tee_shm_free(vars->alloc_shm);
+       vars->alloc_shm = NULL;
        ut_assert(!state->num_shms);
 
        return 0;
 }
 
+static int dm_test_tee(struct unit_test_state *uts)
+{
+       struct test_tee_vars vars = { NULL, NULL };
+       int rc = test_tee(uts, &vars);
+
+       /* In case test_tee() asserts these may still remain allocated */
+       tee_shm_free(vars.reg_shm);
+       tee_shm_free(vars.alloc_shm);
+
+       return rc;
+}
+
 DM_TEST(dm_test_tee, DM_TESTF_SCAN_FDT);
index e6b0a146b66857755d69e5bae529a68099bec68a..6e8ac464e7cf938d456f2ecc3ef29973b592d7bd 100644 (file)
@@ -301,6 +301,7 @@ static void copy_file_aligned(int ifd, const char *datafile, int offset,
        unsigned char *ptr;
        uint8_t zeros[0x4000];
        int size;
+       int ret;
 
        if (align > 0x4000) {
                fprintf(stderr, "Wrong alignment requested %d\n", align);
@@ -333,7 +334,13 @@ static void copy_file_aligned(int ifd, const char *datafile, int offset,
        }
 
        size = sbuf.st_size;
-       lseek(ifd, offset, SEEK_SET);
+       ret = lseek(ifd, offset, SEEK_SET);
+       if (ret < 0) {
+               fprintf(stderr, "%s: lseek error %s\n",
+                       __func__, strerror(errno));
+               exit(EXIT_FAILURE);
+       }
+
        if (write(ifd, ptr, size) != size) {
                fprintf(stderr, "Write error %s\n", strerror(errno));
                exit(EXIT_FAILURE);
@@ -359,7 +366,7 @@ static void copy_file (int ifd, const char *datafile, int pad, int offset)
        int tail;
        int zero = 0;
        uint8_t zeros[4096];
-       int size;
+       int size, ret;
 
        memset(zeros, 0, sizeof(zeros));
 
@@ -387,7 +394,13 @@ static void copy_file (int ifd, const char *datafile, int pad, int offset)
        }
 
        size = sbuf.st_size;
-       lseek(ifd, offset, SEEK_SET);
+       ret = lseek(ifd, offset, SEEK_SET);
+       if (ret < 0) {
+               fprintf(stderr, "%s: lseek error %s\n",
+                       __func__, strerror(errno));
+               exit(EXIT_FAILURE);
+       }
+
        if (write(ifd, ptr, size) != size) {
                fprintf(stderr, "Write error %s\n",
                        strerror(errno));
@@ -653,8 +666,10 @@ static int get_container_image_start_pos(image_t *image_stack, uint32_t align)
                        }
 
                        ret = fread(&header, sizeof(header), 1, fd);
-                       if (ret != 1)
+                       if (ret != 1) {
                                printf("Failure Read header %d\n", ret);
+                               exit(EXIT_FAILURE);
+                       }
 
                        fclose(fd);
 
@@ -762,6 +777,7 @@ static int build_container(soc_type_t soc, uint32_t sector_size,
        char *tmp_filename = NULL;
        uint32_t size = 0;
        uint32_t file_padding = 0;
+       int ret;
 
        int container = -1;
        int cont_img_count = 0; /* indexes to arrange the container */
@@ -796,6 +812,10 @@ static int build_container(soc_type_t soc, uint32_t sector_size,
                case SCFW:
                case DATA:
                case MSG_BLOCK:
+                       if (container < 0) {
+                               fprintf(stderr, "No container found\n");
+                               exit(EXIT_FAILURE);
+                       }
                        check_file(&sbuf, img_sp->filename);
                        tmp_filename = img_sp->filename;
                        set_image_array_entry(&imx_header.fhdr[container],
@@ -809,6 +829,10 @@ static int build_container(soc_type_t soc, uint32_t sector_size,
                        break;
 
                case SECO:
+                       if (container < 0) {
+                               fprintf(stderr, "No container found\n");
+                               exit(EXIT_FAILURE);
+                       }
                        check_file(&sbuf, img_sp->filename);
                        tmp_filename = img_sp->filename;
                        set_image_array_entry(&imx_header.fhdr[container],
@@ -883,19 +907,26 @@ static int build_container(soc_type_t soc, uint32_t sector_size,
        } while (img_sp->option != NO_IMG);
 
        /* Add padding or skip appended container */
-       lseek(ofd, file_padding, SEEK_SET);
-
-       /* Note: Image offset are not contained in the image */
-       tmp = flatten_container_header(&imx_header, container + 1, &size,
-                                      file_padding);
-       /* Write image header */
-       if (write(ofd, tmp, size) != size) {
-               fprintf(stderr, "error writing image hdr\n");
+       ret = lseek(ofd, file_padding, SEEK_SET);
+       if (ret < 0) {
+               fprintf(stderr, "%s: lseek error %s\n",
+                       __func__, strerror(errno));
                exit(EXIT_FAILURE);
        }
 
-       /* Clean-up memory used by the headers */
-       free(tmp);
+       if (container >= 0) {
+               /* Note: Image offset are not contained in the image */
+               tmp = flatten_container_header(&imx_header, container + 1,
+                                              &size, file_padding);
+               /* Write image header */
+               if (write(ofd, tmp, size) != size) {
+                       fprintf(stderr, "error writing image hdr\n");
+                       exit(EXIT_FAILURE);
+               }
+
+               /* Clean-up memory used by the headers */
+               free(tmp);
+       }
 
        /*
         * step through the image stack again this time copying
index 442cc8f6d2283968f4b147f5a19ccfbce833bffe..625258085b608b17a54342db5ee90affd89f0ca0 100644 (file)
@@ -195,15 +195,13 @@ static int compare_relocs(const void *a, const void *b)
 int main(int argc, char *argv[])
 {
        unsigned int i, j, i_rel_shdr, sh_type, sh_entsize, sh_entries;
-       size_t rel_size, rel_actual_size, load_sz;
+       size_t rel_size, rel_actual_size;
        const char *shstrtab, *sh_name, *rel_pfx;
        int (*parse_fn)(const void *rel);
        uint8_t *buf_start, *buf;
        const Elf32_Ehdr *ehdr32;
        const Elf64_Ehdr *ehdr64;
        uintptr_t sh_offset;
-       Elf32_Phdr *phdr32;
-       Elf64_Phdr *phdr64;
        Elf32_Shdr *shdr32;
        Elf64_Shdr *shdr64;
        struct stat st;
@@ -285,8 +283,6 @@ int main(int argc, char *argv[])
                goto out_free_relocs;
        }
 
-       phdr32 = elf + ehdr_field(e_phoff);
-       phdr64 = elf + ehdr_field(e_phoff);
        shdr32 = elf + ehdr_field(e_shoff);
        shdr64 = elf + ehdr_field(e_shoff);
        shstrtab = elf + shdr_field(ehdr_field(e_shstrndx), sh_offset);
@@ -295,7 +291,7 @@ int main(int argc, char *argv[])
        for (i = 0; i < ehdr_field(e_shnum); i++) {
                sh_name = shstr(shdr_field(i, sh_name));
 
-               if (!strcmp(sh_name, ".rel")) {
+               if (!strcmp(sh_name, ".data.reloc")) {
                        i_rel_shdr = i;
                        continue;
                }
@@ -397,22 +393,12 @@ int main(int argc, char *argv[])
        rel_size = shdr_field(i_rel_shdr, sh_size);
        rel_actual_size = buf - buf_start;
        if (rel_actual_size > rel_size) {
-               fprintf(stderr, "Relocs overflowed .rel section\n");
-               return -ENOMEM;
-       }
-
-       /* Update the .rel section's size */
-       set_shdr_field(i_rel_shdr, sh_size, rel_actual_size);
-
-       /* Shrink the PT_LOAD program header filesz (ie. shrink u-boot.bin) */
-       for (i = 0; i < ehdr_field(e_phnum); i++) {
-               if (phdr_field(i, p_type) != PT_LOAD)
-                       continue;
-
-               load_sz = phdr_field(i, p_filesz);
-               load_sz -= rel_size - rel_actual_size;
-               set_phdr_field(i, p_filesz, load_sz);
-               break;
+               fprintf(stderr, "Relocations overflow available space of 0x%lx (required 0x%lx)!\n",
+                       rel_size, rel_actual_size);
+               fprintf(stderr, "Please adjust CONFIG_MIPS_RELOCATION_TABLE_SIZE to at least 0x%lx\n",
+                       (rel_actual_size + 0x100) & ~0xFF);
+               err = -ENOMEM;
+               goto out_free_relocs;
        }
 
        /* Make sure data is written back to the file */