[U-Boot] [PATCH 1/1] spi: tegra20: Add support for mode selection

Mirza Krak mirza.krak at hostmobility.com
Thu Sep 3 21:40:51 CEST 2015


ping

2015-07-20 13:56 GMT+02:00 Mirza Krak <mirza.krak at hostmobility.com>:

> From: Mirza Krak <mirza.krak at hostmobility.com>
>
> Respect the mode passed in claim_bus call.
>
> Signed-off-by: Mirza Krak <mirza.krak at hostmobility.com>
> ---
>  drivers/spi/tegra20_slink.c | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)
>
> diff --git a/drivers/spi/tegra20_slink.c b/drivers/spi/tegra20_slink.c
> index f6fb89b393f0..271e2adbb2e1 100644
> --- a/drivers/spi/tegra20_slink.c
> +++ b/drivers/spi/tegra20_slink.c
> @@ -36,6 +36,11 @@ DECLARE_GLOBAL_DATA_PTR;
>  #define SLINK_CMD_ENB                  (1 << 31)
>  #define SLINK_CMD_GO                   (1 << 30)
>  #define SLINK_CMD_M_S                  (1 << 28)
> +#define SLINK_CMD_IDLE_SCLK_DRIVE_LOW          (0 << 24)
> +#define SLINK_CMD_IDLE_SCLK_DRIVE_HIGH         (1 << 24)
> +#define SLINK_CMD_IDLE_SCLK_PULL_LOW           (2 << 24)
> +#define SLINK_CMD_IDLE_SCLK_PULL_HIGH          (3 << 24)
> +#define SLINK_CMD_IDLE_SCLK_MASK                       (3 << 24)
>  #define SLINK_CMD_CK_SDA               (1 << 21)
>  #define SLINK_CMD_CS_POL               (1 << 13)
>  #define SLINK_CMD_CS_VAL               (1 << 12)
> @@ -146,6 +151,7 @@ static int tegra30_spi_claim_bus(struct udevice *dev)
>         struct udevice *bus = dev->parent;
>         struct tegra30_spi_priv *priv = dev_get_priv(bus);
>         struct spi_regs *regs = priv->regs;
> +       unsigned int mode = priv->mode;
>         u32 reg;
>
>         /* Change SPI clock to correct frequency, PLLP_OUT0 source */
> @@ -161,6 +167,17 @@ static int tegra30_spi_claim_bus(struct udevice *dev)
>         /* Set master mode and sw controlled CS */
>         reg = readl(&regs->command);
>         reg |= SLINK_CMD_M_S | SLINK_CMD_CS_SOFT;
> +
> +       /* Set CPOL and CPHA */
> +       reg &= ~SLINK_CMD_IDLE_SCLK_MASK & ~SLINK_CMD_CK_SDA;
> +       if (mode & SPI_CPHA)
> +               reg |= SLINK_CMD_CK_SDA;
> +
> +       if (mode & SPI_CPOL)
> +               reg |= SLINK_CMD_IDLE_SCLK_DRIVE_HIGH;
> +       else
> +               reg |= SLINK_CMD_IDLE_SCLK_DRIVE_LOW;
> +
>         writel(reg, &regs->command);
>         debug("%s: COMMAND = %08x\n", __func__, readl(&regs->command));
>
> --
> 2.1.0
>
>


-- 
Med Vänliga Hälsningar / Best Regards

*******************************************************************
Mirza Krak
Host Mobility AB
mirza.krak at hostmobility.com
Anders Personsgatan 12, 416 64 Göteborg
Sweden
http://www.hostmobility.com
Direct: +46 31 31 32 704
Phone: +46 31 31 32 700
Fax: +46 31 80 67 51
Mobile: +46 730 28 06 22
*******************************************************************


More information about the U-Boot mailing list