On 5/12/19 12:04 PM, Stefan Roese wrote: > On 12.05.19 02:57, Marek Vasut wrote: >> Enable DM SATA support on DHCOM iMX6 PDK2. >> Convert board code to match the DM support. >> >> Signed-off-by: Marek Vasut <ma...@denx.de> >> Cc: Fabio Estevam <fabio.este...@nxp.com> >> Cc: Ludwig Zenz <lz...@dh-electronics.com> >> Cc: Stefano Babic <sba...@denx.de> >> --- >> board/dhelectronics/dh_imx6/dh_imx6.c | 55 +++++++++++++++++++++++++-- >> configs/dh_imx6_defconfig | 2 + >> include/configs/dh_imx6.h | 5 --- >> 3 files changed, 53 insertions(+), 9 deletions(-) >> >> diff --git a/board/dhelectronics/dh_imx6/dh_imx6.c >> b/board/dhelectronics/dh_imx6/dh_imx6.c >> index 193bb0eade..2381df84b4 100644 >> --- a/board/dhelectronics/dh_imx6/dh_imx6.c >> +++ b/board/dhelectronics/dh_imx6/dh_imx6.c >> @@ -20,6 +20,8 @@ >> #include <asm/mach-imx/iomux-v3.h> >> #include <asm/mach-imx/mxc_i2c.h> >> #include <asm/mach-imx/sata.h> >> +#include <ahci.h> >> +#include <dwc_ahsata.h> >> #include <environment.h> >> #include <errno.h> >> #include <fsl_esdhc.h> >> @@ -302,10 +304,6 @@ int board_init(void) >> } >> #endif >> -#ifdef CONFIG_SATA >> - setup_sata(); >> -#endif >> - >> setup_dhcom_mac_from_fuse(); >> return 0; >> @@ -384,3 +382,52 @@ int checkboard(void) >> puts("Board: DHCOM i.MX6\n"); >> return 0; >> } >> + >> +#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 */ > > Is this code dh_imx6 specific in any way? If not, then it would be > better placed in drivers/ata, so that other i.MX6 boards might use > it as well. Or am I missing something?
It's a copy-paste from apalis-imx6. In fact, it already is in drivers/ata (see CONFIG_DWC_AHSATA_AHCI), so I'll just fix up the apalis board and update this patch. -- Best regards, Marek Vasut _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot