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

Merge branch 'qca_spi-fixes'



Stefan Wahren says:

====================
net: qca_spi: Fix receive and reset issues

This small patch series fixes two major issues in the SPI driver for the
QCA700x.

It has been tested on a Charge Control C 300 (NXP i.MX6ULL +
2x QCA7000).
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents aee024f6 bc19c329
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -363,7 +363,7 @@ qcaspi_receive(struct qcaspi *qca)
	netdev_dbg(net_dev, "qcaspi_receive: SPI_REG_RDBUF_BYTE_AVA: Value: %08x\n",
		   available);

	if (available > QCASPI_HW_BUF_LEN) {
	if (available > QCASPI_HW_BUF_LEN + QCASPI_HW_PKT_LEN) {
		/* This could only happen by interferences on the SPI line.
		 * So retry later ...
		 */
@@ -496,7 +496,6 @@ qcaspi_qca7k_sync(struct qcaspi *qca, int event)
	u16 signature = 0;
	u16 spi_config;
	u16 wrbuf_space = 0;
	static u16 reset_count;

	if (event == QCASPI_EVENT_CPUON) {
		/* Read signature twice, if not valid
@@ -549,13 +548,13 @@ qcaspi_qca7k_sync(struct qcaspi *qca, int event)

		qca->sync = QCASPI_SYNC_RESET;
		qca->stats.trig_reset++;
		reset_count = 0;
		qca->reset_count = 0;
		break;
	case QCASPI_SYNC_RESET:
		reset_count++;
		qca->reset_count++;
		netdev_dbg(qca->net_dev, "sync: waiting for CPU on, count %u.\n",
			   reset_count);
		if (reset_count >= QCASPI_RESET_TIMEOUT) {
			   qca->reset_count);
		if (qca->reset_count >= QCASPI_RESET_TIMEOUT) {
			/* reset did not seem to take place, try again */
			qca->sync = QCASPI_SYNC_UNKNOWN;
			qca->stats.reset_timeout++;
+1 −0
Original line number Diff line number Diff line
@@ -94,6 +94,7 @@ struct qcaspi {

	unsigned int intr_req;
	unsigned int intr_svc;
	u16 reset_count;

#ifdef CONFIG_DEBUG_FS
	struct dentry *device_root;