From patchwork Tue Jun 16 08:03:10 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tero Kristo X-Patchwork-Id: 242479 List-Id: U-Boot discussion From: t-kristo at ti.com (Tero Kristo) Date: Tue, 16 Jun 2020 11:03:10 +0300 Subject: [PATCHv3 6/6] omap5: uevm: convert to device model In-Reply-To: <20200616080310.19125-1-t-kristo@ti.com> References: <20200616080310.19125-1-t-kristo@ti.com> Message-ID: <20200616080310.19125-7-t-kristo@ti.com> Convert omap5 uevm board to device model. Signed-off-by: Tero Kristo --- v3: * dropped SPI support arch/arm/dts/omap5-u-boot.dtsi | 42 ++++++++++++++++++ board/ti/omap5_uevm/evm.c | 78 +++++----------------------------- configs/omap5_uevm_defconfig | 13 ++++-- 3 files changed, 62 insertions(+), 71 deletions(-) diff --git a/arch/arm/dts/omap5-u-boot.dtsi b/arch/arm/dts/omap5-u-boot.dtsi index 39071e223d..5a1c7bc9fe 100644 --- a/arch/arm/dts/omap5-u-boot.dtsi +++ b/arch/arm/dts/omap5-u-boot.dtsi @@ -7,6 +7,7 @@ * Based on "dra7.dtsi" */ +#ifdef CONFIG_DRA7XX /{ chosen { tick-timer = &timer2; @@ -105,3 +106,44 @@ &i2c1 { u-boot,dm-spl; }; + +#else /* OMAP54XX */ +&l4_cfg { + segment at 0 { + /* SCM Core */ + target-module at 2000 { + compatible = "simple-bus"; + }; + + /* USB HS */ + target-module at 64000 { + compatible = "simple-bus"; + }; + }; +}; + +&l4_per { + segment at 0 { + /* UART3 */ + target-module at 20000 { + compatible = "simple-bus"; + }; + + /* I2C1 */ + target-module at 70000 { + compatible = "simple-bus"; + }; + + /* MMC1 */ + target-module at 9c000 { + compatible = "simple-bus"; + }; + + /* MMC2 */ + target-module at b4000 { + compatible = "simple-bus"; + }; + }; +}; + +#endif diff --git a/board/ti/omap5_uevm/evm.c b/board/ti/omap5_uevm/evm.c index e35f319b46..319bb6aa64 100644 --- a/board/ti/omap5_uevm/evm.c +++ b/board/ti/omap5_uevm/evm.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -149,39 +150,21 @@ int board_init(void) return 0; } -int board_eth_init(bd_t *bis) +#if defined(CONFIG_SPL_OS_BOOT) +int spl_start_uboot(void) { + /* break into full u-boot on 'c' */ + if (serial_tstc() && serial_getc() == 'c') + return 1; + return 0; } +#endif /* CONFIG_SPL_OS_BOOT */ -#if defined(CONFIG_USB_EHCI_HCD) || defined(CONFIG_USB_XHCI_OMAP) -static void enable_host_clocks(void) +int board_eth_init(bd_t *bis) { - int auxclk; - int hs_clk_ctrl_val = (OPTFCLKEN_HSIC60M_P3_CLK | - OPTFCLKEN_HSIC480M_P3_CLK | - OPTFCLKEN_HSIC60M_P2_CLK | - OPTFCLKEN_HSIC480M_P2_CLK | - OPTFCLKEN_UTMI_P3_CLK | OPTFCLKEN_UTMI_P2_CLK); - - /* Enable port 2 and 3 clocks*/ - setbits_le32((*prcm)->cm_l3init_hsusbhost_clkctrl, hs_clk_ctrl_val); - - /* Enable port 2 and 3 usb host ports tll clocks*/ - setbits_le32((*prcm)->cm_l3init_hsusbtll_clkctrl, - (OPTFCLKEN_USB_CH1_CLK_ENABLE | OPTFCLKEN_USB_CH2_CLK_ENABLE)); -#ifdef CONFIG_USB_XHCI_OMAP - /* Enable the USB OTG Super speed clocks */ - setbits_le32((*prcm)->cm_l3init_usb_otg_ss_clkctrl, - (OPTFCLKEN_REFCLK960M | OTG_SS_CLKCTRL_MODULEMODE_HW)); -#endif - - auxclk = readl((*prcm)->scrm_auxclk1); - /* Request auxilary clock */ - auxclk |= AUXCLK_ENABLE_MASK; - writel(auxclk, (*prcm)->scrm_auxclk1); + return 0; } -#endif /** * @brief misc_init_r - Configure EVM board specific configurations @@ -223,45 +206,6 @@ int board_mmc_init(bd_t *bis) } #endif -#ifdef CONFIG_USB_EHCI_HCD -static struct omap_usbhs_board_data usbhs_bdata = { - .port_mode[0] = OMAP_USBHS_PORT_MODE_UNUSED, - .port_mode[1] = OMAP_EHCI_PORT_MODE_HSIC, - .port_mode[2] = OMAP_EHCI_PORT_MODE_HSIC, -}; - -int ehci_hcd_init(int index, enum usb_init_type init, - struct ehci_hccr **hccr, struct ehci_hcor **hcor) -{ - int ret; - - enable_host_clocks(); - - ret = omap_ehci_hcd_init(index, &usbhs_bdata, hccr, hcor); - if (ret < 0) { - puts("Failed to initialize ehci\n"); - return ret; - } - - return 0; -} - -int ehci_hcd_stop(void) -{ - return omap_ehci_hcd_stop(); -} - -void usb_hub_reset_devices(struct usb_hub_device *hub, int port) -{ - /* The LAN9730 needs to be reset after the port power has been set. */ - if (port == 3) { - gpio_direction_output(CONFIG_OMAP_EHCI_PHY3_RESET_GPIO, 0); - udelay(10); - gpio_direction_output(CONFIG_OMAP_EHCI_PHY3_RESET_GPIO, 1); - } -} -#endif - #ifdef CONFIG_USB_XHCI_OMAP /** * @brief board_usb_init - Configure EVM board specific configurations @@ -276,8 +220,6 @@ int board_usb_init(int index, enum usb_init_type init) ret = palmas_enable_ss_ldo(); #endif - enable_host_clocks(); - return 0; } #endif diff --git a/configs/omap5_uevm_defconfig b/configs/omap5_uevm_defconfig index 487f7f305c..0029e70439 100644 --- a/configs/omap5_uevm_defconfig +++ b/configs/omap5_uevm_defconfig @@ -2,6 +2,7 @@ CONFIG_ARM=y CONFIG_ARCH_OMAP2PLUS=y CONFIG_OMAP54XX=y CONFIG_TARGET_OMAP5_UEVM=y +CONFIG_DEFAULT_DEVICE_TREE="omap5-uevm" CONFIG_OMAP_PLATFORM_RESET_TIME_MAX_USEC=16296 CONFIG_SPL=y CONFIG_ENV_OFFSET_REDUND=0x280000 @@ -10,6 +11,7 @@ CONFIG_SPL_TEXT_BASE=0x40300000 CONFIG_DISTRO_DEFAULTS=y # CONFIG_USE_BOOTCOMMAND is not set CONFIG_SYS_CONSOLE_INFO_QUIET=y +CONFIG_DEFAULT_FDT_FILE="omap5-uevm.dtb" CONFIG_VERSION_VARIABLE=y # CONFIG_SPL_NAND_SUPPORT is not set CONFIG_SPL_OS_BOOT=y @@ -20,14 +22,17 @@ CONFIG_CMD_GPIO=y CONFIG_CMD_GPT=y CONFIG_CMD_I2C=y CONFIG_CMD_MMC=y -CONFIG_CMD_SPI=y CONFIG_CMD_USB=y # CONFIG_CMD_SETEXPR is not set CONFIG_CMD_EXT4_WRITE=y +CONFIG_OF_CONTROL=y CONFIG_ENV_IS_IN_MMC=y CONFIG_SYS_REDUNDAND_ENVIRONMENT=y CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y +CONFIG_DM=y +CONFIG_DM_MMC=y +CONFIG_AHCI=y CONFIG_SCSI_AHCI=y CONFIG_DFU_MMC=y CONFIG_DFU_RAM=y @@ -37,9 +42,9 @@ CONFIG_MMC_OMAP_HS=y CONFIG_SCSI=y CONFIG_CONS_INDEX=3 CONFIG_SYS_NS16550=y -CONFIG_SPI=y -CONFIG_OMAP3_SPI=y +# CONFIG_SPI is not set CONFIG_USB=y +CONFIG_DM_USB=y CONFIG_USB_EHCI_HCD=y CONFIG_USB_DWC3=y CONFIG_USB_DWC3_OMAP=y @@ -53,3 +58,5 @@ CONFIG_USB_HOST_ETHER=y CONFIG_USB_ETHER_SMSC95XX=y CONFIG_FAT_WRITE=y CONFIG_OF_LIBFDT=y +CONFIG_SYS_MALLOC_F_LEN=0x4000 +CONFIG_DM_ETH=y