[U-Boot] [PATCH v2 03/22] spi: Use mode for rx mode flags
Jagan Teki
jteki at openedev.com
Wed Aug 10 07:02:00 CEST 2016
On Wednesday 10 August 2016 10:23 AM, Vignesh R wrote:
> Hi,
>
> On Wednesday 10 August 2016 01:33 AM, Jagan Teki wrote:
>> Make rx mode flags as generic to spi, earlier mode_rx is
>> maintained separately becuase of some flash specific code.
>>
>
> Nit: s/becuase/because
OK.
>
> [...]
>> diff --git a/drivers/spi/ti_qspi.c b/drivers/spi/ti_qspi.c
>> index bb72cb0..37dc64f 100644
>> --- a/drivers/spi/ti_qspi.c
>> +++ b/drivers/spi/ti_qspi.c
>> @@ -336,7 +336,7 @@ static void ti_spi_setup_spi_register(struct ti_qspi_priv *priv)
>> QSPI_SETUP0_NUM_D_BYTES_8_BITS |
>> QSPI_SETUP0_READ_QUAD | QSPI_CMD_WRITE |
>> QSPI_NUM_DUMMY_BITS);
>> - slave->mode_rx = SPI_RX_QUAD;
>> + slave->mode |= SPI_RX_QUAD;
>> #else
>> memval |= QSPI_CMD_READ | QSPI_SETUP0_NUM_A_BYTES |
>> QSPI_SETUP0_NUM_D_BYTES_NO_BITS |
>> @@ -422,7 +422,7 @@ static void __ti_qspi_setup_memorymap(struct ti_qspi_priv *priv,
>> bool enable)
>> {
>> u32 memval;
>> - u32 mode = slave->mode_rx & (SPI_RX_QUAD | SPI_RX_DUAL);
>> + u32 mode = slave->mode | SPI_RX_QUAD | SPI_RX_DUAL;
>>
>
> This will break ti-qspi Quad mode operation. The code below this line
> (switch statement) expects mode to be either SPI_RX_DUAL or SPI_RX_QUAD
> but not both.
Wrong usage of | instead of & will fix
>
>> if (!enable) {
>> writel(0, &priv->base->setup0);
>> @@ -436,7 +436,7 @@ static void __ti_qspi_setup_memorymap(struct ti_qspi_priv *priv,
>> memval |= QSPI_CMD_READ_QUAD;
>> memval |= QSPI_SETUP0_NUM_D_BYTES_8_BITS;
>> memval |= QSPI_SETUP0_READ_QUAD;
>> - slave->mode_rx = SPI_RX_QUAD;
>> + slave->mode |= SPI_RX_QUAD;
>> break;
>> case SPI_RX_DUAL:
>> memval |= QSPI_CMD_READ_DUAL;
>> diff --git a/include/spi.h b/include/spi.h
>> index ca96fa4..7d92ddc 100644
>> --- a/include/spi.h
>> +++ b/include/spi.h
>> @@ -26,12 +26,10 @@
>> #define SPI_TX_BYTE BIT(8) /* transmit with 1 wire byte */
>> #define SPI_TX_DUAL BIT(9) /* transmit with 2 wires */
>> #define SPI_TX_QUAD BIT(10) /* transmit with 4 wires */
>> -
>> -/* SPI mode_rx flags */
>> -#define SPI_RX_SLOW BIT(0) /* receive with 1 wire slow */
>> -#define SPI_RX_FAST BIT(1) /* receive with 1 wire fast */
>> -#define SPI_RX_DUAL BIT(2) /* receive with 2 wires */
>> -#define SPI_RX_QUAD BIT(3) /* receive with 4 wires */
>> +#define SPI_RX_SLOW BIT(11) /* receive with 1 wire slow */
>> +#define SPI_RX_FAST BIT(12) /* receive with 1 wire fast */
>> +#define SPI_RX_DUAL BIT(12) /* receive with 2 wires */
>
> Same bit for SPI_RX_FAST and SPI_RX_DUAL? Could you clarify the reason?
Will fix.
More information about the U-Boot
mailing list