From: Vagrant Cascadian <vagrant@debian.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 4/6] ARM: imx: novena: Convert block devices to DM
Date: Sun, 05 May 2019 20:22:52 -0700 [thread overview]
Message-ID: <87ftpsz2pf.fsf@yucca> (raw)
In-Reply-To: <20190505231336.27698-4-marex@denx.de>
On 2019-05-06, Marek Vasut wrote:
> Enable DM block, DM MMC and DM SATA support on iMX6Q Novena
> convert board code to match the DM support.
Tested booting from MMC and SATA.
SATA performance was *much* faster, too! Thanks!
Tested-by: Vagrant Cascadian <vagrant@debian.org>
live well,
vagrant
> Signed-off-by: Marek Vasut <marex@denx.de>
> Cc: Fabio Estevam <fabio.estevam@nxp.com>
> Cc: Stefano Babic <sbabic@denx.de>
> Cc: Vagrant Cascadian <vagrant@debian.org>
> ---
> arch/arm/dts/imx6q-novena.dts | 5 ++
> board/kosagi/novena/novena.c | 107 +++++++++++++++++-----------------
> configs/novena_defconfig | 3 +
> include/configs/novena.h | 5 --
> 4 files changed, 61 insertions(+), 59 deletions(-)
>
> diff --git a/arch/arm/dts/imx6q-novena.dts b/arch/arm/dts/imx6q-novena.dts
> index 61347a545d..35383c9a2b 100644
> --- a/arch/arm/dts/imx6q-novena.dts
> +++ b/arch/arm/dts/imx6q-novena.dts
> @@ -61,6 +61,11 @@
> reg = <0x10000000 0>;
> };
>
> + aliases {
> + mmc0 = &usdhc3;
> + mmc1 = &usdhc2;
> + };
> +
> chosen {
> stdout-path = &uart2;
> };
> diff --git a/board/kosagi/novena/novena.c b/board/kosagi/novena/novena.c
> index 0750c4667e..4b31e2961c 100644
> --- a/board/kosagi/novena/novena.c
> +++ b/board/kosagi/novena/novena.c
> @@ -6,6 +6,9 @@
> */
>
> #include <common.h>
> +#include <dm.h>
> +#include <dm/device-internal.h>
> +#include <ahci.h>
> #include <linux/errno.h>
> #include <asm/gpio.h>
> #include <asm/io.h>
> @@ -20,6 +23,7 @@
> #include <asm/mach-imx/mxc_i2c.h>
> #include <asm/mach-imx/sata.h>
> #include <asm/mach-imx/video.h>
> +#include <dwc_ahsata.h>
> #include <environment.h>
> #include <fsl_esdhc.h>
> #include <i2c.h>
> @@ -101,60 +105,6 @@ int drv_keyboard_init(void)
> }
> #endif
>
> -/*
> - * SDHC
> - */
> -#ifdef CONFIG_FSL_ESDHC
> -static struct fsl_esdhc_cfg usdhc_cfg[] = {
> - { USDHC3_BASE_ADDR, 0, 4 }, /* Micro SD */
> - { USDHC2_BASE_ADDR, 0, 4 }, /* Big SD */
> -};
> -
> -int board_mmc_getcd(struct mmc *mmc)
> -{
> - struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;
> -
> - /* There is no CD for a microSD card, assume always present. */
> - if (cfg->esdhc_base == USDHC3_BASE_ADDR)
> - return 1;
> - else
> - return !gpio_get_value(NOVENA_SD_CD);
> -}
> -
> -int board_mmc_getwp(struct mmc *mmc)
> -{
> - struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;
> -
> - /* There is no WP for a microSD card, assume always read-write. */
> - if (cfg->esdhc_base == USDHC3_BASE_ADDR)
> - return 0;
> - else
> - return gpio_get_value(NOVENA_SD_WP);
> -}
> -
> -
> -int board_mmc_init(bd_t *bis)
> -{
> - s32 status = 0;
> - int index;
> -
> - usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);
> - usdhc_cfg[1].sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
> -
> - /* Big SD write-protect and card-detect */
> - gpio_direction_input(NOVENA_SD_WP);
> - gpio_direction_input(NOVENA_SD_CD);
> -
> - for (index = 0; index < ARRAY_SIZE(usdhc_cfg); index++) {
> - status = fsl_esdhc_initialize(bis, &usdhc_cfg[index]);
> - if (status)
> - return status;
> - }
> -
> - return status;
> -}
> -#endif
> -
> int board_early_init_f(void)
> {
> #if defined(CONFIG_VIDEO_IPUV3)
> @@ -270,3 +220,52 @@ int misc_init_r(void)
>
> return ret;
> }
> +
> +#if CONFIG_IS_ENABLED(AHCI)
> +static int sata_imx_probe(struct udevice *dev)
> +{
> + int i, err;
> +
> + for (i = 0; i < 10; i++) {
> + err = setup_sata();
> + if (err) {
> + printf("SATA setup failed: %d\n", err);
> + return err;
> + }
> +
> + udelay(100);
> +
> + err = dwc_ahsata_probe(dev);
> + if (!err)
> + break;
> +
> + /* There is no device on the SATA port */
> + if (sata_dm_port_status(0, 0) == 0)
> + break;
> +
> + /* There's a device, but link not established. Retry */
> + device_remove(dev, DM_REMOVE_NORMAL);
> + }
> +
> + return 0;
> +}
> +
> +struct ahci_ops sata_imx_ops = {
> + .port_status = dwc_ahsata_port_status,
> + .reset = dwc_ahsata_bus_reset,
> + .scan = dwc_ahsata_scan,
> +};
> +
> +static const struct udevice_id sata_imx_ids[] = {
> + { .compatible = "fsl,imx6q-ahci" },
> + { }
> +};
> +
> +U_BOOT_DRIVER(sata_imx) = {
> + .name = "dwc_ahci",
> + .id = UCLASS_AHCI,
> + .of_match = sata_imx_ids,
> + .ops = &sata_imx_ops,
> + .probe = sata_imx_probe,
> +};
> +#endif /* AHCI */
> diff --git a/configs/novena_defconfig b/configs/novena_defconfig
> index c74f635121..fa5fdea278 100644
> --- a/configs/novena_defconfig
> +++ b/configs/novena_defconfig
> @@ -13,6 +13,7 @@ CONFIG_SPL=y
> CONFIG_SPL_FS_FAT=y
> CONFIG_SPL_LIBDISK_SUPPORT=y
> CONFIG_CMD_HDMIDETECT=y
> +CONFIG_AHCI=y
> CONFIG_DISTRO_DEFAULTS=y
> # CONFIG_SYS_MALLOC_F is not set
> CONFIG_FIT=y
> @@ -48,6 +49,7 @@ CONFIG_ENV_IS_IN_MMC=y
> CONFIG_DM=y
> CONFIG_DWC_AHSATA=y
> CONFIG_DM_GPIO=y
> +CONFIG_DM_MMC=y
> CONFIG_FSL_ESDHC=y
> CONFIG_PHYLIB=y
> CONFIG_PHY_MICREL=y
> @@ -56,6 +58,7 @@ CONFIG_MII=y
> CONFIG_PCI=y
> CONFIG_PINCTRL=y
> CONFIG_PINCTRL_IMX6=y
> +CONFIG_DM_SCSI=y
> CONFIG_USB=y
> CONFIG_USB_KEYBOARD=y
> CONFIG_SYS_USB_EVENT_POLL_VIA_CONTROL_EP=y
> diff --git a/include/configs/novena.h b/include/configs/novena.h
> index bb5bf808c2..bc7383e957 100644
> --- a/include/configs/novena.h
> +++ b/include/configs/novena.h
> @@ -102,12 +102,7 @@
> #define CONFIG_POWER_PFUZE100_I2C_ADDR 0x08
>
> /* SATA Configs */
> -#ifdef CONFIG_CMD_SATA
> -#define CONFIG_SYS_SATA_MAX_DEVICE 1
> -#define CONFIG_DWC_AHSATA_PORT_ID 0
> -#define CONFIG_DWC_AHSATA_BASE_ADDR SATA_ARB_BASE_ADDR
> #define CONFIG_LBA48
> -#endif
>
> /* UART */
> #define CONFIG_MXC_UART
> --
> 2.20.1
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 227 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20190505/2ed984b1/attachment.sig>
next prev parent reply other threads:[~2019-05-06 3:22 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-05 23:13 [U-Boot] [PATCH 1/6] ARM: dts: imx: novena: Import Novena DT from Linux Marek Vasut
2019-05-05 23:13 ` [U-Boot] [PATCH 2/6] ARM: imx: novena: Enable DM pin control Marek Vasut
2019-05-05 23:13 ` [U-Boot] [PATCH 3/6] ARM: imx: novena: Enable DM GPIO Marek Vasut
2019-05-05 23:13 ` [U-Boot] [PATCH 4/6] ARM: imx: novena: Convert block devices to DM Marek Vasut
2019-05-06 3:22 ` Vagrant Cascadian [this message]
2019-05-05 23:13 ` [U-Boot] [PATCH 5/6] ARM: imx: novena: Enable DM USB Marek Vasut
2019-05-06 3:26 ` Vagrant Cascadian
2019-05-06 10:30 ` Marek Vasut
2019-05-06 18:09 ` Vagrant Cascadian
2019-05-05 23:13 ` [U-Boot] [PATCH 6/6] ARM: imx: novena: Convert to DM VIDEO Marek Vasut
2019-05-06 3:31 ` Vagrant Cascadian
2019-05-06 10:31 ` Marek Vasut
2019-05-06 17:02 ` Vagrant Cascadian
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87ftpsz2pf.fsf@yucca \
--to=vagrant@debian.org \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.