Hi Nikita,

On 08/10/14 20:13, Nikita Kiryanov wrote:
> Add support for SATA.
> 
> Cc: Igor Grinberg <grinb...@compulab.co.il>
> Cc: Stefano Babic <sba...@denx.de>
> Cc: Tom Rini <tr...@ti.com>
> Signed-off-by: Nikita Kiryanov <nik...@compulab.co.il>
> ---
> Changes in V2:
>       - No changes
> 
>  board/compulab/cm_fx6/cm_fx6.c | 90 
> ++++++++++++++++++++++++++++++++++++++++++
>  board/compulab/cm_fx6/common.h | 13 ++++++
>  include/configs/cm_fx6.h       | 36 ++++++++++++++++-
>  3 files changed, 138 insertions(+), 1 deletion(-)
> 
> diff --git a/board/compulab/cm_fx6/cm_fx6.c b/board/compulab/cm_fx6/cm_fx6.c
> index 76d7430..8a48f9d 100644
> --- a/board/compulab/cm_fx6/cm_fx6.c
> +++ b/board/compulab/cm_fx6/cm_fx6.c

[...]

> @@ -23,6 +25,94 @@
>  
>  DECLARE_GLOBAL_DATA_PTR;
>  
> +#ifdef CONFIG_DWC_AHSATA
> +static int cm_fx6_issd_gpios[] = {
> +     /* The order of the GPIOs in the array is important! */
> +     CM_FX6_SATA_PHY_SLP,
> +     CM_FX6_SATA_NRSTDLY,
> +     CM_FX6_SATA_PWREN,
> +     CM_FX6_SATA_NSTANDBY1,
> +     CM_FX6_SATA_NSTANDBY2,
> +     CM_FX6_SATA_LDO_EN,
> +};
> +
> +static void cm_fx6_sata_power(int on)

Will it be/look better to use bool here?

> +{
> +     int i;
> +
> +     if (!on) { /* tell the iSSD that the power will be removed */
> +             gpio_direction_output(CM_FX6_SATA_PWLOSS_INT, 1);
> +             mdelay(10);
> +     }
> +
> +     for (i = 0; i < ARRAY_SIZE(cm_fx6_issd_gpios); i++) {
> +             gpio_direction_output(cm_fx6_issd_gpios[i], on);
> +             udelay(100);
> +     }
> +
> +     if (!on) /* for compatibility lower the power loss interrupt */
> +             gpio_direction_output(CM_FX6_SATA_PWLOSS_INT, 0);
> +}

[...]

> +static void cm_fx6_setup_issd(void)
> +{
> +     SETUP_IOMUX_PADS(sata_pads);
> +     /* Make sure this gpio has logical 0 value */
> +     gpio_direction_output(CM_FX6_SATA_PWLOSS_INT, 0);
> +     udelay(100);
> +
> +     cm_fx6_sata_power(0);
> +     mdelay(250);
> +     cm_fx6_sata_power(1);
> +}
> +
> +#define CM_FX6_SATA_INIT_RETRIES     10
> +int sata_initialize(void)
> +{
> +     int err, i;
> +
> +     cm_fx6_setup_issd();
> +     for (i = 0; i < CM_FX6_SATA_INIT_RETRIES; i++) {
> +             err = setup_sata();
> +             if (err) {
> +                     printf("SATA setup failed: %d\n", err);
> +                     return err;
> +             }
> +
> +             udelay(100);
> +
> +             err = __sata_initialize();
> +             if (!err)
> +                     break;
> +
> +             /* There is no device on the SATA port */
> +             if (sata_port_status(0, 0) == 0)
> +                     break;
> +
> +             /* There's a device, but link not established. Retry */
> +     }
> +
> +     return err;
> +}
> +#else
> +static void cm_fx6_setup_issd(void) {}

Why do you need this one?
It is only called from sata_initialize(), which is inside
#ifdef CONFIG_DWC_AHSATA
and is not available otherwise.

> +#endif
> +
>  #ifdef CONFIG_SYS_I2C_MXC
>  #define I2C_PAD_CTRL (PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED | \
>                       PAD_CTL_DSE_40ohm | PAD_CTL_HYS | \

[...]

> diff --git a/include/configs/cm_fx6.h b/include/configs/cm_fx6.h
> index adfd55e..88925cd 100644
> --- a/include/configs/cm_fx6.h
> +++ b/include/configs/cm_fx6.h
> @@ -132,6 +132,19 @@
>       "mmcboot=echo Booting from mmc ...; " \
>               "run mmcargs; " \
>               "run doboot\0" \
> +     "satadev=0\0" \
> +     "sataroot=/dev/sda2 rw rootwait\0" \
> +     "sataargs=setenv bootargs console=${console} " \
> +             "root=${sataroot} " \
> +             "${video}\0" \
> +     "loadsatabootscript=fatload sata ${satadev} ${loadaddr} ${bootscr}\0" \
> +     "satabootscript=echo Running bootscript from sata ...; " \
> +             "source ${loadaddr}\0" \
> +     "sataloadkernel=fatload sata ${satadev} ${loadaddr} ${kernel}\0" \
> +     "sataloadfdt=fatload sata ${satadev} ${fdtaddr} ${fdtfile}\0" \

Can we switch to use load instead of explicit fatload?

[...]


-- 
Regards,
Igor.
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to