Hi Stefano,

On Friday 20 August 2010 10:20:11 am Stefano Babic wrote:
> diff --git a/drivers/spi/mxc_spi.c b/drivers/spi/mxc_spi.c
> index e15a63c..54af2e3 100644
> --- a/drivers/spi/mxc_spi.c
> +++ b/drivers/spi/mxc_spi.c
> @@ -23,6 +23,7 @@
>  #include <spi.h>
>  #include <asm/errno.h>
>  #include <asm/io.h>
> +#include <mxc_gpio.h>
> 
>  #ifdef CONFIG_MX27
>  /* i.MX27 has a completely wrong register layout and register definitions
>  in the @@ -68,9 +69,6 @@ static unsigned long spi_bases[] = {
>       0x53f84000,
>  };
> 
> -#define OUT  MX31_GPIO_DIRECTION_OUT
> -#define mxc_gpio_direction   mx31_gpio_direction
> -#define mxc_gpio_set         mx31_gpio_set
>  #elif defined(CONFIG_MX51)
>  #include <asm/arch/imx-regs.h>
>  #include <asm/arch/clock.h>
> @@ -111,13 +109,12 @@ static unsigned long spi_bases[] = {
>       CSPI2_BASE_ADDR,
>       CSPI3_BASE_ADDR,
>  };
> -#define mxc_gpio_direction(gpio, dir)        (0)
> -#define mxc_gpio_set(gpio, value)    {}
> -#define OUT  1

After this change, it seems something else is missing:
GCC somehow removed the following code for i.MX51 without actually compiling 
the arguments to the functions (???), but now it becomes evident this only 
compiles for i.MX31:

void spi_cs_activate(struct spi_slave *slave)
{
        struct mxc_spi_slave *mxcs = to_mxc_spi_slave(slave);
        if (mxcs->gpio > 0)
                mxc_gpio_set(mxcs->gpio, mxcs->ctrl_reg & MXC_CSPICTRL_SSPOL);
}

void spi_cs_deactivate(struct spi_slave *slave)
{
        struct mxc_spi_slave *mxcs = to_mxc_spi_slave(slave);
        if (mxcs->gpio > 0)
                mxc_gpio_set(mxcs->gpio,
                              !(mxcs->ctrl_reg & MXC_CSPICTRL_SSPOL));
}

On i.MX51 SSPOL is set in the config register, and per SS individually. 
Therefore, MXC_CSPICTRL_SSPOL isn't defined for i.MX51.

Best regards,

-- 
David Jander
Protonic Holland.
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to