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