Commit 3f8fca5d authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'qca_spi-sync'



Stefan Wahren says:

====================
net: qca_spi: Improve sync handling

This small patch series contains some improvements of the sync
handling. This was discovered while the QCA7000 was doing SLAC
(Signal Level Attenuation Characterization).
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 48de7c0c a5393567
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ static const char qcaspi_gstrings_stats[][ETH_GSTRING_LEN] = {
	"SPI errors",
	"Write verify errors",
	"Buffer available errors",
	"Bad signature",
};

#ifdef CONFIG_DEBUG_FS
+9 −1
Original line number Diff line number Diff line
@@ -504,8 +504,12 @@ qcaspi_qca7k_sync(struct qcaspi *qca, int event)
		qcaspi_read_register(qca, SPI_REG_SIGNATURE, &signature);
		qcaspi_read_register(qca, SPI_REG_SIGNATURE, &signature);
		if (signature != QCASPI_GOOD_SIGNATURE) {
			if (qca->sync == QCASPI_SYNC_READY)
				qca->stats.bad_signature++;

			qca->sync = QCASPI_SYNC_UNKNOWN;
			netdev_dbg(qca->net_dev, "sync: got CPU on, but signature was invalid, restart\n");
			return;
		} else {
			/* ensure that the WRBUF is empty */
			qcaspi_read_register(qca, SPI_REG_WRBUF_SPC_AVA,
@@ -523,10 +527,14 @@ qcaspi_qca7k_sync(struct qcaspi *qca, int event)

	switch (qca->sync) {
	case QCASPI_SYNC_READY:
		/* Read signature, if not valid go to unknown state. */
		/* Check signature twice, if not valid go to unknown state. */
		qcaspi_read_register(qca, SPI_REG_SIGNATURE, &signature);
		if (signature != QCASPI_GOOD_SIGNATURE)
			qcaspi_read_register(qca, SPI_REG_SIGNATURE, &signature);

		if (signature != QCASPI_GOOD_SIGNATURE) {
			qca->sync = QCASPI_SYNC_UNKNOWN;
			qca->stats.bad_signature++;
			netdev_dbg(qca->net_dev, "sync: bad signature, restart\n");
			/* don't reset right away */
			return;
+1 −0
Original line number Diff line number Diff line
@@ -75,6 +75,7 @@ struct qcaspi_stats {
	u64 spi_err;
	u64 write_verify_failed;
	u64 buf_avail_err;
	u64 bad_signature;
};

struct qcaspi {