SAMV7 QSPI: Use of CPHA in mode settings was inverted
This commit is contained in:
parent
4b738ba7cc
commit
4f87a71e6d
@ -182,7 +182,7 @@
|
|||||||
/* Serial Clock Register */
|
/* Serial Clock Register */
|
||||||
|
|
||||||
#define QSPI_SCR_CPOL (1 << 0) /* Bit 0: Clock Polarity */
|
#define QSPI_SCR_CPOL (1 << 0) /* Bit 0: Clock Polarity */
|
||||||
#define QSPI_SCR_NCPHA (1 << 1) /* Bit 1: Clock Phase */
|
#define QSPI_SCR_CPHA (1 << 1) /* Bit 1: Clock Phase */
|
||||||
#define QSPI_SCR_SCBR_SHIFT (8) /* Bits 8-15: Serial Clock Baud Rate */
|
#define QSPI_SCR_SCBR_SHIFT (8) /* Bits 8-15: Serial Clock Baud Rate */
|
||||||
#define QSPI_SCR_SCBR_MASK (0xff << QSPI_SCR_SCBR_SHIFT)
|
#define QSPI_SCR_SCBR_MASK (0xff << QSPI_SCR_SCBR_SHIFT)
|
||||||
# define QSPI_SCR_SCBR(n) ((uint32_t)(n) << QSPI_SCR_SCBR_SHIFT)
|
# define QSPI_SCR_SCBR(n) ((uint32_t)(n) << QSPI_SCR_SCBR_SHIFT)
|
||||||
|
@ -1155,7 +1155,7 @@ static uint32_t qspi_setfrequency(struct qspi_dev_s *dev, uint32_t frequency)
|
|||||||
/* Calculate the new actual frequency */
|
/* Calculate the new actual frequency */
|
||||||
|
|
||||||
actual = SAM_QSPI_CLOCK / scbr;
|
actual = SAM_QSPI_CLOCK / scbr;
|
||||||
qspivdbg("SCR=%08x actual=%d\n", regval, actual);
|
qspivdbg("SCBR=%d actual=%d\n", scbr, actual);
|
||||||
|
|
||||||
/* Save the frequency setting */
|
/* Save the frequency setting */
|
||||||
|
|
||||||
@ -1194,34 +1194,34 @@ static void qspi_setmode(struct qspi_dev_s *dev, enum qspi_mode_e mode)
|
|||||||
{
|
{
|
||||||
/* Yes... Set the mode appropriately:
|
/* Yes... Set the mode appropriately:
|
||||||
*
|
*
|
||||||
* QSPI CPOL NCPHA
|
* QSPI CPOL CPHA
|
||||||
* MODE
|
* MODE
|
||||||
* 0 0 1
|
* 0 0 0
|
||||||
* 1 0 0
|
* 1 0 1
|
||||||
* 2 1 1
|
* 2 1 0
|
||||||
* 3 1 0
|
* 3 1 1
|
||||||
*/
|
*/
|
||||||
|
|
||||||
regval = qspi_getreg(priv, SAM_QSPI_SCR_OFFSET);
|
regval = qspi_getreg(priv, SAM_QSPI_SCR_OFFSET);
|
||||||
regval &= ~(QSPI_SCR_CPOL | QSPI_SCR_NCPHA);
|
regval &= ~(QSPI_SCR_CPOL | QSPI_SCR_CPHA);
|
||||||
|
|
||||||
switch (mode)
|
switch (mode)
|
||||||
{
|
{
|
||||||
case QSPIDEV_MODE0: /* CPOL=0; NCPHA=1 */
|
case QSPIDEV_MODE0: /* CPOL=0; CPHA=0 */
|
||||||
regval |= QSPI_SCR_NCPHA;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case QSPIDEV_MODE1: /* CPOL=0; NCPHA=0 */
|
case QSPIDEV_MODE1: /* CPOL=0; CPHA=1 */
|
||||||
|
regval |= QSPI_SCR_CPHA;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case QSPIDEV_MODE2: /* CPOL=1; NCPHA=1 */
|
case QSPIDEV_MODE2: /* CPOL=1; CPHA=0 */
|
||||||
regval |= (QSPI_SCR_CPOL | QSPI_SCR_NCPHA);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case QSPIDEV_MODE3: /* CPOL=1; NCPHA=0 */
|
|
||||||
regval |= QSPI_SCR_CPOL;
|
regval |= QSPI_SCR_CPOL;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case QSPIDEV_MODE3: /* CPOL=1; CPHA=1 */
|
||||||
|
regval |= (QSPI_SCR_CPOL | QSPI_SCR_CPHA);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
DEBUGASSERT(FALSE);
|
DEBUGASSERT(FALSE);
|
||||||
return;
|
return;
|
||||||
@ -1527,12 +1527,11 @@ static int qspi_hw_initialize(struct sam_qspidev_s *priv)
|
|||||||
|
|
||||||
/* Set up the initial QSPI clock mode:
|
/* Set up the initial QSPI clock mode:
|
||||||
*
|
*
|
||||||
* Mode 0: CPOL=0; NCPHA=1
|
* Mode 0: CPOL=0; CPHA=0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
regval = qspi_getreg(priv, SAM_QSPI_SCR_OFFSET);
|
regval = qspi_getreg(priv, SAM_QSPI_SCR_OFFSET);
|
||||||
regval &= ~QSPI_SCR_CPOL;
|
regval &= ~(QSPI_SCR_CPOL | QSPI_SCR_CPHA);
|
||||||
regval |= QSPI_SCR_NCPHA;
|
|
||||||
qspi_putreg(priv, regval, SAM_QSPI_SCR_OFFSET);
|
qspi_putreg(priv, regval, SAM_QSPI_SCR_OFFSET);
|
||||||
|
|
||||||
regval |= QSPI_SCR_SCBR(1);
|
regval |= QSPI_SCR_SCBR(1);
|
||||||
|
Loading…
Reference in New Issue
Block a user