Re: [U-Boot] [PATCH] spi: kirkwood_spi: implement mvebu_spi_set_mode()

2016-10-26 Thread Jagan Teki
On Fri, Oct 14, 2016 at 8:49 AM, Chris Packham  wrote:
> Set the appropriate bits in the interface config register based
> on the SPI_ mode flags.
>
> Signed-off-by: Chris Packham 
> ---
>
>  arch/arm/include/asm/arch-mvebu/spi.h |  4 
>  drivers/spi/kirkwood_spi.c| 13 +
>  2 files changed, 17 insertions(+)
>
> diff --git a/arch/arm/include/asm/arch-mvebu/spi.h 
> b/arch/arm/include/asm/arch-mvebu/spi.h
> index 78869a253d1f..3545aed17347 100644
> --- a/arch/arm/include/asm/arch-mvebu/spi.h
> +++ b/arch/arm/include/asm/arch-mvebu/spi.h
> @@ -52,6 +52,10 @@ struct kwspi_registers {
>  #define KWSPI_ADRLEN_3BYTE (2 << 8)
>  #define KWSPI_ADRLEN_4BYTE (3 << 8)
>  #define KWSPI_ADRLEN_MASK  (3 << 8)
> +#define KWSPI_CPOL (1 << 11)
> +#define KWSPI_CPHA (1 << 12)
> +#define KWSPI_TXLSBF   (1 << 13)
> +#define KWSPI_RXLSBF   (1 << 14)
>
>  #define KWSPI_IRQUNMASK1 /* unmask SPI interrupt */
>  #define KWSPI_IRQMASK  0 /* mask SPI interrupt */
> diff --git a/drivers/spi/kirkwood_spi.c b/drivers/spi/kirkwood_spi.c
> index 6851ba942f51..69a0be9ea5b2 100644
> --- a/drivers/spi/kirkwood_spi.c
> +++ b/drivers/spi/kirkwood_spi.c
> @@ -271,6 +271,19 @@ static int mvebu_spi_set_speed(struct udevice *bus, uint 
> hz)
>
>  static int mvebu_spi_set_mode(struct udevice *bus, uint mode)
>  {
> +   struct mvebu_spi_platdata *plat = dev_get_platdata(bus);
> +   struct kwspi_registers *reg = plat->spireg;
> +   u32 data = readl(®->cfg);

Better to clear the bits(mask) on data before updating,

thanks!
-- 
Jagan Teki
Free Software Engineer | www.openedev.com
U-Boot, Linux | Upstream Maintainer
Hyderabad, India.
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH] spi: kirkwood_spi: implement mvebu_spi_set_mode()

2016-10-17 Thread Stefan Roese

On 14.10.2016 05:19, Chris Packham wrote:

Set the appropriate bits in the interface config register based
on the SPI_ mode flags.

Signed-off-by: Chris Packham 


Reviewed-by: Stefan Roese 

Thanks,
Stefan
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH] spi: kirkwood_spi: implement mvebu_spi_set_mode()

2016-10-13 Thread Chris Packham
Set the appropriate bits in the interface config register based
on the SPI_ mode flags.

Signed-off-by: Chris Packham 
---

 arch/arm/include/asm/arch-mvebu/spi.h |  4 
 drivers/spi/kirkwood_spi.c| 13 +
 2 files changed, 17 insertions(+)

diff --git a/arch/arm/include/asm/arch-mvebu/spi.h 
b/arch/arm/include/asm/arch-mvebu/spi.h
index 78869a253d1f..3545aed17347 100644
--- a/arch/arm/include/asm/arch-mvebu/spi.h
+++ b/arch/arm/include/asm/arch-mvebu/spi.h
@@ -52,6 +52,10 @@ struct kwspi_registers {
 #define KWSPI_ADRLEN_3BYTE (2 << 8)
 #define KWSPI_ADRLEN_4BYTE (3 << 8)
 #define KWSPI_ADRLEN_MASK  (3 << 8)
+#define KWSPI_CPOL (1 << 11)
+#define KWSPI_CPHA (1 << 12)
+#define KWSPI_TXLSBF   (1 << 13)
+#define KWSPI_RXLSBF   (1 << 14)
 
 #define KWSPI_IRQUNMASK1 /* unmask SPI interrupt */
 #define KWSPI_IRQMASK  0 /* mask SPI interrupt */
diff --git a/drivers/spi/kirkwood_spi.c b/drivers/spi/kirkwood_spi.c
index 6851ba942f51..69a0be9ea5b2 100644
--- a/drivers/spi/kirkwood_spi.c
+++ b/drivers/spi/kirkwood_spi.c
@@ -271,6 +271,19 @@ static int mvebu_spi_set_speed(struct udevice *bus, uint 
hz)
 
 static int mvebu_spi_set_mode(struct udevice *bus, uint mode)
 {
+   struct mvebu_spi_platdata *plat = dev_get_platdata(bus);
+   struct kwspi_registers *reg = plat->spireg;
+   u32 data = readl(®->cfg);
+
+   if (mode & SPI_CPHA)
+   data |= KWSPI_CPHA;
+   if (mode & SPI_CPOL)
+   data |= KWSPI_CPOL;
+   if (mode & SPI_LSB_FIRST)
+   data |= (KWSPI_RXLSBF | KWSPI_TXLSBF);
+
+   writel(data, ®->cfg);
+
return 0;
 }
 
-- 
2.10.0.479.g7c56b16

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot